Firefox > Preferences > Home > New Windows and Tabs (very first option!) > Homepage and New Windows, New Tabs > Blank Page
I like that Firefox Home is the default option because you as the user are offered something. If you don't like it, you say no, go to the settings page, and are never offered it again. If you do like it or don't mind it, you keep it. Win-win.
If Firefox Home wasn't on by default, those that might have preferred it wouldn't know what they're missing. It seems difficult to think someone would actually prefer ads but if there's some engagement, then that speaks for itself.
The default option should be "show options", letting you choose with one click between Blank, Mozilla Ads, Your Recent/Favorite Pages, and a custom URL or set of URLs.
There are 6 levels to your process above. Imagine being tech-illiterate and asked to navigate that - or, maybe easier, imagine trying to dictate that process to someone you know who is tech-illiterate over the phone. Even if you know exactly what to do, it might go something like this:
> "You saw an ad you don't like on a new tab of The Internet? OK, what you need to do to fix that is set the New Tab preference to Blank. Click the Firefox menu - no, it doesn't have the familiar File/Edit/Help menu bar, it uses a hamburger menu - the stack of three horizontal lines - in the top right. Something about a library? No, that's supposed to be a bookshelf icon, it has vertical lines, you want the horizontal lines to its right. The menu went away? Make sure to single-click the menu, not double-click. Look in that menu for something named Settings ... not Customize, no, that's kind of like settings but different, oh yeah, it was called Preferences. In Preferences, look for the Home section ... shouldn't have to scroll, it's in the menu to the left ... yeah, that's a menu, it's just separated by whitespace instead of a line. On the Home preferences screen, there's a drop-down box for New Tabs, click that dropdown and set it to Blank. Great, you're all set. Talk to you later. Bye!" Ring - "Hey again - it didn't work? You closed and reopened Firefox and the ads were still there? Oh, right, that gives you a new window, not a new tab. Let's go back through the menus one more time, it was just above the New Tabs dropdown, yeah, we were just there. Click the three horizontal lines for the Firefox menu...."
It's disingenuous to say that those who prefer the ads might not know what they're missing, even more disingenuous to say "you're offered something". No, with ad tech, the user is the product being offered to the advertisers, and I expect that more people don't know how to turn it off or that turning it off is a thing you can do than that like being advertised to.
I fully understand why you think that should be the case, but please understand that most people are not like you. Putting barriers between first start of an app before the user can actually do something with the app is the way to annoy your users.
Sane defaults are nearly always the right choice. You personally may not believe their default is sane, but you're in the minority, clearly.
(It's telling that you call it "Mozilla Ads"; such hyperbole only serves to weaken your point.)
Hit options -> Click dropdown of "new tab" field and select "Blank page". 2 steps.
If the parent post is being disingenuous with their point, yours is as equally disingenuous by being an incredibly over-complicated deconstruction of hitting options and reading 2 fields down.
If they have to be walked through finding the options menu (half your paragraph is about opening the options menu, really?), they are going to have difficulties with every browser and every option -- including understanding what a "custom URL or set of URLs" is.
>"Oh a URL? That's the address thing you see at the top. Oh but it's not shown completely in some browsers. And, if you want multiple URLs you have to use the pipe operator symbol. Oh, the pipe operator? Look above your enter key. No, not the one on the number pad, the other one near the backspace." Etc..
My mistake, I was on a Mac and I intuitively look for app settings in the main menu bar, which is what I was describing. I should have looked up the process on other platforms to determine if it was just as intuitive
As another user pointed out, this is anti-tracking not anti-advertisement.
I can't help but wonder why you don't just go to the front page of your settings, and select "Blank page" on the "New tab" field though. Unless I am misunderstanding where you are talking about.
You can remove everything from the New Tab page to make it completely blank now, although I do agree I'd prefer if it was blank by default with no ads or anything.
I think it offered some capabilities to free up disk space but Storage Sense is now part of Windows.
The idea that Windows is some kind of nightmare to work with just isn't my experience at all. It is stable, and the performance is fine. OEM crapware sucks, admittedly, but it isn't as bad as it used to be.
One could reasonably complain that Windows 10 is invasive to your privacy, or adds to the cost of a new computer. And it still lets idiots get into trouble, but only after clicking that they are sure that they are an idiot a few times in a row.
Apple solves that by only letting people do things that they are approved to do by Apple, for a meager 30% fee on every transaction. So the question users need to ask is whether the 30% idiot tax is worth it.
To be honest, I've never taken the time to figure out how MacOS works. It's like an OS written for cultists. From the strange way the pointing device works, to the icons that don't mean anything to me, to the names that don't make sense (it's called Finder but I can't figure out how to give it find(1) arguments; isn't this supposed to be a Unix?), it seems designed to isolate the initiated and alienate the outsider.
On the other hand, what I dislike about using Windows is the familiar list of complaints: invasive and hostile telemetry, heavily mouse-driven user interface, I-know-better-than-you automatic reboots at awkward times, incredibly poor performance on older hardware, advertisements and unwanted widgets baked into the start menu, garbage applications I didn't want that are installed because Microsoft wants them there, inconsistent application installation behavior, deeply incapable budget SKUs for cheaper hardware, path length limits, people running everything with administrator privileges, weird file locking behavior (ever tried to write to a file that's opened the wrong way for reading?), fragile support for terrible hardware that works just long enough to make a buck, ... I could go on all day. Basically, my problem with Windows is that when you use it, you've paid to have an experience that's worse than what you can get for free in every way that matters to me but one. The only thing Windows has going for it is that it runs Excel like a champ.
That's scaremongering and simply false. Cgnat servers are not necessarily congested. I've been to several isps with cgnat and none of them suffered from congestion.
On a more personal note, if ipv6 were so great, their fans wouldn't have to make up things to badmouth ipv4.
NAT is fundamentally a limited technology that has massive scaling problems that simply do not exist in non-nat networking situations.
The larger the network behind the NAT, the more problems you get. This is also before considerations like the fact NAT breaks 2 way connectivity that is the cornerstone of the design of the internet.
>if ipv6 were so great, their fans wouldn't have to make up things to badmouth ipv4.
The explicit goal and reason IPv6 was created was to make up for the short-comings of IPv4.
The Internet of the 1990s was very different to the Internet of 2020. The widespread surveillance of activity as it exists today was not a consideration back then, nor were there the same security concerns, making it a desirable property to have every device uniquely and globally addressable.
Privacy extensions were then ratified (RFC 4941) after 2007 as a workaround, and firewalls get applied on hosts and gateways to protect against bad actors on the Internet (which are significantly more prevalent today than 20+ years ago).
IPv6 is not a magic bullet. The increase in addressable space is definitely a positive. Pretty much everything else is up for debate, depending on perspective and use case.
I've been dual-stacking networks for over a decade. The easy part[0] is making the network work with both IPv4 and IPv6. The hard part is making everything else work.
[0] Easy is relative. I agree with everything listed in https://news.ycombinator.com/item?id=24059729 as additional sources of complexity and confusion. That's still just the mole hill at the start of the mountain.
> I've been to several isps with cgnat and none of them suffered from congestion.
And I've been on several residential ISPs where IPv4 was unusable during peak netflix hours, likely because people were blindly disabling IPv6 on their devices.
I had to disable IPv6 for Netflix because Netflix has decided that the IPv6 address space I get from Hurricane Electric and the IPv6 address space my wireline ISP hands out are both "VPNs" and blocks them.
With AAAA enabled for *.netflix.com address resolution, I can't watch Netflix. If I actually paid for it, versus getting it included as a perk of T-Mobile, I'd have quit over that. I shouldn't have to fiddle with DNS to watch a service I pay for.
That's not necessarily a problem with nat; anybody with basic networking knowledge can tell you that packets that move through v4 and V6 do not have to follow the same routes. Since there are more users using v4 than V6 it's common for v4 routes to be congested while V6 routes are not.
But those frameworks force you to do things the way they want you to. As soon as you need to deviate a little bit, and very often you'll have to, you'll have to rewrite the entire thing.
No, you don't, because then you'll be able to lean on Rails' biggest strength, Ruby. You don't know how many times I've been able to just dig into a gem's or even Rails itself, find out what's going on, and simply write what I need leveraging all the existing code.
On the other hand, when we were replatforming our Rails project into Node for no good reason, we wound up having to rewrite a ton of stuff because, well, Ruby is a great server language, and Javascript is only at best a mediocre scripting language, and ES6 is only a marginal improvement.
I think that depends on the framework and what deviation you want.
I agree that if you use Rails and constantly override its conventions, you will have a bad day. But following conventions is usually a strength, not a weakness. Most websites are not shocking cutting-edge things that have never done before, but relatively boring simple tasks that involve grabbing data from databases and showing them to users via templates. Every decision you have to make is a cost, and if you have a small team, having basic naming convention decisions and directory location decisions already made accelerates development. There's a big advantage to following conventions when you want others to work with you, because different Rails applications look quite similar in many ways.
I have not had trouble overriding Rails when I needed to override something specific.
Btw, I like the original article. There's nothing that's good for all cases, so it's very important to understand what something is good and not good at.
Sometimes, Rails’ conventions are just wrong, though.
Databases can have various constraints (uniqueness, etc.) enforced at the DB level. ActiveRecord also allows for uniqueness checks, but these are separate mechanisms. If you want to validate for uniqueness, two processes each running the same Rails app might concurrently check for uniqueness, assume validity, and then independently insert two non-unique records. At this point, your DB will throw an error. (Edit: Rails actually wraps this exception now, but if you follow the idiomatic pattern and don’t bother catching it, it just 500’s the request.) Rails is (edit: still) not wired to treat this as a uniqueness violation at all; it just has its own uniqueness validation mechanism that doesn’t even work in the most common use case for Rails.
In a concurrent environment like this with a shared DB, the only way to avoid check-and-set conditions is to just try the insert and only complain about uniqueness violations when the insert fails the DB-level uniqueness check. (Edit: Rails provides a wrapped exception for this use case, but that’s certainly not the conventional Rails way of handling uniqueness validations.)
Conventions are fine when those conventions work and actually enforce good practices. ActiveRecord in particular falls short of this. And without ActiveRecord, the rest of Rails doesn’t do much to distinguish itself from alternatives. It’s fine, but it’s not necessarily anything special.
> Rails does not, or did not when I encountered this issue, recognize the error as anything other than “whoa dude, MySQL/Postgres/whatever is complaining, check this out”
ActiveRecord has thrown ActiveRecord::RecordNotUnique for this and done the right thing for over 11 years (the exception definition got moved to a different file at that point so idk exactly how old it is.)
> ActiveRecord in particular falls short of this
> without ActiveRecord, the rest of Rails doesn’t do much to distinguish itself from alternatives.
Callbacks are pretty bad but it sounds like Rails went through several near-complete rewrites worth of changes since the last time you used it. There's a lot more in Rails 6 compared to Rails 2.
> ActiveRecord has thrown ActiveRecord::RecordNotUnique for this and done the right thing for over 11 years
I had these issues in Rails 3 when that was the newest version. I found the git blame you’re referring to here and it may have been written 11 years ago. Odd. It looks like maybe Rails 4 finally fixed this?
More to the point, the broken uniqueness validation is still there, as is the idiomatic “validate then write to the DB” race condition that leads to this issue in the first place. There’s zero correlation between stating in your ActiveRecord model that you would like uniqueness (or any other constraint) and actually enforcing that constraint in the database, where it actually works. Having an actual wrapped exception to catch is an improvement but it doesn’t fix the problem.
"This [uniqueness] helper validates that the attribute's value is unique right before the object gets saved. It does not create a uniqueness constraint in the database, so it may happen that two different database connections create two records with the same value for a column that you intend to be unique. To avoid that, you must create a unique index on that column in your database."
It's pretty clear from that text that if you want a unique index in a database, it has to be a uniqueness constraint in database itself. But that's true for any such system, that's not specific to Rails.
In most applications there are simple isolated validations you can verify without consulting the database, and other validations that can only be validated by consulting the database (such as uniqueness). Rails can do that, as can many other frameworks. I don't think that's broken, that's how things are.
Rails not only has to consult the database to validate uniqueness, but it still doesn’t know for sure even then whether the row will remain valid. So why not just insert the row and see if you get away with it?
Simply removing the uniqueness validation and relying exclusively on database indices would be strictly better. ActiveRecord dynamically infers from the DB schema which columns your tables have; it could also infer foreign key relationships and uniqueness guarantees and use them to generate pre-insertion “best guesses” about validity if the user wants to run those without necessarily inserting. But Rails is supposed to be an opinionated framework, and “just try to insert and we’ll let you know how that worked out for you, since we can’t make any guarantees otherwise” is a perfectly valid opinion.
This is not my experience. When you have to deviate, which has been quite rare for me, it’s all just ruby at the end of the day so you can do whatever the heck you want.
Every time I’ve seen an engineering organization run with rewriting the whole thing, they/we figured out 6 months later a more effective data model. That’s usually the root problem.
Rails can do many things but no framework can design a product’s data model, and when you have an excellent one Rails will sing.
Also sometimes you need some separate services for GPU/security/reasons. That’s fine.
That's why they are called frameworks, they solve standard problems in a specific way and the good frameworks provide extension points so you can customize when you need to deviate a little bit.
Can you give a specific example of when this poses a problem?
How many of those 3% who have heard or read a lot about it actually believe it is hard to estimate.
I have family that are fervent believers so this hits close to home.
If you've heard or read a lot about it, it's either because you believe it or are personally invested in it (I presume most likely due to having relationships with people who believe it).
Take a rough slice and say 10% of those people who have heard or read a lot about it are believers and the other 90% are their friends and family.
Sooo... 55 million registered republicans; Guesstimate 50% of those are considered "conservative" republicans by the terminology of the Pew poll; 3% of those have heard a lot about Q; 10% of those are believers. 55 * 0.5 * 0.03 * 0.1 and that's ~800,000 Q followers.
Is 800,000 mainstream for a conspiracy theory? I wonder how many people believe the earth is flat.
I’ve come across this as well, and having worked in VoIP the common rationale is fraud prevention, which is a real problem that does exist-but I think it’s a rationale that has been quite misapplied or perhaps better to say, inappropriately applied as a blocker for using VoIP numbers for 2FA.
In my experiences the vast majority of websites allow it -- a select few disallow. Although that group will expand. One trick I've found is to register the 2FA with a "real" number, and then port that number to a voip service. I never use a real cell phone number for anything.
“Twitter is such as mess — it’s as if they drove a clown car into a gold mine and fell in.” - Mark Zuckerberg