Ask HN: In which areas have you compared 3+ tools and formed strong preferences?
I've used 3+ code editors on MacOS and prefer sublime text over VScode, coteditor, xcode.
I've used Chrome, Firefox and Safari all within the past year, and I prefer Chrome and Safari.
I've used 3+ voice transcription apps, the ones I prefer are 'just press record' and Otter.ai, I can't remember the names of the others I used - but I downloaded a bunch of Whisper based ones and non-whisper based ones on the iOS app store.
I've used 3+ messaging apps, I like iMessage and Telegram, I prefer those over Signal and WhatsApp.
I've used 3+ interfaces for GPT, and I prefer the OpenAI playground over ChatGPT, chatbot-ui, typingmind, openplayground, Poe, and a few others I can't remember.
I think it's important to note that for me these are all preferences. I'm not saying one of these tools are objectively better. I am saying that for me they are better, and I prefer them.
What are areas of products, tools, developer tools, APIs, anything, where you've personally used 3+ tools, and what did you prefer, and what did you not prefer, if you can still remember?
206 comments
[ 2.5 ms ] story [ 315 ms ] threadFactor it dev vs. production DB setups, on boarding new developers and growing pains of a startup and having one DB as source of truth with a small performance penalty (and a large cost savings) - it's a no-brainer.
tl;dr prefer Context but wish I could move everything to Mobx.
If you want actions and reducers just use the hooks versions for those + Context.
At least that's been my own experience. I don't fault people for going different routes, I just find that the boilerplate kind of fades into the background after it's established.
In the mean time, you can avoid that.
That is exactly why I don't like it. Rather than doing as simple as possible and expanding when needed, you default to the most complex answer. The fact that it can handle anything means you don't need it for everything.
BBEdit I still use for multi-file search & replace since I prefer its interface for that. It also has the fastest typing speed.
PyCharm I use exclusively for identifying & removing unused imports in Python.
VS Code I don’t use at all. Relatively slow typing speed. Relatively slow navigation.
Personally, I'm playing with new browsers and search engines. SigmaOS, Arc, Firefox. Dropped Chrome, gave up on Safari.
Search engines: phind, chatgpt by API, kagi, you, perplexity
Not sure how useful this question is...
The definitions, while slightly archaic, are evocative of the etymological valences in ways that other dictionary apps (Merriam-Webster, Oxford Dictionary, Dictionary.com) lack. The WWD also has a pleasingly clean UI, smooth interaction, and no ads.
Special mention of Etymonline's etymology app.
I agree 100% about the etymologies.
It's worth noting that I access these things most frequently on mobile, so an app (with a clean, ad-free, streamlined UI) is paramount.
Your comment sparked me to seek out whether Wiktionary has an app— and apparently someone has built this iPhone app for a reader view, which at first use appears identical to the desktop view: https://apps.apple.com/ca/app/wiktionary-reader/id984975341
OLAP databases/query engines. Redshift, Athena/Presto, Snowflake, BigQuery, ClickHouse. It's complicated, actually. I guess my strong opinion is that Snowflake is massively overrated and it will perform worse and cost you more than you expect.
DAG frameworks. make, Luigi, Drake, Airflow, DBT, Prefect, NextFlow, others I'm forgetting. Airflow is hot garbage. It's frankly an indictment of Data Engineering as a specialty that we've formed a consensus around such a poorly-designed piece of software. In fairness, no one has really gotten this right yet. I like Luigi but it has its own shortcomings and continued development is an open question. Sadface.
We're currently considering it as a self-hosted process engine to automate technical business processes and to coordinate a few automation systems like jenkins. Crap like, trigger a database restore via system A, wait until complete, update tickets, trigger some data migration from that database via System B, update tickets. Maybe bounce things back to human operators on errors and wait for fixing / clarification. Trigger a bunch of deployments in parallel and report on success.
Systems in this space are either (a) huge, hugely expensive enterprise applications designed to consume all business processes, which is a bit overkill for our current needs (Camunda, SAP, Stackstorm, ...), (b) overfitted onto a very specific data analysis setup (aka: if you don't have hadoop, don't touch it) or (c) overly simplistic and offering no real benefit beyond investing into self-hatred, guiness and making jenkins work.
Airflow seemed like a bit of a decent middle ground there for workflows a bit beyond what you can sensibly do via jenkins jobs.
If you can combine it with a library- or tool-style DAG system (vs. server-style like Airflow), like make or Luigi or NextFlow or even Step Functions, that is a great sweet spot.
If your DAGs get too complicated for makefiles, it's time to rethink and restructure your DAGs
If you want an Airflow-ish approach without punishing your future self, pick Prefect. Otherwise go with Temporal. Above all do not adopt Airflow for the use cases you describe in 2023
We're pretty much committing to python as our language of choice in the infra-layer. Most of the team is sent onto courses over the next month, too. So I have a whole lot of python scripts popping up over the infrastructure.
And this approach of slapping some @task and some @flow onto scripts or helper functions seems to work really well with what the team is doing. It took me like 30 - 40 minutes to convert one of those scripts into what seems a decently fine workflow. very intrigued.
There's not a lot of writing about this. Folks seem content to fight Airflow's deficiencies. Most of them are too young to know any better. The critiques you'll find are generally written by competitors, or folks adopting a competitor.
Here's the big one I see lots of folks get wrong: do NOT run your code in Airflow's address space.
Airflow was copied from Facebook Dataswarm and comes with a certain set of operational assumptions suitable for giant companies. These assumptions are, helpfully, not documented anywhere. In short, it is assumed that Airflow runs all the time and is ~never restarted. It is run by a team that is different from the team that uses it. That ops team should be well-staffed and infinitely-resourced.
Your team is probably not like that.
So instead of deploying a big fleet of machines, you are probably going to do a simple-looking thing: make a docker container, put Airflow in it, then add your code. This gives you a single-repo, single-artifact way of deploying your Airflow stuff. But, since that's not how Airflow was designed to work, you have signed yourself up for a number of varieties of Pain.
First, you are now very tightly coupled to Airflow's versioning choices. Whatever version of Python runs Airflow, runs your code. Whatever versions of libraries Airflow uses, you must use. This is bad. At one point I supported a data science job that used a trained model serialized with joblib. That serialization was coupled to Python 3.6 and some precise version of SciKitLearn. We wanted to upgrade Python! We couldn't! Don't use PythonOperator. You need separation between Airflow itself and Your Code. Use a virtualenv, use another container, use K8s if you must, but please please do not run your own code INSIDE Airflow.
Second, you cannot deploy without killing jobs. Airflow's intended "deployment" mechanism is "you ship DAG code into the DAG folder via mumble mumble figure it out for yourself". The docs are silent. It is NOT intended that you ship by balling up this mega-container, terminating the Airflow that's running, and starting up the new image. You can do this, to be sure. But anything running will be killed. This will be fine right up until it isn't. Or maybe not, maybe for you it'll be fine forever, but just please please realize that as far as Airflow's authors are concerned, even though they didn't say so, you are Doing It Wrong.
I kinda am on that bandwagon but at a new job we're using mongoose and mongo for our database, because the consultors that implemented the webapp before us decided so.
How do I convince mgmt that we might want to switch that? When? Is it even worth it or possible now that it's already our default?
There's a lot that I like and dislike with MongoDB. As a developer, it can be a relatively nice experience. As an administrator, I hate it beyond words. It really depends on your needs, entrenchment and the skills of your staff.
From a migration perspective, the presence of JSONB fields in Postgres, and much of the modern tooling around them, mean that you can even put a highly nested document structure directly into Postgres and have a clear migration path without rewriting code.
(Do note however that Postgres' JSONB overrides the key order of objects to have canonical object identity - it thus avoids pitfall #1 in https://devblog.me/wtf-mongo but legacy code may rely on that behavior.)
MongoDB was great when it worked; I've still never experienced as fluid a workflow as Meteor enabled, where either a client update or a batch process could update a document in MongoDB and it would immediately propagate to every other interested client. RIP - while there's an active community, the Meteor team went on to do Apollo GraphQL, whose real-time support is a shadow of that original developer experience.
That said, on that same project, I can say anecdotally that I was bitten hard by some of the disaster recovery and divergent-oplog issues mentioned in the meme-y https://aphyr.com/posts/284-jepsen-mongodb - granted, the software has improved significantly since then. But I'm of the opinion that a company developing database products can only shift its internal culture so much; such a "cowboy" mentality, one that led to releasing a database product with these glossed-over problems and unreliable defaults, never truly goes away.
Rewrites always require a cost-benefit analysis. Modern MongoDB (you are running a modern version, right?) may have addressed enough concerns that it's the right decision to stick with. But even for document database needs, there's no reason not to use Postgres for green-field projects.
There are many, many companies for which this decision won't matter too much.
I haven't yet used it, we are evaluating it though, and I'd love to hear from HN'ers that tried it
I heard that a year or two after I left the company got an Oracle Audit and ended up paying a huge penalty.
The support contract costs more than the "license" if my memory serves me, but its very expensive. If you're doing anything remotely complicated, using their advanced tools beyond a basic RDBMS (replication, clustering, etc.) then you need that support contract.
I really like data engineering in general - writing spark jobs, manipulating huge amounts of data, concerting pipelines, writing SQL... I just like it all a lot. I like SQL - there, I said it!!
But damn do the rough edges just burn you out. Airflow is one of those edges. IMO part of the problem is that everyone wants to hold it in a slightly different way, and so you end up with Airflow being this opinionless monster thing that lets you use it any way you want as long as it "works". And everything built on top of this opinion-less mess is of course also kind of a mess. And plus at a certain scale, Airflow itself needs to be maintained as a distributed system.
Spark is another one of those things with lots of rough edges. Some of it might've been the places I worked at were holding it all wrong, but Spark and all its adjacent context are so damn complicated you either have a small group of experts writing all spark code and you have to heavily prioritize what they work on, or you have a bunch of non-data-engineer folks writing spark jobs and kind of making it work sorta but it's all as inefficient as possible while still making it work, and it's really brittle as they don't know all the ways they need to think about things scaling.
Notably, I got really tired of people coming to our team and going "we wrote this big spark job, it worked fine up until it didn't, can you please help us fix it, it's mission critical". And it's just an OOM because they're pulling data into memory and have just been bumping -Xmx every 2 weeks for six months. or perhaps even worse, they were doing some wonky thing that wouldn't scale and then now they're running into weird errors because they used the feature so wrong (like, having a small dataframe with 1-2 partitions that then gets used in a subsequent stage that's HUGE and all the executors absolutely swamp the poor node or two that's hosting those partitions).
Anyway, it's easy to write a spark job that works at the time of writing, and really hard to make a spark job that will work 6 months from now.
Add to the fact that Spark is a giant money firehose, data engineering departments are constantly asked to sacrifice reliability to increase efficiency (just run everything hotter! who needs slack or buffer space?) and it just makes all the above issues worse.
SQL is the only, only tech thing I love. Other stuff might be fine tools to accomplish various goals but SQL is Good and Beautiful and True.
Are there specific use cases or experiences that prompt you to say this? I've seen a lot of examples (such as web analytics or SEIM) where teams have built very capable stacks on ClickHouse or similar analytic databases. Basically if you have a focused use case it's often possible to built a custom stack with open source on Kubernetes that outperforms Snowflake along axes like p95 response, cost-efficiency at scale, and data ownership. It would be interesting to hear more about your experience.
Anyway the specific thing I'm remembering about cost is a case where a data team I joined had built a (dumb) CI process that ran a whole DBT pipeline when a PR was opened. After a month or so we got a bill for something like $50k.
Snowflake's rack-rate pricing is $2/credit and an XS warehouse is 1 credit/hr. That XS warehouse is, allegedly, an 8-core/16GB(?) instance with about a hundred gigs of SSD cache, from a "c" family if you're on AWS. Of course since your data is in S3 (cache notwithstanding), you're likely to be network-constrained for many query patterns. BigQuery, which is unquestionably faster than Snowflake, proves that this can be done efficiently. But compare to Redshift (non-RA3) or ClickHouse where you have data in locally-attached disks, Snowflake just gets smoked. The only lever they give you to get more performance is to spend more money which is great for their bottom line but bad for you.
The pitch is that because you can turn it all off when you're not using it (which in fairness they make very easy!), the overall costs end up low. Ehhhhhhhhhhh, maybe. It only takes one person leaving a Looker dashboard open with auto-refresh enabled to keep a warehouse constantly online, and that will add up fast. Plus if you are being silly and building DW data hourly, as is popular, it's going to need to be on anyway. (Do daily builds! You don't need more than that!) Point being, the cost model you will get from sales reps makes very optimistic assumptions about utilization, and it is very likely you will be hit with a bill larger than expected. In practice while it is technically easy to control utilization, it is not actually easy because there are humans in the loop.
It has close to worst-in-class performance as a serving layer.
If you're creating an environment to serve analysts and cached BI tools, you'll have a great time.
If you're trying to drive anything from Snowflake where you care about operations measured in ms or single digit seconds, you'll have a bad time and probably set a lot of money on fire in the process.
I think there’s a lot of room for innovation here. Given 1+ data streams or ingestion locations, a bunch of SQL scripts, a DAG to orchestrate the scripts, and 1+ data destinations there are many different execution models that could be used but aren’t. You’ve only specified the pipeline semantics rather than implementation, so smart tooling should be able to automatically implement patterns like streaming or intermediate queueing without much further input. IMO that’s what DAG frameworks could be: “compilers” for your data pipeline, rather than orchestrators. There’s progress in the area but nothing that quite gets there yet AFAIK
I told them to please investigate using SQLite with an d3 bucket for storage. Their tools will run about 1x a month on automation, they don't need a full DB.
Due to some unfortunately placed warnings about SQLite in production (context matters too) they were discouraged from this path.
I didn't argue I just said "fine, use aurora" and I'm sure this will bite us in some unforseen way down the road, but that will be Infra issues and then it's my teams job to handle it.
Examples (including dead products and random tools you might not always put in the same league):
Aqua over GNOME3, GNOME3 over DWM/Windows, DWM/Windows over KDE, KDE over non-DWM/Windows Terminal.app over gnome-terminal over iTerm2 over urxvt over xterm over Windows Terminal over CMD.exe Sublime Text over Atom over vim over BBEdit over VSCode over nano over Notepad++ IntelliJ over Xcode over NetBeans over KDevelop over Eclipse over Visual Studio Safari over FireFox over Chromium over Chrome over Edge over Edgeium bash over zsh over csh over powershell over command.com Postgres over FoundationDB over MySQL over MongoDB over SQLite over Neo4J Terraform over SaltStack over Ansible over Chef over Puppet over PS DSC AWS over GCP over Azure Slack over IRC over Matrix over Signal over smoke signals over tin cans with a string over not communicating at all over MS Teams Kubernetes over Nomad over CloudRun over ECS over systemd units over SwarmThere are some scenarios where there is no 'one tool for everything', like creating a complex OCI image, a VM image using Packer, a VM using Vagrant, configuring a network appliance or configuring an end-user workstation.
Example: super complex OCI images that attach to a CI pipeline would be better served by native packaging tools (like Jib for Java projects), but re-packaging of existing applications might depend on how green the build is. You could do a bunch of shell scripting in a Dockerfile, but once that gets big enough you'll start to need to use functions and perhaps even function libraries that you source in, but at that point you're doing a re-invention of something like Ansible and SaltStack, so depending on existing modules, knowledge, time, experience etc. you might use those instead.
Compare that to non-packaged-deliverable things like network switches and routers; those tend to be long-lived (non-ephemeral) systems, and they tend to have various inconsistent APIs between vendors, models and generations. But you may want to exchange configuration inputs and outputs with other systems so your Cloudflare rules, AWS ALBs, AWS SGs, on-prem Palo Alto firewall and on-prem Cisco switch agree on the configuration, and in such a way that it can be validated and audited constantly and consistently. Not a single named vendor does it all, especially not in a consistent and useful way. But as long as there are providers for Terraform, you can (with Terraform).
Perhaps the best way to describe how I balance it (or try to) is: the more modern the API, the more declarative I'd want to manage it in code. Cloud APIs tend to sit on the most-declarative end of the spectrum and end-user workstations on the least-declarative (or: most-imperative) end.
While I have a couple of personal devices where I could go and customise everything as much as I like, it wouldn't port over to anyone I work with or any system I write software for, or any presentation I give, documentation I write etc.
Being more portable gives be better results overall than being specifically tailored to my preferences. I do default to light foreground and dark background colours wherever I go, but that is supported everywhere as far as I know, and has been the default on many platforms for long enough. (that said, I sometimes consult for complex/crazy situations and whenever you spot an xterm with black-on-white you know it's pain 'o clock).
Are flip phones worth a second look just because my parents prefer them over smartphones?
However, if someone told me their anxiety vanished the moment they switched to a flip phone, they might be worth a second look. Maybe.
Your take appears to be: "for an idiot reader who will do exactly what they're told, this information is useless". Well! The readers aren't idiots. Easy.
If everyone thinks A > B, and you seem to be the only person using B, then it might be worth your time to try out A. Sure, maybe you're happy with B, but there might be something you're missing that you don't know you're missing. If you try out A and decide you actually do like B more, that's fine.
Most people do prefer a Phillips screw over a slot screw, or PNG over BMP, but nobody has stated that here because the superiority is clear. If you like BMP over PNG, or MS Teams over anything, then you probably should explain.
There's culture too. I think Telegram, WhatsApp, and Viber, WeChat are all roughly equal. Similar goes for the browsers. Some countries are strongly Viber, while others are strongly WhatsApp, but this is more a product of marketing.
Though I kinda agree. The question was worded in a way to promote terse responses...
Selenium is a little old and verbose - the biggest issue, imo, is having to handle waiting for elements. Also managing webdrivers suck. Cypress is great for E2E tests but falls apart on edge cases, for example it can't handle multiple domains. Just requiring npm and not needing webdrivers is really nice for CI. Playwright is sort of a combination of both - fixes a lot of issues in Selenium but has the ease of use of Cypress. It is much less documented than Selenium though.
If I was starting a new project I'd use Playwright.
Most of the limitations are around 2 things - Cypress has its own JS runtime separate from the node process which causes weird (non-intuitive) behavior. The other thing is the hand-wavy way Cypress tries to pretend the code is not async. You can’t just write JavaScript and have it work the way you expect, you have to write Cypress-flavored JavaScript, which sets up lots of footguns for junior engineers and causes you to have to be extra vigilant on code reviews.
I have worked heavily with Cypress for years, and if I were starting a new project I would 100% choose Playwright.
It has for well over a year.
https://www.cypress.io/blog/2022/04/25/cypress-9-6-0-easily-...
The main issue with Cypress handling this is, from what I understand, one browser per domain which can cause huge memory usage (which Cypress already has an issue with). Once you try parallelising multi-domain tests you run out of memory on developer laptops pretty quickly :(
But yes ultimately you are right, multi-domain is available, it's just those edge cases that get you once you go beyond simpler cases.
I agree memory usage is an issue, I sure hope we can fix that. It's a hard problem with the frontend execution heavy model Cypress uses, along with the DOM snapshots consuming a ton of memory.
There is a `experimentalMemoryManagement` feature that might be of interest to you [0]. The reason this one is experimental is the implications are not fully understood yet, and as a mature software product, we can't just throw out a big feature and "see what happens", so to speak.
I understand not wanting to use experimental features, but this might be useful to your existing Cypress projects, even if you aren't using it for your new projects anymore.
[0] https://docs.cypress.io/guides/references/experiments
It’s a close race between AWS and GCP, but we wanted serverless because we didn’t want the hassle of touching anything kubernetes related. Unfortunately, AWS Lambda had some goofy limitations, like requiring every method to be post and only supporting single routes per container (this was my understanding at the time, it may have changed). On the other hand, GCP Cloud Run is built on top of Knative, which allows you to do serverless services.
Also, fuck Jeff Bezos.
I've used Evernote, OneNote, Apple Notes, and Notion.
I prefer Notion hands down.
I dislike OneNote. Poor syncing. Hard to keep formatting consistent. Can't link to notes easily. Web app is inferior to installed app.
I used to love Evernote, but then it got slow, which led me to eval the others. This ultimately led me to Notion.
Agreed on Google Docs (at least for design documents).
Sometimes I edit my markdown files in other editors like Bear (or web interfaces). Sometimes I draw handwritten notes on my ipad and insert them as images.
It all works pretty well.
The first is the 'de facto', which are widely adopted for various reasons, mostly marketing, market share, and marketing.
The second is the "alternative" options that serve as alternatives to the previously mentioned choices.
The remaining software falls into the third category, where the focus is on implementing improvements to the other two categories.
Rider, Visual Studio, VSCode. Just use Rider.
AWS, GCP, Azure. Never Azure. The rest doesn't matter.
A more obscure ref but Airbyte, Fivetran, Hevo. Totally avoid Airbyte and Hevo. Begrudgingly use Fivetran.
- Can't disable mouse acceleration via the UI. You have to use the terminal to enter a command to change a setting that sometimes gets overwritten on a system update. You can't disable scroll wheel acceleration at all without using 3rd party software.
- I hate the dock bar. I want each window of an app to be its own entry on the bar so I can easily switch from one window to a specific window with a single click. In MacOS, starting a second instance of an application that doesn't have a native method to do so is a total pain in the ass. Going to the Launcher to start the program just shows the existing instance of the application.
- Shitty defaults in general. Scroll wheel direction is backwards. Scrollbars auto-hide. The screen color shifts throughout the day.
- MacOS is based on UNIX but always feels like it's trying to hide that from you. The "root" user isn't capable of everything. There are directories in your home directory that even root can't access.
- Home/End keys move the cursor to the beginning/end of the document, not the beginning/end of the current line. As someone who uses those keys a lot in Windows, that behavior is aggravating. There IS a way to change this, but it's very non-obvious, and doesn't work in all programs.
- Muscle memory of using CTRL+X/C/V to cut/copy/paste will screw you up as a Mac uses their Command key which is where Alt is on a PC keyboard.
- Finder sucks. You can't cut/paste a file to move it, but you can copy/paste a file to copy it. To move a file in the Finder, you have to open two windows and drag it. The Delete key doesn't delete files.
Often times, things feel different just for the sake of being different and not because the designer thought it could actually improve UI/UX. Apple seems to very much tend to subscribe to the mentality that removing features is a feature.
Another infuriating weirdness is window focus. Alt(sorry, _command_)-tabbing to a window brings all windows of that application to the front, possibly obscuring other windows you have around. And if you switch virtual desktops to one with a fullscreen window while you have another window of that application open on another monitor, it won't focus the fullscreen one you just switched to but rather the other window.
Yeah, it sucks.
Text editors: I've used emacs, pico, nano, jed, vim, AE (UniData), ED (UniVerse), Sublime Text, VSCode, BBEdit, and countless others that I've forgotten. Sublime Text wins for simple edits of single files, vim wins when I'm ssh'd somewhere or at a terminal, and VSCode wins when I'm editing a collection of related files or doing development. ED and AE have a special place in my heart.
Databases: PostgreSQL, MySQL, UniVerse, UniData, OpenQM/ScarletDME, Sqlite, Oracle, MSSQL, Access. For relational databases, PostgreSQL for personal use and Oracle when someone else is paying for it. For MultiValue databases (UniVerse, UniData, OpenQM/ScarletDME) I like them all, but UniVerse was my first one and will always be special.
Browsers: I use Chrome, Edge, Firefox, and Safari roughly interchangably. Each one works better (for me) than the others in different contexts.
Observability platforms - Elastic / DataDog / Splunk / new era platforms
Incident management and alerting - PagerDuty / OpsGenie / FireHydrant
Status Pages - Atlassian / PagerDuty / new era platforms
Would be really keen to read someone's experience on Jira on-prem / Cloud / alternatives considered.
Virtual meeting platforms: Webex is by far the worst. Zoom is amazingly clunky given how much money they have to spend on it, but at least it generally works across various desktop & mobile environments. Meet is the most basic, but it "just works", and the features on web & mobile are identical (unlike some of the options). It also seems to have been undergoing the most consistent feature development over the past 18mo. Teams is perfectly fine on desktop if you're already bought into O365, but it's hot garbage from ChromeOS or if you're a guest.
Collaboration/productivity software for enterprise: O365 contains too many products, is too complicated, and afaict, nobody actually knows which is the right tool for the job. If it was just Word/PowerPoint/Excel/Access/Outlook + Teams it would be fine, but add in Sharepoint/Viva/OneNote/OneDrive/Forms/PowerBI/Publisher/Project/Bookings/Planner/Visio and nobody knows which tool is the right one for the job. Google Workspace can't hold a candle to Word/PowerPoint/Excel but arguably is much easier for normal people to grok. Trying to find files at an O365-using company is nearly impossible.
I have a similar setup, though with a height-adjustable desk. Instead of a piano bench, I got a simple stool from Ikea [1], which apparently they classify as "standing support". Works the same for me as you describe with the piano bench.
[1] https://www.ikea.com/us/en/p/nilserik-standing-support-black...
> Trying to find files at an O365-using company is nearly impossible.
100% agree. Microsoft's work has created millions of jobs in the "Sharepoint archeology" sector. David Graeber must be rotating in his grave.
Text editor, desktop: vim, still. I try new ones all the time. Vim is still most efficient at getting my thoughts out, particularly in editing.
Text editor, iPad: IAWriter. Very simple and clean markdown editor. I tried a _ton_ of these things, and I love IAWriter. You point it to a cloud storage folder.
I trialed a variety of VPN providers for a month rather than read reviews endlessly. I became a fan of Mullvad but I've have to switch recently because of their port forwarding changes.
Also listing that you have a strong preference for one over others isn't helpful without reasoning as to why.