DEV Community

Cover image for Biting Into It: My Astropy Summer (Weeks 1-3)
Reem Hamraz
Reem Hamraz

Posted on

Biting Into It: My Astropy Summer (Weeks 1-3)

"I really want to be something in life. I don't want to be forgotten."

It's a heavy thought for a Tuesday night, but it's been bouncing around my head a lot lately. I read this Sartre quote recently about living a "toothless life", just waiting around, reserving yourself for later, and then suddenly realizing your teeth are gone. I decided a while ago that I'm not doing that. If I'm going to leave something behind, it has to be through work that actually matters.

Right now, that work looks like deliberately bypassing high-level Python APIs to aggressively test raw, compiled C-engines for Astropy.


The Weekly Grind

Juggling CS coursework while trying to wrangle Cython for Google Summer of Code is a lot. But honestly? I've been loving every damn second of it. Reading documentation in a vacuum is one thing, actually hashing out C-level memory bindings is where the reality sets in. My mentors don't just let me write code; they force me to hold my work to strict architectural standards, which honestly gives me an immense sense of accomplishment once I clear them.


test_np_utils.py: First Blood

Getting this merged was my first real bite into the codebase. Instead of playing it safe with high-level Astropy Table objects, I stripped away the Python wrapper to test the raw C-engine underneath. I threw every Cartesian edge case at the join_inner function just to see if the explosive $O(N^2)$ memory allocations would break it.

They didn't.


test_column_mixins.py: The Beast

Absolute beast of a PR. I had to write MinimalColumn shims and cast them directly onto raw NumPy arrays just to isolate the Cython __getitem__ routing. Somewhere in there I found a legitimate C-level trapdoor — indexing a structured array with a single string was silently dropping the dtype entirely. That became Issue #19827, which I later learned was actually expected behavior, so I closed it. End of story.

But the real boss fight wasn't even the code (funny, right?!). It was Git. I ran a terrifying interactive rebase in Nano to squash six messy commits before force-pushing to my branch. Truly character-building.

If it isn't clear by now, let me spell it out:

"I absolutely despise GitHub squash and rebase. Actually, I don't think we (me and GitHub) can ever be on amicable terms."


APE Split & _parse_times.c: Standing on Shoulders

Lately I've been laying the tracks for the APE split, writing isolated tests for the _parse_times.c extension. This was mostly building on another contributor's accepted PR, but it was enlightening to understand how other brains work. I'll be honest, I spent a good chunk of time just deciphering the existing test cases before touching anything, making sure I didn't alter their original essence.


That's weeks 1–3, folks.

It's a blur of memory buffers, strict type checking, and fighting CI matrices. But when those green checkmarks come in, and especially when I see those purple merged PRs, I know I'm actually building something.

I'm biting into it. I'm not waiting anymore.

Top comments (0)