My plan, from a year ago, was:

  1. Produce explanations and demos from my procedural map generator experiments.
  2. Go back to old articles and update them.
  3. Work other developers on algorithms and articles.
  4. Write a tutorial on coordinate systems and cameras.
  5. Write tutorials about making interactive tutorials.
  6. Become faster at writing explanations.

What did I do in 2018? I think I did reasonably well with goals 1, 2, and 6, and not so well on goals 3, 4, and 5.

Goal 1 - maps

  • I improved mapgen2 with:
    • Smooth colors using gradients, an alternative to the discrete colors per biome.
    • Icons for mountains, forests, grasslands, water.
    • Slider to control jagged vs smooth coastline.
    • Sliders to control temperature, so that you can have cold poles / warm equator.
  • I improved the home page by adding links to many more pages.
  • I built mapgen4, a map generator that lets you draw your own constraints and generates the rest in real time.

I'm really proud of this work. It brings together the things I learned last year during my map generator experiments and puts them into something fun and cool.

Goal 2 - updating existing pages

I'm quite happy with this work. It's not highly visible like a new project is, but one way written web pages are different from books, academic papers, or videos is that I can continue to improve them over many years, even decades.

Goal 3 - work with others

  • This year I wasn't a mentor for Google Summer of Code, but I did regularly chat with this year's mentor and student, who produced the interactive version of Chapter 5 of Artificial Intelligence: A Modern Approach.
  • I worked with Vladimir Agafonkin on a new guide to Delaunator, his ultra-fast Delaunay+Voronoi library. I had been using this library for a year, and felt like I had learned its secrets. The library documentation didn't cover most of what I had learned, and I wanted to share them so that others wouldn't have to rediscover everything the hard way.
  • I went to Game Developers Conference and Roguelike Celebration, where I met lots of game developers and got to chat about the algorithms that they need to use in their games.
  • I'm on the Roguelike and ProcJam Discords, several Slacks, several subreddits, and StackExchange.

I've come to the conclusion that directly working with other people on code isn't a good match for my skills. I'm a reasonable coder, but my coding style and work habits are at odds with what most people need. Instead, I should focus on my writing. Talking to other developers about what algorithms they use and what kinds of problems they need to solve will help me decide what topics I write about in 2019.

Goal 4 - coordinate system tutorial

  • Mapgen4 took a lot of my time this year, and I didn't attempt the coordinates tutorial. I think that's ok. In terms of meeting my goals, it's a “failure”. But I don't consider working on mapgen4 instead of coordinate transforms to be a “failure” of the work. Instead, it's a failure of how I set the goal. Maybe instead of listing a specific tutorial in my annual goals, I should list the type of work I want to do.

Goal 5 - metatutorials

I had hoped to write up a lot more of what I've learned, but I only wrote a little bit:

Goal 6 - become faster

I worked on lots of tiny (<1 day) projects, often to learn new tools, techniques, and libraries that might help me work more effectively.

Some other short (<1 week) projects:

Next year

The shutdown of Google+, the censorship of Tumblr, and the deletion of photos on Flickr made me think about social media and longevity. I'd like the things I spend time on to last a long time. It's worth spending more effort on something if I know it's going to last decades. I've been increasing the amount of time I spend writing to my blog (RSS feed), and trying to avoid content that's I post only to Twitter or other platforms. You can see this in the blog's sidebar: I had averaged 10 posts per year in the previous 10 years, and wrote 37 posts this year alone. I want to focus on the web and not on proprietary platforms.

I had gotten stuck a few years ago, and experimented in 2016, 2017, 2018 to improve my skills. Here at the end of 2018, I'm pretty happy with where I am and what I've learned. My goal is not to write software or make interactive diagrams. My goal is to write explanations of math and algorithms. I write code and diagrams to support the explanations, not the other way around. In 2019 I'd like to focus on improving my explanations and writing new ones.

2 comments:

Scott Turner wrote at December 31, 2018 6:56 PM

Well, I don't know how much I worked with you *directly* but I've learned a lot from you this year and benefited greatly from the tutorials on your site as well as the Delaunator guide.

Amit wrote at January 08, 2019 10:45 AM

Thanks Scott! Your blog has been quite an inspiration. It's the kind of stuff I imagine I would want to do one day, except I never get around to it. :-)