---
# System prepended metadata

title: FY22 Self-Review
tags: [' planning', goal]

---

---
tags: goal, planning
---
# FY22 Self-Review

## Provide input on key achievements, delivered results and overall outcomes.
### Secure storage for enterprise application
- The secure storage for enterprise application that is crucial for a Million $ deal with AMEX
- Assumed ownership of the secure storage.
- Coordinated with Kamal from web foundation to understand the current storage system and shared the insights with starship team
- These insights are also helpful in our future wider initiative of storage APIs

### Opensource contributions
This is a goal I have set earlier to kick off open-source contributions.
1. [v8 - Add ldflags for aix](https://chromium-review.googlesource.com/c/v8/v8/+/3439339)
2. [electron - bump @types/node to v16](https://github.com/electron/electron/pull/32729)
3. [electron - Do not propagate GDK_BACKEND env variable to subproc](https://github.com/electron/electron/pull/32929)
4. [electron/build-tools - Fix root directory default in example (docs)](https://github.com/electron/build-tools/pull/322)
5. [electron-build-images - Add desktop-file-utils to electron linux build-image/docker image](https://github.com/electron/build-images/pull/22)
6. [electron - Separate the dependency list for ubuntu on the docs](https://github.com/electron/electron/pull/32607)
7. [nodejs - Removes the duplicate call of setPauseOnException() inside initAfterStart()](https://github.com/nodejs/node/pull/41838)
8. [nodejs - 	
Make building with ninja more discoverable on the docs](https://github.com/nodejs/node/pull/41840)

### Removal of shared shell from postman app
- To make the postman app less resource/process hungry, we started an initiative to remove shared shell and requester shell process. 
- This also made us closer to **enabling web in desktop** initiative that delivers app updates faster.
- There were multiple initiatives. It started with removing shared shell, reached to removing entire shell process by moving the user accounts storage to main process.
- Ankur partnered to identify the things that needs to happen in a singleton fashion. Which happened easily when we have shared process, that lives throughout lifecycle of app.
- Worked with Ankur to design basic building blocks required from Foundation to enable the squads to build the sessions and isolation around users.
- The work done to remove renderer shell when coupled with secure storage API would make app launch even faster.
- This made **app launch [faster](https://postmanlabs.atlassian.net/wiki/spaces/CF/pages/3640656474/Performance+2022)** from icon click to window open by around 4-5 seconds
- This also **removed splash screen**
- This **removed 2 background processes** and associated **memory usage by ~120 MB**
### Starship contributions
#### Automate the process of auditing the cipher suites
- The cipher suites we provide has become crucial **integral part** of postman **user's work flows**
- Every upgrade of electron needs us to audit the cipher suites available, as electron upgrades come along with boringSSL upgrades
- We had to understand **boringSSL** workings in order to come up with a manual audit process and then find a way to automate.
- This helps us [maintain](https://bitbucket.org/postmanlabs/starship/pull-requests/582) a **clear contract** now with a list of cipher suites we support
#### Initial research on storage API
- Lead the pre-requisite work of surfacing the [existing landscape](https://postmanlabs.atlassian.net/wiki/spaces/DKTPFN/pages/3362127975/STARSHIP-29+Storage+API+-+Establishing+the+existing+landscape) around storage usage. 
- Identified and classified the usage patterns in postman app.
- Worked with Juan to come up with basic API design for secure storage key store API.
#### Starship bug hunt
- In order to reduce the growing number of desktop-related bugs reported through our various medium, we did a team wide initiative.
- Actively participated with **44 points** on the score board, **closing 9 issues** and having **12 issues in progress**.
#### Electron upgrade
- In order to keep the postman app updated with the security vulnerabilities discovered and to offer latest features from electron, we upgraded electron(the base desktop app development framework postman consumes) from v13 to v15 on starship.
- Helped in analysing the 220 GitHub open issues of electron v14, v15, v16 to categorize and triage the impact.
- Contributed to electron by upstreaming a [test](https://github.com/electron/electron/pull/32929) that verifies a tricky scenario on Linux environment - *do not propagate GDK_BACKEND env variable to subproc*
    - **This is a take over from electron's core maintainer**
    - This needed communication with electron's core maintainers
    - The major challenge involved is the creation and association of a custom file type and application.
- Helped in handling breaking changes in postman app
- Helped in testing the postman app with electron upgrade
#### Publishing starship packages on npm via circleci pipeline
* Out of curiosity about continuous integration and delivery, grabbed the opportunity to configure circleci to publish starship as an npm package. 

#### Patching npm on starship core
- There was a tricky npm dep minipass, which was missing when we prepare a tall ball. And relevant changes required on npm.

### Support for Web gateway based proxy(z-scaler)
- We had customers behind enterprise proxies for whom the postman app is [unusable](https://postmanlabs.atlassian.net/browse/CUE-761) due to the strange workings of proxies.
- The impact radius can be inferred from the **71 zendesk tickets**. 
- The major challenge supporting the proxy is to get a hands on the proxy to get first hand understanding and diagnosing the issue.
- We(partnered with Harshil) had to **write a custom web gateway based proxy** ourselves to simulate the issue locally as we couldn't get access to z-scaler infra.
- This server helped us gain confidence before deploying it to canary without having to invest in a ton of Gateway infrastructure and time.
- And we had great cooperation and patience exhibited by the customer while working with us to resolve this.
- Worked with support and customer to understand the issue at hand and verify the web gateway implementation.
- This work **enables us to serve enterprise customers** in near future.

### Product version Service <> ARS
- This enforces a product major version on a team. This gives us more flexibility to release postman in a controlled fashion
- This is a product critical initiative, as the business would be impacted if we serve unwanted major version to users.
- Assumed complete ownership of the ARS server side initiative to incorporate PVS changes. 
- Identified the impact and designed the change (honouring PVS).
- Implemented, tested, deployed and monitored the changes required.

### The contribution to API-First initiative
As part of API-First initiative, got a chance to document around **half** of the important APIs like
* Partition service API
* Node.Js Process API
* User context partition service API
* Scratchpad partition service API
* InstallationId API
* Logger API
* App settings API
* Keyboard shortcuts API
* Crash reporter API

Also, it was a good opportunity to surface and categorise a lot of **[technical debt](https://postmanlabs.atlassian.net/wiki/spaces/DKTPFN/pages/3375628672/API+First+-+Technical+debts)**. Notable suggestions include
- Promoting **serialisation as first class foundational API** and increase adoption. It would improve performance of the application if we can provide an optimised serialisation API
- **Enabling electron crash reporter on postman**. This collects and sends C and C++ stack traces. These traces help us understand the crashes and root causes better. It would reduce the time to contact customer with instructions, reproduce crash, collect the logs.
- **The knowledge of shared shell adds an overhead to developers**. It becomes another important thing for developers to worry about. This also needs an extra process.

### Starship <> Postman Integration
- Introduced starship packaging command to postman and integrated starship with the postman app.
- This enabled postman to leverage the starship work, optimisations and living contract.
- This initiative abstracted core foundational packaging and runtime interfaces for postman app.
- This initiative surfaced an **interface between starship and postman apps**.


### Incidents
#### INC-22 Desktop App goes into a reload loop after login or add account
- The reload loop made the desktop app unusable to the users
- The incident's impact can be inferred from 13 user tickets overs 2 days and 1 community thread with 3 users
#### INC-68 Postman shows “Certificate has expired” error for let’s encrypt issued certs
- This impacted a wider audience of desktop apps developed using electron. The impact is evident from the comments and reactions on the electron [issue](https://github.com/postmanlabs/postman-app-support/issues/10338#issuecomment-932256449) 
- After finding the root cause, we have contributed the fix to electron upstream open-source.
- We have also come up with a tricky test to keep an eye on this in future. The test required a lot of understanding in terms of certificates, openSSL,Certificate Authority, cross- signing, etc.,

### Hack-fests
#### Embedded postman
- The [embedded postman](https://postmanlabs.atlassian.net/wiki/spaces/CF/pages/3329818908/HACK-11+Embedded+postman) project tries to reduce the time to wow users. It tries to reduce the number of hops to get started with the Postman. In its current state, users will be able to embed any Postman tabs in their own application.
- We won second prize in this hack-fest with **$75 USD** amazon vouchers. I bought a kindle with this voucher.

#### Tracks in stage
- Deploying production versions to tracks would enable enterprises/users to have their own variant of postman.
- Would enable us to revisit an older version of postman web app
- We won the third popular vote for this hack.
### Miscellaneous
#### Use node package to modularise the APIs
Identified the need to modularise the source code on starship and proposed a way to do so and documented an approach. https://postmanlabs.atlassian.net/l/c/B1Sv3dwX
When proposing the same, got to know that a company wide initiative to do so for postman is already started.
To reflect the API first approach in the starship project,  a node package for each API would make APIs first-class citizens.
#### Possible improvements to app distribution
While working with ARS, [collected](https://postmanlabs.atlassian.net/wiki/spaces/DKTPFN/pages/3446538275/App+distribution+-+the+sub+problem+spaces+involved) technical debt.
notable suggestions or technical debts identified on the app distribution are:
* Migration of admin UI tech stack to that postman prefers. So that we can leverage existing expertise to improve it. The UI is untouched from ages.
* Getting familiarity over the squirrel source code and tech stack, in order to make improvements

#### Decoupling IAM and CF
During an incident I'm involved related to login loop, the existence of shell is questioned. And an initiative to remove the shell kicked off.
Proposed a design to remove shell and prepared a POC. This made the tight coupling between CF <> IAM.
The documentation out of this initiative is used to surface the coupling as a part of API first initiative.

### Cross team coordinations
 1. [Enable dev tools for Authentication web view](https://postmanlabs.atlassian.net/wiki/spaces/DKTPFN/pages/3657171631/DKTPFN-217+Enable+dev+tools+for+authentication+web+view)
 2. [Obsolete Lambda runtimes - Postman Inc](https://postmanlabs.atlassian.net/wiki/spaces/DKTPFN/pages/3657662871/DKTPFN-102+Obsolete+Lambda+runtimes+-+Postman+Inc)
 3. Shared Logger API context with Integrations squad

### Interviews
- Interviewed around 10 candidates and provided feedback

## Identify opportunities for improvement
### Improve my C++ knowledge
- Improving my C++ knowledge around the development and tooling would help me in contributing to a low level native features.
- Also helps me in increasing my open-source quality contributions

### Articulate my thoughts well
- Improving articulation of my thoughts would help me in voicing my opinions
- I need to come up with a way to push my thoughts with required research
- This would help me in sharing my ideas well to the peers and gather support.



## Provide at least two development goals that will help provide depth in your current job and/or help you prepare for a future role.
### Own and deliver low level cross platform high complexity problems
- The high complexity problems will push myself to the next level
- The ownership of such low level complex problems would let me learn a wider set of skills involving planning, communication, technical
### Entrepreneurial mindset
- Would love to inculcate entrepreneurial mindset in pursuing my ideas from inception to delivery
- Would like to train myself to come up with new ideas and vision
- This would enable me to identify the problems around me, pitch about it, pursue and solve them
