Calculator
Calculators

Last week a website user notified me of a problem he was experiencing with this website’s rating calculators.  He’s been a regular user for nearly a year now.  When he tried to perform a calculation the calculators would just show waiting indicators without showing the answer.  If he closed the browser window and reopened it, it would sometimes fix the problem.  To complicate matters, his coworker was having a similar problem.

Worst of all, this problem had been plaguing them for two weeks.  If you have a problem with this website, let me know as soon as possible so that I can track down the last change to the site to see if its causing a problem.

My troubleshooting went like this:

  1. Get a detailed description of the symptoms.
  2. Try to replicate the problem.
  3. Reiterate the problem to make sure I’ve got it right.
  4. While working to diagnose and fix the problem, offer a temporary fix (putting up a temporary site for their use).
  5. Look into recent changes in the website (going back two weeks).
  6. Since I couldn’t replicate the problem, ask additional questions.
    • Does the problem occur at a particular time of the day? ((This would indicate a data bottleneck at the server.  Time to upgrade!))
    • What web browser and version do they use? ((And, tell them how to find this information.))
    • What operating system?  When was the last update? ((Have I mentioned how much I loathe Microsoft VistaSeriously, I think people should delete Microsoft Vista because its crap.))
      • Explain how to figure out their version of Windows and how to install update.
    • Do they have any third-party “toolbars” installed?  Yahoo, Google, MSN, etc toolbars. ((These browser helper objects are notorious for interfering with normal browser operations.  Worse, you can’t rule them out based upon when they were installed because they’re constantly downloading and installing updates to themselves.))
      • Ask them to temporarily disable or uninstall the toolbar.  Give them links to where they can re-download the toolbar software.
    • Do they single-click or double-click on buttons? ((Double clicks send two requests to the server – and might be confusing the browser.))
    • Are other co-workers having the same problem? ((Two computers on a single network could be a coincidence, a sign of a problem with the website, or a sign of a problem with the client’s network.))
    • Do they have this same problem on different computers? ((If not, its a problem with that computer.  If so, could still be a problem with either the website or their computers/network.))
    • Is the browser showing javascript errors? ((Tell them how to tell if there’s an error and how to give you the error code information.))
    • Ask them to try out a new browser. I recommended the PortableApps.com version of FireFox.
      • If the problem disappears, its obviously in their computer or network.  If the problem persists, it could still possibly be their network or the website.
  7. Above all else: KEEP THE CLIENT INFORMED. ((They may not care for the constant updates, but they will know you’re on the case.))

As of right now, one of this client’s co-workers has contacted me to say that he’s no longer having trouble with the website.

So, problem solved?  If not, let me know, alrighty?

The Internets
The Internets

I’m not exactly a neutral party when it comes to “web apps” (short for “web application”) versus their downloadable-installable cousins.  This website, its articles, and blog posts are basically just packaging for my own suite of free web apps, workers’ compensation calculators.

For the purposes of this post, I’m restricting the definition of “web app” to those programming applications which run from inside an internet web browser and require an internet connection to operate.  I’m excluding those hybrid web apps that require plugins to be installed (think flash or adobe multimedia banner ads).  While web apps have inherent…

Weaknesses

  1. Web browser. Some require a particular type or version of a web browser.
  2. Internet Connection. They won’t work without one.  If you lose your internet connection, you’ve just become isolated from your information and the program.
  3. Form. Sometimes the program will look different depending upon the type or version of web browser.
  4. Function. Sometimes the program will act slightly differently depending upon the type or version of web browser.

… there are also undeniable…

Consumer Benefits

  1. Portability. Web apps allow you to access your information from the internet.
  2. Independence. Web apps allow you to access your information from any computer.
  3. User Friendly. Nothing to download, install, or maintain.
  4. Seamless. These days web apps use AJAX so that your computer doesn’t need to reload the page to show you new information.  The result are web based programs that look and act as if the program was installed on your computer.
  5. Braindead Backups. Since all information is stored on the web app server, a browser crash doesn’t have to mean the end of the world.  No need to do anything.
  6. Updates. You immediately benefit from web app server program updates without needing to do anything.
  7. Compatibility. Most web apps can’t interfere with other programs on your computer.
  8. IT Security. With nothing to install, your IT professionals don’t need to worry about what you’ve got installed on your computer.

I recently gave a brief overview of my permanent disability and workers’ compensation benefit calculators. In that post I wrote a little bit about how my online benefits calculators work. Since then I’ve posted about my use of javascript, PHP, and AJAX in creating these permanent disability and permanent impairment calculators.

As I mentioned in the prior post in this series, my first few versions of this website and its workers’ compensation calculators did not use MySQL.  The initial versions of this site only saved information – which meant I only had to use PHP to open a file on the server, add an extra line of information, and then close the file.  This had several problems:

  1. Once my website became more popular, it was not uncommon to have more than one user online.  That meant the server tried to open the file – but couldn’t since it was already open.  This caused the program to freak out.
  2. In order to view just a little bit of information, I had to download the entire file.  This got crazy pretty quickly.
  3. Each time the file got larger, it would take slightly longer to open, append with more information, and close.

MySQL is an incredible tool for storing, organizing, and retrieving a large amount of data.   Like PHP, it is also open-source.  This means it is:

  • Well supported.  There are lots of online resources and books to help you learn.
  • Secure.  Lots of people spend a lot of time thinking of ways to prevent security vulnerabilities.
  • Customizable.  You can configure or even rewrite it, if you wish.
  • Interoperability.  You can save it to just about any format – including MS Excel spreadsheets.
  • Free.  Unlike Oracle or any of the MS alternatives, it is totally free.

So, why did I avoid MySQL?  I didn’t want to have to learn a whole new programming language.  I had to learn how to set up a database, tables within the database, how to search for information in a table, how to put information into a table, and how to change information which was already in a table.  There was a lot of trial and error.  I ended up doing some pretty cool things in the process of learning this language.  Some examples:

  • Teaching others some of the basics of MySQL
  • Writing a program for cataloging books
  • Writing several programs which performed various calculations to track invoices, billings, etc
  • Setting up several blogs/websites

The end result of learning this language is a more interactive website.  One of the last incarnations of this site was a version that would show different color schemes, advertisers, and messages depending upon the user.  All of this was made possible by large amounts of data stored in MySQL.

Thus ends my technical overview of my workers’ compensation permanent disability calculators!  If you have any questions, please feel free to email me or leave a comment below!

I recently gave a brief overview of my permanent disability and workers’ compensation benefit calculators. In that post I wrote a little bit about how my online benefits calculators work. Since then I’ve posted about my use of javascript and PHP in creating these permanent disability and permanent impairment calculators.

As I’ve mentioned in those prior posts, both javascript and PHP have inherent downsides. My very first attempt at online benefits calculators using javascript and ASP actually suffered from all of the downsides of javascript and PHP. Those first calculators used tons of user’s computers’ resources, bandwidth, and server power. However, learning more about AJAX enabled me to build a set of calculators which benefited from the strengths of javascript and PHP while minimizing, if not eliminating, their weaknesses.

The acronym “AJAX” refers to “asynchronous javascript and XML” – a collection of other technologies which allow a webpage to communicate with a web server without requiring an entire page download.

Example 1: A calculator without AJAX calculating “6 x 7” would send information to be calculated to the web server. The web server would then respond by giving you an entirely new page with the answer, “42”. However, in order to download that answer you would need to download a whole new page – and all the images, text, and code associated with it. Even a normal web page could be between 30,000 and 300,000 bytes in size. ((A download of “www.google.com” was approximately 30,000 bytes and a download of “www.yahoo.com” was approximately 300,000 bytes.))

Example 2: A calculator with AJAX calculating “6 x 7” would send information to be calculated to the web server. The web server would then respond by sending back just the answer, “42”. This would be 2 bytes.

If my calculators needed to download of 300 kilobytes for every single operation, a simple calculation could take about 30 seconds on dialup and a full 1 second on broadband. Although 1 second doesn’t seem like a long time – it is in the internet age. Most of the calculations on this site take approximately .500 seconds using a broadband connection. I would guess that about 90% of that time is due to network latency/network lag – which wouldn’t be much different for a dialup connection.

For the first few months after the launch of this website, it did not use a MySQL database. I actually went to some pretty ridiculous extremes to not have to learn a new programming language. I eventually gave in, learned how to use MySQL and am a better programmer for it.

Next up, MySQL!