intern

Intern Experiences: Erin

Erin.png

 My Summer Working on SpanishDict and Fluencia

My name is Erin Taylor, and I am going in to my senior year at Carnegie Mellon University, studying Mathematics and Linguistics. I worked as a Software Engineering intern with SpanishDict and Fluencia this past summer. 

Over the past three months, I worked on automating the feedback that is provided to
users of Fluencia, to give real time explanations for mistakes that are made throughout their lessons. This project was especially interesting, because of the crossover between technology and language. I found it very rewarding to be able to work with a team of technology experts, as well as a team of language experts, and bring those two fields together to improve the overall user experience.

I also liked the data-centered approach that was taken. Part of what has drawn me to linguistics is that I enjoy taking apart the patterns within language. Being able to draw on the resources of such a well established online reference as SpanishDict was key to the task of automating feedback for users. I was also able to see real users interacting with the product, and aggregate all the user inputs to be able to see how best feedback could be improved at any given step.

One of my favorite parts about working at SpanishDict and Fluencia was the freedom that I was given to define my work. I found that all team members were available for discussion and to share their expertise, but on the whole I was free to experiment with my project. The open discussion and freedom to try new things within the work environment made for an overall great learning experience, a very productive summer, and a lot of fun!

 

Intern Experiences: Maria

My name is Maria, and I’m nearing the end of my summer internship here at SpanishDict. I’m studying Computer Science and Linguistics at Carnegie Mellon, so a tech company that specializes in language has been a great fit for me. Before starting here, I didn’t have much of an idea of what things would be like, but the experience has been better than I could have expected.

I came in with two other interns, Hari and Zach, and from day one we felt extremely welcome in the office and were treated as real members of the team. I think it can be difficult for students today to find internships that are both challenging and relevant to their interests, but the SpanishDict team has done a great job of fulfilling both of these needs. We were each given a project that was suited to our individual interests, which for me meant natural language processing research.

I had a decent background in Linguistics and a basic understanding of some machine learning algorithms coming into the summer, so I was excited to get to further explore the strategies and applications of NLP. I got to spend time learning about the Natural Language Toolkit, which is a great NLP library for Python. I also did quite a bit of research into the world of linguistic data, and it quickly became apparent that even the most basic types of NLP may not be as solved as we might think. While I do not have a finished product coming out of this project, I’ve had the chance to see some of the amazing things that can be done with language technology.

After finishing my NLP research, I moved into the world of web programming, which I had only barely touched on in the past. If you had asked me before this summer if I wanted to be doing web programming, I probably would have told you no. It seemed like such a limited technology to me, but now I realize that’s only because I had no idea what kinds of things could be done with web applications. SpanishDict had me working with some of the most cutting-edge technologies such as audio recording within the browser, drag-and-drop interfaces, and icon fonts as replacements for images. Now that I’ve seen what kinds of things can be done with only HTML, CSS, and JavaScript, I’m excited to see how the web experience becomes more interactive and eye-catching over the next few years and to have a chance to potentially be a part of that.

In addition to learning so many new technologies this summer, I’ve been lucky to be a part of such a motivated and engaging team. When I first saw how small the team was, the impressive numbers of how many people use the site seemed unbelievable. However, after spending a few months hearing about everyone’s hard work and creative ideas, it’s easy to see how the site is so successful. Everyone at SpanishDict holds their own work to such high standards, and bringing a quality experience to the users is the first priority. At the same time, there’s still a fun and laid-back atmosphere in the office, and I’ve had an awesome time getting to know my coworkers both at work and while exploring DC during our group events.

Overall, this has been quite an eye-opening summer! I’m grateful to have had the chance to work on a product that will help so many people learn a foreign language. My skills as an engineer have definitely improved, and I now have a much better idea of how large code bases are maintained and organized in the real world, which is something my coursework has not exposed me to. Finally, working in a small team has taught me so much in addition to the engineering side of things, such as advertising strategies and search engine optimization. This has been a rewarding experience for me, and I’m excited to see the great things that will come from SpanishDict in the future! 

Intern Experiences: Zach

My name is Zach Cross, and I am currently an intern at SpanishDict. In a few days, I will be returning to Chapel Hill, North Carolina to finish my last year of undergrad at UNC, where I study Computer Science. The goal of this post is to reflect on my experience at SpanishDict, both for my own benefit and for communicating what it’s like to work at this great company.

I started here with two other interns (Hari Ganesan and Maria Bajzek) in late May. Moving from rural North Carolina to Washington, DC was an interesting transition, but I quickly settled into a comfort zone both at work and in the city. We have a company culture that creates a low stress, personal atmosphere that encourages productivity and helps us achieve our ambitious goals. From day one, I have learned an increasing amount about the company, our product, and the people here. In the context of engineering, I have benefited from the torrent of knowledge that is Ryan Roemer, our Director of Engineering. I have learned not only as a direct result of my project work, but also in asking Ryan questions about his own work. Additionally, I have learned about our business model through our weekly team meetings and in everyday conversations with other members of the team.

My primary project relates to both managing changes to the schema of our database in response to regular changes to the website (especially with the addition of our Node.js API) and maintaining the quality of our content. The fundamental problem I sought out to solve was managing database state (both schema and data) in a flexible, controlled manner that still allowed for sweeping changes. The secondary problem was creating a better interface to our database for content maintainers.

To solve this problem, I used the Django web framework with the Django app South for data and schema migrations. Because I wasn’t working with a clean slate – that is, the database already existed – I relied on Django’s database introspection tools and some manual (and scripted) tweaks to model our data. Several iterations of work later, a handy schema diff tool confirmed that my Django models captured the schema of the current database properly. From there, I modified Django’s built-in admin web interface to suit our needs. We now have a number of schema and data migrations in the teens, in response to needs for new features and data quality control. That is the long and short of it, but I should say that using Django’s ORM (object relational mapper) to programmatically handle data migrations was much more convenient than sanitizing and validating huge batches of SQL commands.

Having very much simplified my primary project in this post, I do want to elaborate on one particular set of migrations I worked on. We are a data- driven company, with tons of log data at both the application and server levels. I wrote a few data and schema migrations to facilitate the viewing of user query data via the admin web interface I mentioned. In addition, I wrote a few normalizations for our Hadoop MapReduce jobs that boiled down our logs into feasible quantities. The exposure to big data (something that once seemed nebulous) was a great learning opportunity, although it was pretty easy given our in-house tools for big data analytics. Now, we have the capability for team members who aren’t developers to add and make changes to our site content. Most importantly, we can react to what our users are searching for and better serve their needs. The web interface reflecting this analytics data was also constructed in such a way that progress is trackable without hassle.

As I wrapped up my primary project, I asked Chris (our CEO and a fellow developer) if there was more project work that needed to be done. He gave me two terrific projects related to a new product of ours… but I can’t go into detail on that just yet! The point is that there is always exciting work to do at SpanishDict, that we are continually seeking to improve our existing and new products. This sense of zero stagnation is probably one of the best parts of working here. New features are being created every day, and old ones are being improved. Not to mention, there is no shortage of ideas between our brilliant team members!

For anyone considering working here, whether or not you are a developer, if you are looking for exciting work and great co-workers, look no further! We have great people, great products, and great purpose! Y para los que hablan español, o quieren aprender, tengo que decir que esta oficina está llena de gente cosmopolita que traen todo tipo de experiencias internacionales y culturales al equipo. ¡Hay mucho que compartir y aprender!

And for the developer-types considering working at SpanishDict, know that there is an abundance of challenging (and therefore fun) problems to solve. That and very intelligent and creative coworkers who will no doubt be a source of knowledge and motivation. To end this post, I’ll throw some technology buzzwords to capture some of what I’ve seen and learned about (in varying degrees) at work:

Django, Python, Boto, MySQL, PHP, MrJob, Node.js, CoffeeScript, Loggly, Scout, NoSQL, MongoDB