HNHacker News
TopNewBestAskShowJobs

tomwojcik

574 karma · joined December 23, 2018

Senior Python Developer

Contact me at

hn@{username}.com

submissionscomments
tomwojcik··on AWS multiple services outage in us-east-1
Same. My Slack mobile app managed to sync the new messages, but it took it about 30 seconds, while usually it's sub 2 seconds.
tomwojcik··on Now open for building: Introducing Gemini CLI extensions
Pricing

Gemini is about 10x cheaper per token. But for some reason it's using 8 times more input tokens than CC. They also have this thing called cached tokens, which is much cheaper than not cached tokens. It's a hot cache of your context on Google side, cached automatically. So at the end of the day you don't know how much you'll pay.

Models

Google is good for very complex topics and when the conversation is short. But both models are great. I prefer Claude and Sonnet 4.5 is great all around

CLI tools

Gemini cli is at it's very early days. Doesn't support hooks or subagents. Often runs into loops it can't break out from, essentially gets stuck but you still pay for the tokens.

Claude is just great. Allows you to write complex workflows they way they are supposed to be written. Handles hooks and subagents. MD file can reference another MD file, so you can DRY your files.

Nested plan mode works weird, sometimes the agent gets stuck if it asks for plan approval and thinks it's executing it, but displays nothing... So plan mode is not fully supported in subagents.

A nice thing is that .Claude directory is automatically understood by codex or cursor, you should be able to run your Claude command using openai models via codex or maybe even other providers via Cursor.

Summary

Overall Claude is the best all around, but the tokens are crazy expensive and the subscription model is a joke. You don't know how many tokens you can use when you're subscribed, but it's 'something', and last week they changed the limits, it's suddenly half of 'something'...

tomwojcik··on Doom crash after 2.5 years of real-world runtime confirmed on real hardware
As long as Gabe is alive, no way.
tomwojcik··on Claude Opus 4.1
Opencode https://github.com/sst/opencode provides a CC like interface for copilot. It's a slightly worse tool, but since copilot with Claude 4 is super cheap, I ended up preferring it over CC. Almost no limits, cheaper, you can use all the Copilot models, GH is not training on your data.
tomwojcik··on The Minecraft game score unexpectedly became big business for its composer
Marcin Przybyłowicz for The Witcher. Borislav Slavov for BG3. Jesper Kyd Assassin's Creed.
tomwojcik··on Beer on Board in the Age of Sail (2017)
Exactly. To my understanding any amount of alcohol is unhealthy, but societies have had festivals or other rituals since the beginning, and substances _like_ alcohol play an important role in those.
tomwojcik··on Google is illegally monopolizing online advertising tech, judge rules
demand-side platform, i assume
tomwojcik··on Ask HN: What are you working on? (March 2025)
Thank you! I plan to add "sync with meetup" via API sometime in the future.
tomwojcik··on The blissful Zen of a good side project
I'm in the same boat. Ever since I started working professionally, I was always praised for delivering first, and it shows in how I work. I'm a maker, I love to deliver. I have a few side projects as well, a few that are relatively completed and I haven't even deployed them, because they were just fun to build. Some are deployed, and I enjoy polishing them.

On the other hand, I remember that time you enjoy wasting is not a wasted time. I don't sleep well if I don't just chill and forget about the world, from time to time. It's like in the Sims. I aim towards my creativity and entertainment need bars to be filled. While coding, I often increase the fill of both bars.

tomwojcik··on Ask HN: What are you working on? (March 2025)
Some time ago, I began searching for Python-related events and discovered that many PUGs (local Python User Groups) had disappeared sometime around COVID (at least my local PUGs). After analyzing the ones listed on the official Python website, I found only about 18% were still active, with most hosted on Meetup. This makes sense, as maintaining a community requires time and money, which small PUGs don't have. Meetup can be costly for those starting local Python User Groups, but it's very cheap for big communities. IMO Meetup is not the best place for PUGs, as they are not big by default.

PUGs need a way to communicate and broadcast, to be discovered, but it doesn't necessarily need all of Meetup's features. Also, PUGs probably don't want to be tied to Facebook or other social media platforms. It'd be best if they allowed a simple ownership transfer, once you get tired of organizing.

That's why I created https://pythonuser.group/ - a lightweight side project that, despite being rough around the edges, fulfills the core need: allowing people to discover PUGs worldwide for free. The platform costs me almost nothing to maintain. Allows to subscribe to local PUGs via RSS (not sure if it works). I'll add "export all my PUG data" once someone requests this feature.

It's the first time I share it with the world. Please don't treat it as prod-ready. Feedback welcome at hn@{username}.com

tomwojcik··on Ask HN: Moving a not-for-profit web app off AWS
Hn moment. Blue green with zero downtime on a VPS is not extremely trivial. Simple for some, at best.
tomwojcik··on Oh Shit, Git?
That's my approach and I've never seen anyone else doing it. Many years ago I lost my local changes, I don't even remember why. HDD failure or something like that. Ever since, at the end of the work day, I just commit "m" or "WIP" or something more meaningful, but I get it out before closing my laptop. Then, once I'm done with the the draft PR, I fetch the latest changes, reset hard and write a nice story with commits. This way I don't ever lose my changes, I can write a nice git history and I can iterate over the changes fast.
tomwojcik··on How I program with LLMs
That's a terrible blanket statement, very US-centric. Not everyone wants to start a company and you can't just reduce ones motivations to your measure of success.
tomwojcik··on Reclaim the Stack
Agreed. Forgive a minor digression, but what OP wrote is my problem now. I'm looking for something like heroku's or fly's release command. I have an idea how to implement it in docker using swarm, but I can't figure out how to do that on k8s. I googled it some time ago, but all the answers were hacks.

Would someone be able to recommend an approach that's not a hack, for implementing a custom release command on k8s? Downtime is fine, but this one off job needs to run before the user facing pods are available.

tomwojcik··on Apple Vision Pro U.S. Sales Are All but Dead, Market Analysts Say
I can't seem to be able to edit. My wording was incorrect. It was not needed to implement all those useless features to get your game featured in the store, but very helpful. And it makes sense, imo.
tomwojcik··on Apple Vision Pro U.S. Sales Are All but Dead, Market Analysts Say
I used to work in game dev ~9 years ago. iPhone is where the users are, so naturally that's your main target. But your game will accomplish success only if you're featured in the app store (I don't own apple so this might have changed drastically). But in order to get featured...

Haptic feedback in the newest iphone? You need to support it in order to be featured.

You can play games on apple watch? If you support it, a guaranteed feature.

New localisation guidelines? Featured only if you support all of them.

So back then (not sure how it is right now) you needed to implement useless or at the very least something unnecessary in order to be featured on iPhone and make a buck. Otherwise apple wasn't able to sell their new technologies.

If nothing has changed, people will try to port their games to apple vr so they are more likely to be featured on iPhone.

All our games (6, iirc), were featured.

tomwojcik··on Ask HN: Freelance website builders/maintainers, what's in your 2024 toolkit?
Slightly off topic. I have been working with Django for about 7 years now. Whenever I'm looking for a new contract, I first filter by Django, as it's just a pleasure to work with. Funny how many other ppl share similar exp in this discussion, yet today is the day of 'who's hiring' and Django is mentioned only twice so far.
tomwojcik··on Ask HN: What is the, currently, best Programming LLM (copilot) subscription?
Isn't it available via bedrock already?
tomwojcik··on Figure out who's leaving the company: dump, diff, repeat
Yes, it's normal in IT in Europe to fire someone, revoke their access and still pay them for 1-3 months. On the other hand many IT professionals work b2b so some of the normal employment policies do not apply. On b2b contract the other side usually is obliged to pay for 1 month.
tomwojcik··on Why new hires often get paid more than existing employees
Additionally he should have used a referral /s
tomwojcik··on Django 5.0
I never run into this issue but isn't it that Django uses inner join for select related, so it does what it's supposed to do?

You can always prefetch related, or even use outer=True. This will return the results you expect.

tomwojcik··on Llamafile lets you distribute and run LLMs with a single file
That's not the limitation introduced in Llamafile. It's actually a feature of all gguf models. If not specified, GPU is not used at all. Optionally, you can offload some work to the GPU. This allows to run 7b models (zephyr, mistral, openhermes) on regular PCs, it just takes a bit more time to generate the response. What other API would you suggest?
tomwojcik··on Ask HN: What work/office purchase transformed your life?
Would you be able to share a picture of your setup? I can't imagine a desk and a stress recliner, and I have similar problems with my posture. Also tried many chairs, including kneeling rocking chair.
tomwojcik··on Sam Altman on X: "we are pausing new ChatGPT Plus sign-ups for a bit"
Not that it means anything, but Burry is short NVDA.
tomwojcik··on A bank runs serverless with PHP and AWS Lambda
I heard it used to be similar in ING but they slowly migrate some services to Azure for quite some time now.

I bet they will never fully migrate (and they don't want to).

Not affiliated with ING in any way, its just what I heard.

tomwojcik··on So Long, Small Phones
Typing this on Asus Zenfon 8. The best phone I have had in years, I have it for almost 2 years now. No bloat, small, records voice calls. There's nothing more I want from a phone.

Battery isn't great but afaik it improved in the newer models.

tomwojcik··on The casino in your pocket
I was working in mobile gamedev and igaming. Coming from Europe, I was not that familiar with the real gambling, the one we can see in movies. But I was familiar with mobile games.

Let me tell you, mobile games are much more addictive than casino games. There's more mechanisms to make you addicted, to squeeze the money out of you and everything is sugar coated.

I felt terrible when starting a job in igaming, as I always considered it to be a "dirty" sector. I was surprised to see how many things are regulated. Examples: ID age verification, sometime you need to ping the government API to let them now, there are casino level limits, country/global level limits (can't be exceeded), daily/weekly loss limits, num of tabs opened in the browser limited to 1, max spin time etc.

It's surreal that kids play on an unregulated casino without any winning ods.

tomwojcik··on Show HN: Ever Been Rated by an AI Date? Try Dating Playground and Get Feedback
Looks fun. After starting a conversation I got "disallowed user agent" from google. I opened your project in an unofficial HN app (Harmonic). You might want to address that.
tomwojcik··on Why you might want async in your project
FastAPI docs, case when you don't create an async route

> When you declare a path operation function with normal def instead of async def, it is run in an external threadpool that is then awaited, instead of being called directly (as it would block the server).

https://fastapi.tiangolo.com/async/#path-operation-functions

OP either meant this, or its variation, such as async_to_sync and sync_to_async. https://github.com/django/asgiref/blob/main/asgiref/sync.py

Ofc this is a python example. I have no idea how it works in different languages.

tomwojcik··on Ask HN: How to Focus Again?
Almost 2h? I can't focus that long. Let me know once it's available as a 30 seconds tiktok.

/s

← PreviousPage 2 of 5Next →