Thursday, December 15, 2011

How To Configure Rules

Is there a little too much shame in your office? Distracting alert dialogs? Blaring sirens bothering co-workers?

Configuring Rules

The fastest way to change the default settings across all projects is to right click anywhere in the white space and navigate the menu:

Following the screenshot above and clicking on "1 Second" will toggle the setting, thus disabling the chirp-on-check-in feature.

Configuring Per Build or Per Person

If you want to configure settings for only a specific project, or an individual on a specific project, you can click on the project and navigate the menu the same way:

Following the screenshot above will decrease the amount of time that the lights flash whenever "Lee" breaks the build for the first time on "Project 1" (perhaps as build manager he breaks it frequently).

Fine Tuning

Finally if you want more control of the rules you can check the "Configure Rules" button on the main page. This will take you to the Configure Rules screen where you can double click on a rule to edit and fine tune your settings:


Shaming build breakers doesn't have to annoy co-workers. Hopefully now you are able to accomplish one without the other ... or more effectively accomplish both.

Sunday, December 4, 2011

Released 1.2.0

Summary of New Features
  • Maintains build history
  • Tracks user reputation
  • Graphs recent build durations
  • Simple per-project statistics
  • Turn off or reset reputation from settings menu
Bug fixes

  • Exception on adding Jenkins Jobs when Brackets "()" are part of the name (#2)
New Feature: Maintains build history

The software now maintains a history of check-ins for reporting purposes. At present it will miss anything that occurs when it's not running. In other words if you go on vacation for a week your stats will be different than your co-workers. We're working on a fix for this, but let us know if you think this is a big deal or not.

New Feature: Reputation

The goal of reputation is to add an element of good-natured competition and fun to your project while simultaneously trying to decrease the amount of time wasted resolving source control conflicts, fixing broken builds, and/or waiting on broken builds.

The idea is each person receives one point for each check-in, and loses four points for each broken build. This should do two things:

1. Encourage smaller more frequent check-ins, which will minimize check-in conflicts between team-members; and
2. Encourage team-members to run tests prior to check-in to decrease chances of breaking the build.

We intend to add more sophistication to the algorithm in a future release (e.g. incorporate code-coverage), but we would love to hear any feedback on what we have now.

If you really don't like the idea of reputation you can turn it off in settings.

New Feature: Build History

The chart on the right shows build durations for the last eight builds. A blue bar indicates a successful build. A red bar indicates a failed build. The Y axis shows duration in minutes. The X axis goes from oldest to newest. Click on a build on the left to show the chart on the right, click off a chart to go back to the user/reputation view (unless you've turned it off).


We're proud of the latest updates and we hope you'll like them. Please don't hesitate to give us feedback on twitter @SirenOfShame or via e-mail: "support" at our domain name.

Tuesday, November 29, 2011

Released 1.1.4

If you auto-updated the software within the last 12 hours and are receiving an error about a method missing in UsbLib.dll it is because we failed to update one of the dll's in the auto-update package. The msi installer was not affected by this omission. If you are in this state now will need to uninstall and reinstall the latest version.

To fix this we have released another update: 1.1.4. The primary reason was to fix our deployment mistake, but we fit in one small bug fix as well:
  • Team Foundation Services now supports the PartiallySucceeded status
We have fixed our deployment process so this should not happen again. Sorry for any inconvenience.

Monday, November 28, 2011

Released 1.1.3 of the Software

Bug Fixes
  • Hudson supported neither the "Unknown" nor any new/unexpected build statuses (130)
  • Hudson, Team City, Bamboo, and Cruise Control don't always fail nicely when the network is down (132)
  • Bamboo and Cruise Control weren't deployed in the 1.1.2 msi setup file (133)
  • SOS should display a disconnected message rather than error while Hudson is initializing (131)
  • Windows 8 bluetooth attach/detach caused errors (127)
  • Notify text on minimize/close was annoying (129)

Monday, September 12, 2011

Introduction to the Siren of Shame Device API

So you don't want to monitor a build but still want to use that cool device you picked up from This post will get you started.

First step is downloading the DLLs from github. If you want examples and the latest code I would recommend grabbing the code via Git from here. Don't have Git and want to look at a simple example go here (this example is pretty much what is covered in this blog post).

OK, lets write some code. Start by creating a new WinForm project (it must be .NET 4 non-client profile) and open up the code behind.

We're going to need access to the device. This is where the class SirenOfShameDevice comes it. SirenOfShameDevice wraps all the functionality of the device in one nice clean wrapper. ISirenOfShameDevice is just an interface allowing you to mock out the device for unit testing which I know all of you are doing, Right? So lets create one. Add the following to your form.
private readonly ISirenOfShameDevice _sirenOfShameDevice
   = new SirenOfShameDevice();

Next we're going to need to know when the device gets plugged in so we can do something cool with it. Windows will send messages to all the open windows on the system when a USB device is plugged in. Well we are going to take advantage of that and listen for those events. Good thing for you SirenOfShameDevice takes care of most of that for you but it does need a little help and that's where this code comes in. Add this to your form.
protected override void WndProc(ref Message m) {
   if (_sirenOfShameDevice != null) {
      _sirenOfShameDevice.WndProc(ref m);
   base.WndProc(ref m);

Great, but how do we know when it connects. Well we need to hook up some events to, you guessed it, the SirenOfShameDevice class. Add the following lines to your form.
_sirenOfShameDevice.Connected += SirenOfShameDeviceConnected;
_sirenOfShameDevice.Disconnected += SirenOfShameDeviceDisconnected;

void SirenOfShameDeviceConnected(object sender, EventArgs e) {
   // do something fun, enable some buttons.

void SirenOfShameDeviceDisconnected(object sender, EventArgs e) {
   // do something fun, disable some buttons.

This tutorial sucks, I'm running the program and I still don't hear the siren going off.

Hold on you're almost done I promise. You need to add a button to make it go. Add the following code to the button's click event.
   new TimeSpan(0, 0, 0, 10));
   new TimeSpan(0, 0, 0, 10));

This will play the first audio pattern and the first LED pattern on the device for 10 seconds.

Want to know what other audio patterns are on the device or what cool light patterns you can annoy your friends with, check out the SimpleSirenOfShameDeviceExample on how to do it. Or, wait for the next tutorial blog post which may come out never (I'm lazy what can I say).

Now go forth and create the next cool Siren of Shame application. If it's cool we'll put it on our site and promote it for you.

Released 1.1.1 of the Software

New Features
  • CruiseControl.Net Support
Bug Fixes
  • Hitting refresh in Team City after connecting times out (119)
  • When a user edits a server configuration it resets the server type (118)
  • As a bamboo user I would like the comments from a build (117)
  • You can click Add server with no configuration selected (116)
  • Need an edit button on server list (115)
  • Don't store blank usernames (110)

Friday, August 26, 2011

Released 1.1.0

We just released Siren of Shame 1.1.0 to our Google Code site.

New Features

  • Hudson and Jenkins Support

  • Bamboo Support

  • Connect to multiple build servers simultaneously

  • Supports firmware upgrades

Bugs Fixed

  • HidD_SetOutputReport error sometimes when inserting device

  • Some passwords caused "Invalid Base64" error
  • Sunday, August 14, 2011

    Siren of Shame Website

    We officially published our website today. The url is:


    Since we are not officially selling build monitor sirens yet you may pre-order sirens from The fun part is if you provide a twitter account upon pre-order we will have @sirenofshame automatically follow you and mention you. We also list everyone that's pre-ordered as "favorite people" on the left side (unless you check the anonymous check-box). Hopefully we can create a community of people around our fun product.

    Open Source Software

    As you may know the build monitor portion of siren of shame is open source. If you wish to contribute or heckle the code is at:


    We also published our forums today. It's free to create an account. The phpbb site isn't branded yet, but if you have any issues or questions feel free to post at: