Profile
- Highly self-motivated, self-disciplined individual, with a knack for consistency.
- Eager to learn; thrives in doing things the right way.
- Loves automating monotonous tasks/chores and contributing to Open Source.
- 14+ years of experience in using computers and programming and 6+ years of experience in engineering software solutions, as a hobbyist as well as a professional utilizing multiple programming languages and frameworks.
- Good grasping power of new programming languages and concepts. Can easily explore/use APIs and SDKs.
- Proficient in operating *nix operating systems; proficient in developing and deploying solutions with security in mind.
- Proficient in using Git, Kubernetes, Docker, VirtualBox, Agile methodologies, UML diagrams and documentation.
- Good time-management skills.
- Excellent verbal and written communication skills.
- Takes regular interest in fitness, reading and writing.
Experience
Software Engineer | August/2020 - Present | Applied Artificial Intelligence Institute, Melbourne, AU
Key Responsibilities
- Evaluate and manage resources of various products at Google Cloud Platform like Kubernetes clusters, Secret Manager, Cloud Storage, Cloud Armor, IAM, Logging, Tracing, Load Balancing, Billing, Anthos, Cloud Functions, Container Registry, Pub/sub, etc.
- Evaluate system monitoring solutions; provision monitoring as well as alerting policies for multiple projects’ infrastructure.
- Periodically evaluate and enhance systems’ security and performance.
- Evaluate existing/emerging technologies and liaise with various stakeholders of internal and external teams to meet projects’ and organizational goals.
- Evaluate plans, pricing, pros and cons of various third party services required by projects.
- Help educate team members in existing/emerging technologies.
- Contribute and review code in multiple programming languages towards business requirements, infrastructure as code, functional as well as emulated performance-tests.
- Contribute documentation towards projects and organization.
- Contribute insights towards research projects and review respective papers; participate in various organizational focus-areas.
- Setup and manage continuous integration pipelines.
Project: Conductor
Tasks carried out:
- Help prepare documents for research ethics compliance and carry out tasks to ensure compliance adherence with the same regularly.
- Manage Cloud infrastructure across Google Cloud Platform and various third-party providers.
- Manage Metabase used for analyzing data collected through multiple research studies along with system internals.
- Manage Keycloak for supporting oAuth2.0 + OpenID Connect protocol for authentication and authorization of Android and iOS clients with the microservices.
- Help gain valuable insights on research data and system performance through complex SQL queries and dashboards on Metabase.
- Administer multiple Postgres instances including but not limited to monitoring and tweaking performance, access-control, etc. and provision advanced features like forward data-wrapping.
- Evaluate various time-series data solutions for collecting participants’ data of a study; evaluate and optimize existing usages of Timescale.
- Contribute and review code towards a live, complex distributed system involving Artificial Intelligence and multiple asynchronous operations backed by RabbitMQ.
- Conduct various performance-tests in emulated environments to identify and rectify performance bottlenecks.
- Investigate various Infrastructure-as-Code tools like Terraform and Pulumi to automate deployment of various parts of the system.
- Establish pipelines for backing up huge production datasets for disaster recovery and restoring the same in an isolated environment for carrying out various tests.
Project: Suggestion Engine
Tasks carried out:
- Provisioned and maintained Dgraph and Elasticsearch on a private remote machine for team collaboration on big datasets required during development.
- Contributed and reviewed code in ASP.net.
- Analyzed large data using scripts written in JavaScript and Python to inform system design.
Lead Software Engineer | Mar/2019 – June/2020 | Deakin University, Melbourne, AU
Key Responsibilities
- Led the engineering and development while also acting as the product owner across multiple projects using React, Hapi framework, MySQL, MongoDB, Redis, Socket.io and Postgres databases.
- Peer-reviewed code.
- Acted as first point-of-contact for multiple clients across multiple projects.
- Dealt with various stakeholders of the projects while following Agile software development methodology.
- Helped develop standards and protocols for writing secure, maintainable code and deploying projects using Docker Swarm, docker-compose and bash scripts.
Project: Educator Health Reporting System
Tasks carried out:
- Developed a backend server-application single-handedly using Hapi framework that extracts sensitive information of participants of a longitudinal study, securely from multiple REDCap (project-redcap.org) projects using its web API, and updates a local MySQL database using Sequelize ORM. Subsets of participants’ data were synced across both systems to meet various product and research requirements. Other notable node modules were utilized to fast-track the agile-development for different deployment environments, like Gulp for building complex workflows, Jasmine for time-sensitive as well as insensitive Behavior Driven Development, semantic-release for effortless releases, etc.
- Developed a 4NF database-design to mitigate issues in existing systems for capturing participants’ data.
- Wrote scripts to process and migrate ~19K records of existing data to the new schema as well as transporting them onto REDCap in parallel batches using Bottleneck.
- Implemented support for secure, multi-device sign-in using JWT authentication strategy.
- Developed frontend application using React and Material UI, with my primary responsibilities being functionality, navigation, layout and routing using react-router.
- Iterated multiple wireframes/designs with all stakeholders using Balsamiq and Adobe XD to display the data of more than 40 variables each year on a mobile-view with UX in mind.
- Deployed the solution on development and production servers using Nginx, Docker Swarm for scaling, docker-compose and bash scripts.
- Modified legacy PHP reporting application to enhance security.
Project: Overseer
Tasks carried out:
- Developed a vertically scalable, containerized ruby application that fires up host-machine Docker containers to execute and assess untrusted students’ submissions on OnTrack system. OnTrack, previously known as Doubtfire, is supported by Ruby on Rails on the backend, and utilizes a Angular 8 + Angular JS frontend application.
- Added/modified various API endpoints as well as models for OnTrack to enable unit-chairs to configure assessments of a task as well as display results of an assessment to students and their respective faculty.
- Researched and implemented advanced security solutions provided by Docker.
- Researched and configured a RabbitMQ Docker server container to maintain job queues and support communication between the Overseer listeners as well as OnTrack.
- Developed a configurable ruby gem to implement shared code between Overseer and OnTrack for a publisher/subscriber wrapper for Bunny.
- Deployed the application stack.
Casual academic | Mar/2019 – June/2020 | Deakin University, Melbourne, AU
Key Responsibilities
- Planned and conducted tutoring sessions every week.
- Marked and provided feedback to students’ submissions.
Object-oriented programming (Course code: SIT232, language used — C#) [2020, 2019]
Data structures and Algorithms (Course code: SIT221, language used — C#) [2019]
Software Architecture and Scalability for Internet-Of-Things (Course code: SIT314, languages used — JavaScript and Java) [2019]
Noteworthy experience — Taught software architecture and scalability for IoT devices using AWS, IBM Cloud and other cloud-based solutions.
Software Engineer Intern | Nov/2018 – Feb/2019 | Deakin University, Melbourne, AU
Project: Deakin Launchpad Research Studies
Tasks carried out:
- Lead the development of frontend application using React and backend application using Hapi framework and MongoDB database.
- Carried out multiple spikes to figure out the available solutions for complex problems.
- Prepared documents for requirements, designs and logical flows using UML.
Freelance Software Developer | July/2016 – Jan/2018, India
Tasks carried out:
- Developed mobile apps using QT and Android, backed by Node.js and Ruby on Rails server application utilizing MySQL, Postgres and Firebase.
- Implemented 3rd party SDKs for displaying video advertisements in client-applications.
- Developed multiple websites using Wordpress and hosted them using Nginx.
Education
Masters of IT (Professional) | 2019 | Deakin University, Melbourne, AU
Specialization in Cyber Security
- 3 months paid internship at Deakin Launchpad.
- Minor thesis: Automatic assessment and Feedback System to improve Students’ Programming Skills Development for OnTrack — The aim of this project was to understand the many challenges, advantages and disadvantages of implementing an online automatic assessment and feedback system for students studying the programming discipline and find practical solutions to face the inevitable challenges. Existing literature in this domain was thoroughly reviewed and the research was carried out using action research methodology. The outcomes of this undertaking lead to Project Overseer.
B. Tech in Computer Science | 2016 | LPU, India
Majors in Software Engineering
- Capstone Project: Hatchen App — Lead a team of 3 for development of an Android app focused on enhancing communication for teams, using Node.js, Socket.io, and a MySQL database at the backend.
Recent Achievements
- Awarded first prize by GovHack, AU, 2018.
Side Projects
EnvisionCraft | 2016 - 2017
Tasks carried out:
- Developed configurable plugins for different distributions of Java server of the popular game Minecraft. Many of these plugins utilized MySQL for persisting players’ data via JDBC and communicated between multiple server instances backed by Redis, including a Proxy server.
- Deployed and maintained server software on multiple remote VMs. Used SSH-tunneling for secure networking amongst the VMs.
- Deployed, managed and contributed to the open-source Rails forums engine Thredded.
- Hardened security by configuring firewall, SSH daemon and other services like Redis.
- Configured DNS records and Nginx reverse proxy server.
Open-source Projects/Contributions
- smartCapitaliseJs: akashagarwal7.github.io/smartCapitaliseJs
- doubtfire-api: github.com/doubtfire-lms/doubtfire-api/commits?author=akashagarwal7
Technical Skills and Abilities
Programming Languages: JavaScript, Ruby, Java, Python, C#, Bash, TypeScript, C++.
Markup/styling Languages: Markdown, HTML5, CSS3, SCSS.
Frameworks: Hapi, React, Ruby on Rails, Bootstrap, Unity.
Databases: MySQL, Redis, MongoDB, Postgres.
OS: macOS, Ubuntu, CentOS, Windows.
CI/CD: Travis, CircleCI.
Misc: Git, Portainer, RabbitMQ, AWS, VirtualBox, Vim, Tmux, Pandoc, J2SE, Maven, Zsh, configuring DNS records, wire-framing using Balsamiq and Adobe XD, basic photo editing using GIMP/Adobe Photoshop, Microsoft Office tools — Word, PowerPoint and Excel; Apple iWork tools — Pages, Keynotes and Numbers; GSuite tools — Docs, Slides, Sheets and Forms.