Using JBoss JMS with IBM Sterling OMS 9.1

Answered this question today and thought someone else might find it helpful. It's a little lean, but it isn't meant to be exhaustive :)

We run our JMS messaging services on JBoss EAP 5.1.2 or 4.3.0 (mostly 5.1.2). We also use JBoss 5.1.2 as our application server for IBM's Sterling OMS (formerly SMCFS, formerly Yantra). 

The question I had were caveats specific to using JBoss for JMS services:
  1. Run it on RedHat Enterprise Linux
  2. Move the persistence to a DB (don't care which one... no Hypersonic for high volumes!)
  3. Don't run the 64bit switch in run.conf unless JBoss is using more than 4GB of memory (usually no reason for that just for JMS)
  4. Slim JBoss down to just the messaging components (your mileage may vary!)
  5. Don't install JBoss as a package... install it from a tarball, because RPMs are terrible for this case
  6. Don't touch the servers that come with JBoss... pick one, copy it to a new name and make slimming changes and deployments there
  7. If you ignore #5, understand that #6 will present some challenges because of the way links are created to packages... IOW, you will be in symlink hell!
  8. Watch out for setting the FullSize, PageSize and DownCacheSize parameter too high
  9. Don't co-locate messaging and ear deployment (specific to deploying the Stering OMS EAR to JBoss app servers)
  10. Move default log location to a different physical volume
  11. Log at INFO or VERBOSE while testing in the beginning
  12. Allegedly, and according to the IBM docs, queue names should not contain a "." (ours do, and we don't think we see issues with it)
  13. Also allegedly, they should not use XAConnectionFactory (use ConnectionFactory instead... XA is a two-phase commit... though we use XAConnectionFactory with no apparent issues)

I'd love to share experiences with clustering JBoss for JMS messaging, but we ain't done that yet.


The "One Page Meeting" Proposal

Humbly submitted...

I call it the "One Page Meeting" proposal.

1) Every meeting deserves a one page agenda
2) The agenda will not exceed one page
3) Items not on the page will not be discussed
4) No other materials are permitted!!!
5) One attendee must update and distribute an updated one page after the meeting

#4 is the key. No 10-page issue list. No 20-page project plan. No 30-page PowerPoint. Fit it on one page, or you can't discuss it.

A meeting is any collection of 3 or more employees who review past actions (where are we?) and assign future actions (where do we need to be?) in support of a goal. Don't confuse it with training, presentation or one-on-one with your manager. It's not a brainstorming or solution-finding session, either. Those are great as long as the time blocked on your calendar clearly indicates that as the purpose.

Look, the other things are needed. 20-page project plans with associated Gantt charts don't just up and create themselves. But those still usually have one author with major input from, what, one other person?

Think about the last time you had to attend a 20-page project plan review:
- Would your part have fit neatly on one page?
- Did you have to sit through the other 19 pages?
- Was your work any better for that experience?
- Did you get any meaningful takeaways from that meeting?

Now think about the last 30-page PowerPoint viewing. Isn't that actually what we call a presentation, meaning you're just there to absorb some information, not to take away action items?

Will some smart guy say "well, I'll just do mine in 6-pt Helvetica with no margins to fit on one page." Challenge accepted! I'd rather attend a meeting that aspires to adhere to a ruleset, even if it's tongue-in-cheek!

Maybe meetings are better in your company. I wager that they aren't.


2010 Resume Update

James A. Stagg Jr (Jim)
180 Carriage Circle | Stockbridge GA 30281 | 770-474-3499 | jstagg@gmail.com

Key technical skills:
- Sterling MultiChannel Fulfillment System (aka Yantra) 8.0, 8.5 and 9.0
- Microsoft Dynamics AX 4.x ERP system (aka Axapta)
- JBoss 4.x application server
- Jitterbit 3.x ETL tool
- PROS Pricing Solution Suite
- Windows and Linux system management (primarily RedHat Enterprise Linux)
- EMC VMware and Microsoft Virtual Server
- Perl, bash, SQL scripting

Sep 06 to present: Application Administrator, S.P. Richards Co., Smyrna GA
Support "next generation" order management system project; manage Axapta order management system for $130M/yr subsidiary; intercede in projects as required by VP of IS
+ Led $1M subsidiary ERP system integration project
+ Expanded toolset to include ETL work in support of pricing, industry reporting and pattern-based analytics projects
+ In 2009 review, CIO notes "communication, customer sensitivity, professionalism, and sense of urgency are all strong suits"

Jan 01 to Aug 06: Senior Systems Administrator, S.P. Richards Co., Smyrna GA
Designed, implemented and supported Windows solutions; assisted in budgeting; mentoring junior team members
+ Led $1M legacy system replacement project
+ Led $250k subsidiary network and hardware migration project (Distinguished Service award for efforts)
+ Led $50k Canadian subsidiary network migration project
+ Designed and implemented Windows disaster recovery and backup systems and strategies

Sep 00 to Dec 00: Systems Administrator, Dealergain.com, Norcross GA
Designed, implemented and supported Windows solutions (company ran out of funding in Dec 00 and dissolved in Mar 01)
+ Implemented patch management strategy for Windows systems
+ Researched potential of open source platforms in support of core company functions

Apr 98 to Aug 00: Systems Administrator/Web Designer, Expo.net/Clearbuilt Technologies, Duluth GA
Designed, implemented and supported FreeBSD, Linux and Windows solutions; worked directly with potential and existing customers to define requirements and provide quotes
+ Involved in experimenting with business ideas for start-up concept Websitesfast.com
+ Gained proficiency with FreeBSD system administration

Oct 96 to Apr 98: Systems Analyst, Sportime/School Specialty, Norcross GA
Supported Windows, Apple Macintosh, Novell and AS/400 solutions; managed pre-printed forms supply
+ Created first company web sites for each catalog brand

Aug 94 to Sep 96: Graphic Designer, Sportime/School Specialty, Norcross GA
Produced catalogs, special projects and advertising; supported
+ Managed technical components of $150k catalog desktop publishing system project
+ Created pre-press co-ordinator position, resulting cost savings of $90k annually

Sep 93 to Aug 94: Art Director, Fulton County Daily Report, Atlanta GA
Managed team of 5 on daily and special projects deadlines; coordinated with editorial staff on daily front page layout
+ Managed layout and publishing of "1994 Georgia Bench Book" (first time the project was handled in-house)
+ Mentored and trained a Press Assistant into becoming a key Art Department team member

May 92 to Aug 93: Assistant Art Director, Fulton County Daily Report, Atlanta GA
Created and managed special projects (books, special supplements, magazines) and daily newspaper deadlines
+ Managed art department team for 6 months during Art Director search
+ Implemented phase two of Apple Macintosh newspaper desktop publishing systems

Sep 90 to May 92: Art Assistant, Fulton County Daily Report, Atlanta GA
Produced daily legal notices section and designed print advertisements
+ Implemented Apple Macintosh component of newspaper desktop publishing system


Happy Path: Exchange/Blackberry Email Filtering

As lame as it sounds, I think one of the best things I've done in the last two years isn't a project. It's my work email filtering via Exchange and my Blackberry. It's far from perfect, but it works astonishingly well for me.

In my case, the definition of "works" is that I see high-priority information more easily. I don't waste as much time as I once did on sorting, filtering and reading to get to what matters the most for the items at the top of my priority list.

Every so often, I'll describe it, and a light will go on for the listener. And that listener is usually someone who gets 500 messages (on a good day... bad days can have MANY more), most of which are, well, just pointless to read. Sometimes, the listener has each one of those pop up in Outlook and alert on a Blackberry. Quel dommage!

I'm no rocket surgeon, so it can't be that I'm all that bright. Mostly, I just culled the ideas from other folks. Here's my version:
1) My Blackberry will only alert for "Level 1" messages
2) Messages CC'd to me NEVER go to my Blackberry (BCC does, though)
3) Messages "to" me get filtered extensively
4) Other oddball rules and practices


Dolly Madison "Divide By Two" Fail

Can't divide by two? Dolly Madison has your back! Only they can't divide by two, either. This is not the best thing I might choose to put in my system. Mathematically-challenged, high-calorie snacks are way worse than just high-calorie snacks.

Let's count the foibles:
  1. If you eat one, it's 200 cal. So the 410 cals on the pack? Either they're expecting a lot of icing stiction to the package, or they expect me to eat the package. One of those alternatives is wholly understandable. The other is slightly alarming.
  2. One roll has no trans fats. Two rolls have 0.5g trans fats. Eat the right one!
  3. One roll has 6g of fat. Two rolls have 11g of fat. Again, choose wiseley!
  4. et cetera

So, I have a math fail, too. I suggested counting the foibles, and stopped at 4. Clearly, my Dolly Madison snack consumption is taking a toll.

Does Anyone Remember How Powerful DNS Can Be?

I'm not talking about the handful of sysadmin gurus. I mean everyone else from developers to the rest of system and application administrators.
You don't need to name a machine after what it does. You can. But you don't have to. And chances are good that if you own that machine for several years, it will become many more things.


What the fudge is a CNAME?

It's a name that points to another name to get an IP address resolution. Think of the phonebook. You look up "Euripidies Flintstones" to find a phone number. "Euripidies Flintstones" would be considered a DNS A record, or a mapping of a name to an IP address.

Now imagine we had a more sophisticated phonebook that knew Euripidies usually went by the less formal first name "Phil." Looking up "Phil Flintstones" would refer you to "Euripidies Flintstones." In this case, "Phil" is the CNAME.

You have a non-production machine that hosts your dev, qa and uat environments for a web application. The box (we'll call the box "bob" for the sake of argument) is older but perfectly serviceable. And you really don't want to rename it for a number of reasons. And that means you already have a DNS A record for bob.domainname. The box name is unimportant. Name it whatever you want. But if you have to access a major resource on the box, create a CNAME for it.

You could put all your environments on different ports. Heck, you could do what most thoughtless folks do and just address it by IP (oooo, now that's not prone to creating extra work down the road!). Or, you could be one of the 1-percent who take this advice.

bob.domainname's cnames:
devweb.domainname -> points to bob.domainname
qaweb.domainname -> points to bob.domainname
uatweb.domainname -> points to bob.domainname

Web apps are really easy for this. With the magic of IP-less hosting, asking the web server to talk to "devweb" will send you to the right web service.

Take a production example. You have a file server already named "myfiles.domainname." You're just big enough that you plan to add separate database and mail servers. But you'll colocate them on the file server to get started.

myfiles.domainname's cnames:
sql-01.domainname -> points to myfiles.domainname
mail-01.domainname -> points to myfiles.domainname

Why bother? Well, you've already configured numerous clients to talk to myfiles for file shares. When you install your mail server, you're going to have to direct them to something. One day, when you create a dedicated mail server, you have to go touch every client to change from "myfiles" to "mail-01." Or you could just edit the CNAME for mail-01 to point to your new mail server when you finally install it.

The database server can be an even bigger deal. You'll probably write tens (or hundreds) of small and large programs that access the database server. If you leave it as "myfiles," all those applications will need to be changed when you install your dedicted database server. Or, you could use a CNAME and repoint it later with a lot less fuss.

You don't need them for every server and every minor case. But they are an immensely useful tool in your sysadmin arsenal.

CNAMEs, folks. It's the wave of the future, only it was envisioned in the early 80s and ignored by scores of IT professionals.

By the way, here's a useful external link with a simple CNAME explanation: http://rscott.org/dns/cname.html

(One caveat... some Windows services rely on more than a DNS name. They expect to find a WINS name as well. While you can create custom WINS entries, and they're usually successful, Windows file services are notoriously picky about the actual system name... thanks Microsoft!)


On Being Action-Oriented...

Quick reflection on being action-oriented...

I did a small, boneheaded thing today. Details aren't important. I just did half of something and forgot about the other half. And it's a task that should be handed by a functional person because it's related to customer config data.

(If you're scrunching your nose and furrowing your brow about that, there's usually a dotted line in larger IT organizations that separate "applications" and "data." I can help you install Excel. I can teach you how to use it. I might even show you a formula or two. But I really should leave it up to you to maintain your own spreadsheet, even if you ask me nicely to tinker with it)

All in all, it's a pretty innocent mistake, and everyone is OK with it. In fact, it was barely more than a fleeting thought in a long conversation.

But it made me reflect on times I've been called on the carpet vs. times I haven't. And the times I've been called to task are almost universally times where I haven't done something (for any number of good or bad reasons).

In other words, any time I've made an error of action, it's generally been forgivable. Good thing to remember.


Tonka Mighty Rescue Vehicle

Found at an antique shop between Peachtree City and Sharpsburg. It's a 1975 or 1976, and it has all three figures and the gurney! Condition is fair, but at least it's complete. If you aren't familiar, the Mighty series are pretty big. This is about a foot and a half long.

Godspeed, Chocolate Cowboy

Seen on I-285 during my commute. I think the picture says it all...


What Started Your Geekery?

From whence came your geekish tendencies? Were they made, or did they just happen? Did they magically manifest in your mind in the womb?

At dinner the other night, we discussed a particularly unpleasant way to be introduced to technology:
A) Go away on vacation for two weeks
B) Return from vacation to find a PC on your desk
C) Find large manual to be read on your own time
(the year was 1992, and this was not uncommon)

My mother looks over at me and my father and says "The two of you taught yourselves. How did you get started?"

My father and I look at each other, the table, back at each other, and shrug. My father says "well, I was just there. I don't really know." Now, he's being a bit modest. He was one of the first people at Delta to have a PC, but only because he bought his own (one PCjr for his office and one for the house in 1984).

I started using the PCjr for word processing, Flight Simulator, Gato and Rogue. I wrote tons of papers in junior high, high school and college, printed in dot matrix goodness.

But it wasn't my fist computer. I had a VIC-20 with cartridges for Gorf, Turtle Programming and a 16KB expander. I also had a cassette tape storage system and a printer, both of which were woefully underutilized.

Prior to the VIC-20, I'd used a TI-99 in 6th grade for some sort of pirate text-based adventure game. I haven't a clue why the VIC-20 had appear where the TI-99 did not, given that the TI-99 was way more powerful. It's not even like I wrote many programs. At geek camp (as I think of it now) in 6th grade, most of our computer skills course consisted of us putting characters on the screen just so we could watch that big, fat VIC-20 cursor "eat" them when we held down the backspace key.

Before that, I had an Atari 2600. Preceeding the 2600 was Asteroids, or as I think of it, the single greatest video game ever. And my freind's Oddesy console... we'd swap his Oddesy for my 2600 for a few days at a time. But is that where this started? I'm not sure that it did.

I think it happened before that. I remember being fascinated by my father's baby blue Smith Corona electric typewriter. It didn't hurt that the kid next door had all manner of cast-off devices from his father's machine shop. Heck, I'm fairly certain a broken Sinclair would have been sufficiently entertaining to me.

I vividly recall the brightly-lit panels in Space: 1999's control center and Eagle. Star Trek was a given, but it was more on par with Emergency! as an adventure show. And I picture in my mind as clearly as if it were yesterday when I proudly announced to my second grade class the fantastic new show premiering that night: Battlestar Galactica.

I could go on for pages (Micronauts, Star Wars, comic books, whatever). Was I made into, or did I just happen to become, a geek?