16 Jan 2020

Identifying areas to improve

History / Edit / PDF / EPUB / BIB / 3 min read (~440 words)

How can one identify the areas he needs to improve?

Through introspection.

As we do things through our daily lives, there are events which we wished had unfolded better. As we realize those areas of weaknesses, it is important to write them down so that we can build a list of those areas we may want to spend time improving in the future.

Another way one can identify the areas he needs to improve is to use the Feynman technique.

  1. Choose a concept
  2. Pretend you are teaching it to someone else
  3. Identify gaps in your explanation, go back and learn some more, then try explaining some more
  4. Review and simplify

This technique can also be applied to the skills you lack. Instead of trying to teach someone else, you basically want to be able to explain the skill to someone else as accurately as possible. As you identify gaps in the description of the skill to perform, you are basically documenting what you need to work on.

For example, you might want to determine which one of your programming skills are lacking. You might start by asking yourself how you would design and implement things you use in your daily life: how is a text editor implemented? what happens when I type a URL and press enter in a browser? how are files read from a disk? how is this special effect rendered in a video game?

Make sure that you ask yourself questions that are relevant to areas you want to improve. If you don't know how networking works, but it has no incidence on you, then you do not need to address this weakness. Spend time improving skills which will be useful to you in the future.

Look for things that create friction in your life, those are generally places where you'll find potential for improvement.

15 Jan 2020

Biology and genetics for AGI researchers

History / Edit / PDF / EPUB / BIB / 3 min read (~439 words)

Why are biology and genetics interesting to AGI researchers?

Because it may provide interesting ideas and clues that can help with the development of AGI.

We currently know of a single instance of a system that is able to produce human-level intelligence: a human being. AGI researchers often try to understand how specific components such as the brain works. A lot of valuable work on the neuron has led to the creation of the deep learning field. Deep learning has definitely proven its value, but I am more interested in something else.

Genetics is seen as the programming of life. What I find interesting is that we can see the current human DNA as our latest implementation of this code. Since this code did not come out of existence from out of nowhere, studying DNA's history can give us ideas as to how a seed AI might come to be. It is also useful to understand how the environment has shaped DNA's existence.

Initially, there were only atoms and molecules. Through different physical and chemical processes, these molecules aggregated and formed more and more complicated assemblies. Through a multitude of steps, we reached the point where there were cells that contained DNA inside of them. This process might have been entirely random although the formation of complex structures happening randomly does not seem highly likely. Understanding the mechanisms or processes that helped create this order may be the equivalent of a pre-evolution natural selection.

My hope is that by studying such fields it is possible to discover how DNA increased in length, what were the different steps and challenges that were encountered that forced it to increase in size, as well as the potential causes of parts of DNA changing over time.

Just like a git repository, I'd like to be able to look at DNA's history and understand what happened to its code since its "Initial commit". It might also be interesting to figure out what kind of programmer nature is.

14 Jan 2020

Differences between brain and CPU

History / Edit / PDF / EPUB / BIB / 3 min read (~547 words)

What are the differences between a brain and a CPU?

  • The brain is extremely parallel (each neuron processing many signals), while CPUs are currently limited to a few cores.
  • The brain appears to be able to only do a single thing at once (single process, single thread).
  • CPUs can explicitly control their memory access while the brain memory organization and access is unclear.
  • The brain is a lot slower in terms of sequential operations, processing at a maximum of 250-1000 Hz while current generation (2020) desktop CPUs are in the 3-5 GHz range.
  • The brain does not have a clear instruction set.
  • The brain consumes glucose for energy, while a CPU consumes electricity.
  • The human brain is much larger (average 1273 cm3 for men, 1131 cm3 for women) than a CPU chip (Intel Core i7-10710U is 46mm by 24mm (height unknown but definitely less than 10 mm) which is less than 11 cm3).
  • Heat dissipation is done through cerebral circulation in the brain and through a heatsink attached to a CPU.
  • The brain is biodegradable, the CPU is not.
  • Signal is transmitted between neurons using neurotransmitters (chemically) while CPUs transmit signals between transistors electrically.
  • The organization of the brain evolves over time (in a single person), while a CPU chip will remain the same its whole life.
  • We currently cannot transplant a brain from one person to another, but we can transfer a CPU from one computer to another (as long as the motherboard is compatible).
  • The brain contains a large amount of memory, while the CPU has a small amount of memory and relies on larger memory stores (RAM, disks).
  • It is possible to reverse engineer a CPU by trying a different combination of inputs and recording the output (immutable). Doing the same with a part of the brain may result in different results as the brain is mutable.

  • The brain may not have different levels of memory cache (we do however talk about short and long term memory).

13 Jan 2020

Humans modeled as computers

History / Edit / PDF / EPUB / BIB / 2 min read (~398 words)

What do humans modeled as computers look like?

  • Numerous processes all running in parallel in different regions of the body and the brain (heartbeat, breathing, sight, smell, taste).
  • The brain runs multiple processes at once, each processing a different modal input (sight, taste, touch, hearing, smell).
  • Those processes are buffered and a process takes care of synchronizing the different input streams to create a coherent flow of information.
  • The spinal cord and nerves are network cables, transferring information from the limbs and other regions of the body to the main processing unit, the brain.
  • The eyes are digital cameras that can see into the world, converting photons into bits of data.
  • The ears are microphones that can listen to a limited range of frequencies (20-20000 Hz).
  • The mouth act as a speaker to emit sound for others to perceive
  • Touch is complex as it deals with textures, temperatures, moisture and pressures, however it can likely be modeled as a surface with discrete elements that measure a few things such as the force currently applied on it, the temperature, moisture.
  • Taste and smell are also complex as they are specialized receptors that will perceive different fragrances based on the distribution of particles that are perceived and that can be recognized.
  • The arms, legs, hands, feet are actuators used to interact with the environment.
  • The stomach and intestine are the power supply.
  • Neurons throughout the body act as distributed memory and storage, as well as processing units.
  • Blood is used as a mechanism to transfer energy between components. It also acts as a heatsink for the brain.

12 Jan 2020

Answering your own questions

History / Edit / PDF / EPUB / BIB / 3 min read (~511 words)

Given a continuously growing number of questions one asks himself, what is the proper procedure to answer these questions?

There is no proper procedure per se. The most important is to get started. Write your questions down so that you have a list. When you have a new question, you can check if you have asked a similar question in the past.

In their book Algorithms to live by, Brian Christian and Tom Griffiths write (about scheduling)

In a thrashing state, you’re making essentially no progress, so even doing tasks in the wrong order is better than doing nothing at all. Instead of answering the most important emails first — which requires an assessment of the whole picture that may take longer than the work itself — maybe you should sidestep that quadratic-time quicksand by just answering the emails in random order, or in whatever order they happen to appear on-screen.

A lot of what I wrote in How do you prioritize things when there are so many of them competing against one another? and How can I organize all the webpages I never read? applies here, namely:

  • Record your questions in a single location that you can search
  • Do not spend time answering questions you don't care about the answer
    • Record under such question that you decided not to answer them due to a lack of value
  • Prioritize the questions you would like to have an answer to
    • Evaluate how valuable is a question's answer to you, and how much time you would be willing to spend to answer it
  • Look online for existing answers
  • Write down the answer to the question you asked yourself, you may ask the same question again in the future
  • Answer one question per day

I often joke around with colleagues at work that it's easier to generate dumb questions than it is to answer them appropriately. As such, don't spend your time on questions that are not worth answering.

If you dedicate a bit of your time every day to answer one question you asked yourself, you will slowly accumulate a large list of questions you've spent time thinking about and answering. Those answers may be useful to others, so make sure that you share as many of your answers with others.