Besides the straight forward tasks, we had to solve a few obstacles.
Different Timezones – Is it today, tomorrow or yesterday?
If you look up an address in Germany it is quite simple, because the server timezone is the same as the user timezone. You can easily determine if it is tomorrow, today, or yesterday. Not so easy, if you are a few thousand kilometers away. Therefore we had to find a way to get the timezone offset for every possible address in the world.
There are a few paid API’s, from google, bing etc, but with our amount of traffic this is just too expensive. Luckily there is a python script outhere, which does the job for you: Timezonefinder by MrMinimal64. If you want to access python scripts via php, don’t use curl_exec… it is way too slow with many users. Instead we found a way to spawn a localhost api with web.py. Then you can access your endpoint with almost zero loss via curl.
Regional holidays for each country, state and city
In the past we used an outdated pear holiday library and added regional holidays from time to time by hand. To scale our service this method was no longer practical due to high maintenance. We found the NodeJS script Date Holidays by commenthol which is fast and well maintained. To access the nodeJS Script we did the same as with python and spawned a local api. In contrast to python you have to use a cluster to give the NodeJS script multithreading abilities. Thanks Gaby for your help.
Missing House Numbers in the OSM Data
In the last post I told you, that we shopped a new High Performance Server to use it for Nominatim. So we installed everything, updated the database and copied all data to photon, the elastic search autocomplete geocoder, just to find out, that the responses were not improving and still many many house numbers are missing. Thanks to a hint from the komoot developers, we developed a hybrid version which combines OSM Data with the fee-based API from HERE WeGo.
With this approach it should be possible to find most addresses. The new system is already live on the web system, the app will follow in the next weeks.
Different languages and logic
With new countries, we had to provide more languages. We had to find a way to make sure our algorithms are not affected by the different languages. So we have written a language parser, right before a request is delivered to the frontend, to translate all messages and path informations. The German company Linguee recently released an amazing API for their machine learning translation service DeppL. Check it out, it is magic!
New Carriers USPS, FedEx, POST AT
With our new system we are able to add new carriers to the system, and our AI spawns children to detect the characteristics of each delivery company and service. For now we have added USPS, FedEx and Austrian Post. A newly supported tracking id should be detected automatically via the app.
Test it to the limit
The new system might have bugs. So please inform us, if you find something! Thank you!
We are looking for a Full-Time Developer
If you want to be part of our mission to predict every parcel up to 15 minutes accuracy and if you are interested / skilled in Machine Learning, python, nodejs, ionic, elastic search. Write us at email@example.com More Informations here