Mingle Tip: Modify Mingle’s Look and Feel

This will probably only be interesting to a few people, but I’m putting it out there anyway. I’ve gotten tired of the orange header and yellow background in input fields in Mingle and decided to make a quick user stylesheet for use with “Stylish”:http://userstyles.org/stylish/.

Here’s the code you’ll need to make the header look like what you want and get rid of the yellow behind the input boxes when you are working on them. You can either paste this directly into Stylish as a new style or you can use the CSS rules in your own way. Just change the “my.mingle.installation.com” to the URL where you installed Mingle.

@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document domain("my.mingle.installation.com") {
  /* Header Styles */
  #hd, #hd-bottom, #hd-nav li.menu-item, #hd-nav li.menu-item a.first-link {background: #000 !important;}
  #hd-nav li.current-menu-item, #hd-nav li.current-menu-item a.first-link {background: #FFF !important;}

  /* Input Boxes */
  input:focus, textarea:focus {background-color:#FFF !important;}

I may create a Firefox extension that will integrate more features like this for people if there is interest.

Mingle Tip: Longer Session Timeouts

Have you ever been editing a card in Mingle and you lose your data because the session timed out? Well, if you are comfortable editing a config file in <mingle directory>/config/web.xml you can make the session timeout much longer. Here is what it looks like by default:


You can change it to be something like this:


That works out to be around 4 days for the timeout, so all you need to do now is restart Mingle on the server and you shouldn’t be bothered by it any more.

Mingle Tip: Keeping Casual Users In The Loop

Mingle History Filter
In some projects, there are sometimes people that want to stay informed of what is happening without having to login to Mingle constantly.

One good example is someone that has to verify that work has been completed by the development team.

Our fictional customer, Sandy, is a busy person and would like a way to keep informed of when she needs to look at the work the development team has done so that she doesn’t get behind. She doesn’t have time to check Mingle all day and lives in email and feed readers all day.

Fortunately for Sandy, Mingle has a simple and powerful solution for her. By simply going to the History tab in Mingle, she can see all of what is going on in real time. But wait, there is too much information that Sandy doesn’t need to look at. Sandy needs to take a few steps to give her just what she needs with all of the steps highlighted in the image on the right.

# Sandy only wants to know what she needs to act on. She doesn’t care about updates to pages or code checkins. So clicking on the cards checkbox limits her search just to cards that are changing.
# This is still too much information, so she further narrows her choices down by selecting only to look at stories because she doesn’t need to know about defects.
# Her final choice is to select that the card changed to a story status of “In Customer Review” because that’s where she knows she’ll need to take some action and look at the work her team is doing.
# Sandy can then choose how she wants to stay informed via feed or email.

Mingle now keeps Sandy up to date on what she needs to review. She’s happy because she can keep up to date even while she’s out of the office.

Mingle Tip: Add Quick Links to Mingle

I’ve been using Mingle a lot lately, so I’ll be posting some quick tips that I’ve found useful in my projects.

Did you know that you can add a set of quick links in the header of your project?

Mingle’s help pages show how it’s done, but oddly, the help page seems to be hard to navigate to unless you know what you are looking for. It’s under Content > Customizing Projects > Project Environment and Navigation > Setting Up Quick Header Links.

First, you’ll need to create a wiki page called Special:HeaderActions. That’s where you’ll store all of your links. Once you do that, you can enter in links like this:

<a href=”/projects/{{project}}/wiki/Project_Metrics” accesskey=”m”>Project Metrics</a>|

<a href=”/projects/{{project}}/cards/new?properties[status]=new&properties[type]=defect” accesskey=”b”>+Defect</a>

<a href=”/projects/{{project}}/cards/new?properties[status]=new&properties[type]=story” accesskey=”s”>+Story</a>

Save the wiki page with these new links and you’ll see new navigation links for your project that look something like this.

With the access keys we’ve put on the links, you can even use keyboard shortcuts to these new links.

Finally, I’d like to mention that currently Mingle is free for 5 users or less and that academic, open source, and non-profit projects can get a license to use it for larger teams for free too. Contact me directly or talk to the ThoughtWorks Studios team to get set up. We’ve even got people that will help you configure it to your team’s needs.

Smile and Dial – The World Can Hear Your Smile

Science Daily is reporting today on new research from scientists at the University of Portsmouth says that says smiling affects how we speak, to the point that listeners can identify the type of smile based on sound alone. Here is the abstract for the paper:

The present study investigated the vocal communication of naturally occurring smiles. Verbal variation was controlled in the speech of 8 speakers by asking them to repeat the same sentence in response to a set sequence of 17 questions, intended to provoke reactions such as amusement, mild embarrassment, or just a neutral response. After coding for facial expressions, a sample of 64 utterances was chosen to represent Duchenne smiles, non-Duchenne smiles, suppressed smiles and non-smiles. These audio clips were used to test the discrimination skills of 11 listeners, who had to rely on vocal indicators to identify different types of smiles in speech. The study established that listeners can discriminate different smile types and further indicated that listeners utilize prototypical ideals to discern whether a person is smiling. Some acoustical cues appear to be taken by listeners as strong indicators of a smile, regardless of whether the speaker is actually smiling. Further investigations into listeners’ prototypical ideals of vocal expressivity could prove worthwhile for voice synthesizing technology endeavoring to make computer-simulations more naturalistic.

This is real science folks. Remember all those times you had to cold call and you heard “smile and dial” from your biz dev manager? Well, it turns out she was right. Your customer sub-consciously heard, not only that you weren’t smiling, but that you were gritting your teeth in anger.

Laws of Power #32

Play to People’s Fantasies
The truth is often avoided because it is ugly and unpleasant. Never appeal to truth and reality unless you are prepared for the anger that comes for disenchantment. Life is so harsh and distressing that people who can manufacture romance or conjure up fantasy are like oases in the desert: Everyone flocks to them. There is great power in tapping into the fantasies of the masses.

Parallels/Cisco VPN/Verizon EVDO Problem and Solution

I recently got a Verizon USB720 for my MacBook Pro and installed the software that Verizon provides. I frequently use the Cisco VPN software to connect to my clients’ networks to do work and I also use Parallels to test software on Windows.

There’s a little known (as far as I can tell) interaction between the three, where the Cisco VPN won’t allow you to connect anywhere and if it does, only for a few seconds. To get this feature back, all you have to do is disable the network ports that Parallels creates for NAT networking when you’re connecting to the Verizon card.

Go to System Preferences > Network > Network Port Configurations and uncheck the boxes that say Parallels like the image below.

Once you do that, you’ll be able to connect to the VPN just fine.

AntiSamy – HTML In Web Apps

A big problem right now in web application development is allowing users to add in HTML and then protecting them from malicious javascript. Fortunately, someone is working on this problem and giving the rest of us the results for free.

The “AntiSamy”:http://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project library is named after the samy “worm” that hit MySpace and infected many thousands of pages before it was contained.

The page mentions that there is very little interest from the Rails community on this. I know there are plugins like the “whitelist plugin”:http://agilewebdevelopment.com/plugins/whitelist, but AntiSamy looks at least to be a nice compliment to something like whitelist.

Old Software Never Really Dies

I just got a support request from someone today for a web application that I helped to write in college. It was my first Rails project and it was made as a senior class project. We had a client who was a professor from another department. We had to write our own version of backgrounDRb, used an early version of Rails, and wrote Flash as the front-end to an annotating engine for documents.

It was a great success for us using Rails and Ruby for the first time. We easily exceeded all expectations set in the beginning of the 10 week class. We had demo screencasts, a professional looking site, a great code/test ratio (first time ever for me), and a very happy customer. Some departments in our school were seriously considering using it for their document collaboration needs, and apparently, the software found its way around the world entirely by word of mouth.

I haven’t touched the code in several years and the machine that housed the subversion repo is long gone. It got me thinking about how software never really dies. I had no idea these people were using it to this day, but it still lives out there. I don’t even have the original site up anymore, so there’s no place to download the code.

It’s sort of cool and strange knowing that something that I wrote as a class project is being used by people to actually get work done. Maybe I’ll pick it back up and polish off the old code and breathe some new life into it someday. It’s just weird to think of a Flash/Rails app I wrote a few years ago as “old.” There’s going to be more of that in the future and it’s a refreshing reminder that everything old is new again and software never truly dies.

ScreenGrab! For Firefox

I just stumbled onto this little gem the other day while looking to roll my own solution to a problem.


It takes screenshots of an *entire* webpage like Paparazzi!, but in Firefox. It can save directly to a file or straight to the clipboard. It’s a helpful tool in testing and analysis work and is another tool I use every day. Check it out, you won’t be disappointed.