I recently left a FAANG. Shortly before I left (for unrelated reasons) the director of my org got scolded by the VP he reported to because token usage in his org was low. After that the ICs in my org were told to use ai for everything or there could be consequences for their careers.
HN user
thelopa
I know someone who works on the macOS permission system. If you submit a bug report and share the feedback number, I will send it their way https://bugreport.apple.com/
I’ve been running Linux for ~20 years. Proton is, without a doubt, a huge leap forward for the ecosystem. I stopped dual booting Windows for games ~5 years ago and haven’t looked back. It’s positively wild to me that native Linux builds for games are often harder to get working than just using proton and the game’s windows build.
They needed to compile the kernel because they were using the full kernel. The main package repository (and thus the main binary caches) only include a de-blobbed version of the kernel. To get standard Linux including all the blobs, you need to use the “nonguix” package repository. The nonguix folks do have a binary cache server, but using it during install is slightly annoying. I currently have a guix vm compiling Linux for exactly this reason. Since you likely won’t be installing much else from nonguix during system setup, you only need to compile the kernel and other bloby things you choose to include (e.g. firmware, microcode).
I would argue that you should do something similar in Haskell, too. It would ensure that practically everything accessing the allow list fails to compile unless it had been adapted to the new model. Haskell’s strength is the compiler and its ability to pedantically enforce type errors. Use it! Let it help you!
Disagreeing with a particular taxonomic way of describing different types of people simply because it makes it hard to advance your political beliefs does not mean the words involved in that taxonomy are slurs. “Slur” has a particular meaning, and it isn’t “makes it hard for me to achieve my political goals”.
Cisgender is recent, but it’s also primarily used to serve as the counter to transgender. To understand “cisgender”, it’s useful to study the history of “transgender”. Transgender was introduced as a term because it encompassed a larger group of people and avoided the stigma surrounding “transsexual”. Transsexual has a history dating back about a hundred years. Since “trans-“ and “cis-“ are antonym prefixes, once you have transsexual, you have cissexual. For the purposes of Elon’s rule, it doesn’t matter whether it’s CISsexual or CISgender, he objects to “cis”.
And yet, Elon has decided that a term used in academic medical research for nearly a century, “cisgender”, is a slur and banned from the platform. Funny how he wants to protect objectionable speech that aligns with his political view while restricting “objectionable” speech that doesn’t.
The Korean approach is still wrong, arguably. If you want to include the totality of the life of the baby, the next normal stopping point would be conception. That would make the child ~9 months old, not 1 year.
I disable password authentication and use fail2ban. It's unlikely they will be able to brute force my key, but no server is perfect. sshd might be compromised one day. I’d rather have an extra layer of defense just in case.
Many of the str functions in the C standard library assume a nul terminator.
I’ve used Mac’s at my job for about 10 years + a few years of personal use before that. I’ve had ample time to get used to the Mac workflow.
macOS’s approach only works nicely if you expect to have one simultaneous task per app OR you don’t expect to switch between apps. Once you have multiple simultaneous tasks in multiple apps, it becomes really cumbersome to use command tab. My job tends to involve exactly the pattern of window switching that macOS isn’t made for.
Some models of the Turing machine have an infinite tape in only one direction. Some also don’t require every state to have an exhaustive set of transitions. Those models generally consider going off the end of the tape or failing to find a transition to be a halting state.
A leading candidate for the 2024 US presidential election has made a campaign promise to make healthcare that I rely on virtually illegal. Dozens of representatives in congress have cosponsored a bill that would make it illegal to even teach doctors about this form of care. I would not survive without this care. Things may be worse in the rest of the world, but if healthcare I rely on is taken away then there is no way I will stay in this country.
I’m assuming I’m the “assertion made below”. I made no such claim. Let me rephrase it.
There have been 8 mass shootings in America in the last 7 days. No one was running to twitter to speculate about their causes. No politicians were raising concerns about troubling trends. The shootings were going completely unremarked on in national politics… until a shooter happened to be trans.
If you want to speculate that commentators and politicians are giving the other incidents the same attention, we would literally never hear the end of it. On average, almost 2 mass shootings happen per day. But, for some reason, those incidents weren’t given national attention. Curious.
But, again, why are you focusing on a group that is statistically less likely to commit mass shootings compared to the average person? Even if you find some root cause for trans shooters, you’d be, at best, eliminating what amounts to about 0.1% of cases. Why not look at groups that are over represented?
You optimize for the common case, not the uncommon one. Shouldn’t we figure out why shootings in general are happening rather than fixating on a specific case because it involved an unpopular minority group?
This narrative about trans shooters is disconnected from reality. If you take every trans shooter in the last decade, you get less than 10… out of thousands. For context, last year America has nearly 700 mass shootings. Trans people are actually under represented in mass shootings. Estimates put trans people at up to 1% of the population. We would naively expect 7 shooters last year to be trans, but none were. Saying that the recent shooter is part of a trend of transgender shooters requires outright ignoring all evidence to the contrary.
Citation needed. Everything I’ve seen indicates that transition rates are roughly equal.
Browser JS definitely never had the ability to unmount storage volumes before Chromebooks existed.
Oh the tons of hours waiting for menus to load to swap your camouflage pattern after crawling onto slightly different terrain…
I also completed MGS3 on euro extreme, and was about an hour from the end of MGS2 on euro extreme (the action sequence right before the MG Ray fight). I was playing the PC port, and let me tell you: aiming the automatic weapons without pressure sensitive buttons is nearly impossible. I gave up eventually and decided that my prior run on Extreme had earned me enough gamer cred. Finishing euro extreme wasn’t worth it.
On the other hand, I loved MGS3 on euro extreme! It really required mastering every trick in the game. Every little advantage you could squeeze into a boss fight was essential. Escape from Groznygrad was hell, though. By far the single hardest part of the game.
Back in the day I beat MGS2 and MGS3 on Extreme. The box shouldn’t be your plan for sneaking past any guards. It’s for situations where you are caught out without any cover and you need to hide. Pop in to it right as they are about to round the corner. Pop out and move on once they are out of sight. The box is a crutch. You can really abuse it in MGS1, but it’s usually easier and faster to just run around the guards.
Yes. That’s how the public domain works.
I had a at-home-only version once. Then I failed to unlock my vault on my iPhone (FaceID issue or something) and it refused to allow me to enter the master key without first passing the 2FA check with the server (did it delete the local vault or something?!). I had to go home to fix it.
I’d recommend ensuring you have some sort of VPN solution so that you can access your vault away from home, too.
Personally, I just decided to use the 1st party server. I realized that reliable access to my vault is a service I really don’t want to be without due to technical issues in my setup.
In most implementations, redefining an inline function or macro just means you may have some callers using the old code. SBCL warns if you redefine an inline function but doesn’t re-compile old code. Do note that the language has a different view on the matter though.
In its list of assumptions compilers are allowed to make about the code they receive, we can see…
The definition of a function that is defined and declared inline in the compilation environment must be the same at run time.
Within a function named F, the compiler may (but is not required to) assume that an apparent recursive call to a function named F refers to the same definition of F, unless that function has been declared notinline. The consequences of redefining such a recursively defined function F while it is executing are undefined.
A call within a file to a named function that is defined in the same file refers to that function, unless that function has been declared notinline. The consequences are unspecified if functions are redefined individually at run time or multiply defined in the same file.
http://clhs.lisp.se/Body/03_bbc.htm
So, technically the compiler is allowed to remove runtime function call indirection for functions defined in the same file and/or recursive calls (unless you use a NOTINLINE declaration). In practice, you probably won’t see that happen unless you crank up the optimizations when compiling.
You are right that the language explicitly allows redefining functions in general
Except in the situations explicitly listed above, a function defined in the evaluation environment is permitted to have a different definition or a different signature at run time, and the run-time definition prevails.
Most CL implementations don’t “track” the instances so much as have them point at a proxy for the real class object. When redefining a class, the old proxy object is marked as stale and then updated to point at the new class. This allows the runtime to lazily update instances to the new class (using the method you linked to) as they are encountered. As a result, you can have instances from several different class generations kicking around in memory.
Note: it wouldn’t generate a vtable entry unless the method was declared virtual.
A macro character is either terminating or non-terminating. The difference between terminating and non-terminating macro characters lies in what happens when such characters occur in the middle of a token. If a non-terminating macro character occurs in the middle of a token, the function associated with the non-terminating macro character is not called, and the non-terminating macro character does not terminate the token's name; it becomes part of the name as if the macro character were really a constituent character. A terminating macro character terminates any token, and its associated reader macro function is called no matter where the character appears. The only non-terminating macro character in standard syntax is sharpsign.
http://www.lispworks.com/documentation/lw50/CLHS/Body/02_add...
That is the system I was alluding to. It’s been a few years since I’ve done anything with CL and so it seems my memory was slightly off.
That’s completely incorrect. The parent comment has it right. In normal usage, the meaning of #\) is entirely determined by the implementation for the #\( reader macro. This happens because the reader macro for #\( keeps consuming characters until it has located AND consumed the matching #\). The reader would only run the #\) reader macro if it encountered a #\) that didn’t have a corresponding #\(. That’s what they meant when they said “it signals an error”. Specifically, it signals that there are unbalanced parentheses.
If you redefine the #\) reader macro, you could use it in a top-level context. That’s probably not a good idea since it’s easy to accidentally have too many #\) when closing a deeply nested expression and thus accidentally invoke the macro.
Aside from signaling an error, the #\) reader macro is also useful because it changes the rules when reading symbols. Basically, if you write (+ foo bar), the existence of the #\) macro helps the reader know that you’re referencing the “bar” symbol rather than the “bar)” symbol.
Generally, when people define new balanced-pair syntax for Common Lisp, (such as a #\{ macro for hash tables) they will follow the same pattern and define a corresponding reader macro for the closing side that always signals an error for all the same reasons.
Edit: also, as others have pointed out, you seem to be mistakenly assuming that the redefinition takes affect mid-way through reading the expression. That’s not how CL works. CL cleanly separates the process of executing code into a few distinct phases. First, the reader reads an entire expression (“form” in lisp terms). Then, that form is macroexpanded (traditional macros, not reader macros!) as needed before (optionally) being compiled and then executed.
The change to the read table would happen during the execution phase — well ordered after the original characters for that form are out of the picture.
You COULD force a change to the readtable mid-way through reading a form using the #. reader macro, but that definitely gets into chainsaw-juggling territory.