Sidebar: What you’re saying is genuinely interesting and I’m glad to have read it today, but can you back off on the italics usage? It made reading your comment kinda difficult :(
- a fellow italics connoisseur
Sidebar: What you’re saying is genuinely interesting and I’m glad to have read it today, but can you back off on the italics usage? It made reading your comment kinda difficult :(
To me 16 is long haha.
I usually end up running with 16 characters since a lot of services reject longer than 20 and as a programmer I just like it when things are a power of two. Back in the Dark Times of remembering passwords my longest was 13 characters so when I started using a password manager setting them that long felt wild to me.
I do have my bank accounts under a 64 character password purely because monkey brain like seeing big security rating in keepass. Entropy go brrrrrrrrrrrr
I’ve used cloud based services for password managers for work and “self host” my personal stuff. I barely consider it self hosting since I use Keepass and on every machine it’s configured to keep a local cached copy of the database but primarily to pull from the database file on my in-home NAS.
Two issues I’ve had:
Logging into an account on a device currently not on my home network is brutal. I often resort to simply viewing the needed password and painstakingly type it in (and I run with loooooong passwords)
If I add or change a password on a desktop and don’t sync my phone before I leave, I get locked out of accounts. Two years rocking this setup it’s happened three times, twice I just said meh I don’t really need to do this now, a third time I went through account recovery and set a new password from my phone.
Minor complaint:
Sometimes Keepass2Android gets stuck trying to open the remote database and I have to let it sit and timeout (5 minutes!!!) which gets really annoying but happens very infrequently which is why I say just minor complaint
All in all, I find the inconvenience of doing the personal setup so low that to me even a $10 annual subscription is not worth it
Jesus dude, what brand TV do you have?
My LG issues a few hundred blocked requests throughout the day with heavy usage. I’ve never seen it wake up and phone home (my Nintendo Switch does it every hour for some stupid reason)
If Wells Fargo had amazing management, was a massive and undeniable benefit to humanity, and every one of their employees loved working there, how precisely would that have changed the outcome here?
The only two things that I can think of that would have changed what happened is 1) Security actively monitored every single person’s activity within the building at all times and make notes so one of the security team would notice that she’s been slumped over for a long time, and 2) management insisted that all team members are in office every single day to ensure that they all can see each other. In today’s work culture, I’d argue that doing either of those things is bad management.
You say the point is that it happened at Wells Fargo, but let’s be more clear here: is your goal to find any reason to help justify your distaste of Wells Fargo?
I do believe Wells Fargo has a lot to answer for, but let’s be honest and just in what we go after companies and people for. If we constantly attack entities we don’t like for anything that on first pass sounds bad, eventually we’ll have called wolf too many times and legitimate complaints will get ignored
I really don’t think Wells Fargo has any blame in this, this just as easily could have happened to any company. Perhaps it is a problem with corporate America, but what would you say they’re actually negligent of?
it may sound callous and cold, but logistics does end up asking strange questions like “What is a reasonable amount of time to notice that an employee passed away at their desk in a corporate office?” Or “How do we verify that every employee in the building is still alive?”
It’s unfortunate and sad what happened to this woman, but I don’t see how Wells Fargo played any part in this other than to be a rage-bait headline
For graphics, the problem to be solved is that the N64 compiled code is expecting that if it puts value X at memory address Y it will draw a particular pixel in a particular way.
Emulators solve this problem by having a virtual CPU execute the game code (kinda difficult), and then emulator code reads the virtual memory space the game code is interacting with (easy), interprets those values (stupid crazy hard), and replicates the graphical effects using custom code/modern graphics API (kinda difficult).
This program is decompiling the N64 code (easy), searches for known function calls that interact with the N64 GPU (easy), swaps them with known valid modern graphics API calls (easy), then compiles for local machine (easy). Knowing what function signatures to look for and what to replace them with in the general case is basically downright impossible, but because a lot of N64 games used common code, if you go through the laborious process for one game, you get a bunch extra for free or way less effort.
As one of my favorite engineering phrases goes: the devil is in the details
Ada
It has a lot of really nice features for creating data types and has amazing static analysis during compile time.
But all the tooling around it is absolute crap making using the language unbearable and truly awful. If it had better tooling I could see that it would have taken a decent chunk of development away from C and C++
As someone who is in the aerospace industry and has dealt with safety critical code with NASA oversight, it’s a little disingenuous to pin NASA’s coding standards entirely on attempting to make things memory safe. It’s part of it, yeah, but it’s a very small part. There are a ton of other things that NASA is trying to protect for.
Plus, Rust doesn’t solve the underlying problem that NASA is looking to prevent in banning the C++ standard library. Part of it is DO-178 compliance (or lack thereof) the other part is that dynamic memory has the potential to cause all sorts of problems on resource constrained embedded systems. Statically analyzing dynamic memory usage is virtually impossible, testing for it gets cost prohibitive real quick, it’s just easier to blanket statement ban the STL.
Also, writing memory safe code honestly isn’t that hard. It just requires a different approach to problem solving, that just like any other design pattern, once you learn and get used to it, is easy.
I’m genuinely curious how saying that Linux GUI desktop has issues equates to gargling Microsoft’s balls?
So many people forget that while they understand how to use a Linux terminal and how Linux on a high level works, not everyone does. Plus, learning all of that takes time, effort, and tenacity, which not everyone is willing to do. Linus’s whole conclusion was that as long as that learning curve exists and as long as it’s that easy to shoot yourself in the foot, Linux desktop just isn’t viable for a lot of people.
But Linus has done a lot of public fuck ups therefore everything he says must be inherently wrong.
I think part of the “what do I do with this” factor for the iPad was that Apple (and other companies still to this day) were so hell bent on making everything smaller and more compact that releasing a larger product was marketing whiplash. Not to mention that smartphones were being pitched as this “do everything device” so why would you need anything else?
After you get over that marketing sugarcoating, it becomes pretty obvious what you’d use an iPad for. Internet and media consumption at a larger scale than your phone, easier on your eyes than a phone, but retains at least some of the lightweight smaller form factor that separates it from a regular laptop. Sure you didn’t have the stick it in your pocket advantage of a phone or the full keyboard and computational power of a laptop, but there was this in-between that for a modest fee, you could have the conveniences if you can live with/ignore the sacrifices.
I don’t think the MacBook Airs launch is a good comparison.
Sure there was an early adopter tax on being one of the first “thin and light” laptops, but people already know what you can use a MacBook for, there was already a large value proposition in having a MacBook, the extra cost was entirely being more portable than it’s full size counterparts. Everything you can do on a Mac, just way easier to take on the go.
I’ve read a few reviews on it, watched MKBHD’s initial review, and outside of a few demo apps they point to the vision pro having no real point to it. Which if true, then it falls in line with existing VR headsets that are a fraction of it’s cost and in a niche market, being three times the cost of your competitors is not a good position to be
Yup your right, I was wrong. Valve keeps the copyright regardless.
Dolphin situation was different though. https://dolphin-emu.org/blog/2023/07/20/what-happened-to-dolphin-on-steam/
Valve only ever insisted that Nintendo had to give Dolphin permission to distribute since Valve was afraid of a potential DMCA coming from Nintendo if Nintendo thought that the encryption keys were IP illegally being redistributed. Since Nintendo says emulators are illegal everywhere but a courtroom, Dolphin team knew that they’d never get an ok. Valve probably knew that but didn’t care enough to help fight that legal battle.
I’m not sure Valve cares about brownie points with Nintendo. The Steam Deck is a direct competitor against the Switch, Valve has done nothing to curtail the use of Switch emulators on Deck, and the work Valve has been doing makes using a switch emulator a better experience.
This whole thing only makes sense if Valve wanted to protect their IP. Involving Nintendo really does sound like blame shifting without having to actually go to court
I’m with you on the first part. It makes no sense for Valve to do this. Using LibUltra or not, Nintendo has been relatively lax on people creating new code for the N64. At least to my recollection only in cases where Nintendo felt their IP was directly being threatened did they try and take down fan projects. Even then they heavily rely on the redistribution of Nintendo IP to take things down. Admittedly I have only seen others talking about the Portal 64 project using LibUltra but even so that’s Nintendo’s fight, not Valve’s.
I don’t see how Valve could possibly be afraid of getting sued here by Nintendo, it doesn’t make sense. Valve did not create it, nor distribute, advertise, or aid in any way. IANAL but I don’t see how Valve could possibly be listed as a party to the lawsuit unless Nintendo lawyers agreed with Valve lawyers to go after this guy for IP theft.
TBH I see this more as Valve seeing that with a project this publicly known, if they don’t defend their IP here they’ll lose any future copyright claims and want to prevent it. They also see an opportunity here, blame Nintendo who won’t flinch it at since they get labelled legal bad guys all the time, no real dent to their reputation while saving Valve’s internet golden child perception. Valve would never do something like this so it MUST be Nintendo’s fault. Based on the comments in this thread and I’ve seen else where, that seems like a good assumption. Nintendo takes the heat while Valve protects their IP.
In pure C things are a bit different from what you describe.
Declaration has (annoyingly) multiple definitions depending on the context. The most basic one is when you are creating an instance of a variable, you are telling the compiler that you want a variable with symbol name X, data type Y, and qualifiers A,B and C. During compilation the compiler will read that and start reserving memory for the linker to assign later. These statements are always in the form of “qualifiers data_type symbol;”
Function declaration is a bit different, here you’re telling the compiler “hey you’re going to see this function show up later. Here are the types for arguments and return. I pinky swear promise you’ll get a definition somewhere else”. You can compile without the definition but the linker will get real unhappy if you don’t have the definition when it’s trying to run. Here you’re looking at a statement of “qualifiers return_data_type symbol(arg_1_data_type arg_1_symbol,…);” Technically in function declarations you don’t need argument symbols, just the types, but it’s better to just have them for readability.
Structs are different still. Here you’re telling the compiler that you’re going to have this struct definition somewhere else in the same translation unit, but the data type symbol will show up before the definition. So whenever the compiler sees that data type show up in a variable instance declaration it won’t reserve space right away but it has to have the struct definition before compilation ends. This is pretty straightforward syntax wise, “struct struct_name;” (Typedefs throw a syntax wrench into this that I won’t get into, it’s functionally the same though)
One more thing you can do with variables during declaration is to “extern” them. This is more similar to function declaration, where you’re telling the compiler “hey you’re gonna see this symbol pop up, here’s how you use it, but it actually lives somewhere else k thx bye”. I personally don’t like calling this declaration since it behaves differently than normal declaration. This is the same as a normal variable declaration syntax with “extern” tossed in the front of the qualifiers.
Definitions have two types: Function definitions contain the actual code that gets translated into instructions, Enum, struct, typedef definitions all describe memory requirements when they get used.
Structs and enums will have syntax like “struct struct_name {blah,blah,blah};”, typedefs are just “typedef new_name old_name;”, and function definition “qualifiers return_data_type symbol(arg_1_data_type arg_1_symbol,…) {Blah,blah,blah}” (note that function definitions don’t need a ; at the end and here you do need argument symbols)
Lastly, when you create a variable instance, if you say that you want that symbol to have value X all in one statement, by the standard that’s initialization. So “int foo = 5;” is declaration and initialization. Structs and arrays have special initialization syntax, “struct foo bar = {5, 6, 7};” where the numbers you write out in the list gets applied in order of the element names in the struct definition. You can also use named initialization for structs where it would look like “struct foo bar = {. element_one = 5, .e_two = 6, .e_three = 7};” This style syntax is only available for initialization, you cannot use that syntax for any other assignment. In other words you can’t change elements in bulk, you have to do it one at a time.
C lets you get real wild and combine struct definition, struct instance declaration and initialization all into one! Though if I was your code reviewer I’d reject that for readability.
<\wall-o-text>
Kinda hard to sell ads when everyone blocks them
Unfortunately not, I’m in the space side of aerospace. If it flies in the atmosphere and isn’t accelerating to orbital velocity I’m afraid I don’t know