So I've got a little experience in "losing" my job. Laid off, furloughed, rehired, resigned (and walked out), new job, laid off.
Of course I didn't lose one of those jobs...I know right where they are. I just can't or won't go back to them.
Fortunately for me, I've made a lot of good friends online. Very supportive friends. It makes "losing" a job that much easier.
Of course there's more to it...the effect it has on the family.
Kate...she doesn't understand yet. She just smiles and laughs and makes everything go away.
LC, however, is starting to grasp it. He doesn't say anything to me, but he does say stuff to his mother.
"Are we going to have to move back to Gainesville?"
"Is poppa going to pay our bills for us?"
You know...fun stuff like that.
Strangely, not to long ago he was always asking me to fire myself so I could be home all the time (it's the only way I get a vacation these days).
And then there's the wife, the lovely woman who agreed to marry me (yikes!) and has supported me through all of this. Without her, I could not have made it as far as I have.
When we met, we were polar opposites. I was a bit on the timid side and she...well, she doesn't have much of a filter. A perfect match!
Over time I have found my voice and she has muted hers (only a little). We're meeting somewhere in the middle (at least that's what I tell myself).
Kris does not work. She held LC in her hands and told me she didn't want to go back to work. I couldn't argue. Although she did work briefly but was let go because LC had an ear infection and needed medical attention. We didn't fight it. She's a stay-at-home mom, and we like it that way. She's been able to help Kate out with doctor visits, physical therapy, speech therapy, HGH injections...the list goes on and on.
Since she doesn't work, she feels, at times, out of control. When I "lose" my job, that feeling is heightened.
Not really sure what the point of this was...it's not to feel sorry for me, that's for sure. Just a warning to those out there in a similar situation. It doesn't effect just you...it effects your entire family (I haven't even mentioned my parents, or Kris' parents).
The only advice I can give to help alleviate this is:
1. Have enough money in the bank to weather the storm
2. ...OK, just 1.
Showing posts with label humility. Show all posts
Showing posts with label humility. Show all posts
Thursday, November 5, 2009
Tuesday, November 3, 2009
ACEs are Wild

They must be if they've included me.
Today I found out that I had been nominated and accepted into the Oracle ACE Program.
I believe my first exposure to the program was through Lewis Cunningham, a bit over 4 years ago. I then began to notice it in the OTN forums...you know, that little ACE next to a person's name?
I wanted one.
I won't say it's the only reason I blog or participate, I still believe that's just my personality.
But I am truly grateful for the award. (Yes, it's already on my resume).
Monday, October 19, 2009
Starting Over...Again.
On Friday I was told, "They're [things] just not working out..." and let go from my job. The job counter was up to a whopping 189 days though...which is encouraging. That was my longest un-interrupted stint of employment in 17 months.
On the surface, it looks terrible; there's no doubt about that. I cringe at my record over that time. Two firings, one layoff and one furlough. Ouch.
The first firing was self-inflicted. Not something I am proud of...I had interviewed, was offered and accepted a position with RevolutionMoney prior to that though, so you could say I was checked out or just looking for an easy escape. I still wish it had gone down differently but I can't change the past.
That self-inflicted would, combined with the most recent news, looks pretty bad for me as an employee.
Do I work well with others?
Am I a good employee?
Do I lie, cheat or steal?
How do I compare to my peers?
What is my skill level?
All perfectly valid questions for a potential future employer.
I should defend myself right?
I have no idea right now.
I think the best thing I can do right now is engage potential employers, answer any and all questions, as openly and honestly as possible, and hope for the best. I know the market isn't great right now...but I'll do what I need to do find a job.
I find myself envious of those who have been with companys for a long period of time. Amusingly, had I been a bit more patient, I would have probably found WellCare to be a nice home for awhile. I still have a lot of great friends from there I think mostly because they were my support system when Kate got sick.
I took the job at RevolutionMoney because it was a startup and offered an opportunity to do all kinds of really cool stuff. None of the "really cool stuff" came to fruition though and all of the people behind that push either left or were let go.
I had just gotten comfortable in my recent job, was in a bit of groove...but "things just weren't working out."
So I'm looking.
If you know anyone out there looking for a lazy Oracle developer/modeler/little dba, send them my way.
On the surface, it looks terrible; there's no doubt about that. I cringe at my record over that time. Two firings, one layoff and one furlough. Ouch.
The first firing was self-inflicted. Not something I am proud of...I had interviewed, was offered and accepted a position with RevolutionMoney prior to that though, so you could say I was checked out or just looking for an easy escape. I still wish it had gone down differently but I can't change the past.
That self-inflicted would, combined with the most recent news, looks pretty bad for me as an employee.
Employee Oriented
Am I a team player?Do I work well with others?
Am I a good employee?
Do I lie, cheat or steal?
Technical
Do I have technical skills?How do I compare to my peers?
What is my skill level?
All perfectly valid questions for a potential future employer.
I should defend myself right?
I have no idea right now.
I think the best thing I can do right now is engage potential employers, answer any and all questions, as openly and honestly as possible, and hope for the best. I know the market isn't great right now...but I'll do what I need to do find a job.
I find myself envious of those who have been with companys for a long period of time. Amusingly, had I been a bit more patient, I would have probably found WellCare to be a nice home for awhile. I still have a lot of great friends from there I think mostly because they were my support system when Kate got sick.
I took the job at RevolutionMoney because it was a startup and offered an opportunity to do all kinds of really cool stuff. None of the "really cool stuff" came to fruition though and all of the people behind that push either left or were let go.
I had just gotten comfortable in my recent job, was in a bit of groove...but "things just weren't working out."
So I'm looking.
If you know anyone out there looking for a lazy Oracle developer/modeler/little dba, send them my way.
Tuesday, September 1, 2009
No OpenWorld For Me: Part II
To say it has been a crazy week or so would be a gross understatement.
Last week, I bowed out from the race to attend Oracle OpenWorld.
Two days later, Justin then Jake then Billy (and here) started a movement to get me there.
All of this in conjunction with 100+ tweets and re-tweets on Twitter. Bradd even got his shirt today. He was one of the first of 15 so far to make the purchase...ostensibly to get my fat ass (Bradd didn't say that) to San Francisco and OOW.
Here's some of the backstory, which Jake alluded to in his post.
The night after Part I, I went to my parents begging for money. Our mortgage was nearly a month late. When I got home that evening, I saw Justin's post and subsequent tweet...I easily separated the 2 events in my head. Borrow money from parents != Community supports my efforts to go to OOW.
Easy right?
Then it came down...How could you do that when you just borrowed money?
I think you know where this is headed.
Unless I win the lottery so that I can pay back all those I owe, I will not be attending OOW this year.
While I think my T-Shirts are really cool, I know many of you (all?) bought them to help me get there. I could not take that money in good faith.
I'd like to donate it to something or someone. It's not a lot, approximately $100 as of right now.
I would like your help in deciding.
I'll repeat myself, to say that I've been humbled by these events would be a gross understatement. Thank you so much for your support...
Last week, I bowed out from the race to attend Oracle OpenWorld.
Two days later, Justin then Jake then Billy (and here) started a movement to get me there.
All of this in conjunction with 100+ tweets and re-tweets on Twitter. Bradd even got his shirt today. He was one of the first of 15 so far to make the purchase...ostensibly to get my fat ass (Bradd didn't say that) to San Francisco and OOW.
Here's some of the backstory, which Jake alluded to in his post.
The night after Part I, I went to my parents begging for money. Our mortgage was nearly a month late. When I got home that evening, I saw Justin's post and subsequent tweet...I easily separated the 2 events in my head. Borrow money from parents != Community supports my efforts to go to OOW.
Easy right?
Then it came down...How could you do that when you just borrowed money?
I think you know where this is headed.
Unless I win the lottery so that I can pay back all those I owe, I will not be attending OOW this year.
While I think my T-Shirts are really cool, I know many of you (all?) bought them to help me get there. I could not take that money in good faith.
I'd like to donate it to something or someone. It's not a lot, approximately $100 as of right now.
I would like your help in deciding.
I'll repeat myself, to say that I've been humbled by these events would be a gross understatement. Thank you so much for your support...
Saturday, August 29, 2009
ORACLENERD T-Shirts
Thanks to Justin, Jake, Billy (twice) and everyone else who has taken up "my" cause.
If you don't know what the cause is, you've probably been on a boat or something for the past week.
So I've spent some time expanding the available T-Shirts this weekend. Much thanks to John for pointing me to Spreadshirt. Also thanks to Michael (future guest blogger) for help (well, he created it and sent it to me) with the white version of the logo.
Below you'll find some of the shirts I've made along with the "classic" black on white or white on black.
I'm kind of digging the black on yellow. All my IDEs (SQL Developer, JDeveloper and Notepad++) have a yellow background.
From Jake:
If you don't know what the cause is, you've probably been on a boat or something for the past week.
So I've spent some time expanding the available T-Shirts this weekend. Much thanks to John for pointing me to Spreadshirt. Also thanks to Michael (future guest blogger) for help (well, he created it and sent it to me) with the white version of the logo.
Below you'll find some of the shirts I've made along with the "classic" black on white or white on black.
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
I'm kind of digging the black on yellow. All my IDEs (SQL Developer, JDeveloper and Notepad++) have a yellow background.
From Jake:
These shirts will be the must-have item at #oow09, so get yours now...I can’t wait to see action shots from the conference.I love this idea. What would be awesome, besides the natural "In The Wild" shots, would be a group shot...perhaps at the Blogger Meet-Up?
Thursday, August 27, 2009
A Very Humbling Thank You
I don't really know what to say...other than Thank You!
It started here:

Then here:

And then it continued...







How effin' awesome is that?!
We're not through yet though, Justin Kestelyn, aka @oracletechnet, also wrote up a nice little blurb on his blog.
As I just realized, Jake beat him to the punch.
After giving up on the effort just a couple of days ago...I'm working twice as hard to go now.
1. Oracle OpenWorld Blogger Pass? Check.
2. Time off from work? Check (finally).
3. Air-fare, hotel and expenses...in progress.
I don't know how to automagically update the count on the number of shirts sold...so it will be manual. The new site has a better margin of profit (plus lower-priced shirts), so pick one up and help a guy out. :)
I can't tell you enough how much this means to me. Thank you all so very much.
Blogging, FTW!
It started here:

Then here:

And then it continued...







How effin' awesome is that?!
We're not through yet though, Justin Kestelyn, aka @oracletechnet, also wrote up a nice little blurb on his blog.
As I just realized, Jake beat him to the punch.
After giving up on the effort just a couple of days ago...I'm working twice as hard to go now.
1. Oracle OpenWorld Blogger Pass? Check.
2. Time off from work? Check (finally).
3. Air-fare, hotel and expenses...in progress.
I don't know how to automagically update the count on the number of shirts sold...so it will be manual. The new site has a better margin of profit (plus lower-priced shirts), so pick one up and help a guy out. :)
I can't tell you enough how much this means to me. Thank you all so very much.
Blogging, FTW!
Wednesday, July 15, 2009
PMDV: Lessons Learned
On Monday I "released" Version 0.1. Not only did I blog about it, I sent private emails to people I know asking them to take a look. I'm going to summarize the good and the bad here.
SYS
I had planned all along to put the objects in the SYS schema as Oracle treats it differently. By differently I mean that it's more secure than any other user/schema. You cannot create objects in the schema as another user, even with DBA privileges. Same goes for executing code, you need an explicit GRANT from SYS in order to run a package. I can't think of one off the top of my head, but around on or after 9i, DBMS_SESSION needed to be granted explicitly to users.
What's the lesson learned? Well, if you create objects in the SYS schema you now have an unsupported database. Yikes. I don't want that to happen and I will be updating the instructions tonight to reflect that (not that anyone has gone and thrown it in production yet).
What's in a Name?
Poor Man's Data Vault was not the best choice of names. I knew that all along really, but stuck with it just because. Someone suggested that the general concept might be related a bit more to Audit Vault; my only exposure to it was at COLLABORATE.
If there are any good ideas out there, let them fly. The only constraint? You have to use the letters P, M, D and V. Why? Because I've prefixed everything with that. :)
Documentation
Documentation is hard, but I tried to get down as much as possible on the wiki. A friend and former colleague (twice), told me it sucked. It wasn't very descriptive or clear as to the purpose. I don't think it sucked, but it wasn't good or even great. Mediocre maybe?
Reason for Being
Maybe writing software is hard? Not the coding part necessarily, all the "extraneous" stuff. Documentation. User Expectations. Documentation. Testing (what?). Documentation. Critiques.
Despite the "smallness" of the project, I have a better appreciation for what Jake talks about over at the AppsLab. I can only imagine what it's like doing it at that scale.
Final Thoughts
I think I will continue on with the project.
I believe the goals have changed a bit so I'll need to adjust. Actually, I'll need to refactor my goals.
I will try to use the criticism wisely and allow that the help shape the new goals.
I'll have to change the target audience...well, define one. I had bigger shops (multiple DBAs) in mind initially or a place that needed to be SOX compliant. Maybe it should be small or medium size shops? I don't know.
Don't be afraid to leave comments, good and bad.
SYS
I had planned all along to put the objects in the SYS schema as Oracle treats it differently. By differently I mean that it's more secure than any other user/schema. You cannot create objects in the schema as another user, even with DBA privileges. Same goes for executing code, you need an explicit GRANT from SYS in order to run a package. I can't think of one off the top of my head, but around on or after 9i, DBMS_SESSION needed to be granted explicitly to users.
What's the lesson learned? Well, if you create objects in the SYS schema you now have an unsupported database. Yikes. I don't want that to happen and I will be updating the instructions tonight to reflect that (not that anyone has gone and thrown it in production yet).
What's in a Name?
Poor Man's Data Vault was not the best choice of names. I knew that all along really, but stuck with it just because. Someone suggested that the general concept might be related a bit more to Audit Vault; my only exposure to it was at COLLABORATE.
If there are any good ideas out there, let them fly. The only constraint? You have to use the letters P, M, D and V. Why? Because I've prefixed everything with that. :)
Documentation
Documentation is hard, but I tried to get down as much as possible on the wiki. A friend and former colleague (twice), told me it sucked. It wasn't very descriptive or clear as to the purpose. I don't think it sucked, but it wasn't good or even great. Mediocre maybe?
Reason for Being
Maybe writing software is hard? Not the coding part necessarily, all the "extraneous" stuff. Documentation. User Expectations. Documentation. Testing (what?). Documentation. Critiques.
Despite the "smallness" of the project, I have a better appreciation for what Jake talks about over at the AppsLab. I can only imagine what it's like doing it at that scale.
Final Thoughts
I think I will continue on with the project.
I believe the goals have changed a bit so I'll need to adjust. Actually, I'll need to refactor my goals.
I will try to use the criticism wisely and allow that the help shape the new goals.
I'll have to change the target audience...well, define one. I had bigger shops (multiple DBAs) in mind initially or a place that needed to be SOX compliant. Maybe it should be small or medium size shops? I don't know.
Don't be afraid to leave comments, good and bad.
Tuesday, July 7, 2009
Classic: Application Developers vs. Database Developers II
The original (with all the fun comments) can be found here. Originally posted on December 9, 2008. This is the "followup" to yesterday's post.
You can read the first article here. My application developer friend, Mr. M, emailed me and another fine gentleman this little blurb recently:
Mr. M:
As I did before, I'll just put the email here.
Me:
Me:
Mr. M:
Me:
Me:
You can read the first article here. My application developer friend, Mr. M, emailed me and another fine gentleman this little blurb recently:
Mr. M:
OH YEAH BABY!!! TEN TIMES FASTER!!!! YEAH!!!!!!!!This was prompted by a recent Oracle email blast about the Exadata storage system/Warehouse.
Hey seriously, what a tub of shit Oracle is. Where does this myth come from that it's such a great platform? Their client tools suck balls and it's generally just a pain in the ass to work with from a developer's point of view. But devs for some reason are under this impression that from thew server perspective it's rock solid and performant. Well, it may be solid, but it's a fucking turd. Our dba here - definitely an Oracle guy - has been tasked with looking into moving us onto an oss db. He basically refuses to even look at MySQL, stating that it's a mickey mouse worthless pile of shit (can't really argue with him there lol), so that basically leaves Postgres. So it's been a few weeks now, and he will basically admit now that Postgres completely waxes Oracle as far as performance goes. LOL We run RAC in production too. He's looking at failover, replication, blah blah blah now, we'll see what the verdict on that is. Oh, and Oracle AQ? That's a worthless pile of shit too. Why do they tack a fucking message queue that doesn't play nice with jms onto the fucking database, which is probably already overworked? Oh wait, that's right, they're in the business of selling per cpu licenses! Cocksuckers.
As I did before, I'll just put the email here.
Me:
Agreed, their client tools aren't all the great. Which ones are you using?Mr. M:
I use SQL*Plus (naturally), SQL Developer and JDeveloper. The latter 2 tie in very nicely with Subversion. With JDeveloper, when I want to try out Java, it's got a pretty good suite of tools.
Oracle starting out catering to businesses, Microsoft started with the consumer. Oracle has made pretty good strides in making their software more usable while Microsoft has made theirs more scalable.
I haven't used AQ a whole lot and definitely not with Java. I do know that it's billed as JMS compliant.
Postgres has it's place and so does Oracle. It is a great platform if you know how to leverage it. PL/SQL is a 3GL (or is it 4) and you can write entire applications using it...and if you do that right, an incredibly robust and scalable application at that.
This was followed by a package he had been working on. I wouldn't say it was the greatest, but it wasn't all bad either.
"It is a great platform if you know how to leverage it. PL/SQL is a 3GL (or is it 4) and you can write entire applications using it...and if you do that right, an incredibly robust and scalable application at that."
NO!!! NO!!! NOOOOO!!!
I want to beat people like you who say this with a ball pean hammer. There are only a select few individuals on this earth who can write and read application logic written in SQL. AVOID THIS ANTI-PATTERN AT ALL COSTS! What is it with you f_cking database guys??? Why do you always want to stuff as much crap into the db as possible?
DUDE! SQL IS A PILE OF SHIT FOR EXPRESSING APPLICATION LOGIC!!!
It's fine for querying and manipulating sets of data, in a relational database. But it is a worthless sack of shit for expressing application logic!
I'm having to dig through this f_cking abortion right now because some Oracle f_ckhead thought "you can write entire applications using it!" Blog that, mofo!
Me:
goodness gracious.Of course note the use of "naturally" in my lexicon. Thanks Jake.
"DUDE! SQL IS A PILE OF SHIT FOR EXPRESSING APPLICATION LOGIC!!!"
disagree (naturally). It's incredibly easy to do, you just don't know how yet...and it seems even the Oracle professionals out there don't either.
I'll tell you this, the crazier the SQL or PL/SQL needed to derive and manipulate data the poorer the design. Start with a good design and it all becomes very simple.
Mr. M:
well dude, we are back to our old discussion - you arguing that procedural sql code is perfectly fine for building apps, and by extension, that the last 20 years of computer science have basically been a misguided lost journey down the meandering, fruitless trail of oop. um.....no. select this from that. otherwise keep that sql crap caged up where it belongs.Me:
btw, do the db guys here suck? seriously. i'm not competent enough to judge. (to be fair, apparently that crap i sent you is fairly old stuff, but still....)
I would say, based on limited knowledge of software development, that the OOP movement was started because the database (specifically Oracle) was not mature enough to do what was needed. Plus, I seem to recall that the OOP movement was supposed to have solved all the world's problems by now.Me (again):
It's further propogated due to the needs you specified in our discussion that day at WellCare (i.e. performance). I still believe that if application developers better understood how a DB works (Oracle, MySQL, SQLServer, etc) they would end up writing less code. Database constraints alone force you to write less (and better) code simultaneously ensuring good data.
The code that I did look at (first 1000 lines or so) isn't great.
1. With all those IF THEN ELSE statements it's telling me that there's probably a better way to store the data. Looks like they're missing an attribute that should be contained with a track.
2. using Object (PL/SQL) types to store data in the way they seem to be doing it is not the best way. Again, probably a design issue.
3. When you do something like this:
UPDATE pb_album_metadata
SET primary_digital_flag = 0
WHERE album_id IN (SELECT b.album_id
FROM (SELECT a.album_id AS album_id,
MAX(a.album_id) OVER (PARTITION BY a.standard_upc) AS latest_album_id
FROM pb_album_metadata a
WHERE a.standard_upc = g_album_tab(1).standard_upc ) b
WHERE b.album_id <> b.latest_album_id )
AND primary_digital_flag <> 0;
They should probably have considered end_date as an attribute of the album metadata. While analytic functions are pretty cool, they're more for analyzing (OLAP) and not OLTP environments.
That's for starters and without table definitions...
oh yeah...and PL/SQL is/was built on top of ADA, FYI.Mr. M:
"I still believe that if application developers better understood how a DB works (Oracle, MySQL, SQLServer, etc) they would end up writing less code. Database constraints alone force you to write less (and better) code simultaneously ensuring good data."Me:
Huh? What are we not understanding? What would be an example of a constraint that would force us to write less and better code?
CHECK, NOT NULL (same as CHECK) and FOREIGN KEY constraints all fit into that category.Mr. M:
Instead of having to check if a value is NULL when submitting it to the database, just submit and let the database throw an error, which you'll conveniently capture in your Exception block. Same goes for CHECK constraints, columnA should be either one of three values (test, test1, test3), you won't have to check that in your application code, just catch the exception. FKs insure good data (proper relationships).
A different perspective. If you are going to pay for it, use that damn thing. If you don't care, don't do it. But over the course of an "enterprisey" application, you'll end up writing more code and make maintenance that much more difficult (did I do it there?). Just those constraints will force you and the teams of application developers to put good data into the database.
You can still do it in the application of course (form validation is a good place)...
Ahh, jeez dude, I wasn't sure if you were referring to the literal "constraint" or not.Me:
Dude, even f_cksticks likeredactedI think have a decent enough understanding of when and how to use db constraints. It's when you get into things like cursors or cost plans of subselects and anonymous tables (i think that's the name for it - where I say select something from (select some other crap). Then we defer to db gurus like yourself.
But dude....."you won't have to check that in your application code, just catch the exception".......uh, don't ever repeat that off our little email group. And definitely don't go posting that on your blog. F_ck me man, it's a damn good thing we keep you db folks caged up in that rdbms box....
So we've had this discussion at work...for a high transaction system, do Java/C/etc handle exceptions well or what?Mr. M:
Why is it bad to deal with exceptions rather than coding to avoid them?
I highly doubt evenredactedunderstood database constraints...him and his cohorts believed all database software would be commoditized and MySQL would be king in short order.
"for a high transaction system"I was laughing at this point because the link above points to one of our consulting architects (I'm not really sure what his role is at this point).
Or for any system really....
To use your example of check constraints (is this value one of....) or not null constraints, checking these rules in the Java code and in the database code would seem to violate DRY. But we do that alot, and it is acceptable in certain cases. For instance, we also probably violate DRY if we're checking this same rule say in Javascript on the front end. But we accept this tiny violation of DRY because it tends to make for a better user experience and as a performance gain too, for we avoid the round trip to the server. Now, what your advocating here is close to the same thing. You're basically saying, don't check for the not null constraint in Java code, just go ahead and hit the database, let the database throw back an exception to the Java code, presumably correct the problem, and then make another roundtrip to the database again. Dude, what are you thinking?!? This to say nothing of the fact that this also could be considered a violation of Fail Fast, and a violation of Defensive Programming - what happens if the dba forgot to add the not null constraint in production?
Dude, listen to this guy. For a "high transaction system" basically you want to treat the database, as much as you can, as just a dumb data holder. A f_cking dumpster, that you just throw sh_t into and pull shit back out, using no vendor-specific features if at all possible.
Again, for we've had this discussion, but even in everyday apps, not just on Wall Street, the database is the bottleneck. And the database is the hardest layer to scale. So given those facts, you should design your app to do as little work in the database as possible.
Me:
i agree in any application that you want to minimize the number of round trips...Mr. M:
shocker...he's one of our architects. he's spot on in many instances, but...
database is the bottleneck because people don't know how to write SQL. I'll certainly concede the wall street applications (for the time being anyway), but the rest of us with what we do on a daily basis...Oracle will scale far beyond the demands they place. When that bottleneck shows up, 9 times out of 10 some dumb-ass c#/java guy thought he could write a better query than i. besides, what's the idiot doing anything but a simple join anyway? probably poor data model to start with...and we're right back where we started (sort of).
"database is the bottleneck because people don't know how to write SQL.....some dumb-ass c#/java guy thought he could write a better query than i."Mr. V (note, not Mr. M):
Dude, I'll grant you, people don't know how to write SQL, myself included. But that's not always why the database is the bottleneck. I think it's safe to say that's not even the majority of the reason. Yes, there are apps written by people who were just idiots, and they needlessly pummel the database, but that's definitely not the majority of scenarios. At my work the database is the bottleneck, and we run RAC in production. It's my understanding that even with RAC, there is a limit to how much you can scale that out. But any layer up from the database we are basically unlimited in how much we can scale that out. So it's very easy to stick another Apache box in front, or fire up another Weblogic server. But I can't do that with the database. We have 24 Weblogic servers forredacted. The database is the bottleneck. And we don't have shitty sql code in the app. In fact, we have very few hand-written queries anywhere in the app. Persisting something to a database is really a low-level concern that as an application developer I shouldn't even have to be bothered with, except for the rare corner cases where the persistence abstraction I'm using is just a little bit too generic to handle things effectively. And we don't use these ORMs because we don't know how to write sql. To effectively use an ORM tool requires a deeper understanding of sql and databases than simply being able to write solid SQL code. (Not saying Java devs who use ORMs know SQL better than a dba, just that it requires better sql skills than is required of a Java dev to simply write JDBC/SQL.) Now, before you try to tell me that my ORM library isn't able to write as efficient of sql code as a dba of your caliber, keep in mind that ORM tools are pretty advanced. They're able to intelligently do things like batch sql updates, and let you apply transactional semantics much easier than with raw jdbc/sql. But the overwhelming reason developers have so thoroughly adopted ORM is because Structured Query Language is such a nasty piece of shit for expressing application logic. SQL is a declarative, procedural language. It's totally unsuited for writing application logic! This, more than anything else, is why organizations and dev teams should seek to restrict what is handled within a relational database as much as possible - because the programming interface to it is a fucking ancient backward dying dinosaur.
My 2 canadian cents:Mr. V, I believe, is a little bit more sensible. Mr. M on the other hand is just trying to rile (sp?) me up.
The polyglot approach "... use different languages for different domain ..."
Database was developed to manipulate data and should remain there.
General purpose language was developed to encapsulate logic and should remain in that domain.
You should not use DB to encapsulate business logic (in my opinion) no more than you would use HTML to create complex logic.
While Java, C#, Python, etc are described as General Purpose languages, they, too, are really domain-constrained. Their expressiveness are confined (and should be) to express low-level, tersed, explicit, verbose, and repetive logic (if that makes any sense). Languages such as these are more suitable for low-level abstraction on top of which, richer, more expressive languages can be built. We are seeing this now with the emergence of languages on the JVM (and arguably on the .Net's CLR).
I think SQL as we know will take a back seat and a smart developer somewhere will create a new domain-specific language that lives on the VM and will push the SQL expression out of the RDBMS and closer to the code that needs it. We are not there yet, but Microsfot is trying (see LINQ and all ORM papers). This is not to say that there won't be isntances where tuning in the SQL-native language won't be necessary. However, 80 to 90% of simple CRUD cases will be handled closer to the logic code that uses the data code.
Again, that's my 2 canadian cents... I could go on. But I have a meeting withredacted.
Me:
Someone will probably create something like that, but it still gets at the heart of one of my arguments, many developers don't know how to use a database thus will go to any means to circumvent it. Embrace it I say.Mr. V:
Ultimately for me, it comes down to simplicity. I can write an application using PL/SQL that will scale very well for 90% of the solutions. Of course that doesn't include the "fancy" javascript/Ajax stuff needed for the UI. In my ever so humble opinion, this is a much better solution for a business in the long run.
1. You're more likely to change the middle tier than the database tier. Java, asp, Ruby, what's next?
2. Fewer moving parts means lower cost of ownership, even with the CPU costs. One person, one, was able to build and maintain a 350 page website. Be hardpressed to do that with the more expressive languages.
I think all of us are purists and very passionate about what we do. It's probably the main reason we get along. I thoroughly enjoy these conversations because it does force me to think...and that's always a good thing.
Haaa chet.And that's where it ended. I must say it's always fun. Mr. M and Mr. V are both very smart individuals and I highly respect what they do. We have different perspectives...but I think they listen, if only a little, as I listen to them. Their voices creep up on me especially now...which is definitely a good thing.
You sorta made my point than diverged away. Building an app in all PL/SQL is dangerous. It's no safer than me building an app in all Java. I can build very limited app in all Java. The moment I need to interact with other domain (UI, data, low-level native code, etc), I have to switch to something that is closer to what I am trying to do. If I need to create UI, I will pick a ui-centric environment, when I need to talk to DB, I will pass connect to a db and send in my SQL, and so forth. I will use Java as the glue to bring it all togher.
In the end, we may be saying the same thing, but using different accent. O well.
Tuesday, May 26, 2009
Burnout
After about 5 years of near constant activity I'm finally beginning to feel the effects.
In 2004 I started a business. I would work over 100 hours a week including my day job trying to get that thing going (which never happened). The birth of Kate in December of that year really changed my life. Pretty much every since Kate has been to keep our heads above water financially.
Early 2005 I took a different job. They (graciously) allowed me to work up to 60 hours at for time. That certainly help alleviate some of the financial pressure.
In the last quarter of 2006 I got a call from a recruiter saying I could make two and a half times that money in Tampa. I took it. Unfortunately the contract only ended up lasting about 5 weeks before I rolled into a permanent position. That was WellCare.
About 1 year ago to the day, I was fired from WellCare, ostensibly for blogging about their layoffs. Strangely, last week they announced another round of layoffs.
I then took a contract (temp to perm) position at RevolutionMoney. My hopes were very high as it was still in the start-up phase and they were looking to compete with the likes of Visa and MasterCard. Less than 2 months later though I was let go.
Five weeks after that I was brought back as a permanent employee. Only to be furloughed 3 months later and brought back 4 days later.
In April I resigned and took a position with a new company.
Oy...
Where's the burnout?
I think all of this has led to a bit of burnout. I use to come home and after the kids went to bed starting work on some other side project. Now I just catch up on all the movies I've missed over the past 5 years. The desire to do new and different things is there, just not the will. I get on the computer and start doing other, more trivial stuff.
Lately I'm trying to get Oracle installed on Ubuntu. Mostly screwed that up and will probably have to reinstall everything. I know enough to be very dangerous.
At work I've lost a bit of my fight. I'm still passionate, I just don't have the desire to argue my point all the time. Yes, I know, choose your battles and all that. Most of the fights I've had though are fundamental, like constraints. Without a position of authority (Lead or Architect or DBA or something), I'm not sure I can get others to listen.
It's not like I'm socially inept. I know how to get along and work with others. I just don't know how (anymore) how to change their minds. I've tried proving my ideas out, but it mostly doesn't matter. I'm up against something larger here.
So, I'm a bit burned out. I have not posted a technical article here in more than a month. That's frustrating.
Have you had burnout similar to mine? How do you handle it? What do you do to get over it?
In 2004 I started a business. I would work over 100 hours a week including my day job trying to get that thing going (which never happened). The birth of Kate in December of that year really changed my life. Pretty much every since Kate has been to keep our heads above water financially.
Early 2005 I took a different job. They (graciously) allowed me to work up to 60 hours at for time. That certainly help alleviate some of the financial pressure.
In the last quarter of 2006 I got a call from a recruiter saying I could make two and a half times that money in Tampa. I took it. Unfortunately the contract only ended up lasting about 5 weeks before I rolled into a permanent position. That was WellCare.
About 1 year ago to the day, I was fired from WellCare, ostensibly for blogging about their layoffs. Strangely, last week they announced another round of layoffs.
I then took a contract (temp to perm) position at RevolutionMoney. My hopes were very high as it was still in the start-up phase and they were looking to compete with the likes of Visa and MasterCard. Less than 2 months later though I was let go.
Five weeks after that I was brought back as a permanent employee. Only to be furloughed 3 months later and brought back 4 days later.
In April I resigned and took a position with a new company.
Oy...
Where's the burnout?
I think all of this has led to a bit of burnout. I use to come home and after the kids went to bed starting work on some other side project. Now I just catch up on all the movies I've missed over the past 5 years. The desire to do new and different things is there, just not the will. I get on the computer and start doing other, more trivial stuff.
Lately I'm trying to get Oracle installed on Ubuntu. Mostly screwed that up and will probably have to reinstall everything. I know enough to be very dangerous.
At work I've lost a bit of my fight. I'm still passionate, I just don't have the desire to argue my point all the time. Yes, I know, choose your battles and all that. Most of the fights I've had though are fundamental, like constraints. Without a position of authority (Lead or Architect or DBA or something), I'm not sure I can get others to listen.
It's not like I'm socially inept. I know how to get along and work with others. I just don't know how (anymore) how to change their minds. I've tried proving my ideas out, but it mostly doesn't matter. I'm up against something larger here.
So, I'm a bit burned out. I have not posted a technical article here in more than a month. That's frustrating.
Have you had burnout similar to mine? How do you handle it? What do you do to get over it?
Wednesday, April 8, 2009
La Revolución ha Muerto
For me anyway. I am moving along.
I will certainly miss all the friends I made and miss the opportunity to work with some very, very smart people. I wish I could have stayed, especially after the announcements yesterday (here, here, here, here, here, here, and here).
Bradd, this is not an April Fool's Joke. ;)
I guess the good news is that it wasn't involuntary. Will be added to the Tampa Timeline.
I start a new job on Friday.
I will certainly miss all the friends I made and miss the opportunity to work with some very, very smart people. I wish I could have stayed, especially after the announcements yesterday (here, here, here, here, here, here, and here).
Bradd, this is not an April Fool's Joke. ;)
I guess the good news is that it wasn't involuntary. Will be added to the Tampa Timeline.
I start a new job on Friday.
Thursday, April 2, 2009
Shut Your Mouth!
Those of you who know me, know that I have a tendency to talk a bit. I've been counseled by many (wife, friends, co-workers, etc) to keep my thoughts to myself but I still have a "problem" with it.
I've been known to send out emails late in the night to my CIO...only to do the same exact thing a couple of weeks later at the start of a holiday.
Just a little advice here, if you do decide to do something like this. Don't do it on Friday night where you have all weekend to think about whether or not you should have sent it. Especially don't do it on a Friday night if you have Monday off too.
Starting a blog helped, a little. I could scream out into the nothingness that is the 'tubes. There wasn't as much back and forth as I would like though. It's gotten better over time as more and more people read this blog, but nothing can replace that instant gratification of a healthy discussion.
And healthy are the ones I am talking about. I don't (necessarily) mean that I just talk to talk. I have opinions on just about everything software related. Architecture. Design. Style. Best Practices. Performance. I'm even worse when it comes to databases. I think I have a pretty good grasp of how to model data. I've been creating diagrams since before I became an IT guy. I understand when it is good to normalize and when it is good to denormalize.
I am very passionate about what I do. I love what I do. Every other week I get a paycheck and I'm stunned that someone pays me to do this.
You know what, if they're gonna pay me all this money, I'm not so sure they want me to keep my mouth shut.
The usual caveat: When a decision is made, with or without my input, I will keep my mouth shut about it. Either I accept the decision or I start looking for other work...that's my decision to make. But I won't be that guy who keeps arguing the point long after. At least I try not to be, I ain't perfect.
It also goes without saying that not all people are equal in a discussion. Some have strengths that others do not.
I think a good discussion can lead to better products. There is plenty to be learned through good discussion. A multitude of view points can force you to reconsider your own position; possibly strengthening it for future debate or forcing you to abandon that idea.
How could that ever be bad?
Not everyone feels the same way of course. Not everyone likes these types of discussions. Either they feel that it's not my place to disagree (i.e. I'm not qualified) or they just don't like being challenged. If my boss says stop, I stop. If a peer says stop I'll ask why.
So, do you know how to keep your mouth shut? Any good stories of how it went bad? or good? Please share...there's much to learn from the discussion.
I've been known to send out emails late in the night to my CIO...only to do the same exact thing a couple of weeks later at the start of a holiday.
Just a little advice here, if you do decide to do something like this. Don't do it on Friday night where you have all weekend to think about whether or not you should have sent it. Especially don't do it on a Friday night if you have Monday off too.
Starting a blog helped, a little. I could scream out into the nothingness that is the 'tubes. There wasn't as much back and forth as I would like though. It's gotten better over time as more and more people read this blog, but nothing can replace that instant gratification of a healthy discussion.
And healthy are the ones I am talking about. I don't (necessarily) mean that I just talk to talk. I have opinions on just about everything software related. Architecture. Design. Style. Best Practices. Performance. I'm even worse when it comes to databases. I think I have a pretty good grasp of how to model data. I've been creating diagrams since before I became an IT guy. I understand when it is good to normalize and when it is good to denormalize.
I am very passionate about what I do. I love what I do. Every other week I get a paycheck and I'm stunned that someone pays me to do this.
You know what, if they're gonna pay me all this money, I'm not so sure they want me to keep my mouth shut.
The usual caveat: When a decision is made, with or without my input, I will keep my mouth shut about it. Either I accept the decision or I start looking for other work...that's my decision to make. But I won't be that guy who keeps arguing the point long after. At least I try not to be, I ain't perfect.
It also goes without saying that not all people are equal in a discussion. Some have strengths that others do not.
I think a good discussion can lead to better products. There is plenty to be learned through good discussion. A multitude of view points can force you to reconsider your own position; possibly strengthening it for future debate or forcing you to abandon that idea.
How could that ever be bad?
Not everyone feels the same way of course. Not everyone likes these types of discussions. Either they feel that it's not my place to disagree (i.e. I'm not qualified) or they just don't like being challenged. If my boss says stop, I stop. If a peer says stop I'll ask why.
So, do you know how to keep your mouth shut? Any good stories of how it went bad? or good? Please share...there's much to learn from the discussion.
Wednesday, March 25, 2009
OBIEE: How to Migrate Your rpd
None, absolutely none of the following is anything I produced.
Again, Twitter to the rescue.
Who is Christian Berg? Well, to me, he's the guy who commented on my first OBIEE post. We corresponded back and forth via email. After that and I believe I convinced him to join twitter. He was very helpful in his emails to me, pointing me in the right direction and so on.
Anyway, shortly after my last tweet above, I received an email from Christian. It was a detailed explanation of the different ways that you could migrate your rpd file, or what you have in development/qa to production.
So, with permission, I'll reprint the email here (by the way, people need to pressure him to blog, I don't want to have to keep giving him credit here ;).
Christian Berg
1.) You have a full multi-user development environment which allows you to group your rpd objects in "Projects" and use a check-in/check-out mechanism against a central repository. I.e. there's the central rpd on the server, you check out a project, make your changes and check it back in to the server. [ link ]
2.) You merge your local repository with the production repository. This one you knew probably and can't use it since your local repository contains more changes than you actually want to transfer. So here's a little trick: strip your local rpd down to the bare minimum of changes you want to propagate. This way all the merge will do is an upsert and shove all your new objects into the central rpd. [ link ]
3.) You can use "Import from archive". It's been deprecated and inactivated by Oracle in order to push people to usethe "merge" functionality. However, it's still alive and kicking in the background. It's a nice feature if you know exactly what you want to transfer and if what you want to transfer is really "encapsulated". I.e. you don't start shooting into generic business models or stuff like that but have all in nice purpose-built objects which are added on top existing ones. Since - as far as "updating" goes - the import is the most brutal one. [ link ]
There you have it. I would encourage all of you to do the following:
1. Let Christian know that he needs to start/resume his blog.
2. Give him lots of money by way of jobs or bonuses. He is most deserving.
Again, Twitter to the rescue.
![]() |
![]() |
![]() |
Who is Christian Berg? Well, to me, he's the guy who commented on my first OBIEE post. We corresponded back and forth via email. After that and I believe I convinced him to join twitter. He was very helpful in his emails to me, pointing me in the right direction and so on.
Anyway, shortly after my last tweet above, I received an email from Christian. It was a detailed explanation of the different ways that you could migrate your rpd file, or what you have in development/qa to production.
So, with permission, I'll reprint the email here (by the way, people need to pressure him to blog, I don't want to have to keep giving him credit here ;).
Christian Berg
1.) You have a full multi-user development environment which allows you to group your rpd objects in "Projects" and use a check-in/check-out mechanism against a central repository. I.e. there's the central rpd on the server, you check out a project, make your changes and check it back in to the server. [ link ]
2.) You merge your local repository with the production repository. This one you knew probably and can't use it since your local repository contains more changes than you actually want to transfer. So here's a little trick: strip your local rpd down to the bare minimum of changes you want to propagate. This way all the merge will do is an upsert and shove all your new objects into the central rpd. [ link ]
3.) You can use "Import from archive". It's been deprecated and inactivated by Oracle in order to push people to usethe "merge" functionality. However, it's still alive and kicking in the background. It's a nice feature if you know exactly what you want to transfer and if what you want to transfer is really "encapsulated". I.e. you don't start shooting into generic business models or stuff like that but have all in nice purpose-built objects which are added on top existing ones. Since - as far as "updating" goes - the import is the most brutal one. [ link ]
There you have it. I would encourage all of you to do the following:
1. Let Christian know that he needs to start/resume his blog.
2. Give him lots of money by way of jobs or bonuses. He is most deserving.
Tuesday, March 24, 2009
Random Things
No Oracle stuff here, just feel like writing.
Kate
Kate, my little monster, decided to go to the hospital again. Penuemonia (yes, I spelled it wrong, that's how we say it around here). Last week her lungs were beautiful, probably the best doc has ever seen them. Her head was another matter, not a single black spot to be found. Diagnosis: sinus infection. Apparently it traveled down to her lungs. Hopefully it will be a short stay.
Words
"Publicly?" Why do I want to spell it "Publically?" Pub-lick-lee.
Kris and Little Chet
Kris let Little Chet watch Terminator 2 last night. Seriously? I watched most of it with him and there really isn't that much gore. A lot of bullets flying, but it's 2 robots shooting at each other right? I came down to check on him during the final scene of the movie when the Terminator is put into the super hot molten stuff. He was crying. He didn't want the Terminator to die.
Coaching Baseball
I've been "coaching" Little Chet's 5-6 year old baseball team. It's coach pitch the first 5 then bring out the tee. Hands down the best stress reliever of all time. I get to yell at a bunch of kids for and hour and a half. Is there a better way to live? I don't think so.
Me Yelling, neigh, Screaming
Thanks for listening.
Kate
Kate, my little monster, decided to go to the hospital again. Penuemonia (yes, I spelled it wrong, that's how we say it around here). Last week her lungs were beautiful, probably the best doc has ever seen them. Her head was another matter, not a single black spot to be found. Diagnosis: sinus infection. Apparently it traveled down to her lungs. Hopefully it will be a short stay.
Words
"Publicly?" Why do I want to spell it "Publically?" Pub-lick-lee.
Kris and Little Chet
Kris let Little Chet watch Terminator 2 last night. Seriously? I watched most of it with him and there really isn't that much gore. A lot of bullets flying, but it's 2 robots shooting at each other right? I came down to check on him during the final scene of the movie when the Terminator is put into the super hot molten stuff. He was crying. He didn't want the Terminator to die.
Coaching Baseball
I've been "coaching" Little Chet's 5-6 year old baseball team. It's coach pitch the first 5 then bring out the tee. Hands down the best stress reliever of all time. I get to yell at a bunch of kids for and hour and a half. Is there a better way to live? I don't think so.
Me Yelling, neigh, Screaming
"Come on! Hustle of my field!"I think the parents enjoy the show I put on...at least I hope they do.
"Quit playing in the dirt!"
"That's why you wear a cup!"
"I'll hit you with this tennis ball if you walk off that field again!"
"No wrestling!"
Thanks for listening.
Monday, March 23, 2009
Cisco Fatty - A Cautionary Tale
For those of you who don't know, last week a young woman interviewed at Cisco and shortly after leaving published the following tweet:
Since I have some experience in the matter, I figured I would chime in.
Last year, about this time, I blogged about WellCare's layoffs at the time. Looking back I find it...funny? that I didn't know better. Despite people telling me not to do it. Maybe I was just stubborn. Anyway, I blogged it and in less than an hour it came across my Google Alerts, along with everyone else in the company who had set up Google Alerts for WellCare. Oops.
I removed the post that afternoon when my VP gave me an earful and the rest is history. My contract was terminated the following Tuesday when I returned to work.
With Twitter it's even easier though. There's an illusion of privacy I think, especially for those who don't truly understand the social web. I didn't completely understand it, or what the consequences could be. Perhaps I did though and just didn't care. I still wrestle with that. I'm not proud of the way it went down, but it's in the past now.
That said, I think I took responsibility for my actions. I have expressed regret here and in interviews. I don't blame anyone but myself.
@theconnor though seems to be taking another tact. While stating
I think she was on the right path with her decision to post, but I don't think she goes far enough to show she's learned from it. She had a golden opportunity to redeem herself ever so slightly, but she didn't. Humility in this instance would have gone a long way in her future endeavors.
Update
Hat tip to Jake
Cisco just offered me a job! Now I have to weigh the utility of a fatty paycheck against the daily commute to San Jose and hating the work.Needless to say it wasn't the smartest thing in the world to do.
Since I have some experience in the matter, I figured I would chime in.
Last year, about this time, I blogged about WellCare's layoffs at the time. Looking back I find it...funny? that I didn't know better. Despite people telling me not to do it. Maybe I was just stubborn. Anyway, I blogged it and in less than an hour it came across my Google Alerts, along with everyone else in the company who had set up Google Alerts for WellCare. Oops.
I removed the post that afternoon when my VP gave me an earful and the rest is history. My contract was terminated the following Tuesday when I returned to work.
With Twitter it's even easier though. There's an illusion of privacy I think, especially for those who don't truly understand the social web. I didn't completely understand it, or what the consequences could be. Perhaps I did though and just didn't care. I still wrestle with that. I'm not proud of the way it went down, but it's in the past now.
That said, I think I took responsibility for my actions. I have expressed regret here and in interviews. I don't blame anyone but myself.
@theconnor though seems to be taking another tact. While stating
it was crass of me to say what I did and I take full responsibility for the stupidity of my action.she then goes on to talk of the impact of Twitter and that people don't really know what it is or what it's affect will be. Really? What about the people that have been fired for blogging (ahem)? What about the people that have been fired for posting on Facebook?
I think she was on the right path with her decision to post, but I don't think she goes far enough to show she's learned from it. She had a golden opportunity to redeem herself ever so slightly, but she didn't. Humility in this instance would have gone a long way in her future endeavors.
Update
Hat tip to Jake
Monday, January 26, 2009
What's My Purpose?
No, not as a person. I kind of know that one; father, husband, son, etc.
I'm talking about my chosen career.
Software Developer, Database Developer, DBA, however it is that I am defined professionally.
What is my purpose as one of those?
I bring this up because I had a great conversation with a friend over the weekend. In discussing all things geeky, he said, "My job is to eliminate the need for me."
That's a paraphrase of course because I believe beer was involved during this discussion.
I about jumped out of my seat though. I had never heard anyone (to my knowledge or memory anyway, though my old boss may jump in and remind me) utter those words. I have uttered those words (but not to my wife apparently, as I called her almost immediately) before. I have said them in interviews, in discussions...but never here.
"My job is to eliminate the need for me."
Indeed.
I strive for that...to build a system that requires virtually no support. I am nowhere close, but I strive for it.
What other role do we serve but a support role (unless we sell software)? IT in just about every instance is a cost center right? We are there to support the business side of the house do their job more effectively and more efficiently. Nothing more, nothing less.
We aren't there to build systems that will require constant care. We aren't there to ensure we have a job in the future. We're hired to build the best application possible and get out of the way.
Of course, there are many factors in our way for doing so. Poor business requirements is probably the number 1 reason. If the business can't describe how can we build it?
The upside of eliminating the need for us is we can move on after a couple of years. We can demand more money up front as they won't need us for 5 or 10 years (still don't know how to sell that one). The idea remains the same though...
So then, how do we build software that will obviate the need for us? I still don't know...but if you do, feel free to comment.
I'm talking about my chosen career.
Software Developer, Database Developer, DBA, however it is that I am defined professionally.
What is my purpose as one of those?
I bring this up because I had a great conversation with a friend over the weekend. In discussing all things geeky, he said, "My job is to eliminate the need for me."
That's a paraphrase of course because I believe beer was involved during this discussion.
I about jumped out of my seat though. I had never heard anyone (to my knowledge or memory anyway, though my old boss may jump in and remind me) utter those words. I have uttered those words (but not to my wife apparently, as I called her almost immediately) before. I have said them in interviews, in discussions...but never here.
"My job is to eliminate the need for me."
Indeed.
I strive for that...to build a system that requires virtually no support. I am nowhere close, but I strive for it.
What other role do we serve but a support role (unless we sell software)? IT in just about every instance is a cost center right? We are there to support the business side of the house do their job more effectively and more efficiently. Nothing more, nothing less.
We aren't there to build systems that will require constant care. We aren't there to ensure we have a job in the future. We're hired to build the best application possible and get out of the way.
Of course, there are many factors in our way for doing so. Poor business requirements is probably the number 1 reason. If the business can't describe how can we build it?
The upside of eliminating the need for us is we can move on after a couple of years. We can demand more money up front as they won't need us for 5 or 10 years (still don't know how to sell that one). The idea remains the same though...
So then, how do we build software that will obviate the need for us? I still don't know...but if you do, feel free to comment.
Monday, January 12, 2009
Fun With Linux
I write this from my first successful Linux installation, Ubuntu Intrepid Ibex. It started innocently enough after reading this tweet.
So last Saturday I went to Wal-Mart and bought an 8 GB San Cruzer flash drive, downloaded the ISO image from ubuntu.com, unzipped it and put the files on the flash drive. Plugged in the flash drive to my son's computer and waited like 20 minutes for it to boot up. It's an old laptop with 256 MB Ram, and I'm not sure what the processor is...but it's slow.
When it finally did come up, I tried clicking on the Install icon on the desktop and it just sat there...for hours...and hours. Finally coming up with some gnome applet error. By the way, the scenery is quite nice:
So I sat there for the next 24 hours trying to figure this thing out. Finally, I just installed it from the wubi.exe file supplied in the ISO via Windows. Weird thing about that is it went out to the 'tubes to get the files when it had them right there. Oh well.
Installation went swimmingly. Had Ubuntu running just fine, a bit better than Windows ran on that machine. The update manager told me I needed had updates so I started that process. As I sat around I started to look around (very dangerous). I'm not much of an OS guru, I know enough to get by and that's it. So I'm looking at the files that I left on the system and decided to start removing them. Windows folder? Bah, don't need that. Trash. NTDETECT.com? Trash. boot.ini? Trash. The only folder I did leave was Ubuntu and Documents and Settings (for the saved files). After the update manager completed I needed to restart, so I did.
Can't Load Operating System or some such nonsense. What? I just installed Ubuntu! Effing Linux! Can't these people get it straight? No wonder no one uses it!
Naturally, I'm an idiot.
Had it running on Sunday night and Monday when it came time for my son to get on the computer (after school), it was broken. I received a few irate IMs from the wifey in that regard. Ugh.
Found the XP recovery disk that night and tried to update the boot.ini and NTDETECT files (among others) to no avail. Began re-installation of Windows. Joy. Maybe I learned my lesson this time?
I decided to install Ubuntu on my old machine at home too. That was cut short because I had a very old Graphics card (Diamond FireGL2) that didn't work with Ubuntu. Perhaps I should get a newer graphics card?
In the meantime, I decided to install it on a 3rd machine, my other old box. This has been my mainstay for the last 7 years (yikes). Dell 4300, Pentium IV, 512 MB Ram. There are two disks on this machine, the first of which has 2 partitions, one for the OS and one for Data.
I successfully install it, reboot and am then prompted with a GRUB prompt? WTF? I can't remember the details as it all seemed to happen so quickly. Messing around there I played with the HIDE/UNHIDE commands, MAKEACTIVE, etc. Reboot. Error Loading Operating System. WTF? Come on!
XP Recovery Disk to the rescue. Getting to the command line I quickly noticed F:\WINDOWS. F? How'd that happen? Oh wait...HIDE...MAKEACTIVE...great. Spent the next few hours trying to replace the boot.ini file, but it wasn't recognizing the partition so it didn't matter. I finally just decided to delete the OS partition and re-install Windows.
Finally, finally, here I am. Ubuntu installed on son's computer, check. Ubuntu installed on my (first) old computer, check (still need graphics card). Ubuntu installed on my (second) old computer, check.
I decided not to delete any windows system files this time.
Next up, I need to figure out how, on restart, to have Ubuntu the default in OS selection.
Is a bad that I uninstalled Internet Explorer from all my family members pcs in the last 2 weeks and replace d it with firefox.It's fairly innocuous, but it got me thinking about installing some flavor of Linux on my son's old laptop running XP Pro. Maybe it was the sneaky factor?
So last Saturday I went to Wal-Mart and bought an 8 GB San Cruzer flash drive, downloaded the ISO image from ubuntu.com, unzipped it and put the files on the flash drive. Plugged in the flash drive to my son's computer and waited like 20 minutes for it to boot up. It's an old laptop with 256 MB Ram, and I'm not sure what the processor is...but it's slow.
When it finally did come up, I tried clicking on the Install icon on the desktop and it just sat there...for hours...and hours. Finally coming up with some gnome applet error. By the way, the scenery is quite nice:
![]() |
From oraclenerd |
So I sat there for the next 24 hours trying to figure this thing out. Finally, I just installed it from the wubi.exe file supplied in the ISO via Windows. Weird thing about that is it went out to the 'tubes to get the files when it had them right there. Oh well.
Installation went swimmingly. Had Ubuntu running just fine, a bit better than Windows ran on that machine. The update manager told me I needed had updates so I started that process. As I sat around I started to look around (very dangerous). I'm not much of an OS guru, I know enough to get by and that's it. So I'm looking at the files that I left on the system and decided to start removing them. Windows folder? Bah, don't need that. Trash. NTDETECT.com? Trash. boot.ini? Trash. The only folder I did leave was Ubuntu and Documents and Settings (for the saved files). After the update manager completed I needed to restart, so I did.
Can't Load Operating System or some such nonsense. What? I just installed Ubuntu! Effing Linux! Can't these people get it straight? No wonder no one uses it!
Naturally, I'm an idiot.
Had it running on Sunday night and Monday when it came time for my son to get on the computer (after school), it was broken. I received a few irate IMs from the wifey in that regard. Ugh.
Found the XP recovery disk that night and tried to update the boot.ini and NTDETECT files (among others) to no avail. Began re-installation of Windows. Joy. Maybe I learned my lesson this time?
I decided to install Ubuntu on my old machine at home too. That was cut short because I had a very old Graphics card (Diamond FireGL2) that didn't work with Ubuntu. Perhaps I should get a newer graphics card?
In the meantime, I decided to install it on a 3rd machine, my other old box. This has been my mainstay for the last 7 years (yikes). Dell 4300, Pentium IV, 512 MB Ram. There are two disks on this machine, the first of which has 2 partitions, one for the OS and one for Data.
I successfully install it, reboot and am then prompted with a GRUB prompt? WTF? I can't remember the details as it all seemed to happen so quickly. Messing around there I played with the HIDE/UNHIDE commands, MAKEACTIVE, etc. Reboot. Error Loading Operating System. WTF? Come on!
XP Recovery Disk to the rescue. Getting to the command line I quickly noticed F:\WINDOWS. F? How'd that happen? Oh wait...HIDE...MAKEACTIVE...great. Spent the next few hours trying to replace the boot.ini file, but it wasn't recognizing the partition so it didn't matter. I finally just decided to delete the OS partition and re-install Windows.
Finally, finally, here I am. Ubuntu installed on son's computer, check. Ubuntu installed on my (first) old computer, check (still need graphics card). Ubuntu installed on my (second) old computer, check.
I decided not to delete any windows system files this time.
Next up, I need to figure out how, on restart, to have Ubuntu the default in OS selection.
Monday, December 29, 2008
This is the LAST time...
On Friday I was furloughed...and today I was invited back. I start tomorrow.
Wow is really all I can say. Perhaps I should write a book or something? These past couple of years certainly qualify as book worthy. :)
Wow is really all I can say. Perhaps I should write a book or something? These past couple of years certainly qualify as book worthy. :)
Saturday, December 27, 2008
The Tampa Timeline
I moved to Tampa a little over two years ago. To say it's been hectic would be a gross understatement. Here's the events myself and my family have been through in that short time:
November 27, 2006 - Begin work at WellCare as a contractor.
December 2, 2006 - Closed on Gainesville house
December 17, 2006 - Purchased Tampa house
December 26, 2006 - Rolled into a fulltime position at WellCare in the Datawarehouse group
January 4, 2007 - New CIO announced at WellCare
April 21, 2007 - Kate gives the Reaper the finger Summer 2007 - Awarded on-the-spot bonus, only to be *PIPped 2 days later
August 6, 2007 - Sent a "manifesto" to my CIO August 14, 2007 - Started this blog
October 24, 2007 - FBI Raids WellCare with 200 agents
January 26, 2008 - CEO and CFO resign from WellCare
April 24, 2008 - Gave my first professional presentation on Application Express
May 22, 2008 - I write a short statement on my blog that WellCare is doing layoffs
May 27, 2008 - I am fired from WellCare, with cause, for posting company "confidential" information
May 31, 2008 - I get my official offer from Revolution Money as a contractor June 15, 2008 - My paternal Grandfather passes away at 89
July 27, 2008 - I'm let go from Revolution Money
September 2, 2008 - I start as a fulltime employee at Revolution Money
December 26, 2008 - I'm furloughed from Revolution Money
December 29, 2008 - I'm asked to come back to Revolution Money.
April 8, 2009 - I resign and am then escorted from the premises.
April 10, 2009 - I start my new job.
October 16, 2009 - I getfired let go again.
November 3, 2009 - Became an Oracle ACE
What have I learned in this time?
1. Don't go into the office. If you boss says he needs a word, say you have to go to the bathroom and run for your car.
2. Leave early. If layoffs are coming and you aren't there, they can't let you go!
3. Don't check email while on vacation.
4. Life is rough sometimes, but you have to roll with it.
5. Have fun. We spend more time with those at work than we do with our families. Enjoy yourself while you are there. I got to play ping pong everyday (after 5 naturally) at Revolution Money with my Arch Nemesis. I won two times...out of a thousand games. But it was fun.
*Performance Improvement Plan
November 27, 2006 - Begin work at WellCare as a contractor.
December 2, 2006 - Closed on Gainesville house
December 17, 2006 - Purchased Tampa house
December 26, 2006 - Rolled into a fulltime position at WellCare in the Datawarehouse group
January 4, 2007 - New CIO announced at WellCare
April 21, 2007 - Kate gives the Reaper the finger Summer 2007 - Awarded on-the-spot bonus, only to be *PIPped 2 days later
August 6, 2007 - Sent a "manifesto" to my CIO August 14, 2007 - Started this blog
October 24, 2007 - FBI Raids WellCare with 200 agents
January 26, 2008 - CEO and CFO resign from WellCare
April 24, 2008 - Gave my first professional presentation on Application Express
May 22, 2008 - I write a short statement on my blog that WellCare is doing layoffs
May 27, 2008 - I am fired from WellCare, with cause, for posting company "confidential" information
May 31, 2008 - I get my official offer from Revolution Money as a contractor June 15, 2008 - My paternal Grandfather passes away at 89
July 27, 2008 - I'm let go from Revolution Money
September 2, 2008 - I start as a fulltime employee at Revolution Money
December 26, 2008 - I'm furloughed from Revolution Money
December 29, 2008 - I'm asked to come back to Revolution Money.
April 8, 2009 - I resign and am then escorted from the premises.
April 10, 2009 - I start my new job.
October 16, 2009 - I get
November 3, 2009 - Became an Oracle ACE

What have I learned in this time?
1. Don't go into the office. If you boss says he needs a word, say you have to go to the bathroom and run for your car.
2. Leave early. If layoffs are coming and you aren't there, they can't let you go!
3. Don't check email while on vacation.
4. Life is rough sometimes, but you have to roll with it.
5. Have fun. We spend more time with those at work than we do with our families. Enjoy yourself while you are there. I got to play ping pong everyday (after 5 naturally) at Revolution Money with my Arch Nemesis. I won two times...out of a thousand games. But it was fun.
*Performance Improvement Plan
Friday, December 26, 2008
Looking...Again!
Tuesday, December 9, 2008
Application Developers vs. Database Developers: Part II
You can read the first article here. My application developer friend, Mr. M, emailed me and another fine gentleman this little blurb recently:
Mr. M:
As I did before, I'll just put the email here.
Me:
Me:
Mr. M:
Me:
Me:
Mr. M:
OH YEAH BABY!!! TEN TIMES FASTER!!!! YEAH!!!!!!!!This was prompted by a recent Oracle email blast about the Exadata storage system/Warehouse.
Hey seriously, what a tub of shit Oracle is. Where does this myth come from that it's such a great platform? Their client tools suck balls and it's generally just a pain in the ass to work with from a developer's point of view. But devs for some reason are under this impression that from thew server perspective it's rock solid and performant. Well, it may be solid, but it's a fucking turd. Our dba here - definitely an Oracle guy - has been tasked with looking into moving us onto an oss db. He basically refuses to even look at MySQL, stating that it's a mickey mouse worthless pile of shit (can't really argue with him there lol), so that basically leaves Postgres. So it's been a few weeks now, and he will basically admit now that Postgres completely waxes Oracle as far as performance goes. LOL We run RAC in production too. He's looking at failover, replication, blah blah blah now, we'll see what the verdict on that is. Oh, and Oracle AQ? That's a worthless pile of shit too. Why do they tack a fucking message queue that doesn't play nice with jms onto the fucking database, which is probably already overworked? Oh wait, that's right, they're in the business of selling per cpu licenses! Cocksuckers.
As I did before, I'll just put the email here.
Me:
Agreed, their client tools aren't all the great. Which ones are you using?Mr. M:
I use SQL*Plus (naturally), SQL Developer and JDeveloper. The latter 2 tie in very nicely with Subversion. With JDeveloper, when I want to try out Java, it's got a pretty good suite of tools.
Oracle starting out catering to businesses, Microsoft started with the consumer. Oracle has made pretty good strides in making their software more usable while Microsoft has made theirs more scalable.
I haven't used AQ a whole lot and definitely not with Java. I do know that it's billed as JMS compliant.
Postgres has it's place and so does Oracle. It is a great platform if you know how to leverage it. PL/SQL is a 3GL (or is it 4) and you can write entire applications using it...and if you do that right, an incredibly robust and scalable application at that.
This was followed by a package he had been working on. I wouldn't say it was the greatest, but it wasn't all bad either.
"It is a great platform if you know how to leverage it. PL/SQL is a 3GL (or is it 4) and you can write entire applications using it...and if you do that right, an incredibly robust and scalable application at that."
NO!!! NO!!! NOOOOO!!!
I want to beat people like you who say this with a ball pean hammer. There are only a select few individuals on this earth who can write and read application logic written in SQL. AVOID THIS ANTI-PATTERN AT ALL COSTS! What is it with you f_cking database guys??? Why do you always want to stuff as much crap into the db as possible?
DUDE! SQL IS A PILE OF SHIT FOR EXPRESSING APPLICATION LOGIC!!!
It's fine for querying and manipulating sets of data, in a relational database. But it is a worthless sack of shit for expressing application logic!
I'm having to dig through this f_cking abortion right now because some Oracle f_ckhead thought "you can write entire applications using it!" Blog that, mofo!
Me:
goodness gracious.Of course note the use of "naturally" in my lexicon. Thanks Jake.
"DUDE! SQL IS A PILE OF SHIT FOR EXPRESSING APPLICATION LOGIC!!!"
disagree (naturally). It's incredibly easy to do, you just don't know how yet...and it seems even the Oracle professionals out there don't either.
I'll tell you this, the crazier the SQL or PL/SQL needed to derive and manipulate data the poorer the design. Start with a good design and it all becomes very simple.
Mr. M:
well dude, we are back to our old discussion - you arguing that procedural sql code is perfectly fine for building apps, and by extension, that the last 20 years of computer science have basically been a misguided lost journey down the meandering, fruitless trail of oop. um.....no. select this from that. otherwise keep that sql crap caged up where it belongs.Me:
btw, do the db guys here suck? seriously. i'm not competent enough to judge. (to be fair, apparently that crap i sent you is fairly old stuff, but still....)
I would say, based on limited knowledge of software development, that the OOP movement was started because the database (specifically Oracle) was not mature enough to do what was needed. Plus, I seem to recall that the OOP movement was supposed to have solved all the world's problems by now.Me (again):
It's further propogated due to the needs you specified in our discussion that day at WellCare (i.e. performance). I still believe that if application developers better understood how a DB works (Oracle, MySQL, SQLServer, etc) they would end up writing less code. Database constraints alone force you to write less (and better) code simultaneously ensuring good data.
The code that I did look at (first 1000 lines or so) isn't great.
1. With all those IF THEN ELSE statements it's telling me that there's probably a better way to store the data. Looks like they're missing an attribute that should be contained with a track.
2. using Object (PL/SQL) types to store data in the way they seem to be doing it is not the best way. Again, probably a design issue.
3. When you do something like this:
UPDATE pb_album_metadata
SET primary_digital_flag = 0
WHERE album_id IN (SELECT b.album_id
FROM (SELECT a.album_id AS album_id,
MAX(a.album_id) OVER (PARTITION BY a.standard_upc) AS latest_album_id
FROM pb_album_metadata a
WHERE a.standard_upc = g_album_tab(1).standard_upc ) b
WHERE b.album_id <> b.latest_album_id )
AND primary_digital_flag <> 0;
They should probably have considered end_date as an attribute of the album metadata. While analytic functions are pretty cool, they're more for analyzing (OLAP) and not OLTP environments.
That's for starters and without table definitions...
oh yeah...and PL/SQL is/was built on top of ADA, FYI.Mr. M:
"I still believe that if application developers better understood how a DB works (Oracle, MySQL, SQLServer, etc) they would end up writing less code. Database constraints alone force you to write less (and better) code simultaneously ensuring good data."Me:
Huh? What are we not understanding? What would be an example of a constraint that would force us to write less and better code?
CHECK, NOT NULL (same as CHECK) and FOREIGN KEY constraints all fit into that category.Mr. M:
Instead of having to check if a value is NULL when submitting it to the database, just submit and let the database throw an error, which you'll conveniently capture in your Exception block. Same goes for CHECK constraints, columnA should be either one of three values (test, test1, test3), you won't have to check that in your application code, just catch the exception. FKs insure good data (proper relationships).
A different perspective. If you are going to pay for it, use that damn thing. If you don't care, don't do it. But over the course of an "enterprisey" application, you'll end up writing more code and make maintenance that much more difficult (did I do it there?). Just those constraints will force you and the teams of application developers to put good data into the database.
You can still do it in the application of course (form validation is a good place)...
Ahh, jeez dude, I wasn't sure if you were referring to the literal "constraint" or not.Me:
Dude, even f_cksticks likeredactedI think have a decent enough understanding of when and how to use db constraints. It's when you get into things like cursors or cost plans of subselects and anonymous tables (i think that's the name for it - where I say select something from (select some other crap). Then we defer to db gurus like yourself.
But dude....."you won't have to check that in your application code, just catch the exception".......uh, don't ever repeat that off our little email group. And definitely don't go posting that on your blog. F_ck me man, it's a damn good thing we keep you db folks caged up in that rdbms box....
So we've had this discussion at work...for a high transaction system, do Java/C/etc handle exceptions well or what?Mr. M:
Why is it bad to deal with exceptions rather than coding to avoid them?
I highly doubt evenredactedunderstood database constraints...him and his cohorts believed all database software would be commoditized and MySQL would be king in short order.
"for a high transaction system"I was laughing at this point because the link above points to one of our consulting architects (I'm not really sure what his role is at this point).
Or for any system really....
To use your example of check constraints (is this value one of....) or not null constraints, checking these rules in the Java code and in the database code would seem to violate DRY. But we do that alot, and it is acceptable in certain cases. For instance, we also probably violate DRY if we're checking this same rule say in Javascript on the front end. But we accept this tiny violation of DRY because it tends to make for a better user experience and as a performance gain too, for we avoid the round trip to the server. Now, what your advocating here is close to the same thing. You're basically saying, don't check for the not null constraint in Java code, just go ahead and hit the database, let the database throw back an exception to the Java code, presumably correct the problem, and then make another roundtrip to the database again. Dude, what are you thinking?!? This to say nothing of the fact that this also could be considered a violation of Fail Fast, and a violation of Defensive Programming - what happens if the dba forgot to add the not null constraint in production?
Dude, listen to this guy. For a "high transaction system" basically you want to treat the database, as much as you can, as just a dumb data holder. A f_cking dumpster, that you just throw sh_t into and pull shit back out, using no vendor-specific features if at all possible.
Again, for we've had this discussion, but even in everyday apps, not just on Wall Street, the database is the bottleneck. And the database is the hardest layer to scale. So given those facts, you should design your app to do as little work in the database as possible.
Me:
i agree in any application that you want to minimize the number of round trips...Mr. M:
shocker...he's one of our architects. he's spot on in many instances, but...
database is the bottleneck because people don't know how to write SQL. I'll certainly concede the wall street applications (for the time being anyway), but the rest of us with what we do on a daily basis...Oracle will scale far beyond the demands they place. When that bottleneck shows up, 9 times out of 10 some dumb-ass c#/java guy thought he could write a better query than i. besides, what's the idiot doing anything but a simple join anyway? probably poor data model to start with...and we're right back where we started (sort of).
"database is the bottleneck because people don't know how to write SQL.....some dumb-ass c#/java guy thought he could write a better query than i."Mr. V (note, not Mr. M):
Dude, I'll grant you, people don't know how to write SQL, myself included. But that's not always why the database is the bottleneck. I think it's safe to say that's not even the majority of the reason. Yes, there are apps written by people who were just idiots, and they needlessly pummel the database, but that's definitely not the majority of scenarios. At my work the database is the bottleneck, and we run RAC in production. It's my understanding that even with RAC, there is a limit to how much you can scale that out. But any layer up from the database we are basically unlimited in how much we can scale that out. So it's very easy to stick another Apache box in front, or fire up another Weblogic server. But I can't do that with the database. We have 24 Weblogic servers forredacted. The database is the bottleneck. And we don't have shitty sql code in the app. In fact, we have very few hand-written queries anywhere in the app. Persisting something to a database is really a low-level concern that as an application developer I shouldn't even have to be bothered with, except for the rare corner cases where the persistence abstraction I'm using is just a little bit too generic to handle things effectively. And we don't use these ORMs because we don't know how to write sql. To effectively use an ORM tool requires a deeper understanding of sql and databases than simply being able to write solid SQL code. (Not saying Java devs who use ORMs know SQL better than a dba, just that it requires better sql skills than is required of a Java dev to simply write JDBC/SQL.) Now, before you try to tell me that my ORM library isn't able to write as efficient of sql code as a dba of your caliber, keep in mind that ORM tools are pretty advanced. They're able to intelligently do things like batch sql updates, and let you apply transactional semantics much easier than with raw jdbc/sql. But the overwhelming reason developers have so thoroughly adopted ORM is because Structured Query Language is such a nasty piece of shit for expressing application logic. SQL is a declarative, procedural language. It's totally unsuited for writing application logic! This, more than anything else, is why organizations and dev teams should seek to restrict what is handled within a relational database as much as possible - because the programming interface to it is a fucking ancient backward dying dinosaur.
My 2 canadian cents:Mr. V, I believe, is a little bit more sensible. Mr. M on the other hand is just trying to rile (sp?) me up.
The polyglot approach "... use different languages for different domain ..."
Database was developed to manipulate data and should remain there.
General purpose language was developed to encapsulate logic and should remain in that domain.
You should not use DB to encapsulate business logic (in my opinion) no more than you would use HTML to create complex logic.
While Java, C#, Python, etc are described as General Purpose languages, they, too, are really domain-constrained. Their expressiveness are confined (and should be) to express low-level, tersed, explicit, verbose, and repetive logic (if that makes any sense). Languages such as these are more suitable for low-level abstraction on top of which, richer, more expressive languages can be built. We are seeing this now with the emergence of languages on the JVM (and arguably on the .Net's CLR).
I think SQL as we know will take a back seat and a smart developer somewhere will create a new domain-specific language that lives on the VM and will push the SQL expression out of the RDBMS and closer to the code that needs it. We are not there yet, but Microsfot is trying (see LINQ and all ORM papers). This is not to say that there won't be isntances where tuning in the SQL-native language won't be necessary. However, 80 to 90% of simple CRUD cases will be handled closer to the logic code that uses the data code.
Again, that's my 2 canadian cents... I could go on. But I have a meeting withredacted.
Me:
Someone will probably create something like that, but it still gets at the heart of one of my arguments, many developers don't know how to use a database thus will go to any means to circumvent it. Embrace it I say.Mr. V:
Ultimately for me, it comes down to simplicity. I can write an application using PL/SQL that will scale very well for 90% of the solutions. Of course that doesn't include the "fancy" javascript/Ajax stuff needed for the UI. In my ever so humble opinion, this is a much better solution for a business in the long run.
1. You're more likely to change the middle tier than the database tier. Java, asp, Ruby, what's next?
2. Fewer moving parts means lower cost of ownership, even with the CPU costs. One person, one, was able to build and maintain a 350 page website. Be hardpressed to do that with the more expressive languages.
I think all of us are purists and very passionate about what we do. It's probably the main reason we get along. I thoroughly enjoy these conversations because it does force me to think...and that's always a good thing.
Haaa chet.And that's where it ended. I must say it's always fun. Mr. M and Mr. V are both very smart individuals and I highly respect what they do. We have different perspectives...but I think they listen, if only a little, as I listen to them. Their voices creep up on me especially now...which is definitely a good thing.
You sorta made my point than diverged away. Building an app in all PL/SQL is dangerous. It's no safer than me building an app in all Java. I can build very limited app in all Java. The moment I need to interact with other domain (UI, data, low-level native code, etc), I have to switch to something that is closer to what I am trying to do. If I need to create UI, I will pick a ui-centric environment, when I need to talk to DB, I will pass connect to a db and send in my SQL, and so forth. I will use Java as the glue to bring it all togher.
In the end, we may be saying the same thing, but using different accent. O well.
Subscribe to:
Posts (Atom)