Alex Mitra

Software Engineer

  
My name is Alex Mitra. I'm a software engineer working at Google.
Below, I've written about some of the projects that I've worked on over the last few years.

Projects

Google Play Developer Console Logo

Play Console

App Transfer

Play Console

App Transfer

I worked on the Google Play Developer Console from January 2020 to January 2021. During this time, Play Console was being redesigned and redeveloped into what it is today. This meant that every page of the old console needed to be rewritten with the new languages and technologies. Toward the second half of my time on the team, I was given a project to work on by myself. This project was a page within the Play Console called App Transfer.

The App Transfer page lets developers transfer ownership of one or more of their apps to another account. I wrote the new page using AngularDart for the frontend with a microservice backend written in Java.

This was my first major project at Google and it taught me a lot about how products are developed at scale and how they are deployed in industry. Before the project, I knew very little Dart and Java and now I'm easily competent enough to work on another AngularDart project in the future.

Google Chrome Logo

Chrome Custom Tabs

Downloads UI

Chrome Custom Tabs

Downloads UI

Chrome Custom Tabs (CCTs) are a feature of Chrome which allow Android apps to embed a webpage. Most Android users will be familiar with it as the bare-bones in app browser with either an arrow or a cross in the top left corner.

While working on the Chrome Custom Tabs team, I implemented a new UI which is shown on Android phones when downloading a file. There was a long standing annoyance among users where downloads weren’t always obvious. Clicking a link to open a CCT for the purpose of downloading a file showed a blank screen and the download would happen in the background. To improve user awareness, I implemented a new UI to replace the blank screen which gives users control over the download and more clearly shows that it is taking place.

The work for this project involved knowledge of both Android development as well as the Chromium infrastructure and was almost entirely written in Java. The project vastly improved my Android development skills and introduced me to common code architectures like the MVC architecture.

Battleships Screenshot

Battleships

A Retro Battleships Game

Battleships

A Retro Battleships Game

As part of the coursework required for my apprenticeship and degree, I implemented a simple, retro style Battleships game in C++. This project was written in two and a half weeks and came with a number of requirements which the final game had to meet.

From the start, I tried to stick to established best practices like using header guards and separating declarations and definitions between the header files and source files. These are techniques I learned from this project as I had never coded in C++ prior to this.

During development I ran into many issues with the main ones relating to references and pointers. The Battleships game greatly improved my C++ coding ability which, prior to this project, was almost non-existent. Now, I'd be comfortable coding in C++ on a project.

The code for the Battleships project can be found here.

Music Player Screenshot

Music Player

Synoptic Project

Music Player

Synoptic Project

Like the Battleships project, the Music Player was also made as part of my degree. In an assessment called a synoptic project, we were each given a selection of options for a project ranging from web APIs to mobile apps. I chose to make a music player. The given timescale for this project was 5 days.

I wrote this music player in C# using the .NET framework and Windows Forms. I chose to use these as they make prototyping and development really quick and given that I only had 5 days, this was a massive benefit. The whole program was effectively a wrapper around the Windows Media Player API which actually played the music. The music player kept track of a play queue and playlists and allowed the user to pause, resume, skip, go back and seek to different parts of a song. There were also a few non functional requirements which we had to adhere to.

This project showed me what it would be like to work for a client with specific deadlines and requirements. As it was a controlled assessment, we had to meet all of the requirements and the deadline as well as providing extensive documentation on the development process and how to use the end product.

The code for this project can be found here.

Gum Icon

Gum

Chromium VCS Wrapper

Gum

Chromium VCS Wrapper

Gum is a wrapper around Git designed for use with the Chromium codebase. It's job is to simplify the development process and it uses Mercurial style commands to give the developer a straighforward, easy to use interface. Gum takes care of a lot of commit management behind the scenes making its primary use case, working on multiple dependent changes, easy

Gum was originally started as my dissertation project for my degree but I hope to develop it into its own fully managed project to help Chromium contributors both internal to Google and external.

The code for this project can be found here.

Notey

Notey

A Timestamped Note Taking Tool

Notey

A Timestamped Note Taking Tool

Notey is an online tool used to take notes which include a timestamp. The concept is simple but has a useful application during technical interviews. An interviewer can use notey to take notes during an interview and when they look back, they will have a complete timeline of what the candidate did throughout the entire time. At the time of writing, Notey is a simple, static webpage but I hope to improve the tool by storing notes in local storage and adding an optional alarm for the timer. You can try out Notey here.