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.

4 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. :-)

Benoit FOULETIER wrote at May 22, 2019 11:14 PM

One thing I'm curious about (maybe you've discussed it elsewhere) is how do you make money? I'm amazed by the quality of some of your pages, and I can't imagine how much time it takes to reach that quality! Do you have a day job? If so, what's the split between day job and writing?

Amit wrote at May 23, 2019 9:53 AM

@Benoit: Thanks! I don't follow the common "follow your passion" advice. My passion is game development, but I mostly worked in software unrelated to games (real estate, oil & gas exploration, data warehousing, advertising, economics, scientific equipment, and lots more). Those jobs paid *much* better than games. I spent almost all of my time at the jobs (and very little writing), and put that extra income into savings. Compound interest lets the savings grow, so that in the past few years I've spent less than half my time working and more half my time writing.