Skip to content
View om7057's full-sized avatar

Highlights

  • Pro

Block or report om7057

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
om7057/README.md

Om Kulkarni

Backend and distributed systems  ·  Go, gRPC, event-driven architecture
Software Engineer  ·  Contributor to CNCF-hosted projects

Portfolio  ·  LinkedIn  ·  Medium  ·  X


Merged upstream Prometheus · OpenTelemetry C++ SDK · GoFr
CNCF ecosystem Prometheus and OpenTelemetry are both CNCF graduated projects
Focus TSDB internals · specification compliance · declarative configuration · migration tooling
Research IEEE ICFT 2025, co-author and presenter on metadata exploration across lakehouse table formats
Experience Software Engineer working on backend and distributed systems. Previously SDE Intern at CoinSwitch (Go, gRPC, NATS JetStream) and Engineering Intern at ConnectWise (Go, Kafka, Aurora)

Recent work

A pattern runs through most of what I contribute upstream: software that fails silently.

In the Prometheus TSDB, querier cleanup discarded the error from Close(). On multi-block queries a failing block would surface as a successful query with missing data: no error, no log line, nothing for an operator to page on. I used errors.Join() to preserve concurrent cleanup failures alongside the primary error, so the failure reaches the caller instead of vanishing. Issue #19114 · PR #19120

The same shape appeared in the OpenTelemetry C++ SDK. EnvironmentCarrier::NormalizeKey() did not normalize the empty key, so Get("") and Set("") quietly operated on the wrong slot rather than erroring, a spec violation against opentelemetry-specification#5163. The fix also removed a now-unreachable !empty() guard, documented why the caching layer is a string_view lifetime and thread-safety requirement rather than an optimization, and added two regression tests verified to fail without the patch. Issue #4190 · PR #4264

The Metrics SDK had the same problem one layer up: cardinality limits were hardcoded to 2000, and configuration supplied by the user was logged as unsupported and thrown away. I added a CardinalityLimits struct with per-instrument-type fields, exposed GetCardinalityLimit(InstrumentType) on MetricReader and as a pure virtual on the CollectorHandle interface, and resolved the declarative YAML path through a zero-as-unset sentinel so an explicit 2000 counts as a real override rather than an absent one. The same change fixed undefined behaviour from uninitialized configuration members, and the default stayed a namespace-level constexpr to avoid the out-of-class definition C++14 would demand of an ODR-used static member. Issue #3292 · PR #4188

Same SDK, different gap: minimum_severity and trace_based were missing from LoggerConfig in the declarative (YAML) configuration path, so file-configured loggers silently ignored severity filtering. Added both fields to the parser with spec-aligned defaults, plus integration tests covering default, explicit-severity, and trace-based filtering. Issue #4130 · PR #4131

In GoFr I added ScyllaDB migration support, extending the framework's schema-migration path beyond relational backends, with a gomock-based harness (MockScyllaDB) so migration logic is testable without a live cluster. PR #2085


Research

MetaLens: A Web-Based Tool for Multi-Format Metadata Exploration
IEEE ICFT 2025, Smart Computing track. Co-author and presenter.

A format-agnostic metadata layer for lakehouse systems, unifying schema and snapshot state across Iceberg, Hudi, Delta, and Parquet into a single view.

IEEE Xplore  ·  DOI: 10.1109/ICFT66708.2025.11336690


Stack


Contribution graph

snake contribution graph

Popular repositories Loading

  1. adsl adsl Public

    TypeScript 1 1

  2. Acers-Hackathon Acers-Hackathon Public

    HTML

  3. PortfolioWebsite-FirstProject PortfolioWebsite-FirstProject Public

    HTML

  4. TravelManagement TravelManagement Public

    C++

  5. CPP-Bootcamp-2024-SourceCodes CPP-Bootcamp-2024-SourceCodes Public

    C++

  6. TicTacToe TicTacToe Public

    Java