1,448 karma · joined January 17, 2017
Last week coyotes took him (in part of the country quite far from King County) at night right next to our house, right next to his most familiar territory, and not 20-30 feet from a number of structures he routinely climbed on top of but which coyotes would have no chance of following.
I currently can’t help but take a dim view of coyotes at the current moment, for selfish reasons. I hadn’t thought this to be at all likely given the apparent caution the cat took, but I did spent a couple of years building up a good relationship with that sweet guy.
I wonder if there is any good way for either side (or both sides) to break out of that cycle.
But frustratingly, the AT&T website appeared to allow you to replace your current (auto-pay) billing method with some other billing method, but I didn't see any way to remove all current billing methods, which makes just stopping paying nigh impossible. :-(
We all know that there are other countries where far, far worse abuses of power take place, but I've wondered if the U.S. might be at some really unfortunate nexus of strong contract law enforcement + particularly poor consumer protections that leads to these particularly madding subscription cancellation-type services discussed in this thread.
I first spoke with a customer service agent whose accent I couldn't understand very well. I have him ALL my account information. He mumbled something about being unable to forward me to the actual customer service agent (then what is your role, dude?), then came back on and said he couldn't forward me and so I would have to call them myself.
He gave me the same number I had already called. I pointed this out to him and he gave me some other number, which is where I'm listening to on-hold music now.
Right now the on-hold music is interrupted to sell me shit.
It seems (to me) as if such behaviors were stamped out more rapidly not only would fewer customers be affected, there would be less incentive to try the scam(ish) behaviors in the first place.
If I don't bookmark it now then I'll never be able to find it again. :-)
Without including that measurement there exist some rather large perverse incentives.
1. It doesn’t support code blocks, so if you need multiple lines or statements you have to define a function elsewhere. 2. To get exhaustiveness checking on int-backed enums you have to fiddle with compiler preprocessor directives.
And for #2 any data associated with each enum variant is left implied by C# and has to be inferred from a reading of the surrounding imperative code, whereas in F# the union data structure makes the relationship explicit, and verifiable by the compiler.
let bar =
if foo then
7
else
11
or let bar =
try
// code that might throw
7
with ex ->
11
and will ensure that both/all code branches return a compatible type for the `let` binding.Whereas in C# you have to do like
int bar;
if (foo) {
bar = 7;
} else {
bar = 11;
}
And C# will let you know if you omit the `else` on accident ...Except that most C# developers do
int bar = 0; // or some other default value`
to get the red squiggly to go away while they type the rest of the code, unknowingly subverting the compiler's safety check.This doesn't seem like a big deal given these examples. But it becomes a much bigger deal when the if/else grows super large, becomes nested, etc.
Also, basic object initialization in C# has turned into a nightmare with recent versions. You need a flowchart to select among the 18 syntax options which suite your current needs.
With F# (and other newer languages), record fields are either `T` or `T option`. No need to worry about whether the value needs to be computed in a constructor and then remain immutable, whether it needs to be initialized by an object initializer and/or a constructor or not, whether it needs to remain interior-ly mutable throughout the life of the record, and so on. (Although as I recall you do still need to consider null values assigned to non-nullable references in your F# code that consumes C#.)
Is higher GDP per capita truly a strong argument against consumer protections?
Statically-typed queries written in a mini-DSL within your application language seems like such a joy!
But then the configuration is a hassle. The DbContext lifecycles are a hassle. The DbContext winds up a big ball of mutable state that often gets passed all up and down your call stack, reducing the ability to reason about much of the code locally. Was this instance initialized with or without change tracking? How many and what changes have been applied? Were these navigation properties lazily or eagerly loaded?
And it promises to keep your domain persistence ignorant with its fluent configuration syntax. But then you have compromise on that here, then compromise in it there.
Pretty soon, you realize that you started out building a project for domain X or domain Y, only to realize that you're trying to shoehorn domain X/Y behavior into your Entity Framework app.
And then none of those techniques work as well as manually typing out a required constructor which hard-enforces that required data be priced upon object initialization.
I understand required vs optional immediately a la Rust and F# (ignoring for a moment F#’s null awareness) but as a 17 year C# dev, I’ve had to create an initialization chart to keep straight all of the C# techniques.