HNHacker News
TopNewBestAskShowJobs

brokegrammer

360 karma · joined July 8, 2024

I'm a senior full-stack developer who specializes in taking complex business logic, often stuck in manual processes, and building robust, production-ready applications. I handle the entire lifecycle, from a Python backend on AWS to a modern React front-end, so your core team can stay focused on their own roadmap.

Visit my website for contact details: https://joshkaramuth.com

submissionscomments
brokegrammer··on Ask HN: What did you read in 2025?
Demian by Hermann Hesse. I wanted to scream "Stop overthinking!" to the protagonist. Something I can relate to.

Siddharta by Hermann Hesse. Helped me understand that a perfect life is a collection of ups and downs and that one must accept it all.

Amerika by Franz Kafka. Could relate to the protagonist because people take advantage of his naivety.

Factfulness by Hans Rosling. Made me see the world in a less pessimistic way.

brokegrammer··on Ask HN: Could Microsoft replace its CEO with ChatGPT?
The role of CEOs is to receive praise for every achievement, but also blame when things go wrong. It's a high risk, high reward position that most people can't handle.

Since it's not possible to blame AI, no ChatGPT can't be used to replace the CEO of Microsoft.

brokegrammer··on PSF has withdrawn $1.5M proposal to US Government grant program
Confused about this decision. Why not take the money and then do only DEI activities that don't break the law?
brokegrammer··on Hyperflask – Full stack Flask and Htmx framework
> TO be fair there are lots of other things that require a response from an API before responding to the request and therefore async reduces resource usage over threads or multi-process.

Agreed. However, these are rare and many people have been abusing asynchronous views instead of delegating the task to a background worker when multiple external requests are required. Showing a spinner while polling a synchronous view is dead simple to implement and more resilient against unexpected outages.

brokegrammer··on Hyperflask – Full stack Flask and Htmx framework
A lot of people moved from Flask to FastAPI because the latter is built for async workloads by default. So, people expected massive performance improvements because the word async was associated with performance.

In reality, people ended up having to deal with weird bugs because asynchronous Python isn't the most ergonomic, while having negligible to zero performance improvements. Proof that most people are terrible at choosing tech stacks.

Then, AI came into the scene and people were building APIs that were essentilly front-ends to third party LLM APIs. For example, people could build an API that will contact OpenAI before returning a response. That's where FastAPI truly shined because of native asynchronous views which provides better performance over Flask's async implementation. Then people realized that can can simply access OpenAI's API instead of calling another front-end API first. But now they're already invested in FastAPI, so changing to another framework isn't going to happen.

Either way, I like FastAPI and I think Sebatian Ramirez is a great dude who knows what he wants. I have respect for a person who know how to say no. But it's unfortunate that people believe that Flask is irrelevant just because FastAPI exists.

brokegrammer··on Ask HN: Is Hacker News a good place to find a job in tech?
I didn't get anything apart from a bunch of spam emails. I stopped putting my email address in the post, now I don't get any emails.

Could also mean that I don't have the right skills though.

brokegrammer··on A modern approach to preventing CSRF in Go
True, it does seem like Rails introduced configuration-free token based CSRF protection, which "solved" CSRF for traditional server rendered apps.

I believe the new technique is easier to use for SPA architectures because you no longer need to extract the token from a cookie before adding it to request headers.

brokegrammer··on A modern approach to preventing CSRF in Go
>Have we finally reached the point where CSRF attacks can be prevented without relying on a token-based check (like double-submit cookies)?

Rails uses a token-based check, and this article demonstrates token-less approach.

Rails didn't solve CSRF btw, the technique was invented long before Rails came to life.

brokegrammer··on Why is everything so scalable?
I agree with this post, but how do we convince decision makers to use simpler solutions? Here's what happened to me not long ago:

A person contacted me to build a tool that will have a single user. After some questioning, the person said they would likely have up to 3 users for this tool at some point, and no more.

So I suggested we use Python and a SQlite database. When I reached out after not having heard from them for 2 weeks, they said that they went with a more experienced programmer because the latter suggested MongoDB, a separate ReactJS front-end, and micro services with Golang. All deployed to AWS, of course.

In the end, I lost the gig because I wanted to save the client time and money.

brokegrammer··on Don't Be a Sucker (1943) [video]
The guy speaking at 3:35 reminds me of a recent blog post by a certain tech celebrity, where he was recalling his recent visit to London and was unhappy to find less white people that he remembered from his previous visit.

History repeats itself.

brokegrammer··on Django: One ORM to rule all databases
I used to love the Django ORM when I didn't know any SQL. Then I had to learn SQL so that I could model data properly, and optimize access patterns.

These days I hate working with the ORM because it uses weird abstractions that make your life harder as you try to do more complicated stuff with your data. I had a small bug lately where a queryset would aggregate twice because I filtered an aggregated queryset, and this caused it to aggregate again on top of the previous result. I wouldn't have this bug if I was writing my own SQL, or if I used a query builder instead of an ORM. This is just a small example, I have many more annoying things that will cause me to use SQL directly instead of an ORM for my next project.

brokegrammer··on I switched from Htmx to Datastar
I see, so the rendering logic is performed mostly on the back-end when using Datastar. It makes sense now, thanks.
brokegrammer··on I switched from Htmx to Datastar
I don't understand the examples in this post. For example, how does:

<span hx-target="#rebuild-bundle-status-button" hx-select="#rebuild-bundle-status-button" hx-swap="outerHTML" hx-trigger="click" hx-get="/rebuild/status-button"></span>

Turn into:

<span data-on-click="@get('/rebuild/status-button')"></span>

The other examples are even more confusing. In the end, I don't understand why the author switched from HTMX to Datastar.

brokegrammer··on Datastar: Lightweight hypermedia framework for building interactive web apps
I mostly agree with this. TS works great in large enterprises where developers don't trust each other. But if you're working on your own, or in a small team where you can easily agree with each other, TS just becomes unnecessary overhead.

At least, that's my experience and I don't like it when people say that everyone must absolutely use TS when they don't know anything about your situation.

brokegrammer··on Ask HN: Generalists, when do you say "I know enough" about any particular topic?
I used to have massive FOMO when it comes to learning a variety topics. I would learn different programming languages, human languages, maths, philosophy, and other intellectual topics. Then I would forget about them because I don't actually use them in daily life. Not to mention how it ends up ruining my life because of the constant performance anxiety.

These days, I only learn topics that I know I will need in my work or life.

brokegrammer··on Ask HN: Books that helped you lose weight?
Any diet book can help you lose weight, but keeping the weight off is the real challenge. Most people gain back more weight than they lose after ending a diet.

As someone who went from 100kg to 85kg, I know how challenging it is to maintain a lower body weight because there isn't a day that my body doesn't fight me to try and get back to being overweight again.

The important thing is to build good eating habits, setup your environment properly, and ensure adequate physical activity. Some people might need drugs like Ozempic to make any progress, but it's a lifelong commitment.

brokegrammer··on The health benefits of sunlight may outweigh the risk of skin cancer
> followed 30,000 Swedish women for 20 years. It likewise found that, even after correcting for things like age, wealth and health, sun-seeking behaviour was associated with a lower chance of death from all causes.

Is it because they got exposed to sun or is it because of the "sun-seeking behavior", which probably means more physical activity?

Either way, it's too soon to be throwing away our sunscreen.

brokegrammer··on KDE is now my favorite desktop
One bug that comes to mind is when you edit your profile in Konsole and click Apply, then close Konsole, the setting is lost. But if you click Ok instead of Apply, the setting is saved. However, sometimes the setting is saved when you click Apply. I think this bug has been around for years now.

Nothing major, but there are small annoyances like this that diminish my experience as a user. Still the best DE anyway.

brokegrammer··on KDE is now my favorite desktop
KDE has a ton of bugs that I don't like, but it's the DE that I always choose when using desktop Linux because it treats you like an adult. The ability to customize it is unparalleled unless you're building your own DE with a tiling window manager or something.

One killer feature is KDE Connect. Saves me from having to grab my phone when I need to copy an SMS OTP code. It's similar to Phone Link on Windows, minus the privacy violations.

brokegrammer··on Rails on SQLite: new ways to cause outages
This is a quirk that could cause data loss in rare scenarios but basically, in most cases, you'll have a single instance of your application because your load balancer will only send traffic to the other instances if the main instance isn't responding. But the load balancer will have to be setup to send traffic to a single instance at a time, and only try other nodes if the current node isn't responding.

The other instances are mostly redundant. That's how sites like Hacker News tend to operate, and why I chose this architecture. It's simple and stupid but doesn't work in scenarios where you have multiple servers in different locations for example. There's LiteFS to solve this problem but I don't have experience with it yet.

brokegrammer··on Rails on SQLite: new ways to cause outages
One reason I use SQLite in production is because of Litestream. I can setup 2 or more VPSes hosting my Django app backed by the same SQLite database behind a load balancer for redundancy.

Thanks to Litestream, it's easier to scale horizontally when using SQLite than with other databases when self-hosting.

brokegrammer··on I ditched Docker for Podman
I had the opposite experience with Podman and decided to stick with Docker because I prefer the "daemon-full" architecture and ease of installation.

I even wrote wrote an article about that: https://joshkaramuth.com/blog/docker-vs-podman/

brokegrammer··on Ask HN: Freelancer? Seeking freelancer? (September 2025)
SEEKING WORK | Location: Mauritius | Remote: Yes | Willing to relocate: Europe only

Technologies: Python (Django, FastAPI), React, TypeScript, HTMX, AlpineJS, AWS (Lambda, DynamoDB), Docker, Ansible, PostgreSQL.

LinkedIn: https://www.linkedin.com/in/josh-karamuth/

Email: hello [at] my website's domain

Website: https://joshkaramuth.com

About Me:

I'm a full-stack developer with a focus on building entire products, not just features. Since 2018, I've been helping startups and founders turn ideas into reality. I'm comfortable owning the whole stack, from provisioning AWS resources to polishing the front-end.

One of my recent projects involved building a USMCA compliance tool from scratch. I took a manual, spreadsheet-heavy process and turned it into a web app that provides a go/no-go qualification in under a minute. The stack was Python on AWS Lambda, DynamoDB, and React.

I also enjoy working with a lighter-weight stack and recently built my own SaaS product (a time-tracker for freelancers) using Django, HTMX, and AlpineJS.

I'm looking for clients who need a reliable, senior-level engineer to build robust solutions to complex business problems.

Send me an email with your needs and I'll reply to schedule a quick 15 min call.

brokegrammer··on What makes Claude Code so damn good
I've used Claude Code, Cursor, and Copilot is Vscode and I don't "know" that Claude Code is better apart from the fact that it runs in the terminal, which makes it a little faster but less ergonomic than tools running inside the editor. All of the context tricks can be done with Copilot instructions as well, so I simply can't see how Claude Code is superior.
brokegrammer··on What makes Claude Code so damn good
I don't get it. The title says "What makes Claude Code so damn good", which implies that they will show how Claude Code is better than other tools, or just better in general. But they go about repeating the Claude Code documentation using different wording.

Am I missing something here? Or is this just Anthropic shilling?

brokegrammer··on Claude Sonnet 4 now supports 1M tokens of context
No idea how it's implemented because it's proprietary. Details here: https://support.anthropic.com/en/articles/11473015-retrieval...
brokegrammer··on Claude Sonnet 4 now supports 1M tokens of context
Many people are confused about the usefulness of 1M tokens because LLMs often start to get confused after about 100k. But this is big for Claude 4 because it uses automatic RAG when the context becomes large. With optimized retrieval thanks to RAG, we'll be able to make good use of those 1M tokens.
brokegrammer··on How I code with AI on a budget/free
These tricks are a little too much for me. I'd rather just write the code myself instead of opening 20 tabs with different LLM chats each.

However, I'd like to mention a tool called repomix (https://repomix.com/), which will pack your code into a single file that can be fed to an LLM's web chat. I typically feed it to Qwen3 Coder or AI Studio with good results.

brokegrammer··on Litestar is worth a look
Litestar looks promising because it has most of the features a Django developer would but in a more modern package. However, since it has so many features, I hope that the project doesn't get abandoned like so many frameworks these days because unlike tiny frameworks, it would be harder to migrate off of.
brokegrammer··on Litestar is worth a look
I'm not a fan of SQLAlchemy because of the Data Mapper pattern, and abstractions that force you to still think in terms of SQL tables and expressions.

For example, in Django I can have a User object. I want a update the user's first name:

my_user.first_name = "Joe"

my_user.save()

In SQLALchemy:

my_user.first_name = "Joe"

session.add(my_user)

session.commit()

Users can leave comments, so I want a query that aggregates comments for each user. In Django:

users = User.objects.all().prefetch_related("comments").annotate(comment_count=Count("comments"))

Each user will now have a `comment_count` property that contains the number of comments they left.

In SQLAlchemy:

session.query(User, func.count(Comment.id).label("comment_count")) .outerjoin(User.comments) .group_by(User.id) .all()

However, each User won't have the `comment_count` property. You have to manually associate them from the returned tuple.

I feel like SQLAlchemy wants to force you to do more work, whereas the Django ORM wants to provide you with the data you asked without forcing to you think about how to actually get the data from the database nor how to optimize the query. In Django, session management is done automatically, but it SQLAlchemy, you need to be aware of the session most times.

It's good to know SQL but you can use the Django ORM without knowing it. Not the same with SQLAlchemy. Could be a pro or a con depending on the situation. Definitely a pro for me because I don't like SQL.

← PreviousPage 2 of 6Next →