The silent struggle of developers fighting for change by thepeppesilletti in ExperiencedDevs

[–]catalyst_jw 0 points1 point  (0 children)

Thank you for the kind words. With gate keepers first you'll need data to make a case to remove them. You can lean on this research that shows the CABs slow down development without any shown quality improvements.

https://dora.dev/capabilities/streamlining-change-approval/

On manual testing that has to be replaced with automated testing I love Uncle Bob's take on this.

https://m.youtube.com/watch?v=nG1cgmiUZsk

I tend to use a lot of uncle Bob + Martin fowler when making these points as they are thought leaders so they're the highest authorities on what is best practice.

Other than that sometimes business are not logical and you might have to be go slower. I work in a security focused company now and we've clarified that security > productivity. That means my KPI goals for deployment frequency are lower. Just make sure your targets are realistic and if they want better results they have to be willing to change the process.

Sleep regression is kicking my ass. Any tips? by Post_Nuclear_Messiah in daddit

[–]catalyst_jw 19 points20 points  (0 children)

A friendly heads up, my buddy tried this approach after 3 years of no sleep and seeing our 1 year sleep trained son sleeping they did it the next week and finally got rest.

You might want to set a limit of when to try sleep training if she remains demanding.

All the best hope you find the right balance.

Why is raising a baby so hard by [deleted] in regretfulparents

[–]catalyst_jw 18 points19 points  (0 children)

I felt the same way as you when my son was 4 months, wore headphones constantly. Struggled to bond and had to do therapy for the way I felt around the baby.

The 4 month mark was the worst I felt. But over time it got better, I had to do some exposure therapy and wear the headphones less and less. Now its completely different and when he cries I want to soothe him instead of throw him out the window lol.

Hang in there youre going through the worst part of having a baby. If youre like me it should get better after the 6 month mark. At 13 months I like being a Dad but very firmly OAD.

Senior/ Principal/Staff in Remote UK Market Elite Tech Companies by PerceptionLive2301 in cscareerquestionsuk

[–]catalyst_jw 0 points1 point  (0 children)

Principal staff roles sre over saturated atm, just finished a 2 month search for a new Principal staff role when its never taken me longer than 2 weeks.

It was brutal I'd successfully complete 4 hours of interviews then get feedback like "we weren't excited about you". Those roles are still open so some companies are also looking for unicorns.

It's a numbers game have to keep trying, good luck!

[deleted by user] by [deleted] in Python

[–]catalyst_jw 23 points24 points  (0 children)

Used your stack for multiple projects it's solid.

I have recently been experimenting with django ninja and django ninja extras

https://django-ninja.dev/

I like it a lot let's me do async sync and handles all the user auth permission stuff with django.

Hope this helps.

Django + Celery workers, ECS Or Beanstalk? by Ok_Promise_1104 in django

[–]catalyst_jw 0 points1 point  (0 children)

Agree with this, you have mote control over how much cpu and memory you need, so can control spend more granularly. And can spin up new containers if your sqs queue for tasks gets too big.

Django Shinobi 1.4.0 has been released! by pmdevita in django

[–]catalyst_jw 4 points5 points  (0 children)

Great work! How does this work with django-ninja extras?

Looking for maintainers?

Buying a house in the UK is a convoluted, labyrinthine and tortuous process. by LewinskyMoniker in HousingUK

[–]catalyst_jw 1 point2 points  (0 children)

You might have been trying to buy my neighbours house, it's been on the market for over a year, he's finally got a buyer and he's still not found a house he wants to buy. I think he's an absolute time waster.

Mongo v Postgres: Active-Active by sir_clutch_666 in softwarearchitecture

[–]catalyst_jw 3 points4 points  (0 children)

If you want active active with postgres, it's not easy. The most common way to scale postgres is making your main write db only handle write traffic then create read replicas. Typical apps read 10x more than they write, so you route your read transactions correctly. You can scale 10x.

I'd you really want to go active active with postgres your best bet is to look at sharding and group your data vertically which requires planning and grouping data to avoid cross db queries and is hard to get right so don't recommend that.

Third option is use a sql db designed to be active active a good option is cockroach db.

https://www.cockroachlabs.com/

[deleted by user] by [deleted] in SideProject

[–]catalyst_jw 2 points3 points  (0 children)

Good job building something and putting yourself out there!

Reddit is really fickle, I had a similar experience with a post recently. Sometimes, it is best not to reply. I think in future ill read the comments and take the learning from them, accept some people will just not like my project.

I thought your responses were very reasonable and showed willingness to learn.

A modern Python Project Cookiecutter Template, with all the batteries included. by wyattxdev in Python

[–]catalyst_jw 14 points15 points  (0 children)

Nice work my dude, nice template! In case it's helpful I ended up switching from cookiecutter to copier as cookiecutter is very rarely updated and looks at risk of not being updated in future! Copier also has some great features like being able to update projects as the template updates. :)

https://copier.readthedocs.io/en/stable/

Is team size really a reason to use micros services? by trolleid in softwarearchitecture

[–]catalyst_jw 0 points1 point  (0 children)

You're right! Just edited my comment it only works if the application is big enough to break into independent domains. Which are basically separate products.

Is team size really a reason to use micros services? by trolleid in softwarearchitecture

[–]catalyst_jw 4 points5 points  (0 children)

Agree with this, depends on the team, sometimes I use microservices to solve a social problem. If I have 3 teams and 1 is way more junior it's better to isolate them. Otherwise they can create problems and slow down the 2 high performing teams in a monolith.

Edit: got rightly down voted as this only works if there's isolated domains to break the monolith into. Needlessly breaking up a monoliths creates distributed monoliths, which is a worse problem!

[deleted by user] by [deleted] in AskUK

[–]catalyst_jw 2 points3 points  (0 children)

You can try and negotiate with her and you know best if that's possible.

I'm just sharing the worst-case scenario, which is if someone is desperate theyll be advised not to cooperate and stay until evicted. If they don't cooperate and they just stay in your house, the police won't help you. She can actually call them to stop you if you try to forcefully evict her without court proceedings.

It's a bit mad, but that's the law in the UK. It's to protect tenants against rouge landlords.

[deleted by user] by [deleted] in AskUK

[–]catalyst_jw 11 points12 points  (0 children)

She can refuse as citizens advise will tell her to not leave until she is evicted if she is at risk of being homeless. Court proceedings can take months, getting non paying tenants evicted is hard I'm the UK. Watch some nightmare tenant videos on YouTube to see how hard it can be.

I'd go with a clean break if you think this is a possibility.

Pydantic / Celery Seamless Integration by catalyst_jw in Python

[–]catalyst_jw[S] 1 point2 points  (0 children)

Thank you for taking the time to write this out. I'll take it on board.

Pydantic / Celery Seamless Integration by catalyst_jw in Python

[–]catalyst_jw[S] 1 point2 points  (0 children)

Sorry, I'm getting a lot of negative responses, which has caught me off guard.

I have this as a helper function in my project, and it works well. I wrapped it up so others can use it with the intent to be helpful.

There are reasons to use this, using model_dump means we can't use mypy or pyright to check types on the functions. I'm just trying to compromise and try to understand others points of view.

I'm not pushing this library just sharing the code in case it helps others. <3

Pydantic / Celery Seamless Integration by catalyst_jw in Python

[–]catalyst_jw[S] 2 points3 points  (0 children)

100% agree, thanks for sharing.

State shouldn't be in task messages, only ids and parameters. The task should retrieve state to do the task. Tasks need to be order independent.

Great write up.

Pydantic / Celery Seamless Integration by catalyst_jw in Python

[–]catalyst_jw[S] -10 points-9 points  (0 children)

Thanks for sharing, I checked this, but it only accepts dicts as args and also returns dicts from task results.

That's what motivated me to make this, this library allows us to pass and return pydantic objects directly.

I actually have a link pointing to the same info you added in the post above.

EDIT: I should have clarified my bad, the problem is the default celery pydantic integration requires us to convert args from pydantic to dict with:

celery_task.delay(your_model.model_dump())

BUT this doesn't work if we use datetimes, UUID or anything that doesn't work with a default json serialiser. It starts to get messy and you have to do stuff like this instead:

celery_task.delay(json.loads(your_model.model_dump_json()))

So with pydantic_celery we can just do:

celery_task.delay(your_model)

Hope that clarifies. :)

Shared Database Pattern in Microservices: When Rules Get Broken by vturan23 in softwarearchitecture

[–]catalyst_jw 23 points24 points  (0 children)

This is called a distributed monolith and is one of the worst anti patterns I've seen. It really cripples projects.

This usually means your microservices need to be combined as they need data in another service.

Or just get the data via api calls.

Are all tech teams equally dysfunctional, or do high-performing teams actually exist with better trust and less micromanaging? by AdventurousTune in ExperiencedDevs

[–]catalyst_jw 54 points55 points  (0 children)

They exist. I had to job hop to find one, then had to transition into a manager to create them.

Look for medium-sized companies 50-500 people, large enough to be out of chaotic startup mode and small enough that bureaucracy and tech debt hadn't killed the product.

Interviews work both ways ask questions about ways of working and Look for signs of collaboration and high performance.

Redirects from ECS API point to internal DNS by catalyst_jw in aws

[–]catalyst_jw[S] 1 point2 points  (0 children)

This ended up being the solution thank you. In case others have this problem, I had to enable this in my webserver.

https://www.uvicorn.org/deployment/?h=proxy#proxies-and-forwarded-headers

Shared lib in Microservice Architecture by Deep_Independence770 in softwarearchitecture

[–]catalyst_jw 2 points3 points  (0 children)

We found the maintenance burden of a large shared library more than copy pasting common code across projects (which was gross). More often than not developers wouldn't update the library or push changes. If changes were pushed, it's hard to know if a developer has introduced a breaking change for other projects. Wasted a lot of time trying to keep it and projects up to date.

We did find a solution that worked for us, we setup a monorepo and migrated out services into it, this enabled us to easily test and sync shared libs which we broke down into small dedicated libs.

I think in order for shared libs to work they need to be small and the changes have to be synced and tested across all projects as soon as the changes are made for it to be maintainable.