I'm a software engineer working across Linux systems, containers, and developer tooling.

Day to day, I build systems at Rocket Software.

Open Source

Container internals, build tooling, and the Go/C boundary.

I gravitate toward the layer underneath the application: a compile-time instrumentation tool rewriting Go source before it builds, a Kubernetes GPU device plugin sharing memory with a C process, a Jenkins agent coordinating threads over a socket. The bugs there cluster into a handful of patterns: silent failures, thread-safety gaps, unbounded cardinality, spec drift. Browse by problem category below, not by repo.

OpenTelemetry C++ SDK

Everything below, across every problem category, that touches this repo.

OpenTelemetry C++ SDK

Configurable per-instrument-type cardinality limits for the Metrics SDK

Observability Cardinality Control

The Metrics SDK hardcoded a 2000 cardinality limit and silently discarded any user-supplied override from declarative YAML config.

Wired a configurable limit through MetricReader and CollectorHandle end-to-end, fixing a sentinel-value bug along the way; a follow-up fix (#4314) closed a gap where histogram views setting only a cardinality limit were silently rejected.

OpenTelemetry C++ SDK

EnvironmentCarrier didn't normalize empty keys

Specification Compliance

Get("")/Set("") silently touched the wrong slot instead of normalizing to "_", a spec violation - fixed alongside documenting the caching contract's string_view lifetime guarantees.

OpenTelemetry C++ SDK

LoggerConfig missing declarative-configuration attributes

Specification Compliance

minimum_severity and trace_based were missing from LoggerConfig's YAML configuration path, so file-configured loggers silently ignored severity filtering.

OpenTelemetry C++ SDK

OTEL_RESOURCE_ATTRIBUTES values weren't percent-decoded

Specification Compliance

Values were stored raw instead of percent-decoded per the W3C Baggage grammar the spec defers to, so key=hello%20world produced the literal string instead of "hello world".

Caught and fixed a real operator-precedence bug during review: << binds looser than +, so combining hex nibbles with + rather than | would have silently miscomputed the decoded byte.

OpenTelemetry C++ SDK

Qualified C library calls with std:: after a header modernization

Code Health & Static Analysis

Swapping deprecated C headers for their C++ equivalents left calls like memcpy, strcmp, and strtod unqualified, relying on implementations happening to expose them globally, which the standard does not guarantee.

Added std:: to those call sites across api, sdk, exporters, ext, examples, and functional, plus the includes that had relied on transitive inclusion, leaving vendored code untouched.

OpenTelemetry C++ SDK

Header used uint8_t without including the header that defines it

Code Health & Static Analysis

predicate_factory.h used uint8_t without including cstdint, compiling only because another header in the same translation unit happened to pull it in.

Added the missing include directly to the header that needs it, so it builds in isolation and under standard libraries without that transitive include.

OpenTelemetry C++ SDK

Anonymous-namespace linkage cleanup (misc-use-internal-linkage)

Code Health & Static Analysis

Closed out a long-running clang-tidy tracking issue by wrapping the last four file-local symbol groups in anonymous namespaces, reducing ODR risk on symbols with no header exposure.

OpenTelemetry C++ SDK

Deprecated C header migration (modernize-deprecated-headers)

Code Health & Static Analysis

Swept ~90 files from legacy C headers to their C++ equivalents, fixing IWYU's mappings first so it would stop recommending the headers being removed; excluded vendored code a reviewer flagged as out of scope.

Filed a scoped follow-up (#4356) for the std:: qualification gap the header swap exposed, rather than scope-creeping it into the same PR.

OpenTelemetry C++ SDK

Histogram views with only a cardinality limit were silently rejected

Silent Failure & Data Loss

When a view set aggregation_cardinality_limit without an explicit aggregation, AddView always built a plain AggregationConfig. For histogram and exponential-histogram instruments that type didn't match, so the whole view was dropped with a warning and the limit never applied.

AddView now resolves the instrument's effective aggregation type the same way the view registry does, so the configured limit takes effect.

OpenTelemetry C++ SDK

Elasticsearch log exporter aborted the whole process on invalid UTF-8

Silent Failure & Data Loss

WriteValue stored a log record's body/attributes as given, and Export() dumped them via nlohmann::json with its default strict error handler - any non-UTF-8 byte (a truncated multibyte sequence, a differently-encoded payload) threw type_error.316 inside a noexcept function, turning std::terminate() into the actual failure mode for one bad log record.

Switched to error_handler_t::replace, which substitutes U+FFFD for the invalid bytes so the record and the rest of the bulk batch still export instead of crashing the process.

OpenTelemetry C++ SDK

Logger emit could static_cast a no-op record into a real one

Concurrency & Thread Safety

A record created while the logger was disabled was a no-op record, but enabling the logger before emit let it reach two unconditional static_casts, which is undefined behavior. The issue's dynamic_cast fix doesn't build under the project's no-RTTI CI job.

CreateLogRecord now returns an empty MultiRecordable while disabled, which is a real Recordable, so both casts are always safe and the record is dropped without reaching a processor.

Experience

Where I've worked and what I've shipped.

Full-time engineering and product-based internships - all focused on production-grade backend systems in Go and cloud-native infrastructure.

Full-Time

Rocket Software

Jun 2026 - Present

Software Engineer

GoJavaPythonMicroservicesCloud NativeDockerKubernetesAWS

Modernizing mainframe software with cloud-native solutions, bridging legacy enterprise systems with contemporary distributed infrastructure.

Decomposing monolithic codebases into microservice-based architectures, improving deployment flexibility, scalability, and independent service ownership.

Internships

CoinSwitch

Jan 2026 - May 2026

Software Development Engineer Intern

GogRPCRESTNATS JetStreamPostgreSQLRedisDockerAWSKubernetes

Architected and scaled a production vendor adapter microservice bridging internal trading workflows with external OMS systems using Go, gRPC, REST, and NATS JetStream.

Designed environment-isolated runtime configuration across prod, preprod, and UAT, enabling build-once-deploy-many workflows and eliminating cross-environment traffic risk.

Implemented secure secret injection and strict file-permission controls (least privilege), replacing hardcoded credential paths with rotation-friendly operational patterns.

Engineered deterministic fail-fast startup with strict dependency sequencing and singleton initialization, preventing fail-silent behavior in high-frequency trading flows.

Built recovery-ready subscription management and trace-aware structured logging across REST, gRPC, and async callbacks, improving fault tolerance and incident triage speed.

ConnectWise LLP

Jun 2025 - Jul 2025

Engineering Intern (On-Site, Pune)

GoPostgreSQL (Aurora)KafkaDockerAWSGitLab CI/CD

Engineered a production-grade entitlement client in Go with resilient transport abstractions and config-driven endpoint resolution for reliable external integrations.

Implemented Hystrix-inspired circuit-breaker and fallback controls to preserve service availability during partial outages.

Built shard-aware partner onboarding and offboarding workflows, contributing to scalable Aurora data access patterns and better data locality.

Operationalized end-to-end reliability validation via local service mocks, API verification, Kafka event checks, and controlled failure simulations.

Projects

Top picks from my engineering portfolio.

Coldchain Optimization

Mar 2026

Coldchain Optimization

Real-time cold-chain logistics matching engine. Pairs shippers with transporters using live geospatial scoring, ETA tracking, and dynamic pricing.

GoReactPostGISDockerPython (Flask)
View Repository
GraphMind

Mar 2026

GraphMind

Multi-tenant AI memory assistant for financial workflows. Combines graph and vector retrieval for fast, isolated context recall across users.

FastAPIPostgreSQLNeo4jMilvusDocker
View Repository
InsightGuard

Dec 2025

InsightGuard

Real-time APT detection framework built on the ELK stack. Simulates attacks mapped to MITRE ATT&CK and flags anomalies with a reinforcement-learning model.

Elastic StackSysmonPythonPPO (RL)SHAP
View Repository
Smart Vehicle Sequencing

Oct 2025

Smart Vehicle Sequencing

Real-time paint-shop vehicle routing and sequencing system. Uses constraint optimization and discrete-event simulation to minimize color changeovers across buffer lines.

ReactFastAPISimPyOR-Tools (CP-SAT)MILP
View Repository
MetaLens

Mar 2025

MetaLens

Metadata explorer for data lakehouses. Reads Iceberg, Delta, Hudi, and Parquet schemas straight from S3, no external catalog required.

Node.jsFastAPIDuckDBApache ArrowAWS S3
View Repository
Safe Space

Mar 2026

Safe Space

Safety education platform for 5,000+ concurrent learners. Generates age-adaptive AI narratives from live news and reads emotion cues for feedback.

ReactFastAPIPostgreSQLRedisGoogle Gemini AI
View Repository

Blog

Things I've written down.

Notes on backend engineering and the occasional production mistake, currently hosted on Medium.

I care about writing code that is simple to reason about, easy to monitor, and dependable when it matters most. The problems that pull me in are usually about concurrency, data consistency, and holding up under load. Here's how I got here.

I write about backend engineering on my blog, and I've led technical communities and national-level events on the side. I also play badminton competitively.

Contact

Open to backend and distributed-systems work.

If you're building something in that space, or just want to talk shop, my inbox is open.

Site logo

I'm Om Kulkarni - a software engineer focused on building high-performance distributed systems and robust backend architectures.

© 2026 Om Kulkarni