New release of the Hebrew Date Plugin for WordPress

Posted by KosherJava on 04 Jul 2010 - כ״ב תמוז תש״ע | Filed under: Software Dev, WordPress

WordPress MugMike who took over development of the WordPress Hebrew Date plugin in 2006, released a new version of the plugin. The WordPress Hebrew Date plugin is now hosted at the WordPress plugin repository. This should make it easier for people to find and update the plugin. New in this version is support for the WordPress 3.0 default theme, a general rewrite, and expansion of the API calls intercepted by the plugin. See the changelog page for a more detailed list of all the changes. Please contact Mike with any suggestions, comments or bugs.

FAQ: Why Some Zmanim Never Occur (Developers Beware)

Posted by KosherJava on 02 Jun 2010 - כ׳ סיון תש״ע | Filed under: Software Dev, Zmanim

England Twilight Map

Question:

Why do Some Zmanim Never Occur in Some Locations? (Developers Beware)

Answer:

While most people realize that the sun may not rise or set in the Arctic and Antarctic Circles (see the Star-K’s When Does One Pray When There Is No Day), many are not aware that some twilight dips will not occur during part of the year as far south of the Arctic Circle as London. For example around the summer solstice in London (on the zmanim map) the sun will never dip far enough below the horizon to reach Alos 16°. This happens in London from June 5th till July 8th. The image seen on the top right (original at timeanddate.com) shows various civil twilights centered on London on Midnight June 21st. Look carefully to see the various bands of twilight. Gateshead will not have Alos 16° from May 16th through July 28th, while Anchorage, Alaska (yes there is a Frum Shul in Anchorage with an interesting davening direction issue that will require its own post) will not have Alos 16.1° from April 25th to August 20th. Zmanim based on sunrise such as Also 72 that is a 72 minute offset of sunrise can be calculated as long as sunrise can be calculated, something that will happen as long as you are not in the Arctic or Antarctic Circles.
For this reason, the Zmanim API will return a null when a zman will not happen. A Long.MIN_VALUE will be returned when a long is expected such as in the case of a Shaah Zmanis. While an inconvenience to developers who have to code for this, the alternative of a default date would mean that developers unaware of this would return incorrect zmanim, something far worse than a program error from a NullPointerException.
In recent weeks two publicly available programs using the Zmanim API ran into issues due to nulls returned for early alos times. Being something not anticipated by the developers, the nulls generated errors in the programs that quickly led to fixes. For this reason Yitzchok updated the Zmanim .NET project to return the nullable DateTime? instead of the regular DateTime that it had previously been returning. While the Zmanim API documentation always made the possibility of a null being returned possible, I modified the documentation to make this clear on the return value documentation for every zman. Code with the modified documentation was part of the recently released Zmanim API 1.2.1.

Zmanim API 1.2.1 Released

Posted by KosherJava on 30 May 2010 - י״ז סיון תש״ע | Filed under: Site News, Software Dev, Zmanim

Zmanim API 1.2.1 ReleaseThe Zmanim API 1.2.1 was released today. Changed in this release were the addition of a few very early Tzais zmanim, and the removal of references to the GregorianCalendar in favor of the base Calendar class to ease Noah Blumenthal’s use of the Zmanim API in a zmanim application for the BlackBerry. This change has no impact on functionality as tested using Yitzchok’s new JUnit tests. Additionally, the JavaDoc Zmanim API documentation was modified to clearly indicate that zmanim can return nulls. A followup post will have details on this.
The main download is the Zmanim 1.2.1 release zip file that includes source files and JavaDoc documentation. Also available for download (included in the above zip file) is the main zmanim-1.2.1.jar and the zmanimAstronomical-1.2.1.jar that only includes the AstronomicalCalendar. The removal of the GregorianCalendar was in this class. Additional detail on the downloads can be seen on the Zmanim Download page

Zmanim API Ported to .NET (C#)

Posted by KosherJava on 20 Apr 2010 - ו׳ אייר תש״ע | Filed under: Software Dev, Zmanim

Port City JavaYitzchok ported the Zmanim API from Java to a .NET API using C#. The Zmanim .NET project was released under the LGPL. This is a change from the GPL used by the Java API, something that may change shortly. Also part of the project was the creation of a C# version of the Zmanim CLI, matching Moshe Wagner’s Java Zmanim CLI. When developing the project, Yitzchok created the ZmanimTest JUnit test case class to confirm that the C# port output matched the Java API. I will likely add this to the core Zmanim API in the near future. The port currently relies on IKVM assemblies as can be seen in the Java references in the code sample below, mostly because of the lack of a native .NET equivalent of the Java TimeZone class. Yitzchok also created some examples of the use of the Zmanim .NET API that will be of help to developers. Below are two of the simpler examples in C# and VB.NET demonstrating a very simple use of the API to output zmanim from the console.

C#

using Zmanim.TimeZone;
using Zmanim.TzDatebase; //in Zmanim.TzDatebase.dll assembly
using Zmanim.Utilities;

namespace Zmanim.Samples.Console
{
    class Program
    {
        static void Main(string[] args)
        {
            string locationName = "Lakewood, NJ";
            double latitude = 40.09596; //Lakewood, NJ
            double longitude = -74.22213; //Lakewood, NJ
            double elevation = 0; //optional elevation
            ITimeZone timeZone = new OlsonTimeZone("America/New_York");
            GeoLocation location = new GeoLocation(locationName, latitude, longitude, elevation, timeZone);
            ComplexZmanimCalendar zc = new ComplexZmanimCalendar(location);

            System.Console.WriteLine("Today's Zmanim for " + locationName);
            System.Console.WriteLine("Sunrise: " + zc.GetSunrise()); //output sunrise
            System.Console.WriteLine("Sof Zman Shema MGA: " + zc.GetSofZmanShmaMGA()); //output Sof Zman Shema MGA
            System.Console.WriteLine("Sof Zman Shema GRA: " + zc.GetSofZmanShmaGRA()); //output Sof Zman Shema GRA
            System.Console.WriteLine("Sunset: " + zc.GetSunset()); //output sunset

            System.Console.WriteLine("Press enter to exit.");
            System.Console.ReadLine();
        }
    }
}

VB.NET

mports Zmanim.TzDatebase 'in Zmanim.TzDatebase.dll assembly
Imports Zmanim.Utilities
Imports Zmanim.TimeZone

Module Module1

    Sub Main()
        Dim locationName As String = "Lakewood, NJ"
        Dim latitude As Double = 40.09596 'Lakewood, NJ
        Dim longitude As Double = -74.22213 'Lakewood, NJ
        Dim elevation As Double = 0 'optional elevation
        Dim timeZone As ITimeZone = New OlsonTimeZone("America/New_York")
        Dim location As New GeoLocation(locationName, latitude, longitude, elevation, timeZone)
        Dim zc As New ComplexZmanimCalendar(location)

        System.Console.WriteLine("Today's Zmanim for " & locationName)
        System.Console.WriteLine("Sunrise: " & zc.GetSunrise().ToString)
        'output sunrise
        System.Console.WriteLine("Sof Zman Shema MGA: " & zc.GetSofZmanShmaMGA().ToString)
        'output Sof Zman Shema MGA
        System.Console.WriteLine("Sof Zman Shema GRA: " & zc.GetSofZmanShmaGRA().ToString)
        'output Sof Zman Shema GRA
        System.Console.WriteLine("Sunset: " & zc.GetSunset().ToString)
        'output sunset
        System.Console.WriteLine("Press enter to exit.")
        System.Console.ReadLine()

    End Sub

End Module

The current Zmanim .NET TODO list for the project includes:

  • Remove dependency to Java (IKVM assemblies)
  • The API should follow the .NET guidelines
  • Make it Linq friendly
  • Add examples how to use this project in a ASP.NET MVC site and WPF Application
  • Try to get it to work on Silverlight

Android Zmanim Using the KosherJava Zmanim API

Posted by KosherJava on 19 Apr 2010 - ה׳ אייר תש״ע | Filed under: Software Dev, Zmanim

Android ZmanimThere are various software projects using the KosherJava Zmanim API. One of the active ones is Jay Gindin’s open source Android Zmanim app for the Android platform. Activity in the project is constant. The upcoming version allows the selection of a specific calculation for zmanim you want such as the zman Talis/Tefilin pictured here. There are plans to add direction to Yerushalayim functionality using the Zmanim API. (For more information on calculating bearing using the API, see Calculating the Bearing/Direction to Har Habayis Using the Zmanim API article.) A large part of Jay’s motivations for developing the code was lezecher nishmas his nephew Shemuel Reuven ben Yehudit Rachel who, lost his battle with cancer on October 21, 2009. The one very minor issue Jay had with the API (and documentation) was the Ashkenazi spelling of the zmanim names, something that as an Ashekenazi I do not plan to change :) , but as you can see his Android Zmanim front end used Sephardi labeling. Asked how he found the project, he answered with the typical answer to this question

I Googled around, and found your project.

One of my goals with the API was to make it easy for developers to use and port. This was confirmed by Jay

I found it to be very easy to pull into my app, even on Android…no changes necessary, not even a recompile

ZmanimPlasma (Linux) Released

Posted by KosherJava on 12 Apr 2010 - כ״ח ניסן תש״ע | Filed under: Software Dev, Zmanim

ZmanimPlasmaMoshe Wagner recently released ZmanimPlasma for the Linux platform. This KDE Plasma desktop widget displays the Hebrew date and zmanim on a Linux desktop. The zmanim calculations use Moshe’s C++ port Zmanim CLI wrapper that enables a C++ program to call the Java Zmanim API. There are no current plans to make this widget available on any other platform. It can be downloaded from the Luach project download page. Moshe has in the past used the Zmanim API for use in Linux and some cross platform projects. These include the above mentioned Zmanim CLI, and Zmanim GUI that uses the ZmanimCLI.

Updated on 4/13/2010 to reflect information from Moshe explaining that this was not a port

Bearing to Yerushalayim and Zmanim Map 2.0

Posted by KosherJava on 14 Mar 2010 - כ״ח אדר תש״ע | Filed under: Site News, Software Dev, Zmanim

World mapThe availability of the Bearing to Yerushalayim and Zmanim Map was originally announced on December 30, 2007. At the time there were a number of bugs related to the Google Map API. These bugs were reported to Google and eventually fixed. Since that time, the only change was a minor JavaScript fix for IE. The Bearing to Yerushalayim worked, but the zmanim tabs had a major issue because the timezone calculated was done based on the user’s current browser timezone. This made it tricky to check zmanim in a different location or timezone than the user’s current timezone. Zmanim tab using timezonesI recently updated the map to look-up the actual timezone of the latitude and longitude selected by the user. This was implemented by doing a look-up at the geonames.org timezone web-service. The timezone is passed to the Zmanim API and used to generate the XML output of a list of daily zmanim that is displayed in the map. Since the Olson timezone database changes a few times a year, there will almost certainly be cases where the proper timezone can’t be determined. Some of these are changes of timezone names, such as the change from Asia/Calcutta to Asia/Kolkata (my host will not run the TZ Updater tool). In these cases a simple mapping between the old and new was added to the map. In cases where the timezone can’t be determined the timezone will default to GMT. Ocean locations within 10 km of land will use the closest landmass, but anywhere beyond 10 km will default to GMT. One issue with using the geonames.org webservice, is that when it is down, the map will timeout. I experimented with various ways of dealing with this, but unless my host updates the Java version from 1.4, they are too complex to use at this time.

See the Technical Information about the Bearing to Yerushalayim Map post for technical details about the original implementation.

FAQ: How Much Earlier is Sunrise on Mount Everest Due to Elevation?

Posted by KosherJava on 07 Mar 2010 - כ״א אדר תש״ע | Filed under: Zmanim

Sunrise over Everest

Question:

How Much Earlier is Sunrise on Mount Everest Due to Elevation?

Answer:

The greatest sunrise and sunset elevation effect on Earth is on Mount Everest (at 27.988056 N, 86.925278 E as seen on the Direction to Yerushalayim Map). With an elevation of 8,848 Meters (29, 029 feet), sunrise would be up to 15 minutes and 31 seconds earlier on Mount Everest than on sea level. The range of the effect is from 15 minutes and 31 seconds on June 22nd, to a “low” of 13 minutes 41 seconds earlier on March 18th. Being in a large mountain range with obstructed horizons, it is likely never actually seen that early. In addition to questions about mountains, every few months I get asked about how much earlier sunrise/set can be seen in skyscrapers. There are various halacha questions as to whether this actually affects zmanim that I will mention later. Here are some raw numbers. Burj KhalifaBurj Khalifa (at 25.197222 N, 55.274056 E as seen on the Direction to Yerushalayim Map) is the tallest building in the world. With a height of 828 m (2,717 ft), visible sunrise to someone standing on top of the crown (something unrealistic) on June 22nd would be at 5:24:56 AM versus 5:29:31 AM on sea level, a difference of 4 minutes and 35 seconds. Sunset would be 7:16:35 PM versus 7:12:00 PM at sea level, a difference of 4 minutes and 35 seconds. A more realistic scenario would be the visibility sunrise on the highest floor (the 160th) , an elevation of 672 m at 5:25:23 AM, a difference of 4 minutes and 8 seconds earlier than sea level. Sunset on the 160th floor would be 7:16:08 PM, or 4 minutes and 8 seconds later than at sea level.
As far as the halacha being affected by the elevation of buildings, the Baal Hatanya seems to indicate that tall buildings would make sunset later. See Yisroel vehazmanim ישראל והזמנים Vol II, page 910. In the Shraga Lachaim שרגא לחיים footnotes Rabbi Harfenes states that

ויש להוסיף שהו דבר תמוה לומר דעד שלא נבנו הבנינים הגבוהים היה זמן שבת התלוי בשקעה”ח (שקיעה ראשונה להגאנים ושקיעה שניה לר”ת) מוקדם, ולאחר שנבנו יש לאחר הזמנים, ועד עכשיו שהיו בניו יארק הבנינים התאומיות (טווין טאוע”ר בלע”ז) שכל א’ מהם היה בת ק”י קומות היה זמן השקיעה מאוחר, ועתה לאחר שהפילו והרסו אותם רשעים וזדים ארורים ימ”ש חזר הדבר לקדמותו להקדים זמן השקיעה.

Zmanim API 1.2 Released

Posted by KosherJava on 24 Jan 2010 - ט׳ שבט תש״ע | Filed under: Site News, Software Dev, Zmanim

Zmanim API ReleaseThe Zmanim API 1.2 was released today. The only change in this release is the removal of elevation as a factor in the calculation of all zmanim besides sunrise and sunset. Updated JavaDocs now reflect these changes. Please see the Elevation Now Only Impacts Sunrise and Sunset Calculations in the Zmanim API post for additional information.

I would like to thank the various people who contacted me on the subject.

The main download is the Zmanim 1.2 release zip file that includes source files and JavaDoc documentation. Also available for download (included in the above zip file) is the main zmanim-1.2.jar. The zmanimAstronomical-1.1.jar that only includes the AstronomicalCalendar was not impacted by this change, but the version has been updated to zmanimAstronomical-1.2.jar for consistency. Additional detail on the downloads can be seen on the Zmanim Download page

Elevation Now Only Impacts Sunrise and Sunset Calculations in the Zmanim API

Posted by KosherJava on 24 Jan 2010 - ט׳ שבט תש״ע | Filed under: Software Dev, Zmanim

Mount EverestI have received a few emails over the past year or so about the use of elevation as part of the calculation of various zmanim in the API. All releases of the zmanim API up to the current 1.1 release, use elevation to affect the calculation of all sunrise/sunset based zmanim. While my footnote on the Zmanim Calendar Generator page stated that this only impacted sunrise and sunset (quoting the Yisrael Vehazmanim and Calendrical Calculations), in practice all zmanim calculated based on sunrise and sunset were affected by elevation. An example of a zman that used elevation in 1.1, but will no longer in 1.2, is the calculation of Sof Zman Krias Shema according to the GR”A. The soon to be released version 1.2 limits the impact of elevation to sunrise and sunset only. The Zmanim Calendar Generator page already uses the latest changes to the code. To facilitate changes by ports of the API, a list of changes to the source code of the ZmanimCalendar.java and ComplexZmanimCalendar.java is available in a diff file (a proper unix diff/patch file will not be available at this time). The diff files were generated prior to updating the JavaDocs to simplify the work of anyone modifying ports of the Zmanim API. Detailed sources for not using elevation for anything besides sunrise and sunset can be found in פרק ב׳ סעיף ט׳ (pages 186-187) in the second edition of Zmanim Kehilchasam זמנים כהלכתם by Rabbi Dovid Yehuda Bursztyn.

Older Entries »

Zmanim Map Zmanim Map