The Zeitgang from left to right: Amani Singh Vohra (back end), Justin Risch (manager), Eric Burnett (front end), Zako Sapey-Triomphe (back end), and Kevin Perera (DevOps)
Joining Ippon for the summer has been an excellent learning experience. The four of us, Amani Singh Vohra, Zako Sapey-Triomphe, Kevin Perera, and Eric Burnett, have written this post to provide a glimpse into our experience while working on our project, Zeitgeist.
The goal of Zeitgeist was to develop a data visualization tool that collects tweets from Twitter and performs sentiment analysis. The German word zeitgeist translates to “spirit of time” and refers to the defining mood of a particular period of history as shown by the ideas and beliefs. The project lives up to its name by running analytics on thousands of tweets and Twitter users, essentially allowing us to measure the zeitgeist. The app provides data visualization, sentiment analysis, relevance classification, and date windowing.
On the back end, we have used Apache Kafka clusters to connect the different data miners and a REST API. Two applications that connect to Kafka are TwitterMiner and Zeitgeist. TwitterMiner collects tweets through the Twitter4J library, adds sentiment analysis and relevance filtering using the MeaningCloud API, and sends it to Kafka. Zeitgeist connects to Kafka to gather this data and passes it to the front end through a Spring REST API.
On the front end, we have used TypeScript, Sass, React, and D3. Annotating our JavaScript with types has proven incredibly valuable, especially when working with many dependencies and with other team members’ code. Sass has made the experience of writing CSS much easier and kept styles concise. React has allowed us to compose our UI in a manageable and deterministic fashion. D3 has a steep learning curve and doesn’t play well with React, but with some finesse, it can be taught to behave. D3’s strength comes from its many math functions and ability to create dynamic axes.
Working at Ippon has been an incredible experience. There are many perks that have helped brighten our days and add to the atmosphere. If we needed refreshment, we could always grab some coffee or enjoy one of the many other beverage choices available. Having dogs in the office has been fun, especially since petting polite animals provides solace when debugging or fixing merge conflicts. Bikes are available in the office if we want to use them to commute or simply to run an errand. Foosball, cornhole, chess, and ping-pong are other activities we have indulged in after demos or when not in the midst of work.
Ippon as a whole has been welcoming to our intern cohort. From Richmond to DC, up to New York and across the Atlantic at the headquarters in Paris, the different branches of Ippon have a unique yet unifying culture that emphasizes teamwork. It was not uncommon to ask for tech support in Richmond and to have someone pick up the case in DC or France with a solution.
Our manager Justin Risch has lead the project with unparalleled enthusiasm, which is rare in many other internship programs. He has made us feel as part of the company although we’re only here a couple of short months. Through daily standups, sprint planning sessions, and other activities, he has mentored us down the path to becoming true Scrum practitioners.
Starting the internship program after Ippon moved to the new office in Scott’s Addition was wonderful timing. Scott’s Addition has many things to offer including a wide assortment of restaurants and breweries within walking distance. Not long after beginning our internships, Ippon held an office party to celebrate our new location and to christen the building. This served as a great way to meet the other Ipponites that we normally don’t see at the office. Towards the end of our stay, a rooftop bar was being built right across the street, and a new parking garage was nearing completion. It’s been exciting to see the new office and its surroundings continue to incrementally improve.
A typical day for an intern at the Richmond office begins with arriving around 9am and snagging an open desk in the engineering space. Or, if you’d like to change it up, you can grab a seat on a couch or in the kitchen. If you desire coffee, the kitchen offers a triple selection of coffee makers. While waiting for the coffee to brew, it’s time to catch up with the rest of the company on Slack and to start your day.
At 10am, the team holds a 15 minute standup. This is an opportunity for each member of the team to provide updates: what they accomplished yesterday, what they plan to do today, and what impediments are blocking progress. By making use of agile techniques, we have been able to plan, execute, and pivot faster.
Around 12:30pm, we usually break for lunch, either enjoying our meals together in the kitchen or occasionally going to one of the nearby restaurants. It’s energizing to disconnect and get fresh air, sometimes enjoying a game of chess. Finally, about 5pm nearing the end of the work day, it’s time to plan the next day before heading home.
The biggest thrill of this project has been touching the full spectrum of what goes into building an application. It has been not only a fresh reintroduction to certain aspects but also a proper exposure to all of the different working parts of back end, front end, and cloud deployment. Developing our skills in each of these areas has been challenging but wildly rewarding. It’s given us valuable insights into our different career possibilities.
We have had many opportunities to learn new skills and to talk with Ippon’s engineers about challenges we’ve faced. Everyone has been eager to field our questions and to help point us in the right direction. Because of Ippon’s interest in developing communities, we have often attended meetups hosted in the office after work. These are great opportunities to meet others in the industry and to find out what kinds of projects they’re building. Because of Ippon’s open office and friendly culture, we’ve been able to have frequent conversations with all other Ipponites, including the executive team.
We all have learned new aspects of software development, especially with tools we weren’t familiar with before, such as JHipster, Spring, Spring Boot, Kafka, and D3. The biggest part of the learning experience for us has been working on a software team. Following Scrum, using Figma for prototyping, and dealing with multiple branches and merge conflicts has helped us learn how to work more effectively with other developers. The internship experience has proven to be valuable for both the technical and non-technical parts of our work. Ippon’s relaxed culture has made it a great place for learning and for meeting others further along in their careers.