Anuraag Sridhar, PhD
About Me
I am an engineer who is passionate about building big things. My years of experience in software has shown me, that tooling does not matter, only what you do with it. As a result I am able to rapidly learn and work with any language, or framework, or tool. Even ones I have never seen before.
I like to think of my greatest skill as kit bashing different technologies to make something amazing. I can dive deep in the depths of any piece of software to debug it, but then come out and figure out a way to connect it to other pieces to make something usable and useful. As a result of my experience, I have realised that product is just as important as research and engineering.
I have both led teams in the past, and have also been an individual contributor. When I lead I like running things efficiently, rejecting all the noise and focusing on improving the teams processes as much as possible.
Experience
Principal Engineer
Nearmap (May 2021 - Present)
I completed various large projects in my time as Principal Engineer at Nearmap:
- Constructed an AI portal for internal engineers to visualise prerelease AI layers, and AI pipeline outputs, before they are released to customers:
- Tech Stack: python, FastAPI, NextJS, React, Typescript
- Use Meta's Segment Anything Model along with the onnx web runtime to enrich the Nearmap AI Labelling tool with automatic object detection:
- Tech Stack: python, ray, onnx, React, Typescript
- Was able to use Meta's open source model and implement a stable product that produced embeddings on the server but allowed users to perform real-time object detection on the client.
- Implement flyte+ray workflows in a k8s cluster to manage ML tasks and workflows:
- Tech Stack: flyte, ray, k8s, python
- Used Web workers to offload expensive computation off the UI thread for the Nearmap AI labelling tool:
- Tech Stack: Typescript, Recat, Web Workers
- Used web workers to offload polygon-polygon intersection code which was necessary to validate the AI labels.
- Used chrome dev profiler to identify performance bottlenecks in react, redux and canvas rendering code.
- Created a full stack slack integration that encouraged employee motivation by allowing employees to thank each other using slack
- Tech stack: AWS Lambda, Puppetteer, API Gateway, Slack API, Dynamo DB
- Used aws lambda with node runtime and puppeteer and React SSR to create images from the slack API
- Used API gateway for slack connections and dynamo db for data storage.
- Deployed various backend services to support a new labelling tool for nearmap imagery
- Tech stack: ArgoCD, Kubernetes, Terraform, Python
- Helped migrate a frontend monorepo from lerna to nx to utilise the ability to run tests only on changed sources
Software Team Lead
Nearmap (Jul 2019 - May 2021)
Transformed Mapbrowser, the single monolithic react app, into a well architected repo of libraries allowing the team to scale the number of apps reliably and efficiently:
- Tech Stack: React, redux, javascript, terraform, python, GeoSpatial data
- Transformed a single monolithic react app into a well architected repo of libraries and apps allowing the team to scale the number of apps reliably and efficiently
- Integrated an automated QA workflow into our Dev workflow so that Engineers could break things while business still had the security of a stable product
- Setup terraform AWS infrastructure and a CircleCI workflow to deploy new developer branches to app endpoints using S3, CloudFront, and a Lambda@Edge function
- Worked with Devops to incorporate smoke testing in our deployments workflow so engineers had the security to move fast
- Worked with selenium for e2e and smoke testing of apps
- Attended AxisAgile 2 day scrum master course to learn how to manage an agile scrum team to assist with scaling up teams and managing growth
- Worked with a 3D camera in a geospatial context to create a video recording app, to record marketable 3D mesh videos right in the browser
- Migrated legacy Terraform infrastructure, coordinating with devops to enable a seamless, low-downtime migration
- Migrated legacy Javascript architecture, in a browser app, to decouple network calls to app events
- Dealt with persistent while network connectivity is fallible
Incorporated AI Layers into the Mapbrowser app, to provide AI insights into Nearmap's aerial imagery:
- Tech Stack: Open Layers, Redux, React, Typescript
- Coordinated a team of 4 developers in delivering an app component that render AI raster layers on the map, and allowed customers to export AI pr
Senior Software Engineer
Nearmap (Oct 2018 - Jul 2019)
Worked with a team to implement various functionalities in the Nearmap Mapbrowser App, a geospatial web app that allows users to view high-resolution aerial imagery:
- Tech stack: React, Redux, Javascript, CesiumJS, OpenLayers
- Introduced storybooks and snapshot testing to the team into the frontend-app for faster UI iteration
- Was vital in delivering 3d Geospatial content into our front-end app, for the first time, using the cesiumjs library.
- Worked with an API team, utilising a Projects API, to persist Mapbrowser workspace state and provide save/load functionality.
- Solved devops problems using terraform.
Senior Software Engineer
Helix Collective (May 2016 - Oct 2018)
Worked as a contractor for multiple startups and built various frontend, and mobile apps to help them get their feet of the ground. Also contracted on various projects for Canva, and the company that would eventually become Slyp, the digital receipt company.
- Tech stack: Python, Java, Javascript, Android, React Native, React
- Built a frontend server and client using react, mobx, and expressjs in Typescript for a social media scheduler for Canva.
- Productionised the scheduler on AWS using terraform.
- Implemented a fluentd logging system to pass logs to elastic search, and visualise in kibana dashboards
- Experience in mobx and redux state management styles within multiple react-web and react-native apps.
- Created an iOS SDK Framework using React-Native which could be used in frontend apps as well
- Utilised in Slyp's digital receipt app
- Worked with and update a code generator in Haskell which parsed and compiled a custom DSL to output generated code for backend capabilities:
- Specifically worked with typescript out that provided JSON validation
- Used react-native to rapidly build the Cahoots mobile app, which was a social media app that allowed users to share their favourite places with friends:
- Built native views in both Android and iOS
- e.g. wrapping the Google map view on both platforms and implementing custom views when required
- Used fastlane for command-line mobile deployments which can also be added to a continuous integration system
- Used phabricator for code reviews
- Worked with the Superpowered C++ mobile audio engine, for an app that plays custom song compositions with variable bpms
- Used xpath, scrapy, and a selenium headless browser (PhantomJS) to perform scraping of multiple sites
- Implemented computer vision algorithms in dartlang to perform automated detection of power pole heights using camera images
- Used redux and react in both mobile and web apps to provide a stable data model for fast development of model-view elements
- Used angular and angular material for a medicine tracking web frontend
Staff Engineer
Qualcomm (Feb 2014 - May 2016)
Built various web apps for internal services (patent portfolio management, inventor analytics, security risk assessment):
- Tech Stack: Javascript frontend, Python backend, PostgreSQL
- Used various javascript libraries including ReactJS, Backbone, d3, WebGL, Twitter Bootstrap
- Worked with various build systems for the frontend including webpack, Grunt, bower
- Implemented backend functionalitieis on a python flask server
- Used sqlalchemy ORM, in python, to communicate with a PostgresQL database
- Worked with Jenkin for Continuous integration and Chef for deployemnts
Built a native android app that performed image recognition on a mobile device, using a vocabulary based image recognition algorithm. A heiarchical, clustering algorithm was used on the set of SIFT features extracted from images to create a vocabulary of visual words. Because only the means of the clusters were stored, the vocabulary was very small, and suitable for mobile devices.
- Tech Stack: C++, Android, JNI, Matlab
- Took research code written in matlab and rewrote in C++, for better performance, and mobile portability.
- Implemented a JNI wrapper over the C++ code for running cross platform, on mobile devices.
Software Engineer
Commonwealth Bank (Jul 2013 - Jan 2014)
Part of the primary development team for the Commbank mobile personal banking portal on the Android platform:
- Tech Stack: Android
- Available in the play store at: https://play.google.com/store/apps/details?id=com.commbank.netbank&hl=en
- App had a user base in the order of millions of customers
- Worked on various banking functionalities including:
- Viewing personal account details
- Security features
- Nearest ATM locator (using Google maps)
- Activating cards and changing pin number
- Interaction analytics
- Paytag activation for tap and pay mechanism
- Performing payments via various mechanisms.
- Worked with a group that was in the process of moving from a strict waterfall methodology to a dynamic agile-based one
Senior Software Engineer
Netpage (Jun 2012 - Jun 2013)
Worked on the Netpage mobile app, a revolutionary platform for embedding augmentation into print magazines to make them digital. It did so, by tracking print magazines without the need for barcodes or watermarks, in order to embed interactive components into the magazine articles:
- Tech stack: Android, Java, OpenGL, Objective-C, Guice, Perforce
- Ported the Netpage application built on the iOS, to the Android platform, and released on the Google Play store
- Moved app from GL1.0 (fixed function pipeline) to GL2.0 (shader pipeline)
- Gained extensive knowledge in building Android apps for commercial deployment
- Learnt how to reimplement high level components in Objective-C to Android
- Used Guice to provide dependency injection in Java and aid in reducing code complexity and simplify unit testing
- Used Zutubi’s pulse, a CI server, with ant as the build tool, for continuous integration and regression testing on overnight builds
Senior C++ Software Engineer
Silverbrook Research (Jun 2011 - May 2012)
Primary Tech: C++, Web Frontend (javascript, HTML, css)
Implemented features for a large-scale, distributed backend system for a commercial product in the field of digital ink, that allowed users to directly transfer the written word to a computer using dedicated pen hardware.:
- Tech stack: C++, REST API, Javascript, jQuery
- Employed RAII principles to strengthen robustness in software design
- Migrated major network communication from CORBA-RPC style to a REST API service
- Built numerous client-side web applications, delivered dynamically by the server upon request, usin the Google Template System
- Implemented regression tests that ran on an overnight build to quickly find bugs
- Designed stateless server architectures for better scalability
- Implemented remote firmware upgrades on custom hardware, using a software interface
- Software had to deal with hardware and network failures
- Had to take into account UX considerations for the upgrade software
- Developed numerous Android mobile applications that communicated with the back-end technology to deliver digital ink data
Software Developer
Freelancing (Jan 2012 - Mar 2012)
Ported the highly popular game, Dungeon Raid, from iOS to Android
- Tech stack: Android, Java, Objective-C, C++, OpenGL ES, swig, JNI
- Game was remarkably successful on the Google Play store with over 30,000 downloads and a 5 star rating (over 2,500 raters).
- Learnt to build cross-platform apps in native code (app works on Android and iOS, and as a desktop game on Unix and Windows).
- Dealt with considerable platform fragmentation issues across different Android devices.
- Used a cloud mobile platform along with multiple physical devices to resolve such issues.
- Generated Android wrapper classes for native code using JNI, to provide mobile cross platform portability.
Software Developer
iCinema Center for Interactive Cinema Research (Jul 2006 - Jun 2011)
Developed a distributed system that tracks multiple people within an immersive environment in real-time using multiple cameras
- Tech Stack: C++, Virtools, OpenGL
- System was robust enough to be showcased hundreds of times to members of the public.
- Gained experience in building and testing in the presence of noisy data.
- Gained experience in maintaining network communications over multiple machines using a master-slave configuration.
- Learnt about performance versus accuracy trade-offs in designing real-time systems.
Software Engineering Intern
Canon Information Systems & Research, Australia (Nov 2005 - Mar 2006)
Worked on the calibration of colour printers through test patterns and images.
- Tech stack: Python, C++
- Learnt to analyse results of software using qualitative metrics and tests.
- Utilise various software testing mechanisms: random noise, testing boundary conditions and testing various environmental factors.