Friday, May 30, 2008

I've Got a New Job!

Woohoo!

(Internal Dialog)
I will talk to them before writing anything about them.
I will talk to them before writing anything about them.
I will talk to them before writing anything about them.
I will talk to them before writing anything about them.
I will talk to them before writing anything about them.
I will talk to them before writing anything about them.
I will talk to them before writing anything about them.
I will talk to them before writing anything about them.
I will talk to them before writing anything about them.

*This post was approved by my wife. ;)

Thursday, May 29, 2008

Blogging Safely Part II

Man, I just have too much time on my hands.

I've debated whether I should write about the specifics of my termination. Yes. No. Yes. No. Alright, no.

After counsel from a few fellow bloggers (how cool is that? A built in support group!), I've decided against it. If I were independently wealthy (read: not dependent on a salary), I might.

I am also trying to take the high-road, trying to have some class I guess.

The more I sit around the worse I feel about it too. It is/was a humbling experience.

Yes, I was ready (and looking) to leave. But to be walked out of the building is not fun (though many thought I was just playing another prank). I wish it had not happened that way.

I do have my own opinions and I will voice them, but when a decision is made, I usually just shut my mouth and either live with it or look for a new job (if I totally disagree). Many people view this as arrogance I believe. That I am not open to new ideas. That is most definitely not the case.

(can you say rambling?)

So, if you blog and haven't read my previous post on Blogging Safely, do it now. Something good must come out of this.

Discuss blogging with your employer. See if they have guidelines on blogging. If not, err on the side of caution.

Thanks to everyone for your support. It reminds me of the support I received last year at this time when my daughter fell ill. Now I have a virtual family!

Wednesday, May 28, 2008

Blogging Safely

Jake from AppsLab left a link in the comments to my previous post, Lessons Learned. The link was to an article about Mark Jen, who was fired from Google after 11 days for blogging.

It got me curious as to what was out there, so below is a list of links that point to either "safe blogging" articles or those that were fired for blogging about their company.

Lessons Learned From Google Blogger Who Got Fired - 5 lessons here. #5 is, "Don't make the same mistake twice."

Of Blogging and Unemployment - a former Microsoft employee gets the sack.

Delta employee fired over blog sues company

Fired simply for having a blog

Beware if your blog is related to work

Have a blog, lose your job?

Avoid getting fired for blogging

Warning: Your clever little blog could get you fired

How to Blog Safely (About Work or Anything Else)


Or you can just google it.

Back to lessons learned, I'll speak with management or HR at my next company to see if they have guidelines. If not, I'll err on the cautious side and not mention anything.

Lessons Learned

I was let go yesterday. Many thought that it was another one of my pranks...which was funny. Following are my lessons learned from my time there:

1. Get express written permission about what you can (if anything) and cannot blog about.
2. Not everyone is your friend.
3. Not everyone will like you...just because.
4. Some people will not hesitate to throw you under the bus.
5. Big companies might not be the place for me.
6. Big companies are full of many motivated and talented people.

I learned a great deal in the year and a half. My family and I moved from Gainesville to Tampa and it was the best decision we've made so far.

I was exposed to data warehousing which was a challenge to say the least. To spend a week trying to figure out the best way to move data was an interesting exercise.

I was exposed to big company politics which was fun.

Overall my experience there was positive. I learned a great deal both personally and professionally. I met and hope to retain many good friends and I will miss all of them dearly.

Wednesday, May 21, 2008

Multi Table INSERTs

I learned something new today! Multi Table INSERTs.

I was trying to capture the new records into a staging table using RETURNING BULK COLLECT INTO, but that doesn't work (yet).

I remembered reading about Multi Table INSERTs, but never had the need for using them, so never bothered to learn it.


CREATE TABLE t
(
x NUMBER PRIMARY KEY,
y NUMBER,
z NUMBER
);

CREATE TABLE s
(
x NUMBER PRIMARY KEY
);

INSERT ALL
INTO t ( x, y, z )
VALUES ( myrownum, ran1, ran2 )
INTO s ( x )
VALUES ( myrownum )
SELECT
rownum myrownum,
dbms_random.value ran1,
dbms_random.value ran2
FROM dual
CONNECT BY LEVEL < 101;

CJUSTICE@ORA10GR2>SELECT COUNT(*) FROM t;

COUNT(*)
----------
100

1 row selected.

Elapsed: 00:00:00.01
CJUSTICE@ORA10GR2>SELECT COUNT(*) FROM s;

COUNT(*)
----------
100

1 row selected.

Elapsed: 00:00:00.02


Awesome!

Monday, May 19, 2008

DIMENSION Objects

One of the very first things I did when I got my current job was to go through the Datawarehousing guide in the Oracle documentation.

Analytics, check.
Materialized Views, check.
OLAP, interesting, but not applicable yet.
Dimensions...hmm, dimensions.

I looked at all the objects in the database but couldn't find any of the type DIMENSION.

I searched AskTom, nothing (or at least nothing I could find).

I can't remember finding any articles on the DIMENSION objects either. Can that be right? Does any one our there use them? Mr. Rittman? Mr. Aldridge? Mr. Scott?

From my brief perusal of the documentation, you can set up the DIMENSION like this:

CREATE TABLE test_dim
(
test_key NUMBER(10,0) PRIMARY KEY,
source VARCHAR2(10) NOT NULL,
source_subcategory VARCHAR2(10)
);

INSERT INTO test_dim( test_key, source, source_subcategory )
VALUES ( 1, 'MEDICAID', NULL );
INSERT INTO test_dim( test_key, source, source_subcategory )
VALUES ( 2, 'MEDICARE', NULL );
INSERT INTO test_dim( test_key, source, source_subcategory )
VALUES ( 3, 'SSA', 'MEDICARE' );
INSERT INTO test_dim( test_key, source, source_subcategory )
VALUES ( 4, 'SPAP', 'MEDICARE' );
INSERT INTO test_dim( test_key, source, source_subcategory )
VALUES ( 5, 'MAPD', 'MEDICARE' );

CREATE DIMENSION test_dim
LEVEL source IS ( test_dim.source )
LEVEL source_subcategory IS ( test_dim.source_subcategory );
My best guess is that it's sort of like the heirarchical table format (FK referencing PK from the same table).

Does anyone out there have any experience using them?

Wednesday, May 14, 2008

Google Analytics

I've been using Google Analytics on this website since the beginning.

It's an absolutely amazing tool. It allows you to view statistics on site usage from so many different angles. The only thing required is inserting a few lines of javascript on your template (for blogger anyway), and stats are collected.

The dashboard (the main page) allows you to take multiple views of your data and drill down if necessary. It includes a drop-down to select the date range (flash I believe) and also to compare up to 2 metrics at once.



I spend an inordinate amount of time on the site. Any new visitors? How many so far today? What pages are being viewed?



Of course it's not perfect. I'm not sure, other than requiring all users to login, how you can determine the number of unique visitors.

Far and away my favorite view is the one that shows you the distribution by continent, sub continent region, country/territory, or city. Recently they added the ability to drill down as well.



It's definitely cool to see the different people from all over the world who have viewed the site.

Wait, how could I forget? The cost? Free!

Doesn't get any better than that.

Socially Networked Employees Are Better?

Here's one for Jake from AppsLab.

Apparently one person has equated the Social Networking to performance in the [IT] work-place.

I thought it was a pretty good article. I would hope that I am one of the people that others choose to go to, but I'll probably never know.

Tuesday, May 13, 2008

ApEx: Oracle Marketing WTF?

At the time of writing, the score is 68 have not used ApEx leaving only 8 who have. Obviously this poll isn't scientific, but it does have to represent a small bit of the community. Perhaps Oracle Mix would be a better place to ask the question?

I guess my followup poll would be why? Why haven't you used it?

Did you not know about it?

If that's the case, then it's definitely an Oracle Marketing WTF.

Did you know about it but just never got around to trying it?

I'm completely dumb(quit snickering)-founded.

I believe the very first time I heard anything about the product was when it was referred to as Marvel (Project Marvel?) on AskTom. Am I the only one who read the site for enjoyment (probably, but it was the only thing I could read at work). That must have been 4 or 5 years ago. I started using it in May of 2005, now three years back.

Yes, Oracle has boatloads of products. I still don't know what the whole Fusion thing is (please don't say middleware, I don't know what that is either).

As someone pointed out in the comment section, it's one of the busiest forums on OTN.

I wonder if John and Dmitri run into this? Probably makes cold calling difficult.

As a [ApEx] community, what can we do to help promote it?

Monday, May 12, 2008

ApEx: What is it?

Surprisingly it seems, very few Oracle professionals know about ApEx. At WellCare, no one knew about it. Many others I have talked to have no idea what it is.

How can this be?

I'm hard-pressed to believe I am an early adopter. I like to think of myself as such, but perception and reality are two totally different things.

In a nutshell, ApEx (or Application Express, aka HTMLDB) is a rapid application tool that allows you to quickly build web based applications on top of an Oracle database. If I remember correctly, it was initially billed as the Microsoft Access killer.

It is also the front end for Oracle XE.

I've personally built 3 (professional, i.e. paid for) ApEx applications. One for my former day job with 350 pages (1.5 years to build and maintain), one for my fellow baseball alumni at the University of Florida, and one for my now defunct business, CABEZE.

I believe the question I get most often is: "Can you format it?"

Which I take to mean can you make it pretty or design it anyway you want?

The answer to that is a resounding "Yes!"

So, what follows is a list of ApEx applications for you to evaluate on style and design (borrowed from the unofficial ApEx wiki housed at shellprompt):


  • Dance Tunes - arguably the best designed ApEx application out there.

  • AskTom - We all know, or should know, this site. 40,000 page hits a day on a 4 CPU box.

  • Metalink - In my opinion not the best implementation of ApEx, but it's a busy site.

  • Shellprompt - host your applications here for a very reasonable price.

  • View other examples here


In summary, you can do with ApEx what you can do with any other web tool/environment. Want AJAX? Done. CSS? Done.

You're only limited by your imagination.

(Polls are fun...I'll stop apologizing for it soon)

Create polls and vote for free. dPolls.com

Thursday, May 8, 2008

SOUG: 2008 Technology Day

The Suncoast Oracle Users Group (SOUG) will be putting on their annual Technology Day on May 13th. If you are in Tampa or the surrounding area, you should go.

I went in 2006 (from Gainesville) and had a great time. Tom Kyte spoke that year. Surprisingly, my favorite speaker was this guy from Sun (I can't remember his name for the life of me). The main thrust of his presentation was the open sourcing of Solaris 10. He said something about DTrace (I think), way over my head. But his enthusiasm was contagious.

I've always wanted to learn a non-Windows OS, but I could never decide what flavor. Just too many choices.

Solaris 10 was free and it ran Oracle. Perfect!

I did recently create a Solaris 10 Virtual Machine, but I still haven't gotten around to attempting to install Oracle on it.

Anyway, it's a good time, especially for those of you starved for "nerd" companionship!

(Yes, another poll, these are pretty cool. Thanks to Mr. Eddie Awad for the polling link. I think he used it a couple of years ago and I've used it every since)


Create polls and vote for free. dPolls.com

Tuesday, May 6, 2008

Oracle at Home: The Results

Almost 70% of you responded that you do not have Oracle installed at home. That was a bit of a shocker to me.

I figured that it would be the other way around; people who read blogs, Oracle blogs specifically, would be more likely to have Oracle installed at home.

So, why not?


Create polls and vote for free. dPolls.com

Monday, May 5, 2008

Oracle at Home

I participated in an interview today. One of the questions I usually ask is "Do you have Oracle installed at home?"

It's more a question to gauge their nerdiness than anything, see if they're obsessed like me. Does it always mean that they aren't smart or capable? No, not really. That will come out through the other technical questions. For me at least, it does indicate a curiousity about how the software works.

So, do you have Oracle installed at home?


Create polls and vote for free. dPolls.com

Friday, May 2, 2008

Oracle Docs New Look

Oracle Docs New Look

Today I opened my List of Books page, opened up the Java Developer's Guide and voila!, a new look:



I had seen this in the 11g documentation but this was the first time I had seen it spread elsewhere. I can't say I like it either. Too fancy.

That's scary...change scares me? What? Oh well, I'll get used to it and someday wonder how I lived without it, just like the iPhone!

Thursday, May 1, 2008

Validating a Process Part II

Continued from my previous post.

While discussing external tables with my feisty colleague some time back, I explained that I liked using them but I couldn't figure out how to change the file name to match that of what was defined in the table definition.

Colleage to the rescue:

ALTER TABLE table_name LOCATION ( 'new_file_name.csv' );
Cool!

As I mentioned before, I had 4 files types I had to read: 820 and 835, both of the x12 format and two custom file layouts (flat files essentially). Since no one in the group knows Java yet, I wanted to keep the Java portion of the application as small as possible. So with the two custom files, I decided to use external tables. I could then put into practice the above ALTER TABLE statement.

As I looped through the list of files to be processed, I would issue an EXECUTE IMMEDIATE so that I could then SELECT from the table in the next step. It worked like a charm.

As I was doing some testing, I would issue the ROLLBACK statement to clear the tables for the next run. When I verified, there was still data there. WTF?

Oh wait, there's an EXECUTE IMMEDIATE...which runs DDL...which COMMITs...barnacles!

So I couldn't use that new thing I learned, oh well. Fortunately UTL_FILE does have the ability to rename files so I picked a name like 'external_table_file_name.txt' and rename the incoming file to that, then SELECT. Works like a charm.