HN user

danielbigham

49 karma
Posts0
Comments29
View on HN
No posts found.

The project I'm working on does this -- we define high level semantic entity types, and from that you can:

- 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.

I made up the examples, and IIRC it was able to explain most things I tried.

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.

One challenge with using things like trees to estimate long-ago temperatures is that you have to build a complex mathematical model to map to temperature, and I'm aware of at least one famous study that got the math wrong, to the point of being potentially suspicious. (But I haven't studied this stuff enough to know whether or not other proper studies exist)

How to Remember 7 years ago

Something that I started doing recently is to create a "30 second summary" of each important concept, consisting of text and diagrams. I then record a 30 second video where I narrate, using good intonation, the 30 second summary. I also create a hyperlink from the summary to my notes of each prerequisite concept.

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.

One of the ways I think about humility is that it is the ability of a person to successfully integrate information that requires some non-trivial refactoring of one's internal model of the world.

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.

There is a wise phrase, "more with less", that people may be familiar with. I think this article fits into that paradigm nicely. Imagine the difference in global outcome if person A ate out each day of the week for lunch, while another followed the pattern of eating the same thing for lunch and took the money saved, putting it towards something like clean water in developing nations. Even a single human being doing this would make a big difference.

This year for whatever reason I keep seeing the concept of "integration" in everything, and have also become interested in what feels like the opposite -- division and separation -- so when I read "Ego is all about division and separation", it really piqued my curiosity. Could you elaborate on that?

Your question is timely -- in the last year I've started to be deliberate about this, and I've found a solution for myself that works really well.

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.

Found this article very insightful -- the universe when it is working well is like a giant pattern matcher operating at every level of abstraction, bringing together those things which make a good match. The converse is exemplified by what we call "spam" in our email inbox -- signals which have an extremely high false positive rate. Facebook by its nature seems to tend towards a high false positive rate, which diminishes its utility.

I watched a debate involving William Macaskill last summer and he poses the hypothetical question:

"You are outside a burning building and are told that inside one room is a child and inside another is a painting by Picasso. You can save one of them. To do the most good, which do you choose?"

The point he's trying to illustrate is that, if you knew for certain that you could turn around and sell the Picaso for millions and use that money to purchase malaria bed nets, the expected number of lives saved by using the Picaso could be hundreds, and so there's a moral dilemma present.

Like many hypothetical questions, this one feels a bit "off" or "unrealistic", but if you don't get hung up on the oddities, I think one can sense the essence of his question, and it reminded me of the point you're making here as well as a responder's question asking you why you think the way you do.

I do think these questions are hard for us to wrap our heads around -- how to value high probability immediacy against somewhat uncertain non-proximal/non-immediate things that might be "much higher value". Part of my human brain goes splat when I try to weigh these things.

In terms of the moral dilemma with the painting, I do have quite a bit of sympathy for the argument that one should do what they feel will produce the most good, which might be to save the painting and purchase malaria nets. My father on the other hand seemed to believe that to be absolutely morally wrong, which seems to be siding with your sentiments. Practically speaking, I think I'd almost certainly save the child's life, because one's human impulses would be so strong that they would override any high-and-lofty-rationality, and one wouldn't have time anyway to do deep analysis. But the question in a hypothetical sense does seem quite valid and hard.

[dead] 8 years ago

This article comes off too strong, but it's welcomed conversation.

My take: Kurzweil is missing the mark to suggest unabated growth in computing or anything like a true "singularity" where a curve goes to infinity. However, I think his overall insight into exponential effects and how unintuitive they are is brilliant and basically true. All of us who have been around for a few decades can clearly see the world changing dramatically in some dimensions, and the general expectation is that it will continue to do so. Some of the developments this century will probably be quite mind bending.

Kurzweil is definitely a strong optimist, and my feeling is he's a bit too optimistic, but I suspect that he may be right in the rough sense that the technologies discovered this century will help more than they hurt.

The commentary on the religiosity of technology is an interesting one, deserving more thought.

Yes, this conflation has bother me as well. In the long term it's an absolute slam dunk to transition to autonomous vehicles, but I'm a bit worried that they're feeling they need to hide the most important numbers in 2018 in an attempt to avoid an irrational / unwise response from the public.

I have a suspicion that in the future computers will use a vaguely DNN-like approach for compression, but I haven't seen any super compelling examples of this yet. I can say "imagine a photo taken at 2000 feet and 2 miles away of the Eifel Tower with a beautiful orange sunset in the background", and your mind can use it's internal representation to render something along those lines. I feel like computers some day should be able to do the same thing, except that with another kilobyte of constraints I should be able to make the final result really close to a particular photo that matches that description.

I think a critical eye can be a helpful viewpoint, but the rhetoric in this article is over the top to say the least (as others have pointed out). The use of the word "voyeur" is especially off color. Sure, some small percentage of givers might fit that description, but using it as a blanket description seems very inappropriate. In general I applaud efforts like Watsi so long as the hearts of the people involved are good, and they are willing to be humble and honest. We need good experimentation in all walks of life.

I work in the field of natural language understanding and in the last few years I've figured out how to use that very advantageously wrt learning.

Here's the approach I use:

- Every time you come across a new term or concept, you create a new "notebook"/document. That's right, one notebook per concept. The title of the notebook is the name of the concept.

- You create a summary for the concept using bullet points. What you're trying to maximize with this set of bullet points is the speed at which, in the future, you can re-read them and achieve a similar brain state to what you had when you originally learned the concept.

- You can then obviously have extended notes below that where you go into more detail.

- Then, crucially, you create something akin to a regex that will allow you to quickly and unambiguously look the concept up in the future. If you just learned what a rectified linear unit is, your pattern might simply be:

rlu | (rectified linear unit)

- You then have a hotkey on your computer -- I use Ctrl-Q, that brings up a text box where you can type the name of the concept you want to bring up (ex. "rlu"). When you press ENTER, it doesn't give you search results if there's an exact match, but instead directly opens the document and makes it instantly viewable / editable.

- As your concept graph starts to grow, you have links within your notebooks to related concepts as they're referenced.

- Each time you read an article that is important to your understanding of a concept, you quickly open up that notebook and add that article, and perhaps one or two bullet points that contain the key things you learned that expanded your sense of that concept.

- This same system can be used for more than learning text book information. You can use it if your a project manager to keep tabs on the millions of things you have to juggle, you can have notebooks for people, for lists, and you can have "regexes" for "programs"/scripts, for web pages, for files/directories, etc, etc.

- More general than "regexes" are context free grammars. In this context what that means is the ability to have named "subroutines" for your regexes. For example, if you end up using RLU as a sub-part of a lot of other notebook regexes, then you might define $rlu to be a short form for (rlu | (rectified linear unit)).

In university I wrote an essay arguing that consciousness was something in another dimension of reality and that the brain "projected" it's perceptions into that dimension. I also argued that that other dimension didn't pass any data back to the brain -- it was a one way street. ie. I argued that behavior wasn't influenced by the other dimension. However, like yourself I realized that my theory was false. The very fact that I spent so much time sitting around thinking about consciousness (behaviour) proved my theory false by counterexample. So we know that consciousness, in addition to adding an experiencial aspect to humans also has a computational / behaviour-affecting aspect to it.