Today marks exactly one hundred years of Irish democracy. Formed from democratically elected members, the first Dáil (parliament) met on January 21, 1919, in Dublin. It was a promising start, with a woman cabinet member and a Socialist-leaning “Democratic Programme”. But that act of defiance against the British Empire sparked off a war of independence, then fifty years as a conservative confessional state, then thirty years of low-grade guerrilla war to the north.
But the people remained solidly committed to democracy despite the poverty and political strife, and finally, in the last twenty years, Ireland has emerged as a wealthy liberal European nation.
Throughout one hundred years, one thing has been constant in Ireland: democracy.
Ireland took the democratic traditions of its ex-colonial power and made something even better. From the beginning, it had instant-runoff, multi-member electoral districts which resulted in proportional representation in the Dáil and a necessity to compromise and form coalitions. Regular referendums are the norm, and minority populist sentiments from the left and right are represented in the Dáil, giving a safety valve for political frustration, a safety valve that doesn't exist in the antiquated first-past-the-post electoral systems of Britain and the United States.
As Britain and the United States struggle with political breakdown, they might do better than look to Ireland as a model of democracy.
Consider a typical (sadly) tech workplace where there are four men for every woman.$^1$ Assume that women and men both exhibit bias to members of other genders at the same rate. Then women will experience gender bias at a rate of sixteen times more than men.
Yes, a simple mathematical model shows minority experience of bias relative to the majority experience goes up with the square of how underrepresented they are.
To take another example from the tech world, underrepresented minorities (Black, Latinx, Native American) are outnumbered typically at a ratio of twenty to one,$^1$ Again assuming racial bias happens both ways at the same rate, the model shows that the underrepresented minorities will experience racially biased behavior four hundred times more often than members of other groups.
This model could be part of the explanation for why so many members of the majority do not see bias in the workplace$^2$. A white man might not realize that some particular type of bias that he only experiences once a year might be experienced much more frequently by minorities: perhaps more than once a month by his women colleagues and more than once a day by his colleagues from underrepresented minorities.
The model applies to all kinds of biased acts ranging from small acts of exclusion and unconscious bias to full-on racial prejudice and sexual harassment. At every level of severity, it predicts marked increases in the expected frequency of the experienced bias with lower minority representation.
Of course, this model grossly simplifies the real world. Gender and race are not binaries. There are intersectionalities that make things more complex. Biased actions are not uniformly distributed and directed. One implication is that in practice, the ratio of experienced bias might grow a bit slower than the square, but I still think it grows faster than linear.
This squaring relationship is known as the Petrie Multiplier after its discoverer Karen Petrie. It is explained in detail in an article by Ian Gent$^3$.
(Note, I hesitated to publish this article as it reduces painful lived experience to cold impersonal mathematics, and I believe our first reactions to issues of representation and bias in tech should be outrage and a commitment to fix the system. But even as these issues divide us, there is one thing that unites us: we are all engineers, and at least in mathematics we can find a common understanding.)
Appendix
(You can stop reading now if you don't care about the mathematics.)
Assume a population of two disjoint groups of people (majorities and minorities) where there are $k$ majorities for every $1$ minority. Let the total population be $n$, so there are $\frac{n}{k+1}$ minorities and $\frac{n k}{k+1}$ majorities.
Assume that people in each group act in a biased way to individual members of the other group at the same rate $r$ per time period.
Thus in total, majorities perpetrate $\frac{r n k}{k+1}$ acts of bias directed at $\frac{n}{k+l}$ minorities, so each minority is a victim of $r k$ acts of bias.
Conversely, in total, minorities perpetrate $\frac{r n}{k+1}$ acts of bias directed at $\frac{n k}{k+l}$ majority members, so each majority is a victim of $\frac{r}{k}$ acts of bias.
Comparing the rate that minorities experience bias ($r k$) and the rate that majorities experience bias ($\frac{r}{k}$) we see that minorities experience bias at a rate of $k^2$ higher than majorities.
As an experiment, I'm seeing if I can use a navigational metaphor in which the articles in this blog are arranged left to right. To reinforce the metaphor I added some CSS animation that slides the page sideways when you click between articles. I also changed the index page to list the articles in the blog in a horizontal carousel. It's still pretty crude visually.
So, I started off trying to have this blog using simple plain hand-written HTML. However, I soon start getting annoyed how much repeated boilerplate I had to write, such as in the <head and in linking together the articles from the main index page. So in an effort to make things more DRY I considered what simple templating systems I could used.
A long time ago, back before the web existed I used the M4 macro language. It has the advantage of being installed on my home Linux machine by default, so no extra dependencies are required. Let's see if we can use it as an HTML templating language.
You can see an example of a template using M4 in the source code of this blog. Note that there is just one simple line of boilerplate at the top and some closing parenthesis at the bottom, but otherwise the template is straightforward HTML.
ARTI{}CLE( 2, {
...HTML goes here...
})
The templates uses two M4 files:
lib.html which contains the HTML header and footers for all the pages.
data.m4 which contains the metadata for the pages, including the information needed to create the home page and to provide “previous” and “next” links on the article pages.
One of the purposes of this blog is to experiment with simple ways put up a blog on the web without depending on any blogging platform. For this I wanted a free way to deploy static web pages on my own domain name. For this I chose Firebase Hosting, partly because I am very familiar with it, having worked on the Firebase team and personally knowing many of the Hosting development team, but also because it is actually the best solution I know of for what I want, and it is free for sites that have the traffic of typical personal sites.
People who are comfortable using the command line might be interested in following along the steps I took.
Replace index.html with the HTML you want as your home page.
Do firebase deploy
I’d recommend storing everything in Git, and you might as well make it a public repo, as the web site is public anyway. (Mine is on GitHub)
You also might want to register a domain name, and use Firebase Hosting to use that domain name (complete with a free SSL certificate so you the https: security for free.). I did this for eamonn.org
I'm moving to the engineering team responsible for the main Google Search user interface!
Sad to be leaving my amazing colleagues in Cloud and Firebase, but so excited to be learning new tech and working on a product that has transformed the world and touches billions of people.
— Eamonn O'Brien-Strain 👨💻🔍🌁🇮🇪🇪🇺🇺🇲🇺🇳⚛️ (@eob) August 19, 2018
On Twitter yesterday I made a big announcement that I’m moving to a new team within Google.
For most of my five years at the company I have been working on products for external developers, first for App Engine where I lead the memcache team, then for Firebase and Cloud where I worked on privacy, security rules, and serverless
events.
But now I am about to move to the team responsible for the main Google Search user interface. This is a huge change. I’m moving from infrastructure engineering to front-end engineering. And instead of building products for millions of developers, I’m building products for billions of end-users.
And this seems like a good time to make yet another attempt to start writing a regular blog. I’m going to start by eschewing the complexities of modern web development, using simple, plain handwritten HTML files. Now that I’m a front-end developer again, I can practice my skills here.
“History does not repeat itself, but it rhymes” Around the turn of the 19th Century: the French Revolution and the American Revolution, together with the Industrial Revolutions killed off the ancien régimes with their aristocrats and divine right of kings.
The land-owning aristocrats lost their power and sometimes their heads.
Just after the turn of the 20th Century: World War I, together with the Bolshevik Revolution and the Scientific Revolution killed off a century of stable interest rates that had allowed the wealthy to live a life of leisure.
The capital-owning wealthy had most of their wealth wiped out.
Just after the turn of the 21st Century: resurgent religious fundamentalism and right-wing nationalism, together with the Internet revolution may be about to kill off a world in which multinational corporations and a technocratic elite thrived among increasing inequality.
What is wrong with HP that would spur its announced fission into two daughter companies? My view from the technology trenches is different from what I am reading in the business press.
HP is not really a technology company any more. It is a logistics and marketing company. Much of its engineering is outsourced. I am not surprised that it is splitting itself according to its go-to-market and channel criteria, not technology criteria.
HP does not know how to innovate. Instead of letting a thousand flowers bloom and leaving itself open to positive black swans, it doubles down on big bets. When I was at HP Labs, we were encouraged to only propose projects that promised a billion dollars or more in revenue. There was no room for the small speculative project.
Software is eating the world, but HP cannot write software. It is even confused at the word “software”, using it as the name of a division that is just 10% of the company, even though software is actually crucial in every one of is divisions. HP’s software development is incredibly fragmented, with no returns to scale. Each of its many software development groups scattered throughout the company have their own idiosyncratic software engineering practices, some good some bad. The code of each development group is walled off from other groups, so code sharing across the company is rare. Managers regard access to their organization’s code as a weapon to use in internal battles and negotiations.
HP cannot attract and keep good software engineers. For example, I personally know 24 other engineers who, like me, have made the migration from HP Labs to Google over the years, and there are probably many more. In contrast I don’t know a single person who has moved in the reverse direction from Google to HP. Some of this is no doubt driven by superior remuneration and perks, but I think what really clinches the deal is that in a real technology company what the engineers do really matters. For that they are willing to tolerate the packed elbow-to-elbow work areas and the straitjacket of a company-wide unified software development process.
Maybe HP does need to split, so that at least one part of it has some chance of turning itself back into a real tech company. I wish my friends still there all the best as they navigate the transition.