In each of last six articles I've satisfied one of the high-risk requirements I
had for moving LibraryHippo to the Flask framework, with the goal of hosting it
on Heroku. This leaves three "softer" requirements open, which I'll address
(Aside: It feels a little weird working on this conversion …
I now have a functioning skeleton of a shadow LibraryHippo site. The last gaping
hole is that it treats every visitor the same. We need to be able to distinguish
one user from the next and to retain information about them between visits, such
as which family they belong to …
Now the Heroku-hosted LibraryHippo can perform periodic tasks, send e-mails, and
scrape the Waterloo Public Library's website. All it needs is a datastore to tie
these concepts together into a decoupled "push card status to patrons" pipeline.
Now that the toy LibraryHippo on Heroku is sending periodic e-mails, it's time
to provide it with meaningful content to send, by having it scrape a library's
website. This should be relatively straightforward, but there's some risk as
it's not an operation covered in
The Flask Mega-Tutorial.
Having established that a Flask app running on Heroku can send e-mail, I turn my
attention to having LibraryHippo do so periodically. The approach will be to
change the e-mail-sending to be something that can more easily be triggered from
the outside, and then triggering it from from time to …
After getting a do-nothing web app running on Heroku, I think the riskiest
requirement is having a scheduled job for LibraryHippo to check families' status
and notify them. However rather than trying to satisfy that requirement, this
time I'm going to try to set up email sending, mostly because it …
A few days ago, a user e-mailed me a bug report for
LibraryHippo. For the previous 55 days, she'd been
receiving the same (erroneous) morning e-mail about what library
materials she had due. However, when she checked her family's account
summary on the web page, it was correct.
For a while now, I've been dithering over getting LibraryHippo its own domain name. I hadn't, mostly because I'm a little lazy and cheap and afraid of the domain registration process.
Yesterday at the Day Job, a co-worker (whose name just might be an anagram of Yen Waster), on learning …