The One Word That Best Describes the World of Computer Date/Time is: Mayhem-Bedlam-Pandemonium-Turmoil-Anarchy The Computer Industry Prides Itself on Its Innovation but its Date/Time is Archaic! If you are a programmer today, you: Must cope with over 50 different defective ways computers store date/time. It is a Tower of Babel. One line of software can’t understand another lines date/time. Everything must be translated from one line of software to another and the XLM translator has serious deficiencies. Must muddle around with several hundred outrageously incomplete complicate tools for working with date/time. In this advanced sophisticated computer age: o No tool can correctly add/subtract years-months-days like humans do. o The tools have only minuscule implementation of date/time standards established 25 years ago. o The tools at best have trivial implementation of “options”, “exceptions”, “round-trip” or “partial-date”. o The date/time addition/subtraction give the appearance of pounding square pegs into round holes. The mathematicians unanimously agree the way to do date/time arithmetic is to jet around the world to get next door. In order to date/time arithmetic: They first convert years-months-days-hours-minutes to total seconds. They next convert any change like days, hours, minutes to second and add/subtract from the total seconds. Finally they convert total seconds back to years-months-days-hours-minutes. However, the mathematicians unanimously disagrees on how to do it. Therefore every line of software has its own unique private jet with their own unique route that they think is the best. The problem was finding a way get next door without creating a route full of twist and turns that required traveling at a snail’s pace. A new date/time arithmetic technique blasts a tunnel straight through the mountains to get next door and is incredible fast. A pictorial description of the today’s date/time software. A Tower of Babel, no one understands anyone else’s date/time, The Ziggurat of Ur in ancient Babylon is a possible model. Everyone has different slow archaic tools That resembles pounding square pegs into round holes Date/Time Arithmetic Is Important For Most Important Application! All of these applications require date/time subtraction to calculate elapse time or addition to calculate a future event. Customer Order Management CRM (Order Entry / Invoicing) Master Production Scheduling (MPS) Material Requirements Planning (MRP) Capacity Requirements Planning (CRP) Inventory control (safety stock) Accounts Payable (AP) Accounts Receivable (AR) General Ledger (GL) Payroll Customer Relationship Management (CRM) Chance! A radical new method of doing date/time arithmetic was invented that is so radical the concept has never been discussed. It resulted from these events: An applied mathematician took an electrical engineering course in computer arithmetic logical unit design, at the suggestion of his advisor. The engineering professor happened to explained how by adding 15% to 20% circuits to a binary register (special memory that does arithmetic) it could also do decimal arithmetic. Years later the mathematician set out to program the world’s best date/time and found that traditional date/time arithmetic was to slow for what he wanted to do. He decide to see if by programming he could mimic the circuitry necessary to allow a binary register to do: Base-10 Base-12 Base-28, 29, 30 or 31 Base-24 Base-60 for years. for months. for days (this makes a hardware solution impossible). for hours. for minutes and seconds. After 16 hours his invention was running twice as fast for month with 31 days. After inventing a new high speed way to determine the days in a month and leap years he had it was working for all months 3 times faster. A latter version ran 4 times faster and did arithmetic for all ISO 8601 time types. ISO 8601 time types (formats). The current version runs almost 10 times faster and uses the same set of instructions doing arithmetic for all ISO 8601 date/time/timezone types. Over 25 years ago, computer people for all over the world determine the computer industry needed support for 39 = (3 + 3×4 +3×4×2) combinations of: ISO 8601 date types (formats). Calendar Day-of-year Week-of–year ISO 8601 time types (formats). hh:mm:ss,ffffffffff hh:mm,ffffffffffff hh,ffffffffffffff ,ffffffffffffffff ISO 8601 timezone types. “Z” for UTC ±00:00 time-zone offset ±YYYY-MM-DD ±YYYY-DDD ±YYYY-Www-D fraction of seconds from 0 to 10 digits. (100 pico-seconds) fraction of minutes from 0 to 12 digits. fraction of hours from 0 to 14 digits. fraction of days from 0 to 16 digits (not a ISO 8601 time) former GMT from +14:00 to -12:00 At best, other date/time software supports the four underlined types. If they tried to support all combinations it would be a nightmare. Actually no other software can do joint year-month-day arithmetic and get the correct answer all the time. The Results! The date/time that does everything and is bullet proof (prevents programmer mistakes): 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Has the world’s fastest time zone change and is almost ten times faster than any other date/time software. Has the world’s most efficient date/time arrangement for fast big data sorting, indexing and retrieval as required for business analytics. Has the world’s most efficient date/time arrangement for conversion between external (people readable date/time) to internal (computer readable date/time). Has the world’s only one standard way of storing date/time in the computer. Has the world’s largest date range. Has the world’s smallest precision. Has the world’s only tools that do date/time manipulations that are impossible for all other date/time software. Has the world’s only support for calculation holidays and other events with an “event algebra”. Has the world’s only almost 100% implementation of date/time standards and recommendations: Has the world’s only complete duration date/time arithmetic. Has the world’s only support for all international date types time types and timezone types. Has the world’s most comprehensive date/time variable precision. Has the world’s only inclusive “round-trip” for local commercial date/time. Has the world’s only complete support of “exceptions” Has the world’s only complete implementation of “options”. Has the world’s only complete support for partial date/time. Has the world’s only global time zone support using international standardized ISO 3166 country/state codes used for mailing or the IATA three letter city codes used on your airline luggage. Standards! Every computer processor from cell phones to super computers has: Standardized integers of 8-bits, 16-bits, 32-bits and now 64-bits all use the same arithmetic, 2’s complement. The IBM System 360 in 1964 set this standard, Standardize floating point (scientific notation like 1.23 × 10-11) of 32-bits, 64-bits and now 128-bits and 16-bits with gradual underflow. The IEEE 754 standard in 1985 and 2008 set these standards. Ultimate Date/Time can standardize date/time because: It is the fastest. It does times zone changes almost 10 time faster. It has the largest date range. The date range is ±9999 (20,000 years). It has the smallest precision. The time precision is 100 picoseconds (9-10 or .9999999999). It has one standard format. It is programming language and database system independent. It has the fewest simplest but most powerful tools. Supported with APIs. By reading this you will! 1. 2. 3. 4. Appreciate your ability to do arithmetic in different date/time bases, (base-10, base-12 …etc) and realize how date/time arithmetic drives binary (base-2) computers crazy. That after 50 years for the first time a software procedure was created that tricks all existing computers so that they can do human like mixed-base arithmetic but they do 16 digits simultaneously, something humans can’t do. It can be plugged into all existing programming languages that support Application Program Interfaces (APIs) and all database system. Because it has one standard format it is easy to take advantage of any programming language that supports user data definition. Understand the reason that after 20 years of developing Business Intelligence software the computer industry has had disappointing results. Finally, for technical people, an explanation of why the new computer date/time does timezone arithmetic 10 times faster than any other date/time software. Technical people have difficulty accepting that an old gray hair can invent something that the best and brightest mathematical minds in the industry have not invented. However, few mathematicians have had a course in electrical design of a computer register and experience in programming in assembler language. Those engineers who had a course in electrical engineering have been confronted with tricking a binary register to do concurrent mixed-base arithmetic. They are concerned about how to make binary arithmetic faster. Information is the Key to Business Success! Virtually all reporting is dated or derives from a time series calculations yet since date is the messiest data in the computer it is no wonder: “CEOs are overwhelmed by data that is short on insight.” From a 2010 IBM study of 1541 executives in 60 countries and 33 industries. “Users have lost confidence in their IT organizations' ability to deliver the information they need to make decisions.” From a 2010 Gartner Group research study, a research and advisory firm that has an excellent reputation for analysis of IT trends. Experts admit! Working with current line of date/time software is difficult and error prone! “Developers and DBAs new to xxxx date/time ( a specific vendor’s date/time of software) are often perplexed when it comes to working with dates. Along with the many ways to specify date formats and the many date functions, there is also the problem of date math. Working with dates can seem somewhat daunting, especially when it comes to adding and subtracting dates, and determining the time of day for a date.” “Many programmers encounter assignments that require them to accurately store and process date and time information. On first glance, yyyy date/time (a specific vendor’s date/time software) type appears to be perfect for these tasks. However, it is common for programmers, but more likely testers, to encounter cases where a program simply loses track of the correct date/time values.” The Anarchy Has Increased! In the last ten years: Two major vendors added dozens of new formats. The Internet and Cloud Computing applications are being built from many different web-services and components using different programming languages and database systems each with their own unique data/time. Get Smart! Ultimate Date/Time is a unique weapon that gives the industry Control to wipe out Kaos. “Would you believe Ultimate Date/Time does everything?” “Would you believe it is bullet proof?” “Out of clutter, find simplicity.” ― Albert Einstein “Pleasure in the job puts perfection in the work.” ― Aristotle It aids software developers who have ranked their primary needs as: o o o o The need ranked by importance 66% in delivering applications faster. 50% in reducing application development cost. 40% in increasing standardization. 40% in increasing innovation. The Ultimate Date/Time solution for developers They do not have to create custom tools. They can use less skilled programmers. They have a single standardized date/time. They have tools that provide new capabilities. Averages based on the study at Gartner's Application Architecture, Development and Integration (AADI) summit in 2010 & 2011). It improves user productivity and satisfaction by making Web-based applications faster: It has unmatched speed in converting external date/time, that people can understand, to/from internal date/time, that computers can understand. It provides “options” and “exceptions” missing in many current application. It has a revolutionary method of doing timezone conversion that is 10 time faster than anyone else. It improves Business Intelligence (BI) and with improve and faster analytics with big data that today result from the huge volume of data being collected, the high velocity of data being collected and the large variety of data being collected because the format is the best for: Fastest sorting and indexing. Most efficient selection and retrieval access. Quickest interval calculation and aggregation. Simplest support for partial dates as used in BI software. It improves programmer productivity and innovation: By providing programming with simpler tools. By providing for innovation with new capabilities that were impossible or had to be custom coded. Myths! Real time systems give management control of their company. Business Week wrote about how Cisco prided itself on a real-time system that gave insight into dayto-day profitability. Cisco claimed it was using the Internet to bind together its suppliers and contract manufacturers into a seamless whole, pointing the way to the corporation of the future. In fact, Cisco's "network organization" did little to soften the impact of the recent downturn nor did it prevent Cisco from a horrendous, $2.2 billion build-up of inventory. The system had a gas pedal but no brakes so that management could override the system. Real time data is accurate data. A BI professional with a marketing degree points out that if a grocery store on a Friday sells a huge volume of potato chips that does not mean it can expect a similar huge sale on Saturday or even the next Friday. One measurement of statistics is spotting unusual spikes of highs and lows (call outliers in statistics) and not letting them distort predictions. All data has some randomness and just collecting is quicker does not mean it is more accurate. The law of large numbers says the longer period you collect data the more accurate you can determine the average. Time series analysis analyzes the difference of averages by periods to determine trends. Time series are necessary for maximizing profitability. Calculation of business matrices requires extensive use of statistics to determine the range of randomness (standard deviation) to minimize cost and maximize service. The law of large numbers is that the larger the number more likely there will be random highs and lows providing a better normal distribution. The accuracy of an interval period (like a day, week or month) requires statistical and quantitative analysis to determine if changes are significant. Statistics calculates the difference between sales that have double because of 20 orders than from 1 order. It also calculates the difference between items were the orders are similar in size and items were orders that have a large differences in size. Everything being equal the latter requires a greater safety stock and therefore is less profitable than the former. If management wants to reduce the cost of safety stock, reducing the latter has a smaller effect on customer service than the former. An efficient date/time makes all of this easier and faster. Expectations and Reality! The most sophisticated software can’t produce business intelligence from deficient data: “Gartner sees a big discrepancy between Business Intelligence expectations and realities” the Gartner Business Intelligence Summit in Washington D.C. in 2009. After 20 years BI has had surprising little success. Peter Thomas - Award-winning Business Intelligence and Cultural Transformation Expert says: BI tools are just the tip of the iceberg. Business metrics requires date/time calculations: A major BI vendor writes “Even with the best and fanciest BI infrastructure in place, users may lack the insight they need to make effective decisions if they can’t access hidden data sources.” “Business metrics tools are needed to uncover trends and patterns in data that exists in your data warehouses and legacy systems. Time lost searching for such information can be substantial. Past IDC studies found that most workers have difficulty finding such data, spending 15 to 35 percent of their time searching. Worse, people found the sought-after information less than 85 percent of the time. The problem is exacerbated as raw data and the variety of data that must be searched has exploded in volume. “ Numbers are of themselves are not self explanatory. When I was doing a consulting job at Whirlpool, they talked about one huge mistake the Whirlpool computer system made. They made the refrigerators for Sears. Sears had a refrigerator model that was not selling so Sears ran a special to liquidate this bunch of dudes it had ordered to be manufactured. Whirlpool manufacturing saw the sales take off on this dude and quickly produced another batch of these dudes. BI software has development has made it easy to use drill down tools (place the curser on a total and it display the details) but they are only valuable if the user knows where to drill, which is another topic. Wasted Energy and Time! It would not be surprising if computers burn more cycles on date/time conversions and computations than all the other data conversions and computations. When reading a record a computer can use more processors cycles converting the date/time than all of the other data fields in the record. The new date/time will: Aid in reducing operations cost: The Gartner Group reports, “A typical enterprise corporation will devote 35-40% of its programming budget to develop and maintain, extract and update programs whose sole purpose is to integrate information. “ o Enterprise operating departments are running 24×7 integrating data from different sources. Aid in the Fostering of Reuse and Agility through standards: o “There is a significant trend toward organizations enforcing standards …” “These advantages reduce costs of implementation efforts while also allowing the organization to reduce skills and training costs since there are fewer skill sets to be supported.” Gartner 2008. o Standards! Today every processor from your cell phone to super computers has: Standardized binary integers established by the IBM System 360 in 1964. Standardized floating point established by the IEEE 754 standards in 1985. But date/time is in disordered. The IBM 360 and IEEE 754 succeeded because they were clearly superior and included precise internal values. Before the IBM 360 binary integers were many different sizes and most did 1’s complement arithmetic The ISO 8601 Date and Time Standard is a master piece in defining external date and time that is people readable but it has no internal computer date/time specifications. The reason was that all know formats were seriously deficient. Ultimate Date/Time is the only software that provides an internal specification for all ISO 8601 date type, time types and timezone types. It is compatible with all other date/time because it has a larger date range and a smaller time precision than any other date/time. The Secret! The secret was developing a mathematics technique so that the computers can add/subtract all 16 digits of date/time simultaneously using the binary register. Each bytes will add numbers up to 255 before overflowing. When adding/subtracting date/time simultaneously the computer does binary (base-2) arithmetic and therefore will get the wrong answer because date/time is: o Base-10 for years. o Base-12 for months. o Base-28, 29, 30 or 31 for days (this makes a hardware solution impossible). o Base-24 for hours. o Base-60 for minutes and seconds. However, if another wrong number is subtracted the correct answer results, a case where two wrongs make a right. o The difficulty was how to determine what wrong number must be added or subtracted. The first version was 25% faster while the fourth version is 10 time faster. o This mixed-radix idea is so preposterous a concept that the idea of a mixed-radix date/time algorithm has never been proposed or even discussed. What is a mixed-radix number? o Wikipedia, the free Internet encyclopedia, gives the example: The time of 32 weeks, 5 days, 7 hours, 45 minutes, 15 seconds, and 500 milliseconds o A mathematician would write it as: 32∞5772445601560.5001000 o The international date/time standard ISO 8601 would write it as: P32W5DT7H45M15.500S Too Slow! Adding/subtracting individually each of the six fields (seconds, minutes, hours, days, months and years) is very slow. The reasons are: A computer can add two 16 digits numbers with the same speed as two 1 digit numbers. The actual addition is only one stage of at least 5 stages and as many as 21 stages for the computer instruction so the computer uses more cycles (more time) in preparation to add than the actual addition. “If” instruction are stoplights to computers so for example the comparison; if seconds is equal or greater to 60, causes the computer to stop and it must shift through the stages before it does any productive work. Computers have registers (high speed memory that can do arithmetic). Loading a register from main memory is slow. Therefore if you do date/time arithmetic one field at a time it would take these 11 steps with overflow for each of the 6 fields: 1. Load 59 seconds from slow main memory into register number 01. 2. Load 1 second from slow main memory into register number 02. 3. Add register 02 to 01 using fast memory 4. Add register 04 that contains overflow (not necessary for seconds) 5. Load 60 into register 03. The 60 is a constant so it does not load from slow memory. 6. Compare register 01 to 03 using fast memory 7. If equal or greater. Tyhis is a stop light. 8. Subtract register 03 from register 01 using fast memory. 9. Load a 1 into register 04 for overflow. The 1 is a constant 10. Else zero overflow register. The zero is a constant. 11. Store register 01 back into slow main memory. “Do loops” allow these same instructions to be repeated for each field except for days which varies by month and leap year. However, this increases the number of instruction and requires indexing that makes it slower yet. Tradition! Almost every line of software converts years-month-days-hours-minutes-seconds to total sequential (incremental) seconds to do date/time arithmetic. Gregorian date 1999-12-31 23:59:59 +1 2000-01-01 00:00:00 Unix time in seconds 946684799 +1 946684800 Ultimate Date/Time 0119991231235959 +01 0120000101000000 It seems unbelievable but mathematicians have found the following formula to be faster than adding individual fields because they do not have any “if” statements or do loops and because operations are mostly register to register. A fast representative formula that converts the Gregorian calendar date/time to incremental (sequential) seconds. seconds = ((1461 * (yyyy + 4800 + (mt - 14) / 12) ) / 4 + (367 * (mt - 14 * ((mt - 14) / 12))) / 12 (3 * ((yyyy + 4900 + (mt - 14) / 12) / 100)) / 4 + dd – 32075) * 86400 + hr * 3600 + mn * 60 + sc A fast representative formula that converts incremental (sequential) seconds to the Gregorian calendar date/time. mn = seconds/60 sc = remainder hr = mn/60 mn = remainder days = hr/24 hr = remainder l = days + 68569 n = (4 * l ) / 146097 l = l - (146097 * n + 3) / 4 i = (4000 * (l + 1) ) / 1461001 l = l - (1461 * i) / 4 + 31 j = ( 80 * l ) / 2447 dd = l - (2447 * j) / 80 l = j / 11 mt = j + 2 - (12 * l) yyyy = 100 * (n - 49) + i + l However, these formulas don’t allow adding years-months-days because of leap years and months have an uneven number of days and days can be 23 hours or 25 hours with the daylight change. The Impossible Made Possible! Ultimate Date/Time does simultaneous addition and subtraction so it gets the correct answer that humans get. Some vendors have separate routines to add years, month or days. However, because they add/subtract one field at a time they sometimes get the wrong answer depending on the order they are done. The following examples show that sometimes the months must be added or subtracted before the days and sometimes the days must be added or subtracted before months if not done simultaneously. The correct solution is underlined. Humans 2011-06-30 +01+01 2012-07-31 Computer+D+M 2011-06-30 +01 2011-07-01 +01 2011-08-01 Computer+M+D 2011-06-30 +01 2011-07-30 +01 2011-07-31 Humans 2011-07-31 -01-01 2011-06-30 Computer-D-M 2011-07-31 -01 2011-07-30 -01 2011-06-30 Computer-M-D 2011-07-31 -01 2011-06-30 -01 2011-06-29 Humans 2011-05-31 +01+01 2012-07-01 Computer+D+M 2011-05-31 +01 2011-06-01 +01 2011-07-01 Computer+M+D 2011-05-31 +01 2011-06-30 +01 2011-07-01 Humans 2011-07-01 -01-01 2011-05-31 Computer-D-M 2011-07-01 -01 2011-06-30 -01 2011-05-30 Computer-M-D 2011-07-01 -01 2011-06-01 -01 2011-05-31 Marvel of Marvels! The new mixed-radix algorithm with the same set of instructions supports arithmetic for all 39 combinations of ISO date type, time types and timezone type. Over 25 years ago, computer people for all over the world determine the computer industry needed support for 39 = (3 + 3×4 +3×4×2) combinations of: ISO 8601 date types (formats). Calendar Day-of-year Week-of–year ±YYYY-MM-DD ±YYYY-DDD ±YYYY-Www-D ISO 8601 timezone types. “Z” for UTC former GMT ±00:00 time-zone offset from +14:00 to -12:00 At best, other date/time software supports the four underlined types. Chance events resulted in this invention! Although a mathematics and economics operations research major I took a course in computer arithmetic logical unit register (special memory that does arithmetic) design from the electrical engineering department. The professor in this course discussed the 15% to 20% additional circuitry that would allow a binary register to also do decimal arithmetic. It is faster to have separate registers. The professor made the chance remark that if the Babylonian and Greek base-60 system had become the world standard rather than the Egyptian base-10, the same technique could be used for base-60 as for base-10. The proposed solution was for octal hardware rather than today’s hexadecimal hardware. About a year into this project, about 4pm one day I was frustrated with the slow speed of the existing techniques for doing timezone arithmetic, which computers do zillions of time a day. By expanding the date range to ±9999 years and the precision of fractions of seconds to 10 digits I had made it slower. Then by chanced I remembered my professor’s remark but realized my software solution had to take advantage of existing binary hardware features. o By midnight I had the addition working. o The next day I had the subtraction working. It took several months to get a fast method for month-day arithmetic. A super fast way was invented to validate and also determine the days in the month and leap years without division. It is so fast the computer usage can hardly be measured for a million validation checks. C/C++ for speed does not check for 30 days months so June 31 will become July 1. For speed Java permits the date/time checking to be turned off. Developers are never satisfied! Each version of date/time required revision of the tools to support the new abilities. However, the line of codes for the tools did not increase because each time ways were found to do more with less code (optimization). Version 1 of the mixed-radix algorithm only did time zone conversion for Gregorian calendar hoursminutes-seconds and fractions-of-seconds. It was 25% faster. It eventually became 33% faster. Next when making a presentation a developer complained, “Why couldn’t you do years-monthsdays?” Version 2 implemented years-months-days, months-days or years-days. It was 50% faster because I got smarter at doing more with less. Next when making a presentation a developer complained, “Why couldn’t you do fractions-of-hours for payroll?” Version 3 added fractions-of-minutes, fraction-of-hours and fraction-of-days. It was 75% faster. Next when making a presentation a developer complained, “Why couldn’t you do week-of-year for production control?” Version 4 added week-of-year and day-of-year. It is 90% faster. Now when making presentation developers complain, “Why do you want so much for ten years of innovation?” They think for the good of computer industry I should be satisfied with the honor of inventing it and give it away free so that they can maximize their profits. I wonder if something happened to me tomorrow if anyone will duplicate it in the next 50 years. If I knew what I know today I could have programmed this on the IBM System 360 50 years ago. Explanation of the stages! An “if” statement causes the stages to restart. The “if” here is instruction fetch and not an “if” statement. Basic five-stage pipeline in a RISC machine: o o o o o o IF = Instruction Fetch ID = Instruction Decode EX = Execute, MEM = Memory access WB = Register write back). In the fourth clock cycle (the green column), the earliest instruction is in MEM stage, and the latest instruction has not yet entered the pipeline. Scalar Vector Processor! Although a SIMD (Single Instruction Multiple Data) processors would provide some advantages it like using a shotgun to kill a fly because theSIMD is best for large arrays. Most computer will have two or more SISD (Single Instruction Single Data) processors and any SIMD processor will be shared with SISD. Also the SISD is best for calculating the unique correction amount that must be subtracted . Get Smart! The industry must Get Smart and standardize with Ultimate Date/Time using the world’s most advanced tools as weapons and by CONTROL to wipe out KAOS.i i Get Smart was an one of the longest running American comedy television series that satirizes James Bond and Inspector Clouseau. CONTROL was a secret U.S. government counter-intelligence agency based in Washington, D.C. Its nemesis was KAOS, "an international organization of evil", which for tax reasons was a Delaware Corporation.