Frequently Asked Questions (FAQ)

by: Keith Fenske
for: https://kwfenske.github.io/
August 2021

Copyright © 2021-2022 by Keith Fenske. All rights reserved.

These programs were written for my own use, cleaned up, documented, and released to the public (GPL). They won't solve the big problems in your life, but may help with smaller ones. I am often asked the same questions:

GitHub Extended FAQ

  1. Java Programming Language

    All computer programs are written in some programming language. Which one depends upon what is available for the target machine. Java ran on multiple operating systems (IBM, Linux, Macintosh, Solaris, Windows) and had a graphical user interface (GUI). Other languages had their own application programming interface (API), some with short lifetimes. A desktop API was often obsolete before ten years, a mobile API (cell phones and tablets) in maybe five years. Then you rewrote for a newer API or a newer version of the same API. Old Java programs had an unusually long lifetime of around twenty years. I wish I could say we knew this in 2005, but it was just a guess. There is something to be said for programs that have a single source file, no dependencies (additional libraries), and stick to API calls as documented.

  2. Java Versions

    Several companies had strong opinions about the future of Java in the mid 2000s, chief among them IBM, Oracle, and Sun Microsystems (the originator). Java 1.4 Standard Edition seemed to be the only thing they could agree on. The situation was somewhat unsettled until a year or two after Oracle acquired Sun. Java 5.0 (2004) was good, Java 6 (2006) was not, and Java 7 (2011) was good again. Meanwhile, Java 1.4 programs keep running through to Java 8 (2014) and later. Not bad for a language that has changed so much, I don't recognize code from some newer versions.

  3. Packages and Installers

    My Java applications have around ten files for the program and a few more for licenses and advice. The most common package is a ZIP archive: everybody everywhere does this format. Great for people who know how to run Java, but not for people who need an "installer" or setup program. Those, unfortunately, are specific to each operating system. Assume you need one installer for 32-bit Windows, another for 64-bit Windows, one for MacOS, at least one for Linux, etc. A self-installer for Windows adds about 2 MB of overhead. Say you have five distribution packages of 2 MB each for one ZIP file that was less than 300 KB. That's 30 times more storage space and now you're building a program five ways, plus the original ZIP. How many programs are on my web site? Oh, dear. This is free, open-source software. I'm not getting paid to do this, and any web host would be unhappy if I suddenly started using gigabytes of data.

  4. Internationalization

    A long word for supporting many languages. The more "international" you make a program, the dumber the error messages get. I like good error messages. I only speak one language well, so I can't personally translate program messages or documentation into another language. On-line services such as Google Translate come close when dealing with straight-forward "declarative" sentences. Then you have to implement message loading by language, generic substitution of parameters, etc. To avoid too much work, you dumb down the messages -- exactly what I want to avoid. Again, this is something you do if you have an interest in only one or two programs.

  5. Non-Program Licenses

    There should be a better license for material that is not part of a program package. Apache and GPL aren't suitable for this FAQ, the index page, etc. Yes, I looked at other licenses. No, I'm not going to post negative reviews. Copyright with all rights reserved may be best here.

Formatting and Style

Books and college courses discuss the best ways of writing computer programs. Read and learn. You will develop your own style. Some of my choices were as follows:

A clean and consistent programming style is necessary for open-source software. Bad code can be embarrassing for years to come. Bad documentation makes even good code look like garbage. Proper grammar, spelling, and punctuation are important: you can't communicate if people don't understand you.

Colophon

(Not a brand of cell phone.) This page was last revised on Thursday, 21 July 2022. Copyright © 2021-2022 by Keith Fenske. All rights reserved. What I want to know is, why do we still address computer memory in bytes?