From 2016 to 2019, I’ve been working for ERT as a federal contractor working within NCEI, and I’ve spent that time working on Drupal 7 & 8, and Symfony 3 & 4, for Drought.Gov. I will go ahead and follow that all the opinions that I have are my own, and do not interfere with my ability to do my job.
More than just the various technologies I’ve used, like geo-json, I’ve been doing a lot more cross application programming, with the email notification system for drought alerts, the geo-spatial analysis was handled in python, by another programmer, and we were developing in tandem. The website being the same way, with Drupal feeding json into a symfony application which cached and pieced together the final webpage from multiple Drupal entities.
Beyond the technical complexities of my work, also came my move to another state, to allow my wife to take a better job. Switching to 100% tele-working was a massive transition for me. Our team had long since before me been located in two different timezones, but you never really realize how much information you get through normal office chit-chat until you skip it for a few months.
I’ve built a drought alerts system, based in Symfony 4. The idea being that users can sign up for notifications about changes in the drought conditions at different locations and scales (city/zip, county, or state level). While currently we are only building out support for a single dataset, the United States Drought Monitor (USDM), we plan on offering a full suite of choices to the users, if that goes well.
It was interesting to design, I probably over-engineered it just a tiny bit, the final list of entities stands as such: Users, Tokens, Alerts, Locations, Counties, and States. As part of integrating this within the existing infrastructure, I was given our common list of counties and states to work with. Since we needed to allow users to subscribe and unsubscribe without having to create logins, authentication is achieved via unique tokens, each one belonging to a particular user, with a specific purpose.