1,507 karma · joined May 14, 2020
So, it does not matter that "all search engines are problematic in terms of privacy"-- this one is marketed to not be. That's why people have concerns about how serious they're taking that committment and why people would hold them to a higher standard. It's also why a sale to a company which does not respect privacy is potentially a major issue, especially if current customer data isn't being handled in the manner they had expected.
Vlad saw something critical of his hard work and wanted to put in the effort to clarify his stances and mend a relationship. I can absolutely understand that, your work is a reflection of yourself and nobody wants to be judged on misunderstanding. He might've even felt like he let someone who cared about Kagi down and wanted to make it right. Again, all understandable!
However, twice, the blog post author said they did not want to engage. At this point, regardless of how you feel about what was said, you should probably move on; they said their piece, you tried to engage, they rebuffed, oh well, do something else! To continue on is both incredibly annoying and a bit unhinged.
If Vlad absolutely felt like he needed to respond to this, he should've digested the main points of the original blogpost, reflected on them, and written his own blog post to a more general audience. Not necessarily in _response_ to the author, but understanding that more people probably feel this way as well and want to hear clear answers. Perfect examples of this would be an "Our stance on privacy" or "How we're ensuring Kagi's future," again factoring in the criticism from the author.
I write all of this as someone who pays for and likes Kagi. I think it's a good product, if a bit scattered at times. But the blog post does hit on some concerns that I have (privacy being the biggest) and seeing the follow up leaves a bad taste in my mouth.
However, my complaint was a bit more selfish-- for me personally, I'm a bit let down because I had gotten the idea in my head that I'd be able to use Rust from top to bottom. Following the discussion for the plugin system for a good while, many different options were on the table and I had gotten my hopes up for the ones which didn't pan out. Woe is me, but I'll live and I trust the maintainers to do what is ultimately right for the editor.
Helix being written in Rust meant that I felt very comfortable looking at the source code which gave me the confidence that if I wanted to implement something, I could reasonably do so. Furthermore, the idea that plugins could've been in Rust or Rust through WASM meant that I'd have an editor which was completely hackable in the least annoying way possible. Every time I have to learn one of these tool-specific languages I end up breathing a heavy sigh, spending a lot of time relearning things or working around weird quirks, and then ultimately giving up after writing the most basic version of what I want to do.
Ultimately, this is just a me problem and I really can't complain about something I haven't paid for or substantially contributed to. Maybe it'll actually be awesome and I'll change my mind completely, maybe they'll reconsider and add Rust-based plugins. Helix as an editor is awesome and I'm just going to have to trust the developers.
There is also a PR for a minimal implementation using a macro and targeting integers specifically[2]. It's experimental and there is a chance this doesn't get stabilized, but here's hoping it makes it through!
[0]: https://github.com/rust-lang/rust/pull/107606 [1]: https://cohost.org/oli-obk/post/165584-ranged-integers-via [2]: https://github.com/rust-lang/rust/pull/120131
I can't imagine feeling that level of betrayal; he described his relationship with the warthog as basically father and son. The profound sadness he experienced, mixed in with all that raw fear... even just reading it is unbearable.
I'm really sorry this guy had to go through this. I wish his memories of Waylan didn't have to be tainted with the violence of the incident or the unfortunate, but understandable execution.
That said, it is incredibly complex and a lot to grok. It's a completely alien concept to most programmers and there is still some confusion over what this feature even entails. As many people have said, it's questionable if you could truly unify some of these "effects" in a way that is useful or even coherent; you might have a sync and async version of a function that ostensibly does the same thing, but the implementation details could diverge a lot to the point where you might as well have just written two different functions. This sort of feature really needs an exploration of what it would look like in practice for existing, popular APIs, and not just toy examples.
I really am looking forward to the full RFC with the hopes that they nail the sweet spot here and we end up getting a nice effect system that helps me write beautiful, correct, and performant APIs (more so than I can already do today). At the same time, I also want one of the "correct" outcomes of the RFC to be "let's not do this at all." I worry with the amount of excitement and promotion this initiative has that this may end up being adopted by default. I really have no basis for thinking that, but I do keep seeing this pop up and a lot of people have valid questions and concerns that just go unanswered.
[1]: Rust also has a focus on low-level programming, but has many higher level constructs / a more complicated type system so I'm not too surprised when I see nice web frameworks in that ecosystem
I'm incredibly happy with my MFC-L3770CDW and I'm so glad I spent the effort tracking it down.
As for Kakao, going after the maintainers like this was absolutely disgusting especially after they purged the extensions. I don't even think the music industry went after torrent clients, so they're somehow even worse. A part of me wishes they were able/willing to fight this with support from the EFF or some other org with a dog in this fight.
[1]: https://blog.rust-lang.org/2016/08/10/Shape-of-errors-to-com...
As for external contributions, well, you have at least one (incredibly minor) external contribution that I'm aware of. I'm sure that person is happy to see their commit survived the repo transition!
One thing that I am definitely happy to see is the removal of $: as it should help Typescript users. Personally, I was quite sick of writing:
let input = 'Hello';
// ...
let loudInput: string;
$: loudInput = `${input)!`;
Instead of: let input = 'Hello';
// ...
$: loudInput: string = `${input)!`;
It's an incredibly minor thing, but when you do it 1000 times it becomes very frustrating. Having reactivity be rune-based should help TS avoid the syntactic confusion, bringing us to: let input = $state('hello');
// ...
let loudInput: string = `${input)!`;