I think we're stretching the definition of "fad" a lot here. Editor being one of the most popular for 10 years (not yet there, but will be for sure) can't be considered "fad".
>Similar to those who were all-in on Eclipse, Atom, Sublime?
But all these (except sublime) including vscode are basically the same type of IDE. Yes, implementations change, but their share of the "market" remains about the same.
The two URLs I provided don't convince you that this isn't a fad? Of all the SWEs I know, every single one who previously used Eclipse, Atom, or Sublime is now using VSCode. Some of my Emacs & Vim friends have switched, too. I can't imagine what would change this trend in the next 5-10 years. Perhaps a new editor with an integrated LLM coding assistant that's FAR ahead of all competitors? Except VSCode is currently leading there, too.
Nice! Years ago I added home row chording to a simple text editor I was writing. It worked so well that I wondered why it's not common practice. You should write more about your project! :)
For time management, the rough approach is to allocate a fixed % of the remaining time and increase or reduce it, mostly depending on the stability of the evaluation with increasing search depth.
Games are played on the same computer, with only one engine analyzing at a time.
The graph shows each engine's evaluation of the position for each move in the game. The red line is from a 3rd engine "observing" the game.
Capablanca preferred playing quiet, positional chess, often patiently nursing tiny endgame advantages into a win. It's generally much easier to play accurately in simple endgames than complex middlegames, and that's a big factor in his low ACPL score. (I don't mean to take anything away from him - he was probably the best ever at that style of play.)
Just wanted to say thanks for many years of fantastic work on both Stockfish and Leela. The computer chess community owes you a huge debt of gratitude!
Possibly Craig Silverstein, but my guess is Urs Hölzle. He was Google's first VP of engineering and a huge advocate for everything mentioned in the article: "design docs, audited code reviews, early design reviews, readability reviews, resisting introduction of new languages, unit testing and code coverage, profiling and performance testing".
Early Google had more than its fair share of genius engineers with giant egos. Urs was brilliant and tough - a perfect combination for keeping everybody in check and shaping the engineering culture.
There was a recent thread about challenging projects every programmer should try, and I think writing a chess engine would be a nice addition to that list. Chess programming is a refreshing change from modern software development, because you don't need any complicated frameworks or libraries, just a basic grasp of the minimax algorithm for searching a game tree. I have fond memories of writing an engine as a fresh college grad - it was my first "big" project and I made every mistake imaginable, but it was great fun and sharpened my coding skills immensely. It's exhilarating to play against your own program and then try to improve it. Highly recommended!
You could expand this category to an AI for a number of similar games (like checkers and reversi) as well. I've written a double dummy solver for bridge--a program that computes the optimal result of the play of a bridge hand--as a side project and I think it's also a very good choice. A lot of the same tools as chess engine development apply: alpha-beta and the myriad variant search algorithms like MTD(f), transposition tables, heuristics like the killer move heuristic or the countermove heuristic. But you also need to apply some domain specific heuristics and tools, and since the whole thing is performance critical you need to worry about low level optimizations and good multithreading. In the bridge case it's not at all trivial to get something that can even finish at all in a reasonable timespan.
I wrote a chess program in college, and agree that it was fun. But isn’t the whole exercise a bit outdated? Building a chess program now surely would start with deep learning
There is plenty to learn about algorithms and data structures by coding up a 'conventional' chess program, you're likely not going to go up against the world champion players or computers but against a much more inferior opponent: yourself.
When I was 17 or so I wrote a chess program, at the time I was pretty deep into chess and color me surprised when after a week or so I could only beat my own program by really paying attention because it would never mess up and I would mess up all the time. All it would take is a little mistake and then you'd be lost already.
The code was written in 6502 assembler, it was a lot of fun to write. My buddy who wrote his own in Pascal was quite ticked off that my very straightforward 'dumb' program would beat his extremely elegant program hands down simply because it would look on average two ply further ahead. That's a lot of extra moves to analyze but the speed difference between machine language and Pascal (at the time, today this would definitely no longer be the case with our much better optimizing compilers) on an 8 bitter made this an uneven match.
On the plus side: his code was far more readable than mine.
The top two chess programs, Stockfish and LC0, both use neural nets for evaluation but Stockfish's is very shallow CPU-based one with a clever way not to have to re-evaluate the whole position after each move (borrowed from Shogi). LC0 is modeled after AlphaZero and uses reinforcement learning.
For me personally such projects are also about having fun, and I
just like implementing some of those elegant algorithms and
maybe understand them at a deeper level. I don't enjoy pushing
data through some intangible neural network and tweaking it
nearly as much. Especially if it involves reading through the
documentation of some library and the coding is just the
boilerplate required to shovel data in.
That said, everyone has their own preferences and as long as you
are motivated to spend a long time with it you can learn
something from it, even if the improvement isn't noticeable
immediately.
https://survey.stackoverflow.co/2023/#section-most-popular-t...
https://trends.google.com/trends/explore/TIMESERIES/16907280...