862 karma · joined November 20, 2012
This is not my real email address, but instead a temporary one I can revoke any time I want if a bunch of spam starts going through it.
If someone knows of something that can fill the void of Evernote so I don’t have to like, use Apple Notes with Reminders (which while you can access them on Windows via the browser, it’s a mediocre experience at best) and like raindrop.io for website archival all at the same time.
And I’m not moving to OneNote which while it might have most of that stuff, I hate using it.
The Android one I can: Check tasks I've done, scroll the list of tasks, select individual tasks, change the view (which opens a selection dialog), open the configured view in Todoist, and add a new task to the configured view (which opens a small UI over my home screen).
The iOS one allows you to long press to change some settings, select individual tasks (which opens Todoist completely), open the configured view in Todoist, and add a new task to the configured view (which opens Todoist completely). It also has __very__ limited options for where you can put it on top of the already-limited sizing options. I can either put it at the very top of the screen, the middle of the screen (2 rows of apps above, 2 rows below), of the very bottom of the screen. While the Android one can be resized to basically whatever and put anywhere. You can also only see 3 total tasks in the widget since you can't change the size, the text size, and you can't scroll. I might as well just click the app because it offers __very__ little that just tapping the app doesn't, or notifications don't.
No wonder not many widgets are being adopted for iOS. They're extremely limited. And that's all on top of the point another comment was making about people making websites into apps with React Native or a wrapper which makes it really hard to create widgets, especially with things like heavy memory/CPU time limitations placed on widgets in iOS making it hard to be able to boot up the app and get enough data to create a widget with inside those limitations. Let alone making the iOS-specific APIs and whatnot available to your app.
I wrote a parsing algorithm in Java and C++, and the Java one was absurdly faster than the C++ one at one point because I was using std::vectors all over the place, so any time I needed to store an attribute in one of those it was doing memory allocation that was way slower than Java's memory allocation and I wasn't getting a lot of the benefit of C++ because of the memory indirections being similar to the Java version. Similarly doing a lot of += with std::strings will utterly destroy your performance due to all the allocations, deallocations, and copying.
Expanding on strings a bit more: There's a really interesting attribute of a language like C++ versus one that has a GC and immutable strings. Because the memory lifetime is managed for you in a GCed language, there is effectively no need to actually copy string memory when handing it off to other libraries. Counter to that, because libraries have no idea what the lifetime of a string will be in C++, they effectively always have to copy strings in order to not have huge memory bugs. This actually leads to more performant code in the GCed language in this specific case due to there being less copying, without having some way to either modify the source of the other library or tell it in some way that the lifetime of the memory will always be good when it wants to access it. I think Rust lifetimes allow for similar optimization because it shouldn't compile if the memory gets deallocated while something else has a reference to it. Just an interesting observation I noticed a little while ago when working on heavy string processing code.
That said: The actual reality where someone gets their password stolen because they used 1Password's ClI tool seems pretty hard to run across. You have to have something running _at the exact moment_ when you're running this tool (and I imagine it shouldn't be running for very long) that also manages to harvest the entire set of running processes and their arguments. Said something then has to also transmit this information to a third-party server AND that third-party server has to be looking for this specific CLI tool in the hopes of catching it running.
Zoom is unlikely to manage to grab a list of processes at the same time that you're using this CLI tool (because it will be doing this on some internal timer or at the time when you are selecting something to share, and you have to be using it while using Zoom which should be a less-frequent occurrence due to generally paying attention to the call). And on top of that, if they even submit this information to their servers, I highly doubt they're going around deliberately scanning for passwords to maliciously use since they're a company focused on teleconferencing and not black hat activities.
And even beyond that this should still be more secure than a common alternative I've run into (and have done myself, because convenience was more important to me than 100% security at those jobs) where developers are just storing passwords and tokens in plain text in a bash/zsh rc file. That's a pretty easy target for a more realistic case of a module on something like NPM gaining some malicious code that checks some common files and patterns (e.g.: a line including export, PASSWORD, and =) and harvests that data to send to a malicious server.
And again, I'm not saying this is _good_, it's definitely not. I'm just saying that the case where this is actually exploited is pretty slim, bordering on not going to actually happen even if something just so happens to harvest that command running and sends it to their servers. Because it's much more likely that the thing harvesting that info isn't interested in stealing your password. There are much easier targets for malicious code to go after.
Also I see your reply has been downvoted enough to become grey. (EDIT: Looks like between starting writing this and submitting it, you're no longer in the gray from downvotes!) I imagine it's because you made a blanket claim about spin and dark patterns without any supporting evidence. I'd be curious to know what you're referring to since I don't really keep an eagle eye on this stuff, I just use their product.
The one thing I do remember in the vein of "dark patterns" is how they effectively hid the method of doing a one-time payment for 1Password where you have to manage syncing and backing up the password file yourself. Seeing as I have no reason currently to do anything but make a charitable read of that situation which has been decried more than once on HN, I'd be willing to bet they did so for the following reason: They have had many problems in the past where a customer has lost a password file because they were not a power user and did something such as keep it on one hard drive in their only computer. (reinstalled windows, hard drive died, etc.) So they wanted to make something that would prevent that from happening for the vast majority of their customers that don't really understand stuff like backups, or don't have Dropbox, or who aren't part of Apple's ecosystem and have iCloud, etc. so that their passwords will remain safe and secure. So they made their own sync service and hid the version that would do local-only files so that only the dedicated users who really want to do that would find it and use it.
OR alternatively they're a bunch of greedy people that just want to hoover up dollars from our wallets, as people love to accuse them of here. Maybe a little of column A and column B, honestly. Something something needing to ensure they have a company that stays in the black without wanting to absolutely bloat up their own software so it becomes another useless Enterprise(TM) application with each passing paid version.
Also the only affiliation I have with 1Password is I have a friend I recently learned works for them, otherwise I'm just a customer. I just got into one of my little ADHD focuses where I really wanted to reply with something long and detailed, so please don't assume I work for them or something and am defending them because of that :)
It’s really interesting to hear these differences in experience for the same product. I wonder why it’s happening? Gotta be something going on there.