[-] lysdexic@programming.dev 5 points 1 month ago

Is there something else I’m not seeing?

Possibly payment processing fees. Some banks/payment institutions charge you for a payment.

[-] lysdexic@programming.dev 5 points 4 months ago

the whole point of agile is to be short term

Not really. The whole point of Agile is to iterate. This means short development cycles which include review and design rounds to adapt to changes that can and will surface throughout the project. The whole point of Agile is to eliminate problems caused by business, project, and technical goals not changing because planning is rigid and can't accommodate any changes because the process does not have room for those.

This is why this whole "things need to be planned" crowd are simply talking out of ignorance. Agile requires global planning, but on top of this supports design reviews along the way to be able to face changing needs. This requires planning in short-medium-long terms.

Don't blame Agile for your inability to plan. No one forces you not to plan ahead.

[-] lysdexic@programming.dev 5 points 6 months ago

This is a really important principle of making APIs that people don’t really talk about. There’s a fine balance between hardcoded literals and full-gui options menu.

I think this principle might fly under some people's radar because it has been a solved problem for decades.

Even Makefiles don't require changes to the file to be configured. They take environment variables as input parameters, an approach that directly and indirectly permeated into high-level build systems. One example is the pervasive use of the VERBOSE flag.

After all these years I only had to tweak build config files by hand when I wanted them to do something that they were not designed to do. All build tools I know don't require it. The ones linked with IDEs already provide GUIs designed with this in mind.

[-] lysdexic@programming.dev 5 points 9 months ago

I found that it was worth sharing this list of IP protocols because more often than not developers are only faced with two of them, TCP and UDP, but there are over a hundred of IP protocols, most of which are never discussed or see the light of day. One I find particularly interesting is UDP-lite.

[-] lysdexic@programming.dev 5 points 9 months ago

Upgrading a major C++ compiler version was never free in my experience, but even when working in a codebase with ~2M LOC the upgrade (e.g. 14 -> 17) was something that could be prepared in a set of feature branches by one person over the span of one, maybe two weeks.

That greatly depends on your project, what dependencies it has, and what's involved in the migration. For example, I recall a previous project I worked on that experienced a considerable amount of non-trivial issues when upgrading to C++14 due to unforeseeable curve balls. One of them was caused by a third-party dependency toggling constexpr versions of its member functions only on C++14, which caused a bunch of obscure linker errors as old symbols were no longer available.

[-] lysdexic@programming.dev 5 points 9 months ago

Push notifications that aren’t specifically topically opted into get blocked so fast on my phone. I have no patience for wasting my time earning someone else advertising dollars.

I agree. The article also points out this fact. Quoting the article:

Another challenge is that irrelevant or unwelcomed pushes risk having the user disable notifications, uninstall apps, or start ignoring them due to low usefulness. This results in a permanent loss of a channel for sharing timely, useful information, leading to reduced app usage. Unfortunately, as Twitter found, most recommendation engines take a myopic view, over-optimizing on immediate user responses at the cost of long-term satisfaction.

Personally, this problem is so pervasive that I kind of developed a pavlovian reflex to notification dialogs to cancel all without thinking about it.

1
1
1

TL;DR

At last the experiment is over, and CMake 3.28 has official support for C++ 20 named modules enabled without having to set the CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API variable.

1
1
1
1
1
1
1
Custom Iterator (biowpn.github.io)
[-] lysdexic@programming.dev 5 points 1 year ago

What the fuck am I reading?

33
2
UX patterns for CLI tools (lucasfcosta.com)
[-] lysdexic@programming.dev 5 points 1 year ago

The commit history I looked through has multiple commits for something that should realistically be a single “linted the project” commit. It’s valid criticism in this case.

I don't agree. The trunk features multiple typo fixes and whatnot, but they are days apart and spread over weeks on end.

If anything, this shows that no one is contributing to the project, and people like the blogger wasted more effort writing posts on how no one is doing anything while they themselves do nothing at all, and to make matters worse they criticise the ones actually contributing something.

If the blogger really feels strongly about this, he should put their money where their mouth is and lead by example.

[-] lysdexic@programming.dev 5 points 1 year ago

From the perspective of hiring people he turned this from a “nice work debugging a problem, might be a useful candidate” to “tries getting low quality code merged for vanity reasons, let’s avoid that guy”

The shit storm he brew up in response to getting feedback on his very first pull request is way more concerning than churning out low-quality code.

Coding skills can be improved, specially from the first pull request onward. Toxic behavior such as putting up very public smear campaigns in response to getting feedback on his very first patch submission is a major red flag, and is as toxic as it gets.

[-] lysdexic@programming.dev 5 points 1 year ago

Interesting viewpoint, but I think the applications aren’t at fault: The operating system should ensure that the user has control of the computer at all times.

The whole point us that the OS does ensure that the user has control of the computer, at least as far as a time-sharing system goes. The problem is that the user (or the software they run) often runs code on the main thread that blocks it.

The real-time mentality towards constraints on how much can be executed by a handler is critical to avoid these issues, and it should drive the decision on whether to keep running a handler on the main thread or get it to trigger an async call.

[-] lysdexic@programming.dev 5 points 1 year ago

There is a lot of doubling. Why the heck is there Dart/Flutter? Just use Javascript/TypeScript.

This blend of comment was once targeted at TypeScript. Still is.

The truth of the matter is that the purpose of tools is to help people achieve their goal. JavaScript is awfully broken, and many people have been investing their time to come up with solutions to fix it. TypeScript is one of the approaches, but Dart is another one. JavaScript doesn't go away because it's the de facto standard to run arbitrary code in a browser, and it carries decades of legacy code. Thus people try and try. TypeScript is now on its 5th major release, and there's still plenty of work to improve upon the mess that's JavaScript. No wonder corporations like Google invest their resources building alternatives.

[-] lysdexic@programming.dev 5 points 1 year ago

Focusing on code coverage (which doesn’t distinguish between more and less important parts of the code) seems like the opposite of your very good (IMO) recommendation in another comment to focus on specific high-value use-cases.

The usefulness of code coverage ratios is to drive the conversation on the need to track invariants and avoid regressions. I agree it's very easy to interpret a metric as a target to optimize, but in this context coverage ratios is primarily used to raise the question on why wasn't a unit test added.

It's counterproductive to aim for ~100% but without this indicator any question or concern regarding missing tests will feel arbitrary. With coverage ratios being tracked, this topic becomes systematic and helps build up a team culture that is test-driven or at least test-aware.

Code coverage is an OK metric and I agree with tracking it, but I wouldn’t recommend making it a target. It might force developers to write tests, but it probably won’t convince them.

True. Coverage ratios are an indicator, and they should never be an optimizable target. Hence the need to keep minimum coverage ratios low, so that the team has flexibility to manage them. Also important, have CICD pipelines export the full coverage report to track which parts of the code are not covered.

The goal is to have meaningful tests and mitigate risks, and have a system in place to develop a test-minded culture and help the team be mindful of the need to track specific invariants. Tests need to mean something and deliver value, and maximizing ratios is not it.

view more: ‹ prev next ›

lysdexic

joined 1 year ago
MODERATOR OF