danielbigham | 5 years ago | on: API design is stuck in the past
danielbigham's comments
danielbigham | 5 years ago | on: Using Askgit – A SQL interface to your Git repository
danielbigham | 5 years ago | on: Crush: A command line shell that is also a powerful modern programming language
danielbigham | 5 years ago | on: Philosophers on GPT-3
If others want to experiment with this, I used the "davinci" model with temperature 0.5, and here is the prompt / initial context I seeded it with:
This is a test to examine your common sense reasoning. A statement will be provided, and your job is to explain why it doesn't make sense.
Statement: His foot looked at me. Explanation: Feet don't have eyes, so they can't look at things.
"""
Statement: The 8th day of the week is my favorite. Explanation: A week only has 7 days.
"""
Statement: I fell up the stairs. Explanation: You fall down stairs, not up stairs.
danielbigham | 5 years ago | on: Philosophers on GPT-3
danielbigham | 6 years ago | on: Not everyone has an internal monologue
danielbigham | 6 years ago | on: Photorealistic Path Tracer
danielbigham | 6 years ago | on: Temperature changes around the world – 1901-2018
danielbigham | 6 years ago | on: How to Remember
This serves three purposes:
1) The act of teaching is one of the best ways to solidify a concept in your mind. It forces you to have a good understanding of it, and forces your mind to produce a good internal organization around concept.
2) It usually takes a while to write + diagram a good summary, and takes a number of tries to get a smooth recording of you speaking the summary (Example: https://www.youtube.com/watch?v=rHc-bog1hhE). All of this "repetition" / time spent with the concept makes it easier to remember.
3) Sooner or later we realize that remembering everything is impossible. Given enough time, concepts will decay in your mind. In the long term, one of the most important things for you to optimize is the speed at which you can re-create your mental model of a concept. Having these 30 second summaries, complete with links to prerequisite concepts, allows you to re-build your mental model of a subject area extremely quickly in the future in a just-in-time fashion. Just like a smartphone is an "extension" of your brain, a note system like I've described here is like an extension of your memory.
danielbigham | 6 years ago | on: People with Greater Intellectual Humility Have Superior General Knowledge
Refactoring can be a costly operation, so it makes sense that the mind shouldn't take on that task too often, especially if one's mind is more likely to suffer net harm from an unsuccessful or partial refactoring.
However, if a person is gifted at learning in the broadest sense, then it would make a lot of sense that their mind would undertake this process much more gladly, and as a result, form a very strong model of the world.
danielbigham | 6 years ago | on: Oxford Professor argues invisible aliens are interbreeding with humans
danielbigham | 6 years ago | on: Mystery of the Universe’s Expansion Rate Widens with New Hubble Data
danielbigham | 7 years ago | on: Revolutionary Ideas in Science, Math, and Society [video]
danielbigham | 7 years ago | on: People Who Eat the Same Meal Every Day
danielbigham | 7 years ago | on: People Who Eat the Same Meal Every Day
danielbigham | 7 years ago | on: How to Kill the Toxic Ego That Will Ruin Your Life
danielbigham | 7 years ago | on: Move Fast and Migrate Things: How We Automated Migrations in Postgres
danielbigham | 7 years ago | on: Ask HN: How do you keep track of your creative thoughts?
There are five important parts to my strategy:
1. Each idea gets its own notebook/document. 2. Each idea gets linked bidirectionally from/to its parent concepts. (more on this later) 3. Each concept / parent concept gets its own notebook/document. 4. Each day gets its own notebook/document that links bidirectionally from/to the ideas thought up on that day. 5. Various UI tricks such as hotkeys and "NLU" to make working with the above as fast and efficient as possible.
To sketch the above, I'll give you an example of my workflow on a given day.
I'll often start by going on a walk for 40-80 minutes in the morning. The energy of the morning air, the extra blood flow from walking, and the beauty of nature stimulate various thoughts and ideas.
Once I'm sitting in front of my computer, I press a hotkey Ctrl-Alt-Shift-T, which runs some code to create a "Today" document. The title and file name of the document are, for example, "January 6 2019", and it has a hyperlink within it to its parent document "January 2019". There's a section of the notebook pre-generated called "Ideas".
To create my first idea, I press a hotkey Ctrl-Alt-Shift-N, which is for "create a child document" which will link back to the document it was created from. A dialog box opens asking me for a name/title, so I'll type in a one line summary of the idea "Depression as Feedback Cycle that is Inverse of Entropy". Pressing ENTER, this creates a new document of that name, and adds a hyperlink from it back to its parent "January 6 2018", as well as a link from the parent to the child. I then add a few bullet points to record the essence of the idea.
Now it's time to link the idea to all of its "parent concepts". In this case, the parent concepts are "Depression", "Feedback Cycle", and "Entropy". If I don't yet have documents for those concepts, then I'll press a hotkey Ctrl-Alt-N to create those new documents. Then, from my idea notebook I'll use a hotkey Ctrl-E to create a link to a parent concept notebook. Each time I do this, it prompts me for the name of the parent concept, so for the first one I'll type in "Depression". Upon pressing ENTER, it will add the hyperlink from the child to the parent, but it will also open the parent concept's document and create a link to the child in a "Related" section at the bottom of the document.
When this process is done, I have the following documents that all link to each other:
Parents to children: (and vice versa) "2019" -> "January 2019" -> "January 5 2019" -> "Depression as Feedback Cycle that is Inverse of Entropy" "Mental Health" -> "Depression" -> "Depression as Feedback Cycle that is Inverse of Entropy" "Feedback" -> "Feedback Cycles" -> "Depression as Feedback Cycle that is Inverse of Entropy" "Entropy" -> "Depression as Feedback Cycle that is Inverse of Entropy"
In addition, I'll add links in the "Related" section at the bottom of the idea notebook to any other ideas/concepts that aren't necessarily "parent concepts" but are related. In this case, I'll press Ctrl-E and then type in "Depression as Thinking Too Much", which create a link to that document, as well as a link within that document to my new idea document.
Why create all of these bidirectional link from child documents to parent documents, and laterally between documents? It's all about "making connections" and making things "findable/noticeable at the appropriate time in the future". Without all of those links, your idea will become an "orphan", possibly never seen / though of again, or hard to find if you only vaguely remember what it was called in the future. On the flip side, with all of these bidirectional links in place, in the future when you're adding new ideas to these same parent concepts, you'll see the link to this idea, and it will make possible a new unexpected connection / aha moment. Being an idea person, you probably realize how ideas are like popcorn -- one pop leads to another, ideas connecting with each other to form richer and deeper understandings of things.
The final piece of all of this is that rather than only giving each concept document a name (for future lookup / reference), I give them a regex like name. So for example, if I create a concept document for "rectified linear unit", I'd actually define the pattern:
"rectified linear unit" | relu
Then from a document in the future, I can link to it by either of the above names. Or, if I simply want to get to that concept fast, I press a hotkey Ctrl-Q, type in a name, such as "relu", press enter, and it appears. (otherwise, if I just called it "Rectified Linear Unit", it wouldn't have been found when I typed "relu")
This system has been working great for me. I've quickly developed a tree/graph of concepts and ideas that are building on and connecting to each other. Any time I have a new idea or learn a new thing, I have a place to "hang" the concept, so things don't get lost.
danielbigham | 7 years ago | on: The Illustrated BERT: How NLP Cracked Transfer Learning
danielbigham | 7 years ago | on: Social networks are no longer social
- Define APIs that take those entities as inputs, automatically validating API arguments for you, automatically generating documentation, and driving API consistency.
- Can represent those entities in memory without writing any custom code beyond the schema.
- As mentioned above, you don't have to write manual code to validate your entities, that's done for you from the schema.
- Automatically generates database tables for those entity types without having to maintain a separate database schema, and can serialize/deserialize entities into or out of the database without having to write SQL. Acts like a document based database but still allows the power of relational SQL matching.
- From git diffs, automatically produce expressions that specify how the entity types have evolved over time, and then have the ability to apply those entity type diffs to a production server & database.
- Automatically maps natural language onto the schema allowing NLU queries like "orders today in Canada" to be turned into a semantic representation that the database can natively understand and execute, with control to override default NLU mappings if the default mapping isn't working right.
- Automatically generates web UIs for viewing and editing entities.
- Supports dynamic applicability to be defined so that whether a property is applicable, and which values are valid, can be defined as a dynamic function of other property values.
- Supports inferred properties to be defined in either an inference rule approach, or a functional approach.