Onboarding users on your library
History / Edit / PDF / EPUB / BIB / 2 min read (~338 words)How can you onboard users to use your library as fast as possible?
You need to make it as frictionless as possible for them to use your library.
First, they need to know the value proposition of the library. They need to know why they should use your library and not find another one available online. It needs to be convincing and to touch on the tasks they need to accomplish. The closer your vocabulary is to theirs, the easier it will be.
Second, the installation process needs to be as painless as possible. If you use a language with a package manager, give instructions on how to install your package using the package manager. If there are multiple popular package managers for the language in which the package was written, make sure to cover the most used ones.
Third, when users do not understand how to do certain tasks using your library (when it is in its early stage of development), take note of those questions, especially the wording. You want to capture what they were trying to do, how they described what they wanted to do, and why they were trying to do it. With this information in hand it should be easy for you to determine whether your library supports (or should support) the use case they tried to accomplish. If your library is not going to support the use case, make sure to indicate it early in the documentation so that users do not have the wrong expectation that your library will help them with this use case.
Finally, try to learn as much from your users as possible. Try to understand what it is they are trying to accomplish and whether it is valuable to most of them if you were to support new use cases. If you can document the most common use cases so that they can read the steps they'll have to go through, it will be simpler for them to evaluate the process before going through it.
Visual Studio Code Emoji extension
History / Edit / PDF / EPUB / BIB / 1 min read (~200 words)I use Visual Studio Code as my main editor and I am on Windows 7. I like to use emojis but those aren't properly rendered under Windows 7. Can I have pretty emojis in Visual Studio Code somehow?
I developed an extension in 2018 called Emoji which uses EmojiOne emojis to replace their non rendered equivalent in Visual Studio Code.
To do this, the extension makes use of the createTextEditorDecorationType
method available on the window
object in order to inject CSS that adds a background image where the text emoji would be rendered.
The extension listens to two events to determine in which editor it needs to do the replacement: window.onDidChangeActiveTextEditor
and workspace.onDidChangeTextDocument
. In the first case we update the editor that is now the active one, in the second, we update the active document when the text content changed.
Learning topics that are overwhelming
History / Edit / PDF / EPUB / BIB / 3 min read (~435 words)I want to learn a new topic but it feels overwhelming. How can I do it?
When I wanted to learn about artificial general intelligence (AGI), I knew almost nothing about the field. I had a background in software engineering and I was curious about intelligence as a whole, but I had no clue what I would need to know in order to work on artificial general intelligence.
My initial approach was to read a lot about the topic. It allowed me to learn about a variety of concepts and the vocabulary associated with AGI. However, as I was doing that, I felt overwhelmed by the amount of information I would have to learn. In 2014 I was reading Artificial Intelligence: A Modern Approach, then in 2017 the Deep Learning book. It was hard to reconcile how the new concepts I was learning and how they were all connected.
At the time I already knew of mind maps. I thought it would make sense to try and map out all the knowledge I had acquired so that I could make sense of it and be able to refer to it as I would work.
I initially built a very large concept map using yEd that included everything I could think of that touched on the topic of AGI: machine learning, mathematics, computer science, neuroscience, etc. As the map got larger and larger, I started thinking about how I would organize it so that it was clearer to understand and that it was possible to progress through it if someone else wanted to learn from my experience. Thus, I extracted the machine learning, computer science and mathematics concept maps to their own respective concept maps.
The approach has been to spend time to write down what I knew, create a node in the graph with the term, then try to associate it with other terms already in the graph. As I learned new terms I would add them to the graph. I would also dedicate a bit of time during the week to try to brain dump whatever I might have learned or I knew about that could be added to the graph. This is an iterative process, so the graph itself is never really completed. However given this graph, it is now possible to know what I have already explored and the areas where I need to do more exploration because my understanding is lacking.
Ways to measure intelligence
History / Edit / PDF / EPUB / BIB / 1 min read (~163 words)What are the different ways to measure intelligence?
We can measure intelligence as:
- the number of CPU cycles necessary to solve a problem. Less is better.
- the amount of energy spent by a system to solve a problem. Less is better.
- the time necessary to solve a problem. Less is better.
- the space (memory, RAM, atoms) necessary to solve a problem. Less is better.
The benefit of all those measurements is that they are scalar and thus ordinal, creating an order between the different agents that can successfully solve the problem.
Those values can be taken separately as one axis of intelligence. Taken together, they become a complex measurement of intelligence where there's no clear ordering between the different approaches. The agent with the "highest intelligence" is defined by the requirements of the environment: if energy sources are abundant in the environment, then using little energy is less important than using less time or space.
What are the benefits of writing one article per day?
The main benefit I get from writing at least one article per day is that it forces me to spend time to think about a single question and to write down and express my thoughts clearly.
It allows me to practice my writing abilities, even though I use them daily to write down notes. It forces me to ask myself whether my grammar is correct and whether what I wrote makes sense, which is something I care a lot less about when I write down notes.
It lets me get into the habit of writing daily, so that writing and communicating doesn't feel like it requires a lot of energy.
I see writing one article per day as a habit to acquire in order to be able to write more effectively and communicate better. It is like exercising regularly. The purpose is to keep the muscle of writing alive and strengthening it slowly over time. By writing a lot we slowly acquire a voice that we can work to change and improve. Just like processes that are made explicit can be improved, so can communication be improved by spending time to write down what you want to share with others.