"Save me, oh God, from people who have no sense of humor."
— Ludlow Porch

Installing Apache Tomcat on Fedora.

I recently posted this on the Fedora forum, but thought it might be good to post it here too...

to expand upon luqman's answer...

Install Tomcat by issuing the terminal command ...

sudo dnf install tomcat

Enter your password to allow sudo to give dnf admin permissions.

In case you wanted more information on setting up and using Tomcat once it's installed, here you go... These notes are for Fedora 24, but may work on older versions that have support for dnf. Otherwise try replacing "dnf" with "yum" in these instructions.

To install the webapps, run ...

 sudo dnf install tomcat-webapps

Then issue the command...

service tomcat restart

and enter your password in the challenge screen. Now you should be able to bring up a browser and navigate to http://localhost:8080 and see Tomcat running.


  • on Fedora 24, dnf installs Tomcat to /usr/share/tomcat

  • If you want to install the Tomcat management tools run sudo dnf install tomcat-admin-webapps

  • To set the tomcat admin password, edit /usr/share/tomcat/conf/tomcat-users.xml like this... sudo vi /usr/share/tomcat/conf/tomcat-users.xml Un-comment these lines near the bottom...

    <role rolename="admin"/>
    <role rolename="admin-gui"/> <role rolename="admin-script"/> <role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user name="admin" password="<must-be-changed>" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" />

Change the <must-be-changed> to whatever password you want. You can also change the username to something other than "admin" if you like. Save the file :wq and then run...

    service tomcat restart

To restart tomcat and load the new values. Every time you make a change to Tomcat, you need to re-run "service tomcat restart" to cause it to reload.

Browse to http://localhost:8080 and click on the [Manager App] button. Enter the username "admin" or whater you changed it to, and the password you put in the tomcat-users.xml file and you are logged in to the Tomcat Application Manager.

Have a lot of fun! O_o

Un-readable dialogs in Eclipse Neon.1

Update: I installed the ARC theme and that has helped a little, but it's still not really good.
     sudo dnf install arc-theme
After installing the theme, go to the Tweak tool, under "Appearance | Theme | GTK+", and select Arc-Darker. Now all dialogs in Eclipse are marginaly legible, but not really pretty. There's a real disconnect between the Gnome themes and Eclipse.


I just recently installed Eclipse Neon.1 on Fedora 24 (sudo dnf install eclipse) and find that the default dialog color scheme results in white text on a very light gray background, rendering the dialogs un-readable. Here's an example...

Unreadable Text

To fix it, I navigated to "Window | Preferences", expanded "General" and clicked on "Appearance". Tweaking a few settings resulted in  dialogs that were readable, but then saving the settings and restarting resulted in no change. I finally got a set of settings that works mostly, although the "Eclipse Launcher" still is broken, no matter what settings I choose.

Here are the settings I chose, which mostly work. If you have any tips on how to fix this right, I'm all ears. Please post in the comments section and let me know....


Installing GitKraken on Fedora 24

I downloaded GitKraken (gitkraken-amd64.tar.gz) from, and unpacked it into /opt/gitkraken.

When I tried to run it, I got the following error...

    error while loading shared libraries: 
cannot open shared object file: No such file or directory

So apparently GitKraken is missing some libraries that it needs in order to run. A quick Google search turned up a fast way to install something that contains the missing library...

    sudo dnf install libXScrnSaver

If you are running on Ubuntu or another Debian derivative, you can probably use...

    sudo apt-get install libXScrnSaver

Now running ./gitkraken from /opt/gitkraken works. I submitted this to Axosoft as a bug, but I could be pursuaded to believe it isn't. Perhaps we all should have the libXScrnSaver installed by default? Maybe Linux users shouldn't expect software to simply install and run without the user having to navigate a maze of missing dependencies? Maybe my beard isn't long and gray enough to even use Linux?

Any opinions?

Remediating the Java Deserialization Vulnerability

The most under-reported software vulnerability of 2015 is turning out to be a flaw in Java deserialization. It hasn't been given a fancy name and used in wildly overstated "news" articles designed to sell more subscriptions to Lifelock, but it is very dangerous nonetheless. Here is a good, in-depth article describing the vulnerability, providing some resources for determining if you are affected, and some details for crafting your own exploits if you are so inclined.

Scrap Your Work From Home Policy

In my current position I work from home often. Most of my work can be done without incessant meetings and constant interruptions, so I just sit here in my home office and do it.

Many companies suffer from an outdated idea that if you aren't keeping their cubicle warm, then you aren't working. For modern information workers, that's simply crazy. As long as you are getting your work done, who cares where you do it from?

Many successful companies have discovered that opening up their remote worker policies allows them to secure better talent at lower costs than does the old model of forcing people to pack their families up to relocate and then spend an hour per day trapped in traffic.

Enterprise Car Rentals takes 5 to 10 days to UNSUBSCRIBE YOU FROM THEIR SPAM!?!?!

So. Someone named "Phillip Blanton" but who isn't me, recently rented a car at Enterprise and used my GMail address. It happens all the time. I get notifications for a Pamela Blanton, and a Philip Blanton too. How come people can't remember their own GMail addresses and give mine out instead?

So Enterprise sends me a bunch of emails about this rental. Apparently Mr. Blanton also crashed the car he rented and they sent me details on that also via email.

Today I get an email asking me to rate my experience at Enterprise. I notice an "unsubscribe" link at the bottom, so I click it and I get this message...

5-10 days

Are you serious? You need, "five to ten days" to remove me from your mailing list?!? This is completely unacceptable. In the amount of time it took your server to craft that response, you could have flagged my email address as "unsubscribed" in your database.


Development Code Smells

I came across an article today on Quora where a developer was asking, "What are some bad smells in programming". If you don't frequent Quora, you should...

Quora Software Engineering
Quora Computer Programming

It's one of those Quora questions that elicits very intelligent responses and generates good discussion. It's a brilliant way to ask the question too. Can software smell? It sure can stink sometimes. The discussion led to one poster including this link from,, which is a very good primer on code refactoring.

Face it. Most of software development is refactoring. If you aren't refactoring constantly as you develop, then you aren't developing a more concise and clear understanding of the business problem. No matter how many meeting you have been through, or how many games of Planning Poker you have played,  when you open up the IDE for the first time you only have a rudimentary understanding of how the system is to come together. The more pieces you build, the better you understand how to build other pieces and how they should fit together. As that understanding begins to gel, you will ALWAYS need to go back to clean up and redesign the pieces you wrote earlier.

Refactoring is an indication that you are getting better at your craft, NOT an indication that you sucked at it yesterday.

So Refactor My Friend!

Text-Talk is Inappropriate for Business Communications

It's actually inappropriate for any communication, that's not a battle I'm willing to fight at this time. Suffice it to say that f u tlk 2 me lk ths n a txt, thn ill dlt ur txt.

With prejudice.

I recently ordered some charging cables for my daughter, who's cell phone only came with a male-male USB-C cable, so she can't plug it into a standard USB-A port to charge it, like on her laptop or in her car. That's annoying Google!

After placing the order for three USB-A to USB-C male-male cables, I get this email from the EBay seller...

"Thanks for your payment,we will arrange the shipment for u in 48 hours (no included weekend and international holidays). Then we inform u for the shipping information when the item is sent out to u.
Pls reply the message directly if you have any problem for the item."

I replied thus...

"Thank you.
Professional businesses don't use "u" in place of the word "you". When you are texting with your drug dealer, or meeting up at a rave, then that's acceptable. Otherwise it's not."

They replied and thanked me. They are a Chinese company and don't really understand English, so they were doing their best. They said they were "greatful" that I would take the time to help them improve their automated customer service system and that they would fix it right away.

They did seem concerned that their email may have offended me. I assured them that it's not offensive, just not appropriately professional for corporate communications.

Why do smart CS Grads want to become back-end developers?

I recently received a question in my Quora bucket. It was,

"Why do the smart CS graduates want to become backend developers?".

Well I’ve a degree in Physics with a minor in CS, and I have been a software architect for thirty years.

Grogg’s argument is thoroughly cemented into my reality. I’m a back-end developer/architect because I love solving difficult problems. I’m not a UI developer because I don’t care how many pixels this prndl is from that swoopy, ephemeral, ghosty thing.

In fact, I don’t even give a crap about what a “PIXEL” is and where it lives, unless I can re-define it against a new dimension.

As long as I can exercise my software with an array of unit tests and stick to purely algorithmic expressions of complexity, then I am happy.

How one chooses to reflect that to the masses is not my concern.