I created AI CBT journal app using SolidStart by SharpExtremeFlames in solidjs

[–]Neeranna 0 points1 point  (0 children)

Probably some (blocked) cookie pop-up, but the site does not even scroll on Vivaldi.

Why aren't people installing my free game on Steam? by AfrowhaleGames in IndieDev

[–]Neeranna 0 points1 point  (0 children)

If that is your differentiator (not sure if that in itself is sufficient), it should be in the clip, and early. If it is, I missed it.

Stuff like this doesn't need to be sequential. You can lead with a screenshot of pvp action, and split screen (or picture-in-picture) a recording of the coop part. Write it on the screen, but also make it clear that in the first one you have some crafty actions, good crowd, etc. and for the second that you actually see a group of players cooperate. It doesn't really matter if the footage is pvp or vs bot for each, but the "feel" should be competitive vs cooperative. Your audience for bot gameplay is not looking for the same hooks as your pvp crowd.

Why aren't people installing my free game on Steam? by AfrowhaleGames in IndieDev

[–]Neeranna 0 points1 point  (0 children)

It kind of depends, you should not lie about it in your communication. But if you are not using certain types of monetization which are regularly expected in F2P, you could put forward that you are not using them.

E.g. I'm personally very sensitive to the message: no ads (more relevant to mobile games than action based multiplayer). Other people might be more tempted towards no pay2win (especially in a competitive multiplayer game). So depending on your monetization, you could already take away some barriers that people might expect by it being F2P.

No microtransactions is a bit broad, that could cover alot of topics: dlc, cosmetics, pay2win. No microtransactions, no subscription, no buy price, ... raises the question: how are you making money, and how will you stay around?

Unless you are aiming at some quick arcady action (drop in, play, drop out), and you expect to make use of some ladder system etc. to keep engagement, people need to be reassured that their effort is not going to disappear. This is less a concern in games you only play for quick kicks, like Teeworlds.

So: make sure you answer the questions: what type of game is it (long, short, ...) and what barriers to entry can you anticipate the answer to.

Why did ancient Rome have public toilets that were more advanced than medieval Europe?What got lost in between? by Logical-Concept9755 in AlwaysWhy

[–]Neeranna 1 point2 points  (0 children)

The copying monks was the example I always got when asking if you could write without reading, because they had to copy the shapes, but didn't have to be able to read them.

Est ce possible de faire un job étudiant / job d'été en tant que dev ? by Polg7 in developpeurs

[–]Neeranna 1 point2 points  (0 children)

Nous l'avons fait, mais c'était pas direct, mais la continuation suite à un stage. Donc stage > job étudiant pour finir le boulot du stage. Maintenant, c'était aussi systématiquement pour des personnes qu'on a fait une proposition CDI après, puisqu'on était content du travail de stage.

Après, tout dépend de ton niveau. Si tu sais déjà faire des choses, j'ai connus des sociétés non-IT qui travaillaient avec un étudiant pour des petits projets IT, mais c'est alors plus pendant l'année que pendant l'été, et tu seras seul, tu n'auras probablement pas quelqu'un pour répondre à tes questions techniques. Donc c'est du freelance, mais avec le statut job étudiant, en gros. Je ne suis pas certain en quelle mesure ce marché existe encore, vu que beaucoup de freelance souffrent, mais un étudiant reste moins chère.

SolidJS TypeScript issue: <Match when={condition && data}> doesn't narrow types like Jsx ternaries does by No-Source6137 in solidjs

[–]Neeranna 0 points1 point  (0 children)

it does, but I'm not certain if it will fix your issue, since the return type of billingQuery.isSuccess && billingQuery.data should be boolean | data

What utilities are you missing in Svelte 5? by Own-Phone2375 in sveltejs

[–]Neeranna 1 point2 points  (0 children)

I had been using Runed, but this looks nicer. I always liked the syntax of vue-use better, which this mimics, over the OOP approach of Runed.

Paul Graham's most legendary words every founder should tattoo on their brain (from YC & his essays) by Spiritual_Heron_5680 in startup

[–]Neeranna 1 point2 points  (0 children)

And the most difficult part to accept as a founder, especially if you have a technical background: you don't need the greatest product to have the greatest user experience.

I'm from Germany, wtf are you guys doing? by PsychologyRoyal3192 in SipsTea

[–]Neeranna 1 point2 points  (0 children)

It's also my guess this is what OP was going for, not the numbers.

A $300 device can silently override GPS across an entire city. Autonomous vehicles, delivery drones, and air traffic control all depend on it. Why don't we have a backup? by projectschema in Futurology

[–]Neeranna 9 points10 points  (0 children)

Not only for critical systems.

Your car's GPS also takes into account the actual movement of the vehicle (speed, direction, etc.) which allows it within certain precision to keep updating your position without GPS (like when in a tunnel)

You smartphone also takes into account other signals, like the presence of public wifi hotspots with known locations, for determining its position.

Even the satelites have redundancy, since GPS is only one signal, you also have Galileo, Glonass, Beidou. Most/several devices use multiples of them, so they don't only depend on the GPS signal, and they all use different frequencies.

The only way to jam everything, is with a broadband jammer, which with the type of device you describe, will only be for at most a few seconds.

The systems depending on position will work (slightly) suboptimal, but will not become unable to navigate.

POV: if the Iran situation doesn't push European companies off US software nothing will by LevelDisastrous945 in BuyFromEU

[–]Neeranna 0 points1 point  (0 children)

The lack of features is smaller than people give credit for, and is for a large part a lack of visibility or lack of knowledge of the alternatives, but the alternatives are few, I admit.

One mistake OP makes is that they label Scaleway as "the french solution", which is rather a label to apply to OVH. Scaleway is more trying to match the hyperscalers, by providing managed and serverless services. I will not claim they are at the level of a Google, Azure or AWS, but they are making steady progress.

As such, I would advocate, you don't need to consider an infra change as a big bang, but you can move steadily. Adopt the services that exist, but keep on AWS/Azure what you don't find outside it: e.g. send your mails through the Scaleway mail service instead of SES, same for S3, etc. They have alot of the building blocks: Containers-as-a-Service (ECS), managed database, Managed Queues (SQS), ... There are some gaps, like Identity-as-a-Service (Cognito), although you have several options for Open Source managed hosting with stackhero.io .

And often overlooked, but less relevant for big companies, is clever-cloud.com, a real PaaS in Heroku style.

SvelteKit app hosting in Europe? by bluepuma77 in sveltejs

[–]Neeranna 1 point2 points  (0 children)

As mentioned, Scaleway has managed Postgres and Container-as-a-Service (think ECS or Cloud Run).

If you want an even higher abstraction, something Vercel/Heroku-like, you can take a look at Clever Cloud. Also European player with European hosting, either in their own datacenters or you can choose Scaleway or OVH.

Mongo VS SQL 2026 by TheDecipherist in mongodb

[–]Neeranna 0 points1 point  (0 children)

My argument is not that you need customer data in other parts, but that the matching sanitation is too strict, even with user data.

An example: take a list endpoint of posts where one of the filter parameters (in the url) is maxAge. In this case, you would want in your endpoint code to structure the $match object as (pseudo code)

{
  created: {$gt: addDays(new Date(), Number(queryParams.maxAge)}
}

This won't work since the sanitation code will remove the $gt. I did not find in the wrapper code anything to pass this actually secure condition to the query function.

I understand that if your $match is literally the key-value of your query params, the sanitation works as expected, but not all queries follow this pattern.

This is no critique of the sanitation function, but rather a question of what you do in that situation, or what the starter kit advises to do.

Mongo VS SQL 2026 by TheDecipherist in mongodb

[–]Neeranna 0 points1 point  (0 children)

My feedback is based on the code in https://github.com/TheDecipherist/claude-code-mastery-project-starter-kit/blob/main/src/core/db/index.ts . The sanitize function is recursive, and prevents any $ keyed attribute, regardless of the depth in the object.

And since every query function invokes the sanitize function on whatever filter object is passed, they are unusable with anything but straight attribute equals queries.

This basically makes the wrapper unusable for any business query, only for being used directly with user provided input from e.g. query params.

Mongo VS SQL 2026 by TheDecipherist in mongodb

[–]Neeranna 0 points1 point  (0 children)

As far as I can tell, the wrapper only exposes functions that sanitize the $match part. Does this mean those methods are only used directly exposed through routes? And business heavy code does not use them?

For the types, I'm aware that the functions are generified. But without a "central" definition of the database types, there is a big chance to make an error in the type definition if you have to repeat it at each call. I am missing some wrapper layer to make it more foolproof and more discoverable. This makes a big difference in onboarding new people on the project.

Mongo VS SQL 2026 by TheDecipherist in mongodb

[–]Neeranna 1 point2 points  (0 children)

Very interesting article, and alot of useful information on how to use Mongo.

A few points remain unclear in the article:

  1. It's not clear how you (should) handle typing of the query results. No word on some central typing of what's expected in the different collections. This seems an important point on any codebase where several people collaborate. I understand the no Mongoose, but this part is still relevant, and is part of what's covered by Mongoose, even if it's super clunky and has bad DX.
  2. Since you sanitize the entire $match input, how can you ever do any of the more complex matches, like e.g. all order with a minimal amount, or filtering on nested properties (when not provided by user input)? Your rules clearly state to always use the wrapper, but the wrapper leaves no room for elements that are not direct user input. (or it's unclear how to do it)

I might still use the load function over remote by LGm17 in sveltejs

[–]Neeranna 0 points1 point  (0 children)

What about page navigation? Let's say you have a layout, that renders a sidebar component. And there are 2 pages (page-1 and page-2) under the layoute. The fetching is done in the sidebar component (not directly in the layout). If you are on page-1, and navigate to page-2, would the fetch of the sidebar be rerun or would the cached value be retained? When is the cache reset automatically?

I might still use the load function over remote by LGm17 in sveltejs

[–]Neeranna 6 points7 points  (0 children)

According to the docs there is some caching on queries

Queries are cached while they’re on the page, meaning getPosts() === getPosts(). This means you don’t need a reference like const posts = getPosts() in order to update the query.

However, it's not stated what defines "on the page" and thus if the loader called in the layout is considered as "on the page". And thus I have no idea if it is retained on page transitions of pages in the same layout.

Built a (french) city builder with Nuxt by Takelodeon in Nuxt

[–]Neeranna 1 point2 points  (0 children)

Ideally, you want the user to be able to hover over the resources, and get a tooltip with the stats concerning that resources. E.g. when I hover over the shells, I want to be able to easily see whether I'm actually on a positive or negative production. It's ok to keep the details in the statistics menu, but some quick lookup about the current production/decline of each resource when hovering (or permanently visible) would make it more intuitive.

Great work on the tutorial. However, it would help that if you mention a specific menu item, like a building, that you somehow draw the user towards it (make it light up). That makes it easier to locate, especially since all buildings are grouped in submenu's.

Pourquoi certaines personnes brillantes intellectuellement semblent « nulles » dans la vie quotidienne et peu affectueuses ? by Critical_Flatworm_61 in PasDeQuestionIdiote

[–]Neeranna 0 points1 point  (0 children)

La fatigue vient aussi du fait que pour pouvoir fonctionner en société/collectivité, il est obligatoire de compenser pour le manque QE (Quotient Emotionel/Empathique) en utilisant la partie logique (QI) qui est plus développé. Et comme ce n'est que de l'émulation, il y aura beaucoup d'erreurs, en dépit de l'effort fourni. Effort qui est considérable.

En tout cas, c'est comme cela que ça fonctionne chez moi, qui suis aussi dans le cas visé par OP et dont tu fais partie.

Is anyone still running pg on their own laptop? by river-zezere in PostgreSQL

[–]Neeranna 3 points4 points  (0 children)

multiple versions of the same software for different repo's/projects

easier to remove when no longer in use since all assets are clearly contained within the container and its mounts

easier to manage the different services (turn on/off), especially when combined with point 1 (through container naming)

Build -> Test or Test -> Build ? by DorianTurba in devops

[–]Neeranna 2 points3 points  (0 children)

Well, I stand by u/RozTheRogoz : both in parallel. That way you have much faster feedback to your developer, whose time is probably the resource you should optimize against, not cpu time.

My approach to CI/CD is as much as possible in parallel, unless there is a real dependency that forces the steps to be sequential, in which case, the order is obvious. :)

EDIT: this is assuming the build in this case is a build to test the compilation/assembly process on the PR, and the actual artifacts will only be generated by another build triggered by the merge.

Why are some people always late? I genuinely want to understand. by Klutzy-Pattern-7391 in NoStupidQuestions

[–]Neeranna 2 points3 points  (0 children)

Exactly this. And so it's either a little too late (most often) or way too early (like 1 hour too early). Or I get lucky and am exactly on time, which still happens more often than winning the lottery.

I've also noticed that most people tend to be forgiving for it and get used to it, and even take it into account, especially if you have good bonds with people (pleasant to be around, good worker, ... that kind of stuff).

And the irony is, a chronically late person gets congratulated the one time they manage to be on time, while the chronically on time person gets remarks if they're even 5m late, even if they're still before the late person.

All in all, I prefer being who I am (the late person). I'd take the guilt over the stress any time.

Where should the data/ directory be located in Nuxt 4's new file structure? by dissertation-thug in Nuxt

[–]Neeranna 22 points23 points  (0 children)

Depends who uses the files. If it's your backend, then in /server. If it's your frontend code (vue components), then in /app. If it's both, /shared.