Happy Chinese New Year
Tomorrow, January 29, 2006, is Chinese New Year, the Year of the Dog. However, North America being 13 hours behind China, it is already January 29, 2006 there. To all my Chinese and Asian friends, a Happy and Prosperous New Year.
To continue the tradition that I started last year, 353 days ago (remember the lunar year is 354 days), here's some more Chinese trivia:
- We'll have a leap month this year. The eighth month will be called the leap seventh month. It runs from August 24 till September 21. It misses the autumnal equinox, which is on September 23, by two days.
- In traditional Chinese age counting (虚岁), a new born baby is one year old. And everybody's age gets incremented by one on Chinese New Year. So a baby born a day before Chinese New Year could be two years old a couple of days after birth.
- The animals are not officially part of the calendar. It is a way to ease the memorization of the official year name, which is an interesting numbering system in itself. Let me explain,
The Chinese year has a two character name. The first one cycles in a set of ten stems: 甲, 乙, 丙, 丁, 戊, 己, 庚, 辛, 壬, 癸. The second one cycles in a set of twelve branches: 子, 丑, 寅, 卯, 辰, 巳, 午, 未, 申, 酉, 戌, 亥. And the trick is that on the Chinese New Year, both characters are incremented. Thus the new year is 丙戌, while the year just ended is 乙酉.
Since lcm(10, 12) = 60, the two character year names cycle through every 60 years. As you can imagine, seeing the beginning of a new cycle (the year 甲子) is an exciting event, akin to seeing the beginning of a new century in western calendar. The cycle being 60 instead of 100 means that almost everyone get a chance to experience it. Very pragmatic. (But don't try to start a JSR for java.util.ChineseCalendar.)
Historical events are recorded in the two character year names, usually coupled with the dynasty name and the emperor's era name for disambiguation. The most important events are usually recognized by the two character name only. 甲午, for example, almost always refer to the First Sino-Japanese War of 1894. Similarly, 庚子 almost always refer to the 1900 Boxer Rebellion. 甲申 marks the fall of the Ming Dynasty in 1644, and 辛亥 marks the 1911 revolution that forced the Last Emperor of Qing Dynasty (1644-1912) to abdicate the next year, at the age of 6.
Free Java Opens Doors To .NET World
It's ready folks. Make sure your library works with it.
I spotted this message on the GNU Classpath mailing list yesterday:
Michael Kay: I'm working on a port of the Saxon XSLT and XQuery processor to the .NET platform using IKVMC. (You may already be familiar with this as Saxon.NET, but I'm now looking at folding it into the core product).
I've followed the Free Java (GNU gcj, Apache Harmony, GNU Classpath), .NET (Mono), and XML (XQuery, XSLT) spaces separately for a long time now. Today's post links the three together in a uniquely surprising yet logical fashion.
For people who don't know, Michael Kay is editor of W3C XSLT 2.0 and XPath 2.0 standards, and author of the popular open source XSLT/XQuery implementation Saxon. IKVMC is the Java bytecode to .NET CIL compiler from the IKVM project by Jeroen Frijters. It turns jar files into .NET assemblies for use under both Microsoft .Net Framework and Mono. It uses GNU Classpath as its underlying class library.
I think this move sends several signals to the wider Java community, especially those who dismissed the GNU Classpath effort when it started in the last millennium as a waste of time and have not revisited it since:
- GNU Classpath is more complete than its 0.20 designation suggests. Most non-Swing Java 1.4 applications libraries should be runnable with it.
- GNU Classpath based compilers and runtimes have already fulfilled their potential of taking Java to new and unexpected places.
- It pays to make sure that your library works with both the Sun JDK and free Java because it will take you places you never thought you could go.
Take a look at the free tools. You may have already won a free ticket to those places (natively compiled executables, .NET environment, bundled with a Linux distributions and end up on millions of computers)! if your code compiles and runs with a free compiler and runtime.