Because a great many people prefer JavaScript to Perl, or at least know JavaScript better than Perl.
A use case would be using Pulumi for provisioning and zx for configuration, deployment and automation, with common libraries between both.
I gotta admit JS leaves me wanting when it comes to really basic stuff like list comprehensions and dictionary syntax, but being able to throw together an async-y tool to run stuff in parallel cleanly, for example, is a pretty great party trick.t
For example, you can easily make your build scripts just follow their dependencies cleanly without having to go full Bazel to get the proper speed boosts you might want
Who are “the vast majority of users”? The majority of users of this specific web browser, all of whom are probably programmers and therefore probably don’t need or want a GUI to program their macros? Or the vast majority of computer users, a group of people who absolutely do not care enough to learn how to use a web browser with macros programmed in lisp of all things?
Well, many people have learned Excel, what will stop many people from learning a simple macro interface in Nyxt? If it provides them great benefit at low cost, I think many people will do it. At least I hope they will :-)
It’s old-ish but still relevant. And the layout of the SQLite website doesn’t make it super easy to find some of the interesting content therein — I don’t think I saw this article until after I’d already written my own filesystem-based small-blob store, several years ago.
“They are the 🔋🔋 included with Bash”
I stopped reading here because it was so hard to tell what emoji this was that I had no idea what the sentence was saying. Stop using fucking emojis in technical writing.
My apologies for reducing the readability, I thought it made the analogy a bit more tangible, but I’ll pull it out.
The tone of the parent comment is needlessly harsh, but I agree with the sentiment.
I appreciate greatly that you accepted the feedback even though it was delivered so poorly.
This is also a good post generally so please don’t let nit-picking get you down, the world is better for this writing to be out there!
“devops” and “fullstack” are “we need a name for when we try to hire one person to do the work of three people so we can save money (read: pay executives more money)”
I always find the term ‘full stack’ amusing because it’s always said by folks that work on such a tiny bit of the stack. My group does CPU ISA design and prototype implementation, compiler implementation and language design, OS design and implementation, and occasionally does some application things. Occasionally ‘full stack developers’ see our job ads and quickly realise that they don’t actually know anything about any of the layers of the stack that their code runs on.
That’s one way of looking at it. Another way is “we need these three people to all work together as a team rather than belonging to separate silos in the organization”.
If a company adopts your definition, one should run away from it quickly (or ask for more money up front).
The point I’m making is that it’s literally impossible to know the definition because it differs from person to person.
Interviewer: Any questions?
Me: Sure. This is considered a devops role. Can you tell me about the philosophy of devops at your company? How does it work here?
“What does DevOps mean to you” is actually something I ask.
But why should I ask it, and why should it get to that stage?
We should just fix the terminology to be universally agreed.
The model got this right 43% of the time on the first try, and 57% of the time when allowed 10 attempts. And it’s getting smarter all the time.
43% chance of getting it right and you have to try 10 times for it to just have over a 50% chance? What the hell
How will GitHub Copilot get better over time?
GitHub Copilot doesn’t actually test the code it suggests, so the code may not even compile or run. GitHub Copilot can only hold a very limited context, so even single source files longer than a few hundred lines are clipped and only the immediately preceding context is used. And GitHub Copilot may suggest old or deprecated uses of libraries and languages. You can use the code anywhere, but you do so at your own risk.
They didn’t even answer the question?
OpenAI Codex was trained on publicly available source code and natural language
I have zero trust that throwing a ton of code from randoms into a blender is going to give anything meaningful beyond a couple of “Ooooooh” demo examples but go off I guess.
This strikes me as the same “it may not be perfect just yet, but trust us, it will be if you just give us enough time” of the self-driving car hype. Completely ignoring reality…
They didn’t even answer the question?
To be fair, it’s not a fair question they asked themselves. They’re not psychic, I’m sure they hope it will get better.
Not compiling/running actually suggests some obvious paths forward in the development, train it against generating samples that don’t compile, stick a filter on the front end that filters out samples that don’t compile. Maybe that’s why they started talking about it?
Okay but it literally reads like the answer to that FAQ question is intended to be the answer to a completely different question. It’s entirely non-sensical in the context of the question. Even if they were going to tangentially answer the question, I’d expect that they would somehow bring the tangent back around at the end and make it somewhat related. It seems like they’re answering the question of “is it safe to use this code”?
I have zero trust that throwing a ton of code from randoms into a blender is going to give anything meaningful beyond a couple of “Ooooooh” demo examples but go off I guess.
There’s more going on here than just tossing random code.
So not strictly related to the content of this specific article but: what’s with the term “footgun”?
The phrase “shooting yourself in the foot” does not mean there’s some magical gun always aimed at your foot called a “footgun” that goes off unexpectedly. It means you mishandled something and made a mistake. The term “footgun” makes it sound like the interpretation is “ah, there’s literally nothing I could’ve done to prevent this ¯\_(ツ)_/¯” when that is, in general, not the case.
A footgun is a common term, it’s for when something seems to be explicitly designed for a user to shoot themselves in the foot with. The design of the gun leads itself to mishandling. In this article, Docker port exposure is a footgun, since in normal usage it bypasses the firewall completely, which is a dangerous default behavior that the user does not expect.
It would help if Firefox would actually make a better product that’s not a crappy Chrome clone. The “you need to do something different because [abstract ethical reason X]” doesn’t work with veganism, it doesn’t work with chocolate sourced from dubious sources, it doesn’t work with sweatshop-based clothing, doesn’t work with Free Software, and it sure as hell isn’t going to work here. Okay, some people are going to do it, but not at scale.
Sometimes I think that Mozilla has been infiltrated by Google people to sabotage it. I have no evidence for this, but observed events don’t contradict it either.
It would help if Firefox would actually make a better product that’s not a crappy Chrome clone. The “you need to do something different because [abstract ethical reason X]” doesn’t work with veganism, it doesn’t work with chocolate sourced from dubious sources, it doesn’t work with sweatshop-based clothing, doesn’t work with Free Software, and it sure as hell isn’t going to work here. Okay, some people are going to do it, but not at scale.
I agree, but the deck is stacked against Mozilla. They are a relatively small nonprofit largely funded by Google. Structurally, there is no way they can make a product that competes. The problem is simply that there is no institutional counterweight to big tech right now, and the only real solutions are political: antitrust, regulation, maybe creating a publicly-funded institution with a charter to steward the internet in the way Mozilla was supposed to. There’s no solution to the problem merely through better organizational decisions or product design.
I don’t really agree; there’s a lot of stuff they could be doing better, like not pushing out updates that change the colour scheme in such a way that it becomes nigh-impossible to see which tab is active. I don’t really care about “how it looks”, but this is just objectively bad. Maybe if you have some 16k super-HD IPS screen with perfect colour reproduction at full brightness in good office conditions it’s fine, but I just have a shitty ThinkPad screen and the sun in my home half the time (you know, like a normal person). It’s darn near invisible for me, and I have near-perfect eyesight (which not everyone has). I spent some time downgrading Firefox to 88 yesterday just for this – which it also doesn’t easily allow, not if you want to keep your profile anyway – because I couldn’t be arsed to muck about with userChrome.css hacks. Why can’t I just change themes? Or why isn’t there just a setting to change the colour?
There’s loads of other things; one small thing I like to do is not have a “x” on tabs to close it. I keep clicking it by accident because I have the motor skills of a 6 year old and it’s rather annoying to keep accidentally closing tabs. It used to be a setting, then it was about:config, then it was a userChrome.css hack, now it’s a userChrome.css hack that you need to explicitly enable in about:config for it to take effect, and in the future I probably need to sacrifice a goat to our Mozilla overlords if I want to change it.
I also keep accidentally bookmarking stuff. I press ^D to close terminal windows and sometimes Firefox is focused and oops, new bookmark for you! Want to configure keybinds for Firefox? Firefox say no; you’re not allowed, mere mortal end user; our keybinds are perfect and work for everyone, there must be something wrong with you if you don’t like it! It’s pretty darn hard to hack around this too – more time than I was willing to spend on it anyway – so I just accepted this annoyance as part of my life 🤷
“But metrics show only 1% of people use this!” Yeah, maybe; but 1% here and 5% there and 2% somewhere else and before you know it you’ve annoyed half (of not more) of your userbase with a bunch of stuff like that. It’s the difference between software that’s tolerable and software that’s a joy to use. Firefox is tolerable, but not a joy. I’m also fairly sure metrics are biased as especially many power users disable it, so while useful, blindly trusting it is probably not a good idea (I keep it enabled for this reason, to give some “power user” feedback too).
Hell, I’m not even a “power user” really; I have maybe 10 tabs open at the most, usually much less (3 right now) and most settings are just the defaults because I don’t really want to spend time mucking about with stuff. I just happen to be a programmer with an interest in UX who cares about a healthy web and knows none of this is hard, just a choice they made.
These are all really simple things; not rocket science. As I mentioned a few days ago, Firefox seems have fallen victim to a mistaken and fallacious mindset in their design.
Currently Firefox sits in a weird limbo that satisfies no one: “power users” (which are not necessarily programmers and the like, loads of people with other jobs interested in computers and/or use computers many hours every day) are annoyed with Firefox because they keep taking away capabilities, and “simple” users are annoyed because quite frankly, Chrome gives a better experience in many ways (this, I do agree, is not an easy problem to solve, but it does work “good enough” for most). And hey, even “simple” users occasionally want to do “difficult” things like change something that doesn’t work well for them.
So sure, while there are some difficult challenges Firefox faces in competing against Google, a lot of it is just simple every-day stuff where they just choose to make what I consider to be a very mediocre product with no real distinguishing features at best. Firefox has an opportunity to differentiate themselves from Chrome by saying “yeah, maybe it’s a bit slower – it’s hard and we’re working on that – but in the meanwhile here’s all this cool stuff you can do with Firefox that you can’t with Chrome!” I don’t think Firefox will ever truly “catch up” to Chrome, and that’s fine, but I do think they can capture and retain a healthy 15%-20% (if not more) with a vision that consists of more than “Chrome is popular, therefore, we need to copy Chrome” and “use us because we’re not Chrome!”
Speaking of key bindings, Ctrl + Q is still “quit without any confirmation”. Someone filed a bug requesting this was changeable (not even default changed), that bug is now 20 years old.
It strikes me that this would be a great first issue for a new contributor, except the reason it’s been unfixed for so long is presumably that they don’t want it fixed.
A shortcut to quit isn’t a problem, losing user data when you quit is a problem. Safari has this behaviour too, and I quite often hit command-Q and accidentally quit Safari instead of the thing I thought I was quitting (since someone on the OS X 10.8 team decided that the big visual clues differentiating the active window and others was too ugly and removed it). It doesn’t bother me, because when I restart Safari I get back the same windows, in the same positions, with the same tabs, scrolled to the same position, with the same unsaved form data.
I haven’t used Firefox for a while, so I don’t know what happens with Firefox, but if it isn’t in the same position then that’s probably the big thing to fix, since it also impacts experience across any other kind of browser restart (OS reboots, crashes, security updates). If accidentally quitting the browser loses you 5-10 seconds of time, it’s not a problem. If it loses you a load of data then it’s really annoying.
Firefox does this when closing tabs (restoring closed tabs usually restores form content etc.) but not when closing the window.
The weird thing is that it does actually have a setting to confirm when quitting, it’s just that it only triggers when you have multiple tabs or windows open and not when there’s just one tab 🤷
The weird thing is that it does actually have a setting to confirm when quitting, it’s just that it only triggers when you have multiple tabs or windows open and not when there’s just one tab
Does changing browser.tabs.closeWindowWithLastTab
in about:config fix that?
I have it set to false
already, I tested it to make sure and it doesn’t make a difference (^W won’t close the tab, as expected, but ^Q with one tab will still just quit).
I quite often hit command-Q and accidentally quit Safari
One of the first things I do when setting up a new macOS user for myself is adding alt-command-Q in Preferences → Keyboard → Shortcuts → App Shortcuts for “Quit Safari” in Safari. Saves my sanity every day.
Yes, it changes the binding on the OS level, so the shortcut hint in the menu bar is updated to show the change
You can do this in windows for firefox (or any browser) too with an autohotkey script. You can set it up to catch and handle a keypress combination before it reaches any other application. This will be global of course and will disable and ctrl-q hotkey in all your applications, but if you want to get into detail and write a more complex script you can actually check which application has focus and only block the combination for the browser.
This sounds like something Chrome gets right - if I hit CMD + Q I get a prompt saying “Hold CMD+Q to Quit” which has prevented me from accidentally quitting lots of times. I assumed this was MacOS behaviour, but I just tested Safari and it quit immediately.
Disabling this shortcut with browser.quitShortcut.disabled
works for me, but I agree that bug should be fixed.
Speaking of key bindings, Ctrl + Q is still “quit without any confirmation”.
That was fixed a long time ago, at least on Linux. When I press it, a modal says “You are about to close 5 windows with 24 tabs. Tabs in non-private windows will be restored when you restart.” ESC cancels.
That’s strange. I’m using latest Firefox, from Firefox, on Linux, and I don’t ever get a prompt. Another reply suggested a config tweak to try.
I had that problem for a while but it went away. I have browser.quitShortcut.disabled
as false in about:config. I’m not sure if it’s a default setting or not.
quitShortcut
It seems that this defaults to false. The fact you have it false, but don’t experience the problem, is counter-intuitive to me. Anyway the other poster’s suggestion was to flip this, so I’ll try that. Thanks!
That does seem backwards. Something else must be overriding it. I’m using Ubuntu 20.04, if that matters. I just found an online answer that mentions the setting.
On one level, I disagree – I have zero problems with Firefox. My only complaint is that sometimes website that are built to be Chrome-only don’t work sometimes, which isn’t really Firefox’s problem, but the ecosystem’s problem (see my comment above about antitrust, etc). But I will grant you that Firefox’s UX could be better, that there are ways the browser could be improved in general. However, I disagree here:
retain a healthy 15%-20% (if not more)
I don’t think this is possible given the amount of resources Firefox has. No matter how much they improve Firefox, there are two things that are beyond their control:
Even the best product managers and engineers could not reverse Firefox’s design. We need a political solution, unless we want the web to become Google Web (tm).
Why can’t I just change themes?
You can. The switcher is at the bottom of the Customize Toolbar… view.
Hm, last time I tried this it didn’t do much of anything other than change the colour of the toolbar to something else or a background picture; but maybe it’s improved now. I’ll have a look next time I try mucking about with 89 again; thanks!
https://color.firefox.com/ to save the trouble of searching.
I agree with Firefox’s approach of choosing mainstream users over power-users - that’s the only way they’ll ever have 10% or more of users. Firefox is doing things with theming that I wish other systems would do - they have full “fresco” themes (images?) in their chrome! It looks awesome! I dream about entire DEs and app suites built from the ground up with the same theme of frescoes (but with an different specific fresco for each specific app, perhaps tailored to that app). Super cool!
I don’t like the lack of contrast on the current tab, but “give users the choice to fix this very specific issue or not” tends to be extremely shortsighted - the way to fix it is to fix it. Making it optional means yet another maintenance point on an already underfunded system, and doesn’t necessarily even fix the problem for most users!
More importantly, making ultra-specific optionss like that is usually pushing decisions onto the user as a method of avoiding internal politicking/arguments, and not because pushing to the user is the optimal solution for that specific design aspect.
As for the close button, I am like you. You can set browser.tabs.tabClipWidth
to 1000
. Dunno if it is scheduled to be removed.
As for most of the other grips, adding options and features to cater for the needs of a small portion of users has a maintenance cost. Maybe adding the option is only one line, but then a new feature needs to work with the option enabled and disabled. Removing options is just a way to keep the code lean.
My favorite example in the distribution world is Debian. Debian supports tries to be the universal OS. We are drowning with having to support everything. For examples, supporting many init systems is more work. People will get to you if there is a bug in the init system you don’t use. You spend time on this. At the end, people not liking systemd are still unhappy and switch to Devuan which supports less init systems. I respect Mozilla to keep a tight ship and maintaining only the features they can support.
Nobody would say anything if their strategy worked. The core issue is that their strategy obviously doesn’t work.
adding options and features to cater for the needs of a small portion of users
It ’s not even about that.
It’s removing things that worked and users liked by pretending that their preferences are invalid. (And every user belongs to some minority that likes a feature others may be unaware of.)
See the recent debacle of gradually blowing up UI sizes, while removing options to keep them as they were previously.
Somehow the saved cost to support some feature doesn’t seem to free up enough resources to build other things that entice users to stay.
All they do with their condescending arrogance on what their perfectly spherical idea of a standard Firefox user needs … is making people’s lives miserable.
They fired most of the people that worked on things I was excited about, and it seems all that’s left are some PR managers and completely out-of-touch UX “experts”.
As for most of the other grips, adding options and features to cater for the needs of a small portion of users has a maintenance cost. Maybe adding the option is only one line, but then a new feature needs to work with the option enabled and disabled. Removing options is just a way to keep the code lean.
It seems to me that having useful features is more important than having “lean code”, especially if this “lean code” is frustrating your users and making them leave.
I know it’s easy to shout stuff from the sidelines, and I’m also aware that there may be complexities I may not be aware of and that I’m mostly ignorant of the exact reasoning behind many decisions (most of us here are really, although I’ve seen a few Mozilla people around), but what I do know is that 1) Firefox as a product has been moving in a certain direction for years, 2) that Firefox has been losing users for years, 3) that I know few people who truly find Firefox an amazing browser that a joy to use, and that in light of that 4) keep doing the same thing you’ve been doing for years is probably not a good idea, and 5) that doing the same thing but doing it harder is probably an even worse idea.
I also don’t think that much of this stuff is all that much effort. I am not intimately familiar with the Firefox codebase, but how can a bunch of settings add an insurmountable maintenance burden? These are not “deep” things that reach in to the Gecko engine, just comparatively basic UI stuff. There are tons of projects with a much more complex UI and many more settings.
Hell, I’d argue that even removing the RSS was also a mistake – they should have improved it instead, especially after Google Reader’s demise there was a huge missed opportunity there – although it’s a maintenance burden trade-off I can understand it better, it also demonstrates a lack of vision to just say “oh, it’s old crufty code, not used by many (not a surprise, it sucked), so let’s just remove it, people can just install an add-on if they really want it”. This is also a contradiction with Firefox’s mantra of “most people use the defaults, and if it’s not used a lot we can just remove it”. Well, if that’s true then you can ship a browser with hardly any features at all, and since most people will use the defaults they will use a browser without any features.
Browsers like Brave and Vivaldi manage to do much of this; Vivaldi has an entire full-blown email client. I’d wager that a significant portion of the people leaving Firefox are actually switching to those browsers, not Chrome as such (but they don’t show up well in stats as they identify as “Chrome”). Mozilla nets $430 million/year; it’s not a true “giant” like Google or Apple, but it’s not small either. Vivaldi has just 55 employees (2021, 35 in 2017); granted, they do less than Mozilla, but it doesn’t require a huge team to do all of this.
And every company has limited resources; it’s not like the Chrome team is a bottomless pit of resources either. A number of people in this thread express the “big Google vs. small non-profit Mozilla”-sentiment here, but it doesn’t seem that clear-cut. I can’t readily find a size for the Chrome team on the ‘net, but I checked out the Chromium source code and let some scripts loose on that: there are ~460 Google people with non-trivial commits in 2020, although quite a bit seems to be for ChromeOS and not the browser part strictly speaking, so my guestimate is more 300 people. A large team? Absolutely. But Mozilla’s $430/million a year can match this with ~$1.5m/year per developer. My last company had ~70 devs on much less revenue (~€10m/year). Basically they have the money to spare to match the Chrome dev team person-for-person. Mozilla does more than just Firefox, but they can still afford to let a lot of devs loose on Gecko/Firefox (I didn’t count the number devs for it, as I got some other stuff I want to do this evening as well).
It’s all a matter of strategy; history is littered with large or even huge companies that went belly up just because they made products that didn’t fit people’s demands. I fear Firefox will be in the same category. Not today or tomorrow, but in five years? I’m not so sure Firefox will still be around to be honest. I hope I’m wrong.
As for your Debian comparison; an init system is a fundamental part of the system; it would be analogous to Firefox supporting different rendering or JS engines. It’s not even close to the same as “an UI to configure key mappings” or “a bunch of settings for stuff you can actually already kind-of do but with hacks that you need to explicitly search for and most users don’t know it exists”, or even a “built-in RSS reader that’s really good and a great replacement for Google Reader”.
I agree with most of what you said. Notably the removal of RSS support. I don’t work for Mozilla and I am not a contributor, so I really can’t answer any of your questions.
Another example of maintaining a feature would be Alsa support. It has been removed, this upsets some users, but for me, this is understandable as they don’t want to handle bug reports around this or the code to get in the way of some other features or refactors. Of course, I use Pulseaudio, so I am quite biased.
I think ALSA is a bad example; just use Pulseaudio. It’s long since been the standard, everyone uses it, and this really is an example of “147 people who insist on having an überminimal Linux on Reddit being angry”. It’s the kind of technical detail with no real user-visible changes that almost no one cares about. Lots of effort with basically zero or extremely minimal tangible benefits.
And ALSA is a not even a good or easy API to start with. I’m pretty sure that the “ALSA purists” never actually tried to write any ALSA code otherwise they wouldn’t be ALSA purists but ALSA haters, as I’m confident there is not a single person that has programmed with ALSA that is not an ALSA hater to some degree.
Pulseaudio was pretty buggy for a while, and its developer’s attitude surrounding some of this didn’t really help, because clearly if tons of people are having issues then all those people are just “doing it wrong” and is certainly not a reason to fix anything, right? There was a time that I had a keybind to pkill pulseaudio && pulseaudio --start
because the damn thing just stopped working so often. The Grand Pulseaudio Rollout was messy, buggy, broke a lot of stuff, and absolutely could have been handled better. But all of that was over a decade ago, and it does actually provide value. Most bugs have been fixed years ago, Poettering hasn’t been significantly involved since 2012, yet … people still hold an irrational hatred towards it 🤷
ALSA sucks, but PulseAudio is so much worse. It still doesn’t even actually work outside the bare basics. Firefox forced me to put PA on and since then, my mic randomly spews noise and sound between programs running as different user ids is just awful. (I temporarily had that working better though some config changes, then a PA update - hoping to fix the mic bug - broke this… and didn’t fix the mic bug…)
I don’t understand why any program would use the PA api instead of the alsa ones. All my alsa programs (including several I’ve made my own btw, I love it whenever some internet commentator insists I don’t exist) work equally as well as pulse programs on the PA system… but also work fine on systems where audio actually works well (aka alsa systems). Using the pulse api seems to be nothing but negatives.
Not sure if this will help you but I absolutely cannot STAND the default Firefox theme so I use this: https://github.com/ideaweb/firefox-safari-style
I stick with Firefox over Safari purely because it’s devtools are 100x better.
There’s also the fact that web browsers are simply too big to reimplement at this point. The best Mozilla can do (barely) is try to keep up with the Google-controlled Web Platform specs, and try to collude with Apple to keep the worst of the worst from being formally standardized (though Chrome will implement them anyway). Their ability to do even that was severely impacted by their layoffs last year. At some point, Apple is going to fold and rebase Safari on Chromium, because maintaining their own browser engine is too unprofitable.
At this point, we need to admit that the web belongs to Google, and use it only to render unto Google what is Google’s. Our own traffic should be on other protocols.
For a scrappy nonprofit they don’t seem to have any issues paying their executives millions of dollars.
I mean, I don’t disagree, but we’re still talking several orders of magnitude less compensation than Google’s execs.
A shit sandwich is a shit sandwich, no matter how low the shit content is.
(And no, no one is holding a gun to Mozilla’s head forcing them to hire in high-CoL/low-productivity places.)
Product design can’t fix any of these problems because nobody is paying for the product. The more successful it is, the more it costs Mozilla. The only way to pay the rent with free-product-volume is adtech, which means spam and spying.
I don’t agree this is a vague ethical reason. Problem with those are concerns like deforestation (and destruction of habitats for smaller animals) to ship almond milk across the globe, and sewing as an alternative to poverty and prostitution, etc.
The browser privacy question is very quantifiable and concrete, the source is in the code, making it a concrete ethical-or-such choice.
ISTR there even being a study or two where people were asked about willingness to being spied upon, people who had no idea their phones were doing what was asked about, and being disconcerted after the fact. That’s also a concrete way to raise awareness.
At the end of the day none of this may matter if people sign away their rights willingly in favor of a “better” search-result filter bubble.
I don’t think they’re vague (not the word I used) but rather abstract; maybe that’s no the best word either but what I mean with it is that it’s a “far from my bed show” as we would say in Dutch. Doing $something_better on these topics has zero or very few immediate tangible benefits, but rather more abstract long-term benefits. And in addition it’s also really hard to feel that you’re really making a difference as a single individual. I agree with you that these are important topics, it’s just that this type of argument is simply not all that effective at really making a meaningful impact. Perhaps it should be, but it’s not, and exactly because it’s important we need to be pragmatic about the best strategy.
And if you’re given the choice between “cheaper (or better) option X” vs. “more expensive (or inferior) option Y with abstract benefits but no immediate ones”, then I can’t really blame everyone for choosing X either. Life is short, lots of stuff that’s important, and can’t expect everyone to always go out of their way to “do the right thing”, if you can even figure out what the “right thing” is (which is not always easy or black/white).
My brain somehow auto-conflated the two, sorry!
I think we agree that the reasoning in these is inoptimal either way.
Personally I wish these articles weren’t so academic, and maybe not in somewhat niche media, but instead mainstream publications would run “Studies show people do not like to be spied upon yet they are - see the shocking results” clickbaity stuff.
At least it wouldn’t hurt for a change.
It probably wasn’t super-clear what exactly was intended with that in the first place so easy enough of a mistake to make 😅
As for articles, I’ve seen a bunch of them in mainstream Dutch newspapers in the last two years or so; so there is some amount of attention being given to this. But as I expended on in my other lengthier comment, I think the first step really ought to be making a better product. Not only is this by far the easiest to do and within our (the community’s) power to do, I strongly suspect it may actually be enough, or at least go a long way.
It’s like investing in public transport is better than shaming people for having a car, or affordable meat alternatives is a better alternative than shaming people for eating meat, etc.
I agree to an extent. Firefox would do well to focus on the user experience front.
I switched to Firefox way back in the day, not because of vague concerns about the Microsoft hegemony, or even concerns about web standards and how well each browser implemented them. I switched because they introduced the absolutely groundbreaking feature that is tabbed browsing, which gave a strictly better user experience.
I later switched to Chrome when it became obvious that it was beating Firefox in terms of performance, which is also a factor in user experience.
What about these days? Firefox has mostly caught up to Chrome on the performance point. But you know what’s been the best user experience improvement I’ve seen lately? Chrome’s tab groups feature. It’s a really simple idea, but it’s significantly improved the way I manage my browser, given that I tend to have a huge number of tabs open.
These are the kinds of improvements that I’d like to see Firefox creating, in order to lure people back. You can’t guilt me into trying a new browser, you have to tempt me.
But you know what’s been the best user experience improvement I’ve seen lately? Chrome’s tab groups feature. It’s a really simple idea, but it’s significantly improved the way I manage my browser, given that I tend to have a huge number of tabs open.
Opera had this over ten years ago (“tab stacking”, added in Opera 11 in 2010). Pretty useful indeed, even with just a limited number of tabs. It even worked better than Chrome groups IMO. Firefox almost-kind-of has this with container tabs, which are a nice feature actually (even though I don’t use it myself), and with a few UX enhancements on that you’ve got tab groups/stacking.
Opera also introduced tabbed browsing by the way (in 2000 with Opera 4, about two years before Mozilla added it in Phoenix, which later became Firefox). Opera was consistently way ahead of the curve on a lot of things. A big reason it never took off was because for a long time you had to pay for it (until 2005), and after that it suffered from “oh, I don’t want to pay for it”-reputation for years. It also suffered from sites not working; this often (not always) wasn’t even Opera’s fault as frequently this was just a stupid pointless “check” on the website’s part, but those were popular in those days to tell people to not use IE6 and many of them were poor and would either outright block Opera or display a scary message. And being a closed-source proprietary product also meant it never got the love from the FS/OSS crowd and the inertia that gives (not necessarily a huge inertia, but still).
So Firefox took the world by storm in the IE6 days because it was free and clearly much better than IE6, and when Opera finally made it free years later it was too late to catch up. I suppose the lesson here is that “a good product” isn’t everything or a guarantee for success, otherwise we’d all be using Opera (Presto) now, but it certainly makes it a hell of a lot easier to achieve success.
Opera had a lot of great stuff. I miss Opera 😢 Vivaldi is close (and built by former Opera devs) but for some reason it’s always pretty slow on my system.
This is fair and I did remember Opera being ahead of the curve on some things. I don’t remember why I didn’t use it, but it being paid is probably why.
I agree, I loved the Presto-era Opera and I still use the Blink version as my main browser (and Opera Mobile on Android). It’s still much better than Chrome UX-wise.
I haven’t used tab groups, but it looks pretty similar to Firefox Containers which was introduced ~4 years ahead of that blog post. I’ll grant that the Chrome version is built-in and looks much more polished and general purpose than the container extension, so the example is still valid.
I just wanted to bring this up because I see many accusations of Firefox copying Chrome, but I never see the reverse being called out. I think that’s partly because Chrome has the resources to take Mozilla’s ideas and beat them to market on it.
Disclaimer: I’m a Mozilla employee
One challenge for people making this kind of argument is that predictions of online-privacy doom and danger often don’t match people’s lived experiences. I’ve been using Google’s sites and products for over 20 years and have yet to observe any real harm coming to me as a result of Google tracking me. I think my experience is typical: it is an occasional minor annoyance to see repetitive ads for something I just bought, and… that’s about the extent of it.
A lot of privacy advocacy seems to assume that readers/listeners believe it’s an inherently harmful thing for a company to have information about them in a database somewhere. I believe privacy advocates generally believe that, but if they want people to listen to arguments that use that assumption as a starting point, they need to do a much better job offering non-circular arguments about why it’s bad.
I think it has been a mistake to focus on loss of privacy as the primary data collection harm. To me the bigger issue is that it gives data collectors power over the creators of the data and society as a whole, and drives destabilizing trends like political polarization and economic inequality. In some ways this is a harder sell because people are brainwashed to care only about issues that affect them personally and to respond with individualized acts.
In some ways this is a harder sell because people are brainwashed to care only about issues that affect them personally and to respond with individualized acts.
I’m not @halfmanhalfdonut but I don’t think that brainwashing is needed to get humans to behave like this. This is just how humans behave.
things like individualism, solidarity, and collaboration exist on a spectrum, and everybody exhibits each to some degree. so saying humans just are individualistic is tautological, meaningless. everyone has some individualism in them regardless of their upbringing, and that doesn’t contradict anything in my original comment. that’s why I asked if there was some disagreement.
to really spell it out, modern mass media and culture condition people to be more individualistic than they otherwise would be. that makes it harder to make an appeal to solidarity and collaboration.
I think you’re only seeing the negative side (to you) of modern mass media and culture. Our media and culture also promote unity, tolerance, respect, acceptance, etc. You’re ignoring that so that you can complain about Google influencing media, but the reality is that the way you are comes from those same systems of conditioning.
The fact that you even know anything about income inequality and political polarization are entirely FROM the media. People on the whole are not as politically divided as media has you believe.
sure, I only mentioned this particular negative aspect because it was relevant to the point I was making in my original comment
to really spell it out, modern mass media and culture condition people to be more individualistic than they otherwise would be. that makes it harder to make an appeal to solidarity and collaboration.
I think we’re going to have to agree to disagree. I can make a complicated rebuttal here, but it’s off-topic for the site, so cheers!
I agree with everything you’ve written in this thread, especially when it comes to the abstractness of pro-Firefox arguments as of late. Judging from the votes it seems I am not alone. It is sad to see Mozilla lose the favor of what used to be its biggest proponents, the “power” users. I truly believe they are digging their own grave – faster and faster it seems, too. It’s unbelievable how little they seem to be able to just back down and admit they were wrong about an idea, if only for a single time.
Firefox does have many features that Chrome doesn’t have: container tabs, tree style tabs, better privacy and ad-blocking capabilities, some useful dev tools that I don’t think Chrome has (multi-line JS and CSS editors, fonts), isolated profiles, better control over the home screen, reader mode, userChrome.css, etc.
Extremely cool to see a thread full of people going to bat for an extremely blatant nazi who has argued such wonderful points as:
Why anyone would spend their time arguing in favor of this person is beyond me. That’s something some of y’all need to do a lot of thinking about. I’m also not going to sit here and debate nazis who are only going to argue in bad faith, so don’t bother trying me.
You’re not helping the problem by avoiding discussing the works altogether, and instead focusing on flame wars.
It is helpful to know that there’s other antifascists here. I appreciate it.
I wonder whether it would be possible to destabilize Urbit by breaking some of its cryptography. Because much of the code is custom and obfuscated, and the keyspaces are relatively small, it seems apt for cryptanalysis. I can’t find anything public about this, other than a blog post from the Urbit team assuring us that they’ve definitely had somebody audit their Martian bullshit. I read through some of the Ames documentation, and now I have to go take my memory-altering drugs.
Indeed, if any other cryptographer here can explain to me how Urbit works, I would appreciate it. As far as I can tell, it’s in the same realm as Minecraft or other hobbyist ventures gone mad, where hand-rolled encryption got steadily fancier until it couldn’t be broken in a weekend, and then it was deemed good enough.
Of course, there’s also destabilizing Ethereum directly. This is a delicious inevitability which has completely different cryptanalysis.
I really don’t think that urbit is used by anyone in any serious way to warrant spending the time and effort to break it and destabilize it.
That being said yeah I’m sure it’s probably terribly written anyway, but I also would not want to try to delve through all the cryptic weirdness that makes it up.
You’re obviously angry about the whole thing, and I respect your reasoning. Just try to think if what you’re doing is actually going to help things, or just make everyone angrier (including yourself) about something we all probably already agree on.
Anyway, as a Jew myself, I’ve had enough of being called a Nazi by some Internet savior who doesn’t know jack about me. Check yourself. Seriously. Good day.
I find this whole thread depressing.
We have a long technical and economic list of why Urbit has a lot of problems and yet 2/3rds of the comments are about the politics of the guy who wrote it and has now stepped down. Character assassination is something everyone in open source has to deal with and I would have hoped people who are at least somewhat involved in the field would know better.
Sacrificing scapegoats in the hope you’re not targeted never works.
Urbit submissions are third-rail submissions, and have been for as long as I’ve been a member here.
The best thing to do is to hide them and get on with your day.
Which is really stupid because distributed systems are the only way that we can ensure that the internet isn’t taken over but we still have no idea how to build them so they can operate at scale, work for micro-payments and not have a central server - all the crypto coins have been a huge disappointment with their ridiculous fees and the time needed for a transaction to be logged.
That Ted Nelson managed to predict the problems of an internet with no payment layer in the 60s yet we’re still no closer to solving even basic routing with payment 60 years later is dismaying.
Nelson’s ideas about compensation and the value of information were simply wrong. If Nelson’s vision had taken place, then Wikipedia wouldn’t exist, because it would have been slowly cut to pieces by middlemen. Instead, those middlemen are relegated to the second page of search-engine results.
Instead, take a page from the communists, and distribute the means of production. Give people enough democratic control of enough computational power, and they’ll maintain common resources for everybody. The recent revolution of Libera from Freenode is instructive.
Those middle man now edit Wikipedia for a fee.
Go to any medium to large corporation that you know where the skeletons are buried and read the article. Be amazed that all the publicly available information about corruption, fines, prison sentences and human rights abuses aren’t in Wikipedia and are relegated to the second page of search-engine results.
Which is ironically what Ted Nelson said would happen if we couldn’t monetize content so people could live of it in a capitalist society. Everything is now an ad, including Wikipedia. We are the product and we’re cheering on the free ed-vertisement like geese cheering the farmer for the free food.
While I will admit that paid editors generally have a large advantage over volunteers in the amount of time they can dedicate, you can report particular instances of abuse to me, https://en.wikipedia.org/wiki/Wikipedia:Conflict_of_interest/Noticeboard, or other venues on or off Wikipedia, like our IRC or Discord channels.
Monero is basically the coin you’re describing, with one-minute confirmation times and incredibly low fees (the devs are constantly solving difficult equations in the quest to lower fees), but is on the verge of being made illegal for being too-much like cash.
I’d really like to believe that, but after bitcoin, tether, etherium and a whole bunch of other shit coins I just don’t have the mental energy to spend yet another weekend reading about a coin that will solve all the worlds problems and find out that it’s just a different flavour of pump and dump.
Monero really does work like private cash and has quick confirmation times as @WilhelmVonWeiner said. Plus it exists right now and you can derive value from it right now. That said, it’s fair to be exhausted from the pump-and-dump garbage fest that crypto is now. I tell most of my friends that unless you’re willing to literally sift out the shit, crypto isn’t the place to be right now.
100% agreed with you there, the early Ethereum craze really killed a lot of interest for me in shitcoins. I like the competition though because it drives innovation.
I’ll just say that Monero is at least worth reading about as it solves Bitcoin’s fungibility problem in a much more user-friendly and effective way than making people use coinjoins and careful UTXO management. Fungibility is becoming more and more important because of the advancements being made in chain analysis. KYC exchanges these days are closely watching what you do with your BTC both before & after the coins touch their systems.
It also seems to be effectively preventing mining centralization with RandomX (ASICs and GPUs aren’t cost effective to mine it), so it’s closer to the original “one CPU, one vote” idea of BTC.
They’re third-rail submissions in large part due to the persistent campaigning of certain users, yourself included if memory serves. Let’s not pretend otherwise.
Edit: memory served poorly. :(
I think Urbit is a project doomed for irrelevance for many reasons, and I’d rank Yarvin’s ideology around third in the list of those reasons. But if I’ve ever tried to shut down a discussion about it on this site, I’d welcome an example. It was never my intention of doing so.
I double-checked my work and I offer you my profuse apologies. In the last year at least I can’t find you having done what I complained of. Sorry about that!
All the articles that mention Yarvin’s “politics” quote from and link to primary sources. “How dare you quote the exact words I said” is kind of a flimsy basis for claims of “character assassination”, and when the project in question is meant to enact the creator’s beliefs onto the world it is always on-topic to analyze and discuss those beliefs, since acceptance of the project’s technology is, by the project’s design, inseparable from acceptance of the creator’s “politics”.
I’d say in this case it’s not character assassination, but rather character suicide
Terrible, he killed himself by stabbing himself in the back twelve times.
If you look at the sources on the wiki list none of them actually link to his writing, but to people writing about his writing to explain why what he said is racist, without actually linking to any of his writing.
I find it ironic that the skill of detecting character assassination I developed to find worthwhile socialist and anarchist authors in the 00s is now something I’m using to do the same for right wingers.
I have a limited amount of time in this Earth, and I am yet to see any evidence that trying to find out whether someone that seems a nazi is a nazi is worth spending any of it.
You would perhaps be interested in how that exact type of thinking allowed big tobacco to use Nazi anti-smoking policies to paint all its detractors as Nazis for decades after the war and kill more people than the holocaust: https://theconversation.com/smoking-rates-in-us-have-fallen-to-all-time-low-but-how-did-they-ever-get-so-high-107185
Calling someone a word doesn’t mean they are wrong, it means you don’t have anything to say.
I am sure you might be able to raise all sorts of reasonable doubt over whether or not this dude is a nazi, specifically, just nazi adjacent, or just an asshole in general.
I am not, however, a court of law. I’m just a guy, with limited time and resources (way more limited than the justice system, by the way), so I go by general heuristics and even gut feeling. And that’s truth by pretty much all of us, really, despite how rational people think they are.
So far, all I seem of that guy points to a direction, and it ain’t a good one. There are LOTS of other people being silenced and de-platformed for inconvenient and unpopular opinions that are CERTAINLY more deserving of my time, so, this dude will seat on my nazi bucket and I will not give it a second time until extraordinary and massive evidence surfaces indicating otherwise.
The whole point of me even posting this is that it doesn’t actually talks much about the political aspects (although it doesn’t ignore it), just goes over some very technical and concrete reasons why it’s kinda crappy.
If you look at the sources on the wiki list none of them actually link to his writing, but to people writing about his writing to explain why what he said is racist, without actually linking to any of his writing.
This is not surprising given that Wikipedia cannot be trusted on controversial topics. I wish people stopped linking to Wikipedia (unless the topic is uncontroversial), and instead cited the sources directly.
Imagine spending your time going on the internent to cape for someone who claimed that race determines one’s “intelligence”
Seems like a waste of time to defend nazis online but go off I guess.
EDIT: I love that people on this website think that my comment was unkind, off-topic and/or trolling. Great to live in 2021 where people are going to bat for extremely blatant nazis because apparently arguing for a fascist state ruled by tech CEO’s, or that race determines one’s “intelligence”, or that slavery is good isn’t enough to be considered a straight up nazi. Cool. Awesome!
Thanks for (implicitly) asking for feedback! That’s a great start.
I think your comment is about as off-topic as the rest of the thread. If you’d like to know what you did differently, your comment targets and criticizes another member for having a different opinion in a mutual conversation, and with a sarcastic tone of voice at that. It seems like the kind of comment that would be better suited for Twitter than Lobsters—a short, quippy, dismissive take that adds nothing to the conversation but to half-assedly try to shut it down and embarrass others. That’s why I chose to flag your comment as “off-topic”, for lack of a better term.
Before you commented, I saw it as an honest conversation that was less about the story and more about how we judge people online in general, often at face value whilst ignoring the substance and context of a conversation. After you commented, it became about judging people online, while ignoring the substance and context of the conversation. So ironically, your comment does the exact thing the thread debates. Maybe a better phrase than “off-topic” would be “um, hey. that thing you’re doing right now? yeah, we were just talking about that”.
In general, I think Lobsters is better when the authors of these types of comments actually engage with the conversation. Or, failing that, if unkind things directed at fellow denizens are just left unsaid.
FWIW what I think people are missing is that he was not great at advocating his beliefs, and probably considers his project a failure in that respect.
He has left the project and his writings and beliefs have been disavowed by the current maintainers of the project. See the end of the FAQ: https://urbit.org/faq/
Curtis laid the foundation for Urbit by delivering its first prototype but, since 2013, it has been refined and almost entirely rewritten by a community of developers. No one working on Urbit today had anything to do with Curtis’s writing. For the most part, we couldn’t be less interested in it.
So I would suggest that it’s OK not to take him that seriously. Maybe 5 years ago, but not now.
Also I remember that ironically his farewell blog post indicates that leaving the allocation of Urbit real estate to the free market produced a result he wasn’t happy with … it wasn’t in line with his notion of “fairness”
What seems to be happening now is that the current maintainers are actually producing useful documentation about the system, moving away from all the intentional obscurantism. It does seem like Urbit is flawed as a system, but there are some interesting design elements for sure.
Both of these docs are pretty good reading for people interested in the intersection of languages and operating systems:
https://urbit.org/docs/hoon/overview/
https://urbit.org/blog/io-in-hoon/
They use regular words and are quite readable :) (in contrast, the political stuff was always danced around in a way to create plausible deniability; there’s none of that here)
It seems obvious to me that Urbit will not succeed or become mainstream, so I’m not very threatened by it. But it has plenty of ideas that are not about policies for resource allocation (i.e. the political stuff). A lot of it is about the representation of code and data for a distributed/networked operating system.
I’m really glad they are working on making it less obscure, and documenting the system. The linguistic approach to operating system design is definitely fascinating, and is what originally got me interested in Urbit in the early 2010s when I came across it (before I learned about the underlying goals of the project).
He has left the project and his writings and beliefs have been disavowed by the current maintainers of the project. See the end of the FAQ: https://urbit.org/faq/
Curtis laid the foundation for Urbit by delivering its first prototype but, since 2013, it has been refined and almost entirely rewritten by a community of developers. No one working on Urbit today had anything to do with Curtis’s writing. For the most part, we couldn’t be less interested in it.
In the circumstances if they really want to convince me that they’ve cut ties, I’d want them to clearly denounce the racist and pro-slavery views of the creator, and demonstrate how they are rearchitecting the project to move away from the original feudalistic, non-egalitarian aims of the project. Given the project’s history it’s important this needs is addressed explicitly, rather than hiding behind euphemistic statements which give fascists a space to continue to work unchecked.
I write our firmware using C. While some might gasp at using such an “old” language
If anyone “gasps” at the fact that someone would use C to program microcontrollers they shouldn’t be allowed anywhere near microcontrollers.
To me it feels like the people who think embedded systems like industrial equipment, cars, or airplanes use a lot of type systems and formal methods because they need to be reliable. (There were more than a few of these posts on lobste.rs). Haha, if only they knew …
(Of course I think the state of the art needs to be improved, but languages are a small part of the reason why deployed systems are reliable or unreliable. Dependencies are probably a bigger deal, and embedded C programs tend to have few dependencies.)
industrial equipment
As someone who works on this for a living: can confirm, it’s not nearly as strict/well put together as people would think/want haha.
from 13ms to under 1ms
13ms means being over a frame behind, at 90Hz display refresh. For gamers, thas is a very measurable competitive handicap. Or at less than <1ms, advantage.
I am hopeful for a world where “gaming keyboards” routinely get objectively reviewed for latency.
Is there any evidence that being 1 frame behind sometimes actually leads to losses in competitive gaming?
Given the number of factors involved it’d be quite difficult to be certain, but I have little trouble believing it for twitchy reaction-centric games (eg classic shooters).
I know for a fact if someone were speedrunning something it would be a massive issue. There are lots of things within speedrunning that need to be executed on a single specific frame.
Wouldn’t most frame-perfect inputs have a decent lead-in time or at least be repeatable? In both cases you would know you need to press 13ms earlier and adjust accordingly - probably without even thinking about it.
Same with competitive games, anticipating your opponent is probably more important than having a sub-13ms reaction time(!).
If you don’t trust the source of the bash install script, why do you trust their software?
If you don’t trust that the bash install script isn’t getting MITM’d somehow, why do you trust that the rest of the software isn’t, too?
My issue is not the bash script, my issue is the security put in place to host this bash script.
Usually distributions (I can only speak about Fedora/CentOS/RHEL) have tight ACLs, and review processes for new packages to be uploaded. Supply chain attacks are taken seriously. There are processes and tools in place for auditing the supply chain.
Who administers https://get.tool.sh/
? How do you audit that the supply chain hasn’t been tainted? Who uploads a new version? How do they upload a new version? Is there an approval process? If a version is tainted, how can people know whether they installed that version or not?
Also, on an unrelated to security note, packages provide a way to track installed files, and can easily get purged. Distributions usually avoid pre-install or post-install script which creates untracked files of which the package manager is not aware. (YMMV, exceptions do occur, for example: postgresql usually creates the data directory in its post-install script)
Do you audit and ensure the review process was carried out correctly for every piece of software you install?
Well… I install my software from the official Fedora repos, so I assume every package was approved. I can look it up on koji.
Regarding what I install outside of my package manager (golang and/or rust libraries when I develop), I develop on local VMs. The threat model is these programs reading my firefox cookies, ssh keys etc… Which they can’t since they’re sandboxed.
I might trust their software, their laptop, and even their build server (if it’s not their laptop), but not their web host.
So how would you detect if their web host tampered with the binary? Did you verify a signature? Did you verify a signature that you didn’t get from the same source as the binary?
If you don’t trust the source of the bash install script, why do you trust their software?
If you don’t trust the install script, don’t trust the software. That’s why you should read the install script first.
If it’s a massive 200+ line script that’s hard to understand, I’d probably avoid the software in question if I have any choice in the matter since it’s probably doing something unspeakable to my system. If it’s just installing some files in the appropriate dirs, that’s a different story.
The best way to distribute software, IMO, is a simple .tar.gz with $PREFIX
subdirs laid out (bin/
, share/
, lib/
, etc). Just extract the tarball into $PREFIX
, no install scripts necessary.
The best way to distribute software, IMO, is a simple .tar.gz with $PREFIX subdirs laid out (bin/, share/, lib/, etc). Just extract the tarball into $PREFIX, no install scripts necessary.
This breaks down if your software needs a user, or a /var/lib/myapp
owned by that user, or something else.
“You could add this to the README!” And yeah, sure. But a lot of devs aren’t all that Unix-savvy as most people here are.
Maybe what’s really needed is a standard way to set up this stuff, e.g.:
$ setup-sw setup.json
Create:
User _arp242 (no login)
Directory /var/lib/arp242 owned by _arp242
[Y/n]?
Basically an “ansible-light” with a UI specifically catered to this use case.
That loads and loads of people keeping writing these scripts demonstrates there’s a use case here that’s not yet adequately solved.
Actually, this could even do the download and extraction as well:
$ setup-sw https://install.arp242.net/setup.json
How is this different from a packaging format and package manager? I can just as easily run dnf install https://install.seirdy.one/package.rpm
, for instance.
Plenty of packages come with init scripts or Systemd units that create and run as users too; web servers like Nginx are popular examples.
Yeah, it’s not really, except that it’s probably easier to create. I don’t have a system with dnf
; I’m not even sure which distro(s) it belongs to (Fedora/RedHat/CentOS, I think?) And then there’s apt, and pacman, and xbps, and FreeBSD’s pkg, etc. etc.
People like these shell scripts because they’re simple, they can test them, and when done right work more or less anywhere. It’s also low in maintenance as there aren’t 10 different packages to update and test.
Unhelpful behavior #4: asking judgmental questions Avoid asking judgmental questions like: Why didn’t you just do ___ here?”
If I trust your programming ability and you do something non-obvious, I’m going to ask why because I’m going to assume you have a good reason and I would like to learn.
I think she’s only talking about the flip side of that, where you’re blaming someone for doing it wrong.
It occurs to me that it can be hard to tell these apart. So when asking the sincere version you refer to, one should probably try to word it less ambiguously. Maybe “Just curious why you’re doing this instead of ___?” Although maybe that just comes off as subtler sarcasm. Sigh, communication is hard.
Yes, hedge words can be very helpful. Also: I-statements, opinion rather than fact, approaching with curiosity and uncertainty rather than confident declaration… And yeah, this can require writing more words and taking more time to phrase things, but I’ve found it easier over time. I find myself writing things like “I think I would normally prefer X here – is there some benefit to this approach instead?” If that comes across as sarcasm, there’s probably an existing trust problem that needs addressing.
(Sometimes it turns out their code has some hidden upside, in which case I gently suggest a quick code comment or even a test, if appropriate. If I’m asking as a reviewer, the next person to touch the code will probably wonder as well.)
Another approach that I’ve seen is to prefix each comment with an explicit description of what kind of comment it is: [seeking clarity] Why is … / [suggesting alternative] What about … / [request] Can you add a comment about why …
All this said, I’ve only ever encountered one person who I’ve had a bad interaction with during code reviews in either direction. The people I’ve worked with have been very mature and empathetic. There’s one person who has done one of the behaviors on the list, but not enough to bother me greatly, and I believe that if I push back a bit they’ll be happy to discuss it and work out shared norms. So uh, also “work with nice people”. Pro tip.
I think the keyword is just
“Why did you do it this way?” vs. “Why didn’t you just do it this other way?” are extremely different questions.
If it’s not obvious why something is being done, or why it’s being done a certain way, I often point out that it is deserving of a code comment. This offers the opportunity to reflect on whether it’s a good idea or fundamentally unclear and in need of documentation, without being overtly judgmental.
An experienced developer will probably rethink whether the code can be a bit clearer, but a junior/less experienced developer (or an experienced developer who is distracted/tired/etc) might take it at face value and just document the code (which sometimes is the best solution, of course, but certainly not always).
There are much better ways of asking that doesn’t use the judgemental “why didn’t you just ___” formulation, and also shows your intent (wanting to learn) much better. “Please help me understand why you did this instead of __” for example. Or “Did you consider __?” if brevity is key. (It’s even shorter than the original.)
Okay so, what makes it “bullshit-free”? Nothing about the README or the example within suggests why it’s bullshit-free. It looks like any other generic programming language to me. Absolutely nothing about this seems novel in any way.
Not strictly related to the content of the article, but also kinda: I cannot stand the low-effort MSPaint-esque drawings in reverse engineering articles. It makes me immediately distrustful of the content.
Diagramming tools are a dime a dozen, I was able to find the CC1121 part in EasyEDA in less than a minute. Alternatively, you’re allowed to use pencil and paper to draw schematics. Many applications exist for scanning documents with a phone and, in my personal experience, they can work quite well for diagrams drawn by hand.
The scribbled MS paint schematics are not useful for anyone.
lol get over yourselves