Some technical details of the Word Puzzles site

As mentioned in my recent post I published the word puzzles website. Here are a few technical details for the techies among you.

As with the previous post this is based on the Text-Fabric library, this time for the Greek and Hebrew word lists used to construct a word search puzzle. Another key library is the uniseg UAX 29 segmentation library which allows one to segment a string with diacritics in it into a list of letters for each box in the grid. In pointed Biblical Hebrew of course each letter will contain diacritic marks. uniseg allows one to group the consonant with its vowels and other marks correctly for display. The same is true of the Greek where accents are common.

The site itself is hand constructed from HTML, CSS, Javascript, JQuery and a few other JS libraries. This served mainly as a update for me in these technologies since I last did a site. Hopefully a web components update lies in the near future which would enable things such as on-screen puzzle solving for the user and so on. The site will likely evolve over time with newer tech in other places also.

I should note that for anyone looking to get their feet wet with coding in these languages before diving into fully fledged frameworks like Django, or UI JS libraries like Oracle JET, Polymer or React, Dane Cameron’s A Software Engineer Learns HTML5, JavaScript and JQuery is well worth a look. It is aging just a little now, and one could fault it here or there, but overall it gives one a good clear introduction on which to build later.

Regarding hosting environments. I decided to pilot using Google Cloud Platform for this. I initially thought to try using AppEngine for it but hit a snag. The first issue is that one must configure a custom AppEngine environment because the code I use needs Python 3.6 and GCP, as of this writing, only supports up to 3.5 pre-installed. But this is not a great difficulty and getting 3.6 is ok. The second problem is harder though. It appears that they do not support the use of sqlite in AppEngine. This pretty much sank the attempt. There are various speculations on the web as to why this might be. It really doesn’t matter much because if it isn’t supported uniseg will not run as it relies on it.

So to ComputeEngine. Now CE requires more setup but with it you get more flexibility. I initially tried the smallest CE instance they offer, an f1-micro instance. This instance is simply too small. My bottle container kept getting killed and my suspicion is that it was the CPU hogging protection. I suspect I would have had memory issues too. In the end my container stabilizes at about 2.4GB resident with both Greek and Hebrew data loaded. An f1-micro only has about half a GB if I recall. After that I simply went to a n1-standard-1 (1 vCPU, 3.75 GB memory) instance. That works very well and is noticeably more performant. I won’t bore you all with the details of how I set it up unless there is interest.

But suffice to say, with a bit of playing with Google’s Cloud DNS configuration and some iptables magic I have a serviceable network presence and a nice little VM in which to further develop this project.

It’s currently built on bottle which I suspect it just not adequate so I’ll probably look at other options pretty soon.

Let me know if you have any suggestions, comments or problems.


Word puzzles in dead languages !

For some time now I’ve been working on a word games program against biblical texts. Having fun with language and meeting it in multiple contexts really helps with absorption. To this end then I have wanted to be able to produce word searches, cross-words and the like in Biblical Greek and Hebrew. provides a way to generate word searches from the original languages of the bible as a first step, and could be expanded very readily beyond that. It is rudimentary in many respects right now and there are a ton of obvious enhancements that could be done. But it demonstrates the point. It’s also basically usable. I cannot swear to stability.

I hope that with such puzzles people will find an enjoyable and educational pass time as they learn these languages, and just for fun.

Feel free to post comments or suggestions below. Also feel free to copy the word searches and use them for teaching, or just for fun. That’s the point after all – fun with language !