<div id="nav-expanded" class="nav-block">
<nav id="kevux-document-nav" class="nav-menu">
<div class="nav-item block">
+ <div class="nav-text notice">2024 / 07 / 14</div>
+ <a href="news/2024/2024_07_14-time_and_numbers.html" class="nav-text link">Time and Numbers</a>
+ </div>
+ <div class="nav-item block">
<div class="nav-text notice">2024 / 06 / 14</div>
<a href="news/2024/2024_06_14-living_standard_dead.html" class="nav-text link">A Living Standard is a Dead Standard</a>
</div>
<h1 class="section-title h h1">News</h1>
</header>
- <article id="2024_06_14-living_standard_dead" class="article">
+ <article id="2024_07_14-time_and_numbers" class="article">
<header class="article-header header">
+ <h2 id="2024_07_14-time_and_numbers" class="article-title h h2">2024 / 07 / 14 - Time and Numbers</h2>
+ </header>
+
+ <div class="article-content">
+ <p class="p">
+ The Kevux projects are predominately specification driven programming, also called standards driven programming.
+ Most of the standards are focused around logic and a specific goal.
+ Some of the standards, however, are focused on math and its application.
+ Today, I have decided to discuss some of the mathematical based, or number based, standards.
+ I planned on a more extensive article but the events of Yesterday, July 13, 2024, are historic and troubling for the United States of America.
+ I have found that rather distracting and I am opting for a shorter article.
+ </p>
+ <p class="p">
+ <a id="2024_07_14-time_and_numbers-more" href="news/2024/2024_07_14-time_and_numbers.html" class="content link" aria-labelledby="2024_07_14-time_and_numbers-more 2024_07_14-time_and_numbers-title">Continue reading…</a>
+ </p>
+ </div>
+ </article>
+
+ <article id="2024_06_14-living_standard_dead" class="article">
+ <header class="article-header header separate">
<h2 id="2024_06_14-living_standard_dead" class="article-title h h2">2024 / 06 / 14 - A Living Standard is a Dead Standard</h2>
</header>
<a href="news.html" class="nav-text link back">Back</a>
</div>
<div class="nav-item block">
+ <div class="nav-text notice">2024 / 07 / 14</div>
+ <a href="news/2024/2024_07_14-time_and_numbers.html" class="nav-text link">Time and Numbers</a>
+ </div>
+ <div class="nav-item block">
<div class="nav-text notice">2024 / 06 / 14</div>
<a href="news/2024/2024_06_14-living_standard_dead.html" class="nav-text link">A Living Standard is a Dead Standard</a>
</div>
<h1 class="section-title h h1">Year 2024 News</h1>
</header>
- <article id="2024_06_14-living_standard_dead" class="article">
+ <article id="2024_07_14-time_and_numbers" class="article">
<header class="article-header header">
+ <h2 id="2024_07_14-time_and_numbers" class="article-title h h2">2024 / 07 / 14 - Time and Numbers</h2>
+ </header>
+
+ <div class="article-content">
+ <p class="p">
+ The Kevux projects are predominately specification driven programming, also called standards driven programming.
+ Most of the standards are focused around logic and a specific goal.
+ Some of the standards, however, are focused on math and its application.
+ Today, I have decided to discuss some of the mathematical based, or number based, standards.
+ I planned on a more extensive article but the events of Yesterday, July 13, 2024, are historic and troubling for the United States of America.
+ I have found that rather distracting and I am opting for a shorter article.
+ </p>
+ <p class="p">
+ <a id="2024_07_14-time_and_numbers-more" href="news/2024/2024_07_14-time_and_numbers.html" class="content link" aria-labelledby="2024_07_14-time_and_numbers-more 2024_07_14-time_and_numbers-title">Continue reading…</a>
+ </p>
+ </div>
+ </article>
+
+ <article id="2024_06_14-living_standard_dead" class="article">
+ <header class="article-header header separate">
<h2 id="2024_06_14-living_standard_dead" class="article-title h h2">2024 / 06 / 14 - A Living Standard is a Dead Standard</h2>
</header>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <title>News - 2024/07/14 - Time and Numbers</title>
+
+ <base href="../../">
+
+ <meta charset="UTF-8">
+ <meta name="author" content="Kevin Day">
+ <meta name="description" content="News post on 2024/07/14.">
+ <meta name="keywords" content="Kevin Day, Kevux, FLL, Featureless, Linux, Library, Distribution, Open-Source, News, 2024">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <link type="text/css" rel="stylesheet" media="all" href="css/kevux.css">
+ <link type="text/css" rel="stylesheet" media="only screen" href="css/kevux-screen.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (min-device-width:501px)" href="css/kevux-screen-desktop.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (max-device-width:500px)" href="css/kevux-screen-mobile.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (min-device-width:1201px)" href="css/kevux-screen-large.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (min-device-width:501px) and (max-device-width:1200px)" href="css/kevux-screen-normal.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (min-device-width:251px) and (max-device-width:500px)" href="css/kevux-screen-small.css">
+ <link type="text/css" rel="stylesheet" media="only screen and (max-device-width:250px)" href="css/kevux-screen-tiny.css">
+ <link type="text/css" rel="stylesheet" media="only print" href="css/kevux-print.css">
+ <link type="text/css" rel="stylesheet" media="only print and (orientation:landscape)" href="css/kevux-print-landscape.css">
+ <link type="text/css" rel="stylesheet" media="only print and (orientation:portrait)" href="css/kevux-print-portrait.css">
+
+ <link rel="canonical" href="news/2024/2024_07_14-time_and_numbers.html">
+ <link type="image/x-icon" rel="icon" href="images/kevux.ico">
+ <link type="image/x-icon" rel="shortcut" href="images/kevux.ico">
+ <link type="text/html" rel="license" href="licenses.html">
+ <link type="text/html" rel="prev" href="news/2024/2024_06_14-living_standard_dead.html">
+ </head>
+
+ <body id="kevux" class="kevux no-js news">
+ <div role="banner" class="header-block">
+ <header class="header-section header">
+ <div class="header-site">Kevux Systems and Software</div>
+ </header>
+
+ <div class="nav-block">
+ <nav id="kevux-site-nav" class="nav-menu">
+ <div class="nav-item active"><a href="news.html" class="nav-text link">News</a></div>
+ <div class="nav-item"><a href="distributions.html" class="nav-text link">Distributions</a></div>
+ <div class="nav-item"><a href="fll.html" class="nav-text link">FLL</a></div>
+ <div class="nav-item"><a href="projects.html" class="nav-text link">Projects</a></div>
+ <div class="nav-item"><a href="documentation.html" class="nav-text link">Documentation</a></div>
+ </nav>
+ </div>
+ </div>
+
+ <div class="content-block">
+ <div id="nav-expanded" class="nav-block">
+ <nav id="kevux-document-nav" class="nav-menu">
+ <div class="nav-item block back">
+ <a href="news/2024.html" class="nav-text link back">Back</a>
+ </div>
+ <div class="nav-item block highlight unlink">
+ <div class="nav-text notice">2024 / 07 / 14</div>
+ <div class="nav-text unlink">Time and Numbers</div>
+ </div>
+ <div class="nav-item block ellipses">
+ <a href="news/2024/2024_07_14-time_and_numbers.html#nav-expanded" class="nav-text link open" title="Expand Menu">…</a>
+ <a href="news/2024/2024_07_14-time_and_numbers.html" class="nav-text link close">Collapse Menu</a>
+ </div>
+ </nav>
+ </div>
+
+ <div role="document" class="main-block">
+ <main class="main">
+ <header class="section-header header">
+ <h1 class="section-title h h1">2024 / 07 / 14 - Time and Numbers</h1>
+ </header>
+
+ <div class="section-content">
+ <p class="p">
+ The Kevux projects are predominately specification driven programming, also called standards driven programming.
+ Most of the standards are focused around logic and a specific goal.
+ Some of the standards, however, are focused on math and its application.
+ Today, I have decided to discuss some of the mathematical based, or number based, standards.
+ I planned on a more extensive article but the events of Yesterday, July 13, 2024, are historic and troubling for the United States of America.
+ I have found that rather distracting and I am opting for a shorter article.
+ </p>
+ </div>
+
+ <section id="time_unit" class="section">
+ <header class="section-header header separate">
+ <h2 class="section-title h h2">Time, a Unit</h2>
+ </header>
+
+ <div class="section-content">
+ <p class="p">
+ The <em class="em">UNIX Timestamp</em> is the predominant time based standard on computers this day.
+ This time measurement system is based around the number of seconds have passed since January 1, 1970 at 00:00:00 <abbr title="Coordinated Universal Time">UTC</abbr>.
+ This date is also known as <em class="em">UNIX Epoch</em>.
+ This works reasonably well because the year can simply be calculated.
+ The existence of leap years, leap seconds, and other alterations complicate the use of this measurement of time.
+ The calculations against this number for past, present, and future is relatively easy.
+ </p>
+ <p class="p">
+ The original <em class="em">UNIX Timestamp</em> is a signed 32-bit integer.
+ Mathematically speaking, this can only represent about 68 years.
+ This problem is known as the year 2038 bug.
+ Increasing the integer from 32-bit to 64-bit prevents this particular problem by making the max year problem, such as the year 2038 bug, less of a concern.
+ </p>
+ <p class="p">
+ I see the <em class="em">UNIX Timestamp</em> as a good idea surrounded by some minor, but critical, problems.
+ The problems that I am concerned with stem from two parts.
+ </p>
+ <ol>
+ <li>Separation of concerns problem regarding the byte size.</li>
+ <li>Directly associating, or hard-coding, a year into the number of seconds.</li>
+ </ol>
+ <p class="p">
+ The <em class="em">UNIX Timestamp</em> standard was written during a time when the hardware constraints were a critical concern.
+ Forcing the 32-bit signed behavior back then made sense.
+ Today, one should instead focus on user interaction and dynamic range support.
+ If a particular machine or software program does not support say, a 128-bit timestamp, then it can simple communicate that the number is too large.
+ Any timestamp value that would fit in a 64-bit or 32-bit integer would still be supported in a 128-bit timestamp.
+ </p>
+ <p class="p">
+ The biggest problem is not the bit length of the integer.
+ The biggest problem is that the year, 1970, is fixed.
+ Make the year a separate number.
+ This number, like the seconds value, can also be of an unfixed size.
+ Twelve bits can be safely used to represent a complete number for the year 2024 and for a good number of years beyond that.
+ With a system that is unbiased in the bit length, this number could also be 16-bit, 32-bit, or anything else.
+ An unfixed year has the advantage of allowing for a unit of time to be used for theoretically any point in time.
+ A computer system could be programmed for the calendar year of say, planet Pluto.
+ A computer system could be programmed for the calendar year of say thousands of years into the <abbr title="Before Christ">B.C.</abbr> calendar.
+ This system could then be used to compare against the current clock system without requiring a new standard.
+ </p>
+ </div>
+ </section>
+
+ <section id="provide_real_standard" class="section">
+ <header class="section-header header separate">
+ <h2 class="section-title h h2">The UNIX Timestamp Alternatives: Time and EpochTime</h2>
+ </header>
+
+ <div class="section-content">
+ <p class="p">
+ I wrote two new units of time called <a href="fll/specifications/other/time.html" class="link">specification of <strong class="strong">Time</strong> and <strong class="strong">EpochTime</strong></a>.
+ </p>
+ <p class="p">
+ This standard is largely based on the <em class="em">UNIX Timestamp</em> but instead of using signed integers, it uses unsigned integers.
+ A year can be specified so the use of a negative is rather pointless.
+ This standard does mention 64-bit to make it more directly compatible with the currently <em class="em">UNIX Timestamp</em> ranges.
+ The standard also asserts that it allows for larger bits as needed.
+ This does not, however, specifically declare how hardware must implement this.
+ For example, a <strong class="strong">Time</strong> of <code class="code">2000:-1</code> could instead be represented as <code class="code">1999:31536000</code>.
+ This could also be stored as a string literal.
+ </p>
+ <p class="p">
+ A system hardware clock could utilize a rotating clock to support this unit of time called <strong class="strong">Time</strong>.
+ After 32 days into the year, then the year part of the hardware clock could be incremented by 1 and then 32 days would be set in the seconds.
+ The 32 day wait is done to avoid any potentially problems with a leap year, a leap second, or any such complications.
+ </p>
+ <p class="p">
+ One downside of this approach is that two comparison may be needed when comparing two dates.
+ This may also complicate the database structure, such as requiring two columns or splitting of the value.
+ This can be solved through organization and filtering first by the year and then calculate the timestamp.
+ On the flipside, this downside could be turned into an advantage by using this to optimize the dates via the year.
+ </p>
+ </section>
+
+ <div class="section-content">
+ <p class="p">
+ <strong class="strong">Kevin Day</strong>
+ </p>
+ </div>
+ </main>
+ </div>
+ </div>
+ </body>
+</html>