mastodon.me.uk is one of the many independent Mastodon servers you can use to participate in the fediverse.
Open, user-supported, corporation-free social media for the UK.

Administered by:

Server stats:

501
active users

#backend

4 posts4 participants0 posts today

I've found that I don't have much of a liking for backend infrastructure and that 90% of my irritation with it is the need to keep changing problem languages and contexts.

In UI, everything is written in one, maybe two, languages and you can see the changes immediately.

In backend full-stack? Every day, every ticket is a new family of languages to use to solve related but non-overlapping problems. I'm using Python to write and maintain the RPC service (and configure the database), YAML to script workloads (except the bodies of workloads, those are Python), SQL to build query state (unless I'm in the Python layer, then I use sqlalchemy because let's be honest, SQL is an ass language and it's safer to use an object-oriented tool that can build a sanitized SQL query with parameters than to roll your own), YAML again to bind queries to interface (but a different YAML, this yaml is configuring something else), some light C++ to fix a bug in this compute engine, a bit of protobuffer to bind the compute engine to its workload, oh but wait, we need to drive the compute engine, so that's Python that writes the protobuffer and stuffs it in S3 than fires an RPC (another protobuffer, but here it's JSON representation of that proto) to a server to spin up the workload...

... and now I want to display it all, so let's pop into TypeScript for a bit to extend the browser-based UI and I want to deep-link from this to a Superset dashboard with a dynamically-configured filter, that's no problem the filter is modified by query params that are of the form.... What the hell is Rison?

It's like this every day and it's getting to the point where opening my ticket queue feels like less of a fun challenge and more like "What fresh hell...?"

I'm reminded of a blog post Steve Yegge did ages ago, about a conversation between him and a staff engineer at Google about adding one new language. The staff engineer noted that the real cost wasn't in adding one more language and a few thousand lines of code... it was paid in the need for every engineer into the future forever to have deep knowledge of that language to maintain the code written in it. And, yeah, there's wisdom in that. Of course, in practice Google was little better... They'd put hard clamps on adding new languages and then internally multiply DSLs and frameworks about as fast as promotion cycles came around (this is not coincidence 😉 ).

Anyway...

To echo GLaDOS... I used to do just a game engine. You know what my days used to be like? I just coded. Nobody made me set up monitoring with Grafana. Or ran me in the Cloud. Or fed my data to a workflow engine. I had a pretty good life.

Thinking about turning on OPcache Preloading in your PHP app?

It sounds like an easy win—but unless your app is already lightning fast, you might not see much benefit.

In our latest post, we dig into:

- What preloading actually does
- When it’s useful (and when it’s not)
- Real-world gains with hard numbers

Check it out! tideways.com/profiler/blog/sho

Are you new to #Django testing, or #performance profiling APIs? Don't worry, the Performancing Testing Tool I am building has an `educational_guidance` setting.

This will not only help you find performance bottlenecks in your existing test-suite; but it will also TEACH you how to use this tool, and also TEACH you why Django might have bottlenecks at certain areas (Creating with Signals, Deleting with CASCADES, etc.)

If you are already an expert, simply just turn `educational_guidance` off!

I am working on extending the #Django test framework to include comprehensive performance testing for the open-source project github.com/ibrahim-sisar/EduLi, but hopefully I will #opensource the test extension itself with the name 'Django-Mercury'

This test framework introduced a new class, `DjangoPerformanceTestCase` that automatically tracks the stats of three important things:

1. View response times and memory usage
2. Serializer payload sizes & performance (specific to DRF)
3. Model queries and creations.

New asserts like `assertPerformance`, `assertResponseTimeLess`, `assertMemoryLess`, `assertPerformanceFast`, `assertPerformanceNotSlow` can join your existing test suite, just configure what 'Fast' and 'NotSlow' means in your settings.py!

I am excited to share how it actually works behind the scenes (spolier; I put my newfound C knowledge to use- it's lightning fast!)