Readit News logoReadit News
d-man commented on Software development topics I've changed my mind on   chriskiehl.com/article/th... · Posted by u/belter
Terr_ · 7 months ago
> Java is a great language because it's boring [...] Types are assertions we make about the world

This is less of a mind-was-changed case and more just controversial, but... Checked Exceptions were a fundamentally good idea. They just needed some syntactic sugar to help redirect certain developers into less self-destructive ways of procrastinating on proper error handling.

In brief for non-Java folks: Checked Exceptions are a subset of all Exceptions. To throw them, they must be part of the function's type signature. To call that function, the caller code must make some kind of decision about what to do when that Checked Exception arrives. [0] It's basically another return type for the method, married with the conventions and flow-control features of Exceptions.

[0] Ex: Let it bubble up unimpeded, adding it to your own function signature; catch it and wrap it in your own exception with a type more appropriate to the layer of abstraction; catch it and log it; catch it and ignore it... Alas, many caught it and wrapped it in a generic RuntimeException.

d-man · 7 months ago
I think your exception model needs to match your problem domain and your solution.

I work on an Inversion of Control system integration framework on top of a herd of business logic passing messages between systems. If I were to do all over again, then I’d have the business logic:

* return success or failure (invalid input)

* throw exception with expectation that it might work in the near future (timeout), with advice on how long to wait to retry, and how many retries before escalating

* throw exception with expectation that a person needs to check things out (authentication failure)

Unless the business logic catches it, unchecked exceptions are a failure. Discussion about what is what kind of exception is hard, but the business owners usually have strong opinions taking me off the hook.

d-man commented on Why GitHub won   blog.gitbutler.com/why-gi... · Posted by u/hardwaregeek
snovymgodym · a year ago
Git is still a DVCS, even today it's not being used in the way it was designed to be used by Linus and co.

The key distinguishing characteristic is the fact that every git checkout contains the full repo history and metadata. This means a consistent network connection to the master server isn't necessary. In fact, it means that the concept of a "master server" itself isn't necessary. With Git, you only need to connect to other servers when you pull down changes or when you want to push them back up to the remote repository. You can happily commit, branch, revert, check out older revisions, etc. on just your local checkout without needing to care about what's going on with the remote server. Even if you treat your remote repo on GitHub as your "master", it's still a far cry from the way that centralized VCS works.

If you've never worked with true centralized VCS, it's easy to take this for granted. Working offline with a system like Perforce or SVN is technically possible but considerably more involved, and most people avoid doing it because it puts you far off of the beaten path of how those systems are typically used. It basically involves you having to run a local server for a while, and then later painfully merging/reconciling your changes with the master. It's far more tedious than doing the equivalent work in Git.

Now, it's important to note that Git's notion of "every checkout contains all the repo data" doesn't work well if the repo contents become too large. It's for that reason that things like sparse checkouts, git-lfs, and VFS for Git exist. These sorts of extensions do turn Git into something of a hybrid VCS system, in between a true centralized and a true decentralized system.

If you want to understand more, here's a great tech talk by Linus himself from 2007. It's of note because in 2007 DVCS was very new on the scene, and basically everyone at the time was using centralized VCS like SVN, CVS, Perforce, ClearCase, etc.

https://www.youtube.com/watch?v=MjIPv8a0hU8

d-man · a year ago
I’d say that the key distinguishing characteristic is that your non-merge interactions with GIT do not rely upon a connection to the master server.

I think it would be possible to have a DVCS without the full repo history and metadata. Doubt that it would be worth the effort though.

d-man commented on The Pentagon’s $52k trash can   responsiblestatecraft.org... · Posted by u/todd23
TrackerFF · 2 years ago
I had the pleasure of being involved in a software project where the contractor was one of the usual suspects (Raytheon, Lockheed, etc.).

Prior to this, I had no idea why defense projects were so expensive and slow. You have to understand, there are so many levels of negotiation, over the smallest changes imaginable. There's no such thing as "open source code" in these projects, everything is either modified off-the-shelf, or completely boutique stuff, and of course implemented in such a way that the clients (that would be us) can't just access the code themselves, or that clients can just build upon or make wrappers.

The contractor will send you their own techs or engineers - even if it's across the world - to fix the most trivial bugs. And it will take months or planning, budgeting, and what not.

In once instance, one contractor tech spotted a bug in the code, which some user had reported about - it was a one character fix, just a typo, really. So he fixed it on the spot, along with the rest of the stuff he came for.

A couple of weeks later he comes back, and reverses the bug. He had told his manager about the bug fix, and was berated for fixing in. In order to fix that bug, it had to be reported correctly, go through software update meetings, go through budgets, and the whole nine yards.

The bug was reported the correct way, and many months later he came back to fix it (again).

The whole process of specs and updates was like pulling teeth.

d-man · 2 years ago
s/defense/regulated industry/ I found a bug in my company’s software product once. The code was using the user’s display name in a lookup rather than the username. I grabbed a QA engineer, he agreed it was a bug, and he put the wheels in motion. I don’t think that fix ever made it into a release.

Our software was part of the stack that our regulated customers were using to document their compliance. Every year or two, they would audit our development process to insure that untoward code wasn’t slipping into the release. Getting the fix into a release would have required that the bug be prioritized, fixed and qa’ed. Never became important enough. It burned me at first, but I’m not sure it was the wrong outcome.

d-man commented on JMAP – a modern email open standard   jmap.io/... · Posted by u/tambourine_man
taftster · 2 years ago
Would love to use them. But the pricing is too much.

I need a custom domain (or three). And I have a family of 6 people.

So that's $5 / user / month = $30 / month = $360 / year.

Unfortunately, that's not justifiable for me. And thus why I'm stuck using Gmail with a custom domain.

d-man · 2 years ago
I have a similar situation and I think that you might be able to have 1 standard account and 5 basic accounts in this situation. Depending on what capabilities the other 5 people need.
d-man commented on Independence, autonomy, and too many small teams   kislayverma.com/organizat... · Posted by u/kislayverma
JamesBarney · 5 years ago
This is why I hate Agile. It's much harder to convince management that they won't be getting a pre-determined set of functionality by a certain date (we will have feature x,y and z developed by October 13th) than to convince a team to stop doing upfront planning and design. So almost every project I've been on that was "Agile" was actually waterfall sans upfront planning and design.
d-man · 5 years ago
IMO, the core principle of agile is “early feedback means smaller corrective action”. Everything else is just process to achieve that without running afoul of the evil twin “noisy feedback means constant corrections hunting for the solution.”

Agile goes wrong when you don’t get and use good feedback.

You do upfront planning and design, but you only do enough to establish your general course of action. Because good feedback requires context about your goals. If you don’t care where you’re going, then any direction will get you there.

d-man commented on Patio11's Law: The software economy is bigger than you think   secondbreakfast.co/patio1... · Posted by u/secondbreakfast
save_ferris · 5 years ago
AI-driven software development down the road could theoretically commoditize developer skills.

I sometimes wonder how many decisions I make per day that an AI could replicate in some repeatable way. Who knows, but nothing lasts forever.

d-man · 5 years ago
I have doubts about AI driven end results, but I could totally see AI created domain specific languages

u/d-man

KarmaCake day2May 14, 2020View Original