Fulbright Update November 2016

As I near the three-month mark of my Fulbright grant, I reflect back on my experience thus far. Although I had a rough start with government paperwork and finding housing, I am now finally starting to experience life in Denmark. Adjusting has taken some time as I have learned how to bike with traffic and find the most efficient route to take public transportation between my apartment on the far southwest side and the university north of the city.

For the educational aspect of my Fulbright experience, I am taking four classes this semester and one in January that will lead into my project work in February.  Every few weeks, I meet with my advisor to discuss how my coursework will impact my project in the Spring.  I also had a minor advisory role in the selection of a master’s thesis with the Groovy compiler for another student.  Students and professors have been mostly positive and open minded when I talk about the Groovy programming language. Some are familiar with Groovy from using Gradle in Android projects. Others are intrigued when they learn that their favorite continuous integration application, Jenkins, uses Groovy.

 The most relevant class I am taking this semester is Program Analysis.  In this class, I am learning the fundamentals required for my Fulbright project "Revolutionary Analysis of Programs Written in the Programming Language Groovy."  Many of the analyses and techniques I am learning in this course apply directly to my project.  As a bonus, I was able to use Groovy in our group project.  Not only does that help with setup for my project in the Spring, but since it is a group project, I introduced Groovy and my Fulbright project to my team partner along with other students in the course.  It was encouraging to receive positive feedback on the implementation portion of the peer review in October.

 I am taking three other courses this semester as well: Web Services, Fault-Tolerant Systems, and Data Security. Web services is an important class for studying Groovy because one of the most common uses of Groovy is in web-based services and the framework, Grails. The lab assignments and project work for this course, have been helpful in understanding what other technologies are available for creating web services.

 A majority of the Fault-Tolerant Systems course has been an independent project.  I am leading a group looking at strategies and tooling for deploying web applications.  For example technologies, we chose Groovy solutions.  We start with a sample application in the framework Ratpack.  The application is built using the Groovy based build tool, Gradle, on a continuous integration server using Jenkins. Although students in my group and colleagues I discussed the project with were familiar with Jenkins as a preferred tool for Continuous Integration, they were unaware that Jenkins uses Groovy and that custom scripts built for Jenkins are Groovy code. It was also a good learning experience for me as I have worked as an application developer. This foray into DevOps was useful for better understanding how the applications I developed are packaged and deployed to production.

 The course Data Security was a last minute change to my schedule.  I was initially slated to take a project management course this semester, but a professor in my section advised me that my scheduled course load was too much even for someone with my background. Looking back, that was prudent advice as the classes I ended up with have been time-consuming and challenging enough.  I decided to take Data Security since it was fewer course credits and an interesting subject.  Data Security has focused on cryptography and securing transmissions between devices and servers.  It was a subject that always fascinated me and is very relevant for the industries I have worked in such as healthcare. However, I was not the one implementing the libraries, so I did not have much experience with it.  The labs for this course have been instrumental in increasing my understanding of security theory and implementation.

 Of relevance to my Fulbright experience, there have been several fascinating discussions during this course comparing policies of the US and Europe in regards to privacy and encryption algorithms including the role and jurisdiction of the National Security Agency (NSA). As an American, I do not usually see this viewpoint, and it has helped me understand a lot about my international colleagues.

 Many of my classes have active collaboration components, and this has been very special.  I was terrified of group work when I started at DTU.  I was worried that I would have trouble finding other students to work with when I did not know anyone.  It has been ok.  Some groups work more efficiently than others, but that has all been part of the learning process.  Teamwork even became the topic of a blog post I wrote for the international student’s office.

Outside of the classroom, I have been busy too.  I have connected with the local Java users group, Javagruppen. I attended their annual conference JDK IO and the October meetup.  As an attendee, I saw some of the colleagues I had previously met through the Groovy community and made new connections with developers from the larger Java community of Copenhagen. At first, I was nervous because I do not speak Danish well enough to have a technical conversation.  However, everyone has been incredibly helpful switching to English for me.  The connections I made here led me to apply for a speaking engagement at a prominent Java conference in Sweden, JFokus, where I will be talking in February.  I look forward to traveling and seeing old and new connections again there.

 I also had the opportunity to lead our groovy global community in a new initiative. GroovyCommunity.com has been a collaborative effort between Groovy developers at many companies across the world.  We have provided a safe space for asking questions related to Groovy and the projects in the Groovy ecosystem.  The comprehensive code of conduct and policies has been a bit of a controversial subject for a few community members, but it has also made many of the community leaders feel more comfortable about joining our space and significantly improved the quality of conversations we have there.

 Previously, our open source community had faced harassment on several platforms including Twitter, Github, and an open Slack Community.  I consulted with women in tech and LGBTQ organizations I am a part of that have experienced cyberbullying to come up with a solution to combating harassment in the Groovy community.  The recurring theme was that the community needs to feel that concerns will be handled quickly and efficiently if something happens.  One way to do that is through transparency between the members and administrators.

 With knowledge from my data security course and consultations with other community leaders, I decided to implement a protocol to verify users before they could join the slack team.  The admin team that reviews member requests and possible issues with conduct consists of 12 community leaders distributed across different time zones and languages to handle any problem that might arise.

 We also decided to make all transcripts of our conversations public.  By having the conversations in the open, it makes it more difficult for members to chat without repercussions and also had the side effect that any questions asked are indexed by search engines and will appear there if anyone else in the future searches for the issue.  Now several weeks in, we have over 400 members discussing everything from basic getting started questions to complex decisions about the future of the groovy eclipse plugin.

After I finish this semester, I am scheduled to take a class during the January term in functional languages.  The Groovy language has aspects of functional programming that should make this coursework relevant. I am looking forward to taking more courses in the Spring Semester.  Those will include Compiler Construction, my special course for my Fulbright Grant Project, Static Analysis of Dynamic Languages, and a course in project management.

 Overall, I have found my Fulbright experience to be very rewarding.  I have been able to collaborate with students, professors, and local developers in a way I would never have been able to without the help of a Fulbright grant.  As I look to continue the collaborative effort, I am optimistic for a successful project finish in June and I look forward to applying my new skills to an internship this summer.