• 0 Posts
  • 853 Comments
Joined 1 year ago
cake
Cake day: June 19th, 2023

help-circle


  • You only get ahead by shipping a product, and getting a project approved is largely politicking

    Yep - I had a friend who worked for three years at Google, none of the products he worked on ever shipped and eventually he gave up on ever receiving a good salary (bonuses/stock options/etc are supposed to be most of the pay, but you only get that by working on a successful product)

    They have ten major campuses worldwide that focus on product development, but only one of those actually ships products regularly.


  • The porn industry is, in fact, extremely hostile to AI image generation. How can anyone make money off porn if users simply create their own?

    Also I wouldn’t be surprised if the it’s false advertising and in clicking the ad will in fact just take you to a webpage with more ads, and a link from there to more ads, and more ads, and so on until eventually users either give up (and hopefully click on an ad).

    Whatever’s going on, the ad is clearly a violation of instagram’s advertising terms.

    I’m just hoping I can communicate the danger of some of the social media platforms to my children well enough. That’s where the most damage is done with the kind of stuff.

    It’s just not your children you need to communicate it to. It’s all the other children they interact with. For example I know a young girl (not even a teenager yet) who is being bullied on social media lately - the fact she doesn’t use social media herself doesn’t stop other people from saying nasty things about her in public (and who knows, maybe they’re even sharing AI generated CSAM based on photos they’ve taken of her at school).


  • PowerShell is heads and shoulders over bash

    Sure… but that’s a low bar. Bash is basically the worst shell of them all (if you exclude the ones that are so bad nobody uses them).

    I’m a fan of fish personally. It’s both concise and feature rich. The fish language isn’t something I’d want to write a complex shell script in, but it’s a thousand times better than bash and if you’re writing something complex then I’d argue any scripting language is the wrong tool for the job. Including Power Shell. You should be using a proper programming language (such as C#).

    PowerShell is innovative, for sure. But string output/input shells scripting wasn’t broken (unless you use bash) and I’m convinced trying to fix it by replacing simple string input/output with objects was a mistake.

    I love OOP. However I also love using existing tools that work well, and none of those tools are designed to be OOP.


  • Swift is a relatively young language (ten years) and ~3 years ago a lot of things were brand new or had relatively recently been refactored. Also Apple released it to the public before it was really finished - and did the final work finishing off the language out in the open with collaboration as any well run open source project should be developed.

    For the first five years or so it was barely ready for production use in my opinion, and it sounds like tried to use it when it was ready but still had a bit of rough edges such as docuemntation.

    For example async/await was added around when you looked into it and that obviously made a lot of documentation relating to threads out of date (from memory they pretty much deleted all of it and started the long process of rewriting it, beginning with very basic docs to get broad coverage before having detailed coverage).

    And before that the unicode integration wasn’t quite right yet — they did the tough work to make this work (most of these characters are multiple bytes long):

    let greeting = "Hello, 🌍! こんにちは! 🇮🇳"
    
    for character in greeting {
        print(character)
    }
    

    And this evaluates to true even though the raw data of the two strings are totally different:

    let eAcute: Character = "\u{E9}" // é
    let combinedEAcute: Character = "\u{65}\u{301}" // e followed by  ́
    
    if eAcute == combinedEAcute {
        print("Both characters are considered equal.")
    }
    

    I hated how strings were handled in the original Swift, but it’s great now. Really hard to write documentation when fundamentals like that are changing. These days though, swift is very stable and all the recent changes have been new features that don’t affect existing code (or already written documentation). For example in 2023 they added Macros - essentially an inline function (your function won’t be compiled as an actual function - the macro code will be embedded in place where it’s “called”).

    You define a Macro like this:

    macro func assertNotNil(_ value: Any?, message: String) {
        if value == nil {
            print("Assertion failed: \(message)")
        }
    }
    

    And then if you write this code:

    assertNotNil(optionalValue, message: "optionalValue should not be nil")
    

    … it will compile as this:

    if optionalValue == nil {
        print("Assertion failed: optionalValue should not be nil")
    }
    

    Notice it doesn’t even do any string interpolation at runtime. All of that happens at compile time! Cool stuff although it’s definitely a tool you can shoot yourself in the foot with.


  • is [Swift] using fibers instead of real OS threads(?)

    There are similarities to fibres, I’d say they’re solving the same problem, but they’re not really the same thing.

    It uses libdispatch which is built on top of “real OS threads” though on some kernels (especially BSD ones) it takes advantage of non-POSIX standard OS threading features (it can run without them, but runs better with them).

    Essentially you give the dispatcher a set of tasks, and the dispatcher will execute those tasks on as many threads as makes sense for the available hardware (this is where kernel integration helps, because the number of available CPU cores depends on the current workload for all processes, not just your process, and it changes from one millisecond to the next). The general goal is to keep every CPU core fully loaded, unless QoS has been set low which would prioritise battery life (and might, for example, use “efficiency cores” or avoid “turbo boost”).

    What are these things/what is this comparing?

    It’s a simple variable assignment, such as person.name = "bob", where the compiler has recognised the value might be accessed concurrently from multiple threads and may need to pause execution for a task that is waiting for the lock to be released. But of course, since the goal is to keep the CPU core active, it doesn’t just pause the code running on that core - it’s likely to start executing something else on the same core while waiting.

    OperationQueue and DispatchQueue are basically the same, but OperationQueue has additional scheduling / dependency features which come with a slight performance overhead. If your execution tasks are slow and have minimal interaction with other threads, such as resizing half a million images, then you wouldn’t notice the performance overhead. But if you have very short operations that interact with each other (or if you just don’t need any of those management features) then DispatchQueue is the way to go.

    They’re largely the same in basic use:

    dispatchQueue.async {
       // your code here
    }
    
    operationQueue.addOperation {
     // your code here
    }
    


  • In less than two years, the rechargeable lithium-ion battery found in your AirPods is due to die an untimely death.

    Bullshit. I got four years out of each of my pairs and I used them several hours a day. Also replacing the battery when it does wear out is is something like 50 bucks. Sure, you can’t do it yourself but Apple will give you a refurbished pair, and they will recycle your old battery.

    And they provide free recycling for all their products — you’re basically paying for it to be recycled when you buy AirPods and any that go into landfill that’s entirely the customer’s fault.

    No wired headphones I’ve ever owned lasted even close to that long - the cable eventually fails with several hours per day of swinging around and being packed tightly into your pocket.

    That said, I’ve switched to bone conduction headphones now, and will probably never own another pair of airpods unless they go down the same path.


  • Swift. It’s an amazing language with clear but concise syntax that has every language feature you could ever want including some really nice ones that are quite rare (not unique, but certainly rare especially all in one place).

    The most unique and meaningful features are the memory manager and thread manager.

    Write a tight loop in Swift vs almost any other language, there’s a good chance Swift will use orders of magnitude less memory - because it’s better at figuring out when you’re done with a variable and don’t need that five megapixel image anymore. And it’s fast too — memory management isn’t something we rarely need to worry about in most languages but in Swift it’s more like “almost never” instead of just “rarely”.

    The threading system is so efficient that calling something on another thread is almost as fast as an ordinary function call, and the code to do it is also almost as clean as a function call, as well as all the tools you need to allow efficient (and reliable) data transfer between threads. The few mistakes you can make are usually caught by the compiler. Swift programmers use threads all the time even if they don’t really need to. It’s nothing like other languages where threads introduce unnecessary complexity/bugs or performance bottlenecks.

    Seriously look at this comparison of DispatchQueue and OperationQueue of a thread locked operation (setting a shared variable). A million operations in a bit over zero seconds vs nearly 30 seconds and the kicker is the 30 second one isn’t “slow” — a lot of thread safety management tools would be minutes if you tried to do that (these two comparisons are both done in Swift, which has several different ways you can deal with thread safety):

    Swift is fully open source and cross platform. But unfortunately it hasn’t taken off outside of Apple platforms, and therefore it lacks comprehensive libraries for a lot of commonplace tasks particularly when it comes to server side development or interacting with the Window Manager on Windows/Linux/Android.


  • Phones are remarkably durable now

    Even if you look after them perfectly the oleophobic coating starts to wear off with normal use after about six months.

    iPhone 15 Pro Max is about 5 or 6 on a mohs scale. Beach sand is much harder than that and often very sharp, so if you ever go to the beach (I’m lucky enough to do that almost every day), you’re probably going to have sand in your pocket/bag and that will scratch the screen. My current screen protector is about 12 months old and has tens of thousands of micro scratches (only visible in certain lighting) and five or six deep gouges (visible whenever the screen is off). Time to replace the protector.


  • They all take away from the display. Even if nothing else, the simple fact you have one more layer is adding a surface for light to bounce off. Glass is not transparent. Something like 16% of light bounces off most glass, depending on the chemical makeup and also how the layer is bonded to the display (there are ways to bond it that reduce the issue and Apple uses those for all the internal layers on the display).

    Having said that — I still think screen protectors are worth it, because i use my phone for a long time and am pretty rough with it, so my glass is going to get scratched and the ability to replace the outer layer periodically (and cheaply) is worth the tradeoff to me.

    The best ones don’t cover the screen - they cover pretty much the entire front of the device. Unfortunately with some iPhones those are not available (e.g. if the phone has curved edges). And they have an oleophobic coating — because holy shit fingerprints are bad without that. This is another reason to use a screen protector. That coating wears off over time and eventually your factory iPhone screen protector will be covered in smudges (unless you buy a new one regularly).

    You also need one with very good installation instructions and maybe also some kind of alignment jig built into the packaging. Wether or not that’s necessary depends on what model phone you have, since some iPhones are more difficult than others.

    I’m a big fan of D-Brand screen protectors — they’re well made and the installation instructions are the best. Even if you buy someone else’s protector it’s worth watching the D-Brand instructions for tips. This one doesn’t have an alignment jig, because one isn’t really needed. For some phones or protectors it really is needed. https://youtu.be/OJW89JK3zZk


  • Oh is see it is the porn site itself blocking the uk visitors

    Sure. A little more to it than that though.

    AFAIK the UK most likely said “this content is illegal, if you don’t remove it, we’ll go all Kim Dotcom on your ass” and it’s entirely up to the website operator how they want to respond to that. They could fight it like Kim did… might not end well though.

    Any large website with user uploaded content receives notices like that routinely (including Lemmy) and most of them respond by deleting the content itself, because it’s usually pretty nasty shit or else it wouldn’t have got the feds attention. It’s treated the same as malware/spam/etc.

    For whatever reason, these ones chose to take the entire website offline if necessary.


  • I work in a field with HIPAA protections.

    Definitely need to be careful then.

    is this kind of software considered “AI”?

    The best voice recognition is based on AI — yes.

    Before AI, voice recognition existed but it was generally pretty shit and really struggled with accents, low quality microphones, background noise, people saying things that don’t strictly make sense. E.g. if you say “We’ll burn that bridge when we get to it.” a good AI might replace “burn” with the word “cross”… it will at least have the capability to do that, wether or not it will would depend on your settings - is “accuracy” about what someone said or what someone actually meant? That’s configurable in the best systems.

    Does the tech learn to recognize my voice better over time?

    Old software did. These days systems work so well that would just add cost with zero benefit. Good speech recognition will understand your speech perfectly as long as your microphone is decent and “learning” wouldn’t help much with that one potential problem area.

    Some speech systems do learn in order to recognise/identify people (for example, a voice assistant might use it to figure out who “me” is in a command like “remind me to do get milk when I get to the shops”. And a good transcription service will recognise different people talking in a single recording, and provide an appropriately annotated transcript. That’s about the extent of “recognising” your voice, it doesn’t generally learn from you over time.

    Is this all a black box?

    Kinda yeah. The researchers paid a huge number of people in third world countries to compare recordings to transcriptions, and make a “correct / incorrect” judgement call. Then fed all of that, and a whole bunch of other things (it’s believed every YouTube video ever uploaded might have been involved…) into a very complex model.

    Tweaks are made but it’s just too much data (OpenAI says they used 680,000 hours of audio) to fully get your head around all of it. A bit like trying to understand how the human brain recognises speech — we have a broad idea but don’t really know.

    Does it use my recordings to learn to understand other’s voices? How can I take precautions such that no one except me hears the things I transcribe?

    Check the privacy statement for the service. They might, for example, send your recordings to be assessed for accuracy by employees/subcontractors. AFAIK (not a lawyer) that would be a breach of HIPAA.

    AFAIK some Apple speech recognition features are HIPAA compliant. Look that up to verify it but in general iPhones and Macs Apple have AI speech processing hardware on the device allowing fully local processing… but not all features are done locally and in some cases they may transmit “anonymised” (useless if you speak someone’s name…) speech to employees/contractors to improve the software. That can be disabled in settings.

    Amazon and OpenAI do everything in the cloud but have fully HIPAA compliant versions of their services (I assume those are not cheap…)

    You could try open source models — I don’t know how good they are in practice.



  • That knowledge is mostly trivial. 7/10 repairs a regular Joe could do. Or worse comes to worse you can take it to a mechanic of your choosing.

    That’s not true anymore. Modern cars have really complex problems that even mechanics struggle to fix. Especially when it’s a software problem… usually those problems just never get fixed.

    As a software developer (not an automotive one) my take is the fix is to have everyone be running the same software, so that fifty thousand dollars diagnosing and fixing a problem for one car will result in it being fixed for all cars. Spread the cost out like that and it’s affordable. Otherwise it just won’t get fixed at all.

    Should we go back to basic cars? I think so yes… but then I ride a motorcycle that doesn’t even have water cooling or a battery. But most people aren’t like me. They want lane keeping cruise control/etc.



  • or is it something I’ll need to worry about for weeks/months

    Try years. For example the 2020 Takata airbag recall… wouldn’t be surprised if there’s still a hundred million cars around the world that haven’t been recalled. If you don’t live in a first world country, it wasn’t even possible to get parts for the fix until recently.

    Even if the fix was smaller, there aren’t enough mechanics in the world to check/update/test a significant percentage of cars quickly, and manufacturers share components so that can easily happen.

    And the biggest time sink for a recall is often not the repair, it’s all the time spent with humans scheduling/testing/documenting the recall. Only way to speed that up is with automation/OTA updates.


  • If it’s a safety system, it might be “have the car taken to the dealership on a flatbed truck”. Also, some people don’t live near a dealership.

    Like it or not, all modern cars are connected - for the maps if nothing else - and if a car is capable of an OTA update, I say do it. I don’t see how a dealership adds anything other than cost which will always discourage updates from being made at all.

    And I actually think physical updates are easier - connect a laptop to the ECU, and you’re done. It’s generally only OTA updates that use code signing/etc.