HNHacker News
TopNewBestAskShowJobs

SomeCallMeTim

4,107 karma · joined February 17, 2010

I'm a consulting software architect and freelance CTO. I come in and rescue small businesses from code disasters, and occasionally am given the chance to prevent the disasters to begin with. I also used to develop video games, and have pivoted that skill to gamification consulting.

https://coderescue.com

submissionscomments
SomeCallMeTim··on YDB – An open-source Distributed SQL Database
You can always handle it at the application level.

The trick is that it's better to have the extra guard rails. And all of Couchbase, Yugabase, and Citus support foreign keys even with sharding and replication, so that's not an issue when the DB supports it.

SomeCallMeTim··on YDB – An open-source Distributed SQL Database
If that comparison table is right about "no foreign keys," that's a showstopper for me. :(

Back to looking at Couchbase, Yugabase, or Citus for my distributed SQL.

SomeCallMeTim··on Elon Musk makes $43B unsolicited bid to take Twitter private
When the NYT says something that is factually incorrect, they issue a retraction. Everything they do say is fact-checked, even if they make mistakes.

That's not even close to "lying".

"Misrepresentation" can be a grey area that blends into framing and emphasizing certain parts over others. I didn't include misrepresentation on my list, and that was intentional. You can disagree with how an event is reported without the report containing any actual lies--and that falls under "a matter of opinion."

Things bouncing around "Dem Twitter," whatever that means, are hardly the fault of the NYT or ACLU. Whatever was said, it didn't enter my bubble, in that I never saw a claim that Rittenhouse shot any black people.

But I don't find Twitter useful, so I don't follow anything on it. Instead I read the NYT, and while I don't always agree with their editorials, I generally feel the information they publish as news is as accurate as they can figure out how to make it.

> It'd be like ordering the USPS to open letters and report people if they plotted their stupid Dollar Store peasant rebellion using paper letters, or tapping everybody's phones.

No, it really, really isn't like that.

It's more like shutting down stations from using the licensed public airwaves to disseminate incitement to violence or to broadcast blatant lies--and then later argue in court that "no reasonable person" should have believed those lies. I'm sure you know the latter actually happened, and the former was the law of the land until Reagan managed to tear down the Fairness Doctrine. [1] Which was found to be compatible with the First Amendment, and the only reason we don't have law to replace the original FCC rule is that Reagan vetoed it.

Regardless, my point is that there is potentially a way to limit speech that doesn't prevent people from complaining about the government but that also prohibits people from outright lying about the government (or other facts).

[1] https://www.reaganlibrary.gov/archives/topic-guide/fairness-...

SomeCallMeTim··on iViewed your API keys
> in the event of bugs or security vulnerabilities in your application

The article talks about keys being published as part of the web page configuration.

That's far worse than "they could hack a server and gain its credentials!"

SomeCallMeTim··on iViewed your API keys
It's simply software engineering malpractice to have ever sent any of those keys to the client.

There is no excuse.

It is a well-solved problem to handle secrets; there are better and worse solutions. An environment variable for a server can get exposed if the server is hacked; a secret sent to a client is exposed the second the server goes live. One of these is much worse than the other.

There are also better solutions than environment variables. A competent team would be aware of many options. Whoever coded this is not competent, full stop. It's not that they didn't finish; these services should never have accessed from the client at all.

SomeCallMeTim··on iViewed your API keys
Or outsourced to the lowest bidder.
SomeCallMeTim··on Elon Musk makes $43B unsolicited bid to take Twitter private
No, there's no evidence.

But it seems trivially obvious that, if Musk owned Twitter, that account and ones like it that target Musk will disappear.

As much as I like Tesla and respect SpaceX, I do note that Musk rarely misses an opportunity to benefit himself.

The whole crypto market manipulation event is one obvious example; what abstract ethical behavior was driving that debacle? I say there was none and that it was a transparent attempt to make money while trolling the crypto community.

Not that I actually fault him for doing that. It just points out how broken the entire cryptoverse is. But my point is that he is prone to doing things for his own benefit and/or without regard for the consequences.

What I haven't seen is evidence that he would take some kind of high moral position on free speech absolutism against his own self interest. To me it's more a question of "prove that he won't do it" than to prove he will.

If he ends up buying Twitter, we'll find out either way.

SomeCallMeTim··on Elon Musk makes $43B unsolicited bid to take Twitter private
"Bad" platforms aren't bad because "we disagree with them."

They're bad because they're lying to people en masse and inciting rebellion.

And yes, I absolutely think that behavior that reaches that bar should be squelched. The dangers of enabling the spread of misinformation are entirely too visible in today's society.

The slippery slope argument is garbage in this case. No one has been banning political speech from major platforms. Heck, they bent over backwards to allow Trump and company to say the most outrageous things for years before finally stepping in and putting a stop to it.

And Parler being deplatformed for enabling the public organization of rebellion against the United States hardly seems like an "oh no, we're becoming Nazis!" moment.

It's only the most extreme views that result in deplatforming; "your view on taxes is different than mine" will never rise to that level, so there's no slippery slope.

So in what case can we justify enabling platforms to lie to people and incite violence? It simply can't be done.

SomeCallMeTim··on I Am Seriously Considering Going Back to Desktop Computers (2020)
Well, that's why I use cross-platform tools. Heck, I often can simulate without even the Android emulator, if there's a Web or PC target for the cross-platform environment.
SomeCallMeTim··on Developers spend most of their time figuring the system out
"Fewer bugs" needs to produce 2x productivity over the productivity of the two developers independently in order to actually be a benefit. Code review and using typesafe languages can also catch nearly 100% of those bugs as well, without the 50% performance penalty.

"Keeps people on task" seems like management-think adjacent to "butts in chairs in an office" requirements: There's a fear that someone might be "wasting" time by being distracted, when you seriously need to contemplate problems sometimes.

I'd need to see that "actual evidence" that we're allegedly discarding. Two programmers with two computers clearly could produce twice the productivity if they're both strong programmers. When I've been pairing with people I simply do all the work. I might get 1-2 comments per hour about a missing semicolon that I would have discovered the moment I tried to build. The claims of the pairing advocates are pretty hard to believe, and I don't see extraordinary evidence to back their extraordinary claims.

As I intimated above, the only way it would work is if the developers are junior (or mediocre) enough to be prone to contributing 0.5x or less productivity left to their own devices, so that the two developers' inadequacies at programming complement each others' and you get a 1.5x productivity out of them combined or something. And I do suspect that companies use that fact to hire less competent developers and make them at least reasonably productive; Pivotal does 100% pairing, and sells it hard, but note that they're paid per developer hour and so actual productivity per-developer isn't what they're necessarily what they wanted to optimize.

As to your Edit: The exact thing I'm objecting to is 100% pairing, which is practiced at some companies like Pivotal. Or worse, 100% mobbing, which is more than two people at one screen.

SomeCallMeTim··on Developers spend most of their time figuring the system out
Sorry, don't have the references handy.
SomeCallMeTim··on Developers spend most of their time figuring the system out
Occasional pairing, especially for knowledge transfer, is great.

It's the 100% pairing, or worse, 100% mob programming (up to six people with one screen!) that I can't believe would ever be more efficient than the programmers working independently.

Sure, have a party and mob-program for fun for an afternoon, or solve a particularly sticky problem that way, or use it to transfer knowledge about the system to the wider team. Have a blast, and teach everyone something useful at the same time. By all means.

Just don't pretend (as pairing/mobbing advocates do; not you) that two people sitting at a computer can be as efficient at day-to-day coding as two people coding separately, unless at least one of the two is a junior or near-incompetent developer who would contribute negative productivity on their own.

SomeCallMeTim··on Developers spend most of their time figuring the system out
That's documenting an emergency, all-hands-on-deck response to a crisis.

I absolutely can pair for such an event. I'll pair for knowledge transfer. I'll pair for fun. If every second counts, or if the goal isn't maximum productivity throughput, the sure, pair away.

My point is not that it can't help for world-class developers, but rather that two world-class developers working on routine coding are absolutely not more efficient than two world-class developers working separately.

And people who advocate for pairing typically advocate for 100% pairing. Which can be fun but it won't be more than 2x as productive as two world-class developers working independently.

SomeCallMeTim··on I Am Seriously Considering Going Back to Desktop Computers (2020)
Exactly. I spill drinks periodically, but I don't ever forget my keys.

I don't ever let them leave my pocket, of course, so I'd need to forget my pants to forget my keys...but we did agree not to get started on personality disorders. ;)

SomeCallMeTim··on I Am Seriously Considering Going Back to Desktop Computers (2020)
I do all of my mobile development cross-platform.

99% of the app dev happens on Android, and I just test on iOS when I need to--and for that I have an older, cheap, MacMini.

SomeCallMeTim··on I Am Seriously Considering Going Back to Desktop Computers (2020)
Not the OP, but I just lost a keyboard to a spilled drink as well. Not all of us have perfect dexterity and spatial awareness at all times.

I haven't lost a laptop screen to dropping it, though I have had a laptop screen spontaneously fail--two in fact. Both were HP laptops. Not buying those any more.

SomeCallMeTim··on Developers spend most of their time figuring the system out
The studies I've seen about pairing show that it's OK for beginners or lower-skill developers, but absolutely less productive for expert/senior developers.

So yes, you're correct.

SomeCallMeTim··on Developers spend most of their time figuring the system out
That just can't be more productive over the long term, though.

Lets say, hypothetically, that you can use it to ramp any programmer up to being an expert on the system. Maybe that takes two months? Or even six months? Once you have a team full of experts, you're now spending two programmer hours to do every bit of work that could have been done in one programmer hour by a single expert.

Unless you have such incredibly high turnover that the period to transform a developer into an expert is close to or less than the average tenure of an employee, in which case your team has other issues that likely need to be addressed, because why are people jumping ship so quickly if it's such a great place to work? (For example: If it takes six months to produce an expert, you'd need to have an average tenure of less than or equal to six months to really benefit from pairing; anything more and the 50% performance penalty has to eat into your overall productivity.)

On top of that, I have never been at a job where it's taken me more than a week to get up to speed on a system, or at least to the point where I can simply ask the occasional question of the experts on a team to get me unstuck. Even if the average developer took a month or two, pairing beyond that point is simply fun and not more productive than two programmers developing independently.

Unless one of the developers is otherwise likely to produce negative productivity on their own, I suppose. I've worked with that kind of developer as well, and the right answer is to eject them from your team, not pay other developers to babysit them.

SomeCallMeTim··on Generics can make your Go code slower
"Zero-cost" in that context refers to runtime performance. It always refers to runtime performance.

And code bloat, as I've said elsewhere, is vastly overblown as a problem. Another commenter pointed out that link-time optimization removes most of the bloat. The rest is customized code that's optimized per-instantiation.

Slow compiles are an issue with C++ templates. They're literally a Turing-complete code-generation language of their own, and they can perform complex calculations at compile time, so yes, they tend to make compiles take longer when you're using them extensively. But the point I was making was about runtime performance. That's why C++ compilers often perform incremental compilation, which can limit the development time cost.

Debug builds can simply be slow in C++ with or without templates. C++ templates really don't affect debug build runtime performance in any material fashion; writing the code out customized for each given type should have identical performance to the template-generated version of the code, unless there's some obscure corner case I'm not considering.

SomeCallMeTim··on Generics can make your Go code slower
Using templates in C++ can make code faster, though. Because you can write the same routine with more abstraction and less indirection.

I've used C++ templates effectively as a code generator to layer multiple levels of abstractions into completely customized code throughout the abstraction.

SomeCallMeTim··on Generics can make your Go code slower
In my experience, code bloat from templates is overblown.

Inlining happens with or without template classes.

SomeCallMeTim··on Generics can make your Go code slower
> "monomorphize everything" approach can explode your code size surprisingly fast.

It can in the naive implementation. Early C++ was famous for code bloat and (apparently) hasn't shaken that outdated impression.

In practice, monomorphization of templates hasn't been a serious issue in C++ for a long time. The compiler and linker technologies have advanced significantly.

SomeCallMeTim··on Generics can make your Go code slower
In C++, generics (templates) are zero-cost abstractions.

So no, generics do not de facto make code slower.

SomeCallMeTim··on Tell HN: There needs to be a “right to speak with a human”
>potentially affected non-customers

There is a reason that most companies make it hard to talk to a human before you've already exhausted all other support channels.

Make something like that a right and people will use it. Maybe 99% of the time you won't need a human for a particular service in a month, but there will be users who are on the phone every day, maybe multiple times per day.

And your monthly fee would need to exist to pay for the users who abuse the right.

SomeCallMeTim··on Tell HN: There needs to be a “right to speak with a human”
But you can comply with ethical business practices without hiring employees to deal with hundreds of thousands of callers. Automated moderation is a thing, and actually responding to support tickets instead of ignoring them is also a thing.

I think you underestimate how many services you rely on that wouldn't be able to survive with a legal requirement that they were required to take calls from any human that wanted to contact them. Presumably those services are useful to you and you wouldn't want them to be closed down, yes? And similarly, you wouldn't want to be paying the $50-100/month for each service that would likely be required if every single one had to support a fully-staffed call center to deal with not only customers but potentially affected non-customers (as in the Giphy example in the parallel comment thread).

SomeCallMeTim··on Tell HN: There needs to be a “right to speak with a human”
No, Giphy really doesn't need the "right to speak to a human."

It may need (I don't know if they have this already, and I don't care to do the research) a "Report" button with various options including "Hate speech" and "Takedown Request: Moral Rights" and similar.

Think about it: A political image that's offensive to one side or another could generate hundreds of thousands of protest calls, if everyone had the right to speak to a human. I mean, if you knew you had this right, and you wanted them to take down an image, then of course you're going to demand the right to talk to someone. To say that you don't like the image.

Which they could just as easily handle with a Report button and a single review of the image by a human to check to see that it satisfies the ToS.

And that's just one image. Every one that goes viral could result in hundreds of thousands of calls.

No, it really just doesn't scale. If you give people the means to call you, you need to be able to handle way more people calling than you have customers, and some companies that provide a valuable service simply don't have the margin.

SomeCallMeTim··on Tea – the toolkit that builds the Internet
Didn't see that, but...

Now if someone successfully publishes a hack that steals everyone's data and/or creates a botnet everywhere it's installed, there's no way to actually pull it down and override it.

Unless there's a centralized authority with the ability to do that, in which case it's not decentralized and we're just changing who controls it.

SomeCallMeTim··on Tea – the toolkit that builds the Internet
Exactly, and:

>In day to day development our decentralization increases reliability (leftpad is a sore memory)

...leftpad became a problem when a commonly-used deep dependency was ripped out of the ecosystem. And because npm is centralized, they can now prohibit anyone from causing that kind of damage again, ever.

Whereas in a decentralized system where people are pointing at random GitHub accounts? Yeah, they could totally delete the GitHub account (or force-push an empty repo) and cause the same exact problem as leftpad.

They are claiming to solve a problem using decentralization that was caused by too much decentralization. And then using Deno as an example install...which has the exact same problem in its ecosystem.

Fail piled on to more fail.

SomeCallMeTim··on Cloudflare have made it impossible for me to unsubscribe from marketing emails
But the CAN-SPAM act has built-in penalties:

> Q. What are the penalties for violating the CAN-SPAM Act?

> A. Each separate email in violation of the law is subject to penalties of up to $46,517, and more than one person may be held responsible for violations. For example, both the company whose product is promoted in the message and the company that originated the message may be legally responsible.

https://www.ftc.gov/business-guidance/resources/can-spam-act...

That's ... not a trivial amount of money.

Wait for them to send you a dozen spam, and it's even more substantial.

SomeCallMeTim··on A curated list of falsehoods programmers believe
It has a name. "Gender fluid."

And just because you don't understand it doesn't mean that it isn't some peoples' life experience.

Reference: I know a child who is not at all rebellious or attention-seeking but who expresses this as their inner experience.

Dismissing that experience is rude.

← PreviousPage 5 of 34Next →