• 5 Posts
  • 121 Comments
Joined 2 years ago
cake
Cake day: May 8th, 2023

help-circle
  • IANAL, but it is an interesting question to consider whether it would be illegal in Australia (if anything, as a test to see if the right laws are on the books to block this kind of thing). The laws are likely different in the US, and it might vary from state to state.

    The Fair Work Act 2009 (Commonwealth), s325 provides that:

    An employer must not directly or indirectly require an employee to spend, or pay to the employer or another person, an amount of the employee’s money or the whole or any part of an amount payable to the employee in relation to the performance of work, if:

    (a) the requirement is unreasonable in the circumstances; and

    (b) for a payment—the payment is directly or indirectly for the benefit of the employer or a party related to the employer.

    I think you could imagine the employer arguing a few lines:

    • The employee is not required to spend, it is only a factor in promotions and not retaining the same role. OP said you can “get in trouble for not using this” - countering this defence perhaps depends on proving what kind of trouble to show it is a requirement. In addition, under s340, employers are not allowed to take an adverse action against an employee for exercising or proposing to exercise a workplace right, and adverse action includes discriminating between and employee and other employees of the employer.
    • That the employee is not required to pay any particular person, they can choose what to buy as long as the select from a prescribed list. However, I think that could be countered by saying this is an indirect requirement to spend, and the “or another person” attaches to the “pay” part, so I don’t think that argument would fly.
    • The the requirement is reasonable - however, that could be countered by arguing the privacy angle, and the fact that this is for personal shopping, far outside the reasonable scope of an employment relationship.
    • That the payment isn’t for the benefit of the employer. I think that could be countered firstly by arguing this is a requirement to spend not pay, and event if it was to pay, it is indirectly for the employer’s benefit since it allows them to attract and retain clients. The way they are pushing it could further prove this.

    So I think it would probably be contrary to s325 of the Fair Work Act in Australia.

    Another angle could be the right to disconnect under s333M of the Fair Work Act:

    An employee may refuse to monitor, read or respond to contact, or attempted contact, from an employer outside of the employee’s working hours unless the refusal is unreasonable.

    If someone has a work and a personal phone, and has the app on the work phone, but refuses to use take the work phone or install an app on their personal phone so they can respond to tracking requests from the employer, then maybe this also fits.

    I also wonder if in Australia this could also be a form of cartel conduct - it is an arrangement of where purchases (other than those the company should legitimately control) are directed centrally under an arrangement by an organisation.

    Under s45AD of the Competition and Consumer Act 2010,

    (1) For the purposes of this Act, a provision of a contract, arrangement or understanding is a cartel provision if: (a) either of the following conditions is satisfied in relation to the provision: (i) the purpose/effect condition set out in subsection (2); (ii) the purpose condition set out in subsection (3); and (b) the competition condition set out in subsection (4) is satisfied in relation to the provision.

    So the purpose condition has several alternatives separated by ‘or’, one of which is:

    (3) The purpose condition is satisfied if the provision has the purpose of directly or indirectly: … (b) allocating between any or all of the parties to the contract, arrangement or understanding: (ii) the persons or classes of persons who have supplied, or who are likely to supply, goods or services to any or all of the parties to the contract, arrangement or understanding; or

    It sounds like there is a solid argument the purpose condition is met - they are allocating where people who are part of the arrangement (employees) shop.

    They’d also need to meet the competition condition for it to be cartel conduct. For this to be met, the arrangement might need to include the clients of the company:

    (4) The competition condition is satisfied if at least 2 of the parties to the contract, arrangement or understanding: (a) are or are likely to be; or (b) but for any contract, arrangement or understanding, would be or would be likely to be; in competition with each other in relation to: … © if paragraph (2)© or (3)(b) applies in relation to a supply, or likely supply, of goods or services—the supply of those goods or services in trade or commerce; or

    So it could be argued that this is a cartel arrangement between the company, its clients, and its employees, and so attract penalties for cartel conduct.


  • It is possible for all of the following to be simultaneously true:

    • The Israeli War Cabinet are war criminals and terrible people for slaughtering civilians in Palestine and Lebanon.
    • The Houthis are war criminals and terrible people for targeting civilians in Israel.
    • The US Trump Administration are war criminals and terrible people for killing civilians in Houthi-controlled areas.
    • Hamas are war criminals and terrible people for targeting civilians.

    While all of the above crimes are of roughly the same type (albeit for different reasons), they do differ in extent - the Israeli War Cabinet is responsible for the most suffering by a wide margin.

    I think it is a morally consistent position to condemn all of the war crimes above, although perhaps to prioritise efforts condemning the bigger ones.



  • As an experiment / as a bit of a gag, I tried using Claude 3.7 Sonnet with Cline to write some simple cryptography code in Rust - use ECDHE to establish an ephemeral symmetric key, and then use AES256-GCM (with a counter in the nonce) to encrypt packets from client->server and server->client, using off-the-shelf RustCrypto libraries.

    It got the interface right, but it got some details really wrong:

    • It stored way more information than it needed in the structure tracking state, some of it very sensitive.
    • It repeatedly converted back and forth between byte arrays and the proper types unnecessarily - reducing type safety and making things slower.
    • Instead of using type safe enums it defined integer constants for no good reason.
    • It logged information about failures as variable length strings, creating a possible timing side channel attack.
    • Despite having a 96 bit nonce to work with (-1 bit to identify client->server and server->client), it used a 32 bit integer to represent the sequence number.
    • And it “helpfully” used wrapping_add to increment the 32 sequence number! For those who don’t know much Rust and/or much cryptography: the golden rule of using ciphers like GCM is that you must never ever re-use the same nonce for the same key (otherwise you leak the XOR of the two messages). wrapping_add explicitly means when you get up to the maximum number (and remember, it’s only 32 bits, so there’s only about 4.3 billion numbers) it silently wraps back to 0. The secure implementation would be to explicitly fail if you go past the maximum size for the integer before attempting to encrypt / decrypt - and the smart choice would be to use at least 64 bits.
    • It also rolled its own bespoke hash-based key extension function instead of using HKDF (which was available right there in the library, and callable with far less code than it generated).

    To be fair, I didn’t really expect it to work well. Some kind of security auditor agent that does a pass over all the output might be able to find some of the issues, and pass it back to another agent to correct - which could make vibe coding more secure (to be proven).

    But right now, I’d not put “vibe coded” output into production without someone going over it manually with a fine-toothed comb looking for security and stability issues.


  • The awkwardness here actually works in favour of abolishing tips and replacing them with the pay being factored into higher prices.

    No one wants to be the sucker - human nature is that people are generous if they think everyone else is generous, but if they feel that others are not ‘pulling their weight’ on generosity and are instead taking advantage, that’s the fastest way to dry up other people’s generosity. Right-wing media use this fact to undermine support for social welfare - e.g. if 0.001% of welfare payments are fraudulently taken, they set editorial policy that makes it seem like beneficiaries are rorting the system instead of being truly needy.

    But when it comes to tipping, the dynamic actually works the other way - people feel generous by tipping, even though it is harmful long term. If a few people ahead of someone in the line don’t tip, should they be the sucker who does tip? And for the employee, you want them to be the advocate on the inside for forcing people to pay their share instead of taking advantage - by having the displayed price be the total upfront price that includes the compensation for employees, instead of an optional tip.


  • There is a minimum amount of total money the employee could make before they’d go and work somewhere else instead. So if, hypothetically, everyone in a country where tipping is common even for non-exceptional service just stopped paying tips, hospitality employers would be forced to pay more to stay competitive with other non-customer-facing industries.

    Of course, a drastic shock to the economy like that would probably cause a lot of upheaval, as some employers struggle to accept the new norm.

    However, the same thing would work even if the change was slower - e.g. if 5% of people didn’t tip, and did it very obviously and vocally, and then the practice spread as it reached 10% and so on.

    Obviously it sucks for the employees who get hit by the first few non-tippers, but over the long term it would be for the better for worker rights. So I could absolutely see it working.

    That said, I say this from a country where tipping is not the norm (except maybe the occasional ‘keep the change’ for exceptional service), and the law and expectation is that the most prominent displayed price is the total price you pay - and people react very negatively towards businesses seen as trying to bring in American style tipping culture.





  • But don’t you see the benefit - the data on your flushes helps our Trusted FlushMe Partners ® provide more relevant service to you, and also helps us partially offset the cost of our running our flush servers, allowing us to provide service to you for only $29.99 monthly††!

    †: All FlushMe partners have undergone creditworthiness checks. ††: Limited time one month introductory offer. FlushMe may, but is not required to, provide you with a personalised monthly price for renewal of the service.



  • By population, and not land area, certain more remote geographic places are well known but have quite a low population. ‘Everyone’ is a high bar, but most adults in Australia would know the following places (ordered from smaller population but slightly less known to higher population):

    • Wittenoom, WA - population 0 - well known in Australia for being heavily contaminated with dangerous blue asbestos (which used to be mined there until the 60s), and having been de-gazetted and removed from maps to discourage tourism to it.
    • Coober Pedy, SA - population 1437 - well known in Australia for its underground homes and opal production.
    • Alice Springs, NT - population 25,912 - well known for being near the centre of Australia in the rangelands (outback) - most larger population centres in Australia are coastal.

  • Stargate SG-1, Season 4, Episode 6 has a variant of the loop trope, but everyone (including most of the protagonists, and everyone else on earth) don’t remember what happens, while two protagonists remember every loop until they are able to stop the looping.

    They debrief the others who don’t remember at the end (except for the things they did when they took a loop off anyway!) - but they didn’t miss too much since everyone else on earth missed it.

    Another fictional work - a book, not a movie / TV show / anime - is Stephen Fry’s 1996 novel Making History. The time travel aspect is questionable - he sends things back in time to stop Hitler being born, but no people travel through time. However, he remembers the past before his change, and has to deal with the consequences of having the wrong memories relative to everyone else.




  • Modems also make noises when connected. However, the noise of them connecting is more distinctive because they go through a handshake where you can hear distinct tones, but then negotiate a higher baud rate involving modulation of many different frequencies, at which point to the human ear it is indistinguishable from white noise (a sort of loud hissing). If you pick up the phone while the modem is connected at a higher baud rate (post the handshake), you’ll hear the hissing, and then eventually you picking up the phone will have caused too many errors for the connection to be sustained (due to introducing noise on the line), causing both ends to hang up. You’ll then hear the normal tone you hear when the called party has hung up the line.





  • When people say Local AI, they mean things like the Free / Open Source Ollama (https://github.com/ollama/ollama/), which you can read the source code for and check it doesn’t have anything to phone home, and you can completely control when and if you upgrade it. If you don’t like something in the code base, you can also fork it and start your own version. The actual models (e.g. Mistral is a popular one) used with Ollama are commonly represented in GGML format, which doesn’t even carry executable code - only massive multi-dimensional arrays of numbers (tensors) that represent the parameters of the LLM.

    Now not trusting that the output is correct is reasonable. But in terms of trusting the software not to spy on you when it is FOSS, it would be no different to whether you trust other FOSS software not to spy on you (e.g. the Linux kernel, etc…). Now that is a risk to an extent if there is an xz style attack on a code base, but I don’t think the risks are materially different for ‘AI’ compared to any other software.


  • Blockchain is great for when you need global consensus on the ordering of events (e.g. Alice gave all her 5 ETH to Bob first, so a later transaction to give 5 ETH to Charlie is invalid). It is an unnecessarily expensive solution just for archival, since it necessitates storing the data on every node forever.

    Ethereum charges ‘gas’ fees per transaction which helps ensure it doesn’t collapse under the weight of excess usage. Blocks have transaction limits, and transactions have size limits. It is currently working out at about US$7,500 per MB of block data (which is stored forever, and replicated to every node in the network). The Internet Archive have apparently ~50 PB of data, which would cost US$371 trillion to put onto Ethereum (in practice, attempting this would push up the price of ETH further, and if they succeeded, most nodes would not be able to keep up with the network). Really, this is just telling us that blockchain is not appropriate for that use case, and the designers of real world blockchains have created mechanisms to make it financially unviable to attempt at that scale, because it would effectively destroy the ability to operate nodes.

    The only real reason to use an existing blockchain anyway would be on the theory that you could argue it is too big to fail due to legitimate business use cases, and too hard to remove censorship resistant data. However, if it became used in the majority for censorship resistant data sharing, and transactions were the minority, I doubt that this would stop authorities going after node operators and so on.

    The real problems that an archival project faces are:

    • The cost of storing and retrieving large amounts of data. That could be decentralised using a solution where not all data is stored on a chain - for example, IPFS.
    • The problem of curating data and deciding what is worth archiving, and what is a true-to-source archive vs fake copy. This probably requires either a centralised trusted party, or maybe a voting system.
    • The problem of censorship. Anonymity and opaqueness about what is on a particular node can help - but they might in some cases undermine the other goals of archival.