Skip to content

Commit

Permalink
more typos
Browse files Browse the repository at this point in the history
  • Loading branch information
clintonboys committed Jun 9, 2024
1 parent 8d795a4 commit b6a6c54
Show file tree
Hide file tree
Showing 6 changed files with 9 additions and 9 deletions.
6 changes: 3 additions & 3 deletions _posts/2021-08-01-aus_pr.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ Before we start I will give the massive caveat that the political history of a c

The system I chose to compare with is [proportional representation](https://en.wikipedia.org/wiki/Proportional_representation). PR, in its purest "party list" sense, means that a legislative body is comprised of parties whose share of the body equals their share of support in the electorate. Usually there are some compromises in countries that implement proportional representation in a single at-large electorate (Israel, which I am most familiar with, Scandinavian countries, South Africa, Japan, and many more), the most common being an "electoral threshold" that prevents a parliament from having to deal with an unmanageable mob of single members from niche parties[^1]. Countries with true proportional systems generally have governments comprised of coalitions of several parties, and a key post-election phase is the negotiation of the new coalition.

A geographically divided system, where the country is split into many electorates, is less likely to produce such governments since small parties must come first at least somewhere in the country, rather than maintain a small but broad level of support nationwide, to win representment. Australia's preferential voting system, and its degeneration over the years into "[how-to-vote cards](https://en.wikipedia.org/wiki/How-to-vote_card)", has further entrenched the two major parties, the Liberal/National Coalition (not a coalition in the PR sense since these parties have agreements to avoid three-cornered contests) and the Australian Labor Party. The result is that although the Australian electoral system has more in common with the British system, its federal lower house looks a lot closer to the United States House of Representatives.
A geographically divided system, where the country is split into many electorates, is less likely to produce such governments since small parties must come first at least somewhere in the country, rather than maintain a small but broad level of support nationwide, to win representation. Australia's preferential voting system, and its degeneration over the years into "[how-to-vote cards](https://en.wikipedia.org/wiki/How-to-vote_card)", has further entrenched the two major parties, the Liberal/National Coalition (not a coalition in the PR sense since these parties have agreements to avoid three-cornered contests) and the Australian Labor Party. The result is that although the Australian electoral system has more in common with the British system, its federal lower house looks a lot closer to the United States House of Representatives.

| ![Seats and quota by year](/assets/seats_and_quotas.png) |
|:--:|
| *Figure 1: Seats and quotas by year.* |

So what would Australian political history look like if we'd had a party list PR system? Let's set the ground rules for our alternative universe. A party list system with a single vote per person (so no preferences) and no threshold: even if you get enough votes to recieve a single seat, you're in. I'm going to look at nineteen elections in the last fifty years, from 1972 to 2019. In Figure 1 you can see how the number of seats in parliament has changed (on the left $y$-axis), and the corresponding total number of votes required nationwide to win a single seat (on the right $y$-axis); this is called the *quota* (it's mostly increasing because of population growth and sometimes decreasing because seats were added to the parliament).
So what would Australian political history look like if we'd had a party list PR system? Let's set the ground rules for our alternative universe. A party list system with a single vote per person (so no preferences) and no threshold: even if you get enough votes to receive a single seat, you're in. I'm going to look at nineteen elections in the last fifty years, from 1972 to 2019. In Figure 1 you can see how the number of seats in parliament has changed (on the left $y$-axis), and the corresponding total number of votes required nationwide to win a single seat (on the right $y$-axis); this is called the *quota* (it's mostly increasing because of population growth and sometimes decreasing because seats were added to the parliament).

A final note before getting into the results for each election: the Australian Senate **is** elected with proportional representation, but with six large electorates, one for each state. So I've included below for each year the real Senate result. The difference between the House result under PR and the senate is due to the outsized influence of smaller states like Tasmania and South Australia, who get the same amount of senators (12) as the significantly more populous Eastern states. Of course there are additional complications that prevent us from reading too much into this: first, the Senate does use preferential voting like the House, and also only half of all Senators are up for election in a given election (unless it's a double dissolution, like in 1974, 1975, 1983, 1987 and 2016).

Expand Down Expand Up @@ -151,7 +151,7 @@ The leader of the Australian Democrats, Janine Haines, who in reality stood down

---

After years of damaging infighting and bitterness between Hawke and his Treasurer Paul Keating, Keating seized the Labor leadership in his second attempt in summer 1991, giving him fifteen months to settle in as Prime Minister before calling his first election, which he won unsurprisingly in the face of a devestatingly poor campaign by opposition leader John Hewson.
After years of damaging infighting and bitterness between Hawke and his Treasurer Paul Keating, Keating seized the Labor leadership in his second attempt in summer 1991, giving him fifteen months to settle in as Prime Minister before calling his first election, which he won unsurprisingly in the face of a devastatingly poor campaign by opposition leader John Hewson.

Having formed in 1992, this election marks the first appearance of the Australian Greens, long a force in Tasmanian state politics, at the federal level. They win two seats here, and with the Democrats' six (the dramatic reduction in support is another nice analogue to the 2010 UK election) Keating has a small but comfortable majority for his left-wing bloc, and having won back eight seats for his own party, has to make fewer concessions to the Democrats than Hawke did.

Expand Down
2 changes: 1 addition & 1 deletion _posts/2022-08-18-react.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ I first started programming when I was 16 (so 20 years ago). I have been writing

Learning front-end development as an experienced developer is strange. I learnt React, a Javascript web application framework, and wrote Typescript, which was also new to me and which I quite like. Because I already know how to program, and picking up a new programming language comes fairly easily to me, most of the real difficulty is conceptual, and you do really have to think differently when programming front-end. Performance is crucial, since users feel it as lag between their mouse clicks. Separating state from flow becomes imperative, since without it there is no way to keep track of everything and to manage the abstractions.

React, and particularly if you add Redux to the mix, really gives an ergonomical and satisfying way to do this. It handles all of the rendering, making the behaviour of the program and how it updates and manages the state of components all automatic, according to some (ostensibly) very simple inheritance rules.
React, and particularly if you add Redux to the mix, really gives an ergonomic and satisfying way to do this. It handles all of the rendering, making the behaviour of the program and how it updates and manages the state of components all automatic, according to some (ostensibly) very simple inheritance rules.

If you're like me, a technical person with a fair amount of programming experience but has not written a line of front-end code in their life, I think React and Typescript are a good place to start. In fact even if you have been writing Python for ten years (or twenty!), I think it's a better idea to learn something new for front-end development, instead of trying to learn Django or Flask or some other Python-based framework.

Expand Down
2 changes: 1 addition & 1 deletion _posts/2023-04-21-chatgpt.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ image:

Imagine the not too distant future. All menial tasks have been outsourced from our brains to generative AI models like the one that powers ChatGPT. Always the introverts, humanity has eschewed advanced forms of interaction with the models like speech and VR and prefers to communicate with the AI through text, or apps which wrap the text interface with something a little higher level.

Everything, in this future, will be done through our phones or their descendents. Not just social interactions, like today, but also the phrasing and preparation of text to send to friends and family. “Send Jane a heartfelt message that I hope she gets well soon.” “Tell Mum I can’t come to dinner and make it sound like I am really sad about it.”
Everything, in this future, will be done through our phones or their descendants. Not just social interactions, like today, but also the phrasing and preparation of text to send to friends and family. “Send Jane a heartfelt message that I hope she gets well soon.” “Tell Mum I can’t come to dinner and make it sound like I am really sad about it.”

I fear dreadfully this future, which seems to me to be the future that AI hawks are betting on and building today. Does this process of drawing a line under the sum of human knowledge (in publicly accessible text format at least) and saying “alright, let’s just base everything in the future off this”: does this sound macabre and ghoulish to no one but me? Putting aside the mathematical, engineering and design triumphs of large language models for a minute, is this really what we want to use them for?

Expand Down
2 changes: 1 addition & 1 deletion _posts/2023-10-10-rust.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Similarly, we have `bowling_system`, `batting_system`, `fielding_system` which m
|:--:|
| *Figure 2: Through midwicket for 1 run.* |

Overall this exercise was really fun and it taught me a lot about game development, ECS and in particular Rust. Rust feels really well suited to building games: its neat structs, cruel but fair type system and ingenious borrow checker are all very useful when you are writing code that needs to be performant and run every click. Writing a game also makes you think a lot harder about the loops you write, about data structures and memory and CPU efficiency. I enjoyed it a lot.
Overall this exercise was really fun and it taught me a lot about game development, ECS and in particular Rust. Rust feels really well suited to building games: its neat "structs", cruel but fair type system and ingenious borrow checker are all very useful when you are writing code that needs to be performant and run every click. Writing a game also makes you think a lot harder about the loops you write, about data structures and memory and CPU efficiency. I enjoyed it a lot.

The code for this project is available on my [Github](https://github.com/clintonboys/rustycricket).

Expand Down
2 changes: 1 addition & 1 deletion _posts/2023-12-02-tech-debt.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ Technical debt is a phrase that gets used a lot when building software and softw

But what happens when you make those changes, when you deliberately take on technical debt - as legitimate a decision as taking on capital debt to finance a mortgage or any other venture - and *don't document it anywhere*?

Think about what happens when you take out a mortgage. It's a very standardised and formal procedure. You need to decide how much money you want to put down, and accordingly how much debt you will take on. That debt accues interest at an agreed rate, which is calculated along the life of the loan and amortised to give you nice monthly payments. "It will cost me \\$3,500 a month for 20 years to have \\$500,000 today." In my experience, nothing of the sort happens when you take on technical debt. Some parts of the analogy fail, of course: it's hard to define "interest" on technical debt, though it may be possible (think about assigning a dollar value to the number of working hours required to fix issues arising from the quick fix there wasn't enough time to test properly). But at the very least, we should be properly *documenting* these transactions, explaining why the decisions where made the way they were made, and "what the bet was": why did we choose to do it this way and not "properly". Very often these decisions do stand the test of time, particularly in early-stage companies where "moving fast and breaking things" can often be of existential importance.
Think about what happens when you take out a mortgage. It's a very standardised and formal procedure. You need to decide how much money you want to put down, and accordingly how much debt you will take on. That debt accrues interest at an agreed rate, which is calculated along the life of the loan and amortised to give you nice monthly payments. "It will cost me \\$3,500 a month for 20 years to have \\$500,000 today." In my experience, nothing of the sort happens when you take on technical debt. Some parts of the analogy fail, of course: it's hard to define "interest" on technical debt, though it may be possible (think about assigning a dollar value to the number of working hours required to fix issues arising from the quick fix there wasn't enough time to test properly). But at the very least, we should be properly *documenting* these transactions, explaining why the decisions where made the way they were made, and "what the bet was": why did we choose to do it this way and not "properly". Very often these decisions do stand the test of time, particularly in early-stage companies where "moving fast and breaking things" can often be of existential importance.

I think creating a huge amount of technical documentation, things like the design documents which Google is equally famous and infamous for, is the right thing to do when you are building things. You can't really write too much, provided you are actually thinking about what you are writing, honing what you have already written, and constantly getting feedback and input. If this is done correctly, the resulting documentation provides a very thorough account of the decisions and reasoning behind the acquisition of technical debt in the project.
4 changes: 2 additions & 2 deletions _posts/2024-05-15-synthesis-of-form.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ The first part of the text is full of analogies and metaphors, which at the begi

The central focus of this part is on the difference between what Alexander calls "selfconscious" and "unselfconscious" cultures. He is hesitant to give a more loaded meaning, but it is clear from the examples that he gives that he is talking about pre- and post-enlightenment thinking. Individualism and skepticism of tradition are very problematic for the kind of generational form-making processes, like those which design the certain dwellings that tribes around the world build depending on their environment. These processes happen through the accumulation of small "corrections of misfits" -- fixing things when they are broken -- across generations, with no single person acting as anything more than an agent in some natural process of convergence to an equilibrium. When theories and opinions emerge, these cause fatal friction to these natural form-making processes. He argues that selfconscious cultures have a tendency to try to break large design problems down into subproblems based on contrived divisions, ultimately sourced from our ambiguous and culturally loaded languages, which do not reflect the subdivisions that would emerge in the "natural" process (all feels a bit inspired by Plato's Cave).

> Detailed analysis of the problem of designing urban family houses, for instance, has shown that the usually accepted functional categories like acoustics, circulation, and accom­modation are inappropriate for this problem. Similarly, the principle of the "neighborhood," one of the old chestnuts of city-planning theory, has been shown to be an inadequate mental component of the residential planning problem. *(p66)*
> Detailed analysis of the problem of designing urban family houses, for instance, has shown that the usually accepted functional categories like acoustics, circulation, and accommodation are inappropriate for this problem. Similarly, the principle of the "neighborhood," one of the old chestnuts of city-planning theory, has been shown to be an inadequate mental component of the residential planning problem. *(p66)*
### Part II

Expand All @@ -27,7 +27,7 @@ The second part of the book presents a framework for studying and decomposing de

He does this by venturing into pure mathematics, specifically set theory, graph theory and probability theory, something which you do not see in the architectural literature very often I imagine. He imagines enumerating all the "misfit" variables which represent "individual conditions which must be met at the form-context boundary", $$x_1, x_2, \ldots, x_m$$ -- this is the set $$M$$. He then associates with $$M$$ a second set $$L$$ -- a set of non-directed, signed, weighted edges between elements of $$M$$. The weights are negative if they indicate conflict, and positive if they indicate concurrence, and may also be weighted to indicate strength of interaction. This is just a [line graph](https://en.wikipedia.org/wiki/Line_graph), referred to in Alexander's day as a "linear graph".

He then goes on to define "decompositions" of the set $$M$$ into heirarchical tree-like structures, and the goal of the "program": to find some clustering of nodes of this graph which most naturally seems to fit the underlying link structure $$L$$.
He then goes on to define "decompositions" of the set $$M$$ into hierarchical tree-like structures, and the goal of the "program": to find some clustering of nodes of this graph which most naturally seems to fit the underlying link structure $$L$$.

<center><img src="/assets/alexander2.png" alt="Alexander" width="200"/> <img src="/assets/alexander3.png" alt="Alexander" width="300"/></center>
<p></p>
Expand Down

0 comments on commit b6a6c54

Please sign in to comment.