lessons

  1. asterite is correct. named tuples in crystal are seemingly attractive (compile-time type checking of keys and values) but quickly become a trainwreck as the compiler specializes every method receiving them (passing/receiving **options is definitely a code smell). every possible permutation of keys and values is a new type and results in a  specialized copy of a method, increasing build time and executable size.
  2. crystal + sqlite continue to perform well. i recently released code that computes and displays social signals like boosts/shares and likes as part of the content in the timeline. even though counts are aggregated on the fly, rendering is still brisk—about 780msec to fetch and render 1000 posts from the main timeline.

#ktistec