I just converted tags to SQL. Watch for bugs, as always.
These last several weeks, I've mostly been converting Arc functions to Racket one at a time. but, it got to a point where I feel like converting everything like this is going to require converting all the Arc runtime itself, and the core Hacker News engine. Which I was hoping to avoid. There are a lot of macros in those files, which take a lot of time to understand enough to recreate in Racket.
So, right now, I'm feeling like it might be better to finish converting the last of the file data to SQL, and then write a new app from scratch in Racket.
Don't worry, whatever I do won't be wasted. If it turns out converting the Arc is faster, we'll still need a core HTTP dispatch system in Racket. And if rewriting from scratch is faster, the various functions converted from Arc will still be useful.
In fact, last Spring I spent a couple weeks making a Go prototype (which we didn't use; mk fears the braces >_>). But three-quarters of that work was writing the SQL Views to get page data in as few queries as possible. If I write an initial dispatch-and-page in Racket, I'll re-use that View work.
So, that's my plan as of today: finish converting the last files to SQL (there are a few more small things, after tags), and then write an initial prototype in Racket, and see what it looks like.
As I said before, there are a lot of things to do, it's just a matter of what do to next.
As always, questions welcome.
As far as the API goes, the data necessary to make logins and serve private data is there, we could do it now. It just isn't on top of my priority list yet. We don't need everything in SQL, we could start making endpoints today. When I say "dispatch", I simply mean taking HTTP requests and sending them to functions. It's much simpler than it sounds, especially in Racket. In fact, the existing API is already doing it. These two are related. The same SQL Views are necessary to get the data for both a new app and the API.