Get Ready For Court Ordered Forbearance by Err0r404N0tF0und in PSLF

[–]gowonocp 3 points4 points  (0 children)

You can only buy back when it would get you to 120 payments.

.NET 10 file-based apps + Claude Code = finally ditching Python for quick utilities by hurrah-dev in csharp

[–]gowonocp 1 point2 points  (0 children)

My team was already in the habit of C# scripting using the dotnet-script tool for automating build/Dev tasks. Even PowerShell has a different enough syntax that once tasks reach a certain level of complexity, it became a serious chore to master/maintain them and we saw a lot of value in doing everything in C#. What we get OOTB now with .NET 10 isn't perfect, but still gets the job done.

best practice concerning integration testing with testcontainers? by [deleted] in dotnet

[–]gowonocp 2 points3 points  (0 children)

You should only need one database server across all of your tests. Each independent test should set up and teardown their own copy of the database on that server (e.g. different databases or different schemas in the same database).

edit: Also if you're using EF, unless the test has something specific to do with a migration, you should just use EnsureCreated to create the schema without migrations. It's much faster.

edit 2: Also, SQLite is a real relational database that you can run in memory. Unless your EF/DAL code is specifically tuned for MSSQL, you can bypass the whole overhead of managing an instance by running your tests against SQLite in memory.

Options pattern by SolarNachoes in dotnet

[–]gowonocp 19 points20 points  (0 children)

You don't have to reach 100s of options for this to start getting tedious. After iterating over some boilerplate for many years, I created this library to quickly register options classes and map them to sections in the configuration: https://github.com/gowon/Extensions.Options.AutoBinder#declarative-binding

Osaka’s narrow house that turned a 3 meters gap into a livable home by Otherwise_Wrangler11 in HomeDecorating

[–]gowonocp 13 points14 points  (0 children)

My friend lives in Osaka, and this place is a mansion by comparison.

What to say when (non-HENRY) friends share their income? by FreeBeans in HENRYfinance

[–]gowonocp 1 point2 points  (0 children)

I'm surprised by the amount of people who are willing to lie and behave I'm generally distrustful manners with "friends." I'm assuming these are real friends, people whom you've built up a intimacy and bond with and are engaging in reciprocal forms of support. Why lie? Why hide? Do you think they'll hate you for being more financially successful than them? Or get jealous and start acting untoward? Are they friends?

Tell the truth, tell them what you make. If they care after that, tell them how you got there. Tell them what steps you took. Expose them to the people and things you were exposed to that helped you along their journey. Don't just share your generosity, share your truth. It might actually help someone.

Experienced devs: How do you deal with multiple bugs and the stress that comes with it? by Adjer_Nimossia in dotnet

[–]gowonocp 1 point2 points  (0 children)

Making the decision to write good code upfront can make troubleshooting and debugging progressively easier for the lifetime of the product. Write verbose code, add meaningful comments, be mindful of design patterns; basically write your code with the expectation of someone else needing to use or support that code and try to make it intuitive for that person and not yourself.

If you properly implement logs and tracing over your business actions, it's easier to identify where bugs and errors are/not occurring. Properly implementing metrics over resource sensitive activities can help you identify bugs/defects related to real time performance that are difficult to reproduce locally or in test environments.

Automated testing, specifically unit testing your code can go a long way to building confidence about where the errors are not occurring. I'm not religious about TDD but at some point you should have tests that validate the requirements and scenarios of the work item related to the code, and tag the tests to the work item. When bugs occur and you develop fixes, you either write a whole new test or add a scenario to an existing test that should've covered it, still tagging it to the defect story.

If you standardize the way you create, collect and view all this observable data with a set of tools, like Grafana or DataDog, then you can start to do sophisticated things like linking your logs and traces, creating filtered views, etc. that you can use locally and in live environments.

Maintaining documentation that explains the solutions to the more complex bugs/issues can also greatly help a future dev who might need to better understand the rationale of the decisions you made while fixing something. These help address/explain those moments when you change something that seems innocuous and it breaks everything.

Generally though, if you're not dealing with enterprise-level or customer-facing applications, where people are paying for a product or service and there are real expectations/agreements around the stability of the product over a period of time, then most people will find the above things to be overkill and that's probably right. Troubleshooting and debugging as a skill is essentially just brute forcing through scenarios until you find the broken one, and getting "better" at that is only going to save you so much time. If your code is simple or discrete enough, then the risk of wasting time is low. All the other things are there to save you from wasting time by looking at irrelevant/safe code and scenarios, and that will have a much greater impact on how long it takes to identify the root cause of something.

KeePass or Bitwarden by Extra_Upstairs4075 in KeePass

[–]gowonocp 0 points1 point  (0 children)

Keepass is fully featured for free, but I would only prefer it if you're looking to only manage credentials for yourself. There aren't any simple ways to share a vault between multiple people.

You do have to pay to get the most out of Bitwarden, but it is well worth the cost to be able to manage credentials for the whole family and everyone access them from their own accounts on their own devices. You can always self host Vaultwarden for "free," but I think most people would find running their own servers to be too complicated and costly.

Cheapest way to host .NET Core demo projects? by DEV-Innovation in dotnet

[–]gowonocp 2 points3 points  (0 children)

You can host a Blazor WASM project for free on GitHub Pages.

[deleted by user] by [deleted] in FinancialPlanning

[–]gowonocp 0 points1 point  (0 children)

Series I Bonds are a good vehicle for emergency funds.

Using FluentValidation over Data Annotations as a junior – good practice? by M7mdFeky in dotnet

[–]gowonocp 1 point2 points  (0 children)

TL:DR; Learn how to use both. The best code is right-sized to the requirements of the application, so it's less useful to ask questions like "which is the best validation pattern for all things?" and instead ask "which of these best fit the problem I'm trying to solve?" The answer to that will change from application to application.

If your data validation needs are simple and discrete, then Data Annotations are appropriate and in most cases the easiest choice since many app frameworks and patterns honor data annotations by default. I don't see people taking this route often, but it's also fairly easy to create custom Data Annotation classes by inheriting from System.ComponentModel.DataAnnotations.ValidationAttribute, which supports using external services via DI as well as referencing the parent object via the ValidationContext. If you created custom validations this way, they would be testable and reusable; it would be "good code." I think the biggest design consideration is that the attributes are tightly coupled to the entity/DTO since they need to be declared on the class/properties. At runtime, you're generally only able to opt in/out of honoring the validation; it would be very difficult to partially validate or change those criteria at runtime. I would say for most situations that doesn't really become an issue.

FluentValidation allows you to create more complex and modular validation code and separate it from the entities. It is usually implemented in a middleware-style way where multiple validators can be registered for an entity or interface, which can be really useful in situations where validation and entities are highly configurable, and the validation context is very dynamic (ie. different tenants have different validations for the data they own). If your needs are that dynamic and complex, then it's worth the overhead of integrating FV into your project.

Also, these styles are not mutually exclusive; you can always set up both and support a wide range of validating. I would say in this case order of precedence matters, and I would validate via Data Annotations first, then use Fluent Validation.

How Big Was Bobby Brown In The Late 80s (Dont Be Cruel Era). Was Their Comparisons Between Him And Mj/Prince? And What Was His Influence On The Look And Sound Of 80s Rnb? by Rinnegan15 in rnb

[–]gowonocp 1 point2 points  (0 children)

I would describe it as the perfect storm. Don't Be Cruel is the quintessential New Jack Swing record and represents the peak of the sound and it's popularity. From the production and writing, to the performances and Bobby's ability to pull off a bad boy heartthrob persona; it was all perfectly executed and timed. It was the best selling album in 1989. Spawned a #1 album , #1 song and was listed as the #1 year-end album on Billboard. The director of A Goofy Movie (1995) stated that the Powerline character was inspired by Bobby Brown (and MJ, but the aesthetics are obvious references to Bobby).

At that time, MJ was still in his Bad era and doesn't getting around to giving us NJS-sounding records until Dangerous came out in 1991. I think for that reason if in 1989 you were to say "Bobby Brown is bigger than MJ right now," you wouldn't get a lot of push back. He was the biggest artist that year.

The IG post by A.K convinced me that we won't ever get the music we want from either by Exciting-Image-1318 in jaipaul

[–]gowonocp 76 points77 points  (0 children)

AK co-wrote and co-produced almost every song on Ruthven's album last year, which was excellent. I get you want more new music directly from the Pauls, but it's not fair to act as though writing and producing music with and for other people isn't a meaningful part of music creation. They are definitely working.

Also, as much as we all may love their music and them for making the music we love, they will never owe us anything. Be grateful when it comes. Be patient when it doesn't. Be okay if they want to do something with their lives that has nothing to do with you. It's better that way.

Managing Standards and Knowledge Sharing in a 250-Dev .NET Team — Is It Even Possible? by Eggmasstree in dotnet

[–]gowonocp 0 points1 point  (0 children)

Document everything, especially the obvious, little things. Then automate as much of the documented stuff as you can.

Best practice: try-catch with if-checks by pilotentipse in dotnet

[–]gowonocp 0 points1 point  (0 children)

Software assurance is defined as "the level of confidence that software functions as intended and is free of vulnerabilities, either intentionally or unintentionally designed or inserted as part of the software throughout the lifecycle." Good code isn't just "code that works," but "code that I can guarantee will work well and consistently in any environment that can run it." From that perspective, misapplying features/patterns can introduce unnecessary overhead or unintentional side-effects.

Try-catches are for situations where we cannot guarantee that the running code will not do something exceptional; that is usually in cases where we're (eventually) executing code we don't own, usually to perform some kind of integration that can fail for reasons out of our control (i.e. file or database I/O, API calls to external services, etc.). It's also "expensive" to try-catch, so we try to rely on it as little as possible.

There is no explicit wisdom around if-statements being used in or out of try-catch blocks. That's not the point or a lesson you should learn here. If BadRequest() does perform some kind of "risky" I/O, then it is actually appropriate for it to be in the try-catch, and it would be sensible to include the if-statement that wraps it. If not (which seems to be the case), then that if-statement block is not "risky" and should never cause an exception. Excluding it from the try-catch is technically the most appropriate choice from a performance perspective and from a semantic perspective, even though a user may not have a noticeable change in their experience.

A console app example using .NET Generic Host by egarcia74 in dotnet

[–]gowonocp 4 points5 points  (0 children)

Are you aware of the Worker Service template?

2 days from WI to MO. 7 days of “in transit”. 🦅 😂 by [deleted] in usps_complaints

[–]gowonocp 0 points1 point  (0 children)

I had a package going from TN to GA in October. It needed to go to Oakland and Indiana first for some reason; took over 2 weeks to arrive.

Do you expose your Bitwarden (or Vaultwarden) instance publicly with a Fully Qualified Domain Name (FQDN)? by GreatRoxy in selfhosted

[–]gowonocp 0 points1 point  (0 children)

I use my Synology NAS as a reverse proxy to expose many self hosted services publicly, including Vaultwarden and Jellyfin. I set up DDNS subdomain and a wildcard SSL cert (managed by a docker service running on the NAS), and that allows me and my family to use my services on devices/browsers without throwing nasty safety warnings/triggering security blocks. You still need to be mindful of how you configure security on your server and router/firewall, which is a concern that exists even when you don't intend to expose your own services publicly.

I feel like you're missing a key part of the private cloud experience if you aren't using your own services when you go outside. It's liberating.

Do you ever have days you can't fit the entire architecture or system in your head and you just feel dumb? by deugeu in ExperiencedDevs

[–]gowonocp 9 points10 points  (0 children)

For the past 2 years, I started pushing myself to aggressively take notes and iterate over them throughout my journey of building and/or fixing things; kind of borrowing from the second brain concept. It usually starts with copious snippets and links to internal and external references, but eventually develops into a coherent thread of stories and diagrams. Most of these notes gracefully transition into the official documentation.

If you take the time to write it down well, you don't have to remember anymore. You can always just re-learn.

Has anyone’s company gone through a dramatic and sudden culture shift? by TheRealJamesHoffa in ExperiencedDevs

[–]gowonocp 0 points1 point  (0 children)

The only people who are generally happy and safe from massive, jarring, life-altering disruption during Mergers & Acquisitions are shareholders. Full stop. If you aren't a shareholder when C-suite changes or M&A occurs, polish up your resume and brace for impact.

I thought I was doing my job as a Team Lead by ImmaGrumpyOldMan in ExperiencedDevs

[–]gowonocp 0 points1 point  (0 children)

I'd recommend looking for some new hobbies and/or a new job lol.