Hi, my name is
Vishwak Thatikonda.
I design large-scale systems for retail, fintech, and mobility.
Large-scale systems architect and full-stack engineer with 12 years of experience. Currently consulting through SDH Systems on enterprise master data, event-driven serverless infrastructure, and operational intelligence.

01.About
I build the data and workflow infrastructure that large enterprises run on. Over the past 12 years I have architected master data platforms, event-driven serverless systems, and omnichannel contact center software across retail, fintech, mobility, and geospatial SaaS. I currently consult through SDH Systems, leading architecture and full-stack work on enterprise platforms.
Most of that work sits where operational data has to stay correct at scale. Assortment models and store attributes that thousands of retail locations read as their source of truth. The hard part is rarely the algorithm. It is the seams between systems, and what happens to them under load and over years.
I've previously led engineering at Kyte, Credit Sesame, and Airworks. Earlier, at Arizona State University, I wrote software for the Mastcam-Z science payload aboard the Perseverance Mars rover alongside the team at NASA JPL. I contribute regularly to open source, with merged work in TensorFlow, the AWS CDK, AWS Lambda Powertools, and GraphiQL.
Currently
Enterprise master data architecture, event-driven serverless platforms on AWS, and making operational data usable by AI systems.
Education
- Master of Science, Computer Science
- Arizona State University, 2016 to 2018
- Bachelor of Technology, Computer Science
- Amrita University, India, 2011 to 2015
Certification
AWS Certified Solutions Architect Associate, 2020
02.Experience
2023 to present
Full-Stack Developer and Systems Architect at SDH Systems
Architecture and full-stack lead on enterprise platform engineering. Delivered the master data core that thousands of retail locations read as their source of truth, covering the assortment model, dynamic store attributes, and the sellable item metadata that downstream ordering, pricing, and personalization systems consume. Designed the cascade delete and override controls that closed off a class of silent corruption across product hierarchies. Contributed to an omnichannel contact center platform handling roughly 10 million calls a year, and to payments infrastructure operating at Fortune 1 retail scale with millions of transactions a day.
2022 to 2023
Lead Full Stack Developer at Kyte
Led the domain migration that lifted organic traffic 13x overnight and cut marketing spend with it. Shipped a guest checkout that raised monthly bookings 33%, and a template driven integration path that took online travel agency onboarding from three months to two weeks, an 85% reduction in engineering effort. Introduced the content management system that let the team publish two SEO pages a day without engineering involvement, lifting site traffic 12%.
2021 to 2022
Senior Full-Stack Developer at Credit Sesame
Set technical direction for the banking team and led the UI revamp across mobile and web. Drove the white labeling effort that took the credit building platform to multiple financial institutions under PCI compliance, and shipped rent payment reporting into members' credit utilization.
2019 to 2021
Full-Stack Developer at Airworks Solutions
First engineer on the web application team, joining at pre-seed and building the product through the company's Series A. Owned it from architecture through maintenance: the AWS platform from scratch, Stripe for payments, subscriptions, and billing, and the geospatial data layer behind the map product. Built the error reporting pipeline that cut both time to resolution and time to detection across the image processing stack.
2018 to 2019
Full-Stack Developer at Augmate Corp
Built the API behind an IoT wearable environment manager and the dashboards clients used to track connected devices across their warehouses. Piloted an asset tracking application for UPS on Hyperledger Fabric.
2016 to 2018
Software Developer at Arizona State University, School of Earth and Space Exploration
Developed the Mastcam-Z science payload software component aboard the Perseverance Mars rover in conjunction with the team at NASA JPL. Built the microservices carrying scientific data to and from the Martian rovers, and extended the tooling scientists use to run operations and transformations on returned imagery.
03.Speaking
February 2027
DeveloperWeek 2027Upcoming
Rebuild or Refactor: An Architect's Guide for Rebuilding Systems for the Agent Era
September 25, 2026
September 24, 2026
From Analytics to Action: Re-Architecting MDM for Agentic Enterprise AI
July 15, 2026
July 4, 2026
04.Projects and open source
LambdaForge
Hands-off algorithmic stock trading that runs entirely on AWS Lambda for about fifteen cents a month. Python on AWS SAM, with the Alpaca API for execution.
ASU Capstone mentorship
Fall 2026 to Spring 2027
Mentoring a senior capstone team at Arizona State University through a full project cycle, from architecture review to delivery.
Open source contributions
70 merged pull requests across 11 projects, covering machine learning runtimes, cloud infrastructure tooling, and developer platforms.
tensorflow/tensorflow · ★ 200.7k
tensorflow-cpu on ARM64
pip install tensorflow-cpufailed on Linux ARM64 and Apple silicon because the package was never published there. The existing ARM builds now also ship under thetensorflow-cpuname.aws-powertools/powertools-lambda-typescript · ★ 1.8k
Concurrency safety on Lambda Managed Instances
Tracer segments, the log buffer, and debug sampling all assumed one request per execution environment. Each is now scoped per invocation, so concurrent requests stop corrupting each other's traces and logs.
aws/aws-cdk · ★ 12.9k
WebSocket API permissions
Reusing one Lambda integration across WebSocket routes granted invoke permission to the first route only, so the others failed at runtime with a configuration error.
aws-powertools/powertools-lambda-typescript · ★ 1.8k
Idempotency records that never complete
If a handler mutated its input, completion and cleanup targeted a different key, leaving the record stuck in progress. Record identity is now fixed when the operation starts.
All projects, by GitHub stars
tensorflow/tensorflow
Kernel hardening, XLA compilation, numerics · C++
200.7k GitHub stars28 mergedCrash hardening
- #123865
Unbatch aborted the whole process when given a malformed
batch_index. It now raises a catchable error, and a scalar index no longer produces a garbage error message. - #124050
A
ParallelConcatshape whose size overflows int64 crashed the process during graph optimization. The shape is now validated before the rewrite runs.(merged internally) - #125589
GradientTape.gradientsegfaulted when a composite target expanded to more tensors than theoutput_gradientssupplied. The counts are now compared and a mismatch raises a clear error. - #126021
A negative
num_elementsinBarrierTakeManyaborted the process. It is now rejected, matching the check the siblingDequeueManykernel already had. - #126028
The LSTM gradient kernels read out of bounds or aborted on mismatched input shapes. Every input's dimensions are now validated against the batch, cell, and time sizes.
- #126542
QR and SVD under XLA hit fatal checks for inputs of unknown rank. The kernels now validate rank and return an error.
XLA correctness
- #124874
map_fnunder XLA returned garbage when the mapped function changed the dtype. It now raises the same error eager and graph mode do. - #125167
take_along_axisfailed underjit_compilewhen a later op depended on its shape. The axis-swap branch is now resolved at trace time. - #126012
Integer
reduce_meanoverflowed under XLA and returned negative means for positive inputs. The accumulator is now widened to match eager results. - #126676
Slicing a dynamically shaped tensor (for example the output of
tf.where) under XLA silently dropped data, and on Linux corrupted the heap. The slice now carries the correct output size.(merged internally) - #126677
map_fnover an empty tensor failed to compile under XLA. Reads from a statically empty list are now allowed, since they never execute. - #127547
Writing past a
TensorArray's initial size under XLA silently truncated the result. It now emits a warning instead of failing quietly.
Numerical correctness
- #123867
tf.experimental.numpy.iscloseignoredrtolandatolfor integer inputs. Tolerances are now applied, matching NumPy. - #126208
A graph optimizer rewrote
1/yinto a reciprocal op that is not exact on x86, so graph mode disagreed with eager. The rewrite is removed. - #127946
xlogy,xlog1py, andxdivyreturned-0instead of0on the vectorized CPU path. They now return+0, matching the documentation and the XLA kernels.(merged internally) - #128034
The GPU kernels for
xlogy,xlog1py, andxdivyhad the same-0problem in separate code. They now return0too, so CPU and GPU agree.
API validation and error messages
- #125269
tf.reverseaccepted out-of-range axes in eager mode for scalar and empty inputs, while graph mode rejected them. Both now reject them. - #125591
eigh_tridiagonalwithselect='i'or'v'and noselect_rangefailed with an opaqueTypeError. It now raises aValueErrornaming the missing argument. - #125594
bincountsilently returned a short result whenmaxlengthwas belowminlength. Contradictory bounds are now rejected. - #125799
Indexing a captured eager
TensorArraywith a symbolic tensor insidetf.functiongave misleading advice. It now raises an error that describes the actual problem.
Packaging, logging, docs
- #127825
pip install tensorflow-cpufailed on Linux ARM64 and Apple silicon because the package was never published there. The existing ARM builds are now also published under thetensorflow-cpuname.(merged internally) - #125002
The GPU
CheckNumericskernel flooded stderr with a raw log line on every NaN or Inf, duplicating the error already returned. The log is now verbose-only. - #125697
Added a security note that
tf.io.gfiledoes not prevent path traversal or restrict symlinks, so callers must validate untrusted paths. - #127661
Restored a word-scrambled Apache license header in a GPU kernel header.
View on GitHubMore
- #123865
graphql/graphiql
GraphQL IDE and language server · TypeScript
16.9k GitHub stars5 mergedEditor and IDE
- #4329
The editor flagged valid SDL such as
type Bar @baz(no field block) as an error. - #4332
Image previews in the response pane fetched from the current site instead of the image's real host.
- #4557
Invalid JSON in the Variables or Headers pane now reports a plain message with line and column, and says the request was not sent.
View on GitHubLanguage server packaging
- #4329
aws/aws-cdk
Infrastructure as code for AWS · TypeScript
12.9k GitHub stars8 mergedIAM and permissions
- #37892
TableV2grants left out index ARNs when indexes were added after the table, so IAM denied queries against them. - #38154
Reusing one WebSocket Lambda integration across routes granted invoke permission to the first route only, so the others failed at runtime.
- #38365
TableV2MultiAccountReplicarejected imported tables with partly tokenized ARNs as "same account" when they were not.
Lambda bundling
View on GitHubBedrock models and docs
- #37892
adaltas/node-csv
CSV parsing and generation for Node.js · JavaScript
4.3k GitHub stars2 mergedView on GitHubParsing and stringify
aws-powertools/powertools-lambda-python
Observability and utilities for AWS Lambda · Python
3.3k GitHub stars2 mergedView on GitHubTracer and metrics
aws-powertools/powertools-lambda-typescript
Observability and utilities for AWS Lambda · TypeScript
1.8k GitHub stars14 mergedConcurrency on Lambda Managed Instances
- #5444
Overlapping invocations closed each other's X-Ray subsegments in the Middy tracer middleware. Segments are now stored per request.
- #5543
One invocation starting to buffer logs wiped the buffered logs of every other in-flight invocation. The log buffer is now scoped per invocation.
- #5544
A debug-sampling decision in one invocation changed the log level for all concurrent invocations. The effective log level is now scoped per invocation.
- #5548
Consolidated the per-invocation log level into the existing invocation store, following maintainer review.
Logger and metrics
- #5227
critical()did not flush the log buffer the wayerror()does, so the most severe failures lost their debug context. Any level at or above ERROR now flushes. - #5228
setDefaultDimensions()ignored regular dimensions when checking CloudWatch's dimension limit, so metrics could be silently dropped. - #5229
Dimension limits are now enforced per dimension set, the way CloudWatch EMF counts them, instead of double-counting overlapping keys.
Event handler (HTTP)
- #5257
Single-value headers that contain commas, such as
DateandExpires, were split into multiple values on API Gateway v1 and ALB. Only known multi-value headers are split now. - #5267
Valid CORS preflight requests without
Access-Control-Request-Headerswere rejected. They are now accepted, per the Fetch standard. - #5310
The HTTP metrics middleware pulled the optional metrics package into every bundle, crashing functions at init when it was not installed. The runtime import is removed.
View on GitHubParser, idempotency, commons
- #5295
LRUCachewith a max size of 0 permanently kept one stale entry after eviction. - #5666
Malformed base64 in Kinesis events made
safeParsethrow instead of returning a failure, and surfaced as an unhandled rejection throughparse(). - #5717
If a handler mutated its input, idempotency completion and cleanup targeted a different key, leaving the record stuck in progress. Record identity is now fixed when the operation starts.
- #5749
The REST API event schema stripped the custom context returned by a Lambda authorizer, which is usually the reason to use one.
- #5444
aws-amplify/amplify-ui
Authentication UI components · TypeScript
1.1k GitHub stars3 mergedAuthenticator
View on GitHubCI
- #7086
The issue-labeling workflow failed on every community comment on a pull request.
- #7086
hetznercloud/hcloud-cloud-controller-manager
Kubernetes cloud controller for Hetzner Cloud · Go
931 GitHub stars1 mergedView on GitHubHelm chart
- #1258
The Helm chart now ships non-root, read-only security defaults that pass the Pod Security
restrictedprofile.
- #1258
aws/graph-explorer
Visual explorer for graph databases · TypeScript
483 GitHub stars3 mergedView on GitHubQueries and engine compatibility
chaynHQ/bloom-frontend
Chayn's platform supporting survivors of abuse · TypeScript
72 GitHub stars3 mergedView on GitHubMaintenance
05.Contact
LinkedIn is the most reliable way to reach me. I am also on the networks below, and my resume is available as a PDF.