If I ran an engineering team and I found out my $200k per year devs were spending time vibe-coding SaaS clones to save the company $299 per month, instead of working on improving our own product...
I'd be pretty mad about it.
YAGNI should not imply:
❌ Never design ahead
❌ Never build abstractions
❌ Short-term thinking is good
YAGNI means:
✅ Delay commitment until information arrives
✅ Prefer reversible decisions
✅ Pay design cost when value is proven
To get to the metaphorical highway when building software we need to reorganize existing code so it can be easily extended with the new functionality. In practice, this often means introducing better abstractions but can also be as simple as moving or renaming units of code.
Software development is like navigating through a cornfield to reach a destination. The direct route to the objective delivers progress at each step but it is not the shortest path.
https://t.co/wTsSqNNQPE
The shortest path requires choosing a lateral direction to get out of the corn and onto a highway. The lateral movement feels like a lot of effort for little or no gain, but it leads to a clear path requiring less effort for the remainder of the journey.
Make the change easy then make the easy change. And don't wait for permission to do so. Developers who are serious about code quality will tidy first.
https://t.co/jSb5CNMuxA
Attaching transaction context to every log message saves hours of debugging, and in Node.js, this is easy to achieve by using Async Local Storage.
```
server.ext('onRequest', (req, h) => {
logger.addAttribute('requestId', req['id']);
});
```
https://t.co/Njtmqug5Zv
@cryptoHuligan@immersve@arbitrum@Mastercard You are describing asset opt-in which allows the account to receive the asset. An asset approval is where the asset holder grants authority to another account to spend on its behalf.
@cryptoHuligan@immersve@arbitrum@Mastercard It matters but there are tradeoffs. Algorand is hands down superior with regards to finality but it doesn't have a token approval standard. EVM has token approvals but requires additional mitigations to work around the finality question.
@cryptoHuligan@immersve@arbitrum@Mastercard The above transactions are using our approval-based spending mechanics. This simplifies the card funding UX by using standard ERC-20 approvals.
Assigning pet names to applications is easy and powerful. Your applications will be referenced in hundreds of places such as docs, logs, and client integrations. Pet names make those references concise and unambiguous.
https://t.co/0Ux28J4b76
TIL any nodejs object can implement `[util.inspect.custom]()` to make nicer debug output. Making use of this to improve logging of Algorand transactions.
https://t.co/eJX1QYHewn
@johncutlefish Product design work is encapsulated as higher level features, epics or initiatives. Engineering work is encapsulated as stories. They are tracked with separate boards and lifecycles but the former provides context for the latter.
Node.js stream.pipeline() call can be awaited without promisifying. It handles all errors with a single catch. And file descriptor leaks are avoided because all streams are closed automatically when an error occurs.
Didn't upgrade Git in a while. I feel so safe now that Git comes with a trigger warning when you inadvertently create an oppressive master branch.
https://t.co/Rm9ReL5tDc