Category Archives: Work

WebLogic, J2EE, Bravery, and Safety

I started a new job two months ago and it’s starting to sink in just how big of a change I made. It’s not just a change of scenery, it’s a change of climate. I feel like I’ve moved from the Temperate to the Tropical. Exotic birds are flying all around.

Having mostly supported Sharepoint and ASP.NET applications on a Microsoft IIS front end & SQL backend, I would say I have enough experience to walk into any IT Department that is a Microsoft shop and hit the ground running. And by all accounts, I was taking a job with a fully devoted Microsoft partner. Except the group I’m hired into and the team I’m assigned to uses Oracle WebLogic to run a J2EE platform running JRockIt JVM. That is a (fun and interesting) challenge I didn’t expect. So I’m learning WebLogic.

There is so much complexity, oh the complexity, in this environment. So many moving pieces. I count five completely separate Admin consoles that have completely separate controls. And when doing a deployment, I end up using at least three of them. Even the QA environment has half a dozen nodes and a clustered SQL server. Before two months ago, I had never heard of the file extensions .war, .ear, or .hprof. Before two months ago, I probably had it easy.

What I’ve really learned in the last two months is that the world is so much bigger than I imagine it and my ability to compartmentalize can work against me. That what I know is less important than I can learn. That hard work might not get noticed but usually pays off, and being nice to people pays off at every turn. That new and scary usually means interesting and undefined, that it takes bravery (actual heroic bravery) to do this everyday, and that the poison to all of this is the desire for safety.

First Week

After being at the same company for almost 5 1/2 years and having great success on the Application Engineering team there, I decided to make a change and take on a new opportunity.

And I just finished my first week at my new job. I think I’m really going to like it, but it’s a long walk to the coffee maker.

Old Friends

Occasionally we run out of hard drive space on our test servers. When the C:> drive has 0 GB available, bad things happen.

So:

  1. look for old database backups I can delete
  2. look for temp files I delete
  3. look in the Users (or Documents and Settings) folder for profiles that I can delete and notice some names of people that haven’t been with the company in almost a year and hey do you remember that one time when we were out to lunch and…

Another good place to find old friends is an office-wide and company-wide distribution lists.

SC.EXE

This weekend we are doing a conversion for an existing site, migrating their data from their existing EMR into the new platform. One of the tasks I was responsible for was stopping the windows service that runs the lab interface and e-prescribe messaging.

So I created a .bat file with these two lines:

sc stop servicename
sc config servicename start= disabled

I created a scheduled task on the server to run this .bat file at 7:01pm, when the data conversion was expected to begin. The site would be closed by then and the database would have been taken offline as well. And I didn’t have to login and work on a Friday night.

I can’t wait until our new platform is off of Windows 2003 and we move forward to Windows 2008 R2. I’m eager to start using PowerShell.

Run Commands

The production Citrix servers are locked down with some The Citrix servers for my production environment are fairly tightly locked down with group policy and I can’t get to the Start Menu and can’t view any of the server’s local drives in Windows Explorer. I can’t pull up the Run dialog. I can’t Search. So I created a shortcut in my home folder for the Command Prompt and launch from there, but you have to know the right run commands. Here are my go to commands:

  • Computer Management: compmgmt.msc
  • Control Panel: control
  • Microsoft Paint: mspaint
  • Notepad: notepad
  • Registry Editor: regedit
  • Task Manager: taskmgr

Here’s a big list: http://mypchell.com/guides/34-guides/69-156-useful-run-commands

TSQL OBJECT_DEFINITION

I recently did a rollout in production of a new version of the EHR split over several deployments. The EHR uses a several shared databases for lookup values of CPT codes or drug names so that an update to those can be done once per server and not risk affecting patient data. Since we have all of our production databases on the same SQL cluster, and the structure of one of these tables was changing, we created a workaround. We created a copy of it, appended the version number to the name, then ran an update script on all databases to recreate all views and stored procedures that reference the shared databases to point to our new one. As they are upgraded to the new version, these views and stored procedures get recreated with the default database name.

Now that everyone is on the new version, querying the database I’ve found that not all these objects we changed got touched in the upgrade. I was using sp_helptext to display database objects to me, but it was limiting because it wasn’t searchable.

SELECT name, create_date, modify_date, type, type_desc
FROM SYS.OBJECTS
WHERE OBJECT_DEFINITION(object_id) LIKE '%ver323%' ORDER BY Name

This returned 153 records. 153 out of 158 were untouched in the upgrade. The column created_date in the query showed the date of the previous upgrade, so I’m deleting from update script the 5 objects that were updated, doing a Find Replace to delete “ver323″ from the script so these get recreated with the default database name. I’ve put this out in QA. I’ll put this in production once I’m convinced it won’t break anything.

DNS, Hosts File, and Our New Internet Overlords

We have 8 webservers in production load balanced by an F5. DNS points to the F5, so when i need to troubleshoot a single webserver, it’s easy enough to modify my hosts file and point the hostname to a specific server.

And this week I started getting weird DNS issues with production. I would clear out my hosts file, ping the URL and it would reply from the F5. I would add the hosts file entry and ping again, it would reply from the server. I launch the app, and I’d get put on a random webserver. I must have run “ipconfig /flushdns” a dozen times in the last 24 hours trying to troubleshoot this.

Then, a lightbulb goes off.

I am a part of a pilot group for an new corporate office Internet proxy server. It’s meant to block facebook and youtube and twitter and all the social-networking-link-sharing-time-wasting websites out there. Well, the DNS from the proxy is overriding the DNS on my local machine, even my hosts file. So I emailed the IT Security contact I had and asked for some exclusions related to my production environment.

And for the record, my opinion on Internet proxying and Internet filtering at work is that I don’t mind it. It’s their equipment and connectivity, they can lock it down however they like. Site locations running a T1 for connectivity are told to stay off of YouTube so their 1.54 mb isn’t saturated in a hurry. They put encryption on my laptop and gave me a keycard to enter the building, so they can rightly do whatever they want and I don’t really care as long as I can still work efficiently. The only thing that would be a burden is not being able to reach the Internet on my laptop without first having to login to VPN.

Phone Tag

I send out an email at 8:45 AM: “please call me.”

I’m away from my desk from 11:15 AM – 11:30 AM to pick up something for lunch, I come back to a voicemail.

This is how phone tag begins.

Luckily our phone system in the office will forward your voicemails in a .wav file to your inbox. So I just replied to the original email thread with the voicemail .wav file attached, saying “I got your voicemail, I had a follow up question.”

I used to spend 6+ hours a day on the phone and it was an integral part of my job success. I couldn’t have lived without it and when I had to solve a problem I would prefer to pick up the phone and talk to someone. Not so much anymore. I think clearly part of that is the decreased amount of end user support I do on a daily basis. Part of that is how much I use instant messaging. The main reason: my severe distaste for playing phone tag.

Performance Evaluations and Goal Setting

One time years ago I had a performance evaluation that left me speechless. It was 25 minutes of being told I exceeded expectations in every area but one; my manager kindly requested I shave my beard.

Some time ago I had a performance evaluation that was entirely peer review, despite having no peers.

Two years ago I had a performance evaluation that resulted in a promotion.

But this year, my performance evaluation is the first one I’ve thought long and hard about in the days following. I usually leave those one-on-ones feeling like I’m doing well, better than average, and that I just need to keep doing what I’m doing. But this year, I wasn’t applauded for doing routine tasks that are in my comfort zone. I wasn’t applauded for being likable or friendly or easy to work with. I was expected to be easy to work with. I was expected to make quick work of routine tasks. I was expected to hit all my dates. I got a clear evaluation of the key areas I need to improve in. I didn’t like it at first. I don’t think anyone likes being told exactly how they are inadequate.

I remember the last time I felt like that: I was cut from the Varsity Golf team in High School. I hadn’t improved between my Sophomore and Junior year and someone else stepped up and took my spot. I worked with a golf instructor a few times over the next year and he showed me the flaws in my swing and gave me a new practice routine. It took hitting a lot of practice balls (at the range and on the course) but I played again as a Senior.

Good news, I’m not in danger of getting cut. My boss even mentioned that there’s really never been a time he’s come to me with a question and I didn’t have an answer or he came to me with an issue and I didn’t have a solution. But he’s going to give me practice in the areas I need to improve. My boss isn’t hesitating throwing me into the deep end. Every area of improvement I need to work on will be an area I will get plenty of practice in over the next year.  More good news, knowing where you need to improve makes setting goals easier. I’ve already purchased a few books on Amazon to help straighten out my work routine. We’ll see how well I adapt, changing habits can be hard, but I expect to get better in some of my weak areas. I’m glad to have a new baseline of my work performance rather than just being told “you’re doing fine”.