{
 "blyg": "0.4",
 "id": "0zkyp3t94ag086dsadtfy8jx0a",
 "kind": "thread",
 "origin": "https://notionparallax.co.uk/",
 "page": "https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values",
 "author": {
  "name": "Ben Doherty",
  "url": "https://notionparallax.co.uk/"
 },
 "created": "2015-08-23T21:00:25Z",
 "updated": "2015-08-23T21:00:25Z",
 "version": 1,
 "content_md": "# Billing the gender fluid Cardinal – no forced values\n\n\n<style type=\"text/css\">\n  .sidebar {\n      width: 60%;\n      display: block;\n      float: right;\n      transform: translateX(2em);\n      background-color: hsla(0, 0%, 0%, 0.1);;\n      padding: 1em;\n    }\n</style>\n\n<img class=\"alignright wp-image-1851\" src=\"https://notionparallax.co.uk/assets/image01.png\" alt=\"image01\" width=\"146\" height=\"200\" />I touch on this in <a title=\"Fluid categories – define things by their attributes not their name\" href=\"http://tropos.bvn.com.au/2015/02/27/taxonomy/\">my Fluid categories post</a>. I think it's worth expanding on. Traditional databases are designed to serve one master–technological constraints.\n\nThink the typical drop down list on a survey. If the correct answer isn't one of the two options you huff and puff for a minute, look for the field where you can type your answer, you can't find it, so you close the survey and vow never to do another survey again. Technology has moved past these sorts of constraints. Unfortunately the technology hasn't filtered down to _all_ the people who design human-computer interfaces [^1].\n\nA good example of forced values is SQL style databases[^2]. They were designed specifically to deal with the extortionate price of storage [^3]. This constraint is no longer relevant, so we are able to abstract away how the database actually works; to make it invisible to the user[^4].\n\nSadly those same non-HCI (Human Computer Interaction) people who deal with interactions learned to think in terms of tables and rows. This leads to a “leaky abstraction”.\n\nWhy am I talking about abstractions and tables leaking? Where are they leaking from? Where are they leaking to?\n\nThis long introduction is to prepare you for why the next part of the story is so hard.\n\n_Imagine a future where [@pontifex](https://twitter.com/Pontifex) gets rid of his silly, dudes-only rule for his club. One of the new cardinals hires us to redo their walk in wardrobe. (Better lighting to tell between different shades of red.)_\n\n_The cardinal is now a client of ours. We get them to fill in their details for our billing database. The interface looks like this:_\n\n![](https://notionparallax.co.uk/assets/image00.jpg)\n\n_Immediately we are stuck! Our mate the cardinal identifies as “fluid gender”[^5]. Ideally the entry would allow for male, female and fluid gender[^6], but just \\_fluid gender_ would do in a pinch[^7].\\_\n\n_The interface is driving a fixed set of results: either ‘male' or ‘female'. The idea of tables, rows and fixed sets of options has leaked into the designer's thinking . This is a leaky abstraction._\n\n_It's a sad situation, but the cardinal says a serenity prayer and moves on. “First name” is unproblematic, but then they get to “title”. They've put in a lifetime of dedicated work to get that title. They aren't about to let some snotty database person push them around. (╯°□°）╯︵ ┻━┻. Rage quit. Fire BVN!_\n\n<div class=\"sidebar\">\n## Gardening and folding\n\nGardening, in the sense of pulling out the weeds and tending to the flowers, is applicable to databases too. If a user has put in things that we don’t want, but make sense, then we need to find ways to fix that. The first line of defence is to support them to make good inputs though typeaheads. If that fails then the Database gardener will look for ways to keep the semantics alive.\n\nGardening is for when something is wrong. The gardener will find _sydney_ and convert it to _Sydney_.\n\n![](/assets/accent-folding.png)\n\nFolding is more nuanced. It is for when words all point to the same concept, but for one reason or another are written differently. E.g. USYD, Sydney Uni, University of Sydney etc. They are all valid, so we might make a mapping between all the words and their shared concept.\n\nThis is a very grey area. It’s where style guides come in handy, but also a good dose of common sense. Good examples of style guides breaking things are when Fairfax Media write out _Royal Melbourne Institute of Technology_, when RMIT has explicitly stated that their name is not an acronym. BVN is in exactly the same boat!\n\n</div>\n\nThis story is only slightly silly. We come across this sort of problem all the time. We'll find it more as we go international. Buildings in the USA, UK, NZ or Thailand don't have BCA classes so we can't force the field to be 1-9 and some letters.\n\nLet's try and tie these two things together.\n\n1. Doing things in a way that suits the database is outdated. The database is our servant! We should revel in this brief period between the start of tech-abundance and skynet.\n1. Real life is always richer than a database designer can imagine.\n1. I'm going to pull in a quote from <a href=\"http://www.amazon.com/Work-Rules-Insights-Inside-Transform/dp/1455554790\">Lazlo Bock's book Work Rules</a>:\n\n    > “If you believe people are good then you must be unafraid to share information with them”\n\n    This point is going to be an extension of that. If you believe people are good then you must be unafraid to share information _creation_ with them.\n\nForcing options by using drop down menus avoids people doing crazy stuff like spelling their state wrongly or filling in their religion as Jedi[^8] on the census. You also pollute your data with information that's “_close enough_ ”, which is a euphemism for “_wrong_ ”!\n\nMisspellings and other ways of referring to a common concept can be fixed with gardening and folding[^9]. Data that is flat-out wrong is invisible. If someone chooses “glass” instead of putting in a support request to a DBA[^10] to get “self cleaning glass” added to the options then that data is wrong and can only be fixed by someone with domain specific knowledge[^11],[^12].\n\nIn conclusion, enforcing particular data values creates bad data and bad will. It’s a practice that is almost never a good idea.\n\n[^1]: As an aside, I have a huge amount of respect for HCI designers. Their work is so rigorous and evidence based. Unfortunately, as we love to complain about in our own profession, not all human-computer interfaces are designed by HCI people. Especially unfortunately, this is disproportionately prevalent in ‘enterprise' software like MS word or the old Lotus Notes . My assumption for why this occurs is that the person procuring and paying for the software is very rarely the person who ends up using it.\n[^2]: Technical: I know that this is technically incorrect, but the use of normalised tables to prefill constrained dropdowns is painfully common. I know that this problem can be caused by _any_ database, but none of the others have a mental model that _encourages_ it.\n[^3]: In 1992 a 1GB hard drive would set you back about $2000US. <a href=\"http://www.jcmit.com/diskprice.htm\">Check out this dry, but still fascinating table of storage price since 1955</a>!\n[^4]: Technical: This post doesn't seek to denigrate the technology of relational databases. They have a lot of benefits. The declarative nature of SQL as a language feels like magic. What I am saying is that it is absurd--in a world of technological abundance--that the nature of the storage layer should be allowed to affect the design of the interface. The job of the interface is to protect the users' brains from the underlying technology.\n[^5]: This is a toy example. In reality our client's genders are none of our business (literally and figuratively). We therefore don't need that bit of information.\n[^6]: Chris sent me these excellent links to this exact topic. <a href=\"http://itspronouncedmetrosexual.com/2012/06/how-can-i-make-the-gender-question-on-an-application-form-more-inclusive/\">How you can make the gender question on an application form more inclusive</a> and <a href=\"https://illinois.edu/blog/view/25/110232\">Facebook multiplies genders but offers users the same three tired pronouns</a>. These two are great too: <a href=\"http://blog.codinghorror.com/doing-terrible-things-to-your-code/\">doing terrible things to your code </a> &amp; <a href=\"http://www.cscyphers.com/blog/2012/06/28/falsehoods-programmers-believe-about-gender/\">falsehoods programmers believe about gender.</a>\n[^7]: Technical: This is a really tricky problem for database design, but it's not technically tricky only cognitively tricky. The field needs to be able to contain multiple values, where those values are defined by the user. The job of the database is to support the user in storing _true_ information. If it isn't doing this then it is failing. We currently handle this is a couple of ways in P+P. Most obviously in tag style fields. E.g. BCA classification.\n[^8]: Although there's nothing wrong with that!\n[^9]: This is where you equate two characters to make them easy to find, but store them differently to make the data accurate! This image is from [this nice article](http://alistapart.com/article/accent-folding-for-auto-complete). ![](/assets/accent-folding.png)\n[^10]: DBAs are usually portrayed as the classic IT troll who lives under a bridge and eats people.\n[^11]: Usually the only person with domain knowledge that specific is the person who first put the data into the database!\n[^12]: I talk about how categories are defined in the fluid categories post. The key point that I want to hammer home is: _“Categories are an emergent way of describing set creation operations based on attributes”_\n",
 "content_html": "<h1>Billing the gender fluid Cardinal – no forced values</h1>\n<style type=\"text/css\">\n  .sidebar {\n      width: 60%;\n      display: block;\n      float: right;\n      transform: translateX(2em);\n      background-color: hsla(0, 0%, 0%, 0.1);;\n      padding: 1em;\n    }\n</style>\n\n<p><img class=\"alignright wp-image-1851\" src=\"https://notionparallax.co.uk/assets/image01.png\" alt=\"image01\" width=\"146\" height=\"200\" />I touch on this in <a title=\"Fluid categories – define things by their attributes not their name\" href=\"http://tropos.bvn.com.au/2015/02/27/taxonomy/\">my Fluid categories post</a>. I think it’s worth expanding on. Traditional databases are designed to serve one master–technological constraints.</p>\n\n<p>Think the typical drop down list on a survey. If the correct answer isn’t one of the two options you huff and puff for a minute, look for the field where you can type your answer, you can’t find it, so you close the survey and vow never to do another survey again. Technology has moved past these sorts of constraints. Unfortunately the technology hasn’t filtered down to <em>all</em> the people who design human-computer interfaces <sup id=\"fnref:1\" role=\"doc-noteref\"><a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fn:1\" class=\"footnote\" rel=\"footnote\">1</a></sup>.</p>\n\n<p>A good example of forced values is SQL style databases<sup id=\"fnref:2\" role=\"doc-noteref\"><a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fn:2\" class=\"footnote\" rel=\"footnote\">2</a></sup>. They were designed specifically to deal with the extortionate price of storage <sup id=\"fnref:3\" role=\"doc-noteref\"><a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fn:3\" class=\"footnote\" rel=\"footnote\">3</a></sup>. This constraint is no longer relevant, so we are able to abstract away how the database actually works; to make it invisible to the user<sup id=\"fnref:4\" role=\"doc-noteref\"><a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fn:4\" class=\"footnote\" rel=\"footnote\">4</a></sup>.</p>\n\n<p>Sadly those same non-HCI (Human Computer Interaction) people who deal with interactions learned to think in terms of tables and rows. This leads to a “leaky abstraction”.</p>\n\n<p>Why am I talking about abstractions and tables leaking? Where are they leaking from? Where are they leaking to?</p>\n\n<p>This long introduction is to prepare you for why the next part of the story is so hard.</p>\n\n<p><em>Imagine a future where <a href=\"https://twitter.com/Pontifex\">@pontifex</a> gets rid of his silly, dudes-only rule for his club. One of the new cardinals hires us to redo their walk in wardrobe. (Better lighting to tell between different shades of red.)</em></p>\n\n<p><em>The cardinal is now a client of ours. We get them to fill in their details for our billing database. The interface looks like this:</em></p>\n\n<p><img src=\"https://notionparallax.co.uk/assets/image00.jpg\" alt=\"\" /></p>\n\n<p><em>Immediately we are stuck! Our mate the cardinal identifies as “fluid gender”<sup id=\"fnref:5\" role=\"doc-noteref\"><a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fn:5\" class=\"footnote\" rel=\"footnote\">5</a></sup>. Ideally the entry would allow for male, female and fluid gender<sup id=\"fnref:6\" role=\"doc-noteref\"><a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fn:6\" class=\"footnote\" rel=\"footnote\">6</a></sup>, but just _fluid gender</em> would do in a pinch<sup id=\"fnref:7\" role=\"doc-noteref\"><a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fn:7\" class=\"footnote\" rel=\"footnote\">7</a></sup>._</p>\n\n<p><em>The interface is driving a fixed set of results: either ‘male’ or ‘female’. The idea of tables, rows and fixed sets of options has leaked into the designer’s thinking . This is a leaky abstraction.</em></p>\n\n<p><em>It’s a sad situation, but the cardinal says a serenity prayer and moves on. “First name” is unproblematic, but then they get to “title”. They’ve put in a lifetime of dedicated work to get that title. They aren’t about to let some snotty database person push them around. (╯°□°）╯︵ ┻━┻. Rage quit. Fire BVN!</em></p>\n\n<div class=\"sidebar\">\n  <h2 id=\"gardening-and-folding\">Gardening and folding</h2>\n\n  <p>Gardening, in the sense of pulling out the weeds and tending to the flowers, is applicable to databases too. If a user has put in things that we don’t want, but make sense, then we need to find ways to fix that. The first line of defence is to support them to make good inputs though typeaheads. If that fails then the Database gardener will look for ways to keep the semantics alive.</p>\n\n  <p>Gardening is for when something is wrong. The gardener will find <em>sydney</em> and convert it to <em>Sydney</em>.</p>\n\n  <p><img src=\"https://notionparallax.co.uk/assets/accent-folding.png\" alt=\"\" /></p>\n\n  <p>Folding is more nuanced. It is for when words all point to the same concept, but for one reason or another are written differently. E.g. USYD, Sydney Uni, University of Sydney etc. They are all valid, so we might make a mapping between all the words and their shared concept.</p>\n\n  <p>This is a very grey area. It’s where style guides come in handy, but also a good dose of common sense. Good examples of style guides breaking things are when Fairfax Media write out <em>Royal Melbourne Institute of Technology</em>, when RMIT has explicitly stated that their name is not an acronym. BVN is in exactly the same boat!</p>\n\n</div>\n\n<p>This story is only slightly silly. We come across this sort of problem all the time. We’ll find it more as we go international. Buildings in the USA, UK, NZ or Thailand don’t have BCA classes so we can’t force the field to be 1-9 and some letters.</p>\n\n<p>Let’s try and tie these two things together.</p>\n\n<ol>\n  <li>Doing things in a way that suits the database is outdated. The database is our servant! We should revel in this brief period between the start of tech-abundance and skynet.</li>\n  <li>Real life is always richer than a database designer can imagine.</li>\n  <li>\n    <p>I’m going to pull in a quote from <a href=\"http://www.amazon.com/Work-Rules-Insights-Inside-Transform/dp/1455554790\">Lazlo Bock’s book Work Rules</a>:</p>\n\n    <blockquote>\n      <p>“If you believe people are good then you must be unafraid to share information with them”</p>\n    </blockquote>\n\n    <p>This point is going to be an extension of that. If you believe people are good then you must be unafraid to share information <em>creation</em> with them.</p>\n  </li>\n</ol>\n\n<p>Forcing options by using drop down menus avoids people doing crazy stuff like spelling their state wrongly or filling in their religion as Jedi<sup id=\"fnref:8\" role=\"doc-noteref\"><a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fn:8\" class=\"footnote\" rel=\"footnote\">8</a></sup> on the census. You also pollute your data with information that’s “<em>close enough</em> ”, which is a euphemism for “<em>wrong</em> ”!</p>\n\n<p>Misspellings and other ways of referring to a common concept can be fixed with gardening and folding<sup id=\"fnref:9\" role=\"doc-noteref\"><a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fn:9\" class=\"footnote\" rel=\"footnote\">9</a></sup>. Data that is flat-out wrong is invisible. If someone chooses “glass” instead of putting in a support request to a DBA<sup id=\"fnref:10\" role=\"doc-noteref\"><a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fn:10\" class=\"footnote\" rel=\"footnote\">10</a></sup> to get “self cleaning glass” added to the options then that data is wrong and can only be fixed by someone with domain specific knowledge<sup id=\"fnref:11\" role=\"doc-noteref\"><a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fn:11\" class=\"footnote\" rel=\"footnote\">11</a></sup>,<sup id=\"fnref:12\" role=\"doc-noteref\"><a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fn:12\" class=\"footnote\" rel=\"footnote\">12</a></sup>.</p>\n\n<p>In conclusion, enforcing particular data values creates bad data and bad will. It’s a practice that is almost never a good idea.</p>\n\n<div class=\"footnotes\" role=\"doc-endnotes\">\n  <ol>\n    <li id=\"fn:1\" role=\"doc-endnote\">\n      <p>As an aside, I have a huge amount of respect for HCI designers. Their work is so rigorous and evidence based. Unfortunately, as we love to complain about in our own profession, not all human-computer interfaces are designed by HCI people. Especially unfortunately, this is disproportionately prevalent in ‘enterprise’ software like MS word or the old Lotus Notes . My assumption for why this occurs is that the person procuring and paying for the software is very rarely the person who ends up using it. <a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fnref:1\" class=\"reversefootnote\" role=\"doc-backlink\">&#8617;</a></p>\n    </li>\n    <li id=\"fn:2\" role=\"doc-endnote\">\n      <p>Technical: I know that this is technically incorrect, but the use of normalised tables to prefill constrained dropdowns is painfully common. I know that this problem can be caused by <em>any</em> database, but none of the others have a mental model that <em>encourages</em> it. <a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fnref:2\" class=\"reversefootnote\" role=\"doc-backlink\">&#8617;</a></p>\n    </li>\n    <li id=\"fn:3\" role=\"doc-endnote\">\n      <p>In 1992 a 1GB hard drive would set you back about $2000US. <a href=\"http://www.jcmit.com/diskprice.htm\">Check out this dry, but still fascinating table of storage price since 1955</a>! <a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fnref:3\" class=\"reversefootnote\" role=\"doc-backlink\">&#8617;</a></p>\n    </li>\n    <li id=\"fn:4\" role=\"doc-endnote\">\n      <p>Technical: This post doesn’t seek to denigrate the technology of relational databases. They have a lot of benefits. The declarative nature of SQL as a language feels like magic. What I am saying is that it is absurd–in a world of technological abundance–that the nature of the storage layer should be allowed to affect the design of the interface. The job of the interface is to protect the users’ brains from the underlying technology. <a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fnref:4\" class=\"reversefootnote\" role=\"doc-backlink\">&#8617;</a></p>\n    </li>\n    <li id=\"fn:5\" role=\"doc-endnote\">\n      <p>This is a toy example. In reality our client’s genders are none of our business (literally and figuratively). We therefore don’t need that bit of information. <a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fnref:5\" class=\"reversefootnote\" role=\"doc-backlink\">&#8617;</a></p>\n    </li>\n    <li id=\"fn:6\" role=\"doc-endnote\">\n      <p>Chris sent me these excellent links to this exact topic. <a href=\"http://itspronouncedmetrosexual.com/2012/06/how-can-i-make-the-gender-question-on-an-application-form-more-inclusive/\">How you can make the gender question on an application form more inclusive</a> and <a href=\"https://illinois.edu/blog/view/25/110232\">Facebook multiplies genders but offers users the same three tired pronouns</a>. These two are great too: <a href=\"http://blog.codinghorror.com/doing-terrible-things-to-your-code/\">doing terrible things to your code </a> &amp; <a href=\"http://www.cscyphers.com/blog/2012/06/28/falsehoods-programmers-believe-about-gender/\">falsehoods programmers believe about gender.</a> <a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fnref:6\" class=\"reversefootnote\" role=\"doc-backlink\">&#8617;</a></p>\n    </li>\n    <li id=\"fn:7\" role=\"doc-endnote\">\n      <p>Technical: This is a really tricky problem for database design, but it’s not technically tricky only cognitively tricky. The field needs to be able to contain multiple values, where those values are defined by the user. The job of the database is to support the user in storing <em>true</em> information. If it isn’t doing this then it is failing. We currently handle this is a couple of ways in P+P. Most obviously in tag style fields. E.g. BCA classification. <a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fnref:7\" class=\"reversefootnote\" role=\"doc-backlink\">&#8617;</a></p>\n    </li>\n    <li id=\"fn:8\" role=\"doc-endnote\">\n      <p>Although there’s nothing wrong with that! <a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fnref:8\" class=\"reversefootnote\" role=\"doc-backlink\">&#8617;</a></p>\n    </li>\n    <li id=\"fn:9\" role=\"doc-endnote\">\n      <p>This is where you equate two characters to make them easy to find, but store them differently to make the data accurate! This image is from <a href=\"http://alistapart.com/article/accent-folding-for-auto-complete\">this nice article</a>. <img src=\"https://notionparallax.co.uk/assets/accent-folding.png\" alt=\"\" /> <a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fnref:9\" class=\"reversefootnote\" role=\"doc-backlink\">&#8617;</a></p>\n    </li>\n    <li id=\"fn:10\" role=\"doc-endnote\">\n      <p>DBAs are usually portrayed as the classic IT troll who lives under a bridge and eats people. <a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fnref:10\" class=\"reversefootnote\" role=\"doc-backlink\">&#8617;</a></p>\n    </li>\n    <li id=\"fn:11\" role=\"doc-endnote\">\n      <p>Usually the only person with domain knowledge that specific is the person who first put the data into the database! <a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fnref:11\" class=\"reversefootnote\" role=\"doc-backlink\">&#8617;</a></p>\n    </li>\n    <li id=\"fn:12\" role=\"doc-endnote\">\n      <p>I talk about how categories are defined in the fluid categories post. The key point that I want to hammer home is: <em>“Categories are an emergent way of describing set creation operations based on attributes”</em> <a href=\"https://notionparallax.co.uk/2015/billing-the-gender-fluid-cardinal-no-forced-values#fnref:12\" class=\"reversefootnote\" role=\"doc-backlink\">&#8617;</a></p>\n    </li>\n  </ol>\n</div>\n",
 "content_hash": "sha256:8c0d0ee67d7f8ecac0fd7cbb0a4a78671bf6f18f7cfbd0ca26604426dff0c1cb",
 "media": [],
 "changelog": [
  {
   "version": 1,
   "at": "2015-08-23T21:00:25Z",
   "note": null
  }
 ],
 "transclusions": []
}