Capstone #5

This week, I couldn’t work on Auth0 like I updated in my previous blog. I had to unblock my team to create the necessary endpoints for UI integration. I ended up working on a POST endpoint for creating an animal. I created a model schema, necessary lambda functions and handlers. I was able to successfully deploy and create the ‘put-animal’ endpoint.

I also created a GET endpoint for animal details. We had assumed that all animals in each shelter are uniquely named. This made it easier to fetch the animal’s details just by passing in the animal name and shelter name.

I had the combination of animal name and shelter name as primary key in the animals table, which made things much easier. I just had to pass both the names as path parameters and was able to fetch the details of the animal. I’m facing some difficulties in deploying the endpoint, on which I’m actively working to resolve. For next week, I’m planning to create all the required endpoint and work on the ability to upload and get images from S3 using a pre-signed URL.

It’s so awesome to see few things come together after the UI integration and that makes me happy. As my work was fully on backend, I could never see the things I built in action, other than testing with Postman. Looking forward to work on the endpoints more πŸ™‚

Capstone Part#4

Last week, I got the API gateway and DynamoDB setup. This week, I was able to create few endpoints, test it out and put into use in our project. I felt very happy seeing that my backend server less setup is working and in this blog, I’m gonna talk about few improvements that needs to be done.

The endpoints are currently not authorized, which means anyone with the api url can get data or post data in the DynamoDB table. I have it unauthorized for the ease of integrating with frontend. But, I have to authorize it soon to make the services individually secure.

On research, I came across Auth0, which can provide authentication to the APIs by sending access token in the Authorization header, using the Bearer authentication scheme. For example, if I want to get the information for a pet, I need to get an access token to pass it in the request Authentication header. Once the token gets verified, I would be able to get all the information for the particular pet.

This is the part that I’m going to be tackling over next week. I have researched on what should be done as best practices and I’m currently focusing on building all the necessary endpoints first, in order to unblock others. I’ll let you the difficulties of adding authorization to APIs in the next blog. Until then, byeeee!! πŸ˜€

Capstone Project #3

This last week, I have been learning things about API gateway and how to set up endpoints and use Lambda functions to handle the requests. I initially thought it would be easy to create resources, deploy and voila, we get a working endpoint. But it was more like, creating API gateway resources, writing lambda functions, create a schema for the requests, handle authorization, create loggers, set up permissions to read and write from DynamoDB, deploy and then finally test the endpoint. Ooofff!!!

Reading about the API gateway and creating these task lists took long time for me. I was able to set up the API endpoints in AWS, but still need to test it before finally putting it into use. Since working with API gateway is new for me, I was panicking at first and was questioning myself if I can things done before blocking anyone in the team. But after getting a basic understanding and workflow, things got a bit easier.

As developers, I think everyone has this fear or question themself while taking on a task they have never worked with before. But, after a few minutes of relaxation and looking at the task or problem with a fresh mind, everything looks solvable and get determination to arrive at the solution quickly.

Capstone Project – Part 2

Hi. So today, I will be sharing my experiences in creating DynamoDB tables with server less template. I don’t want to go deep inside the design and configurations of the tables, but I want to share few things that I learnt in the process.

We know that DynamoDB is a NoSQL database. That means, there is no schema or relationship among tables and elements in it. For configuring the database tables with DynamoDB, we just need a single primary key. This primary key is referred as Partition key or Hash key. We use this key to uniquely identify the items. There’s another key called Sort Key or Range key. Sort key is needed when the combination of both the sort key and partition key can uniquely identify an element.

Did you know that you don’t have to give any other attributes other than the keys needed? Just define the attribute names and types, which are keys and specify the type of key in the key schema. That’s it..your resource configuration for DynamoDB tables is complete.

We can also specify secondary indexes. This index lets you query the table using an alternate key, in addition to queries against the primary key and optional secondary keys. They can be either global or local. For global secondary indexes, the specified partition and sort key can be different than what was configured in the tables. For local secondary indexes, the partition key must match with the table, while the sort key can be different.

Hope you learnt few things about DynamoDB. Will meet you with other learning in the next blog. Bubyee!!

Capstone Project

Hi there! Welcome to my third blog post. In this post, I will share about my progress of the current capstone project. To begin with, my project is to design and develop an ‘Animal Dating App for Adoption’. The title sounds like a cool project, right? That’s why I chose it πŸ˜‰ Also, I love to work with React and build a web application. So, that’s another reason πŸ™‚

My contribution to this project would be in building a backend. That’s build databases and implementation of APIs. As a first step to the project, we have to decide what database should we choose. The first thing that came to my mind was to go with a MySQL database. But upon further research, we decided to go with DynamoDB to leverage all the advantages it had. To give something, DynamoDB is easy to setup and it’s free.

Ok, we decided to use DynamoDB. Now what, how am I gonna configure and construct the tables? I was looking at several videos and lectures from Coursera and other platforms. There were a lot of different ways to set it up. One way was to manually configure it and add lambda functions to get and put data, from the UI. That didn’t feel good to me. It would be difficult to maintain the DB, when every time we have to login to AWS and look into different tables and associated functions etc.

And the other way was to use CloudFormation. CloudFormation is a services for creation and management of AWS resources. It lets you write a YAML/JSON file, where we would state all the resources that we need, lambda functions, Databases, API, IAM roles, literally every resource that you would need to for the application stack. It also allows you to change the state of the resources and version control of the serverless infrastructure. This sounded like a good way to go. I liked how we build and maintain the entire infrastructure as a code.

Awesome. The next thing I was looking for is how to create this YAML file. Serverless framework to develop, deploy the application was the perfect choice. After installing serverless and configuring my AWS account using IAM access key and secret, I was able to create a boilerplate template easily. That’s it. The next thing would be edit the YAML template to configure the required resources and deploy it using a single command.

Sounds cool and really easy right? I have the boilerplate template set up and as my next task I would be configuring my database and deploy it. I’ll update my progress in my next blog post.

Bubyee!!

Blog Post #2

Hi there, it’s me Aish again. In this blog, I want to share about my experience in getting a full time job as a Software Developer. I’ll also share about my learnings and projects that helped me to land a job at Expedia Group.

First thing, I structured the order of courses in such a way that I get the skills early enough to try for internships. I took all basic courses like CS Fundamentals, Data structures, Algorithm and also took web development course to start with small projects and hosted them in Github. I learnt Express.js, Node.js and HTML in the web development course. But, in parallel, I also started researching about latest web technologies and enrolled myself in React.js offered by Udemy. At the end of the course, I had completed two portfolio projects:

  • Burger Builder Web Application – React.js and Firebase Auth API, storage
  • Static website for small restaurant – HTML, Node.js and Express.js

In order to prepare for internships and interviews, I took Introduction to Databases and Mobile & Cloud Software Development courses next. I gained my skills in SQL databases and worked on building two other portfolio project.

  • Generic Toursim Website – MySQL DB, HTML, Node.js and Express.js
  • Wastegram – Mobile App to track the wasted food from restaurants – Flutter

I wanted to update my skills in databases and wanted to expand my knowledge in AWS. This made me enroll in Cloud Developer course by Udacity. I learnt the basic services by AWS and put together everything I learned in the form of a project. I built a small version of photo album app, using React.js. I created a GraphQL API using AWS AppSync for accessing photos stored in S3 and let users upload and deleted photos. I also handled the user signup and authentication using AWS Cognito.

  • Multi-User Photo Album Application – React.js, AWS, GraphQL
  • Todo List – React.js, AWS Lambda, Serverless framework
  • Udagram – Instagram on AWS – React.js, REST API, Travis CI, Docker, AWS EKS

These portfolio projects made my resume strong and helped me gain some interviews. I got summer internship at Expedia Group (EG), but COVID-19 had some other plans. Lol. I couldn’t join EG, but I landed as a full-stack intern at a startup called Heirloom, where I worked in building client facing components of the product using React.js. Reading the blog so far, you would have realized that I used React.js in almost all my projects. Yes, that’s my favorite πŸ˜€

I luckily got an opportunity to interview at EG again, but this time, for a full-time role. I successfully cleared the interviews and joined EG two months back. My job requires me to build tools for EG developers using open source platform called, Backstage.

Persistent effort and updating myself with latest technologies helped me to land this job. I look forward to grow in my field with specialization in backend.

Thanks for reading. Hope this was useful, if you’re hunting for a job in the field of CS πŸ™‚

Aishwarya’s Blog

Hi, I’m Aishwarya. You can call me as Aish, in short πŸ™‚ I’m a graduate of Electronics and Instrumentation and worked as a consultant for SAP services. My interest in Computer Science started to develop when I met my husband. He is a software engineer at AWS and when I saw him building features and projects that millions of people use, I got so inspired. I started to take few Python lessons and ended up enrolling in Computer Science at Oregon State University.

I also completed Cloud Nano degree Program by Udacity, where I got to learn about different AWS services and built a little version of Amazon Photos. This project got me an internship at a startup called, Heirloom. I worked as a full stack engineering intern for a couple of months, building client facing components of the product. Then, I got a full-time job as an SDE at Expedia Group. My work involves in building tools to aid the developers at Expedia Group.

I’m aiming to develop my skills in AWS and gain technical expertise in backend development. My goal in the future is to contribute to a software that millions of people use in their daily life. With that said, I also want to be an inspiration for other students, share my knowledge and guide them, like how my husband was for me. This is kinda like a stretch goal, but yeah, will be happy if that happens πŸ˜€

I like to work with is React.js and Node.js. Most of my web development projects are built using them. One of my favorite is the Multi-User Photo Album Application, where I got an opportunity to put my knowledge in AWS to action. I created a GraphQL API to let users upload and delete photos. This project also used AWS AppSync for accessing photos stored in S3. Also, I used AWS Lambda to show the photos as thumbnails. Overall this project was a great learning for me, especially in the backend side.

It’s been three years since I joined this degree at OSU. I have completed all other courseworks and Online Capstone Project is my final course to complete before graduation. Web Development, Introduction to Databases and Mobile and Cloud Software Development were some of my favorite courses. I had so much fun working with the team and I hope for the same in this course too!

I’m hoping to utilize my skills in this in Capstone Project. So my pick of project would be something that involves mobile or web development with some strong backend work. I think ‘Dating App for animal adoption’, ‘Help Save Craigslist’, ‘Bike Collective’ would be perfect.

Finally, apart from professional life, I enjoy hiking. I have started to develop an interest in winter hikes. I also snowshoeing and looking forward to take ski lessons this winter. Β This is a picture of me snowshoeing at Steven’s Pass.

I also like to do acrylic painting, kickboxing and cooking. This is one of my recent painting that I followed from a Youtube tutorial.

Continue reading Aishwarya’s Blog