Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: In which areas have you compared 3+ tools and formed strong preferences?
127 points by tikkun on Aug 1, 2023 | hide | past | favorite | 201 comments
For example:

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?




I've said it before, and I'll say it again. @dang Can we please ditch this very hard to read light grey OP text.

#828282 on #f6f6ef is only a 3.54:1 contrast ratio, well below the WCAG's 4.5:1 minimum for body text. Even on a pure white background it's only 3.84:1.


100% behind this change as well.

I get the reluctance to change HN and appreciate the consistency. But, in good faith, this one is a clear accessibility issue that needs to be addressed. I think a change to just get the contrast to minimal best-practices/standards would't compromise the platform.

Devil's advocate against myself for a sec: HN is a site largely used by engineers/technical professionals. We can be an insufferable bunch, especially in regards to change. Maybe the social fallout isn't worth the change and I just would't have the data/context to understand that...? Just throwing it out there. I may just not understand.


Increment it a couple hex at a time, no one will notice til it’s too late


Chaotic good, the best kind of good.


I always think OP's been banned or downvoted. It makes me sad and confused.


Whenever this is mentioned, it is usually the top comment (like this one I mentioned recently [0]), which shows that many reader agree. Yet, nothing's been done on this easy change for 10+ years. @dang, can you at least give a reason, like "too lazy", "we don't agree", "we don't like changes".

[0] https://news.ycombinator.com/item?id=36460399


There's a part of me that suspects that the arc compiler has bitrot to the point HN can no longer be rebuilt. Has pg even touched arc in a decade, or more? I don't think it was ever much more than a prototype in the first place.


I allways assumed it was put on heavily downvoted posts to kind of "hide" low quality content. TIL I suppose.


Heavily downvoted comments will be lighter grey. But text posts are always that same light gray.

I don't know why. It's awful.


I've always been under the impression that the poor contrast is to discourage text posts. Can't remember whether I've read that somewhere or it's just my own assumption.


That’s… evil, frankly. If you don’t want them, don’t allow them. Don’t cause discomfort for thousands.


Even if it is, it is not an accessible solution.

Edit: except it can’t be, since HN doesn’t actually allow downvotes on posts, only comments.


It's very ableist and dang doesn't suffer from old people eyes, yet.


It's on all text posts. Look at the "Ask HN: Who's Hiring/ Who wants to be Hired" posts.


Also get rid of near-invisible text for dead comments since you have to opt-in for seeing them


I think a good solution might be a way to highlight dead comments with the mouse and have the highlighting make the text readable.

I believe when I highlight a comment, the highlighting makes the background be a lightish blue. pick a highlight/text color that contrasts better with that?


Do what spoilers on Reddit are… black in black until click.


I do highlight them when I'm on desktop... But it's an extra step


Since we are suggesting changes: I often find myself deep in a thread and realize it is not interesting for me anymore. Moving "up" to the next "level 1" is difficult, I have to scroll and scroll and scroll, ah crap, I missed the right indentation.

Adding a way to get to the next root comment would be awesome.


I click “parent” and then collapse the thread to achieve what you want.

The nice part is the HN “remembers“ collapsed threads next time you load the thread so you can continue to ignore them.


Oh thank you thank you thank you - so many years with HN and I never knew that trick!

If someone jumped on an implementation - no more needed :)


Yes please, this is the first thing I could think of trying to read OP’s post (which I couldn’t finish reading because it’s too straining)


As heavy AskHN user I consider this fact as invitatio to put maximum effort in headline and to make the secondary text as short as possible. You put your comment here because this is a rare example when post with big intro gets so much attention. Please know that I love this choice.


Also get rid of near invisible text for dead comments since you have to opt in in seeing them


OLTP databases. I've used Oracle, MySQL, and Postgres in anger (in that order, historically), plus DynamoDB and MongoDB if you want to count those. I have to admit Oracle has some technical superiority but the pricing is insane. MySQL is a joke. MongoDB has zero use cases. Just Use Postgres.

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.


I've put a lot of time into Airflow and feel similarly that it's a huge pain and a risk to rely on it. I've replaced it with Temporal (https://temporal.io/) and while I don't have the breadth of experience with the frameworks you listed, I do think Temporal is a great replacement for Airflow.


I worked in Data Engineering for 6 years before recently deciding to at least take a siesta to write some "normal" software as a product engineer.

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.


> I like SQL - there, I said it!!

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.


> I guess my strong opinion is that Snowflake is massively overrated and it will perform worse and cost you more than you expect.

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.


It's trivially easy to beat Snowflake on latency because its latency is truly awful. It often takes 1-4 SECONDS end-to-end to run a query that touches just a few thousand (not million!) rows. In theory this is fine for OLAP but when you have a Looker dashboard with 20+ tiles, it becomes a serious problem. ClickHouse absolutely thrashes Snowflake at this, routinely running millions-of-rows queries in hundreds of milliseconds.

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.


Agree with this. Snowflake has best-in-class dev experience and performance for Spark-like workloads (so ETL or unconstrained analytics queries).

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.


Thank you. Much appreciated! I work on ClickHouse, and it's definitely the cat's meow for user facing analytics.


Can confirm that Airflow is a terribly designed system. So inflexibile and gotchas that only arise after a ton of development. AWS Step Functions are infinitely better and more simple.


Could you link some resources on critiques of Airflow? I have some colleagues using it and knowing of any impending footguns would be helpful.


The Prefect guys wrote this https://www.prefect.io/guide/blog/why-not-airflow it's something but far from comprehensive.

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.


The Prefect's blog post yield a 404 for me. Here is the WBM link: https://web.archive.org/web/20220702112732/https://www.prefe...


Thank you for this, this is a helpful guide to looking into some of these things further.


Color me very interested about footguns in Airflow as well.

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.


Please don't do this.

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


Prefect seems like a really good suggestion, thank you.

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.


Jenkins is honestly Really Good as a scheduling system. The best, frankly.

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.


In my experience Jenkins is like shell scripting- in the hands of hands of someone who understands its strengths and weaknesses and is very disciplined in how it is used and maintained, it's both performant and flexible. If you follow the path of least resistance it becomes a mess.


I agree. For some reason, Airflow really sucks at running something on a cron-like timer. I can't remember the all issues I had with it exactly (this was several jobs ago), but getting it to run a job at the same time everyday was a nightmare. One issue I do recall was that it treated the first run differently, basically ignoring your defined schedule. And I think "first run" meant every time Airflow was restarted. So if Bad Things happened if that job ran the wrong time of day, you had to add extra logic into the job itself to abort if it was being called at the wrong time. How they managed to make this so difficult is mind boggling. By contrast, Jenkins will reliably execute a job on a timer without issues.


Use makefiles for as long as you can..

If your DAGs get too complicated for makefiles, it's time to rethink and restructure your DAGs


An inherent problem with data engineering dag frameworks is that they are not directly integrated with the nodes, they live above the nodes. The nodes don’t know about the DAG and depending on the software they’re running they’ll have different semantics for checking if something is stuck, cancellation, etc.

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


Re OLAP: 100% agreement on Snowflake being a poor performer. BigQuery is Google-scale I guess which might be necessary but feels way over-complicated for most uses. I've only dabbled with ClickHouse but at every turn I've been impressed with their offering.


I’m surprised that naming a poorly-performing database “Snowflake” didn’t seem like an obviously bad marketing decision…


> MongoDB has zero use cases. Just Use Postgres.

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?


"Just use Postgres" is advice for choosing a database for a new project, it does not apply when you're already running something else in production successfully. In general I don't think it would be worth switching unless Mongo is causing significant tangible problems in your specific environment that Postgres would solve.


For one, compare https://jepsen.io/analyses/postgresql-12.3 and https://jepsen.io/analyses/mongodb-4.2.6 - similar vintages, entirely different levels of reliability.

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.


I think it deeply depends on how much variation in code is actually there to support the database(s). Along with how much data, how many collections, and how would you handle the migration and/or scaling with your proposed alternative? Is it worth stopping all feature development for weeks/months to migrate? How profit driven or constrained are you?

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.


Depends on your data and how it needs to be modeled and used, imo. If it’s sparse and interconnected then obviously SQL makes a lot of sense. But for data that is very document-like e.g. 10Ks you’d get from SEC EDGAR, then document based is suitable. I’ve found even with relational databases, sometimes you need to denormalize the data a bit to achieve performance benchmarks for complex queries, and there’s a tipping point where you may want to sync your data into something document-based like Elasticsearch to get improved search capabilities, too.


Doing the work to switch off may well be a worse idea than starting on it in the first place.

There are many, many companies for which this decision won't matter too much.


I love Postgres, but 100% of my humble use cases are better served by SQLite and I wish I realised that sooner.


I have a coworker who wanted to use RDS to store a single configuration table with a dozen or so rows.

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.


My first database was Informix, and that was a wonderful product. Better than Oracle in many ways. They had a great CLI interface and API. Unfortunately, Oracle had the mindshare and IBM acquired it.


have you tried mage ai for DAG/elt?

I haven't yet used it, we are evaluating it though, and I'd love to hear from HN'ers that tried it


Can you share for what kind of tasks you use DAG frameworks such as temporal?


How much did you pay for Oracle? Is it a one time payment or annual?


Some older context is they price per CPU core and I remember something like $10k/CPU core per year. This is from years ago and there were "enterprise" agreements in place and many millions of dollars being spent. I can't imagine they lowered prices other than maybe cloud offerings.

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.


We were paying over $1M/yr for it inclusive of support. One real production instance (with Veritas Cluster), one reporting instance, 3 dev/QA instances. This was circa 2012, when the company had roughly $300M/yr in revenue.

I heard that a year or two after I left the company got an Oracle Audit and ended up paying a huge penalty.


Not one time and based on different things. Don't look that way


Here is another workflow orchestrator for you to try: Flyte!


It's on my list for sure. The hard requirement of running on K8s makes me sad in advance, though.


I have compared about $400 worth of stationary supplies in the past two years, looking for office pens that work well for drawing.

My conclusion is that there are basically three that I will gravitate to, and to get qualities beyond that I'll turn to fountain, dip pen, or felt markers:

1. Bic Cristal, the world's most popular ballpoint. They've had decades to get the ink feeling just right(and they do tweak it every year) and it produces a nice, gradual dampening on movements without being slippery or scratchy. In the 1.6mm bold colors, you can also feel a distinct difference between each color. Oil paste has nice qualities for texture and value and it doesn't smudge easily - there's always a reason to want it around, even if isn't suitable as an archival art supply. Bic's other ballpoint models are also fine, basically just alternate bodies for the same ink.

2. Uniball 207+ Plus. The "+ plus" model is a new version of Uni's permanent gel ink. It's a terrifyingly consistent gel pen: the line doesn't skip often, it doesn't feel soapy like the original 207, nor is it scratchy like many competitors. It's a "default all-purpose pen" that makes a bold and dark line.

3. Uniball One F. Uni scores another hit here, but in a more niche realm. The Uni One ink is designed to sit at the surface of the paper and not saturate, which makes it extremely dark, comparable to dark india inks. As a general tool it has issues with skipping and is rather demanding of the paper, but it can make some remarkably delicate lines in 0.38mm when working slowly. It also scrapes off easily since it doesn't saturate. The F model has a higher weight at the tip which adds a bit of extra control.


Over the years I've had many of those but I often ended up preferring some for some tasks but overall using most of them.

Examples (including dead products and random tools you might not always put in the same league):

  Desktop Environments: 
Aqua over GNOME3, GNOME3 over DWM/Windows, DWM/Windows over KDE, KDE over non-DWM/Windows

  Terminal Emulators: 
Terminal.app over gnome-terminal over iTerm2 over urxvt over xterm over Windows Terminal over CMD.exe

  Editors: 
Sublime Text over Atom over vim over BBEdit over VSCode over nano over Notepad++

  IDEs: 
IntelliJ over Xcode over NetBeans over KDevelop over Eclipse over Visual Studio

  Browsers: 
Safari over FireFox over Chromium over Chrome over Edge over Edgeium

  Shells: 
bash over zsh over csh over powershell over command.com

  Databases: 
Postgres over FoundationDB over MySQL over MongoDB over SQLite over Neo4J

  IaC: 
Terraform over SaltStack over Ansible over Chef over Puppet over PS DSC

  Public Clouds:
AWS over GCP over Azure

  Communication Collaboration:
Slack over IRC over Matrix over Signal over smoke signals over tin cans with a string over not communicating at all over MS Teams

  Workload Orchestration:
Kubernetes over Nomad over CloudRun over ECS over systemd units over Swarm


What makes you prefer Terminal.app over iTerm2?


Mostly the default availability and native stability and compatibility with very Mac OS X and macOS release so far. I don't really need the terminal emulator to do much (i.e. I don't need to have it integrate with tmux or screen, do things with the prompt or 'react' to what's happening in the shell.

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).


That makes sense!


Why do you dislike KDE? It's a great conventional DE with everything customizable.


Where IaC is distinct from configuration management, what would be your preference for that?


I would use Terraform for anything that is provisioning and probably SaltStack for everything else.

There 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.


I've used all sorts of sit/stand desks and chair & swiss balls in all sorts of combos, but I've learned over time that I prefer a static height desk and a padded piano bench to sit on. Sitting on a bench rather than a chair with a back encourages much better posture [for me]. It also encourages me to get up and move around more because it's trivially easy to get up & sit back down from any angle.

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.


SharePoint is the quintessential example of feature creep run rampant. It's like MS didn't know what SP was supposed to be, so they let it be everything, and as a result, it's clunky and slow.


> I prefer a static height desk and a padded piano bench to sit on.

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.


I was thinking about trying it too, don't your lower back hurt? Or you get used to it?


The below is obviously my subjective opinion.

Operating systems: I mostly use Arch Linux personally. For work, though, I think it's hard to beat everyone in the organization being on macOS.

Databases: IMO, never use anything except for Postgres for OLTP needs. Also, you don't need a document store - you need Postgres (JSONB works well if you really need to store unstructured JSON). If you need to search, Elasticsearch/Opensearch just...works well. Never use MongoDB, ever. Even if it was reliable, easy to maintain and reason about, why do you need it? If you need a lightweight local database with OLTP capabilities for managing application state, use sqlite3. K/V store? Redis. Never had a problem using Redis at massive scale, just be smart about what you're putting there. Also works well as a message queue and pub/sub (Postgres actually works well here too). I've used Celery, ZeroMQ, and Kafka - they all work well too, no strong opinions about which one.

ETL/Data Processing/Workflow management: Lots of hate for airflow in this thread. I don't think it's as bad as people are saying it is, but I moved to Dagster and am definitely never going back to Airflow. Dagster takes a few hours to grok, but then it just makes sense, and is a lot easier to reason about. General data processing - a combination of polars, pyarrow, and ray. Store streamable source data in parquet, stream it to arrow while doing initial conversions. Memory map the files, process them in polars - distributed amongst ray workers, ideally abstracted through Dagster. Sometimes you have an existing data pipeline with some steps in spark. That's fine - orchestrate those tasks in dagster!

IDEs: I've tried them all. Nothing beats the JetBrains stack with the IdeaVim plugin - I end up using almost all the tools - PyCharm, IntelliJ, GoLand, CLion, DataGrip, WebStorm, and a few times I've even used PHPStorm and MPS as well. I keep VSCode around for...text editing mostly. Most of my bash scripts and config management is done through vim (vim is also the only good Haskell IDE I've found).


> Nothing beats the JetBrains stack with the IdeaVim plugin > I keep VSCode around for...text editing mostly.

Couldn't agree more. I would like an alternative to VSCode for text editing/viewing that has fast startup, basic syntax highlighting, tabs, and an auto-saving "unnamed files" feature, but a license for Sublime Text feels way overkill for what amounts to the equivalent of a throwaway notepad


Autosaving unnamed files is for some reason a feature not many tools implement. I think I've first seen it in Notepad++ and it just makes so much sense. The only thing I found that works like that without getting into sessions etc is Mousepad. It's also very fast to start. Don't know about highlighting. It probably doesn't exist. I would also give Kate a look. It's more capable than it looks at first and is my current note taking solution with a nested folder structure with md files. (It has recursive folder search and tree view of the folders. All I need)


I've been toying with JB fleet as an alt to VS code. It's certainly not on par yet, but for day to day light editing it's gotten good enough and has someil interesting differences.

The last few times I've launched VSC it's been way too many pop ups, notifications, dings, bells and wizzers that I almost forgot the task I opened it for.


3+ testing tools for websites - Selenium, Cypress, and Playwright.

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.


I agree with this, after you get past the simple happy path testing, working with Cypress is mostly just wrestling with Cypress and its limitations.

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.


> [Cypress] can't handle multiple domains

It has for well over a year.

https://www.cypress.io/blog/2022/04/25/cypress-9-6-0-easily-...


Not really, it was experimental and only released recently (end of last year?). You can't really build experimental features with potentially breaking changes or even a complete removal into a CI pipeline without a lot of risk.

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.


Hi, I work on Cypress (but not the multi domain feature).

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


Thanks for the info! I’ll check it out :)


I'm with you on this... I'd just assume use simple test/assertion library along with Playwrite/Puppeteer. May even push for straight up Deno as the test base and runtime for that matter.


- Postgres over mysql/mongo/sqlite, I'm yet to come up with a use case where Postgres doesn't fit well for a while, while mysql is considerably better than before, it just bit me again where I had to run `mysql_tzinfo_to_sql` before tz conversions work, guess what? others didn't had to do this.

- Github-actions over circleci/travisci/etc, while I miss features from time to time, github-actions adoption allows to easily find most workflows you can need, having it with github itself is also handy.

- Integration tests with a real database mounted by docker, some people complain that this is slow but its worth it given the confidence it provides, in-memory databases or fake databases could be appealing due to the speed but they are annoying to maintain and never behave like production.

- DigitalOcean over AWS/GCP/Azure, for most projects, DO is enough, its simple to use and predictable pricing is something I could never get from other clouds.


After using 3+ tools I often come to the conclusion that I don't really like any of them. I see the trade offs and choose something based on often superficial reasons.

I use Linux instead of Windows or macOS, because it allows me to tinker and I feel more free. But I do use ChromeOS, because machines are cheap, the experience is good and I get access to Linux thanks to Crostini.

While I use ChromeOS I don't really like Chrome and prefer Firefox. I've used Brave and Edge, but thinking how they are all Chromium with a twist is not that compelling for me. But Firefox has a killer feature for me with Simple Tab Groups, Containers and full uBlock Origin.

With editors I used many, but I'm mostly stuck with vim, because I invested in it in the past and it is almost always there or easily obtainable. Other than it VSCode is good, but I feel dirty using it.

From terminals I've used many, but find rxvt-unicode not getting in my way the most. Though often I just use xfce4-terminal, because it is there.

From Linux DEs I've used most. KDE/Plasma seems always buggy for me. GNOME is too strange. dwm and friends are very nice, but sometimes I don't feel like setting it up on a new machine/vm. Budgie was nice, but was too much tied to Solus at the time. Xfce4 is just there, reliable and pretty enough.


I've used Xero, QuickBooks, and Freeagent for microentity UK LTD accounts.

Xero is the champion of dark patterns and gaslighting when it comes to billing. The listed price fails to take into account their notice period and they won't let you export your data without resubscribing (with a notice period for the new subscription!).

I tried QuickBooks just briefly and didn't adopt it because I felt like the interface is hiding important details and doing things in the background that I want to be explicit and possibly done differently IIRC it wouldn't let me create an invoice without GBP conversion which isn't required for non-VAT invoices. This led me to creating my own invoice editor that I'm happy with.

FreeAgent has everything I need - bank feeds, streamlines the whole end of year process submitting everything to HMRC. It doesn't implant a vendor lock-in abstraction layer between the user and the accounts. Xero and QuickBooks feel like they are designed to be used exclusively by full-time accountants who specialize in their software package, whereas FreeAgent can be used by a founder educated in accounting who prefers to do the accounting on their own.


I use FreeAgent too, though it does have some limitations (for example, it only supports straight line depreciation over up to 7 years at a fixed percentage, and doesn't support diminishing value at all) the fact they don't force you up two additional tiers to bill on multiple currencies is great.


Cars are tools - I have had a "crossover", an SUV and a station wagon (called an estate here in the UK), in my case all Audis.

We got the crossover when we stated a family, it felt big and safe (compared to what I had before). However, the boot/trunk was too small for a growing family going on trips.

We upgraded to a large SUV, felt great to drive, big a tall. Masses of space to load up, however hard to park in small spaces (this is the UK), and far too expensive to run.

Now on an estate/station waggon, love it, favourite car I have owned. Cheaper to purchase than equivalent size suv as they are less fashionable, plus cheaper to run, cheaper tires for example. Far more fun to drive than both the others (and anything else I've had). Do not miss the height at all.


You can pry my Renault Kangoo from my cold, dead hands.

This car is a small box on wheels. It’s cheap to buy, cheap to run, and dead simple to maintain. I sometimes use it as a mini camper.


I wish they’d bring wagons back to the states. Nobody would buy them, which is why they’re gone, but they’re the most practical type of vehicle. I’ve had to settle with a 4 door pickup (which, arguably may be more practical but wagons look so goood).


I've used 3+ dictionary apps and I prefer this Webster's Writer's Dictionary app: https://apps.apple.com/us/app/websters-writers-dictionary/id...

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.


You can install the Webster 1913 dictionary as one of the dictionaries in MacOS and then use it anywhere the dictionary is available, including the cmd-crtl-D shortcut. https://github.com/cmod/websters-1913

I agree 100% about the etymologies.


Do you have any experience using Wiktionary, and if so, where does it fall on your spectrum? I personally use Wiktionary a lot because it seems adequate from what I tell and it covers all the multiple languages that I'm interested in.


I frequently use Wiktionary on desktop. I find it invaluable for tracing certain elements of etymology, but still largely prefer Etymonline.

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


These opinions are useless if the reasons are not stated. For example, you prefer iMessage over WhatsApp. Ok. Why? The UI? The exclusivity of the platform? Or is it just a whim?


They're not useless? If someone likes A > B and nobody likes B > A then you should give A a second look.


Because there's always a reason for different tools. I prefer nails over screws, but that doesn't mean you should only use nails for all your projects because some peeps on HN say they're superior.

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.


That's disingenuous. I don't believe you would pick something just because someone likes it. Almost everything that has been built is liked by somebody.

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.


Of course I wouldn't pick it just because someone likes it, but it's still... data. Data that I'll combine with other sources of data. It provides a small but non-zero amount of weight to one side. Aka it is not useless. If you see patterns in people's unjustified recommendations, it starts to be a lot more than non-zero.

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.


Who said anything about picking something just because everyone likes it? No, the statement was about trying something because everyone likes it.

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.


Eh, I just look at the rotten tomato number and rarely dig into reviewer details. I'm looking for a decent comedy that most people think is decent. I usually don't need your thesis.


The opinions are useful if you're a proactive person on the lookout for alternatives to try and have the time to spare to discover things on your own.

Though I kinda agree. The question was worded in a way to promote terse responses...


Fun one:

3+ Editors:

Emacs > Vim > Visual studio code

All three are great, emacs wins out on ethics, magit and org. LSP kinda sucked in emacs until the recent version, where it's been working absolutely great.

Team communication:

Zullip > IRC > Slack > Discord

Zullip wins with threaded convos + the ability to have mailing list mode so you can just use mail like god intended.

Desktop environments:

KDE > Gnome > OS X

I used to not enjoy KDE quite so much, but the recent versions have been extremely pleasant and I quite enjoy that everything can be tweaked and their new tiling solution. While I like Gnome's design ideas, I found the huge menus and long animations to actually bother and distract me.

Browsers:

Firefox > Qutebrowser > Chrome > Safari

But honestly their quite the same, ethics wise I like firefox but chromes dev tools are a bit superior.

Qutebrowser gets an honorary mention because it's UX is quite good if you know vim. The vim integration just works better than just using an extension in Firefox.

Wikis/journal/todo/GTD:

Org > Obsidian > Logseq > Keep > Trello

This is a funny one, on it's own Obsidian wins but Logseq has org support which means that I can use Org+emacs on the computer and then add entries to my journal on my phone as well. Works very well and is extremely good. Keep and trello are great for just throwing things like todos and articles into a list but afterward it's hard to do anything with it. There obsidian works as a better tool.


> LSP kinda sucked in emacs until the recent version, where it's been working absolutely great.

I assume by recent version, you mean Emacs 27.1, and that the improvement was because libjansson shifted JSON parsing from Elisp to C? Or was it something else?


GCP over azure and AWS. I got to greenfields my company into the cloud, but as such I felt compelled to cost/benefit comparison the three main cloud providers. I also looked into Heroku and Serverless as alternatives.

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 wooden pencils, mechanical pencils, ballpoint pens, gel pens, fountain pens, felt-tip pens, rollerball pens, dip pens, and more. For pencils, I've used harder and softer leads, thicker and thin.

For everyday writing, I prefer a good fountain pen that takes international standard cartridges. Nothing too lightweight, I need some heft, and generally a fine nib and good ink. I write left-handed, so it needs to absorb and dry quickly enough so that I don't smear.

For marking up things, like taking notes in the margins of a paper or book, I prefer a pencil a bit softer than the standard #2. Right now I have a Uni Mitsubishi Hi-Uni Pencil - 2B, well worth the price. Of course, you can't have a pencil without and eraser and a sharpener. For the eraser a white Pentel Hi-Polymer, and to sharpen, a KUM 2-hole long point AS-2.


I love this response. I'm now thinking of investing in a nice fountain pen and a soft pencil.


> investing in a nice fountain pen

online, the Goulet Pen Company is the place for you. https://www.gouletpens.com/


Operating systems. I use Linux, Mac and Windows regularly. I've decided that I prefer Linux, tolerate Windows and regret Macs.


As someone who prefers Linux, tolerates Windows, and has never used MacOS, I'm curious to hear why you regret MacOS.


Not the person you asked, but I'm in the same boat. I prefer Linux, but tolerate Windows because I'm a gamer, and I can't fucking stand MacOS. I'll give you my reasons.

- 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.


I recently started a new job and opted for a mac thinking "it's a unixy system, so it'll be more like my home linux setup". I have some regrets. The forced scroll acceleration is particularly intolerable; I had to find LinearMouse to get rid of that.

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.


You can actually cut/paste in finder - just little different. You copy a file with Cmd+C, then paste it somewhere with Cmd+Option+V (instead of usual Cmd+V) and voila you have cut the file.

Yeah, it sucks.


Regarding mouse acceleration, the upcoming macOS Sonoma adds the option to disable that to the UI.


I suspect parent meant he regrets the mac hardware. As in not being easier to use another OS on it.


Web servers: I’ve used Apache httpd, nginx, caddy and haproxy. Caddy is my favourite in local and in production, but haproxy is more powerful if no need to serve files.

Java web frameworks: spring, spring boot and quarkus. I’d go with quarkus or maybe spring boot.

Java unit test assertions: junit, assertj, Hamcrest. Assertj is much nicer than the rest. Use it with junit5 and jqwik too.

Interactive shell: bash, sh, zsh, fish, powershell. I recommend fish with fzf.

Scripting shell: bash, sh, zsh, fish, powershell. I’d go with powershell or bash.

Text editor: vim, emacs, sublime text, notepad++, gedit, geany, textmate. Sublime text first. (I recommend Sublime Merge as well for git)

Workflow engine: conductor, camunda, temporal. I’d go for conductor if you don’t want to write code, temporal for code and camunda for the ui.


> Interactive shell: bash, sh, zsh, fish, powershell. I recommend fish with fzf.

> Scripting shell: bash, sh, zsh, fish, powershell. I’d go with powershell or bash.

For me, the value in these is that both are the same thing. If I'm having to flip between bash and zsh conventions when iterating/smushing things together, I'd rather just uese python.


OneNote after trying many Markdown based tools including Obsidian. No other tool comes close in how fast it let's you dump down whatever it is in your head. It's like writing on a whiteboard or something. Click anywhere and write or paste. I have so much notes in there that now I want some kind of structured and linkable data support in it.


OneNote lock-in is crazy. I legitimately lost access to over a year of notetaking after my "complementary" OneDrive storage trial period ended despite having paid for a Surface that included OneNote. I shudder just thinking of going back to any note taking app that doesn't export my data in a portable format.


Agreed. But there isn't a single tool out there which offers free form writing and pasting like OneNote does. I have tried all I could find. There are may be one or two which let you click and write anywhere but that is all they do.

I was hoping Obsidian canvas will replace it, but it's not there yet.


I dropped OneNote when the feature to add subtabs to tabs was removed. It used to be great, but compared to Obsidian it's clunky, slow to load, and my files aren't right there on my disk and editable/parseable with the CLI (which I use a lot).

Yeah, sure, you can do local notebooks in OneNote, but the UI is so intent on trying to trick you into storing things in The Cloud. Lock-in bad. Markdown good.


I’ve used 3+ text editors on macOS (BBEdit, Sublime, VS Code, PyCharm), and prefer Sublime for my day-to-day work writing Python/JavaScript web apps, mainly because of fast code navigation and relatively fast typing speed.

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.


Web backends. I've used Flask, Django, Sinatra, and static site generators. Flask and Sinatra are great for simple APIs, anything more and you'll wish you had the structure of a larger framework. Django for database backed frontends. Static site generators for simple sites that have no need for persistence. Static sites can actually go further than you would expect at first glance, for instance, Obama's campaign website was backed by static HTML.


Horizonal bandsaws. I'm sorry but nothing compares to the American built ones. If only they could make one even smaller than the smallest Ellis saw.

Welders. It's hard to beat the convenience and ease of a MIG machine. This does not apply to flux core wires that don't use shielding gas though. I've never found one as good and easy to use as plain old gas shielding.

DAWs. Reaper is basically the perfect program as far as I'm concerned.


Welders: How does MIG compare to plain old Arc Welding? With 6013 arc welding electrodes, its possible to do sheet metal work too. Plus, no need to maintain a gas cylinder at hand.


It might be possible to do sheet metal with 6013 (and I've tried it) but it's so miserable I wouldn't wish it on my worse enemy. The thick slag that forms makes it impossible to see the puddle. MIG is significantly faster, easier, and requires less cleanup with a grinder for thin metal.

For thicker stuff, I've always liked 6011, but MIG is still a little faster and easier. I know for large scale industrial use (IE ship building) flux core wire feed with a shielding gas is faster that stick, simply because the welder doesn't have to stop and get a fresh electrode.


I'm not gonna say stick is inferior, it's not. Just everyone's got a preference and for me it's tough to beat the convenience and ease of a MIG machine.


I am way too worried about gas cylinder accidents. Otherwise, I agree with you that MIG really is the most versatile.

Thanks a lot for sharing the immaturity of flux coated gasless MIG wires.


Web browser: on the desktop, Safari still smokes everything else for speed, efficiency, and ergonomics.

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.


Any professional engineer choosing a solution has to do this and discuss the trade-offs. For example I was involved in a migration from Tensorflow and pyTorch and Go to Java at one big company.

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...


I've used Eclipse, Emacs, IDEA, jEdit, NetBeans, Vim (still do in a pinch), and VS Code for coding, and IDEA fits me much better than any of the others. Sane defaults, quickly getting up and running, intuitive and easily configurable keyboard shortcuts, usable mouse support, settings sync which Just Works™, the list goes on.


I've got a few.

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.


Front-loading cargo bikes: Riese and Muller Load 75.

I've also ridden the Urban Arrow extensively (ie, many week-long rentals). I've also done multple days with the R+M Packster, Douze V2, and a bunch of others. The R+M Load 75 is superior in every way as far as I'm concerned, but the suspension is particularly well-dialed; nothing else is even fit for comparison.

----

Guitar picks: Blue Chip TAD or Hense Happy Turtle (in whatever size you like).

I've used so many others over the years... Dunlop Tortex was my stage pick for years. D'Andrea Pro Plec also. Fender mediums. Literally a dozen others. But for speed and flatpicking finesse on a steel-string acoustic, especially for highly technical styles like bluegrass and trad, I've come to realize that spending $10-$30 on a pick is actually not unreasonable.

----

Guitar strings: d'addario XS.

I've also used - for years each - Elixirs and Martin SPs. The d'addarios just don't break as easily, especially G.

----

Instrument pedalboard switcher: I've settled for the moment on the Line6 Helix.

I've also used the Boss DS-9 and a few others. It's not a very fair comparison, and I use the Helix as an all-in-one solution, not just a switcher. But the thing that decides it for me is documentation. In fact, the Helix has very possibly the best documentation of any piece of technology, hardware or software, I've ever used.

----

Pointing device: Logitech MX Ergo.

Also tried the Logitech M570, and several designer mice over the years. The MX Ergo is heavy-duty, precise, wireless works reliably with either the dongle or via bluetooth, and it's easy to clean.

----

Gamepad: 8bitdo.

I've also used the logitech F310 and F510, several revisions of xbox controller, and a whole bunch of others. The 8bitdo pieces, especially the Pro2, are just way more rugged and precise. And comfy!


Notes App:

1. Obsidian is the best. Simplenote is a close one. Used OneNote over the years. And tried many others for at least some weeks.

2. MS PowerPoint is the best for making slides for talks/classes. Used Keynote and Impress seriously, too.

3. Used Windows, macOS, and Linux for very long times. Altgough Apple hardware in unparalleled, Linux as an OS does it for me. Endlessly tweakable at every level.

4. For learning fundamentally new things, nothing ever beats group study and group discussion. I have, as anyone else, studied alone, and in a class. Don't care about the quality of peers in study groups as long as they are motivated.


If Scheme implementations count as a tool, then (Tigger voice) comparing implementations by the dozen is what Schemers do best!

I'm partial to Guile and Gambit. Guile because it has comprehensive POSIX support and is an awesome glue language. Gambit because it has a compiler that emits fast code and an easy C FFI.

I prefer Emacs to all other text editors, but I frequently use whatever vi version is hanging around for quick edits and config changes.

VCS, the order goes Darcs, git mercurial, the rest.

Image editors, I dunno. GIMP, Krita, and GrafX2 I use at different times for different things.

8-bit micros: C64, TI-99/4A, VIC-20, everything else.


Not really an apple to apple comparison but I've used many programming language package managers (e.g. npm, pip, maven, bundler, cargo) and cargo is hands down the best one I've worked with.


Version Control.

Professionally, I've used git, perforce and PlasticSCM. Personally, I've also used SVN and Mercurial. (I also toyed with pijul's claims of being fast). I think Perforce sucks in many ways, but I think it's objectively a better tool than git. Centralized, immutable history, atomic incrementing change numbers are superior (IMO) to a decentralised, signed, hash based model. I think git's branches are a superpower, and the PR-style workflow in github is objectively superior to whatever trash P4 has put out there.

CI Tools - I've used Jenkins, TeamCity, GH Actions, Buildkite and Electric Commander. I strongly prefer Buildkite over all of the others. It strikes the right balance between Jenkins and GH Actions, mostly by avoiding a bunch of the "legacy" that comes with Jenkins.

"Programming Languages" - This is a spicy one. I flip-flop between C++, Kotlin and Go these days depending on the task. Despite the warts, I really really like go. It's a statically typed language, built in (and opinionated) package manager, wicked fast compile times, an order of magnitude faster runtimes than python, OOTB cross compilation support for full statically linked binaries, (and it has a jetbrains IDE). I wish it had _some_ extra features (sum types, real enums, and a slightly wider range of the basics in the standard library), but overall I'm very happy with it!


When I was a college student just starting my CS journey, I happened to bump into one of the founders of Perforce at an unrelated event I was attending. After chatting a bit, I asked him what he did, and he replied "These days, not much". "Oh, retired early? What did you do before?" "Well, you know version control software?" "Like Git?" And I'll never forget the the defeated sigh the guy responded with.


You can (and many do) purge items from the Perforce history.


Indeed, and it's useful. But, (and this is the most important part), it's a role based feature, not "standard day to day workflow", and it doesn't require everyone to handle as part of their mental model

A force push on a git repo is pain for everyone involved


Note-taking apps. It's TiddlyWiki+Obsidian for me so far. These are the ones that I think have the best chance of striking a good balance between powerful features and having the data useable as long as possible. At one point I was trying a lot of note-taking platforms to find a good fit for me like OneNote, Notion, Roam-research, Logseq, Athena, Evernote, Joplin, VS Code (Foam, Dendron, and built-in Markdown functionality), Org-mode (including Org-roam), Notable.app, SilverBullet.md, Google Keep, Simplenote, Trillium Notes, Zettlr, Standard Notes, etcetera.

Editors/IDEs. Unsurprisingly, it's VS Code because it's plug and play, easy to set up quickly. I've tried Jupyterlab, Jupyter notebook, Emacs, Neovim, Atom (RIP), and Notepad++.

Browsers. There's Edge (main) and Vivaldi. I've tried Firefox (including some tweaks for hardening it), and other Chromium browsers. Edge being native to Windows manages to eke itself a small advantage by not lagging my laptop so much when I have multiple tabs open plus other programs eating up CPU/RAM like OBS Studio, and background apps. I make do with NextDNS to limit the logs/tracking.


How do you use tiddlywiki alongside Obsidian? Why not just go all in on Obsidian?


I actually just like some of the plugins in Obsidian like the LaTeX suite for its snippets. I found it cumbersome to manage the Markdown files and I get reminded of that cumbersome feeling when looking at the file explorer. There's also that property relations are not a first-class citizen in Obsidian from the start. If I use Dataview then it's no longer just Markdown (and is specific to Obsidian), and relations are just better handled in TiddlyWiki (even with the recently released Properties pane in Obsidian).


> I've used 3+ code editors on MacOS and prefer sublime text over VScode, coteditor, xcode. Check out IntelliJ Ultimate, it's phenomenal. Startup time is slow though.

> I've used Chrome, Firefox and Safari all within the past year, and I prefer Chrome and Safari. Agreed. Sometimes I need different browsers for whatever reason, and for that you can use different Chrome releases (like Dev channel).

> 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.

ChatKit is really nice UI (if you are open to modding the css yourself, you can get a really slick interface pretty easily). Makes chatting pleasurable.

Typingmind UX is horrendous.

featuresets are different though

> I've used 3+ voice transcription apps I've been experimenting with a pipeline to use Recup and run it though my local Whisper instance so all data is on-premise

> I've used 3+ messaging apps, I like iMessage and Telegram Then you would love Chatkit. Also, telegram has web interface which is really useful (though Whatsapp does as well).

> 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 would go as far as to say objectively better based on certain metrics. But I suppose the bias in choosing which metrics makes it a "preference".

> 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?

* Alfred over spotlight, Launchy.net, LaunchBar * GPT-4 over all the other AIs including OpenAI's offerings


Spent the past few months on:

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.


I would love to hear your opinion on observability platforms, this is something I am starting to investigate.


WARNING: There are a lot of recommendations here that are very out of sync with hacker(news) ethos.

Does that mean you should ignore them? No. But as I read through the preferences on a lot of options, they are seemingly haphazard takes. For example, I'm seeing people saying facebook messenger is the best text chat client and MS Teams is the best video chat? These are among the worst options out there (even setting aside ethos, they're bug-ridden!).

Just be careful, I think many recommendations in this particular thread are limited in perspective.

edit: i wrote this because hackernews tends to be a "ground truth" for a lot of people when they are trying to form their own opinions on geeky stuff


ms teams is without doubt the worst


I’ve tried multiple translation apps for real-time translation between English and Korean, including Google Translate, Apple Translate, Microsoft Translator, and Papago (by Naver).

Surprisingly, Microsoft translator is the best for real-time translation. It’s still rough, but it’s able to keep up in real-time. Google doesn’t have the transcribe mode for the Korean-English language pair, and neither does Apple or Papago. Really surprised those other services don’t have it


The majority of software I have come across can be put into three categories:

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.


What are the benefits of categorizing software this way? Does this help in forming preferences?


I have used 3 types of money: cash, digital money and bitcoins. Digital money is an ugly idea, a lot of times the vendor took my funds out from me.


Notetaking app. I used Apple notes, Notability, Goodnotes, evernote, notion, etc. and finally set down on Obsidian.


Most of what you've listed I would consider rather mainstream surface-like things, which could be swapped out for another without much impact. When I think tools, I think frameworks, databases, programming languages.

Also listing that you have a strong preference for one over others isn't helpful without reasoning as to why.


Component frameworks. I've used first AngularJS and then Angular at work for ten years, evaluated React, and we've settled on using Web Components (built with Lit for the moment) in our Angular code for the long term.


Note taking apps.

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.


Notion introduced (me to) the idea of slash commands and block-based editing. Now there's many others.


Yeah to me the block system thing just makes a lot of sense


Methinks it's all boiling down to some kind of lingua franca for document structure. Altho things like footnotes and tables of content will not fit. Not RSN anyways.


I liked notion but then it too got slow as it added enterprise features.


Out of curiosity have you ever looked into Obsidian? Not that I think it's a replacement or superior but I feel that it's in the same space.


I have used it and if you take time to customize it, it surpasses all the other options simply because you can do whatever you please with your data.

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.


Not GP commenter, but I've used Apple Notes, emacs org-mode, Evernote, Notion, Coda, Obsidian, and Google Docs. I prefer Apple Notes for personal notes, and Google Docs for shared notes, and Notion for ones that I publish as web pages.


Is there a strategy in apple notes to better organize/reference other notes? I'm pretty new to the Apple ecosystem and don't really grok it.

Agreed on Google Docs (at least for design documents).


Tbh I reference other notes by manually writing their name. I don’t do it much, if I was going to do a lot of that I’d use obsidian.


Cloudformation, SAM, Terraform, AzureRM. Terraform by miles and miles, then SAM. I mostly won't work in CF anymore.

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.


Podcasts apps on iOS: I prefer Castro over Overcast, Pocket Casts and Podcasts.app.

Castro’s concept of show → episode → inbox → queue is unbeatable for me because it’s uncomplicated but still powerful. Sideloading is solid. Audio enhancements are high quality.


I am used 3+ Vector Databases (Pinecone, qdrant, and pgvector). I prefer Pgvector by miles.


that's bizarre. What's your QPS and corpus size?


It's slower, but once you are out of the toy project stage and you are trying to sync 2 databases - where relations get changed and logic gets updated, it is really hard to keep multiple DBs synced.

Factor 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.


What kind of queries over structured data do you use Postgres for? We're looking to see how we should broaden our metadata filtering to potentially support usage patterns for developers like yourself.


[ANDROID VERSION]

Architecture: MVVM > MVP, MVC (aka none), MVI >>> "clean architecture"

Strong preference here. You split the app into UI (View), UI logic (ViewModel) and Domain+Data (Model). UI handles how its seen and interacted with. Logic is handled in its own domain but you should pass minimal data to the UI and let it figure that out. Models are probably the most important to decouple, lets you switch from local, cache, or network data sources seamlessly.

Everything else is a mess. MVI is interesting but outdated. MVC is too tightly coupled that you can't do anything, not for tests or whatever. MVP is unnecessarily coupled. "Clean" is far too decoupled that it easily evolves into a monolith when a few hacks come in.

Observables: Flow > LiveData, RxJava, none

Flow is simpler and easier to mass adopt than RxJava. It does the same. It combos very, very, very nicely into Compose, which is where the winning advantage is. The others are not bad, but basically Flow lets you treat encapsulate the logic within the variables themselves, rather than dotting the whole code with if/else statements.

UI: Compose > classic XML >> data binding XML

Data binding absolutely sucks in production. It adds MINUTES to build time. Doubly sucks because with UI you're usually doing things like tweaking text, color, padding, and you want those fast iterations.

Compose's killer feature is getting rid of adapters, which can account for half of the development time in some places. Since everything in modern apps is a list. You no longer have to think about optimizing it, you just tell it to cache if you need it cached, then think about how to display it. And like data binding, you can encapsulate how data is displayed into the UI component itself. So you just pass something like state=ACTIVE to the UI and it decides what it wants to look like without you having to pass things like color.


Performance testing. I'm familiar with gatling, jmeter, locust, but k6 is definitely the winner. Take locust if you strongly prefer Python over JS, TS or Go. If no preference towards Python, k6 is your answer.


https://numbr.dev is a smart calculator


Compared Monodraw, asciiflow, and Vim DrawIt plugin and prefer Monodraw.


I didn't even know that was a thing! Cool.

Reminds me of the ascii art video codecs!


VPN providers.

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.


  Databases:
    PostgreSQL, mySQL, MongoDB, DynamoDB, SQL Server, SQLite.
    Preference: SQL Server for big stuff, SQLite for small stuff or prototyping.

  Editors:
    Notepad++ (Linux), TextEdit (macOS), Sublime (macOS, Windows, Linux), Nano, Vi, Vim
    Preference: Sublime followed by vi/vim if stuck in a shell.

  File Finders:
    PathFinder (macOS), Directory Opus, Finder, Windows Explorer (10 & 11), and a few different ones on Linux.
    Preference: Directory Opus on Windows, PathFinder on Mac

  Desktop Operating Systems:
    Windows 10 Pro, Windows 11 Pro, latest macOS, Ubuntu, CentOS, FreeBSD.
    Preference: Windows 10 Pro, followed by macOS, and Linux a distant 3rd.

  Desktop user interfaces:
    Windows 10 Pro, Windows 11 Pro, latest macOS, KDE, GNOME, couple of others in Linux.
    Preference: Windows 10 Pro, followed by macOS, and Linux a distant 3rd.

  Calculators:
    Speedcrunch, OpalCalc, SoulVer, Windows Calculator, bc.
    Preference: SoulVer, OpalCalc, Speedcrunch.
    Honorable mention: RealCalc on mobile.

  One-to-one messaging:
    Telegram, WhatsApp, iMessage, SMS, Google Messages
    Preferemce: Telegram

  Group or work messaging:
    Slack, Discord, Teams
    Preference: Teams, then Slack.

  Version Control:
    Mercurial, SVN, CVS, Git, Perforce, AlienBrain (defunct now)
    Preference: Perforce followed by AlienBrain followed by Mercucrial

  DVCS repo websites:
    Gitlab, self-hosted gitlab, Perforce self-hosted, Perforce hosted, github
    Preference: Perforce self-hosted, followed by github.

  VM hosts:
    VMWare Workstation, VMWare Fusion, VirtualBox, ProxMox, VMWare ESXi
    Preference: VMWare Workstation followed by ESXi.

  Chrome, Firefox, Edge, Safari, Brave.
  Preference: Firefox & Firefox mobile, Chrome

  Search Engines:
    Kagi, Google, DuckDuckGo, Bing, a few others.
    Preference: Kagi

  PDF Readers:
    Chrome, Firefox, Adobe, Foxit, PDF Reader Pro, Edge
    Preference: Edge

  Languages (only those I've used in the past 2 years):
    C, C++, C#, ARM Assembly, Rust, Python, Ruby, Typescript, JavaScript, VisualBASIC.
    Preference: Typescript, Ruby, C#, Python (and I never thought I'd ever put a "scripting" language before my beloved C/C++/C# languages)

  Coffee:
    Starbucks, Trader Joe's, Illy, Groundworks
    Preference: Groundworks, with Illy in a pinch.

  Shells:
   fish, zsh, bash, csh, few others
   Preference: Fish and fish in Bash compatibility mode.

  Code Editors (just those in the past 2 years):
    Jetbrains (pycharm, rubymine, intellij, dataspell, Rider, etc, etc), VSCode (Linux, macOS, Windows), Visual Studio 2017 & 2019 & 2022, XCode
    Preference: Visual Studio 2022 with latest intellicode disabled, followed by Jetbrains
   
  Clouds:
    AWS, Azure, GCP
    Preference: AWS
Now watch all the Linux lovers/Windows haters down vote personal preferences.


I'm not saying you're wrong, but I bet you're the only person on HN with a preference for Teams over, say, semaphore flags.


VS22 > jetbrains is surprising to me. Care to share why? I'm also curious why Linux is so far down and windows is your favourite.


Why SQL Server?


Messaging apps: Messenger

Music & podcasts: Spotify

TODO lists & note-taking: Text files

Quick backend: Firebase


Please don't take this as a personal attack, but this list looks like you used the very first option presented to you and then never explored any other options. (maybe this is a woosh)


Linux' LXD, HardenedBSD's Jail, illumos Zones


React state management solutions, here's my comment from last year: https://news.ycombinator.com/item?id=34133879

tl;dr prefer Context but wish I could move everything to Mobx.


It's funny, I actually prefer Redux + Thunks the "hard way" (not RTK). I find it's far easier to reason with the state, transitions and events that way. It takes a bit more cognitive overhead getting started, but the complexity doesn't grow as features do.


Redux (even with RTK) has so much boilerplate it's not worth it anymore. I'm stuck with a bunch of legacy code but slowly moving it to Context.

If you want actions and reducers just use the hooks versions for those + Context.


I find that using Context+useReducer is similar, but in the end you wind up with a lot of useContext and/or overlapping usage of different context/providers that the general single redux context is often better overall. Not to mention, that you still have to deal with the action generation and state in the scope of context, which gets even more messy with different Context usage in practice.

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.


My issue is that in the worst case you end up with Redux-like constructs. If your context setup gets so complicated as to require global-like store and extraction of actions and reducers into specific files, you end up with Redux.

In the mean time, you can avoid that.


> but the complexity doesn't grow as features do.

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.


Email clients.

Back in 2017-2018, I tried about 8–10 Linux email clients, for use on openSUSE.

Thunderbird is by far the best. It’s the most complete, the most flexible, and the most capable, and it integrates well with various email hosting services as well as shared calendars and address book services.

I tried Evolution (it's very tied to GNOME and the GNOME way of doing things; it's noticeably MS Outlook-like, quite complex, and I couldn’t get calendaring and other things working.)

I also tried Balsa, Geary, Nylas/Mailspring, Sylpheed, Claws, GNUstep Mail, KMail, and others.

Sylpheed is nice and simple but misses vital functionality for me.

Claws is a bigger, slower, over-complicated version of Sylpheed, and rather than missing vital stuff, it’s festooned with every little option someone somewhere wanted. And _still_ misses important stuff. I stayed with it for a month or two, but its lack of threading was a nuisance. As soon as it starts to check for mail, you must wait: you can't read, let alone compose or edit or anything else, until it's done.

The others are, to me, basically toys. :-( They may look nice or have some unique UI feature, but in terms of filtering, spam detection and handling, multi-account support (because who has just 1 email address in the 21st century?) or some other significant important feature, they are lacking.

I dislike formatted mail. https://useplaintext.email/ is absolutely right. Read it, and learn something.

I would not hate an email client that enforced incoming mail to plain text, or minimal markup: bold, /italic/, _underline_ [note that HN will screw this up], and nothing else.

But it breaks some emails. That rules out some clients for me.

However, I actively want my client to enforce plain text replies. Always, no exceptions, strip everything else out.

Since that experiment, I have been back on Thunderbird, which after some 20 years, still has not been beaten for me. I have been using it since it was the mail component in Netscape Navigator, before Firefox existed. It’s mature and it works. It’s a bit clunky and a bit big, but it needs to be to do all the stuff it does.

I’ve also tried a number of proprietary clients, from MS Internet Mail and News (later “Outlook Express” but unrelated to Outlook), Outlook itself, Apple Mail and others. MS IM&N was pretty good. Outlook is a horror. Apple Mail is OK but does not work the way I like.

All the others are specific to one OS, usually Windows (e.g. The Bat), or ancient (Pegasus), or unmaintained (Eudora).

Thunderbird remains the best there is.


Desktop environments: I've used Windows, macOS, GNOME1, GNOME2, GNOME3, multiple versions of KDE, twm, wmaker, and a half-dozen others. I really enjoy GNOME3 and the degree to which it simply isn't a point of concern and Just Works. It needs a little bit of non-default configuration, but so does everything, and I do that bit of configuration via my git homedir.

Laptops: I've used Sony, Dell, and IBM-then-Lenovo ThinkPads; ThinkPad every time. Very eager to try Framework the moment it has a touchpad with real physical mouse buttons, though!

Browsers: I've used Firefox, Chromium, and GNOME Web, and it's no contest: Firefox, every time, for both features and needing meaningful competition in browsers/engines. With uBlock Origin, of course.

Ad blockers: I used, sequentially, Adblock, Adblock Plus, and uBlock Origin. Adblock Plus and uBlock Origin are both good, and uBlock Origin seems subjectively faster and doesn't have the "acceptable ads" contradiction-in-terms garbage.

Search engines: I've used Google, DDG, and a dozen others over the years, and stuck with DDG. Very happy with bangs, no ads, and generally the feeling of less invasive results.

Email servers: I've used various ISPs over the years, I've used Gandi, I've run my own, and I now use Fastmail. Highly recommend Fastmail.

Mail clients: I've used Thunderbird, Evolution, mutt, K-9, and a couple of webmail clients, and I prefer the combination of mutt and K-9 to deal with the sheer volume of mail I deal with.

Editors: I used Emacs extensively for years, then switched to Vim, and have also tried various IDEs over the years. Stuck with Vim. My argument: optimizing basic text operations provides a substantial win, everything else (and there's plenty of "everything" to be had) is gravy on top.

Version control systems: I used, in order, CVS, SVN, tla/baz, Mercurial, and git. I found git both more usable and more powerful. The staging area is a great feature, `rebase -i` is a superpower, and having a clear idea of the underlying data model feels much better than having it be opaque.

Build systems: I've used a huge number of these over the years, including Make (and many variations), autotools, non-autotools configure scripts, CMake, Meson, Ninja, Scons, ./build.sh and many variations on bespoke shell scripts or Python scripts, several language-specific package managers including setuptools, pip, cabal, npm, Cargo, Debian packaging infrastructure, and a couple dozen others. My general conclusions are to avoid CMake, to use your language's package manager for building if it's remotely possible to integrate with Linux distro packaging, that opinionated tools are generally nice if you like the opinions and terrible if you don't, and if your language is C or C++, try to use the simplest thing that could possibly work and handle dependencies, including raw Make.


> DDG [...] no ads

DDG does have ads, though? Perhaps they're less common and less intrusive than on Google, and only appear for searches that can meaningfully have ads related to them (e.g. if I search for "thinkpad" I get one). But they exist.

Unless your ad blocker is blocking them. But, to be honest, I personally rather let DDG show the ads. I want them to have their income.

I also generally use DDG first, although Google is better for me at local results or non-English searches, so I sometimes do those on Google. It has also sometimes seemed like more complex searches with OR clauses or something similar work better in Google search.

Also, while Google isn't particularly good at returning exactly what I search for nowadays (it used to be better, nowadays it seems to guess too much or return what Google wants you to want), I don't feel like DDG is better at that either, and sometimes I seem to need to run e.g. searches for error messages on Google instead of DDG because of that.

But for most general searches, DDG does fine.


With or without an adblocker, DDG gives you a checkbox in their preferences to disable ads.


Ah, right, I didn't remember that.


"I've used Chrome, Firefox and Safari all within the past year, and I prefer Chrome and Safari."

Those are all Safari under the hood aren't they?


That's only on iOS. Chrome and Firefox on macOS use their own rendering engines, just like on other desktop operating systems.




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

Search: