Thursday, December 10, 2020

Crispy oven-baked chicken wings

This is a very simple recipe for oven-baked chicken wings with very crispy skin. It uses baking soda (or baking powder) to help dry the skin out, to help make it crispy. And it cooks them first at a lower temperature, and then at a higher-temperature, which also helps make them crispy.

  • chicken wings or chicken wing nibbles, 1kg
    • the recipe can easily be adjusted for different quantities - you just need to modify the amount of baking soda used (and you don't need to be too precise)
    • I prefer to use packaged chicken wing 'nibbles' (where the wings have been segmented into three parts, and it includes the two main segments but not the tips). If whole wings are being used, I prefer to slice through the 'webbing' connecting the segments, so the wings sit flatter during cooking.
  • baking soda (or baking powder), ~2 tsp
    • use a bit more if using baking powder, which also has something like rice flour mixed in with the baking soda
  • salt

Preheat oven to 120 C.

Pat the wing pieces dry with paper towels.

For each segment, cut two slices across the top side, and one across the bottom side. (This is because the skin becomes quite crispy after cooking, and if you don't cut those slices across it, then when eating the wings it's easy to bite off the entire piece of skin on one side in one go).

Put the pieces in a bowl large enough to fit them. 

Sprinkle 2 tsp baking soda and some salt on chicken, and mix it up to evenly coat the pieces.

Ideally, put the pieces on a wire rack (to get airflow underneath them), and sit that on a tray lined with baking paper or aluminium foil (fat will drip from the chicken). If you don't have a rack, just put the pieces on a lined tray.

Cook chicken for 30 mins at 120 C.

Turn the heat up to 220 C (or 210 C fan forced), and cook the chicken for a further 45 mins.

Monday, November 30, 2020

Acknowledging that the available evidence may be limited and not representative of the complete evidence

It's good to use evidence to make judgments, but there's a common mistake in the way this is done. This is to assume that the available evidence is sufficient for making a judgment. It may well be sufficient, but the mistake is to assume that it is.

The limitations of the available evidence need to be assessed. Until relatively-recently, we didn't have telescopes capable of detecting exoplanets (planets orbiting other stars). Then we started to get that ability but initially could only detect very large exoplanets. Back then, it would have have been a mistake to look at the available evidence and make the judgment that no exoplanets exist, or that only very large exoplanets do.

We can ask questions like: what are the limitations of our ability to gather the relevant evidence? Has all the relevant evidence been collected, keeping in mind that resources are required to gather evidence (time and money, and people who have prioritised gathering it)? Is it possible that we could obtain more evidence in the future that could support a different judgment? Do we have good reason to believe that the evidence we have gathered so far is representative of all the possible cases?

The mistake is in assuming that a judgment being consistent with the available evidence is evidence that the judgment is correct.

So not only do we need to do more than just consider the nature of the available evidence (like its limitations). We need to consider what different judgments could be consistent with the available evidence. And we need to consider what the different possibilities could be for the missing evidence, and what judgments could be consistent with each of those different possibilities. 

In the exoplanet example, back when we didn't have the technology for detecting them, we needed to consider that the missing evidence could include exoplanets. And, obviously, that the judgment "exoplanets exist" is consistent with that possibility.

We need to be honest with ourselves if this consideration of different possibilities for the missing evidence (and the judgments they would support) shows that that are multiple different (and incompatible) judgments that could be made, like both "exoplanets don't exist" and "exoplanets exist". Being honest with ourselves means admitting it when we don't currently know the answer, and holding an agnostic attitude on this matter. It means not jumping to conclusions.

It can be difficult to do this. Having an agnostic attitude to something doesn't tend to be encouraged in our society. And we tend to have a bias towards information that we have, and against potential information that we don't yet have. We tend to privilege the information we have. It's tangible, whereas the other possibilities are not.

This bias can be subtle, such as if we take the available evidence -- from which we are prematurely forming judgments -- as evidence against possibilities that are incompatible with those judgments. If the available evidence does not include exoplanets, we may take this as evidence against the possibility that further evidence will include exoplanets.

We can't use the available evidence in this fashion. The fact that certain information is available, while certain other information is not currently available, (in general) tells us nothing of how representative the available information is of the unavailable information. What information is currently available is simply an artifact of our current abilities to gather relevant information.

When I talk of 'judgments' in the above, these are often judgments about what explains some evidence. There is one type of explanation that is routinely overlooked. When there is some apparent phenomenon in the outside world, we tend to assume that the explanation of it simply exists in the outside world. But a component of the explanation may be due to the nature of ourselves and our perception.

For example, the coloured bow-shape that we see (and the position we see it at) when we perceive a rainbow is due to the character of the light that reaches the position where we are. The actual explanation has to do with light rays interacting with water droplets over a larger area than where we see the rainbow, and the light there being scattered in a large range of directions -- and thus there is light reaching many different positions, at which different rainbows would be perceived.

There can be details that we think exist in the world but which are in fact phenomena that our brains have subconsciously invented to explain other phenomena in the world. Belief in ghosts, for example. The point is that we may think we have evidence for them, we may think that we can perceive them, and not realise that actually they're kinds of explanations for other details that our brains came up with, without us clearly understanding that this is what has happened.

I would argue (and will argue, in my PhD) that belief in an intangible 'information' is an example of such a phenomena, where part of the explanation is to do with an explanation our brains construct.

When we consider what judgments (including explanations) are supported by some evidence, we need to also consider that the apparent evidence and explanation of it may have to do with the character of ourselves (such as our perception). Doing so may expand the set of possible explanations that could be consistent with the evidence.

Tuesday, November 24, 2020

Having power means having influence on a complex system, not having control

Are there theories of power in society that look at it from a systemic, complex-systems viewpoint? It's something I'd be interested to read about. I assume that works in political science at least implicitly address such details, though I don't know if any of them explicitly look at things from that viewpoint.

There's a lot of misunderstanding about power, that come from not appreciating a systemic, complex-systems viewpoint.

The basic misunderstanding is thinking that having power means having control. But this notion of control is an abstraction. There's never unalloyed control. Usually, the reality is far from that.

Rather than control, there is influence upon a complex system.

People and organisations usually can't just want a particular result and make that happen. They can only introduce an influence into a complex system. The result that will occur depends on how that and all the other influences and factors come out in the wash.

There will be a number of different influences, on different levels, and the result will be result of the interaction of these things, and feedback, and so on.

There is a common (implicit) belief that the higher the position of power, the greater the ability the person/organisation has to control what happens.

But that's not how things are.

In reality there are many competing influences and issues, and there's a need to satisfy differing people and groups, and compromises that need to be made.

There is structure in situations, through which influence plays out. The structure plays an important role in how that influence will play out. It determines what options are available. So in a government, it may be necessary to secure the support of a minor political party in order to push through a particular measure. So in this particular circumstance, the less powerful party may actually have greater influence than the more powerful party.

The power is predicated upon the existence of these structures, and those structures can break down. So again, the power is not absolute control. E.g. governments have power, but if the population gets pissed off enough and revolt then that power structure can break down.

Too often people think of policies and laws as forms of control. They think that if politicians/parties want certain outcomes then they just need to set up policies/laws that will produce that outcome. And if some desirable outcome didn't come about, that's because the politician/party didn't actually want to make it happen (to be explained by them being greedy, or evil, etc). But there's no such means of directly controlling what happens and making an outcome happen. Policies and laws are only instruments of influence, and there is usually a lot of limitations on the influence that they can exert (as well as unintended consequences of them).

A more trustworthy way of asserting which claims are supported by the evidence

This post is a preliminary attempt to express the following ideas.

We need evidence to determine whether a claim is true or not.

But in our society, claims are judged mostly not on evidence, but by who is making the claim.

Is the claim being made by an expert in the field? By a scientist? Or by some random person on the internet? Is the claim being made by a journalist? How experienced is this person? Are they a junior person, or a senior person, in their area? What is their reputation? Are they a nobel prize winner? Is the claim coming from a recognised organisation within that area (e.g. a nutritional claim from "The National Nutritional Board").

In principle, judging a claim based on the characteristics of who is making the claim (like whether they are a recognised expert on the topic) is using those characteristics as a proxy for the evidence for or against that claim. We assume that, for example, an expert knows the relevant evidence, and is able to form sound judgments on the basis of it.

However, judging claims based on who made them can be fairly unreliable.

Someone's status is not necessarily a good indicator of their knowledge or capability. One reason for this is that status tends to have a political element to it. And having more experience doesn't necessarily make someone a better judge of a topic. It might mean they are stuck in old ways of thinking, and unable or unwilling to see new ideas that challenge those ways.

What people or organisations claim is often influenced by political concerns. They aren't necessarily putting truth first.

If the science on the topic isn't settled, then different experts will have differing opinions, and it won't be reasonable to justify any particular claim based on the fact that a particular expert believes it's true. In such cases, there won't be evidence showing that a claim is true, so the 'who' (the expert) isn't a proxy for the evidence, but really a proxy for their opinion.

There can be mature fields containing beliefs that are agreed by pretty much everyone in that field, but where there isn't actually good evidence for the belief. It's just that everyone in the field is taking it for granted. (I believe that, historically, this has not been uncommon).

We may recognise the limitations of judging claims by who made them, but at the same time believe that doing so is our only practical option. No one has the time or ability to learn about every field and evaluate the evidence in it. We must defer to the experts.

While there is a lot of truth to that, there is more nuance to the matter than this. 

As explained above, there are many situations where there is no good evidence, so we can't really judge claims about them based on who made them.

Instead of feeling compelled to make a judgment in such cases, we should recognise that we usually do not need to make one. The only time we actually need to make a judgment is when we need to make some decision that requires making a judgment. If we're not in such a situation, we can remain agnostic about the issue.

And, I believe there's a better option that just deferring to what an expert claims.

The problems that 'judging claims by who made them' addresses is our lack of time and knowledge for evaluating claims. I want to suggest there is another way to address those problems.

Instead of just saying "an authority claims X", we can try to make the evidence and reasoning involved transparent, and in a fashion that opens-up the hierarchical structure of the evidence and reasoning behind the claims. We can include information about the vetting of the claims alongside the claims themselves. I'll get into the reason why I think this is a better approach.

Granted, it won't always be possible to articulate the evidence and reasoning, such as for knowledge that is based on experience. But there are plenty of areas where the evidence and reasoning can be made explicit, such as in science.

Isn't what I'm talking about already to be found in academic papers? No, I'm thinking about a very different way of presenting the information.

Central to what I'm thinking of is that the information should be organised around claims, and their hierarchical structure should be made explicit. The hierarchy of a claim's sub-claims is shown. Each sub-claim is itself treated like a claim in that it has its own page and we can see its hierarchy of sub-claims, as well as the reasoning and evidence supporting it, and information about its vetting by experts (such as pointing out problems with the evidence).

I am not talking about formalising knowledge, like using some sort of formal language/notation to specify the knowledge. I'm not talking about using some sort of mathematical means to evaluate the correctness of claims. I don't think that's possible (maybe one day, but not now). I am talking about expressing them in ordinary language. But, structuring it in a way that makes explicit the hierarchy of claims and sub-claims, and which makes explicit what are the sources of evidence for each.

These claim hierarchies should be made available in a publicly-accessible location, perhaps a website akin to Wikipedia but for claims.

Academic papers don't make the claim hierarchies explicit, and usually the evidence and reasoning for a particular claim will be distributed across several papers. And when viewing a paper you can't see a particular sub-claim and, alongside that, see information about the vetting of that claim.

By making the claim structure explicit like this, it "opens up" the elements of the justification in a way that facilitates more systematic vetting of claim structure, and providing information about its vetting.

Each claim/sub-claim is a thing that can be referenced. It has a name and a URL. It's not just something implicit within some paragraphs of text. It is a thing that can be drawn out and considered just on its own. That facilitates vetting each individual claim/sub-claim, and provides a place where information about its vetting (e.g. which experts have vetted it) can be stored. This information could also include details of any disagreements with those details.

Having the structure of the claim hierarchy being opened up like this would facilitate a more distributed process of vetting its details. It could be examined in a more piecemeal fashion. Someone could examine just a particular sub-claim. Different people could look at different sub-claims. Anyone could examine any sub-claim.

The problems that 'judging claims by who made them' addresses are the lack of time and knowledge for evaluating claims. 

I think the design I've laid out would have superior properties for this. Non-experts could look at just the top-level claim (without having to look into the details about the sub-claims), and see that has been vetted, and see any mention about issues within the sub-claim hierarchy. This information would be more trustworthy than the information that an expert has made the claim -- it would be a more reliable indicator of the truth.

Why would it be more trustworthy? Here are some reasons.

The details are more out in the open, presented in a way that's more suited for vetting, and the details of that vetting are out in the open, alongside the claims.

Because information about vetting (including any disagreements) is there as part of the claim hierarchy, there is better communication of this vetting information. It will ensure it can get more eyeballs.

Information about issues with any sub-claim can be propagated up the hierarchy of claims. So that, for example, if it's a major issue, it can be seen when viewing the top-level claim.

We can trust that the judgments reached on it (that are included along with the claim hierarchy) will be based more on the evidence and reasoning about the evidence. By having to explicitly break down a claim into a hierarchy of sub-claims, it forces more of a focus on evidence and reasoning about that evidence. And when the vetting that is made explicit is similarly broken down (addressing specific sub-claims independently of the other details), it again forces more of a focus upon the evidence and reasoning about that evidence. It will be more difficult to 'get away with' making claims that aren't grounded in evidence.

The above is just the basic picture of this idea. There would be many details to work out in practice. And though, for the reasons given above, I think such a system would likely be superior overall, that's not to say it wouldn't introduce its own kinds of issues. One last caveat is that I'm not trying to suggest that such a system would magically fix all issues to do with judging claims, I'm only suggesting that it would be an improvement over what we currently have.

Monday, November 23, 2020

Blaspheming is about challenging the suppressive nature of blasphemy codes

Blasphemy often gets framed as causing offence and hurting people's feelings. Seen in these terms, things like drawing certain cartoons seems to be going out of one's way to cause harm. Defending such acts seems to be defending something that's intentionally causing offence and hurting people's feelings.

But blasphemy codes are means of maintaining power and control within a society. They're a way of suppressing alternative and dissenting viewpoints.

Whenever religions have had the power to do so within a society, they've always (or nearly always) tried to suppress alternative and dissenting viewpoints. Blasphemy codes are a major part of how they have done this.

In some societies, the religions have lost a lot of their power and are no longer able to suppress viewpoints like they used to. In other societies, they still wield this sort of power.

The ruling powers in the society can wield blasphemy codes to suppress. Also, the people in the society can wield those powers, against minority groups, such as people of other religions or atheists. Blasphemy codes also provide a convenient excuse for punishing people, by making trumped-up charges of blasphemy.

People get brought up to believe that utterances outside of certain bounds should make them feel deeply offended and angry, and that if someone says such utterances this means they should be severely punished. These people have been brainwashed into responding this way.

It is a great thing when a society has moved beyond blasphemy codes, and where its citizens are afforded greater freedom of thought and speech. Yet certain religions wish to impose their blasphemy codes upon all societies -- with the threat of violent reprisal for any violation of those codes.

This creates a conflict. Which is more important? Freedom of thought and speech, or the power of blasphemy codes? For the reasons given above, I think that blasphemy codes are morally bad things, and freedom of thought and speech are morally good things. I think it is a bad thing to tacitly validate and condone blasphemy codes, by accepting that everyone should be beholden to them. Thus, when religion has made the opening move of saying "you must follow our blasphemy code", we should support people's freedom to respond with a violation of that code.

Online moderation should be logged for transparency

There's no transparency in online moderation. On discussion sites like Reddit and Hacker News, in online discussion forums, and things like Facebook groups, moderators can delete comments and remove users without any transparency. There's no way to see who/what was removed, or why that action was taken.

No transparency means no accountability for the moderators. Moderators are just ordinary people, with all the usual biases, pettiness, ideological zeal, and other flaws. There's no accountability that stops them from removing content and users for reasons other than them violating the group's rules. E.g. because it disagrees with their political views.

This is not good. I think moderation should be logged. The logging should record the specific comments that led to the content/user being removed, and perhaps an indication of which rule(s) were violated. It should be possible for anyone to view the record of moderation. That record should probably be read-only -- as in, users shouldn't be able to comment on the logs, as that would probably (I think) lead to endless cycles of disputes. 

I think this is more important than it seems. I suspect that more and more of our social and civil lives will end up being conducted online through things like these forums. If that happens, a lack of moderation transparency will become a larger problem, and could have serious consequences for people's lives.

Collaborative 'summary of useful points' for Reddit/Hacker News kinds of posts

Sites like Reddit and Hacker news are made up of posts, and each post is about some topic and contains a discussion thread about that topic.

The idea I want to talk about would probably be most suited to certain types of posts, not all posts. It'd be suited to posts like those about news stories, where the discussion threads usually contain a lot of interesting information that fleshes out the picture of the story.

That interesting information tends to be lost amongst a lot of "noise". It'd be quite useful to have a condensed summary of all the useful information dispersed throughout the thread. I could imagine the post having two tabs. A 'thread' tab (shown by default) and a 'summary of useful points' tab.

Is there a way we can incentivise the collaborative work of constructing this "summary of useful points"? And have a sufficiently simple design?

The following are two ideas for how it could be done. These may not be suitable, but they're at least starting points for thinking about the problem.

The first idea is to allow users to add bullet points, where each one contains a 'useful point' summary, and for these to be voted on, where their number of votes controls whether they're shown as part of the summary of useful points.


  • limit on the size of the bullet points. Perhaps 280 characters, like tweets.
  • if a bullet point has had more than, say, 20 votes, and is in the negative, then it will be hidden (though there's a link to view the hidden items).
  • let the users link a bullet point to the bits of text in the discussion thread that originally made the point. The UI details of this are beyond the scope of this post.

The other idea is that the summary of useful points is updated via a 30 minute cycle that involves a number of phases:

  1. 10 minute phase where anyone can suggest changes to the current summary. Each is limited to 280 characters. People can vote on these suggestions.
  2. 10 minute phase where anyone can write a new summary. They can use the pool of suggestions to help them decide what changes they want to make to the current summary.
  3. 10 minute phase where the new summaries are anonymously shown for voting. When viewing a new summary, users can see a diff of it compared to the current summary.
  4. The top voted summary (if it passes a critical threshold of votes) becomes the new summary, and the cycle repeats.


  • users can have the thread highlight new comments added since last time the summary was updated. There could be buttons to navigate to next/prev new comment. 
  • users can view history of changes to the summary.
  • the summary tab would show a representation of the update cycle and indicate where it currently is in the cycle. 

Could there be other possibilities? Could there be something that doesn't involve any threaded discussion at all?

Perhaps you could have a system that cycles between two phases. One is where there's a discussion thread. The next is where that content is condensed into a summary. Then this is summary is a seed for further discussion, and then the current summary plus the new discussion is condensed to form the new summary, and so on. At the end of each cycle only the summary is kept (the comments are effectively discarded -- though perhaps a read-only view of them can be accessed).



  • I believe Stack Overflow originally wanted to have a feature a bit like this, but that doesn't seem to have panned out. Would be worth investigating.
  • Are there any other systems or designs doing something similar to these ideas?
  • Back in 2005 I wrote Slashdot Article Summaries?, which was a more basic take on the ideas outlined in the present post.

Sunday, November 22, 2020

How to help learners develop the subconscious knowledge that is the substance of our understanding

This post is a preliminary attempt to express some ideas about how to teach knowledge.

I imagine these ideas wouldn't always be applicable. To apply them you'd probably need to have a very good grasp on the material you want to teach, and you don't always have that (especially for difficult topics). It also seems like it'd be much more difficult to apply for more abstract knowledge.

Even though this post is itself an attempt to convey some knowledge, it doesn't follow its own dictates, for the two reasons given above.

We can distinguish between subconscious and conscious parts of our knowledge. The conscious parts of our knowledge are the parts you can consciously access. You can interrogate them with introspection, and they're what you can verbalise. There's also the subconscious knowledge that underlies those consciously-accessible details.

Think about what that knowledge enables a person to do. It may let them think about certain topics, draw certain conclusions, solve certain problems and so on. What we can verbally articulate of that knowledge is likely to be a pale shadow what is actually there in our brains that enable us to do all those things. There's a lot of subconscious knowledge that we can't consciously interrogate or articulate.

This subconscious knowledge is a big part of why AI and robotics is so difficult. Sophisticated AI or robotic systems would need to embody such knowledge, but we don't have a good enough grasp on such knowledge to be able to embody it (or much of it) in such systems.

The conscious knowledge, which we can verbalise, seems to "sit on top of" the subconscious knowledge, which is the foundation and main substance of our knowledge.

The subconscious knowledge seems to be what we primarily use when we actually apply the knowledge. When we're applying knowledge we're usually not explicitly thinking it through in verbal terms, and we couldn't verbalise those details if we wanted to.

Our understanding of the conscious knowledge (the knowledge we can verbalise) is grounded in the subconscious knowledge. We can create verbal definitions of concepts that are in our conscious knowledge, but our understanding of those concepts is primarily a matter of our subconscious knowledge. It is notoriously difficult to articulate your understanding of the meaning of concepts.

Despite this, it's easy to think that our knowledge equates to our conscious knowledge. For that's the knowledge that we can access. When we consider our conscious knowledge (for something we understand well), there's no obvious deficits to it. We can define the concepts that form it in terms of other concepts, and these in terms of other concepts, and so on. In this way, we can break down verbal descriptions of the knowledge into simpler and simpler elements. Once we've described the simplest concepts related to the top-level concepts for this bit of knowledge, we seem to have completed the task. Those simplest concepts seem to ground that task of describing the concepts.

But actually, as described above, there is subconscious knowledge underlying our understanding of all of those concepts in that hierarchy. It is because we have that subconscious knowledge that we can look at that description of the hierarchy of concepts in conscious knowledge and understand them. It's because of that subconscious knowledge that there doesn't appear to be anything missing when we describe the conscious knowledge.

Typically, when knowledge is presented in material like lectures, lecture notes, and textbooks, the focus is on communicating the conscious (verbalisable) knowledge. The overarching structure is to define the concepts. Within this structure there may be illustrations (examples) and exercises.

This is a problem because the subconscious knowledge is the substance of understanding. That's what we really want people to learn. Teaching them in a way that's focused around defining concepts is not a good way to get them to develop that subconscious knowledge.

While the person doing the teaching will already have the subconscious knowledge to understand those definitions, the learners will not. That makes it difficult for the learners to learn the conscious knowledge. And it's not what they should be learning in the first place -- the learning should be focused on them developing the subconscious knowledge.

This limitation of the teaching material won't be apparent to the teacher, because they already have the subconscious knowledge that makes the definitions understandable to them. (The distinction between conscious and subconscious knowledge, by the way, explains a lot of "the curse of knowledge", in which someone who understands some material is poor at communicating it because they can't see what it's like for someone who doesn't already understand the material).

But there's an obvious question here. What other option do we have but to try to communicate our conscious knowledge as best we can? By definition, we can't access our subconscious knowledge.

(We can't access it via introspection, nor do have knowledge of it from fields like neuroscience. We don't understand enough about how our brains work. If we were to eventually obtain such knowledge in an area like neuroscience, that might help in developing learning strategies, but it's not like if we could give someone a description of the subconscious knowledge they could learn it by reading that description.)

What I'm suggesting is not that we could or should try to directly communicate the subconscious knowledge. It is that the aim of the teaching should be, first and foremost, to present material to the learners that will best help them develop the subconscious knowledge. And this is not to present them the verbalisable conscious knowledge (definitions of concepts).

Here's how I think we can help people develop the subconscious knowledge.

The key is to recognise that knowledge is a problem-solving tool.

I mean "problem" and "problem solving" in very broad terms. I don't mean just things we'd usually label as problems or problem-solving. I mean that knowledge is there to help us do things. To figure things out, to achieve goals, to understand some issue, to draw conclusions, and so on.

Under the view that knowledge is a problem-solving tool, the bulk of our knowledge, which is the subconscious knowledge, is there for solving problems.

That means, to help learners develop the subconscious knowledge, we need to convey to them what the problems being solved are, and how the knowledge solves those problems.

The problem provides the motivation for the particular bit of knowledge. It lets the learner understand what that knowledge is there to enable. And we can show them how that knowledge solves the problem.

So we should always start with a motivating problem, and then present the relevant concept(s) for solving that problem. We should never introduce a concept without having first presented a motivating problem.

We should start with the most core of the problems and concepts. To do this, we can examine dependencies between the problems (and thus between their corresponding concepts). Those that don't depend on others are core ones. Ones that depend on others are not core ones. There may be multiple levels of non-core concepts.

And, we want to start with the simplest version of each problem/concept, and then progressively add wrinkles (special cases, or exception to the general rules) to those.

We should convey those details through concrete example scenarios that demonstrate the relevant issues we want to communicate (the problem and the means to solve it). And we should use a use a variety of situations to flesh out the learner's picture of them.

After we've demonstrated the problem and solution to the learner, such they have a concrete understanding, we can provide the names for the relevant concepts in that understanding. We should not provide their names until this point. 

It's less of a mental burden on the learner to do it this way. If you present the concept names up-front, the learners need to remember a name for something they don't yet understand.

The goal is to help the learner develop an understanding of the material. Teaching that's focused on concept definitions isn't communicating the bulk of an understanding (the subconscious knowledge). That sort of teaching puts more of a burden on the students' memories. The 'learning' becomes more of a matter of memorising and regurgitating information. The more extreme version of this is the "information dump". And not only is this the way students are taught material, but this broken picture of learning is built-into how students tend to be assessed, as well. So much assessment is oriented around recall of the conscious (verbal) knowledge. Like being able to remember facts and definitions.

If you can teach in a way that focuses on developing the student's understanding, it should put much less of a burden on their memory. Understanding will fix the relevant subconscious details in their heads.

The approach just outlined may seem inferior to the usual approach of describing the verbalisable knowledge (defining concepts).

Compared to presenting concrete problem scenarios first, as motivations for concepts, the usual approach of defining concepts may feel far more orderly, pure, objective and precise. Our approach may seem messier, less objective, and getting less at the heart of the knowledge.

I believe this is an illusion, that primarily comes from equating knowledge with the consciously-accessible, verbalisable knowledge. If you think knowledge equates to defining concepts, then defining concepts will appear to be how we should teach knowledge. But if you think that knowledge is primarily the subconscious knowledge, then we see the task differently.

Here's a brief example outlining how these ideas could be applied. It's not an example of the actual teaching material we'd present, but a high-level description of what such teaching material would contain.

This example concerns teaching people about relational databases. Unfortunately, if you're not familiar with relational databases, the following might not make a lot of sense. I chose them as a topic because they're something I have a bit of familiarity with, with respect to teaching about them.

The first thing we'd do is determine how 'core' each of the problems (and associated concepts) are. We'll use this information to determine what order to introduce them to the learners. We want to start first with the most core of the problems.

The most core problem that databases address is storing information. There's retrieving information, but first of all you need to store the information. And the most core problem to do with storing information that relational databases are designed to address is to do with unambiguous identification of information and the associated issue of redundancy of information. 

So we would start with some example scenarios that concretely demonstrate these problems. I'll go into some details of this in a moment.

After those problems associated with storing information, the next most core problem is that of retrieving information. Like of wanting to get different sorts of 'answers' about what is there in the stored information.

Retrieving information is less core than the first problem of dealing with redundancy, as the first problem has to do with storing the information, which needs to be done before we can retrieve information.

Perhaps the next most central problem is the need to be able to design a database to fit some situation. The sorts of situations we might face, and how we want to develop a design that avoids the redundancy potentially present in the information there.

Then there are many less core problems, associated with various more advanced or specific details that could be gone into after those.

(As an example of more specific details, in relation to database design there is the point that the abundance of Nulls in a table often indicates poor design. For the motivation for this we would provide an example demonstrating the issue. There's also issues like efficiency, accessing database information from within programs, security, and so on).

Now that we've determined how core each of the problems (and their associated concepts are), we know what order to present them to the learners, and we can figure out the details of how to present them. In the following, I'll go into more detail about how we could teach the knowledge associated with that first set of core problems, to do with storing the information. I won't go into similar detail for the other problems.

We could start by giving some example scenarios of information that may be stored. I.e. we would write down some of the information that might be stored. One of these might be information that a shop keeps about customers' purchase histories.

Then we would introduce the relevant concept names, like 'entity', 'field', 'table', and 'columns'.

We could give a couple more illustrations to help reinforce the concept names.

Then we could give some example scenarios that demonstrate the problem of being able to determine which real-world entity some information is about.

There could be an example of where there's customer information and where there's issues of determining which actual person the customer information is about.

For example, there are entries about customers and their purchases, which have the following customer names:

- Edward Henderson

- Ed Henderson

- E Henderson

it could be that the one employee added all of these bits of information, and they remember who these entries refer to (perhaps they all refer to the same person). But maybe they will forget these details in a few months. Or maybe a different employee is looking at the data and trying to figure out who each of those entries refers to. Is it the same person, or different people?

Being able to determine which person the information is about is important for being able to find all the information about a particular person. That may be just to see that information, or it may be for if we need to change that information (e.g. if that person decides to change their name, and we want to change all occurrences of their name that we've stored) or something associated with it.

Then we can give example scenarios demonstrating that, by ensuring that all entities have a unique identity, these problems are avoided. We can illustrate some of the different ways entities can have unique identity (e.g. a combination of existing fields they might have, or giving them a new field like an identification number).

Then we can illustrate why it is that information about the same entity may occur multiple times in the information we've stored.

In our example we can see it's because the one customer may make multiple purchases (on different days). So we record information about that customer for each of those purchases.

We can give other examples to show that each time an entity occurs multiple times, it's because it is related in some way to multiple instances of some other kind of entity (e.g. if a library tracks all the book borrowings of a person, that person will occur once for each borrowing).

After having illustrated this concept, we can introduce the name 'one-to-many relationship' for it.

We can present scenarios that demonstrate that where there's one-to-many relationships and there's duplication of data (like if for each purchase we stored the customers first and last names and postcode) we run into problems similar to the ones we mentioned at the start where the person's name was entered multiple times and potentially spelled in multiple different ways. Difficulties in finding all the cases you want, and in updating them, and where errors can be introduced.

Then we can show examples illustrating how this problem can be addressed by having a separate table for the 'one' entities (like customer), where all the information about the 'one' entities is stored. We've established that each entity should have unique identifier (say that each customer is given a 5 digit identifier). Thus we can just include this identifier in the 'many' table (purchases) and not have to include any other information about the customer in the purchases table.

So the only customer information that gets duplicated is its identity. The identity is something that shouldn't change, so we don't have the issues of needing to make changes to all occurrences of that same information (but even still, since it is unique, we can have the software easily find all instances of it and thus change them if we needed to).

Once we have a table that's just for the 'one' entities (in one-to-many relationships), the computer software can do things automatically for us

  • check that each entity has a unique identity (and not let us add one that doesn't have a unique identity)
  • check that a reference to an identity (in a 'many' table) is to one that actually exists (actually, and also that it's of the right type of entity, as we'll get to).
  • we can also set up the software to automatically create a unique identity (like an ID number) for new entities 

(Having a separate table for the 'one' entity in a 'one-to-many relationship' creates issue of having to cross reference the customer table if we're looking at a purchase and want to find out details about the customer (like their postcode), which adds some complexity, but later we'll see how the software can automate this).

After having illustrated these details about identities, and referencing identities where there's one-to-many relationships, we can introduce the following names for the concepts
- primary keys (what uniquely identities entities)
- foreign keys (the references to these entities)

To reinforce the understanding of these concepts we've just named, we would then further illustrate them with examples.


Related: Being able to explicitly reason about a concept is a skill. That post argues that learning how to reason about a concept is learning a skill, which means it requires practice. That relates to the present post in that when you provide the concrete scenarios presenting the problems and how the concepts can be used to solve them, you want to present multiple varied scenarios such that the learner can practice seeing things in these terms. And you'd want to give them exercises to do along the way, and feedback, as well.

Wednesday, November 18, 2020

News media present a misleading view of what arguments and knowledge are

An argument is meant to be a way to arrive as close to the truth as we can. It's a way of arriving at knowledge.

If parties disagree on some topic, and we want to evaluate their arguments, we need to consider questions like:

  • for this topic, what are the relevant considerations for evaluating an argument?
  • what is the evidence at hand?
  • how do each of the parties' claims stand up to reason and evidence?

But when media outlets present disagreements, they generally do so in a "he said, she said" fashion. They just present the claims, without evaluating them. They don't ask questions to dig deeper, to try to get at the truth.

This lets parties game the system. If a politician knows that their arguments will be uncritically presented, then they won't treat the disagreement as an argument, but as a PR game.

The way the media presents arguments involves an implicitly relativist view of arguments and knowledge. In this view, there isn't objective truth or knowledge. The most fundamental details presented are just what different people say. There is no evaluating those claims, because there's no notion of truth implicit in this view of arguments.

The media is a major source of the arguments that people see. The view of arguments and knowledge that it presents informs people's model of the nature of arguments and knowledge.

The "he said, she said" view makes arguments and knowledge appear relativist, and as things that don't involve reason and evidence.

"Be kind because you never know what someone is going through" is a nice sentiment but fairly useless advice

You might have heard the advice "Be kind, because you never know what someone is going through". I think that's a nice sentiment, but at the same time I think that, as advice, it's pretty useless.

This advice is meant to apply to situations where you might negatively judge someone. Perhaps they seem grumpy, or scruffy, or vague, or are exhibiting some other negative behavior or trait.

The advice sounds good -- instead of jumping to conclusions about that person, acknowledge that they might have some hidden struggles that are causing them to be that way. By following this advice you can be more compassionate.

But I think the advice is fairly useless in practice, in that it doesn't make people more compassionate.

It's predicated on the idea that people observe the behavior of the other person, and then formulate a negative judgment of the person. The advice is meant to short-circuit the second-step of that process.

Forming that negative judgment is in effect developing an explanation of the reason for the person's behavior: they're acting that way because they're a jerk, or a loser. The explanation is usually that there's some defect in the person's character.

But I don't think that two-step process (perceive, then draw conclusions) exists in reality. In reality, people's observations are the judgments. They perceive a person who is a jerk, a lazy arsehole, or a grumpy mofo. Their perception inherently contains the explanation. And that explanation appears to them to be an objective part of what they're observing.

The advice to "Be kind, because you never know what someone is going through" requires you to think that you don't actually know what the cause of someone's behavior is. But in real life we tend to always think we do, objectively, know why the person is behaving in that way (because they're a jerk, and so on).

We might appreciate the point about being kind in the abstract, but we're not likely to think it applies in the cases where it actually does.

What would better advice look like? It would acknowledge that our perceptions inherently involve explanations of what is being perceived, and that doing this is the problem.

It might look something like the following (but ideally more concise and punchy): Remember that, though your perceptions of people seem objective, your brain is subconsciously making assumptions about people's character in order to explain their behavior, and these assumptions can be wrong. Their behavior might not be because of their character, but because of what they're going through.

Example of a lightweight workflow that the OS would ideally support

Work at the computer often requires the user to undertake repetitive patterns of actions. So there's an implicit workflow to the user's activities. Ideally, the Operating System (OS) would support such workflows, to lessen the amount of repetitive busywork the user needs to do.

Here's an example of the kind of lightweight workflow I'd like an OS to be able to support. I'll leave questions of how such workflows could be supported to future posts.

This workflow is from a university tutoring job, where I was marking some assessments. (For my own reference, these were weekly labs in a database subject at JCU).

There was a spreadsheet with assessment-related information (like listings of each tutor's students), an online system (Blackboard) that students submitted their assessments to and to which their marks were added, and I kept a notes file where I kept a copy of my feedback on assessments before uploading them along with the marks.

For each of my students in the spreadsheet, I would

  1. copy their name from the spreadsheet
  2. paste their name as heading in my notes file
  3. search for their name in Blackboard
  4. click on the link for their submitted assessment
  5. scroll down to the bottom of the page
  6. click on the relevant items to download their assessment
  7. open that assessment (e.g. in Microsoft Word)
  8. check their assessment against the solution I'd printed out
  9. write my feedback in the notes file
  10. go back to the Blackboard page for the student's assessment, enter their mark, and copy and paste my feedback from my notes file.
  11. click on the 'x's on that page multiple times to get back to the list of the student assessments
  12. that listing will have scrolled back to the top of the list, so I'd have to find the student name's again
  13. click on the link next to the student's name to post their mark, and click the confirmation
  14. go back to the spreadsheet and note down that I've completed marking off this student.

These tasks involved so much switching between applications. Many of the steps involved moving the mouse pointer to a particular place on the screen. So much of the activity was: switch to this app, for step X, move the mouse pointer to the place for step X, do one or more actions, switch to this other app, move the mouse pointer to the place for the next step (or the net part of the current step), and so on. There was much repetitive tedium. There has to be a better way.

Of course, it would be possible to write a single application that encapsulates this entire process and which streamlines it all. But there is a general need to support workflows that involve multiple different applications, like in this case, and the question I have is, how can such workflows be best supported on the Operating System level?

Tuesday, November 17, 2020

The value of greater convenience at scale in technological developments

When thinking about and judging technological developments, we tend to place too much emphasis on new kinds of features, and too little value on greater convenience.

This post is talking about is an instance of how it's important to be able to consider broader details than specific cases in isolation, though it is stand-alone and you don't have to have read that post to understand it. I wrote this post to clarify my understanding of its topic, and to get a 'starting point' out there that I can later build on and refine.

Our focus here is on ways technological developments can provide benefits, and how people judge the value of those developments based on those ways. It is worth noting in passing that, of course, not all new technologies actually provide benefits. Not all of them provide benefits over what already exists. And people also judge the value of new technologies based on more than their features and added convenience. How different they seem, and how "cool" they are, play a role, for example.

New kinds of features are valued.

A new phone might have a new kind of sensor (lidar), or a new kind of camera lens (wide-angle). It might now have stereo speakers, and be waterproof.

Or a new technology's new feature might be a new category, like VR headsets.

These new technologies can do things that their predecessors couldn't do, or things that no prior technologies could do.

Often, people will evaluate a new piece of technology pretty much in terms of the number of new features it has.

Then there are technologies that don't provide any new kinds of features, they just provide greater convenience. Perhaps they can do the same kinds of things, but faster, in a lighter package, a smaller package, with greater efficiency, or easier to use, and so on.

When the iPod was first released, it was seen in such terms. It didn't have any particular features that other players didn't already have. "No wireless. Less space than a Nomad. Lame." (If you're not familiar with the iPod products, they were massively successful).

Same with the release of the iPad. There wasn't any particular new features to it. Many saw it as "just a bigger iPhone".

To dig a bit deeper, we need to switch from talking about features to talking about the ends that can be achieved with the technology. We don't think of all technologies as having "features" (what features does a plow have?), but we do think of them in terms of what they can be used to do -- what sorts of ends can be achieved with them.

When a new technology is developed, we compare the ends that can be achieved with it to those that can be achieved with existing technologies.

When evaluating new technology, people put too much emphasis on whether it can be used to achieve new kinds of ends, and too little on whether it provides greater convenience in achieving ends.

Note also that when I talk how people value new technologies, I am not talking about the value they may assign the technology for their own personal use of it. I mean the value they see in that technology itself -- the value it can provide in general ("to society").

What is perhaps surprising is that a lot of technology that, now that we're familiar with it, seems obviously to be a new category compared to what came before it, would have been seen by many when it was new as merely providing greater convenience, and not as something that enabled new kinds of ends to be achieved.

Consider when mobile (cellular) phones were first introduced. What do they let you do? They let you talk to people across physical distance. But they let you talk to people while you're outside of your home or office (or less likely, since mobile phones weren't ubiquitous, talk to someone else while they're out). This can be seen as just providing a greater convenience for talking to people. And that's likely how people would have seen it then -- they were used to talking to someone while at home or at the office. To them, that's what a phone call was. If they needed to talk to someone they could always do it when they're home or at the office. Being able to do so at other times is a convenience (for some people this was an important convenience).

Or consider when the car was first introduced. It lets you get from A to B. But you can already do that with a horse, and horses were more reliable than early cars.

There's two points here. First, it is actually true that these technologies like mobile phones or cars were "merely" providing greater convenience (in certain ways) for achieving ends that could already be done by existing means. But second, people underestimate the value of providing greater convenience, because they are considering the new technology in terms that are far too narrow.

They consider the technology by considering, what value one of those items, considered in isolation, has. They don't go much beyond this to considering the new technology in broader terms, in terms of what it would mean for there to be many of these items out there, over a period of time. For that is the actual potential (or reality) for new technology. In these broader terms greater convenience can be transformative, and can enable new things that would not have been possible without that greater convenience existing at scale.

Consider the printing press through this lens. What kinds of ends can be achieved with a printing press? A printing press can produce books. But that could already be done. And hand-made books could be more aesthetically pleasing, too. Its benefits were conveniences: producing more uniform copies, quicker and cheaper (I don't know whether it could do so when it was first developed, but if not presumably it didn't take too long before it could). 

But if we shift from thinking about what an individual printing press can be used to achieve, considered in isolation, to a broader perspective of multiple printing presses and what happens if they're operating over a period of time, we can see that the greater convenience is more significant.

More books can be produced, books can become cheaper, more people can have access to books. Over time this will help enable greater literacy and education within the populace. It enables ideas to spread and intermingle more freely. 

From this broader perspective we can see that convenience at scale can enable all sorts of things that aren't possible without it. It can enables uses that require scale, speed, lower cost etc.

For another example, consider YouTube. We are familiar with it now, and what such sharing of videos enables. But if we were not familiar or the internet and tried to consider what sorts of ends such a thing could be used for, considering those things in isolation, we would note that it does not actually enable any new kinds of ends.

Prior to the internet and YouTube, it was still possible to share video with other people. You could mail copies of VHS tapes to people. Someone could have built a company that would let users browse and view other people's videos. It could have been a catalogue company where people mail the company VHS tapes of short videos and the company would send out a catalogue with thumbnail images and short descriptions of each video. Users could mark down which videos they wanted copies of and mail that information to the company, which would then send out tapes containing those videos.

Users could even mail back information on which videos they "liked" and "disliked" videos, and the company could use that to adjust the content of future catalogues. Users could similarly write comments on videos.

This was all technically possible back then, and if you'd provided a description of the internet and YouTube to a person back then, they might have realised that the same ends could have been achieved with existing technology and wondered what the point of this YouTube was supposed to be.

If you think that such a company is fanciful because of its impracticality, that's exactly the point. The difference is that the internet and YouTube provides a greater level of convenience, and that greater convenience enables applications like YouTube to exist in practice.

Once the new technology has become commonplace, we are aware of the broader impact of its greater convenience, and we just see that impact as part of the technology itself. We thus see the new technology as obviously different (and usually, better than) the older technologies. We forget that we once saw it as basically the same but just with some quantitative tweaks.


The ideas in this post are related to the notion that technological development is removing constraints. Providing greater convenience is a large part of 'removing constraints'.