Sunday, October 11, 2015

A year in my (IT) work life

So it is currently performance review time at work. I never really enjoy this time - not because of problems but because it takes time away from the multitude of other items I am always working on.  I'm also not one to really want to toot my horn.  I also tend to struggle with self-advocating - that generally doesn't do much harm unless I am looking to make a change of some sort.

I will say that the performance review distraction has been a little lower the last couple years but only because I had started an informal time/task tracking method a couple years ago.  It isn't anything super fancy - a spreadsheet which has lists of tasks with rough time and tagged with common apps and whether it was operations, project, etc type things in support of ITIL tracking. Sometimes I wish I had more detail in my task descriptions but it gives me enough info to show what I work on and roughly how much time I spent.

Anyways, just documenting the breadth/variety of stuff I ended up doing over the last year.  This turned out to be a pretty typical recent year other than the organizations location changes (both people and data center).  I'm trying to break this up into somewhat logical groupings but that isn't always easy. Some of the items are really minor stuff and others are substantial projects involving multiple teams/groups.  I've also limited the amount of detail I've provided but I hope it provide enough for someone to get a feel for what my position requires. 

A note to those that are looking to get into the IT field - I often find that titles don't accurately reflect the expected scope of duties. The smaller the organization or the less IT focused the "organization/product/service" the more I find this to be true. I'm not saying that is bad but make sure your expectations and the organizations real needs are compatible.
  • Department
    • Support the data center moves
    • Support the consolidation of employees to a new location across town
    • Proposal for a couple infrastructure/workflow/business process changes
    • Research some security issues
  • Team
    • Increase application build and deployment automation 
      • Jenkins/Artifactory/Subversion/scripting
    • Jenkins patching/updates
    • Batch job maintenance
    • batch email list rules/filters
  • Subversion
    • Setup some on-checkin email notifications for one application
    • Update service side workspaces to not ask to save/store passwords
    • Setup user/consultant access to various repos
  • Multiple systems
    • Tomcat & JDK upgrades
  • Blackboard
    • A litter research on items requested by lead/administrator
  • Sharepoint
    • Research user/account issues at admins request
  • Other teams
    • Provide some general support to team responsible for HighPoint Mobile application
    • Recompile/configure Apache server/PHP per new required modules needed by HighPoint Mobile upgrade
    • Provide some simple Subversion support/training/knowledge transfer to admin
    • Provide Java/Tomcat setup/knowledge/guidance to another team
    • Provide support to local team/administrator of integration with Dept of General Services
    • Provide support to local AD administrator by setting up data/infrastructure to replace a shared resource domain file sharing setup with something else.
    • Research data issues for another team after a large systems DB was corrupted and crashed with recovery from backup
    • Research other/regular data issues related to ERP and other apps/integration
    • Provide admissions application info to data warehouse group
  • Admissions Application
    • Server replacements
    • Operations and support activities.  Large number of direct college staff  functional question after the functional group quit/retired/transferred or otherwise let go.
    • Code changes to move large amounts of static text/prompts from property files to the database.  This reduced the need for deployments which were replaced by simple DB updates.
    • Other technology upgrades; Primefaces
    • Research and implement batch jobs which identify bad ERP setups and notify responsible groups.
    • Off-hours support during normal ERP maint which affects this application
    • Off-hours support for upgrades/maint
    • Staff authentication method changes - initial R&D
    • Changes to password generation/complexity requirements and processing
  • Legacy portal
    • Authentication method changes
    • Server replacements
    • User level security changes supporting split of HR from existing ERP.
    • Minor customizations/additions to content/branding
    •  Password handling changes 
    • gmail/CAS setup - convert from prior methodology
    • R&D for availability of new portals user security questions to help desk along with integrations to maintain that data
    • off-hours support/maint
  • Wizard
    • some support; research and help resolve various issues. 
    • Provide help answering questions from team/consultants working on rewrite.
  • New portal
    • On-going project support
    • Implement JSF based self-service user lookup and password reset tools
    • Another gmail/CAS custom code setup
    •  Research the large number of data issues
  • WES project
    • Provide admissions app logic/processes/metrics/support to development team
  • Integrations
    • Implemented/deployed dev/test/prod ServiceMix environments
    • Implemented several integrations involving DB to AD, DB to ERP type stuff
    • Implemented integrations to monitor/report issues to integration system status
    • Continue research, prototype and final implementation of ways to increase system capacity/stability/availability/performance/reliability.
    • Password expiration / grace period implementation
  • MS FIM
    • Help primary admin with normalization across the dev/test/prod environments.
    • Provide some additional operations/support help to primary admin
    • Implement custom C# DLL for use with FIM/PCNS 
    • Design/implement DB objects and process for the employee management agent
    • Rework some group handling to remove an unnecessary restriction in group membership for a specific user base
    • Support data setup for a college finance related back-office project
    • Add additional data into employee management agent for use by new issue tracking system
    • Some research into missing AD attributes on some users
Hoping Jesus blesses you and touches the hearts of those around you!
Scott

Sunday, September 20, 2015

Laundry room - vinyl floor, water filter and clothes hanger rack done

Finally done with all the vinyl flooring in the house. Yeah!

The laundry room is just a rectangle with only 2 cutouts (dryer vent and 1 AC/heat vent).  Laying the actual floor went pretty easy.  We still ended up tracing the room and cutouts onto paper and using that to cut the vinyl outside. This got us close but we still had to do a little trimming here and there once we got it down.  The contact cement like glue we used in the bathrooms worked ok here - better than in the master bath. I'm still working on the threshold - that is always a challenge I am finding.

Here is the final floor result:




The main challenge with this room was the plumbing I did first.  I'm a bit tired of plumbing now.  The problem started with the cold water valve to the washing machine - it was "broken" and could not be shut off.  Replacing the flooring required removing the washing machine and dryer but that was difficult with the broken valve.  I decided to replace the existing gate valves with 1/4 turn ball valves instead of trying to repair the seal in the existing valve (which is what I found was wrong).  To replace the valves, I had to cut a hole in the wall to cut off the existing copper tube. I initially decided to use "Shark Bite" style push-in connectors to connect the new valves (with copper stubs out that I solder on) to the existing copper. I ended up changing that but I'll explain that in a minute.  Once done though, I decided to make a small wooden panel to allow future access to the PEX/copper connections instead of just patching it back over.

My wife has been wanting a water filter on the cold water supply to the washing machine.  I figured this was a good time to install that since I was always messing with the plumbing.  I have tools to install PEX tubing so I used that along with a few appropriate copper fittings and a shark bite fitting to install the water filter on the wall next to the box containing the washing machine valves.  On my first test after installation, I turned the water on too fast and the shark bite fitting at the cold water inlet to the filter popped off and sprayed everywhere.  It was at that moment I decided to go back and remove the 3 shark bite fittings and use PEX, Apollo pinch clamps and solder-on PEX to copper fittings.  It took well over an hour to get the 3 shark bite fittings off and my hands felt like mush when done.  I had to go under the house to solder on copper to PEX fittings - I decided to install those on a horizontal section since I didn't trust my uphill soldering. It took about 3 hours or so to get it done; would have been less but I had to cut off the clamps on my initial PEX work and redo it all. I used new sections of tubing since I wasn't sure if crimping the clamp in the same spot is OK or not - better safe than sorry.  With the PEX in place and correctly tightened threaded connections, the water filter works fine.

A few details on how I mounted the water filter.  I took 2 copper coated straight pipe hangers and bent them on my vise in a stair-step shape (2 bends).  I then enlarged a middle hole in each one to an appropriate size to go over the pipe/connection on each side of the water filter.  I'll have to go back and get some pics at a later date.

Here is the water filter setup below.  I added a couple bolts to tie the 2 brackets together which helps stiffen things up and keep it from moving much. I do need to be a touch careful since the filter housing will swing a bit forward/back - maybe I will add a small attachment to the bracket to the filter top since it does have some appropriate holes on top for that.

 Another minor but unexpected need showed up after running a few loads of laundry - we now have a water hammer issue.  A quick trip to Lowes and about $10 for a water hammer arrester should fix that. 

The one you see here is: Water Hammer Arrester

 


Another detail desired by the wife was a place to hang empty clothes hangers again.  For this I bought 2 pipe hangers of the metal loop style with a straight section having some holes which are intended for fasteners.  The fastener holes include some which are 1/4" in diameter.  It just happens that I bought a 4' section of 1/4" steel rod which just fits in those holes.  So I cut the rod down to about 32" and cut off the loops from the pipe hangers - leaving just the straight sections with the small holes. I bent those into and "L" shape and screwed each using the long leg of the "L" to the underside of the shelf above the dryer about 31.5" apart with one end very close to the wall.  I then took the 1/4" rod and drilled a 3/32" through-hole in an end.  I fed the rod through the 1/4" holes in the short leg in each bracket.  The rod end with the 3/32" hole is near the wall and a small piece of wire was run through the hole and twisted to prevent the rod from slipping out of the brackets.

The original hangers early in the process.



Not a great pick but here I am drilling the 3/32" hole in the rod with the drill press.  I used a thin (just under 1/4") piece of scrap wood under the rod in the vice to both raise the rod to where the relatively short bit can reach and to provide a good place for the bit to penetrate into on the far side of the rod.

Here is what the final product looks like with a little paint on things. I could raise it about 1/2" but as is only 1 style of hanger rubs a little on the dryer.


Hope you enjoyed..

God Bless!
Scott

Thursday, September 17, 2015

Apache Camel - sql component failure query limitation

While implementing a ServiceMix 5.4.0 integration (Camel based) I ran into a problem which I really should check into/report when time permits. 

The route is defined like this:
        <route id="processWidgetCreate-route">
            <from uri="sql:{{sql.selectWidgetCreate}}?consumer.onConsume={{sql.markWidgetCreate}}&amp;consumer.onConsumeBatchComplete={{sql.selectWidgetCreate.batchcomplete}}&amp;consumer.onConsumeFailed={{sql.markWidgetCreateFail}}&amp;consumer.delay=60000&amp;maxMessagesPerPoll=100&amp;consumer.useFixedDelay=true"/>
            <to uri="bean:widgetBean?method=createWidget"/>
            <log message="${body}"/>
        </route>


On a failure condition, a SQL similar to below is pulled from a configuration file via keys as indicated in the route above.

        update WIDGET_CREATE
        set processed = 'F', INITIAL_FAIL_TS = NVL(INITIAL_FAIL_TS, SYSDATE),
                    FAIL_CNT = (FAIL_CNT + 1)
        where  processed = 'N' and ID = :#ID

Instead of being executed, an error parsing the SQL was reported. On review of what was passed to the database I noted that the "+" above in the query was missing. What appears to happen is that during replacement of parameters or other Camel preprocessing the "+" is simply removed for an unknown reason.  

The work-around for this problem was simply to replace the "+" with a subtraction of a negative as shown below.

        update WIDGET_CREATE
        set processed = 'F', INITIAL_FAIL_TS = NVL(INITIAL_FAIL_TS, SYSDATE),
                    FAIL_CNT = (FAIL_CNT - -1)
        where  processed = 'N' and ID = :#ID

Hope this helps someone else.