Hacker Newsnew | past | comments | ask | show | jobs | submit | RodgerTheGreat's commentslogin

For the sake of the patients, I hope there's a better long-term service plan than Second Sight Medical Products had:

https://en.wikipedia.org/wiki/Argus_retinal_prosthesis


The way I would solve that is by requiring that any software / documentation required for the operation, maintenance and repair of medical implants must be stored with some appropriate government body. If the company becomes unwilling or unable to service the product the information is made public.

Unfortunately, documentation simply isn't sufficient. In addition to parts or components not being manufactured anymore, you also would have the likely bigger issue of clinicians being hesitant or unwilling to work with the hardware, and / or insurance not covering the doctor's time or procedures. I believe such things already happened with the Second Sight fiasco.

I've seen (commercial) software put in 'Escrow' before when a client uses it; effectively a lawyer (or similar) holds onto a copy so that if the original company goes under, then the buyer can get hold of it.

This is done whenever public utilities buy custom software.

There's a long, detailed article on the lives of patients after Second Sight started downsizing:

https://spectrum.ieee.org/bionic-eye-obsolete


Came here to post this in case it hadn't been.

This case is very infamous in the disability & tech academic research community -- kind of their version of the Therac-25 in terms of ethics, damage to people, etc.


I can’t imagine going through all that, having your sight somewhat restored, and then quickly losing it because of lack of support by a private company. It reads like a sob story/sidequest from cyberpunk 2077

I actually asked them about it https://bsky.app/profile/benetou.fr/post/3m3orbh5h7s2n and basically :

- devices are not OSHW (and didn't comment on the new OSHWA open healtware initiative) - implants don't actually have firmware or even battery - devices connected to implants rely on their protocol Synapse https://github.com/sciencecorp/synapse-api

So... arguably they haven't taken a positive stance on the topic IMHO but assuming the situation is as they describe (kind of an advanced mirror in the body connected to smarter stuff outside but that one could replace) it's not as terrible as others mentioned e.g. in the IEEE Spectrum article.


Free software is more important than ever

Accessibility of free software is more important than ever.

The freedom of users of accessibility software is more important than ever.

Blind people in my family rely on proprietary software for dealing with visual impairments. It's painful and offensive how exploitative these tools often are. The thought of installing something by a similar company into one's body is frankly dystopian.


The problem right now is that there's a financial incentive for software to remain proprietary. As a user, you get to pick between "no help" or "proprietary help".

I would gladly pay big money for proprietary tools if it means regaining some of my sight until libre options exist. Looking at the rather sorry state of accessibility on libre software, I'll be dead and buried before the first digital eyeball with free software comes out.


As is regulation of medical devices.

Free healthcare as well

As a citizen of a country with free healthcare, Sweden, I wonder how we deal with these issues. We dont exactly have a stellar record when it comes to software procurement in the health sector.

Neither do we in the UK.

The most expensive IT failure in our governments history was healthcare related.

https://en.wikipedia.org/wiki/NHS_Connecting_for_Health


Swedish healthcare is pretty cheap, but not free.

It's typically $10-$50 per visit. Maxes out at $130 per year.

This probably weeds out a lot of frivolous visits and keeps the system healthy.



The only "almost messed up" thing I could find about the service, was this:

> Second Sight merged with Nano Precision Medical in August 2023 with a commitment to provide technical support for the Argus II

Maybe you're alluding to something more than is mentioned in that article, did they not fulfill their commitment to provide the technical support in the end?


> did they not fulfill their commitment to provide the technical support in the end?

If they did not fulfill their commitment continuously, it's messed up.


Three years later and after multiple people had re-lost their sight. It’s also an ongoing situation if I’m reading it correctly, not a solved one.

For some people, good news is always bad news.

Sir, this is a Capitalism.

Well, yes. Capitalism is why the product could even be developed in the first place, and also why it ended the way it did.

It's not the only imaginable way, but it is the society we (in the vast majority of the world) live in, and I agree it doesn't really make sense to bash something not continuing to exist unprofitably when it was developed for profit.

It's annoying when software support ends for anything, phones, Nest Protect, (any Google product!), but I think best to bear it in mind in buying anything that it's a possibility, who are you relying on for what and what's their incentive to keep going.


The problem is that companies are deliberately kneecapping their products by making cloud subscriptions mandatory and third-party repairs impossible. Refusing out-of-warranty repairs or discontinuing cloud services for obsolete products because it is no longer profitable wouldn't be such a big deal if third-party providers were able to replace OEM support.

Traditionally, if I buy a $500 dishwasher, the OEM is responsible for repairs under warranty. When the warranty lapses it'll still keep working perfectly fine, and if something breaks I can go to one of a dozen repair shops in my local area. Same if the manufacturer goes bankrupt: it'll keep working, and I can still get it repaired.

These days, if I buy a $500 tech product, it can turn into an expensive brick literally the next day, and there's nothing I could do about it. Even worse, it can happen because the OEM feels like it, not just because they went bankrupt! The fact that I own and possess the product has become completely meaningless, its fate is permanently in the hands of the manufacturer.

Somehow we've ended up with all the downsides of renting/leasing, and all the costs of purchasing. It'll only get worse unless we start punishing companies for behaving like this.


All of which should be dealt with by governments.

As an old post on usenix I liked (paraphrased) went “of course they shit on the floor, it’s a corporation, it’s what they do, the job of government is to be the rolled up newspaper applied to their nose when they do”.

That’s the fundamental problem, our governments don’t stand up to businesses enough when they should and roll over too easily when they shouldn’t.

The relationship is far too cosy at the top levels as well.


The mixed market economy is how most of the productive world operates, with varying degrees of mixed. Laissez-faire capitalism has led to disaster time and time again, but even the US is not that system (far from it - arguably China is closer by many metrics).

It is a reasonable argument for the regulatory state though - which is to say, delays to market from regulation could have reasonable origins - like requiring sustainment plans when you're going to do human implants which aren't removable. With the obvious counter-balance that the government and by extension the taxpayer should take on some of the risk if they truly want "rapid to market" development.


I’d agree that China is more of a laissez-faire system than the US with one proviso, the CCCP mostly stays out of it until it doesn’t and then they descend like the wrath of an angry and vengeful god.

If you avoid that you have more freedom to operate as a corporation in China than in the US, of course in the US the corporations just buy sorry lobby the politicians.

It used to be much more understated than it has been recently though, that they’ve pulled the mask off more over time suggests they think they can get away it.

Interesting times.


This isn’t a smartphone it’s someone’s sight dude. Surely the conversation should be slightly different?

Of course sight is more serious than smartphone; my point is that if you rely on a for-profit company, then you should take that consideration (familiar from smartphones) more seriously for your sight.

Occurs to me there was actually a Black Mirror episode on basically this in the latest season - not sight exactly, but a neurological implant of some kind. (Jacking subscription fees, removing features, etc., with real-world consequence.)


Except when these guys pays millions in marketing to make you believe you can rely on them. If at least they would just say nothing instead of propagating their distorted vision.

very important things should have short names. locals you're immediately operating upon should have short names. short names should be used in a consistent way.

less important things can have longer names. variables in a broader scope can have longer names.

if you have a hundred different vectors, don't just dump them in a pile; put them in dictionaries, tables, namespaces, or scopes.


exactly.

the complexity is built differently in k.

  * namespaces do exist, and are just as useful as they are in c++ and especially my beloved *sun.misc.unsafe*. i recommend.

  * instead of passing 20 arguments to a function (which is impossible - the limit is lower), we pass a dictionary if we have to. k **pretends** that everything is passed by value, but in reality it is much smarter than that.

  * notion of *scopes* is a bit of a non-sequitur here, but it is fundamentally important that there is no *lexical scoping* in k. the only two scopes which are available from the scope of a lambda are exactly *local* and *global*. and for as long as your function doesn't mess around with global scope or i/o (which is essentially the same thing), it remains pure, which is super cool. this design is not just for simplicity - it is for a good reason, and more than one.

  * the above doesn't mean that it is impossible to create a *closure* in k and pass it around as a value.

  * functions take up to three implicit arguments - named x,y and z (they can be renamed explicitly, but why not just document their semantics instead, in-situ?). all you need to do to declare xyz is reference them in the function definition. in competent k code, you'll rarely see a function with more than xyz.

 * in k community, we don't use upper case unless the apartment is on fire. god forbid.

 * shorter names and more documentation, and there will be joy.

i'm a fan of

    t=\:t:!x

> t=\:t:!x

this is of course obvious first idea, but the recipe from above is actually from the official k4 cookbook. t=t is less innocent than it seems, i'm afraid.

in k7/k9, we can:

  10^@[100#0.;11*!10;1.]    /just for more lulz
there's also a way to mutate it in place!

nice :) also see here:

https://news.ycombinator.com/item?id=45603661

HN is such a sweetheart. i should check in more often.


MATLAB doesn't have a FOSS implementation that runs in a browser.

Octave covers all the Matlab functionality I need, not sure if it runs in a browser. I mean if you have the source code for something there must be some way to get it to run in a browser these days, right?

of course it runs in a browser - pretty much everything you can build using clang will run on the web. including linux kernel and llvm itself.

to hell with peanuts: i'm pretty sure someone must even built cpython interpreter to wasm target, why not. there is no limit of what can be achieved by a group of motivated people with zero sense of direction.

k, however, makes quite a bit of sense on the web - also on your phone. and time to prompt is going to be MUCH faster than python and octave. and i mean their native builds :)

https://kparc.io/k/

backslash is reference card, cmd+[] some examples


A few more examples in K and Lil where pervasive implicit iteration is useful, and why their conforming behavior is not equivalent to a simple .map() or a flat comprehension: http://beyondloom.com/blog/conforming.html


Use your imagination a little; I'm sure you can come up with several variants that are an even viler and more exploitative/manipulative idea than the product as it stands.

Let your kid call a crude simulacrum of dead relatives, let religious folks call a crude simulacrum of $DEITY, make an "adult" version that crudely simulates a phone-sex hotline (charge extra to recharge the minutes on that one obviously), etc, etc.


> make an "adult" version that crudely simulates a phone-sex hotline

This is a quaint almost vintage version of the technology that already exists. Why stop at just audio when you can right now have a "video call" with your AI sexbot? If you were worried porn was going to lose it's top spot for pushing technology forward—and backward and forward and backward—to it's eventual climax then worry no more!


The Birth & Death of JavaScript wasn't talking about WASM, it was talking about Asm.js, which crucially differs from WASM by being a backwards-compatible subset of JavaScript amenable to JIT compilation. The goals of these standards look similar if all you care about is transpiling c and running it on a browser, but Asm.js worked everywhere from day zero modulo performance; WASM continues to be a moving target.


Wasm has long supported everything you could do with asm.js. But wasm is about much more than C to browser. That's why it's still evolving.


Asm.js runs on the main thread, WASM runs in its own thread.


Not exactly true WASM compilcation is in a different thread, but the execution happens on the same thread as JS if you don't do any webworker stuff.

Edit: https://apryse.com/blog/how-to-enable-webassembly-threads


For contrast, here's how I'd handle the example given on the front page in Lil[0]:

    i:"%j" parse shell["curl -s https://api.weather.gov/gridpoints/BOU/63,62/forecast"].out
    t:i.properties.periods..temperature
    o.average:(sum t)/count t
    o.minimum:min t
    o.maximum:max t
    show[o]
Lil doesn't have implicit parsing of .json arguments like Blots- certainly a nice feature for the niche Blots is aimed at. Lil also doesn't have an arithmetic average as a builtin like Blots, but in this case it's easy enough to do without.

The biggest difference here is how Lil handles indexing: The ".." in that second line can be read as "for every index"; a wildcard. I can follow the mapping that occurs in Blots' "via" expression, but I find it less clear in this example.

It can also be nice to treat lists-of-objects as proper SQL-like tables:

     select number name temperature windSpeed from table i.properties.periods
    +--------+-------------------+-------------+---------------+
    | number | name              | temperature | windSpeed     |
    +--------+-------------------+-------------+---------------+
    | 1      | "This Afternoon"  | 54          | "14 mph"      |
    | 2      | "Tonight"         | 46          | "3 to 12 mph" |
    | 3      | "Wednesday"       | 69          | "5 mph"       |
    | 4      | "Wednesday Night" | 45          | "3 mph"       |
    | 5      | "Thursday"        | 79          | "5 mph"       |
    | 6      | "Thursday Night"  | 49          | "5 mph"       |
    | 7      | "Friday"          | 83          | "2 to 6 mph"  |
    | 8      | "Friday Night"    | 52          | "6 mph"       |
    | 9      | "Saturday"        | 81          | "3 to 8 mph"  |
    | 10     | "Saturday Night"  | 53          | "3 to 8 mph"  |
    | 11     | "Sunday"          | 81          | "3 to 7 mph"  |
    | 12     | "Sunday Night"    | 54          | "3 to 7 mph"  |
    | 13     | "Monday"          | 77          | "3 to 7 mph"  |
    | 14     | "Monday Night"    | 53          | "3 to 7 mph"  |
    +--------+-------------------+-------------+---------------+
I hope you continue to tinker and evolve Blots; a personal scripting language guided by the use-cases you encounter naturally can be very rewarding and useful.

[0] http://beyondloom.com/tools/trylil.html


This is the sort of thing I use Nushell for, brilliant data focus shell!


Now I'm on the computer this is the Nushell variant, you could probably do something with reduce too:

    ~> http get https://api.weather.gov/gridpoints/BOU/63,62/forecast 
       | from json 
       | get properties.periods.temperature 
       | {average: ($in | math avg) minimum: ($in | math min) maximum: ($in | math max)}
    ╭─────────┬───────╮
    │ average │ 66.36 │
    │ minimum │ 52    │
    │ maximum │ 81    │
    ╰─────────┴───────╯
    ~>


wow that sql like code is really impressive


Lil is such a beautiful language. It’s so much fun for little data tasks like this.



That's much longer than a quarterly earnings report away, which makes it "somebody else's problem" for the executives pushing these policies. There's no reason to expect these people to have a long-term strategy in mind as long as their short-term strategy gives them a golden parachute.


Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: