The Hardest Journey – Losing A Spouse to Cancer

4:43 PM in personal growth and development by Vic Russell

Recently, my wife was diagnosed with adrenal cancer.  It is a very rare form, effecting 1-2 out of 1 million people.  As one might expect given the number of people effected, there is little research on this strain of cancer, and only a single medicine that offers a little hope for the afflicted.

The one drug that treats this form of cancer – Mitotane (Lysodren).  It is not a cure, but a way to inhibit the spread of the tumor that forms on the adrenal glands and, hopefully, prolong life.

One of the most difficult events was accepting the diagnosis.  The doctor actually called my wife at work and told her, over the phone, that she had cancer.  That was  a tremendous blow, and, a very unprofessional way to inform someone that their life has changed forever.  We, obviously, did not ever visit that doctor again.

When we visited the oncologist that was referred by the above doctor, he too was very direct, insensitive, and offered absolutely no hope or suggested courses of treatment.  He had us go to the appointment just to tell us that he could not help us, and referred us to another doctor.  The total time wasted seeing the first doctor was approximately 2 weeks.  When this doctor read my wife’s case file, he should have referred her to the specialist, bypassing his visit.  Our suspicion is that he never reviewed her file until we were in his office.  We later discovered that this doctor was new and just out of residency – not a good situation for him or us.

Once we did see the proper specialists, his words were not comforting.  My wife’s cancer was advanced (stage 4) and had metastisized to her liver and other vital organs.  His options were Mitotane or an experimental study group that used two forms of chemo – which would have resulted in sickness, loss of hair, and other negative side effects.  We opted to just use the Mitotane.  This did cause her much discomfort – it is a chemotherapy drug after all – but far less disturbing than the experimental treatment would have been.

Soon after we returned with the bad news – less than a week – my wife injured her foot ever so slightly – she bumped it on the couch.  Within 2 days, she was in the hospital with a severe skin-muscle infection that resulted in a large portion of her skin on her foot to be removed.  This was a very painful procedure, and even more painful after given the vacuum that was required to pull the lymph fluid away from the wound to promote healing.  We were filling 5-7 of these canistered a day – about 20x level above a ‘normal’ wound situation (1-2 canisters a week).  Her tumor had blocked the flow of lymph fluid, resulting in edema of her lower extremeties – her legs were swollen to about 3 x the normal size, which made walking near impossible.

The wound did not heal, and continued to get worse.  As a result of the Mitotane, my wife developed an ulcer.  One evening, she began to cry out in pain.  I thought that this might be the end.  We called paramedics, they arrived, and they drove her to our local hospital.  They handled the situation with tremendous professionalism and empathy for Shari, our children, and myself.  In route, the paramedics called the hospital to get permission for a dose of Morphine – which was politely denied – an abysmal commentary on our current state of medicine – pain + a terminal illness should equal empathy and special consideration – which it did not.

Once at the hospital, they finally began to administer pain medication.  She was given 3 doses of 2mg Morphine – which did nothing to ease the pain.  Finally, they administered Dilaudid and within 10 minutes, the pain subsided and she became very aware and awake.  We talked about life, our children, and the realization that our time together would not be much longer.  At 1:30AM they moved her to her room, and I left to be home with our children.  This was the last time we actually shared meaningful, lucid time together.

One of the medicines that they gave Shari was a patch containing Fentanyl – a potent narcotic with hallucinogenic side effects.  I did not understand this effect and was very concerned that Shari was ‘out of it’ for the duration of the visit.  After two days in the hospital with not a single doctor visit (??? it was a weekend and no doctor was available ???), they finally performed an endoscopy to determine the cause of her pain, they gave her the requisite meds to heal the ulcer.  This worked, and worked for the next month.  The drawback of this visit was that a second procedure was required for her foot to remove more necrotic tissue.  This was only about 5 weeks after her first surgery.  This was very difficult since she was, by now, very weak.  The cancer was not ceasing its progress, and her abdomen was now noticeably distended from the mass.  This stay in the hospital was 7 days.

Once she returned home, she recovered quite quickly emotionally, but was never quite completely coherent.  The medicine and her inability to consume enough food to sustain her resulted in a very fast decline.

About two weeks after her last hospital visit, we finally submitted and signed up for hospice.  A week later, she passed away, in my arms, fighting for her last breath.

This event was surreal – Shari was diagnosed on March 11th with adrenal cancer, and died on June 12th – my youngest daughters birthday – a lifelong burden for her.  This was a very fast disease, and one that probably would not have been diagnosed early enough for a successful outcome.  The symptom that was apparent and obvious was very high blood pressure (200 / 132 !).  However, the bp meds immediately caused a reduction in this symptom (within 2 days), so any further analysis might have been thwarted by this successful administration of BP meds.

It is early October, and we are still fighting the loss of our most precious companion – my children’s mom, and my life partner.  Each day is different – one day we are content – even happy – working together;  the next one or more of us are depressed, sad, and thinking about what could have been.  We miss her very, very much.

Our children are tremendous individuals – and very strong.  They are handling this loss with dignity and resolve – to see that her memory and life was not in vain.  Family and friends have supported us, both emotionally and financially, during this struggle.

Some say that God never gives anyone a challenge that they cannot overcome.  For myself, this is probably true.   For my children, I am hesitant to agree with this rather simplistic analysis.  Time will tell, but for now, we are all in a state of limbo – waiting and working towards that time when we can begin life again, without the constant pain and memories of one lost.

Throughout this ordeal, our Faith has been tested.  Every time we would ask ‘why Shari, why mom?’, we would not get an answer.  I would gladly have switched places with her – we have two daughters and one son – a mother is so very important, and she was such a wonderful mother.  Shari was a faithful wife, a loving mother, and a fun person to be with – someone who loved to laugh and made others feel at ease.  She never faltered from being who she was – a strong and wonderful person – up to the very end.

For those who have endured the loss of a loved one, my heart goes out to you.  One cannot comprehend the significance of such a life-changing event unless they have experienced it.

God Bless,

Vic.

Agile Development

7:33 AM in management, Programming by Vic Russell

I just finished a short run using the scrum method of Agile project management:  stories, retros, sprints and all.   It was a very educational experience since I had never been a part of a project that used ‘formal’ Agile development.

- First, Agile sounds cool. There is an inherent power and affinity to like the word ‘agile’, to say ‘I am agile’, ‘we have an agile development team’, ‘our business model is agile’.  The power in a word cannot be understated – business wants to be agile; developers like to be seen as agile.

A few operational definitions. Agile software development is short term goal oriented – component directed. The idea is to get a bunch of software developers working on a project by picking components (‘stories‘) from a master list of ‘backlog’ items and completing those individual components within a short period of time – called a ‘sprint‘. The typical goal of the sprint is a complete sub-component, one that can be demonstrated during the ‘retrospective‘ as a stand-alone element.  Some shops even demand that these components are ‘go-live’ ready.

The first deficit with Agile project management appears when there are components that are comprised of multiple smaller sub-components that are not separated into different stories. For example, a form page.  A form page is composed of the following: the HTML wrapper, CSS formatting, the form proper, business rules for managing the form input/processing/output, form content validation and security, other user interface components, data definition/acquisition layers (db abstraction/ORM), and presentation components. There may be Ajax components to the form, as well as validation, and visual/auditory Fx via JavaScript.

The failings of Agile comes to light where ‘expectations’ are concerned. Business expects a completed components at the end of a sprint. Anyone who has designed and developed a full blown web application (as opposed to a ‘site’, ‘page’, or ‘component/widget’) understands the iterative nature of such a ‘process’. The final result is most often a group of components that can be reused to simplify program maintenance and improve program performance through re-factoring to optimize the total application developed over the duration of the project.

I think the best way to compare Waterfall with Agile is that Agile is concerned with ‘events‘ and waterfall is concerned with the flow of app development that results in a completed product – the  ’outcome‘. Conceptually, both are correct – an app is a bunch of ‘events’ that interact to produce some result, and, an app is a business process that must be satisfied through a series of components that elicit a specific outcome, or ‘result’.

Sprints are like a course that is made up of a bunch of quizzes with no final exam.  It is the accumulation of grades over the course.  A waterfall project is a course with NO quizzes - only a final exam, and, maybe a mid-term.

Waterfall methodology emphasizes pre-defining all components so, in theory, the development portion is very short lived.  More time is invested in defining the components and laying out the look and feel of a site than is actually set aside to code them.  Planning is everything.

What often time occurs using the waterfall method is, in Agile parlance, a bunch of backlogged items become evident very near the end of the project.  For developers, it becomes a ‘marathon’ to complete the project on time – often times with few, if any, functional components to demo for stakeholders (ie business owners).

Other deficits in the waterfall methodology are scope creep and the effects of incorrect estimation of build time (coding & system administration).  Since the planning portion is so long, items are often added that should extend the duration of coding, but seldom do.  Most projects have a go-live date that is seldom altered, even though the scope of the project increases.  As a component is added or altered, reality would dictate altering the estimated due date – but that seldom happens.

<psych aside>Human nature, for many people, dictates that we want to satisfy the needs of others – particularly superiors or people who can advance our careers.  The waterfall method plays on that human tendency to the advantage of the stakeholder at the expense of the development team.  It is difficult for many of us to say an unequivocal ‘NO’ to the VP of marketing or sales when they have a ‘really good idea’ for a feature that will add a developer-month to the project.  The problem arises when the project is past due, and that feature that the VP loved so much three months earlier in the planning stage is all but forgotten – it no longer carries the same emotional power it did earlier.  All that matters now is that the developers are late delivering the project.</psych aside>

Pure scrum can be effective when modules are very compartmentalized – there is little co-dependence on other modules.   It becomes nonsensical to use Agile when the overall system has many dependencies UNLESS there is an agreement that modules will be enhanced and integrated at a later date when the ancillary modules that, say, perform form validation, are complete.

When you get right down to it, Agile is a good way to reduce the upfront cost of a project and put most of the design and planning on the developers – which is, in my opinion, a good thing.  A less is more approach that can be effective for the largest project, so long as the stories reflect reality.

vr

Linux history – add time and date stamp to output

9:50 PM in Programming, System Administration by Vic Russell

The Linux ‘history‘ command is very beneficial when trying to debug a system, remember a previously executed command, or keep track of recent steps taken in a multi-command process.  One omission to the default setup is the time and date the command was run.

There is a file in the home directory of all users called the .bashrc file (the period is not a typo – it is a hidden file).  Add the following line to get the ‘history’ output with a time and date stamp:

export HISTTIMEFORMAT="%F %T "

You can enter this at the command line and then run the ‘history’ command to view the new output.
Read the rest of this entry →

When NOT to do a complete upgrade of a site…

7:38 AM in management, Programming by Vic Russell

To everything there is a season, and a time to every purpose under Heaven.

There is a time to sow, and a time to reap…

This Biblical verse is true in agriculture, personal life, as well as merchandising and marketing.  You can have the best new ‘feature’ to your web site, but the timing of the release should be carefully considered.  If your feature is of minimal impact to the navigation and overall familiarity (look and feel) of the site, then there is little risk in implementation.  If, however, you are planning a complete redesign of the presentation and business logic layers, you may consider the time of year for the release.

Why: One retail chain that I had worked for decided that their website needed an upgrade.  That was an understatement - the existing site was very dated in both style and functionality.  Many features that the underlying web framework offered were inaccessible due to a prior rushed upgrade that ‘broke’ what is a very robust J2EE-based framework.  Business and IT knew that a complete rewrite was the only way to efficiently keep the site extensible, maintainable, and scalable.  The initial launch date was early September, with a fudge factor of a couple of weeks.

As the months of planning a preparation, design, coding, and testing went by, it was clear that the target date would be missed – by about 2 months!  That brought the time of the upgrade to the apex of annual holiday sales season.  While this may initially sound like the perfect time to release the site to the customer base, a little more thought might suggest that the opposite is true – it may be the exact wrong time.

Read the rest of this entry →

Web Design and Development Links

2:18 PM in Programming by vrussell

Links to very interesting and useful sites that will help inspire, teach, and inform.

Design:

Smashing Magazine – User Interface concepts:  http://www.smashingmagazine.com/

Zen Garden – examples of how CSS can be beautiful:  http://www.csszengarden.com/

Design and Development:

SitePoint - amazing JavaScript and CSS references : http://www.sitepoint.com/

Read the rest of this entry →

Content Management Systems using PHP

11:57 PM in Uncategorized by Vic Russell

Been testing multiple PHP CMS systems these past weeks.  Joomla, WordPress, Mambo, MediaWiki, and Concrete5.  They are all capable systems, they all have their quirks, and have performance issues on my development system.

This dev system is an AMD Duron 1.8 GHz with 512MB of RAM  running Fedora Core 9 with the LAMP stack, and Apache  Tomcat5 Java app server.

The one interesting difference is the administrator modules.  Adding content is a breeze in Mambo, with granular control over most content attributes.

  • MediaWiki: This is the software that powers Wikipedia. It is powerful, extensible, and is what it claims to be – a wiki engine.   I guess it could be a CMS, but I am debating using this for general site management functionality with so many more powerful CMS platforms to choose from.
  • Pros: A very powerful wiki platform that runs on any platform that supports MySQL and PHP.
  • Cons: Having to edit the .php file that contains constants to result in changes to the pages.

PHP verus Java J2EE – with some Python Accolades

8:23 AM in Frameworks, Java J2EE, Linux, PHP, Programming, System Administration by Vic Russell

The ongoing debate by advocates in both camps is legion.  There are proponents of the scripting (PHP) model that argue time-to-go-live is much faster using php than java.  The Java camp argues that such a statement only makes manifest the PHP advocates ignorance of the Java web framework.

Having developed using both languages, I must say that while both are powerful, Java is hands down more powerful.  There is little you cannot do using the vast array of available libraries to perform the most complex task relatively easily.  And, there are plenty of Java developers in the world to man your project.

Having said that, Java development comes with a very high price.  Most Java-based web frameworks require a tremendous investment in initial training to learn how to use it efficiently – the available beans, servlets, and tag libraries, along with the methods and properties in each class, can be daunting.  The benefit comes once the framework is internalized by the developers – then productivity can be impressive.

PHP is a low upfront cost platform.  The language is intuitive, comprehensive, and interpreted.  Much of the overhead of Java is simply non-existent using a scripting language.

Request/Response – The nature of the web dictates that permanent connections are not established between site visitors and the server.  The stateless protocol that is HTML dictates this structural tenet.   A request is made by a client, the response is processed and delivered by the server(s).  The next request is processed, with the appropriate response, ad infinitum.  Any state fullness is handled by custom constructs – sessions or cookies are the most prevalent in use today.  Any process that can handle the request can deliver the response – the underlying program at the server does not matter to the requester, so long as the response is both valid and timely (<3 sec).

Creativity:  Java, in my opinion, takes away that freedom to quickly deploy a creative solution to a particular development challenge.  Instead of thinking outside the box, Java forces you to remain constrained within the rigorous rules of the particular framework. Since the Java app is running on the server at all times, awaiting a request to deliver a response, there is a great deal of ancillary work to do to add a single class or property.

Deployment:  In certain Java environments, you must compile the complete application, package it in a WAR file,  then move it into the application server ‘servers’ directory.  This can take many minutes given the complexity of the app and the power of the hardware and speed of the comm link.  A few simple changes can result in hours of debugging and testing.

Caching:  I would say that the biggest advantage in using Java is the caching mechanisms that are part of the web framework.  It is amazing how granular caching can be controlled.  There is an obvious performance benefit to this feature when running a very active site.

Testing:  When using an IDE like Eclipse, along with the appropriate plug-ins, one can be very efficient testing and debugging Java code.

Break-Fix: If there is one aspect of Java that really grates me it is the traceback output generated by errors.  Most of the info you get is useless; finding the key output is the challenge.  Once you get the hang of it, you learn to ignore 90% of the output.

Database Access:  Java’s JDBC interface and use of connection pools is time tested and reliable.  The connection open when the application starts, and are available immediately.  There are standard API’s for all major database platforms ready to be downloaded and configured.

Maintainability:  Maintaining an app is where most of the time will be spent on a live site.  If the application is difficult to code, it will be more difficult to de-code/debug.  Again, Java is a bit demanding when something goes awry.  To offset this challenge, very effective log4j logging should be used.

Infrastructure:  This is where the rubber meets the road – how long does it take to set up and configure a new server that can run production code and serve your customers?  Java is a real headache in this regard.  The amount of configuration files you have to update to meet the needs of your environment can take many hours to many days.  There are so many options that it becomes almost impossible to do so on the first try without the help of an experienced Java infrastructure guru.

PHP

PHP is a very comprehensive language.  There are many third party libraries that one can employ to perform the task that you need, that is, unless the build-in functions are sufficient.  I would argue that you can code 95% of a site using the built-in functions that PHP offers.  I do use the PEAR library, which is extremely useful as a DB API.

Testing is typically fast and efficient – particularly when you use Eclipse with PHP extensions or PHP Designer 7 as an IDE.   In PHP Designer 7, you can test multiple browsers without leaving the IDE.  It is a great product that is light-weight, offers Python, JavaScript, HTML, and support for may other languages.

Deployment: You copy your code to the server(s) and it is ready to be run.  That can be a single file or a directory.  There is no up-front compilation to worry about – just test the code and run.

When to use which language?

What skills do your developers have?  If they are Java guru’s, then a j2ee platform would probably be the way to go.  Those skilled in a ‘real’ programming language do not fare well when switching to a scripting language.  The complexity they are so used to is lost.

Also, a very high availability, high hit rate e-commerce web site can benefit from the J2EE framework.  The caching, db throughput, and stability of a java app (once you get it running) is impressive.

Other than the above, PHP has the advantages.  There is little argument against simplicity coupled with power.  Adding an additional os/web server VM to a (non-Windows) server farm is very inexpensive.  The added power and the redundancy of a new server is quite beneficial to any site that has a variable hit rate based on, say, time of year or time of day.

I have installed PHP on Windows and Linux systems very quickly.  That includes Apache 2 and MySQL servers that are required for a fully functional web site.  The WAMP server download (Windows, Apache, MySQL, PHP) takes about 10 minutes to download and install over a fast cable/dsl connection.

Another benefit is Microsofts support of PHP (and Python, another very robust scripting language for the web).  The CLR supports Iron PHP and Iron Python.  Your cost for adding a server will increase (MS Server License), but, if your team is .Net centric with a few PHP apps to support, this might be the way to go.

PHP is easy to learn.  With a decent mentor, a team can get up to speed in about a week.  Java can take a month to get to the same proficiency.  Now these are non-scientific estimates, so don’t flame this author for such an estimate.

Python is another language I have used.  As languages go, Python is beautiful.  By abandoning brackets and using spaces to format the various code blocks, the developer is forced into using good indentation, which results in very readable code.  Python is probably the best language for systems administration – think shell scripting on steroids.  It is blazing fast, robust, and has the advantage of many libraries to extend the base language – many coded in C/C++.  All in all, Python is the most enjoyable language I have yet to use, if that can be said about a programming language.  And, using IronPython and Microsofts CLR, you can use familiar IDE tools to develop.

If you want to get starting using Python, download the iPython application.  It is a command line environment that allows you to test simple to moderately complex code on demand.  A very effective learning tool and sys admin platform.

Scanner to Printer Error Resolved

8:51 AM in Uncategorized by Vic Russell

Experienced Nube Error

Yesterday, I was asked by my father to look at his scanner to printer connection.  He has a Visioneer 6000 scanner connected through his PC to an laser printer.  The button on the scanner that allowed him to perform a “Copy” of a document no longer worked.

After spending about 40 minutes checking settings, config files, insuring that the DLL’s needed were present, rebooting the computer a couple of times (Windows XP SP 2) and reading the sparse manual provided by Visioneer, I decided to go back to basics.  I turned the printer off then back on – magic!  Everything worked as it should. The printer had not been cycled for months – causing some handshake/comm error.

Lesson: Cycle hardware, check all input/output cables, before delving into a software error – no matter how much we know, the basics of troubleshooting should be followed to save time and effort.

Have a great week!

Finding A Job

5:02 PM in personal growth and development by Vic Russell

The current economic climate is making it more and more difficult for people to find a job.  The amount of wealth lost in 2008/2009 is staggering.  While our elected officials are stumbling to find a solution, it might be time for you to stop waiting and start working - for yourself.

Instead of getting discouraged, dig deep inside you and find that American Spirit that has prevailed for hundreds of years, propelling us into a country with one of the highest per-person productivity metrics and the highest standard of living.  Don’t let fear stop you from going forward, instead, direct that energy into positive actions that might just give you the edge to create your own destiny.
Read the rest of this entry →

Welcome to our world…

6:55 AM in management, personal growth and development by Vic Russell

Getting a job is tough in this economy.  Keeping a job that you have can also be a challenge.

What is the one common thread between all jobs and careers you have had throughout your life?  People.

Much or your success or failure up to this point will have to do with how you interact with others.

Do you communicate effectively with those around you?

Do you notice difficulties in your work life that are a result of miscommunication, poor communication, or no communication?

Through this forum, we will attempt to answer your questions about interpersonal communication and relationships.  To further help you on your journey, We may refer you to other sites that have a solution to or books that apply to your challenge.

We will attempt to assist you in gathering the information you need to successfully overcome, understand, and, ultimately, succeed in your career.

Life is a series of events that ultimately result in who you are at this moment in time.  By changing the way we interpret and react to events, past and present, we can reshape our ‘self’, and ultimately, our success in life.

Vic Russell is a lifelong student of management practices, personell management, motivation, and anything related to communicating with people.  He holds a BA Eq. in Psychology (Cognitive) from the University of Toledo.