Trial and error

Like many of you I watched The Queen's Gambit and loved it. The settings of scenery and decors in 1960s were mesmerizing.  

And like many of you, this rekindled the interest for chess in me. Growing up, I didn't play chess much, but my younger brother got into it as a middle school student. He bought books detailing chess games and studied them. He got a city-wide championship and such. I didn't get much into it, because I guess I didn't think of it as a serious enterprise and didn't want to expend too much energy into it. 

I had this Android chess app on my phone, and I started playing with that instead of my downtime Sudoku playing. In this chess app, it is very easy to undo moves, and try other moves. I play against the machine, and yes undoing is cheating, but I use it a lot to explore different scenarios at critical points in the game. I have been very surprised about how much this accelerated my chess learning. I was able to make progress through several hardness levels thanks to the unreasonable effectiveness of easy trial-and-error for learning.

Many things in life, we don't get to have a do over. But, for many things, especially in software profession, we are afforded inexpensive trial-and-error. And it is a force multiplier when you can do inexpensive trial and errors, and when the cost of failure is low.

For this reason, it makes a lot of sense using a version control system like git for most projects and even for writing.


Short git tutorial

This is mostly for my own notes, so I have this handy to look up from my blog when I need. 

To stage & commit 

  • git status
  • git add <files>
  • git commit -m "Commit message"

To update from remote

  • git pull

To branch and merge back

  • git branch <newb>
  • git checkout <newb>
  • git checkout master 
  • git merge <newb> 

To go back to a previous commit/snapshot of project

  • git checkout <commit-hash>


To see all the commits that were made for our project: git log. There is also git rebase.

If you need a hands-on introduction, this is good. The notes are here.



Comments

Popular posts from this blog

Hints for Distributed Systems Design

Learning about distributed systems: where to start?

Making database systems usable

Looming Liability Machines (LLMs)

Foundational distributed systems papers

Advice to the young

Linearizability: A Correctness Condition for Concurrent Objects

Understanding the Performance Implications of Storage-Disaggregated Databases

Scalable OLTP in the Cloud: What’s the BIG DEAL?

Designing Data Intensive Applications (DDIA) Book