This is a minor update to add support for iOS 4.2 to the app. The primary user-noticeable benefit will be support for multitasking on the iPad. The new versions are now available on the Apple App Store and I recommend that all current users download the upgrades (they are free upgrades for existing users of the apps).
Wednesday, November 17, 2010
Sunday, September 19, 2010
There is 1 fairly significant enhancement as well as some iPad-specific mods and bug fixes in this version. The new versions are now available on the Apple App Store and I recommend that all current users download the upgrades (they are free upgrades for existing users of the apps). All of the following changes are in the HebrewBible update and the first two are also in the BiblicalHebrew update:
- Enhancement: Added Search functionality to Words - if you know the English equivalent of a Biblical Hebrew/Aramaic word, you can search for all words that contain that text in one of their definitions. This function supports wildcards (see below for examples) as well.
- Enhancement: Built with iOS SDK 4.1 but will run on any iPod Touch, iPhone, or iPad with at least iOS 3.0.
- Enhancement: This version contains a number of iPad-specific enhancements to better conform to Apple HIG (Human Interface Guideline) standards. (The Temporary Bible Version change picker is now displayed in a popover element, the "Read Book" button has been replaced with an "Entire Book" switch setting).
- Fix: Re-instated "Translate" button in Words tab on the iPad.
- Fix: Some minor fixes were made, fixed issue where switching to next/prev chapters was positioning incorrectly sometimes.
With the new search functionality, "wildcards" can be used (e.g. - you can use a "_" character to represent any single character and a "%" character to represent any number of characters). An example of the search wildcard feature might be useful to understand how wildcard characters can be used - the following show examples of the type of results that would be returned for different searches:
a. Searching for "man" locates all Hebrew words that have the those 3 consecutive characters somewhere in the definition for the word (so, for example, it picks up definitions that contain the words "manger, "Manasseh", "man"):
b. Searching for "ma_n" locates all Hebrew words that have the characters "ma" followed by some other character (which is represented by the "_") and then an "n" somewhere in the definition for the word (so, for example, it picks up definitions that contain the words "magnificence", "remain", "Maon"):
Searching for "% man %" locates all Hebrew words that have the unique word "man" somewhere in the definition for the Hebrew word:
Friday, September 3, 2010
Thursday, August 26, 2010
Hot on the heels of my brand new Biblical Hebrew app is the release of version 4.4 of my Hebrew Bible app! This version is a minor update that is primarily for improved iPhone iOS 4 and iPad functionality. The new version is now available on the Apple App Store and I recommend that all current users download the upgrade (it's a free upgrade for existing users of the app). The changes:
- Enhancement: Fast app switching in iOS 4.
- Enhancement: Pickers now displayed in popover element on iPad to better conform to Apple's HIG (Human Interface Guideline) standards.
- Enhancement: Improved default viewing size of Root pages when "Big Text" is set off.
Users who have both the Biblical Hebrew and Hebrew Bible apps will find that the multitasking (fast app switching) in iOS 4 makes it very convenient to quickly toggle between the two apps while maintaining the current "context" in each app.
Tuesday, August 24, 2010
My latest app is now available on the app store: Biblical Hebrew (or goto iTunes). The Biblical Hebrew application is designed for learning (or improving ones knowledge of) Biblical Hebrew and Aramaic. It is a "universal application" (e.g. - you only buy it once and it runs on any of the iPhone, iPod Touch, and iPad devices that you own) and it is entirely self-contained (e.g. - no Internet connection is required). The application is comprised of three main components (each represented by a separate tab-bar tab in the application)
- Dictionary: The Dictionary tab provides two quick mechanisms to lookup Hebrew words:
- Roots: One of the really beautiful aspects of the Hebrew language is that all of the roots of the verbs and nouns are derived from two-letter units that are usually assembled as part of a three letter root. By selecting the first two letters of the root, a listing will be displayed of all Hebrew and Aramaic words (Aramaic words will display in green in the summary) that begin with those two letters with a brief English translation. Once the list is displayed, tapping on a word will display a popup with further detail about the selected word. It is also possible to display a list of all the verses in the Hebrew Bible that contain that word or the BDB page for that word.
- Strongs: If you know the Strongs number of a Biblical Hebrew/Aramaic word, you can go directly to the detail information about that word.
- The Hebrew (with vowels) representation.
- The phonetic pronunciation of the Hebrew.
- The Strongs transliteration of the Hebrew.
- The Strongs#.
- The language classification (Hebrew/Aramaic/Name).
- The part-of-speech.
- A button to access a list of all verses in the Hebrew Bible where that word appears.
- A button to access the BDB page related to that word.
- Common definitions.
- Common translation.
- TWOT (Theological Wordbook of the Old Testament) number reference.
- Lexicon: The Brown-Driver-Briggs (BDB) HebrewLexicon is probably the most commonly used Biblical Hebrew Lexicon. A complete copy of this lexicon is accessible from within the application. In additon, individual pages can be displayed via the Dictionary word lookup functionality.
- Grammar: Gesenius' Hebrew Grammar is the standard Biblical Hebrew reference grammar in English. A complete copy of this grammar is accessible from within the application.
Note: Due to the density of the text in the Lexicon and Grammar texts, this application is best viewed on an iPad. However, it is still very usable on an iPhone or iPod Touch (the Lexicon and Grammar texts will be best viewed on those devices in either Landscape orientation or by "pinch zooming" the text).
Tuesday, August 10, 2010
I really like programming with the Lisp programming language and, even though I rarely do much Lisp programming these days, it has affected how I program in other languages. In the past, I've blogged a lot about both Lisp macros and continuations; however, I still occasionally get questions from non-lispers regarding Lisp macros and continuations as most programming languages don't support them to the same extent that Lisp does. It's understandable that many people struggle with grok'ing the concepts as it's kinda like the Bedouin trying to understand icebergs ;-). With some people, it helps to use analogies, so I'll try to do that here. As with most analogies, mine will be a bit flawed and I'll intentionally be glossing over and simplifying things; however, I hope these analogies will give non-lispers a bit of a "feel" for what Lisp macros and continuations are like.
A major differentiator of Lisp is it's ability to create custom, domain-specific languages. A key "enabler" for this is Lisp macros which give the programmer the ability to create new language constructs (macros in many programming languages only provide a text substitution mechanism). I'll use a natural language analogy to try to illustrate how this is different from what non-Lisp languages provide. Both Indo-European and Semitic written languages create words by combining letters of the alphabet that represent the individual sounds that make up a word. So, in English, the word for a female spouse is "wife" while, in French, it is "épouse". In English, the written word "wife" is the combination of symbols that represent the sounds associated with the letters "w", "i", "f", and "e", so it has a different written representation from the same concept in French. In some countries in the East (most commonly, in China and Japan), Kanji characters can be used for written words. Kanji is different from most other written script in that there is no attempt to represent the spoken word in the written representation of the word. Instead, it uses a pictogram-like representation of the word. In both China and Japan, although the spoken languages are very different, the Kanji representation of many words is the same (differences arise because new words were subsequently added in one country but not in the other). So, for example, in Kanji, the word for a female spouse is actually a pictogram representing the combination of the Kanji pictograms for "woman" + "holding" + "broom-like object" as depicted below:
Therefore, once a new pictogram has been composed and accepted for use, that pictogram is the same as any other pictogram in Kanji. While in English, there are 26 symbols (letters of the alphabet) that represent the basic "building blocks" of the written language and you can't add any more, in Kanji, there are thousands of symbols (pictograms) that represent the basic "building blocks". In the same way, when a Lisper creates a macro, he is creating a new "building block" in Lisp. The new macro will be the same as any other "built-in" language construct (while there are some things that you can do with a function, there are some things that can only be done with a macro). So, if (for example) a Lisper wants to add a new looping construct to Lisp, he might create an "iterate" macro in his custom language. This new construct (when used in the custom DSL) would be no different from "standard" built-ins like "do" or "if". So, in this way, macros are analogous to Kanji - you are not limited to a core set of "building block" constructs in the language and you can expand that set of core constructs as/when needed.
Continuations give programmers the ability to save the execution state at any point and return to that point at a later point in the program. In the past, I've talked a lot about using continuations to develop complex web applications. I particularly liked Avi Bryant's "elevator pitch" definition of why continuations are useful for web apps:
"Continuations bring precisely the same benefits to traditional web development that subroutines bring to GOTOs"
However, continuations can be used for other purposes as well. I'll try to use a personal analogy to illustrate what using continuations is like. Music often has the ability to take you to a particular place or state of mind. In October 1973 I had just started university in the US when the Yom Kippur War broke out. I dropped out of university and flew back to Israel. There was a song that was playing on the radio quite frequently at that time in Israel. It was called "Lu Yehi" (roughly translated as "Let it be" or "May it be") and it really captured the feelings and the mood of the country at that time. A translation of the lyrics is available online; however, as with most songs (and most translations), the original is best and translations don't really do it justice. Anyhow, flash forward to the year 2008: I hadn't been back to Israel since leaving in 1980 and I hadn't spoken Hebrew in almost as long. Then, one evening, I was having a drink and looking out at the lights of the ships in the bay when I started humming some of the words to the song. Not expecting to find anything, I did a search on YouTube. To my surprise, it was there! I pressed "play" and suddenly, I was back in Israel 35 years ago. As I listened to the Hebrew words, all the same feelings, thoughts, and emotions from that time flooded back.
That's what continuations provide to a programming language - the ability to jump back to a particular place in the code, retaining all of the program "state" that was in place at that time.
So, I don't know whether these analogies worked for you or not, but, for me, they capture part of the essence of these two key features of Lisp.
Wednesday, July 14, 2010
In my previous post, I described the Hebrew and BiDi support available in Emacs24 (currently, development version only). As I mentioned in that post, BiDi support is built into Emacs but there are several alternatives for actually entering Hebrew text and Emacs "input methods" are probably the preferred means most Emacs users will use. Although Emacs24 comes with a Hebrew input method (based on the keyboard layout used on Israeli keyboards), I use my own custom Hebrew keyboard layout and I have added that layout to Emacs as a custom input method. The keyboard layout is described on my Hebrew-ZC Keyboard Layout page; however, I'll summarize my rationale for creating a custom Hebrew keyboard layout here as well:
- I am a fast English touch-typist and only type Hebrew occasionally. Therefore, I prefer a layout that attempts to match Hebrew letters to English phonetic equivalents. This lets me make reuse my "finger muscle memory" (http://en.wikipedia.org/wiki/Muscle_memory) when typing Hebrew. I don't want to learn a completely new keyboard layout that I will only use for the occasions that I type in Hebrew.
- I want to keep punctuation, special characters, and numbers on the same keys (as much as possible). Most Hebrew keyboard layouts move special characters and punctuation characters around and this drives me crazy!
- I mostly type Modern Israeli Hebrew (MIH), usually without vowels. But, I also sometimes need to be able to enter vowels, Biblical Hebrew-specific characters, cantillation marks, and accents. Therefore, the keyboard layout should focus on making modern Hebrew fast to type but also make Biblical Hebrew fairly intuitive.
My custom hebrew-zc Emacs input method (along with installation and usage instructions included as comments at the beginning of the code) is here: hebrewzc.el.
If you are more accustomed to using the SIL or Tiro Hebrew keyboard layouts, Yair F. has created a custom hebrew.el file with those keyboard layouts defined as Emacs input methods. The full list of Hebrew keyboard layouts that he supports in that file are: SI-1452, Lyx, Full, Tiro and Sil. For Yiddish, he also supports keyboard layouts for: Royal (Based on Royal Yiddish typewriter) and Keyman (Phonetic qwerty). Remember: for any Emacs input method, you can use 'M-x describe-input-method' to see the keyboard layout.
For a full description of input methods, refer to the Emacs24 info documentation from within Emacs: 'C-h i m emacs g input'.
Thursday, July 8, 2010
I use Emacs a lot - not just for programming, but for many other tasks as well. It has always irritated me that Emacs didn't support Hebrew text input and that I would have to switch to another editor whenever I needed to write something in Hebrew. Well, with Emacs version 24, that will change! I've been playing around with the development version of Emacs24 (actually, although I also tested on Emacs24, I've mostly been testing on the development version of Aquamacs which is Emacs packaged with a number of frequently-used extensions for use on the Mac) and have been impressed by how well Emacs is starting to support Hebrew input with proper BiDi display (due in large part to the work and perseverance over the past few years by Emacs developer Eli Zaretskii). Here is a screen shot to illustrate both a mixture of English and Hebrew lines of text and Hebrew embedded in an English XML code snippet (in both cases, the proper Left-To-Right (LTR) and Right-To-Left (RTL) display of the text is maintained):
At the moment, this is only available in the development version of Emacs/Aquamacs. Therefore, unless you're technically-savvy, you probably won't be able to use it until the next official release of Emacs (the above picture is just to whet your appetite!). However, any developers who want to give it a try can do so by downloading and building the Emacs development source. Here are the necessary steps for building the Aquamacs version: From a terminal, download and build Aquamacs24: git clone git://github.com/davidswelt/aquamacs-emacs.git cd aquamacs-emacs/
git checkout -t origin/aquamacs24 (note: depending on git version, you might need to do: git checkout origin/aquamacs24)
Then, drag the Aquamacs.app application from the nextstep directory to your Applications directory. Currently, bidi support is turned off by default in Emacs24 (this will change before the official release of Emacs24), so you will want to turn it on in your .emacs file:
(setq-default bidi-display-reordering t)
That's all you have to do to enable bidi support! Emacs will "automatically" recognize whether you're typing a LTR or a RTL language and display the text appropriately (according to the rules specified in the Unicode Bidirectional Algorithm (described in Annex 9 of the Unicode Standard)). You can "force" RTL or LTR text by either setting the "bidi-paragraph-direction" variable in Emacs or by using one of the standard mechanisms described in the Unicode Bidirectional Algorithm page; however, for the most part, you will just let Emacs DWIM. You can enter Hebrew by either enabling system-wide Hebrew input (e.g. - as described here for the Mac) or by enabling a Hebrew input method locally in Emacs (e.g. - using "C-x RET C-\ hebrew"). Most Emacs users will probably prefer the Hebrew input method approach as it allows you to continue using standard Emacs command keys while the system-wide overrides will affect command key usage. If you enable an Emacs Hebrew input method, you can toggle between Hebrew and your default language by pressing "C-\". Anyone wanting to read about the main design decisions that went into the development of bidi support in Emacs can read Eli Zaretskii's "Bidirectional editing in Emacs -- main design decisions" post on the emacs-bidi list archive.
Thursday, July 1, 2010
This version fixes a couple of nasty bugs that caused crashes (including one that surfaced with the release of iOS 4). The new version is now available on the Apple App Store and I recommend that all current users download the upgrade (it's a free upgrade for existing users of the app). The changes:
- Fix: Fixed bug when switching to Aramaic when in a non-Torah book.
- Fix: Fixed crash (only on iOS 4) when changing Bible version.
- Fix: On flipside view, moved buttons so that messages weren't obscured.
Saturday, May 29, 2010
The latest version of my Hebrew Bible app now has support for the Brown–Driver–Briggs Hebrew Lexicon (BDB). This is as a result of the work that David Troidl has done in creating a BDB outline linking words defined in the Brown–Driver–Briggs Lexicon to their Strong's Concordance numbers. By having a cross-reference of the Brown–Driver–Briggs pages to specific Hebrew words from the Tanach, I have been able to link directly to the relevant Brown–Driver–Briggs page for each Hebrew word. Brown–Driver–Briggs support is now in 3 different sections of the app (the following screen shots are from the iPad version of the app):
- When reading the "Hebrew(reader) version, it is possible to touch any word and bring up a popup that displays the definition of the word with buttons that will display either all occurrences of the word in the Tanach or a Brown–Driver–Briggs page that relates to that word:
- When using the "Words" functionality, it is possible to select a word from a 2-letter lookup page and then also access the Brown–Driver–Briggs information, or directly search for a word by Strongs number and then access it's definition and Brown–Driver–Briggs information:
- Lastly, it is also possible to browse the Brown–Driver–Briggs Lexicon directly from the "BDB" tab by either selecting a section or page from the Table of Contents or by just paging through the pages:
There are 2 fairly significant enhancements as well as some bug fixes in this version. The in-app settings enhancement will make it easy for users to quickly change the default settings of the app without going out to the standard Settings app to do so. The Brown–Driver–Briggs (BDB) Hebrew Lexicon is probably the most commonly used Biblical Hebrew Lexicon and this enhancement to the HebrewBible app makes the app that much more useful for students of Biblical Hebrew or the Hebrew Bible. Because the app is displaying the PDF version of BDB, users will probably find it more convenient to view the BDB either on an iPad or in landscape mode on the iPhone. The new version is now available on the Apple App Store and I recommend that all current users download the upgrade (it's a free upgrade for existing users of the app). The changes:
- Enhancement: Added in-app settings (accessible via "gear" icon on Bible view).
- Enhancement: Added access to full text of BDB Lexicon (as a separate tabbar item).
- Enhancement: Added access to relevant BDB page from Hebrew word popup.
- Fix: Fixed bug where Psalms Chapter 88 was listed twice in picker instead of Chapter 89.
- Fix: Fixed rare bug which caused crash when switching to a different Bible version.
Wednesday, May 12, 2010
This version includes a lot of minor enhancements. The new version is now available on the Apple App Store and I recommend that all current users download the upgrade (it's a free upgrade for existing users of the app). As with the previous version, this version is a "universal" app in that a customer only needs to buy it once and it will run on all the iPhone, iPod Touch (1st or 2nd generation), and iPad (a minimum of iPhone OS 3.0 is required on any device) devices that the user owns. The changes:
- Enhancement: Updated Hebrew(reader) text to WLC version 4.12.
- Enhancement: Improved performance of Bible text display with alternative fonts.
- Enhancement: Added display of true Strongs transliterations to word definitions.
- Enhancement: Eliminated superfluous spaces after certain characters for improved readability.
- Enhancement: Added Part-of-Speech description to word definition popup.
- Enhancement: Added word definition lookup by Strongs number.
- Fix: Changed alignment of Translate form for better visual presentation on both iphone and ipad devices.
Thursday, April 1, 2010
The latest version of my Hebrew Bible app was released on April 1st (to coincide with the release of Apple's iPad in the USA on April 3rd). This version is a "universal" app in that a customer only needs to buy it once and it will run on either the iPhone, iPod Touch (1st or 2nd generation), or iPad (a minimum of iPhone OS 3.0 is required on any device). It is a free upgrade for current users of the app.
- The application has been modified to take advantage of the greater screen size of the iPad when run on that device.
- New fonts (the Culmus Ancient Semitic Scripts) have been added so that users can select (via preferences) alternative fonts with which to view the Hebrew Bible text.
The new fonts are based on script styles used at different times throughout history. So, for example, you can choose to read the Hebrew Bible in a font that looks like a script style in use at the time of Hezekiah or script styles that were in use at the time of the Second Temple! There are multiple Paleo Hebrew fonts, "square" or "Assyrian" Hebrew fonts, and Aramaic/Canaanite/Phoenician fonts included. The Paleo Hebrew fonts could also be useful for someone who is attempting to learn to read Paleo Hebrew as there are few large digital texts that are readily available that one can use when learning to read Paleo Hebrew script. The Keter Aram Tsova font replicates the script found in the Aleppo Codex and is a lovely "square" or "Assyrian" Hebrew script that supports vowels and cantillation marks. There is also a font that is similar to the Ashkenazi Ktav Stam writing in which Sifrei Torah, Tefillin, Mezzuzot, and the Five Megillot are written. Several Aramaic fonts are provided for reading the Aramaic Torah and, for fun, a Proto-Canaanite and a Phoenician font have also been included.
The additional font support is dependent on iPhone OS version 3.2 (which is currently only available on the iPad). Therefore, if the application is used with a device that is not running iPhone OS version 3.2, only the default font will be used.
When reading the Hebrew text without vowels, any of the following fonts can be used. However, when reading one of the versions that have vowels or cantillation, only the default font, Keter Aram Tsova, and Keter YG fonts can be used (the other fonts are not meant to be used with vowels or cantillation). Here is an example of the first line of the Genesis text in the iPad rendered with the different fonts (The fonts are listed in chronological order. The date next to the font name indicates the approximate century that the script style dates from):
Proto Canaanite (27C BCE):
Phoenician Ahirma (12C-10C BCE):
Hebrew Paleo Gezer (10C BCE):
Hebrew Paleo Mesha (9C BCE):
Hebrew Paleo Siloam (8C BCE):
Hebrew Paleo Lachish (6C BCE):
Hebrew Square Isaiah (2C BCE):
Hebrew Paleo Qumran (1C BCE):
Hebrew Square Habakkuk (1C BCE):
Hebrew Square Ben Kosba (2C CE):
Hebrew Square Bet Shearim (2C CE):
Keter Aram Tsova (10C CE):
Keter YG (10C CE):
Hebrew Samaritan (14C CE):
Hebrew Sofer STaM Ashkenaz:
In addition, the following Aramaic fonts are provided that can be used when viewing the Aramaic (without vowels) version of the Torah:
Aramaic Early BR Rkb (8C BCE):
Aramaic VIIBCE (7C BCE):
Aramaic Imperial Yeb (5C BCE):
Wednesday, January 27, 2010
The new version is now available on the Apple App Store and I recommend that all current users download the upgrade (it's a free upgrade for existing users of the app). The changes:
- Fix: Changed "i" icon to a gear icon and moved it to bottom/center of Bible selector screen to make it easier to access in order to change Bible versions or to cache content (a number of people complained that it was difficult to press the small "i" icon, so this change will make it much easier).