This blog represents the combined experiences of the five interns (Clement Dessoude, Yashar Atajiang, Auguste Lehuger, Spencer Hamilton, and Alexandre Andreini) in Ippon’s Richmond office during the summer of 2018, including the projects we worked on, the technologies and skills we learned, and our experiences with the unique culture at Ippon. Some of us travelled from across the Atlantic to be at Ippon and some of us travelled just down the street. Some of us were here for half a year and some of us were here for half the summer. None of our experiences were exactly the same but we all got great work experience and exposure to new technologies while having some fun at the same time.
Our time this summer was split between four main projects; Customer Oriented Sentiment Analysis (COSA), Power Plant, Taiga, and an Insurance Chatbot. COSA was the project that Clement worked on in collaboration with Ippon France during the months before the rest of us started our time at Ippon. COSA is a ready-to-use data platform, completely based on serverless services from AWS. The goal of this particular project was to enable an end-user to react as quickly as possible to external events and organize a response; it used some AWS Lambdas to collect tweets from various sources (Twitter, open data, call centers, etc.), AWS Comprehend to run data analysis, and then store the results in Elasticsearch. The Kibana plugin was then used on top of Elasticsearch to display the collected information on some dynamic dashboards.
The Power Plant project followed COSA and Yashar joined Clement for it. The idea was to create a website in the interest of better marketing Ippon in the Agile delivery space with a unique offering that showcases Ippon’s talents in Agile delivery, software development, and continuous integration/delivery. The website was designed to take in requested user-stories from prospective clients and to deliver results within 24 hours. The website was initially generated with JHipster and utilized technologies such as Angular, Spring, and AWS.
The next project that the intern team worked on involved Taiga, which is an open source project management tool. It was designed for Agile developers, scrum masters, and project managers to better organize the development process. When we arrived at Ippon, a version of Taiga was already in use, but the administrators of the website had to manually handle the user management. The goal of this project was to remove this step by adding a Google Authentication plugin to facilitate user management and streamline the set-up of a new project. We used Docker to facilitate the project deployment on the AWS infrastructure. Given that Taiga was open source, there were existing materials that we could build on. However, the code we found on GitHub was not entirely functional, and we had to implement a few modifications in order to make it work for our needs. In the end, we created a production ready application that was already being used on a client project by early August!
The largest project that the intern team worked on was the Insurance Chatbot. The goal was to create a demo for potential clients of an imaginary car insurance company with a simple web application that was interconnected with Amazon Alexa. The project aimed at extending the user’s online experience with a fun chatbot interaction. Once a user has created his profile online, they can ask Alexa to retrieve information or purchase products. The website was built using a microservice architecture. This architecture divides an application into several different modules, in this instance, a gateway and a microservice, and a registry which facilitates the communications between the different modules. It was created with the JHipster generator and then deployed through Jenkins to two EC2 instances connected through Amazon’s elastic load balancer. The final step was to create an Alexa skill using the Amazon development environment that would make requests of the website to retrieve information from or make changes to a user’s profile.
During our time at Ippon, we were exposed to dozens of exciting technologies that are commonplace in the modern development world. We wanted to quickly touch on some of these technologies (specifically the ones used during the Insurance Chatbot project) and our thoughts on them from an intern’s point of view. The technologies we worked with can be split into three broad categories: web development, DevOps, and Amazon Web Services.
JHipster was one of the exciting web development technologies that we were able to work with. The powerful application generator gave us a great jumping-off point for learning all the necessary technologies for building a modern web application. Lots of time was spent playing with the generator and exploring what it created. By learning the technologies through JHipster generated code, we were able to see the coding practices in use in a real-world application, an opportunity that is usually not commonplace in our college classes. Since most of us had little to no experience with these things previously, JHipster had a bit of a steep learning curve for us. But given enough time to explore and accidentally break a few applications, we saw the huge benefits of using it.
Through JHipster we were exposed to Angular and Spring Boot among several other technologies. As the integral parts of the JHipster technology stack, we were able to gain valuable experience with the popular front-end and back-end platforms respectively. We were also exposed to the concept of microservices in application development, a very common technique among modern, successful software companies such as Amazon, Netflix, and Twitter. While this added a layer of complication to the development process, we believe it was well-worth the extra effort to learn because it will very likely come up again during our future careers.
On the DevOps side of things, Jenkins made deploying our application on AWS much easier. The automation server gave many of us our first experience with DevOps, something that is often lacking from college computer science courses but is vitally important in the real world of software development. We created Jenkins scripts to automatically test, deploy, and run our application any time someone pushed an update to the project’s GitHub repository.
This project also utilized many different parts of the Amazon Web Services (AWS) platform. The Jenkins server was hosted on its own Amazon Elastic Compute Cloud (EC2) instance. Amazon’s Elastic Load Balancer service allowed us to create a single entry point that would alternate between two identical EC2 instances hosting the application, making sure that if there was any issue with either instance, the user would never know and the application would stay up. Amazon’s relational database service (RDS) held all of our application’s data.
The most important as well as the most interesting part of the project was the connection with Alexa. Alexa is Amazon’s cloud-based voice service. Anyone can develop an Alexa app and Amazon has made it very easy to do so. Through the Alexa Skills Kit, the developer can create intents, representing a sentence or statement you would make to Alexa. Each of these intents triggers an AWS Lambda function which processes the user’s voice input, takes an action if necessary, then returns some sort of response. This technology was a lot of fun to work with and full of exciting possibilities for future projects because of how easy Amazon has made the development process.
One of the many great things about working at Ippon is the fantastic culture that they have been able to cultivate. It’s an open and supportive environment that would make any kind of work more enjoyable. Everyone is always willing to help out if they can, always in the interest of helping other people learn and grow and never to demonstrate superiority or talk down to anyone. The relaxed atmosphere in the Ippon office also allows us to spend our quick breaks trying to best each other in foosball. In addition to our technical skills, our foosball skills have vastly improved over the past few months.
The true proof of how impressive Ippon’s culture is, is that it doesn’t end at 5:00 every day. From work outings to baseball games and gun ranges to late Friday afternoon games of cornhole and foosball, Ipponites genuinely enjoy being together because of the careful cultivation that has gone into maintaining a great culture. This ideology permeated our intern team even though we were only around for a few short months. We wanted to hang out outside of work playing racquetball and watching world cup matches because it felt like a natural extension of our time spent at work. At Ippon, work is so much more than just a paycheck.
The whole intern team is grateful for the experiences we’ve had this summer and to finish out the blog, each of us individually will give our final thoughts on what it is we feel we have gained from this experience.
Clement - CentraleSupelec, France
Six months already… time flies when you like what you are doing! This six month internship was a great experience at a lot of levels. From a technical point of view, I was able to “tackle” 4 projects, each one with a different role and with specific technologies. I got familiar with Angular, React, Spring, Docker, Jenkins, AWS. I learned how to work in Agile delivery and software development, and how to implement CI/CD tools and DevOps. I saw my work in production and being used to promote Ippon’s skills. However, it would be reductive to limit this internship to the technical skills I acquired. It was also extremely personally rewarding! I really enjoyed the people at Ippon and the spirit they foster. Here, the only way to move forward is together. It makes the work environment really enjoyable and you are eager to spend time with your coworkers, working with them or just hanging around, drinking some beer, discussing and discovering American culture through them!
Yashar - VCU
Great culture, atmosphere, and people; Ippon has it all. The continuous-learning culture that Ippon fosters encouraged me to dive head first into several popular technologies. From web technologies such as Angular and Spring coupled through JHipster to increasingly relevant cloud powerhouse like Amazon Web Services, stimulating projects and talented supervisors made the learning process challenging but rewarding. During the 3 months I interned at Ippon, I learned and experienced more about Agile development and how the development process works in a business setting than I have in 2 years as a computer science student. Scrum method combined with a fast-paced application of knowledge made possible by extremely intelligent and willing co-workers introduced me to a whole new domain of software development. These same co-workers make the work environment and culture at Ippon unlike anything I have been a part of at any job. We work hard together but we also have fun together. Casual Fridays where we socialize over drinks and disco balls as well as fun social events were things I would have never expected to get from a technical internship. I am very grateful for the experiences I had at Ippon and look forward to building upon them while continuing my career.
Auguste - Polytechnique, France
As a French engineering student, I wanted to do a summer internship in the US to discover American culture, work around American citizens, and improve my speaking skills. In a way, I was pursuing the American way of life. Working at Ippon USA during the summer turned out to be a unique experience in several ways. First, the US headquarters are located in Richmond, Virginia, not the place you dreamed of your entire life. Despite its smaller size, Virginia’s state capital has a lot to offer. I found it to be a great mix between the warm Southern hospitality and the Northern open-mindedness. Second, Ippon is not like any other consulting company. Like all mentioned before, the culture is what makes Ippon stand above its competitors. Staff enjoy coming to work, stay late to chat with coworkers, and plan activities on the weekend together. This environment is highly beneficial for communication, productivity, and company loyalty. As an inexperienced intern I did not have the opportunity to work for a client. Instead we worked on our own intern project which had a lot of advantages. It was completely free and a great guide to help us progress both as a team and as individuals. We learned a lot of state-of-the-art technology and we got to work with and hang out with amazing people. I had a unique and genuine American experience working at Ippon and I would strongly recommend any student who would like to do a summer internship to apply to Ippon USA.
Spencer - Virginia Tech
While the knowledge of the various technologies is incredibly useful and I am grateful for being exposed to them, to me the most valuable thing I’ve learned from this internship is how to work best in a team. Prior to this internship, all the development I had done had been on my own or with a mentor/professor that I could occasionally go to for help. My experience at Ippon was vastly different. I was exposed to an Agile development environment, specifically the scrum system, which has shown me how team software development really works and how, if done properly, it can produce much better software than what any one team member could produce on their own. I really enjoyed working with my fellow interns in the scrum environment because it allows us to work individually on tasks but with a common goal in mind the whole time. Since everyone on the team is responsible for the end product, we are all constantly collaborating and helping each other to make sure that not just the code improves, but the team members do too.
Alex - Polytechnique, France
Since so many technologies are used in the modern business world, an internship at Ippon was an incredibly efficient way to learn about all those technologies and about the process of developing with them. It was the first time that the five of us had been exposed to an Agile development environment, working as a real software development team. Instead of having to learn every part of a project individually, we were able to mainly focus on one or two specializations. Then when the whole team meets up, each member can explain what they’re working on so everyone has at least a basic understanding of the whole project. By doing this, you ensure that the software is better than what any member of the team could have done on their own. At the same time you make sure that everybody has a clear understanding of how the software works and where they could go if they want to learn more about something they’re not working on directly. Another incredible thing to discover was the many tools and frameworks that exist to facilitate that teamwork such as GitHub, Jenkins, and the scrum method. I am very grateful to Ippon for this internship because of all the new technologies I was able to learn and that I was given the opportunity to learn them inside a functional team. I am also grateful for the culture this company has and the people I was able to meet here. With casual Fridays, everyone being willing to help you learn, and an intern bonding event at the gun range, the experience was amazing.