DEV Community

Cover image for Welcome Thread - v374

Welcome Thread - v374

KDF benchmarks and multi-agent testing

  1. Leave a comment below to introduce yourself! You can talk about what brought you here, what you're learning, or just a fun fact about
    yourself.

  2. Reply to someone's comment, either with a question or just a hello. 👋

Bad Bunny performs at the Superbowl and waves to the camera

  1. Come back next week to greet our new members so you can one day earn our Warm Welcome Badge!

Top comments (650)

Collapse
 
sloan profile image
Sloan the DEV Moderator The DEV Team

Just wanted to say welcome to everyone new and not-so-new to DEV. 👋

Hope y'all enjoy it here!

If you're wondering how to get started with posting a post, then consider checking out this article here.

To learn more about writing on DEV, check out our Best Practices for Writing on DEV series. 😀

Collapse
 
protoconsent profile image
ProtoConsent

Thank you for the guide, hi everyone!

Collapse
 
rihhanna profile image
Rehana Hassan Muhumed

hi🤗

Collapse
 
gmatt_8004ecb94add3 profile image
GMatt

Agreed - thank you for whoever put together the guide - likely a multi-indiviual effort.
Hi Everybody...

Collapse
 
alichoudhry profile image
Ali Choudhry

Hi! Great to connect 👋

Collapse
 
kielltampubolon profile image
Kiell Tampubolon

Hello! Great to meet you here. What are you currently working on or learning? Always exciting to connect with fellow devs!

Collapse
 
yash-blmnm profile image
Yasaswini Balasubramaniam

Hello 👋 thank you for sharing the best practices guide.

Collapse
 
bittobuild profile image
Bit to Build

hi

Collapse
 
rihhanna profile image
Rehana Hassan Muhumed

thank you😇

Collapse
 
jim_rogers_c227114e275d64 profile image
Jim Rogers

🙂

Collapse
 
amanmohdali profile image
Aman Ali

Thank you

Collapse
 
rjchien728 profile image
Roger Chien

Hi

Collapse
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

:)

Collapse
 
emmanuellsensai profile image
Usang Emmanuel

:)

Thread Thread
 
si_thuhtun_0ed67d6c0a4fb profile image
Si Thu Tun

:)

Thread Thread
 
knight_c680b8aa2d profile image
Knight

:)

Collapse
 
focusjordan profile image
Jordan Kugler

Thank you! Hello everyone 👋

Collapse
 
feehabcore profile image
Md Yeomun Hasan

hiii

Collapse
 
sarthak_das_7ea284cb516fb profile image
Sarthak Das • Edited

awesome website. Joined today for devops learning and other tech stacks

Collapse
 
flo1632 profile image
Florian Zielasko

Hi everyone! 🙂 Thank you for the guide!

Collapse
 
antitopy profile image
Antonia Navarrete

hii😀im Antonia from Chile!, im AWS Leader at AWS Girls CL

Collapse
 
nehemiah_dev profile image
Nehemiah

Hi Antonia

Collapse
 
thurmon_demich profile image
Thurmon Demich

Hi nice to meet ya!

Collapse
 
neighbor-z profile image
Neighbor_Z

Hi, I'm Neighbor-Z, a tech enthusiast and growing developer.

I'm currently working on a light-weight, modern, Swift-based MTP device management tool designed specifically for macOS.

Collapse
 
javz profile image
Julien Avezou

Welcome! And nice tool!

Collapse
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

I appreciate you taking the time to welcoming people to DEV, just like @konark_13! Makes it much more welcoming :)

Thread Thread
 
javz profile image
Julien Avezou

I was given a warm welcome back in the day which led me to staying here. I also want others to have the same experience :)

Thread Thread
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ • Edited

Fair enough. Appreciate you giving back to the community! I remember I introduced myself in the Welcome thread and I got no welcome :(

To be fair, I was late to the party, so it make sense. But I just do it anyway because it's right morally for me.

Planning on dropping my full intro at the week of 400! Hope you are still around there!
Thanks Julien :)

Thread Thread
 
javz profile image
Julien Avezou

Week 400, noted! I should definitely be around then! (at least I hope so too :D)

Thread Thread
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

See you Wednesday, October 21, 2026 :D

Thread Thread
 
konark_13 profile image
Konark Sharma

Hi, Francis. Welcome to the community. 😊

Can't wait for week 400. I'll welcome you today itself. I see you are an open source contributor what organizations you contribute too? How you distinguish which organization to contribute too?

Awesome to have you and have a great time here.😉

Thread Thread
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

Thank you Konark! I can answer your questions!: F o r e m :)

Thread Thread
 
konark_13 profile image
Konark Sharma

Wow nice, how you decide which organization to contribute to?

Have an awesome time here and teach people more about open source as well.

Collapse
 
mogwainerfherder profile image
David Russell

I think there's a joke from The Office that fits here quite well.

Collapse
 
neighbor-z profile image
Neighbor_Z

Thanks! check it out on GitHub : )

Collapse
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

Welcome to DEV! Great work :D

Collapse
 
truongp profile image
TruongPNT

Looks great. Any challenges while building it?

Collapse
 
neighbor-z profile image
Neighbor_Z

There are challenges. I'm optimizing the backend communication with multiple devices and it's complicated.

Collapse
 
wpzstudio profile image
Ping

really a nice tool.

Collapse
 
torrixai profile image
Adarsh Rao

Nice one!

Collapse
 
flair_nla profile image
Mustapha

Hello

Collapse
 
arianova613 profile image
AriaNova613

Hello 👋

Collapse
 
orhhan18 profile image
Orhhan_18

Hi, nice tool

Collapse
 
southerncleanprosllc profile image
Southern Clean Pros LLC

hi

Collapse
 
reign4eer profile image
M.M

Hello! cool project, wow!!

Collapse
 
neighbor-z profile image
Neighbor_Z

Cheers, feel free to check it out on GitHub

Collapse
 
diamond_worlldd profile image
BELLO ABD'QUADRI BOLAJI

Great 👍🏽

Collapse
 
treszyk profile image
Patryk Sowiński

Hey, I’m Patryk and I’m working on a zero-knowledge password manager for my bachelor’s thesis using .NET and Angular.

I recently ran some benchmarks on Argon2id, Bcrypt, and PBKDF2 across different hardware to understand real-world trade-offs when choosing a KDF.

Just published a post about it and would love to hear your thoughts, especially on parameter choices and mobile constraints.

Collapse
 
mdenda profile image
Matías Denda

Hi Patryk, nice topic! I've been down the KDF rabbit hole myself for a steganography project — Argon2id's memory cost parameter is brutal to tune for mobile. Did you end up finding a sweet spot for Android targets, or settling for device-class detection? Will check out the post.

Collapse
 
treszyk profile image
Patryk Sowiński

Hey! Yeah, memory-hard KDFs are definitely a pain on mobile.

For my password manager I ended up prioritizing security over UX, so I went with two coarse-grained modes:

Standard: 128MB, 3 iterations
Hardened: 256MB, 4 iterations

My thinking is that users who really value security and privacy will be okay with waiting a bit longer. Especially since the KDF only runs once per session in my case (login).

Thread Thread
 
mdenda profile image
Matías Denda

Makes total sense with a once-per-session cost — you can afford the wait. The tradeoff gets way uglier in scenarios where the KDF runs per-operation (which is what bit me in a stego project: decrypting a payload shouldn't take 3 seconds on a phone, but Argon2id with meaningful parameters absolutely can).
Curious: Did you consider exposing the mode as a per-device setting, or is it a global vault-level parameter? I've seen both patterns, and I can never quite decide which is less footgun-prone.

Thread Thread
 
treszyk profile image
Patryk Sowiński

I didn’t explore per-device tuning. In my design the KDF modes are account-wide, but it’s certainly an interesting approach. Though I think it would introduce quite a bit of complexity around parameter consistency across clients.

More importantly, since I’m using a Master Key wrap on the backend, per-device tuning would likely result in multiple wraps encrypted under different KEKs depending on the device. That creates uneven security guarantees for the same account in case of a DB leak, which I wanted to avoid.

Keeping the parameters account-wide ensures that all wraps are derived under the same assumptions and makes the model much more consistent to reason about.

Also, your steganography project sounds interesting. What kind of project is it?

Thread Thread
 
mdenda profile image
Comment deleted
Thread Thread
 
treszyk profile image
Patryk Sowiński

Love the idea! One thing I’m really curious about is, since the carrier file is never modified, are there limitations with smaller files in terms of having enough data to encode the message?

Thread Thread
 
mdenda profile image
Matías Denda

Great question — and the answer is counter-intuitive because Anyhide breaks the "carrier size = capacity" rule that LSB-style stego is built on.

Since the carrier is never modified (and never transmitted), it's not acting as storage for the message. It acts as a reference table. Under the hood, Anyhide fragments the message into variable-length pieces (fragment size is derived from the passphrase) and then searches for each fragment as a substring inside the carrier. The code that gets shipped over the wire is essentially a list of (position, length) references, encrypted and permuted.

So the real constraint isn't "does the carrier have enough bits to fit my message," it's: does the carrier contain the alphabet/byte-values my message needs, at least once? Concretely:

  • Text carriers: the carrier needs to cover every character the message uses. The encoder actually runs a coverage check and will refuse to produce a code if it's below threshold (InsufficientCoverage error — default is 100%). A short blog post or a single page of prose is almost always enough for ASCII text.
  • Binary carriers: worst case is needing every byte 0x00–0xFF. A ~1KB file of high-entropy data (JPEG, PNG, compressed archive) easily covers that.

There's a secondary effect: smaller carriers → fewer distinct substrings → fragments tend to match at shorter lengths → the output code gets longer (more references needed). So small carriers still work, they just produce a bigger code. And with multi-carrier mode (v0.12+), you can spread the alphabet across N files and gain an extra N! factorial of combinations for free, which makes tiny individual carriers very viable.

The actual floor is surprisingly low — if the carrier is a few hundred bytes of diverse content, you can encode arbitrarily long messages. A one-word carrier like hello, on the other hand, won't let you encode zebra. The encoder fails loudly in that case rather than silently degrading, which is a deliberate choice.

Collapse
 
benjiandai profile image
Benjian Dai

Hey all 👋

Benjian here, been coding for a while but new to dev.to. Currently
building a side project in the Reddit / HN scraping + AI space —
honestly the most fun I've had in years, and also the most humbling
(distribution is wayyy harder than building).

Looking forward to learning from people here. Cheers.

Collapse
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

Hey Benjian! Welcome to DEV.to! What side project are you building in detail?

Collapse
 
benjiandai profile image
Benjian Dai

Thanks Francis!

It's called MonetScope — a pipeline that reads Reddit / HN / X and surfaces what people complain about as scored
startup opportunities. Been the most fun / most humbling build I've done in a while.

Actually writing up the engineering side right now — the five things that turned out harder than the LLM itself.
Dropping here once it's live if you're curious. What are you building these days?

Thread Thread
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

Sounds wonderful and great work! Right now for me, I am doing a Next.js where you can create a poll and share the link to everyone to vote on your poll. I am about to release another dev log today discussing the functionality of the Demo poll. Feel free to check it out if you like on my profile :)

Thread Thread
 
benjiandai profile image
Benjian Dai

Nice — poll-sharing looks deceptively simple until the duplicate-vote / bot question shows up on day one. Curious how
you're handling vote integrity, or is v1 honor-system to see what breaks first?

Drop the dev log link here when it's up — easier than digging through profile, and I'd like to see how you're framing
it.

Thread Thread
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

Yea for sure! dev.to/francistrdev/easypollvote-d...

It is still a work in progress but the MVP is there for you to try! This is the latest log I just posted today!

Thread Thread
 
benjiandai profile image
Benjian Dai

Read it — clean writeup. The action-dispatch pattern works fine at v1; the cliff is around case 5+ when each branch
owns its own validation. A handlers: Record<Action, Fn> map keeps it flat if you go that route.

Continuing the integrity question: email + 6-digit code is robust but heavy for share-and-vote — you'll lose voters at
the verification gate. Two lighter patterns worth a look: signed one-shot tokens minted at share-time (each link = N
votes, server tracks redemption), or fingerprint hash (cookie + IP + UA, accepting some leakage). Rule of thumb:
email-gate the creator, friction-gate the voter.

Will follow — drop #4 here when it's up.

Collapse
 
benjiandai profile image
Benjian Dai

Update as promised — just posted the writeup: dev.to/benjiandai/i-shipped-an-ai-...

The five things that turned out harder than the LLM itself when building
the scraper-to-scored-opportunity pipeline. §3 (the grounding pattern)
and §5 (the cross-language serialization bug) are the two I think
generalize best. Would love your read.

Collapse
 
donatus61 profile image
Donatus61

Good day Francis

Collapse
 
f3rnox profile image
Cris Mihalache

Hi everyone o/

I'm a TypeScript/Python developer, utilizing Node.JS and React/Vue.js for frontends. I'm going to start posting here on dev.to about things I genuinely care about — CLI tooling, developer ergonomics, and open-source stuff I've been building. Expect posts on Node.js, npm packages, and the occasional Python deep-dive.

Always happy to connect with fellow devs. Feel free to say hi! 👋

Collapse
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

Can't wait to see Cris! Welcome to DEV btw!! How long have you been a developer for?

Collapse
 
javz profile image
Julien Avezou

Hi Cris! And welcome! I am also a TS dev in Node + React.
Looking forward to your posts!

Collapse
 
mdenda profile image
Matías Denda

Hey Cris 👋 CLI tooling + developer ergonomics is a combo I'm fully here for. I've been building a few Go and Rust TUIs lately and the design space around ergonomics is surprisingly deep. Looking forward to your posts!

Collapse
 
peacebinflow profile image
PEACEBINFLOW

Hey everyone 👋

I’m based in Botswana and I’ve been diving deep into AI + multi-agent systems lately. What brought me here is really just curiosity — trying to understand how different systems can interact, learn, and evolve together instead of just working in isolation.

Right now I’m exploring ideas around building “living” data systems (kind of blending biology concepts with software architecture), so a lot of experimentation, a lot of breaking things 😄

Fun fact: I tend to treat most of my projects like ecosystems instead of apps… which makes things more complex than they probably need to be, but way more interesting.

Looking forward to learning from everyone here 👀

Collapse
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

Thanks for the introduction!! Can you explain more about how you treat your projects like an ecosystem?

Collapse
 
peacebinflow profile image
PEACEBINFLOW

Think of it less like building an “app” and more like building a living system.

In a typical project, you have one codebase doing everything — frontend, backend, logic, data — all tightly coupled. It works, but it’s static. If one part changes, everything feels it.

What I do instead is structure projects like an ecosystem, where each part behaves more like an independent organism.

For example in my MindsEye ecosystem:

There’s an orchestrator layer (like a brain) that coordinates everything
Multiple agents/services handle specific roles (data collection, reasoning, logging, simulation, etc.)
A shared memory layer (logs, ledgers, state stores) acts like the environment they all live in
Each component can evolve, break, or be replaced without collapsing the whole system

So instead of:

“How do I build this feature?”

I think:

“What kind of entity should exist in this system, and how should it interact with others?”

The key shift is:

Apps = fixed structure, predefined flows
Ecosystems = dynamic interactions, emergent behavior

For example, in one setup:

A data agent observes inputs
A reasoning agent interprets them
A logging agent records state changes
Another agent can later “learn” from that history

None of them need to know everything — they just communicate through structured outputs (often prompts, events, or state updates).

It does make things more complex 😄
But the upside is you start getting systems that can:

adapt without full rewrites
scale organically
and sometimes surprise you with behaviors you didn’t explicitly code

I basically treat software like digital ecology instead of architecture.
Alright, here’s a clean, dev-focused version you can post as a continuation:


If I had to break down one concrete part of my setup, I’d point to the MindsEye Orchestrator. That’s essentially the control layer of the ecosystem.

At a practical level, the orchestrator is not doing the work itself. It’s responsible for deciding what should happen, which component should handle it, and how everything stays coordinated.


What it actually is

In simple terms, the orchestrator is made up of:

  • an input handler (event listener or loop)
  • a router/dispatcher
  • a decision layer
  • a connection to shared memory

It’s closer to a control system than a traditional backend service.


Core flow

  1. Input enters the system

This could be user input, sensor data, or output from another agent. Everything gets normalized into a structured event.

Example:

{
  "type": "observation",
  "source": "plant_sensor",
  "data": {
    "moisture": 32,
    "light": 78
  }
}
Enter fullscreen mode Exit fullscreen mode

  1. Context is pulled from memory

The orchestrator checks the current system state:

  • past events
  • logs
  • active processes

This step answers questions like:

  • Has this already been handled?
  • Is there existing context that matters?

  1. Decision routing

Instead of hardcoding logic directly, the orchestrator selects which agent should handle the event.

Traditional approach:

if moisture < 40:
    water_plant()
Enter fullscreen mode Exit fullscreen mode

Ecosystem approach:

agent = select_agent_based_on_context(input, memory)
dispatch(agent, input)
Enter fullscreen mode Exit fullscreen mode

This makes the system modular and adaptable.


  1. Agent execution

The orchestrator assigns a task to a specific agent:

{
  "agent": "reasoning_agent",
  "task": "analyze_plant_state",
  "input_ref": "event_1023"
}
Enter fullscreen mode Exit fullscreen mode

Each agent focuses on a narrow responsibility and returns structured output.


  1. Results are written back to memory

Outputs are stored as part of the system state:

{
  "type": "analysis",
  "result": "low moisture detected",
  "confidence": 0.92
}
Enter fullscreen mode Exit fullscreen mode

This becomes new context for future decisions.


  1. Chain reactions (feedback loop)

Outputs can trigger other agents. The system becomes a loop rather than a straight pipeline:

event → agent → memory → agent → action → memory → next step
Enter fullscreen mode Exit fullscreen mode

This is where the system starts behaving less like a program and more like an environment.


Key components inside the orchestrator

  • Event Queue / Input Handler
    Standardizes incoming data into a consistent format.

  • Router / Dispatcher
    Determines which agent should process each event.

  • Agent Registry
    A simple mapping of available agents:

  agents = {
      "reasoning": ReasoningAgent(),
      "logging": LoggingAgent(),
      "simulation": SimulationAgent()
  }
Enter fullscreen mode Exit fullscreen mode
  • Memory Connector
    Interfaces with storage systems (logs, ledgers, databases, vector stores).

  • Feedback Loop Engine
    Allows outputs to re-enter the system as new inputs.


How this differs from a typical app

Traditional backend flow:

request → controller → service → response
Enter fullscreen mode Exit fullscreen mode

Ecosystem-oriented flow:

event → context → agent → memory → agent → evolution
Enter fullscreen mode Exit fullscreen mode

One is linear. The other is iterative and state-driven.


Concrete example (plant system)

  • Sensor reports moisture = 32
  • Orchestrator logs the event
  • Reasoning agent identifies low moisture
  • Decision agent determines watering is needed
  • Action agent triggers irrigation
  • Logging agent records the outcome
  • Simulation agent updates the digital model

Each component operates independently but contributes to the same system.


Core idea

Instead of building a system that directly performs tasks, the goal is to build a structure where components interact, and outcomes emerge from those interactions.

That’s what I mean by treating projects like ecosystems rather than standalone applications.

Thread Thread
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

That makes sense and quite straightforward (for me)! Thanks for providing the explanation!

Thread Thread
 
peacebinflow profile image
PEACEBINFLOW

sure thing

Collapse
 
allforscience profile image
All For Science

Hi everyone! I'm building AI infrastructure and developer tools — working on security, observability, and orchestration for AI agent systems. Looking forward to learning from this community and sharing what I've been working on. Thanks

Collapse
 
javz profile image
Julien Avezou

Hi! Welcome! Looking forward to your posts.

Collapse
 
scuradimensions profile image
Scura

You have come the right place... 🤗

Collapse
 
nilambuilds profile image
Nilam Bora

Hey DEV community! 👋
I'm Nilam, a CS student from Assam, India. I build niche developer tools — mostly focused on problems that Indian developers face but nobody has solved properly yet.
Just shipped my first project: RupeesInWords — a REST API that converts numbers to Indian Rupees words (Lakh/Crore/Paise system). Every Indian invoice app and GST tool needs this, but there was no clean API for it. So I built one.
Already wrote my first article about it here on DEV 👇
dev.to/nilambuilds/i-built-a-niche...
Also just submitted my article to the Google Cloud NEXT Writing Challenge
dev.to/nilambuilds/forget-the-flas... — fingers crossed! 🤞
Looking forward to connecting with other builders, Python developers, and anyone working on developer tools for underserved markets.
What are you all building? 🚀

Collapse
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

Great progress Nilam and welcome to DEV! Awesome work on your first post and the Google Cloud NEXT post as well! Hope the best of luck to you :D

Collapse
 
nilambuilds profile image
Nilam Bora

Thank you Francis (⁠ ⁠◜⁠‿⁠◝⁠ ⁠)⁠♡

Collapse
 
gokhalej profile image
Gokhale Jayanthi

good going ...

Collapse
 
mazaki_eth profile image
Benjamin | mazaki

Hey everyone 👋
I'm Mazaki, developer and indie maker based in France. I've been shipping SaaS and mobile apps for a few years now, some for myself, some for clients.

Currently building Recalled, an activity log / audit trail tool for other devs.
Happy to be here and read what everyone else is working on!

Collapse
 
javz profile image
Julien Avezou

Hi Benjamin! Welcome! Recalled sounds like an interesting project. What kind of activity does it log?

Collapse
 
mazaki_eth profile image
Benjamin | mazaki • Edited

Hey Julien, thanks! 🙌

Basically any action a user takes in your product: user.login, invoice.deleted, document.shared, settings.updated, whatever matters to you. You fire an event from your backend (SDK or REST, 3 lines), Recalled stores it signed + searchable, and you get a dashboard to answer "who did what, when, from where" without touching your prod DB.

The idea came from re-coding the same activity_logs table in every SaaS I built. Figured it shouldn't be my problem anymore.

Collapse
 
mdenda profile image
Matías Denda

Hey 👋 I'm Matías, a Technical Architect from Argentina with 14 years of backend experience. Joining the community to share what I've picked up along the way — distributed systems, Git, and the open source I build on the side. Also a cave diver, so if you want to talk code or underwater physics, I'm around.

Collapse
 
francistrdev profile image
FrancisTRᴅᴇᴠ (っ◔◡◔)っ

Welcome Matías! Hope your journey goes well on Dev.to!!

Some comments may only be visible to logged-in visitors. Sign in to view all comments.