Share & Embed Misconceptions
A Curated Inventory of Programming Misconceptions

We believe misconceptions are valuable. Progmiscon.org enables and encourages sharing them.

Stable Names

Each misconception has a name (like ObjectsMustBeNamed). We strive to keep these names short but descriptive.

We continuously grow and improve our inventory of misconceptions. This means that at some point we may want to rename a previously published misconception. We try to minimize such renamings, and when we do rename a misconception, we will keep the old name alive (and make it forward to the new name), to ensure that references to progmiscon misconceptions will never break.

Each Programming Language has its own Misconceptions

We organized the misconceptions by programming language. Our inventory currently includes misconceptions forJava, JavaScript, and Python.

If a misconception exists for multiple programming languages, then it has the same name for each language. For example:

Link to a Misconception

Each misconception is presented on its own page, at a URL that looks as follows:

https://progmiscon.org/misconceptions/PL/MC

where PL stands for the programming language (e.g., Java, JavaScript, or Python), and MC stands for the name of a misconception (e.g., ObjectsMustBeNamed). This makes it easy to link to a specific misconception from anywhere.

For example, ObjectsMustBeNamed for Java is available at:

https://progmiscon.org/misconceptions/Java/ObjectsMustBeNamed

Post about a Misconception on Social Media

If you post about a misconception on social media, include its link to get a nice card in your post:

Embed a Misconception (iframe)

You can include a misconception on your own web page in an iframe. Here is an example:

To get this compact presentation of the misconception (which omits the page header and footer, and the detailed discussion), use the URL for iframe content:

https://progmiscon.org/iframe/misconceptions/PL/MC

As with any iframe, you can pick its size. Our iframe content works with a relatively wide range of sizes. The iframe above is 700 by 640 pixels. Here is the HTML snippet we used:

<iframe
width="700"
height="640"
frameborder="0"
allowfullscreen
src='https://progmiscon.org/iframe/misconceptions/Java/ObjectsMustBeNamed'
title='Misconception at progmiscon.org'
></iframe>

Retrieve the List of Misconceptions

We provide a so-called "static API", a JSON file you can download that contains the list of all misconceptions on this site.

https://progmiscon.org/json/data.json

The JSON file has the following structure:

{
  "meta": {
    "source": "https://progmiscon.org",
    "publicationDate": "2020-12-29T14:53:47.391Z"
  },
  "pls": [
    "Java",
    "JavaScript",
    "Python"
  ],
  "concepts": [
    {
      "name": "AccessModifier"
    },
    {
      "name": "Allocation"
    },
...
  ],
  "misconceptions": [
    {
      "name": "PlusConcatenatesNumbers",
      "pl": "Python",
      "shortDescription": "The plus operator can concatenate strings and numbers",
      "concepts": [
        "Text",
        "Sequence",
        "Number",
        "Expression",
        "Operator"
      ],
      "status": "draft"
    },
    {
      "name": "NoSequenceRepetition",
      "pl": "Python",
      "shortDescription": "There is no operator that repeats sequences",
      "concepts": [
        "Text",
        "Sequence",
        "Number",
        "Repetition"
      ],
      "status": "draft"
    },
...
  ]
}

The JSON file contains the list of programming languages for which we have misconceptions, the list of concepts that the misconceptions relate to, and the list of misconceptions.

For each misconception it contains its name and programming language, its short description (a descriptive phrase without formatting), the list of concepts it is related to, and its status. The status is either public (fully documented) or draft (incompletely documented).

Stay up-to-date

Follow us on  twitter to hear about new misconceptions.