I get mail wondering why I can’t promise to keep updating XWord Info. “It can’t be that hard,” is a typical comment. Usually followed by, “if you need someone to upload puzzle files, I’d be happy to do that.”
Great! I’ll hand things over to you today.
Just so you have a handle on things, here’s your new task list:
- You’ll need to negotiate an agreement with NYT Legal to get access to the puzzle files. These files exist in various formats that you’ll have to deal with.
- There’s an admin function on the website that already handles uploading many of the files directly. You’re nearly done!
- But not quite. For non-standard puzzles to render correctly, you’ll have to write some code. No problem. The server-side code is written in C#, a language you already know. There are over a hundred C# program files to wade through, but you’ll be able to figure out what changes you’ll need to make easily enough. Maybe there’s color or graphics in the grid, or answers run backwards or turn corners. You’ll have fun dealing with each variation.
- Oh, but before you do that, you’ll need to download a copy of the site to your own computer. (It better be a hefty computer — the site is huge with roughly 100,000 files.) Easy-peasy, since the code is conveniently stored on GitHub, just sync to your local Visual Studio project, and wait for the magic to happen.
- Ok, now you have your own dev environment set up, so you’re ready to make those C# changes. Be particularly careful with the real-time and the multi-threaded components, as those can be tricky.
- Compile your new code. Test the changes locally and when everything looks right (on multiple browsers, and on tablets and phones), check in your code edits and upload the changes to the staging server on Azure. (For bigger changes, there’s also a separate test server hosted on Everleap.)
- After testing again on the staging server, realize that it’s still not quite right, and you need to make more changes, this time in client-side code, so now you get to practice your web skills. Most of the code here is written in TypeScript (compiled down to JavaScript so browsers can run it) along with various support libraries like d3 for graphs, jQuery for DOM manipulation, SignalR, and so on. Don’t forget all your HTML and CSS tricks! Re-compile, check in again, and re-publish to the staging server and test again.
- Oh-oh, now you realize there are some errors in the underlying data from NYT, so it’s back to the drawing board, and more C#.
- Damn, we forgot about the Variety puzzles! Unfortunately, NYT no longer supplies digital data files for Acrostics or Cryptics or PandAs or the rest of them. These must be digitized by hand. This is both painstaking and error-prone but think of it as adding to the fun.
- Alright, nearly there now! Time to look at the Azure analytics. Yikes, there are multiple server-side failures. Some you can ignore, but some seem serious. All have to be investigated. Then check Microsoft Clarity to investigate client-side bugs.
- Oh dear, the analytics have uncovered another cyber-attack underway. Each new attack needs different logic to defeat, so you’ll have to figure out how to manage this one.
- With that taken care of, you now notice evidence in the logs that someone is trying to screen-scrape the entire site. This not only slows down the site for everyone, but your agreement with Times requires you to take reasonable measures to prevent that. (NYT owns the underlying data. That copyrighted ownership is why all the websites that display information about crosswords need to have agreements with each publisher they display.)
- Ok, now the puzzles are published, so swap the staging server with the production server and you’re done. Except that you still have a long bug list, so spend some time peeling off those, remembering that every change you make has the potential to cause unrelated bugs elsewhere in the site. Oh well, bugs are fun!
- What? Some constructors want to update their biography or photo? Bios need editing, and depending on the quality of the photos you get, you’re going to have to haul out your copy of Photoshop and be prepared for advanced photo manipulation.
- And now customers are complaining! One guy can’t quite figure out how to create an account. Another can’t log on. Yet another is demanding a refund because she didn’t read the FAQ and the website doesn’t do everything she assumed. Another complains that the puzzles are biased and threatens to sue. Another is triggered by some answer and demands an apology. Yet another provides a helpfully detailed explanation of how I’m ruining crosswords in general and his life in particular. People are darlings.
- Time to pay bills! Azure, GoDaddy, Everleap, Adobe, JetBrains, and the rest of the owners of the tools you use send helpful mail explaining why payments are overdue.
- The SSL certificate is about to expire! The domain registration is about to run out! Azure is complaining about not following all the security protocols and needs you to update your service plan! Google is bitching that your site isn’t mobile-friendly enough! Bing is warning you that multiple pages have the same canonical URL! Dependent binary resources need to be updated to patch a security hole! There can be a new crisis every day.
If all that feels overwhelming, you’re not ready to take over the responsibility of uploading puzzles every week. If all that is intriguing and you might want to be the next proprietor of the most complete archive of NYT puzzles in the universe, we should talk.
I hear about your website frequently on the Fill Me In podcast. Quite a compendium and quite an undertaking. How hard could it be? I am agog. None of it sounds like fun. Thank you for your contribution.
They’re not bugs, they’re opportunities! Right? OK, maybe not. Please don’t hate me for saying that!
Anyway, should you decide to continue this labor of love, I’d be happy to help out on the testing side. I was a software tester for far too many years and could volunteer some of my time.