I had a different, but in some ways similar, experience with the game Elite on the Amstrad CPC. At the time I borrowed it from my friend who raved about it, the elastic band in my tape deck was starting to stretch, and the tape speed was somewhat inconsistent. Listening to it load sounded horrible - you could hear it warbling on the normally steady tones, but generally things loaded just fine so I wasn't massively worried about it.
Anyway, in Elite, you can save and restore your progress, so I did that because I felt like I'd accomplished something. However, after a week or so, I was getting pretty bored that I was just flying from place to place, trading, but not a lot else was happening. I had the occasional fight with another ship on my way to a new planet, but only maybe every 2nd or 3rd flight. It was basically a trading game and nothing much else.
I returned the game to my friend a couple of weeks later and told him how I found it pretty boring. He was surprised and said you get attacked almost every flight. We loaded it up on his CPC, and sure enough, I played for about an hour, and there was lots of combat. Borrowed the game from him again, and this time didn't load up my old save game, and had the same - lots of combat. Reluctantly, I started again, losing all my credits from trading, but suddenly the game was actually fun again.
My best guess is that some data that controlled how much combat action I got had been corrupted in a way that wasn't detected by the checksum, and once that was reloaded it got persisted in every subsequent save. It sounds implausible, but actually most checksum schemes on the CPC don't differentiate between runs of 00 bytes or runs of FF bytes, as they're usually done as mod-255. [0]
[0] checksum code is often a bit like this: IN: A byte that was written, HL previous CRC. ADD A,H: ADC A,0: LD H,A: ADD A,L: ADC A,0: LD L,A [1]
[1] Often called Fletcher-16, it's much simpler on an 8-bit CPU than the pseudo-code on Wikipedia suggests [2] if you pre-initialise the counters to 1 instead of 0
I think Elite on CPC had a Firebird loader, which had its own checksum algorithm different from Amstrad ROM. It had way shorter blocks. It might be weaker against certain patterns more than the stock ROM as you said.
This is a fairly recent thing. I didn't realise that Google had actually started publishing this contact but for about the last year or so, they've required that you provide a phone number that they can publish for users to contact you.
Honestly, this policy seems absolutely backwards to me. I'm fine for customers to contact me via e-mail or my website, but why do Google get to suddenly mandate that I need to provide 24/7 global phone support to anyone (who doesn't even need to me my customer)?
I'm not ready to share a link to my actual implementation yet, but I've been working on an SRS system for Chinese and been using it as my daily driver for about 3-4 years now, after previously using Anki and getting frustrated with how reviews pile up after a couple of days off.
I've done lots of tweaking to the algorithm over the years to make it feel like I'm less surprised by the scheduling, and less like a slave to it. One very stark difference between mine and Anki is that I have a large number of "overdue" cards, but the system still prioritises when to show me the overdue cards with quite a few different metrics based on how overdue it is, how new it is, how long the current interval is, etc. So, like Anki, I still just double the interval for correct cards, but for incorrect cards, the reviews are repeated same day until they're correct, and then the interval is reduced a lot more than Anki. So, the cards then become overdue sooner, but because the scheduling of overdue cards is better, they get pushed later if your overdue queue is too large, and sooner if you've not got anything more useful to review.
FWIW, my typical session is 40 minutes per day during my daily lunchtime walk, and I'll get through about 150 cards in that time. If I'm on a long train journey, I'll often clear out double that or more, but the disaster situation of being on holiday for a month might leave the queue with a couple of thousand extra cards, but they never seem unmanageable. Even after a 2 month break when I was travelling last year, and only doing reviews on flights and trains, I'd definitely forgotten some words from not reviewing at the appropriate time, but the percentage of totally forgotten cards felt better than I used to experience after just missing a few days with Anki.
One thing the article mentions that I don't massively concern myself with is desired retention. I'm not sure I'd want to express it as a target percentage, but I've definitely been thinking about how I want to change things to deprioritise stubborn words without just suspending them or deleting them. I definitely find that having them keep showing up, so I might see a pattern of them wrong twice each day before finally getting them right, after a few days of that they do usually suddenly stick for good. But sometimes I look at the word and think I don't really care if I remember it or not.
I've used Anki on and off for a few years and I've had exactly the same problem. I would love to see your implementation, even if it's not finished yet! It sounds like it would be very useful to many people.
We have those even at supermarkets in the UK. "Would you like to round up your £1.10 shop and donate 90p to our nominated charity?" and similar gets really irritating after a while.
I think the solution is to legislate that any tips solicited this way for third parties need to have the company match your tip.
For the US situation, it's totally down to the stupid way that minimum wage is defined, where tips are counted towards the minimum wage. In the UK, there's a reasonably generous minimum wage (£12.21 per hour for age 21+) from the employer, and tips would be on top of that minus appropriate taxes.
I recently implemented a very similar thing to its obfuscation via proof-of-work (https://altcha.org/docs/obfuscation/) in my C++ REST backend and flutter front-end, and use it for rate-limiting on APIs that allow creation of a new account or sending sign-up e-mails.
I have an authentication token that's then wrapped with AES-GCM using a random IV and the client is given the key, IV stem and a maximum count for the IV.
The web devs tell me that fuckit's versioning scheme is confusing, and that I should use "Semitic Versioning" instead. So starting with fuckit version ה.ג.א, package versions will use Hebrew Numerals.
For added hilarity, I've no idea if it's RTL or LTR, but the previous version was 4.8.1, so I guess this is now 5.3.1. Presumably it's also impossible to have a zero component in a version.
Back in the mid 80s, I'd killed several joysticks playing Daley Thompson's Decathlon on my Amstrad CPC (which was more-or-less a standard Atari pinout apart from 2 select lines and 2 fire buttons). By chance, my parents had a push-button phone that was being scrapped because it wasn't very good for some reason that I've forgotten. I reverse-engineered the PCB and figured out that 2,4,6,8 and # would all be individually detectable if I cut a couple of traces on the PCB and I soldered and old joystick cable to the where the original edge connector on the keypad board used to be. That was aged around 10. I suspect I still have it somewhere, nearly 40 years later, as I was still using it with my Amiga when I packed that away when I went to university.
The company was restructured and become a subsidiary of the newly created Alphabet Inc. just after this, so the company did, in fact, change names at that point!
FWIW in the UK, Geoff is the usual spelling (from Geoffrey) of the name. Jeff (from Jeffrey) also exists in the UK, but is much rarer, even if it's the most common form in the US.
I guess stuff like this would have already been thrashed out at the time, but it strikes me that if a mistake by a third party could invalidate copyright, it'd have been trivial to end the copyright on anything by releasing an unauthorised version without a copyright notice.
I guess it's complicated because the first release with this title was absent the copyright notice, but the article also says that prints existed with the previous title and a copyright notice, so if they were distributed at all, it'd seem to be a slam dunk that it'd be covered by copyright on the original title and the retitled copy without copyright notices was infringing.
It isn't the case that a third party mistake can invalidate copyright. But if a third party does so & other groups start treating it as public domain it is on the actual rightsholder to prove they still hold the copyright.
In the case of a self published book, it's pretty obvious. In the case a movie production or otherwise, it gets difficult really fast. Throw in some corporate mergers, acquisitions, & bankruptcies and now you're looking at paying a small team of legal professionals to do research to construct a paper trail for ownership. If the work in question is valuable, obviously it gets done.
In the modern era there is a basically endless stream of video games from a 2-3 decades back where the ownership is completely unclear. The actual video game release rights might be held by one shell company, the video game source code could be held by another group (or even the original author, depending on how lazy people were), and the assets themselves might be held by another group if it was a "branded" or similar content.
Anyway, in Elite, you can save and restore your progress, so I did that because I felt like I'd accomplished something. However, after a week or so, I was getting pretty bored that I was just flying from place to place, trading, but not a lot else was happening. I had the occasional fight with another ship on my way to a new planet, but only maybe every 2nd or 3rd flight. It was basically a trading game and nothing much else.
I returned the game to my friend a couple of weeks later and told him how I found it pretty boring. He was surprised and said you get attacked almost every flight. We loaded it up on his CPC, and sure enough, I played for about an hour, and there was lots of combat. Borrowed the game from him again, and this time didn't load up my old save game, and had the same - lots of combat. Reluctantly, I started again, losing all my credits from trading, but suddenly the game was actually fun again.
My best guess is that some data that controlled how much combat action I got had been corrupted in a way that wasn't detected by the checksum, and once that was reloaded it got persisted in every subsequent save. It sounds implausible, but actually most checksum schemes on the CPC don't differentiate between runs of 00 bytes or runs of FF bytes, as they're usually done as mod-255. [0]
[0] checksum code is often a bit like this: IN: A byte that was written, HL previous CRC. ADD A,H: ADC A,0: LD H,A: ADD A,L: ADC A,0: LD L,A [1]
[1] Often called Fletcher-16, it's much simpler on an 8-bit CPU than the pseudo-code on Wikipedia suggests [2] if you pre-initialise the counters to 1 instead of 0
[2] https://en.wikipedia.org/wiki/Fletcher%27s_checksum
reply