125 Failures in 15 Days: Why the Hardest Part of Engineering Isn’t the Code

Fifteen nights, barely any sleep. Nearly a million lines of code written—and just as many deleted. If you’re here for a polished story about flawless deployment, you’re in the wrong place. This is a survivor’s account. Fifteen days locked in a fight against system design.

The past couple of weeks have been relentless. I built—and then trashed—125 unique data structure blueprints. Not because the code refused to run; honestly, writing code is the easy part. Parsing and tweaking syntax? Piece of cake.

The real problem was the plan. Perfection matters, and in the world of extreme optimization, settling for “good enough” is like stepping into quicksand.

[ ZERO COMPROMISE ]
/
/
/
LATENCY /______ SECURITY
/
/
/
/
/
PRICING

The Impossible Triad: Security, Latency, Pricing

Everyone knows the drill: pick two. You want security and speed? Get ready to pay up for fancy infrastructure. Cheap and fast? You’re sacrificing real protection. But I wasn’t willing to compromise. My goal is to nail all three—secure, fast, affordable.

Trying to force security, speed, and cost efficiency into one data structure is like bending steel with your bare hands. Relational databases buckle under latency pressure. Document stores bleed you dry at scale. Custom solutions? Sure, but good luck securing them without lugging around extra middleware.

So you keep pivoting. Draw a new idea, spin up the pipeline, write thousands of lines of test-driven logic, and push until something gives. Then, it falls apart.

The Anatomy of 125 Failures

Eight failures a day, give or take. You wake up, sketch out a new intricate state-management plan, spend hours coding, spot a concurrency bug or a weird cache issue, then toss the whole thing.

That’s what real engineering looks like. You don’t dodge failure—you move fast enough to learn from it.

Every blueprint I scrapped taught me something.

34: Fixed the latency, but let a weird validation issue sneak in. Gone.

72: Fast and secure, but costs ran wild—so out it went.

110: Balanced price and speed but collapsed under heavy load. Bye.

You don’t let it get to you. You focus. Cut away what’s broken, salvage what’s solid, sketch a new plan.

Tonight: Attempt #126

Another night, another whiteboard. This version took 2,504 lines—zero boilerplate, no distractions. Just core logic. The environment’s ready, tests compiled.

So, will it fail again tonight? Maybe. Odds are, it might. But if it blows up, I’ll know exactly where to look. I’ll toss the code, fix the blueprint, and get back to work before the sun’s up.

Because when you finally crack the puzzle—when speed, security, and cost work together—the mountain of failures stops being just mistakes. They become the foundation for something brilliant.

Journey log coming soon. Stay tuned. We’re either about to break what’s possible, or rewrite the rules entirely.

Share your story below: How many times have you scrapped an architecture before you finally made it work?

HEX, RGB, HSL, and CMYK: A Developer’s Colour Format Reference

Colours in web and print work live in different worlds. Understanding which format to use — and when — saves you from mysterious colour shifts between your design tool and the browser.

HEX: The Web Default

Hex codes like #2f855a encode red, green, and blue as two hexadecimal digits each (00–FF = 0–255). Three pairs, 16 million possible colours.

color: #2f855a;       /* 6-digit hex */
color: #2f855a80;     /* 8-digit hex with alpha (80 = 50% opacity) */
color: #f06;          /* 3-digit shorthand for #ff0066 */

Use it when: Writing CSS by hand, sharing colours with other developers, working with design systems.

Watch out for: 8-digit hex alpha is broadly supported now but wasn’t until ~2017. Check your target browsers.

RGB: The Coordinate System

RGB splits colour into red, green, and blue channels, each 0–255 (or 0%–100%). More readable than hex when you’re tweaking individual channels.

color: rgb(47, 133, 90);
color: rgb(47 133 90);           /* modern syntax — no commas */
color: rgb(47 133 90 / 50%);    /* modern syntax with alpha */
color: rgba(47, 133, 90, 0.5);  /* legacy rgba() with decimal alpha */

Use it when: You’re programmatically adjusting colour (add 20 to the red channel), or you need precise control over individual channels in JavaScript.

Watch out for: rgba() vs rgb() — modern CSS lets you write rgb(r g b / a) and skip rgba() entirely. Both work.

HSL: The Human Format

HSL (Hue, Saturation, Lightness) maps to how humans think about colour. Hue is 0–360 degrees on a colour wheel. Saturation and Lightness are 0%–100%.

color: hsl(145, 48%, 35%);
color: hsl(145 48% 35%);         /* modern syntax */
color: hsl(145 48% 35% / 50%);  /* with alpha */

Use it when: Building dynamic colour systems in code — darkening a button on hover, generating a palette from a brand colour, or making a colour 20% lighter.

/* Make a colour 15% lighter */
function lighten(h, s, l, amount) {
  return `hsl(${h} ${s}% ${Math.min(l + amount, 100)}%)`;
}

Because lightness is a direct knob, HSL is far better than RGB for programmatic colour manipulation.

Watch out for: HSL doesn’t model perceived brightness. Two colours at L=50% look very different in brightness to the human eye (yellow vs blue). For perceptually uniform colour, look at OKLCH.

CMYK: For Print

CMYK (Cyan, Magenta, Yellow, Key/Black) is the colour model for print. CSS doesn’t support it natively — it’s a print and design tool concept.

If you’re handing off assets to a printer or working in Illustrator/InDesign, you’ll encounter CMYK. The critical thing: RGB ≠ CMYK. Colours that look vivid on screen can become dull in print because printers can’t reproduce some sRGB values.

Conversion is lossy — going from RGB to CMYK loses some gamut. Always convert from RGB to CMYK at the end of your design process, not the start.

#2f855a in RGB → C:65% M:0% Y:57% K:48% in CMYK

OKLCH: The Newcomer Worth Knowing

OKLCH (Oklab Lightness Chroma Hue) is now supported in all modern browsers and solves HSL’s perceptual brightness problem.

color: oklch(50% 0.15 145);

The lightness value is perceptually uniform — oklch(50% ... ...) actually looks like the halfway point between black and white, regardless of hue. Great for generating accessible colour palettes algorithmically.

Quick Conversion Reference

Format Best for Editable in code?
HEX CSS, sharing, design handoff Limited
RGB Programmatic adjustment Yes
HSL Dynamic palettes, theming Yes
CMYK Print production N/A
OKLCH Accessible palettes, CSS Yes

Converting Between Formats

If you need to convert between HEX, RGB, HSL, and CMYK online, SnappyTools’ free colour picker and converter handles all four formats in both directions — plus includes an eyedropper for picking colours from your screen.

The Practical Rules

  1. Write CSS in HEX — readable, universally supported, paste from anywhere
  2. Manipulate in HSL — adjusting lightness or saturation is one number change
  3. Use RGB for canvas/WebGL — those APIs expect 0–255 values
  4. Convert to CMYK only for print — and use a proper tool, not a formula
  5. Watch your alpha — rgba() is legacy; rgb(r g b / a) is modern

Want to convert between HEX, RGB, HSL, and CMYK without a design tool? SnappyTools’ colour picker does it in your browser with no signup required.

The High Individual Contributor Is Becoming a New Organizational Unit

For a long time, the corporate ladder had a lazy binary: stay an individual contributor and eventually hit a ceiling, or move into management and get access to real leverage.

The interesting new archetype is not the manager who owns a large team. It is the High Individual Contributor, or HIC: a senior operator who stays close to execution but uses systems, automation, judgment, and organizational trust to create output that used to require an entire small team.

This is not the mythical “10x engineer” recycled with AI branding. The HIC compresses discovery, execution, review, and iteration into a tighter loop, then uses tooling to scale it without adding much coordination overhead.

That distinction matters. A very good employee produces more work. A HIC produces more organizational throughput.

The mechanics of HIC leverage

The first pillar is automation stacking. Modern knowledge work is full of repeatable fragments: research, synthesis, drafting, testing, reporting, triage, code generation, monitoring. AI and agentic tools do not remove judgment, but they let one person run more parallel workstreams. The HIC becomes less like a pair of hands and more like a control plane.

The second pillar is coordination collapse. Traditional teams spend enormous energy aligning people before work can happen: meetings, tickets, status updates, handoffs, reviews. Some of this is necessary. A lot is tax. A HIC with enough context and decision rights can skip entire layers of “let me check with X” latency.

The third pillar is systemic architectural impact. The best HICs build reusable systems: templates, scripts, APIs, dashboards, prompts, decision records, documentation, guardrails. Every solved problem becomes a primitive for the next one. This is why a HIC can look expensive on compensation and cheap on unit economics.

The fourth pillar is taste under uncertainty. Tools multiply direction. They do not choose direction well by default. The HIC’s value is knowing which problems deserve automation, which decisions need human review, where quality matters, and where good enough is actually good enough.

Traditional headcount model vs. HIC model

Dimension Traditional headcount model HIC model
Scaling assumption More output requires more people More output can come from more leverage per trusted operator
Coordination cost Grows quickly with team size Stays lower when ownership is concentrated
Decision speed Depends on meetings, managers, and alignment loops Depends on context, autonomy, and clear boundaries
Cost profile Salary plus management and coordination overhead Higher individual cost, lower overhead per unit of output
Best fit Stable, standardized, compliance-heavy work Ambiguous, high-context, fast-moving knowledge work

Teams are not obsolete. Complex organizations still need managers, mentoring, redundancy, and specialization. But the default answer of “add more people” is becoming weaker. Sometimes the better answer is: give the right person more autonomy, better tools, clearer constraints, and fewer ceremonies.

Why leaders are paying attention

Business leaders care because organizational scale is no longer automatically impressive. A large headcount can indicate strength, but it can also indicate coordination debt.

Recent work on Fortune 500 companies argues against universal management recipes. Autonomy appears to help more in some sectors, especially technology, while control and standardization remain powerful in asset-heavy or compliance-heavy industries. The HIC model is not a universal org chart. It is a contingency bet: where work is ambiguous, digital, high-context, and tool-amplified, autonomy can become a performance multiplier.

The same research points to an uncomfortable pattern: high-efficiency companies in the studied sample were significantly smaller by workforce size than low-efficiency companies, while producing equivalent or superior output. More people is not the same thing as more performance.

The old instinct was to convert strong ICs into managers so their influence could scale through people. The new option is different: keep them close to the work, but let their influence scale through systems.

That changes career design. Compensation ladders need to stop treating management as the only serious path to wealth and authority. Performance systems need to measure reusable leverage, not visible busyness. Executives need to distinguish autonomy from neglect. A HIC needs a clear mission, strong boundaries, context, and authority to remove waste.

Many companies say they want high performers, but what they reward is managerial shape: headcount, political visibility, meeting presence, budget ownership. The HIC threatens that pattern because their leverage is quieter. They may simply make a strategic workflow move ten times faster.

My opinion: this is where a lot of modern organizations will split. Some will use AI to create more management theater around more generated work. The better ones will use AI to make small numbers of elite operators ridiculously effective.

The HIC is not anti-management. It is anti-waste. The future of organizational design is not just about building bigger pyramids. It is about asking how much leverage one deeply capable person can responsibly hold.

That is a healthier question than “how many people report to you?”

References

Building an efficient logger in Go for hosts with restricted resources

Arenalog: Async Go logging optimized for 1–2 vCPU containers and serverless runtimes.

The Problem: Current loggers are not efficient in hosts with up to two cores

Traditional Go loggers are engineered for macro-scale vertical
concurrency. But what if your service runs in a 1–2 vCPU container? Then aggregate throughput becomes irrelevant. What matters is: how many cycles does one log call take from your business logic?

Design Philosophy

Arenalog completely flips this paradigm. It is purposely designed from the ground up
to be transparent in high-density, low-core cloud architectures: Kubernetes Sidecars,
Microservices, Serverless environments like AWS Lambda or Cloud Run.

By hyper-optimizing for a single core, Arenalog achieves a paradigm shift:
Delivering 3-core generic logger throughput on a 1-core cloud budget. On single core, the runtime completely avoids cross-core cache-line bouncing and atomic synchronization thrashing, helping the bytearena ingestor achieve its most efficient ingest conditions.

Arenalog operates asynchronously as long as the underlying writer writes.

Building blocks

Arenalog is a message formatter and ingestor writing to an io.Writer.

The ingestor design was covered in https://dev.to/tudorhulban/building-a-log-ingestor-in-go-with-double-buffered-sharded-arenas-48n7.

The ingestor is built using atomic types which hit peak performance when bound to 1 core because the CPU doesn’t have to constantly broadcast and synchronize cache-line mutations across multiple physical cores (eliminating L1/L2 cache thrashing).

The formatter part strives to keep heap allocations at a minimum.

How to use

First step is to initialize the ingestor.

By default the ingestor is optimized for one core hosts (ex. docker run --rm --memory="128m" --cpuset-cpus="0" -p 8080:8080 cname). To use with multicore hosts the bytearena.WithCounterCoreCPU() option should be used as in below:

ingestor, errCrIngestor := bytearena.NewIngestor(
            bytearena.Size100K(),// ingestor uses two arenas of size
            &writer,

            helpers.TernaryWithValueIn(
                []int{1},        // if NumCPU() == 1
                runtime.NumCPU(),// condition
                nil,             // use default
                bytearena.WithCounterCoreCPU(),
            ),
        )

where the helper is:

func TernaryWithValueIn[V comparable, T any](haystack []V, needle V, value1, value2 T) T {
    if slices.Contains(haystack, needle) {
        return value1
    }

    return value2
}

Ingestion should be started:

ctx, cancel := context.WithCancel(context.Background())
chIngestionEnd := ingestor.StartIngestion(ctx)

We can use the ingestor in the logger creation:

logger, errCrLogger := arenalog.NewLogger(
        &arenalog.ParamsNewLogger{
            Ingestor:    ingestor,
            LoggerLevel: arenalog.LevelInfo,

            WithFatalWriter: os.Stdout,
            WithJSON:        true,
        },

        arenalog.WithTimestampRFC3339UTC(t.Context()),
    )

Once we have a logger we can start using it directly:

logger.Info("logger ready")

Or create a context root that would be shared among entries:

    logContext := arenalog.NewLogContext(logger).
        WithRoot("service", "auth")

    entry := logContext.WithString("area", "some area")
    entry.Info().Msg("benchmark test")

And that should produce:

{"ts":"2026-05-19T13:56:10.288Z","level":"INFO","msg":"created logger, level INFO"}
{"ts":"2026-05-19T13:56:10.288Z","level":"INFO","msg":"logger ready"}
{"ts":"2026-05-19T13:56:10.288Z","level":"INFO","service":"auth","area":"some area","msg":"benchmark test"}

The first line is emitted automatically by NewLogger() as an initialization confirmation. Subsequent lines come from explicit logger.Info() calls.

Measured Performance

A log context with multiple fields as

logContext := NewLogContext(logger).
            WithRoot("service", "auth").
            SetInt("req_id", 12345).
            SetBool("cache_hit", true)

    entry := logContext.
                                WithString("area", "some area").
                                Info().
                                WithString("user", "tudor").
                                WithInt("attempt", i).
                                WithFloat("some float", 1.1137).
                                WithBool("success", true)

                            entry.Msg("benchmark test")

Is scoring as below:

// cpu: AMD Ryzen 7 5800H with Radeon Graphics
// BenchmarkArenalog_MultipleFields_Parallel/gomaxprocs=1-16            15310951            76.55 ns/op        0 B/op          0 allocs/op
// BenchmarkArenalog_MultipleFields_Parallel/gomaxprocs=2-16            17851222            66.67 ns/op        0 B/op          0 allocs/op
// BenchmarkArenalog_MultipleFields_Parallel/gomaxprocs=3-16            16263550            74.16 ns/op        0 B/op          0 allocs/op
// BenchmarkArenalog_MultipleFields_Parallel/gomaxprocs=4-16            15345500            76.67 ns/op        0 B/op          0 allocs/op
// BenchmarkArenalog_MultipleFields_Parallel/gomaxprocs=8-16            16770168            73.00 ns/op        0 B/op          0 allocs/op

When NOT to Use Arenalog

Arenalog prioritizes per-call latency on 1–2 core hosts. If you are running on 8+ core machines and need maximum aggregate throughput, a batched, multi-worker logger may still be more efficient.

Note that logs may be dropped under backpressure. Backpressure could be measured for specific cases, but on modern CPUs, a safe harbour value should be above one million logs per second per core if the arena size corresponds to the payloads velocity.

Source

The source is available on GitHub at github.com/TudorHulban/arenalog. Benchmarks, tests and helpers are all included.

Building Momentum — AI Study Sprint with MeDo 🚀

The Problem

Learning has never been more accessible.

But staying consistent?

That’s still one of the hardest challenges for learners.

Most people struggle with:

  • Planning what to study next
  • Staying consistent over time
  • Maintaining focus during study sessions
  • Avoiding overwhelm from large goals
  • Turning knowledge into daily action

Traditional productivity apps usually stop at task management.

Traditional learning platforms usually stop at content delivery.

We wanted to build something that bridges the gap between:

“I want to learn this”

and

“I am consistently making progress every day”

The Idea: Momentum — AI Study Sprint

Momentum is an AI-powered learning accelerator that transforms learning goals into structured daily study systems.

Users simply enter:

  • What they want to learn
  • Their deadline
  • Their current skill level
  • Their available study hours per day

The platform then generates:

  • AI-powered learning roadmaps
  • Daily study sprints
  • Focus sessions (Pomodoro-based)
  • Progress tracking and analytics
  • AI-generated quizzes and revision workflows
  • Adaptive learning recommendations

The goal was to make the app feel less like a planner and more like an AI study copilot.

Why We Built It

As developers and learners, we constantly face the same problem:

Learning is not the hard part — consistency is.

Whether it’s:

  • Preparing for interviews
  • Learning new frameworks like Angular or .NET
  • Studying AI/ML concepts
  • Completing certifications
  • Building side projects

The real struggle is maintaining structure and momentum over time.

That became the core idea:

Reduce the friction between learning goals and daily execution.

Building with MeDo

This project was built using MeDo’s AI-powered no-code/low-code platform.

Instead of manually coding every feature, we used conversational prompts to iteratively build the application.

We used MeDo to:

  • Generate dashboard layouts
  • Design onboarding flows
  • Build study workflows
  • Create analytics dashboards
  • Implement AI-generated learning systems
  • Refine UI/UX and responsiveness

The development process became highly iterative:

  1. Generate initial app structure
  2. Refine UI and layout
  3. Improve AI roadmap generation
  4. Add focus and analytics systems
  5. Polish UX and responsiveness

One key insight:

The quality of prompts directly affects the quality of the application.

Treating MeDo like an AI development partner (not just a generator) made a huge difference.

Features We Focused On

🧠 AI Roadmap Generation

Users can input goals like:

“Prepare for a .NET interview in 14 days”

The system generates:

  • Structured learning roadmap
  • Daily study tasks
  • Milestones and checkpoints
  • Revision cycles

🎯 Daily Study Sprints

A focused dashboard showing:

  • Today’s tasks
  • Priority items
  • Estimated study time
  • Completion tracking

⏳ Focus Mode

A distraction-free Pomodoro-based focus system:

  • Study sessions
  • Break timers
  • Session tracking
  • Focus streaks

📊 Analytics & Gamification

To keep users motivated:

  • Study streaks
  • Progress charts
  • Completion stats
  • XP-style gamification system

The goal was to make learning feel engaging and rewarding.

Challenges We Faced

One of the biggest challenges was balancing feature richness with simplicity.

We had many ideas, but we needed to keep the experience clean and intuitive.

Another challenge was improving AI-generated study plans so they felt:

  • realistic
  • actionable
  • structured
  • not generic

We iterated heavily on prompts and workflow design to improve quality.

UI/UX polish was also important — we wanted the app to feel like a real SaaS product, not a hackathon prototype.

What We Learned

This project changed how we think about building software.

Instead of focusing only on writing code, we spent more time on:

  • Product thinking
  • UX design
  • Workflow design
  • Prompt engineering
  • Rapid iteration

We learned that AI-assisted development shifts the developer’s role from “builder of everything” to “designer of systems.”

What’s Next

We plan to evolve Momentum into a more advanced AI learning ecosystem with:

  • Conversational AI tutors
  • Smarter adaptive learning systems
  • Spaced repetition memory features
  • Voice-based planning
  • Collaborative study rooms
  • Deeper analytics and insights

The long-term vision is an AI study copilot that actively helps users stay focused, motivated, and consistent throughout their entire learning journey.

Final Thoughts

The most exciting part of this hackathon wasn’t just building the app.

It was realizing how powerful AI-driven development has become.

We were able to go from idea → working product extremely quickly, focusing more on experience and product thinking rather than boilerplate development.

That shift feels like the future of software development.

BuiltWithMeDo 🚀

The Protocol Stack Nobody Talks About

Six agent protocols launched in the last year. Everyone’s obsessing over model selection. The operating surface around the model is what actually breaks.

Google I/O opened today with a flood of agent demos. Prompts becoming apps. Vibe coding going production. The spectacle is real. But the thing that determines whether any of this works isn’t on stage. It’s the quiet protocol stack underneath — MCP, A2A, AGUI, and their contested cousins.

Most teams can tell you which LLM they’re using. Almost none can answer: which tools should the agent see? Who else can it delegate to? Where does the human approve or cancel?

Those three questions are the stack. Here’s what sits at each layer.

MCP: tools are a security boundary, not a feature toggle

MCP is the most successful agent protocol by far. 14,000 GitHub repos tagged with it. Every major agent platform supports it. An agent connects to an MCP server, gets a list of callable tools, and can actually do work instead of just chatting.

But here’s what nobody says out loud: there’s no registry. No mcp search. No way for an agent to discover servers programmatically. The 14,000 number is GitHub tag-counting, not a registered directory. Smithery.ai lists about 6,700 — and you browse that with your eyes, not an API. An agent can’t ask “find me an MCP server for Salesforce” and get an answer. Discovery is a person reading lists.

That’s not a protocol. That’s a treasure hunt.

Tool access enables arbitrary code execution and arbitrary data access. MCP was designed for high-trust environments. Now it’s everywhere. Invariant Labs has published research on tool poisoning — malicious instructions hidden in tool descriptions that influence agents through the very metadata meant to make tools discoverable.

MCP gets the agent close to the work. It doesn’t decide whether the agent should do the work. That’s on you.

A2A: coordination isn’t free

No single agent does everything. A procurement agent needs a supplier agent. A travel agent needs a hotel agent. A software agent needs a security reviewer. Work is distributed across owners, domains, and expertise.

A2A turns that distribution into something agents can reason about. The agent card is the primitive — a published contract describing what a remote agent is, what it does, which skills it exposes, and how to interact with it.

The cost: coordination adds another surface where latency, failure, permissions, and observability can break. If your agent delegates to another agent, the workflow gets more flexible and less predictable at the same time.

A2A isn’t right for every product. A single agent with a small tool set may not need coordination at all. The right question: does this workflow require delegated expertise or authority outside the primary agent?

AGUI: the human control layer nobody builds until it’s too late

An agent that’s long-running, non-deterministic, and touching external systems needs more than a final answer. Humans need to observe it working, approve sensitive steps, inspect state, understand why it’s waiting.

Chatbots don’t handle this. Neither do traditional web apps built for request-response.

AGUI is the open candidate for this layer: streaming, shared state, front-end tool calls, custom events, steering, cancellation. It’s the protocol most teams will ignore until their agents start doing real work and generating real bugs. They’ll wire a model to tools, build a nice chat component, then discover what the agent is really doing — and retroactively bolt on approval buttons, logs, and progress spinners.

None of those are fixes for the root issue: finding the right control points, understanding what the agent is trying to do, and figuring out where the human needs to approve, deny, edit, or cancel.

The three that aren’t standards (yet)

A2UI, AP2, and X402 all have real use cases but sit in contested territory.

A2UI is Google’s answer to agent-generated interfaces — declarative UI instead of arbitrary HTML. Right direction, narrower scope than the full human control problem.

AP2 and X402 both tackle agent payments. AP2 handles commercial trust and user authorization (60+ collaborators including Mastercard, PayPal, American Express). X402 is Coinbase’s HTTP-native machine-to-machine settlement. Payments is the most crowded layer because it’s the most valuable. Everyone wants in.

The boring stuff wins

Teams over-focus on model selection and under-specify everything around it. They know which LLM they want. They don’t know which tools the agent can or should see. They have a prototype that calls APIs but no interaction model for user approval. They can imagine multiple agents coordinating but have no way to enforce or validate that.

The actual work lives in those questions. The protocol stack isn’t glamorous. Neither is infrastructure. But six months from now, the teams that figured out their operating surface will be the ones whose agents still run.

The ones that just picked a model won’t know what hit them.

Share Query Results Without Exposing Your Database

Share panel with encryption options

Share panel with encryption options

Someone asks for data. You run the query. Now what? Export to CSV, attach it to an email, hope nobody forwards it to the wrong person.

DBCode has a better option. Encrypted sharing with zero-knowledge architecture. Your data is encrypted on your machine before it goes anywhere.

How it works

  1. Run a query, open a table, or export a notebook
  2. Click the share icon on the right of the results grid
  3. Pick a format: CSV, Excel, HTML, Web Page, or Markdown
  4. Choose a storage region (for compliance)
  5. Set an expiration time
  6. Enter a passphrase or generate a random one

Click Share. DBCode encrypts the data on your computer using AES-256-GCM, then uploads only the encrypted version to a unique random URL. The passphrase never leaves your machine.

What recipients see

They get a link. They visit it, download the encrypted data, enter the passphrase, and the data decrypts on their computer. They don’t need VS Code or DBCode.

Best practice: send the link and passphrase through different channels. Link in Slack, passphrase in a text. That way if one is intercepted, the data is still protected.

The encryption details

  • PBKDF2 key derivation with SHA-512, 64,000 iterations
  • AES-GCM 256-bit encryption
  • Random initialization vector generated per share
  • Zero-knowledge storage: DBCode stores encrypted data it cannot decrypt
  • Automatic deletion after expiration

No database access needed

Recipients only see the exported data, not your database. No connection strings, no credentials, no schema access. Just the rows you chose to share, encrypted and time-limited.

Secure Share docs

Google I/O 2026 Made Me Realize AI Agents Are Becoming Real Development Infrastructure

This is a submission for the Google I/O Writing Challenge

Google I/O 2026 made one thing increasingly clear to me:

AI is slowly moving beyond isolated chatbot experiences and becoming part of actual development infrastructure.

For a long time, most conversations around AI focused primarily on model intelligence:

  • benchmark improvements,
  • larger context windows,
  • better reasoning,
  • faster responses,
  • and multimodal capabilities.

Those advancements matter, but this year’s announcements highlighted something equally important:

The ecosystem around AI is becoming significantly more usable for developers.

And I think that shift may ultimately matter more than raw model capability alone.

The Most Important Change Isn’t Just Smarter Models

Modern AI systems are no longer just standalone assistants.

They are increasingly becoming:

  • workflow participants,
  • orchestration layers,
  • development accelerators,
  • multimodal interfaces,
  • and infrastructure components developers can build around.

That changes the conversation entirely.

The value of AI is no longer only about asking better questions in a chat window.

The real transformation begins when AI systems can integrate into actual software workflows:

  • connecting tools,
  • handling multiple input types,
  • assisting development pipelines,
  • automating repetitive engineering tasks,
  • and enabling faster iteration cycles.

Google I/O 2026 strongly reinforced this direction.

The Ecosystem Layer Is Becoming the Real Advantage

One of the biggest takeaways from this year’s announcements is that developer ecosystems are becoming just as important as the underlying models themselves.

Because eventually:

  • APIs matter,
  • tooling matters,
  • integrations matter,
  • orchestration matters,
  • iteration speed matters,
  • and developer experience matters.

A highly capable model becomes dramatically more useful when developers can rapidly experiment, prototype, and integrate it into real systems.

That is why platforms like Google AI Studio feel important.

The barrier between:

idea → prototype → working system

is getting smaller.

And that changes who gets to build.

AI Agents Are Quietly Becoming Workflow Infrastructure

What stood out most to me was how AI agents are evolving beyond simple conversational interfaces.

Modern AI systems are increasingly expected to:

  • reason across tools,
  • manage context,
  • interact with workflows,
  • process multimodal inputs,
  • and coordinate tasks dynamically.

That starts looking less like a chatbot feature and more like infrastructure.

The interesting part is not just that AI can generate responses.

It’s that AI can increasingly participate inside larger systems.

That opens up entirely different possibilities for:

  • software engineering,
  • automation,
  • productivity tooling,
  • research workflows,
  • and intelligent developer platforms.

Faster Experimentation Changes Everything

One underrated aspect of modern AI tooling is how much it reduces experimentation friction.

Historically, building intelligent systems often required:

  • significant infrastructure setup,
  • complex integrations,
  • model management,
  • deployment pipelines,
  • and specialized expertise.

Now the development loop is becoming much faster.

Developers can:

  • prototype quickly,
  • iterate faster,
  • test workflows rapidly,
  • and validate ideas with significantly less overhead.

That acceleration may end up being one of the most important long-term impacts of the current AI ecosystem shift.

Because innovation compounds when experimentation becomes easier.

But The Challenges Are Still Very Real

At the same time, the current state of AI systems still comes with major engineering challenges:

  • hallucinations,
  • evaluation complexity,
  • reliability issues,
  • orchestration difficulty,
  • debugging problems,
  • and unpredictable behavior.

AI agents add even more complexity because they combine:

  • reasoning,
  • memory,
  • workflows,
  • tool usage,
  • and autonomous decision-making.

Building reliable agentic systems is still difficult.

And that’s exactly why infrastructure, tooling, and ecosystem maturity matter so much right now.

The easier these systems become to evaluate, debug, orchestrate, and integrate responsibly, the more useful they become for real-world software development.

The Bigger Shift

The most interesting part of Google I/O 2026 wasn’t a single feature announcement.

It was the broader direction.

AI is gradually evolving from:

  • “a tool developers occasionally use”

into:

  • “a software layer developers build on top of.”

That feels like a meaningful transition.

The future of AI will likely depend not only on model intelligence, but also on:

  • ecosystem quality,
  • developer accessibility,
  • infrastructure maturity,
  • orchestration tooling,
  • and the ability to transform ideas into working systems quickly.

And that shift may ultimately shape the next generation of software development far more than model benchmarks alone.

Thanks for reading!

What was the most interesting Google I/O 2026 announcement or trend for you as a developer?