As per the EECE department requirements, I have chosen to complete the mandatory summer internship at Electronic Transaction Systems Corporation in Ashburn, Virginia. My internship is a software engineering internship and is 3 months long. In the following progress report, I will be presenting what I have learned and done so far in the internship and what work is expected to be done till the end of the training.
ETS is an international company specialized in the creation of merchant processing solutions. It has a wide palette of products that make it unique. Their most important platform is their end-to-end encrypted credit and debit card-processing platform that controls the entire transaction process. They also have a loyalty program platform where merchants can offer rewards to loyal customers while also getting robust reports on customer demographics and mass marketing capabilities. With their transit program, clients can buy bus tickets and parking spots online as well. Other notable products they have include electronic funds transfer processing, providing merchants the possibility to create gift cards and send them to their clients, providing merchants a way to issue invoices online and providing customers the possibility to pay their bills online, providing an online marketplace where merchants can attract customers by offering coupons, deals and gift cards and providing merchants an easy platform to create websites where they can manage their inventory and have a fully functional shopping cart system.
I have been interning at the company for three weeks now and will present what I have worked on so far. I was first thoroughly introduced to the principles of RESTful APIs and learned about their importance through the Chief Technology Officer. Next, I applied my new knowledge into the creation of a to-do list API and a phonebook API using a Model View Controller architectural pattern, assigned by the CTO. To do this, I learned and used .NET Core with C# and entity framework (a tool which enables .NET programmers to work with relational data using objects such as classes. This removes the need for the usual database querying that developers use). I then developed unit tests for both these APIs and tested the validity of user inputs but most importantly the robustness and validity of HTTP requests and responses made through the controller’s methods. Testing HTTP requests and responses was done through a software called Postman that emulates CRUD (Create, Replace, Update and Delete) operations and through a web browser. Posting and getting information was done through JSON serialization and deserialization. The director of operations then taught us about the basics of how credit card processing works after a point of sale (POS) reads it and how different HTTP requests and methods are handled and demonstrated what makes ETS unique: end-to-end encryption, interchange plus fixed rates and a fully integrated solution in the POS. After this, the CEO asked all of the interns to review the ETS websites and the Emoney app and give back a constructive feedback. Reading our detailed critiques, he liked our honesty and assigned us to stress test the new Emoney app, from registration to sign in to actual use of the app and try to find bugs and give comments. We did so using the JIRA software, which is used for bug tracking and project management purposes. . After this we were exposed a bit to Angular4 and Ionic2 which were used to develop the new Emoney app and deploy it onto iOS and Android. The director of technology then filled us in on a new project they want the interns to implement, which is an event management API for merchants where they can create and organize events, including inviting customers and tracking their invitation status, and get full financial reports and history of the events they have organized in the past. This platform would also allow customers to buy tickets and merchandise as well as create profiles and join teams. For us to start creating this API, we started off by creating a UML class diagram that represents all the classes needed and the relationships that link them from pdfs that represented what the front end of the website would look like for merchants and customers. After finishing this diagram, we modeled the way our CRUD operations would look like using JSON. This involved defining the URIs and the HTTP requests’ and responses’ bodies. We also created an API design guide for how errors would look like, for collections’ representation and for the headers that will be sent with each request and in order to do this we read the Paypal and Microsoft API design guides.
For the rest of the training, we will start by implementing the event management API including coding and testing then we will be divided into groups according to our set of skills. Some groups will continue working on the event management API and others will work with Android and iOS mobile applications. We will know how the company is planning on dividing us next week.
In conclusion, the courses I took at AUB gave me a solid base to understand all the new things I am learning. I have expanded my knowledge in C# and learned about RESTful APIs. I have also learned a new way to develop mobile applications in a non-native way, which makes things go faster. The employees at ETS are very open to questions and seek to help you as much as they can and the learning environment is very comfortable and I am sure I will learn a lot more by the end of this internship.
...(download the rest of the essay above)