The Hazlewood System of Units
In my opinion, scientific measurements should be represented via unmovable, logical, and absolutely atomic units that would be the same at all locations in the universe (at least given our current understanding of the universe).
I think its absolutely ludicrous that the most advanced scientific experiments and quantum theory today have data sets that are represented by a system of measurement forged and "standardized" in 19th century Imperialistic Europe.
Here are the fundamental (mutually independent) units of measurement based on these standards:
| Name | Symbol | Property |
|---|---|---|
| meter | m | length |
| kilogram | kg | mass |
| second | s | time |
| ampere | A | electric current |
| kelvin | K | thermodynamic temperature |
| mole | mol | molecular quantity |
| candela | cd | luminous intensity |
For example, that the second was originally defined as "the 1/86400th of the mean solar day" to me is absurd. A "mean solar day" was left up to astronomical theories at the time that definition was constructed.
Why is this absurd? Because its based on the rotational speed of the Earth. I have two problems with this:
1. The rotational speed of the Earth is irregular and not a "fixed constant" upon which to formulate a standard. And the biggest reason for my problem:
2. Its based on the Earth.
Let me address number 1 first:
The SI body recognized this irregularity and did something about it. They formalized in 1960 that the second is no longer defined based on the rotational speed of the Earth. The instead defined it as:
"The second is the duration of 9,192,631,770 periods of the radiation corresponding to the transition between the two hyperfine levels of the ground state of the cesium 133 atom."
Huh? Why the heck did they choose that?
The reason is that they needed a stable and scientifically repeatable (under all circumstances) method to derive a unit of time. Cesium 133 is well known to have the required regularity, so it was chosen as the basis. 9,192,631,770 periods most accurately reflected our perception of the old measurement. So its repeatable, but still related to the old definition.
So, at least they addressed complaint point #1. But they completely ignored my complaint point #2, that is, the measurement, even in the 'fixed' 1960 representation, is based on a property of the Earth.
Why should the second or any unit for that matter be based on the Earth? Why not the Sun? Even that is not good enough for me. The meter and kilogram are in essence derived from archaic methods as well, and are in my opinion, equally flawed.
These types of views reflect a self-centered, outdated view of our understanding of the universe. Why on earth (pun intended) would anyone base the most fundamental explainations of our universe and all things it contains on our one lonely planet? Arrogance? A lack of understanding? Maybe our forefather's ignorance to the possbilities of scientific discovery in the future? Why are we still bound to this primitive, earth-centric system of units? Why don't we use something that represents data in the purest form that we are capable of doing so?
I am proposing such a system.
My system is based on light (photons), the electron, and the hydrogen atom. These are universal in every sense of the word, purely atomic, and invariant. If the original SI units can be expressed in terms of light and electrons, we would have a "pure" system, applicable to all planets and solar systems, not just ours. If we want to represent multitudes of these units to be closer to units that we can mentally grasp, then fine, I have no problem with this. My problem is that data, at its most fundamental level, should be represented by pure constants that bear no reflection of our perception of our world, but on actual physical constants of the universe (barring the philosophical debate of our perceptions of things such as electrons and photons).
My system doesn't even have names yet, just concepts. Perhaps folks reading this entry could help me come up with appropriate names for each fundamental property.
Here's the above table, revised for my system, and its proposed measurement:
| Name | Symbol | Property | Measurement |
|---|---|---|---|
| ??? | ? | length | The diameter of a "free standing" electron.[1] |
| ??? | ? | mass | The mass of a "free standing" electron.[2] |
| ??? | ? | time | The period in which the electron of a hydrogen atom completes one "orbit" around the atom's proton. |
| ??? | ? | electric current | ? |
| ??? | ? | thermodynamic temperature | ? |
| ??? | ? | molecular quantity | ? |
| ??? | ? | luminous intensity | ? - something related to the energy of a single photon ? |
Connecting to Ingres 2006 on Linux via JDBC
Ok, I had a hell of a time trying to get this figured out. It seems like my Ingres 2006 install environment did not match the documentation on the ingres website, which looks to be docos for the older r3 product. This seriously sucked. C'mon guys - get the docos right.
Anway, here's what I had to do.
I didn't install this ingres instance, but I did realize that a process named 'iijdbc' was running. Apparently this is what allows jdbc to connect to an Ingres 2006 installation. We do not have Data Access Server running (iigdc).
When doing a process listing, this is what I get:
> ps aux | grep ingres
ingres 3903 0.0 0.0 11140 2228 pts/0 S 15:50 0:00 /ingres/application/ingres/bin/iigcn II gcn
ingres 4038 0.0 1.0 145164 55068 pts/0 Sl 15:50 0:00 /ingres/application/ingres/bin/iidbms recovery (dmfrcp) II
ingres 4156 0.0 0.0 86212 3748 pts/0 S 15:50 0:00 /ingres/application/ingres/bin/dmfacp II
ingres 4177 0.0 0.7 322120 37260 pts/0 Sl 15:50 0:00 /ingres/application/ingres/bin/iidbms dbms (default) II
ingres 4335 0.0 0.0 59244 2768 pts/0 S 15:50 0:00 /ingres/application/ingres/bin/iijdbc II jdbcAnd here is the corresponding output from the 'ingstatus' command (corroborates the above, just less verbose):
> ingstatus
Ingres II name server (iigcn) - running
Ingres II recovery server (dmfrcp) - running
Ingres II DBMS server (iidbms) - 1 running
Ingres II Net server (iigcc) - not active
Ingres II Data Access server (iigcd) - not active
Ingres II JDBC server (iijdbc) - 1 running
Ingres II archiver process (dmfacp) - runningSo, given this starting point, here's what I had to do:
As the ingres user, we had created a 'cls' database via the createdb command. Then we used accessdb to create the 'cls' user account inside ingres. Then we loaded the sql schema via accessdb.
So now, I had a cls user account and a schema with tables, but I couldn't connect for the life of me over JDBC using Ingres 2006's provided jdbc driver (found at $II_SYSTEM/ingres/lib/edbc.jar).
It turns out this is because Ingres uses Operating System user accounts for logging in over tcp. So, this meant I had to create a cls user as root:
# adduser clsand gave it a suitable password:
# passwd cls(this OS level password is then used for the JDBC connection later on).
Now that there is an OS user called 'cls' - exactly the same as my previously created Ingres database - I then had to let ingres know about this os user account and password:
(as root):
# . /home/ingres/.ingIIbash
# mkvalidpwThis command compiles and installs a program called 'ingvalidpw' that is not is not included in the standard Ingres2006 installation. This allows you to validate if a password is valid against an operating system user account known to Ingres.
Once that's done, you'll have to restart Ingres (as root):
# /etc/init.d/ingresII restartTo validate that Ingres password checking works, you should see that the Ingres env var II_SHADOW_PWD is set to the location of that compiled ingvalidpw executable:
# su - ingres
> ingprenvIn the list that is generated, you should see the II_SHADOW_PWD var set.
Now, you can verify that the username and password you would use for JDBC for your user will work:
echo
| $II_SYSTEM/ingres/bin/ingvalidpw ; echo $? If you see any value other than 0 returned, then the username/password entered doesn't match the OS username/password. If you do see non-zero, then you can look in the $II_SYSTEM/ingres/files/iipwd/ingvalidpw.c file and see what the integer corresponds to find out what went wrong.
I then fired up DB Visualizer, pointed it to the edbc.jar file I specified earlier, and then used this url:
jdbc:edbc://:21071/ So, in my case it looked like this:
jdbc:edbc://localhost:21071/clsI clicked 'test connection' in DbVisualizer, and lo and behold! I was able to access all my tables!
I hope this is of use for someone - it took me close to 3 or 4 hours to get this working.
Here is the original Ingres forums thread that led me to my posting (you may need an Ingres account to access it, but its free):
http://opensource.ingres.com/projects/ingres/forum/30/121418044682?b_start:int=0#235464875124