Friday, October 2, 2015

The First Annual DLF Retreat - Day 1

I am spending the weekend at Topsail Beach, NC with my advisor and 2 other senior students in our lab. You may be asking yourself 1) why are you at the beach with your colleagues and 2) did you know there's a hurricane coming that way? Our fearless leader decided it would be a good idea for us all to spend a weekend together AWAY from the lab to brainstorm ideas for our research and future publications. I must say, we are off to a pretty great start. I will also add that the trip was planned wayyyy before anyone knew Joaquin was headed this way. :)

Today was the first day of the retreat; the weather was wet and gross, as it has been for the past 2-3 weeks, but we made the best of it. Our first stop on the way in was the Duplin Winery (gotta get the trip started right!). Duplin is a local wine, which I had heard of (and of course drank) but had no clue originated in NC. We got to taste various red and white wines for free -- and of course we had to buy some as well! We even got complimentary homemade crackers, which were actually pretty good. Before leaving the winery, in true researcher spirit, we had a brainstorming session. I shall not divulge the awesome ideas we came up with, but know the DLF is making moves ;).



Once we made it to our place of residence for the weekend, we ate some lunch (which our advisor so thoughtfully packed) and then continued to do our first official activity of the weekend. For this activity, we had to think about our career path (where we see ourselves in 5-10 years) and answer various questions about to our career path such as advantages and disadvantages, measures of success, and how our career path might evolve. Even if we aren't sure what we want to do for a career, the exercise helped us think about what it is we truly want to do and why. More concretely, it helped us think about how we can better prepare ourselves (and others in our lab) now for their future, whatever it holds. Retreat or not, I recommend this activity or anything similar to researchers/research groups. Even if the discussion is informal, it can be informative, thought-invoking and lead to more detailed discussions.

Now after all this heavy, of course we had to toss in some leisure; the rain gave us a break so we took full advantage. Despite the lack of sun, it was still nice out on the beach. We even got to see some surfers try to take advantage of some of the waves coming in!  After the beach, we had a lovely gourmet dinner prepared by Dr. E -- corn dogs, tater tots, and salad :P. So delicious!




We probably should have stopped there though, since once we continued exploring we found a post-apocalyptic arcade, complete with broken ceiling pieces on the floor, a closed "surf shop" where you are supposed to be able to rent fun water gear, and  an indoor pool and hot tub that was not only dark but surrounded by a moat of water. Condo = nice. Beach = wonderful. Everything else = meh.
After exploring the beach and the "resort" we're staying at, rather than trying to play arcade games around the broken and water damaged ceiling, we had some quality bonding time while watching COPS on Spike TV. Yes. COPS. Don't you love it? :)

Day 1 has come to an end...I'm pretty excited to see what day 2 brings. I'll try to post tomorrow on our festivities. Until next time! :D

Thursday, October 1, 2015

Tricorder: Building A Program Analysis Ecosystem

In this paper, authors provide an overview of the program analysis platform "Tricorder" that is being currently used in [Google](https://www.google.com/) for program analysis. They also present a set of guiding principles that went into creating the platform.

Article link

Abstract

"Static analysis tools help developers find bugs, improve code readability, and ensure consistent style across a project. However, these tools can be difficult to smoothly integrate with each other and into the developer workflow, particularly when scaling to large codebases. We present TRICORDER, a program analysis platform aimed at building a data-driven ecosystem around program analysis. We present a set of guiding principles for our program analysis tools and a scalable architecture for an analysis platform implementing these principles. We include an empirical, in-situ evaluation of the tool as it is used by developers across Google that shows the usefulness and impact of the platform."

Thoughts

Authors present their design decisions and lessons learned with the program analysis platform Tricorder.

TRICORDER ARCHITECTURE

The Tricorder platform accepts as input the code to be analyzed and outputs inline comments the code. The platform is a realized as a microservice architecture. Authors argue that thinking in terms of services encourages scalability, modularity, and resilience (in case of node failure). Tricorder is designed to such that the analysis workers are designed to be replicated and stateless in order to make the system robust and scalable. The results appear in the code review as comments (Google terms it as robot comments or robocomments for short).

GOOGLE PHILOSOPHY ON PROGRAM ANALYSIS

  1. No false positives
    "No" may be an over statement as admitted by the authors. The aim is to reduce the number of false positives to the minimum. Authors also define a effective false-positives as a measure of number of reports that a user chose not to take any action.
  2. Empower users to contribute 
    The insight is to leverage the knowledge of masses to build a robust system. Google actively encourages users of Tricorder platform to write new analyzers.  Since the users (google employees) typically work with variety of programming languages and custom APIs, authors seek to leverage the vast domain knowledge of the users to write  analysers. The "Tricorder" platforms enforces quality by reserving the right to remove an analyser from the system based on performance (i.e. how many users are ignoring warnings, are the warnings annoying, is the analyzer taking too many resources...). Authors argue that analyzer writers typically take pride in their work, thus the analyzers are generally of high quality. The issues reported against the analyzers are typically resolved fairly quickly.
  3. Make data-driven usability improvements 
    The idea is to avoid arbitrary design and implementation decisions and ground them on empirical evidence. Enhancement and correction to analyzers are made based on the user feedback. 
  4. Workflow integration is key
    The key idea is that the analysis should integrate with the users workflow rather than a user having to go out of way to perform analysis. For instance, a standalone analyser is less likely to be invoked by a developers in contrast to an analysis mechanism that integrates to his/her IDE.
  5. Project customization, not user customization 
    Past experiences at Google showed that allowing user specific customization caused discrepancies within and across teams, and resulted in declining usage of tools.  Authors observed that often times when a developer using a tool abandons project, team members often check in code containing warnings found by that tool. However, Tricorder platform offers limited project-based customization. For instance, a team may choose to run optional analysis by default and some analysis that are not applicable can be disabled for a team.

Evaluation

One thing to point out about this paper is that the focus is less on the technical aspects of the platform and more on the principles that went into developing Tricorder and how well the tool implements each. This was nice; the platform took years to develop and I'm sure there are various technical pieces. It would have been too much to try to go into technical detail, so kudos on finding a good balance. At a high level, the guiding principles presented by the Tricorder paper make sense; Some have been documented in existing literature, while others have been experimented with within Google. For example, false positives and workflow integration have been been discussed in literature as major deterrents for potential static analysis tool users. The authors give sufficient background and include references to the existing works, though some expected Google to take all the credit for the ideas presented :). 

Although there is an evaluation of the platform, it leaves something to be desired.
For example, they kept track of how often developers using the tool clicked NOT USEFUL or PLEASE FIX to determine the usability of the tool. However, the numbers for theses clicks per day are surprisingly low for a company the size of Google. If this tool is available to Google employees, do the low numbers mean people are not using the tool or they are just not clicking the buttons?
The work would benefit from a more in-depth evaluation, perhaps including some qualitative findings regarding how people use the platform and how often in comparison to other tools that are available or have been used in the past.

Closing Points

The publication that came from this work is overall an informative one that makes contributions to both the research and technical communities. Besides the fact that the paper is well written (which I should note, being unfortunately good writing is harder to come by now a days), there are a few others reasons why we believe this paper got accepted:

  1. The design guidelines for Tricorder are strong; again, some are not supported by existing literature. But there is support for each design decision made.
  2. There are design decisions at all (guidelines that can be replicated are always good).
  3. The project spans years of work with lots of data.
  4. It's Google!
  5. It's a relevant topic that people care about (and developers can relate to) in research and industry.

Overall, well done Google! :)

_______________________________________________________
Guest writer: Dr. Rahul Pandita, a postdoctoral researcher at NC State University in the Realsearch group advised by Dr. Laurie Williams.

Tuesday, September 8, 2015

So much to share, so little time!

Let me start by saying 'whew'...it has been a long past 2 weeks (not that that's an excuse for months of missing blog entries). Time for some (brief) updates on my journey up to now...

First, I'm finally out of my 2 year paper drought! Well, sort of. No first author full papers BUT I did get to collaborate on 3 accepted FSE (Foundations of Software Engineering) papers. Two papers were for the NIER (New Ideas and Emerging Results) track: a paper related to my dissertation on tools tailored to the developer and a paper on improving qualitative studies using social sites, such as Hacker News.
One, which I was second author on, was a full paper on developer information needs when using security tools.


The most exciting part is that I've been working on getting an FSE paper in for years now...and finally it happens. AND the conference was in Italy, which made it even better! :) Yes, I got to visit Bergamo, Italy for one week and it was great. The food was great, the people were great...everything was just, great. I may post some pictures...just been so laazzzzyyy since I made it back :D.

As usual, I met my three new people (and then some); the cool thing about attending a conference after years in the PhD is that you start to run into people you recognize -- and they recognize you! After working at MSR for the summer, I encountered a number of people I both worked with and met through working at MSR. Will forever be grateful for that experience.

Speaking of MSR, sadly my internship ended 2 weeks ago. My last update spoke of it being 4 weeks in...before I knew it, I was in week 12 trying to finalize data collection and analysis prior to my departure. If you're curious, we did go for an ICSE submission (fingers crossed)! I'll be able to give more details once I find out if we made it in. Don't hold your breath though...won't find out for a few months now :/. So now we wait...but I would be remiss if I didn't note, again, how great my time was at MSR. Working with Tom Zimmermann and Chris Bird and getting to know the researchers and research at Microsoft was truly a unique and encouraging experience.

Ironically, my time at MSR further validated my desire to work in academia. Though I really enjoyed doing research at MSR, my time there helped me realize that in academia, I can have the best of both worlds! While there, I met a number of professors visiting to do research or just to see what kind of research is being done in industry. I could definitely see myself teaching during the year and then doing something different during the summer with the cool kids at MSR :)

I know I said I would be brief, but I feel like I have so much to share. Those are the major points though - things have been a whirlwind on top of the fact that I missed my boyfriend's birthday while in Italy so I'll need to make that up to him at some point. But I'm living life and trying to find balance...now I'm working toward my Oral (finally) so I can try to really get my life started.

Hopefully I can get better at these blog posts so I don't have to brain dump every time - but that's all for now. Until next time... :)

Tuesday, June 23, 2015

Week 4 already?!

I just realized that I am literally starting my 4th week of my internship...didn't I just post about my first day not too long ago?? I guess time flies when you're having a good time :)

So far, though fast, my experience has been a great one here at Microsoft. Besides being in mild-tempered and beautiful Seattle, I am surrounded almost every day by some of the brightest research minds in the business...and most of them are super friendly!

I'm finally getting my hands dirty with the research I will be doing for the summer, which is the best part about where I am right now. When you send out a survey and start getting responses within the first 10 minutes, you know you're in the right place for what you're doing! I've never done a survey before, which was one of the things my mentor and I discussed, so I wanted to take the opportunity being around so many developers to learn about it. Yet again, another reason I am grateful for this opportunity. Even better, I won't just be working with one research master-mind...I'll be working with two (Christian Bird being the second)! All the more reason to take full and complete advantage of being where I am. Not just that, but I get to talk to developers...all professional..about their productivity and how it can be improved...the center of my research interests. It was fate.

Outside of research, which unfortunately I can't get into too much detail about, I've been enjoying my time in Seattle as well. There's always something going on, making it easy to fill weekends. Since I've been here, I've been to a carnival and farmer's market (at Microsoft!), on a Ride the Ducks tour and to a Sounders FC game (also courtesy of Microsoft)! I've also been to some of the parks and festivals, such as the Fremont Solstice Festival (which is AWESOME). This weekend I'll be going on a Falls and Farms Family Adventure with Anthony (again, courtesy of Microsoft) where I will get to see more of the beauty in nature around here. There is literally ALWAYS something going on and I plan to take FULL advantage :).

I hate writing long blogs posts (probably not as much as you hate reading them) so I shall wrap up for now...but expect updates and hopefully pictures as I continue my fun (and research) filled summer. Speaking of pictures...check out this bomb selfie (which was taken SANS a selfie stick)! #ESEMSR :D




Wednesday, June 3, 2015

Hello! I'm Brittany and I work at Microsoft :)

So things have been crazy hectic the past month or so, but I had to take some time to update my blog with some of the awesomeness/craziness that is my life right now (as a PhD student).

First, I'm in Seattle...well, Redmond to be exact. I've been here before, but not as a Microsoft Research (MSR) intern :). That's right...dreams do come true. This summer I will be working with one of the top names in empirical software engineering right now, Tom Zimmerman (Google him, he's pretty fantastic). I would like to note I probably would not be in this position right now if it weren't for my bomb ass advisor, Dr. E. Thanks to his connections, dedication to his students, and what I assume to also be belief in me, I was able to get my name, face, and research abilities out there on a more personal level. Note: Always take advantage of opportunities to travel and meet new people - you never know who you might meet!

Second, although I am starting my internship, the work of a PhD student is never done! A bit of sad news, I just got back 2 paper rejections...now, this wouldn't be so bad if it weren't for the fact that these two papers have been getting rejected for the past two years...no bueno. It's a bit discouraging, but this is why I love my advisors. Rather than giving me time to wallow in my sorrow, Dr. E says "let's do a NIER paper." Immediately my mind shifts from "oh woe is me" to "okay, what do I need to do to get this done"...one of the beauties I imagine of going through the PhD. Eventually you learn to just move on...time is too precious to waste.

Third, I FINALLY convinced my mom to get on a plane, so my parents, my sister and her boyfriend will be visiting me this summer in July. I am super excited! They've never been and I can't wait to show them around and let them try all the amazing food around here :D. They're only staying for a little less than a week but I think it will be a good refresher to get me through the rest of my internship.

I don't know exactly what I will be working on this summer, but I know it will involve a survey because I've never done one and desire oh so much to learn (with Tom Zimmerman :D). I have a couple of ideas floating around, as does Tom, so hopefully by the end of the day today I will know what I will be working on. Wish me luck!

Until next time...



Thursday, April 16, 2015

4 down...1 to go...

I recently came to the shocking (albeit looming) realization that in about one year's time, I will potentially be defending my PhD...finishing this long, exhausting, fulfilling, and crazy journey...

But then I thought about the fact that although I will be finishing the journey to my PhD, my journey is just beginning. The scary part is figuring out what that next, new journey is. Especially when all you've known is school and the structure that provides. What happens next? What happens when you don't have an advisor telling you when you screwed up? What happens when someone is coming to you for advice?

I don't have a lot to share right now, mainly because I am literally swamped with work from every angle...but I felt the need to stop and note that this shit is real. More real than it was 4 years ago...and getting more real every day. I just thank God for the support system I've had along the way - bless them for putting up with my shit and helping me grow to become the woman (and future Dr.) I am today.

Until next time...

Wednesday, April 8, 2015

Stress management...or lack there of?

As we all know (and if you don't know, this will help explain it ), the process of getting a PhD is quite stressful. Now, let's add on being in a relationship, involved in extra curricular activities, and trying to have a social life. Sounds damn near impossible, doesn't it?

For me it's always felt impossible, which is part of where my stress comes from. I enjoy being busy and having things to do outside of school...yet it's quite possible that a lot of the things I enjoy doing are bringing me the most stress. I love my boyfriend, yet making time for him and I is a rarity. I have friends and I'm close with my family, but I feel like I'm always missing out on everything. Put all these things together with trying to get your Doctorate and you've got a recipe for Stress Stew.

One thing I've always valued is mentorship; I wouldn't be where I am today if it weren't for mentors and sponsors I've encountered along the way. One person I consider a mentor that I met recently through a close friend/colleague, and have been meeting with frequently since, often talks about stress and stress management. After hearing about my issues with managing my stress and anxiety levels in more than one of our meetings, she suggested I read a book called "Zen and the Art of Happiness" by Chris Prentiss (for those of you who don't know, he founded Passages of Malibu, a treatment facility for addicts). Don't worry, I'm not an addict; unless we are including work as a drug.

Prior to reading the book, my friend who had already read the book came almost dancing into the lab one day. She said she had started reading the book and that it already had her handling stress differently. Despite my wanting to punch her in the face by the end of the day (love her!), I was intrigued by the idea that just beginning to read a book could get someone feeling as good as she did. So intrigued that I went home that evening and started reading the book. I must say I was not disappointed. Long story short, the moral of the book is that everything happens for a reason, deeming stress pointless (hence the title "...or lack there of?), and that we should embrace change.

I can't say that all of a sudden I feel like I can handle any and all stress, but I will say I feel like I can put myself in the right mindset to better handle my stress and anxiety. And for me, that's the most important step. I recommend anyone who is struggling with stress or going through a rough time give this a read -- it's a short read and really helps to put things into perspective, no matter who you are!

Not gonna talk your ear off this time (though maybe I already did :D)...more to come soon on publications and closing the semester as (and finishing my time as) WiCS President!