Skip to content

Poster at Future of Collaborative Software Development

15/02/2012
This week I presented some posters at a workshop held at CSCW 2012. The workshop was on the Future of Collaborative Software Development here the excerpt of the workshop:

This workshop brings together researchers who are interested in the evolution of software development organizations and the role of collaboration technology, such as crowdsourcing, social media, software hosting, and application marketplace services. This CSCW 2012 workshop will include brief presentations, moderated discussions, a poster session, and a forecasting exercise to inspire participants to come up with their next big research idea.

And here is my poster to the paper we submitted:

Paper/Poster abstract:

Organizations are spending effort and money on upgrading their development infrastructures such that their tool suites better integrate with each other. This new level of integration, which pushes beyond the level of coding activities and the management of such activities, is rapidly increasing across the industry. Once this integration encompasses the product development as a whole, including coding, marketing, design, and testing, we will experience a breakdown of department boundaries within organizations that mainly exists because of environments specific to each department. In consequence, teams in organizations will organize more naturally and enable easy collaboration across “departments”.

Book: The Progress Principle

08/02/2012
The Progress Principle: Using Small Wins to Ignite Joy, Engagement, and Creativity at Work gives some very interesting insights about the power of positive and negative work events. Teresa Amabile and Steven Kramer uncovered some very important insight into increasing productivity. Both managers and employees alike should heed the advice of creating a constant stream of positive work events.

But what are positive work events that should be maximized and what are negative that should be avoided?

Positive work events constitute events that accomplish tasks towards meaningful work and helping your fellow colleagues or your sub-ordinates to accomplish their tasks are two very powerful events that will greatly increase productivity for future work.

Negative event on the other hand, such as frequently changed goals, adversity in pursuing important work, and loss of independence.

I personally do research in optimizing the productivity of software developers by providing them with new tool and processes to be able to accomplish their work faster. I am currently wondering how much influence these tools and processes actually have.

If you want to know more about the progress principle you can find more at progressprinciple.com.

The Evil Guide to Getting Papers in Empirical Software Engineering

01/02/2012
Over the past years as a PhD student I had many discussions about how to best publish papers. After many rants about the in my opinion deprecated review system (not really my point in this post, but it is always good to plant and nurture the seed ;)), I came up with the following evil paper publishing scheme. For all of you that are still innocent or are easily tainted by evil schemes and thought, you might want to stop reading right here.

Here is what you should do:

  1. Take a course in creative writing.
  2. Read paper from researchers that do studies in industrial settings.
  3. Read paper the open source/open data counter part to the papers describing studies in industrial settings.
  4. Read open source/open data papers that do not have an industrial settings counter part.
  5. Write the the industrial settings counter part and publish.

The Trick that makes it all work:
Have you ever read a paper that reported on a study conducted at a company that wishes to remain anonymous? Right, that is the loophole that we are exploiting by simply stating that we cannot reveal our sources and therefore take any means of checking our research. Worst case we can always refer that our results differ that much because of the very special circumstances of the project we studies.

Step 1: Creative Writing
Create writing is the one skill you will need the most to succeed with this evil scheme. Creative writing will help you to come up with nice ideas and construct an intuitively logical argument (pepper it with some sound stats on face data and nobody will be able to stop you). The next steps will help you to find topics to apply your creative writing and make sure that you stay within your limits and don’t start to make outrageous claims in your papers.

Step 2: Industrial Settings
This you will need to do to see how data from industrial studies is reported and to get a good overview about the arguments used why they cannot name the organization or publish the original data. Furthermore, industrial case studies often have some very unique settings. Those settings are always a good source of inspiration when trying to justify some of your variation in results and give you a bit more credibility that you actually did research at a company.

Step 3: Open Source/Data Settings
To further your understanding between studies done at industrial sites that don’t allow for publishing their data and the rest of the world (well that is mainly the open source community)you should read up on studies whose data is available. This will give you a better idea on what data usually is available to the public and what can be done with it, as well as short comings that you might not find in industrial settings. For instance, in open source you have a more difficult time getting access to developer in particular when you want to shadow them during their development time, whereas in an industrial project you usually know where the developers are located and when they are working.

Step 4: No Industrial Settings
Next on the list is to get ideas for you own “paper”. The easiest way is to read papers about studies that do not have a closed data equivalent. You basically scour the huge amount of studies that had certain short comings due to their data collection methods or did not explore the connection between the project setting and the results in great detail and use this and other potential differences to write your own paper.

Step 5: Write Your Paper
When writing you paper that is based of the ideas of studies that are already published it is important to vary the results and the setting in a meaningful way, such that your results can intuitively be explained by the variation in the setting. This serves two purposes, you won’t make any claims that are unbelievable and stay within a certain norm of accepted results and you will make the researchers of the original study happy as to mostly confirming their findings.

Bonus: Steps 2-5 are not essential
Now for the creative writing pro’s that have enough experience in their field of study. You can omit steps 2 to 5 and simply conjure up a study that is generally believable and follows the trends within your community. The trick is to stay away from things that might create doubt in the validity of your study by making outrageous claims or contradicting accepted norms, simply put: keep a low profile. This won’t win you any best paper awards but a paper is a paper.

The final questions for you: How important do you think is it to teach graduate students and researchers ethical guidelines/behaviour? And how do you and/or institution do that?

Book: The Prince

25/01/2012
I recently got to read an old classic, The Prince (associate link) by Niccolo Machiavelli. My main motivation was that Robert Greene in his book The 48 Laws of Power makes excessive use in referencing the works of Machiavelli. Now I finally understand what people mean by (or what the actual meaning of) describing someone as Machiavellian.

Here is a definition I took from an online dictionart (thefreedictionary.com):

adj.
1. Of or relating to Machiavelli or Machiavellianism.
2. Suggestive of or characterized by expediency, deceit, and cunning.
Machi·a·velli·an, Machi·a·vellist n.

Although I doubt that most people that describe someone as Machiavellian try to relate it to the works or Machiavelli directly, I do need to agree to the second definition as describing someone as expedient, deceitful, and cunning. These are also the main “weapons” Machiavelli suggest to use in order to establish or keep in power.

Let me highlight the two aspects in his guide of conduct for princes (or more general people in power) that stood out to me:

  • Kill everyone that could claim you power or will diminish some of it in the process of attacking your power. This seems to be very extreme, especially nowadays. Nevertheless, it might be not a bad idea to rid oneself from someone by killing his/her reputation instead. Do you think that is enough?
  • Keep the populous happy. Similar as Sun Tzu in The Art of War (associate link) pointed out, in order to stay in power especially when that means ruling or leading people it is very important that those people have a positive view of you and are not unnecessarily provoked to conspire in taking you down.

With regard to the last aspect, what do you do to keep your people happy?

SEGaL goes Distributed

18/01/2012
What the heck do I mean by SEGaL goes global? Well, we are basically starting on making good on the promise of studying the effects of global distribution and how to mitigate them by distributing ourselves. Starting in February we will have one week each month during which we forbid face-to-face interaction between our lab mates and even encourage them to not come into the lab. This way we will start to experience the peril of distributions ourselves.

As depicted in Figure 1 we try to place the week of distribution in the second week of a month. We even went to so far as to define rules on how to allow us to meet in person. We are currently thinking of estimating a flight back to the lab to be worth 50 dollars plane ticket and 5 dollars per day for hotel costs (we don’t want to make our visitors live under the bridge, do we).

(Figure 1) Depiction of from now on typical
work week at SEGaL.

We will start lightly with our first week. During that time our regular meetings are going to be interrupted because Jorge and I will be at CSCW 2012 and Daniela will be engage with a PC meeting during that week. Additionally, that week will be reading break at the University of Victoria, thus limiting the interruptions from other sources, such as undergraduates. We thought that this will be an ideal start as it allows us to ease in to the distributed setting.

The short term goal is to get a better appreciation for distributed work and to actually prevent each other from interrupting our own workflows. In the mid term, this will by itself yield a paper. We will be all keeping work journals denoting what worked for us and what not, including recording methods that worked for us under what situation and what did not. In the long term of course we hope to uncover processes and tool that efficiently help loosely coupled groups like ours to better function in a distributed setting and apply our findings to software development.

I will keep you posted on our progress, maybe we will be able to soon also simulate time zone difference.

What do you think will it work and be worth it?

Book: Collapse – How Societies Choose to Fail or Succeed

11/01/2012
Jared Diamond’s second book Collapse: How Societies Choose to Fail or Succeed (associate link) talking about the fate of the world focuses not so much on the aspect on how we got to where we are today (for that you should read Guns, Germs, and Steel: The Fates of Human Societies (associate link)
) but rather explores the questions why some societies not only are at a disadvantage today but why they collapsed completely.

For instance why did the Maya fail although everything we the average person knows about them is that they were one of the most advanced civilizations of their time?

Although, Jared Diamond always emphasizes that there is not a single factor that can predict the failure, throughout the book I got the impression that the once cause that connects all cases is an unsustainable way of live. Of course, not every society was aware that their way of live is not sustainable (e.g. starting in a good year and then hit by a bad year).

What does unsustainable mean in the context of this book? Mainly deforestation (there were societies that cleared all trees on their island) and destruction of food producing resources (e.g. loss of nutrients, soil erosion, and nutrient leaching).

For us today that means that we should be very careful how we use our resources and what we do to our earth, especially considering that we as a race face bigger challenges, such as global warming or the over fishing of the oceans together with a major population increase.

In the end I was wondering what I can do to live more sustainable at least with respect to food. And I will try to start eating more see food. Why? Well 70 percent of the earths surface are covered with water, shouldn’t that imply that most of the food we consume also should be produced in this water covered area?

What do you see yourself doing to live a little bit more sustainable to avoid our society from collapsing?

3 smart boards, two plasmas, and 7 cameras

04/01/2012
tags: , , ,
I recently upgraded the hardware for our media computer. Here in the SEGaL we have three smart boards and two plasmas as well as 7 cameras. Currently we run two computers: (1) a Windows machine that we used for Skype calls and (2) a Linux box that runs Access Grid for multi point video conferencing. One nice thing is that the Linux box using Access Gird could send two video streams.

Well the problem was that it is rather tedious to switch between computers and having 7 cameras (well our video/audio routing system can only route 5 video inputs at the same time) that cannot be used at the same time is somewhat sad. And that both computers are older than 4 years doesn’t help either. After there was an attempt last year to build a new computer and its sad, sad failure with ordering the right parts for our old video/audio routing equipment it was my time to take a stab at it.

You might have guessed it, getting this thing up and running is due to the start of the GSD course next year.

Finding a computer that can deal with 5 VGA out puts and take in 5 s-video signals is not that easy. But I found a sort of solution. But let me tell you getting things to work is anything but easy. There are basically two things that need to work: Skype and Access Grid. The whole ordeal took 5 days just to install the machine properly:

Before Day 1 – Buying the computer

Ok, to be honest finding all the hardware takes “only” one day, it was mostly going to NCIX and adding things to the shopping cart. BUUUUUT, we are at a University, why would it be easy, I needed first to go through our Technical Support Center and explaining a system and the computer requirements over email is rather tedious and time consuming. In the end I could simply give them my hardware wish-list and they OK’ed it.

Here’s the ist of what is in that computer:

  • MSI P67A-G43 2PCI-E16 3PCI-E 2PCI Motherboard
  • 2x ASUS GeForce GT 520 Silent
  • EVGA UV PLUS+ USB to DVI-I/VGA Adapter USB2.0
  • Hauppauge WinTV HVR-2250 Media Center Kit
  • Hauppauge WinTV HVR-1600
  • Intel Core i5 2400 Quad Core Processor
  • Mushkin Enhanced Silverline Stiletto 8GB

Day 1 – Setting Up the Computer

On my first day of struggle was to get everything just setup, and that already took some time. Years of grad school took really their toll one my flexibility. But I couldn’t help it, I needed to crawl behind our racks to get all the cables to hook them up to the new computer, better not remove the working computers ;).

After about an our of recabling and figuring out how to position the new machine such that all cables can reach it. I was ready for my first run. Most screens worked right of the start. Sadly most, turns out one of our ports doesn’t seem to work properly. *sigh* That means when I’m done I need to contact our contractor that setup the AV-routing system.

Day 2 – Getting Video Input From the System

The second day was meant to finish the software setup but as it turns out that was nothing more than wishful thinking. It took me a good two ours to figure out how to get the video capture cards to actually receive input. With the doubts in a properly working system it took me some time to actually test things. In the end it turns out that I needed to reinstall the drivers.

Then I moved on to get the video capture cards to work with Skype, but after another two hours trying to receive a signal, I called it a day. I wanted to at least install Access Grid to have one easy win but sadly their site was down.

Day 3 – Getting Skype and Access Grid running

Installing both Skype and Access Grid (after their web page came back online again) was fairly easy. The challenge as usual is getting those programs to run with our hardware. I first started with Skype, I figured it might be easier since it only needs to work with one camera input instead of the input from both capture cards.

To my pleasant surprise, audio out an in was working with Skype right from the start. Sadly I promptly ran into issues with the video capture cards. It turns out that Skype only taps into the standard input channel for a capture card, which is the TV tuner. In the end I ended up buying DVdriver to control and actually split the video signal. DVdriver simulates a video camera and can be used as the input for other programs. The advantage is that DVdriver let’s you configure the video input and therefore select the input channel. But the bottomline is, Skype and as a corollary Google Video Chat and Hangout work as well.

Access Grid is more complicated and had a bad start off. The Access Grid software has problems under Windows 7, luckily that iwas easily resolved (look here). As with Skype audio wasn’t an issue but video was a real challenge. After much work with configuring the video (in Access Grid you can easily select the capture cards input). But it took me a while to realize that one video caputre card captures HD, which needs to be configured differently. Also, it turns out that the other capture card can handle two video inputs, the problem is just that the software always defaults using the first video input whenever the program is restarted.

Well, that was all I got done for the day, good thing that the video “conferencing” tools work, it’s time to replace the computers in the rack with the new computer.

Day 4 – Putting it all into the Rack

Before I could actually put the new computer in the rack all the stuff that shouldn’t be in there should go out. That means I needed to remove, two computers (the old one for driving the 5 “screens” and the old computer for running Access Grid), one UVS, an old VCR (yes that’s how old the lab is), and some other unused equipment. Oh, I shouldn’t forget all the cables that I removed from there. What a mess.

Next was placing the computer in the rack and attaching all the cables, three s-video, 5 vga and then the regular usb cables for input devices, such as mouse, keyboard, and three Smart boards. While at it German from calcifer helped me to actually lie the cables such we can close the rack (yeah one side is open to get all the cables into the rack). After much effort and unknotting cables we finally managed to neatly organize the cables and close the rack for the first time in 5 years.

After a last test, the media system in the lab is finally updated and ready to use.

Day 5 – Lab Clean Up

Last but not least, I need to clean up, I don’t want to give my supervisor a heart attack when she comes back from Europe. Nothing really interesting happened during the clean up, it just took a whole day to sort all cables and rearrange all the small stuff that was on and in the rack.

In the end, we much old equipment (among them the two old computers)

Using GIT as SCM with IBM Rational Team Concert

28/12/2011
tags: , , ,
For a student course that started fully using IBM Rational Team Concert, but since we are working on extending an open source project (AgilEfant) we were thinking of moving the source code back to a more public accessible SCM namely GIT hosted on GitHub. Yet we still want to use RTC as development and planning environment.

There is a technical document available on jazz.net that describes with some pretty good examples on how to write a git hook to add a link to a work item that points to the change.

I modified the scripts to make them a bit easier to adjust to your own setting. Although that means that instead of two files there are five and currently they won’t work under Windows. The three shell scripts contain everything that needs to be configured, from the Perl binaries (you will need to install the WWW::CURL library), your git binary location, and the location of the other scripts. Everything else is configured in the rtc.sh script. Here is a zip file containing all the files: link. Just copy those files into your .git/hooks/ folder of the code base you want to use with jazz.

Since we need o bring in another 15 or so students into the course working on AgilEfant and those 15 students will have various different setup with respect to their OS and OS configuration, we were looking for another solution. The one we came up with is: GitHub allows to add remote hooks. You can configure GitHub by adding a remote hook. We wrote a small php script that starts a perl script linking the commit to a work item. Of course as described in the technical document depending on the commit comment. The nice thing is that now the students only need to add the one link to the hook and don’t worry about configuring or even installing additional programs. You can download the remote GitHub hooks here.

If you have any questions about the scripts please let me know by either leaving a comment or writing me at adrian.schroeter@googlemail.com.

Update: added the files to a github repository https://github.com/schadr/Git-Hooks-Collection.

Book: The 48 Laws of Power

21/12/2011

The 48 Laws of Power

In The 48 Laws of Power (associate link) by Robert Greene is distilling events and recollections from history into 48 laws that are meant to give you more power. Power, or the ability to make others do as you please to further your own agenda, follows 48 rules. I won’t reiterate all rules but let me give you my two favorites:

  • Law 9: Win through your actions, never through argument
  • Law 13: When asking for help, appeal to people’s self-interest, never to their mercy or gratitude

I personally like Law number 9, because I often find myself not only not convincing people through arguing my position, but the time and effort I sometimes spend convincing or discussing things is far less than it would have cost just to do it and thus leaving no doubt.

Law number 13 is just so true, especially with people that you do not know well. After all time is the most precious resource we have, so we should spend it wisely. And even when dealing with friends it never hurts pointing out how they can profit from helping you out. (never mess with karma ;))

But after digging through this 400 pager, I found that there was one law to rule them all missing. Law 0: Think, Think ahead, Think farther ahead, is it really as you Think, GO. All laws come back to the basic tenancy to think before you act.

Tell me, are there any rules, law, or patterns that you observed that bring you ahead?.

Get a glimpse at the Future of Collaborative Software Engineering with the SEGaL Group

14/12/2011

Future 1: Embracing distributed work: Distance shall matter less

by Arber Borici, Adrian Schroeter, Daniela Damian (full paper as pdf)

We speculate that, in 5–10 years and subsequently, distance in collaborative software development shall matter even less. We conclude that, notwithstanding failed economic promises or unfulfilled opportunities of distributed software development, the benefits of distributed work, such as collective intelligence, more structured discourse organization and cross-functional team self-organization, will become more apparent and enable software teams to more likely embrace distributed work rather than fear it. We describe these sought benefits of distributed software development and a simple model to illustrate how they in fact may overcome the benefits of collocated development.

Future 2:More proximity and a stable infrastructure: the future of collaboration in software development

by Jorge Aranda, Germán Póo-Caamaño, Adrian Schroeter, and Daniela Damian (full paper as pdf)

Software development will not change fundamentally over the course of the next decade. The tools and practices that will be in common use in the near future already exist, but are still in the process of being adopted across the industry. We make two predictions: (1) Software development will trend back towards a more collocated setting, due to a disenchantment with misapplied remote collaboration endeavours, and (2) cutting-edge collaboration tools that do not integrate with the increasingly stable technical and cultural infrastructure of software development will continue to be ignored by practitioners, since this infrastructure will not change swiftly nor easily to accommodate them.

Future 3: Integrated Development Environments Lead to Departmental Borders Breakdown

by Adrian Schroeter, Arber Borici, and Daniela Damian (full paper as pdf)

Organizations are spending effort and money on upgrading their development infrastructures such that their tool suites better integrate with each other. This new level of integration, which pushes beyond the level of coding activities and the management of such activities, is rapidly increasing across the industry. Once this integration encompasses the product development as a whole, including coding, marketing, design, and testing, we will experience a breakdown of department boundaries within organizations that mainly exists because of environments specific to each department. In consequence, teams in organizations will organize more naturally and enable easy collaboration across “departments”.

All three papers have been accepted at the workshop The Future of Collaborative Software Development at CSCW ’12 in Seattle. The links point to the pre camera-ready versions of the papers, hadn’t had time to make them ready yet.

How do you thing the future of collaborative software engineering will look like?