• 8 Posts
  • 79 Comments
Joined 1 year ago
cake
Cake day: June 10th, 2023

help-circle
  • At my last job, every time they added or removed someone’s key card access, the system would reboot and everyone would be locked out for like two minutes.

    We also had two floors that were connected by a fire stairwell, so you needed a card to re-enter the next floor.

    At least twice my card stopped working in the middle of the word day while I was standing in the stairwell and I assumed that they just fired me and assumed I’d see my own way out.

    Survived three layoffs at that company.














  • Not an Elon fan, but this kind of story hurts the public perception of EVs which bothers me.

    This is not unique to Teslas or even EVs.

    You can get stuck in a stock Corvette since 2005

    That was after 3 seconds of googling. There are plenty of cars that are difficult to escape or enter with a dead battery. Some consider electronic door controls as a luxury feature. They will fail to function with no power. Hate them if you like.

    For Teslas in particular, there is a mechanical latch for the doors on the inside. Learn where they are. On the outside, there are terminals near the tow hook that when given 9V will pop the frunk. Then you can access the 12V battery to jump it.




  • I believe the optimization came because the denominator was a power of two. In my memory, the function counted up all of the bytes being sent and checked to see that the sum was a multiple of 16 (I think 16 bytes made a single USB endpoint or something; I still don’t fully understand USB).

    For starters, you can split up a larger modulo into smaller ones:

    X = (A + B); X % n = (A % n + B % n) % n

    So our 16 bit number X can be split into an upper and lower byte:

    X = (X & 0xFF) + (X >> 8)

    so

    X % 16 = ((X & 0xFF) % 16 + (X >>8) % 16) % 16

    This is probably what the compiler was doing in the background anyway, but the real magic came from this neat trick:

    x % 2^n = x & (2^n - 1).

    so

    x % 16 = x & 15

    So a 16 bit modulo just became three bitwise ANDs.

    Edit: and before anybody thinks I’m good a math, I’m pretty sure I found a forum post where someone was solving exactly my problem, and I just copy/pasted it in.

    Edit2: I’m pretty sure I left it here, but I think you can further optimize by just ignoring the upper byte entirely. Again, only because 16 is a power of 2 and works nicely with bitwise arithmatic.