- Ember ecosystem of 3 apps. Was one amone the 3 developers on the team
- [ember-cli-deploy] Config driven automatic deployment of the apps to various AWS cloudfront distributions.
- [Ember-cli-Build] Implemented a bespoke CMS in Ember to customize the application for multiple tenants based on their needs
- Introduced cypress based testing and setup the testing infrastructure
- Upgraded from Ember 3.28 to 5.4 in a span of 5 months over existing developement tasks
- Refactored large parts of the codebase both manually and using tools like codemods
A seasoned dev with 9 years on Ember/React/Angular. Spawned some droplets, linodes with cloud init scripts; deployed using ansible; solves problems in at AdventOfCode. Backend programming on R, Java, Python. Explore my Pet Projects and Indie Games that I developed using various Javascript frameworks. Have been working remotely for the past 10 years over a cumulative experience of 20+ years. And I make Periscopes
Skills
- Modern JS frameworks: React Redux, Angular, Ember
- CSS, D3, Chart.js
- Java, R - DataFrame, Data.Table, Python
- Cypress, Cucumber
- Entry level Devops: Docker/DigitalOcean/AWS
- CDN: Cloudfront & Cloudflare
- Ansible, LetsEncrypt
Portfolio
A simple language tutor. Developed on EmberJS as a hobby project
Whatsnow - CareerA sales reporting app implemented in React
XBE - CareerPart of the team behind XBE mobile app for 2 years
Advent Of Code - HobbyYearly Christmas time Programming context as an advent calendar
Pipe App - CareerJob Management Software
Codewars - HobbyPractice programming
Web presence
My web presence includes two sites
- oldweaver.co.in
Contains my blogs, notes, and this resume that you are reading. This is statically rendered.
- The blog portion is adapted from Eleventy Notes . This is an awesome package of eleventy and fits my requirement of a detailed online presence with search, themes and lot of other goodies! I've customized it to add the blog listing page
- Resume is adapted from Maxboeck's Resume. I've added sidebar links to sections on scroll; a screen-only portfolio page
The resume is built as a eleventy bundle and is embedded within the assets of the blog section using
Path Prefixes
- labs.oldweaver.co.in
Contains my hobby projects, working demos etc. This is a Next.js based React app.
Both the sites are deployed on a Digital Ocean droplet, served via nginx. Labs is proxied to the next.js server. The nginx server acts as an Origin server to Cloudflare. Cloudflare caches the responses and also provides SSL for the sites. Deployment is automated through Ansible
Work Experience
- Lead a team of 5 angular devs
- [Cypress]Introduced the concept of TDD to the team using cypress thereby improving delivery quality and easier federation. Used formly, guards, resolvers, app initializers, services scoped per component, Angular Reactive Forms.
- [Same site cookies] Implemented a portal application in Java Spring, which does a cumulative OAuth authentication - users need to be authenticated to both an Active Directory and also a custom business specific LOS OAuth provider. (Encompass). The authentication was done by hosting a cookie on a shared parent domain.
- Sole Ember Dev
- Responsible for taking the app from MVP to Production grade
- [Twilio] Slack like chat with offline notifications
- [Progressive Web App] integrations with service worker to cache the downloaded assets.
- Custom typeForm like form component, capable of authoring dynamic forms from a given schema. Invalidation of dependent answers, instance creation and flow control are all built in. Reactivity is supported via the Ember ecosystem. Fully tested.
- 100% Integration and Acceptance test coverage
- Custom built form component, index-listing component (pagination/sorting/filtering)
To our delight, Saravana really excelled with the work as a JS Developer, being highly productive and forward thinking; he implemented a variety of improvements, including a comprehensive test suite, as he went along. Without great effort on our part he could translate relatively complex tasks to working features. He is highly responsive when it comes to communication, and very friendly and humble in personality.
April 21, 2020, Michiel, Co-Owner, PipeApps
- [EmberJS] Existing mobile app XBEPart of the team at XBE LLC, working remotely.
- UI Lead (Ember SPA) on a team of 3 devs.
- Responsible for technical leadership on frontend and graphing needs of the team.
- [D3] Developed a set of visualizations in D3 and Ember that are not custom charts (a GANTT chart for schedule visualizations for trucks, time ranger chart with zooming)
- [Octane migration]Migrated the app to Ember Octane
[R, Time Series Forecasting] Arrive at the optimal holding quantity for any given item, taking into consideration the local store dynamics, festive and seasonal trends, time of the month and stock health of the product.
[R, Clustering] Used association rules and clustering techniques to develop Basket Analysis and customer persona identification.
Built a conversational backend with basic NLP using Python Rivescript and NLP Regex parser. Intents and entities will be resolved by the NLP parser.[React] Built a conversational UI with React, React Router, Redux and Material UI with intuitive UI controls, custom table components with client side filtering and download as CSV options.
[Spring/Java] Built the server for the frontend which serves the crunched data that will be refreshed daily.
[Droplets, Provisioning, Ansible] Automated provisioning and destroying of droplets in Digital ocean to take care of worker jobs for our platform. The droplets would be triggered automatically, process the jobs for the day and then die out themselves. Droplets were provisioned using Ansible scripts. The droplets are intelligent enough to live along when there is an error in the processing to help debug and aid manual intervention.
[Directed Acyclic Graph] Wrote an automatic DAG resolver in Python similar to the resolver used in AirFlow. Given a list of jobs like Job(Input:A,B, Output:C), the utility would printout the 1) sequence in which the jobs will have to be run, and 2) the groups of the jobs that are independent of each other – so that they can be run in parallel across the cores.
[CI/CD] The entire setup was integrated with CI/CD using GoCD.
In all works described above, TDD was used.
- [Whatsnow] Wrote a React based Hybrid App for Android and iOS. The app used a custom DSL to drive the conversational UI, which was designed to be a simple question and answer system, answering questions like ‘What is my sales <today|this month|etc>’ and ‘What are the profits for SKU’ and a couple hundred questions like this.
- [PhantomJS /Cucumber] Automated UI tests were done using PhantomJS and Cucumber Rspec.
- [Rails] Wrote a Rails API app for maintaining task domain models. The UI for the same was done in React as a single page app.
Worked remote
- [TDD] Got introduced to TDD.
- [C#] Worked on a C# app with Test Driven Development . This was a desktop app, and used MVVM and MVP design patterns for the UI architecture.
- [Jquery] Worked on a performance problem on tables rendering on a HTML report for OpenMRS - opensource health records management system
- [EmberJs, D3, Dagre-D3] Developed a web based studio for designing charts using EmberJS.
- [Provisioning] Was responsible for provisioning and maintaining an internal Gitlab server for the project
- [C++]Engineered a Javascript execution engine(Rhino) using COM ATL within a custom rules language (which was compiled and executed by the domain code). The Execution engine had clear entry and exit points to offer extension capabilities for the rules languages. The Rules language was used for automating underwriting decisions in the insurance industry.
- [Schematron] Developed a custom test automation framework to generate test scripts in Javascript and Java (4 different flavors) based on a test specified in XML DSL. The generated scripts would be used to test the functionality of different clients which are supposed to show the same functionality. The test framework used XSLT for transformation and Schematron for validating the actual behavior. This reduced effort in test maintenance.
Education
Bachelor's Degree in Computer Science
–
Amrita Institute of Technology Coimbatore, India
Bachelor’s Degree in Computer Science And Engineering (1999-2003).
Open Source
Fixing a bug in Task Warrior | Source
a Merged pull request ; 2014
React Talks | Demo | Source
https://saravanak.github.io/react-talk1
A self made presentation about react circa 2016
My (unmerged) PR for Ember source - 2019 | Source
An Ember addon I authoured - Degrading ember apps gracefully when offline | Demo | Source
https://saravanak.github.io/ember-cli-dexie-offline/
This app was used in Ember Conf Chennai 2020
Ember Helper: Moves all component templates to their respective component locations (colocation) | Source
After working on an Ember codebase with pod structure, I found it intuitive to use co-located components. Since Ember 3.13, we have support for component co-location
Hobbies
- Electronics
- Maths and Puzzles
- Gardening