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

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.
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.
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.
Install Old Versions of Ports Using MacPorts
MacPorts is my preferred way of installing, managing, and upgrading much of the software I have on my Mac.
I’m setting up a new work machine today and I need to install ruby 1.8.5 on my machine for Rails to be happy.
Unfortunately, you can’t do something simple like specifying the version of the port you want to install unless it’s in a local repository.
Fortunately, my friend Stephen Chu had this problem about a year ago and has a nice procedure on how to do it. I’m going to update it for MacPorts and ruby 1.8.5 here.
1) Find out the svn revision number of the Portfile that has 1.8.5 by looking at:
http://trac.macosforge.org/projects/macports/log/trunk/dports/lang/ruby/Portfile
In my case it is 21127.
2) Set up a local port repository. In the file /opt/local/etc/macports/sources.conf, add this line before the rsync line:
file:///Users/Shared/dports and create that directory.
3) Install the port into your local repository.
4) Run portindex so that ports now finds your new (old) version of ruby.
5) Now you should be able to see ruby @1.8.5-p12 in addition to @1.8.6 by running:
6) Install Ruby
You should be up and running now, so to check, run:
You will see something like this:
Now, if you want versions of ruby that MacPorts doesn’t have (later patchlevels for instance), you can modify the portfiles by hand, but I’ll leave that for another post.
Install Old Versions of Ruby Gems
I am setting up a new machine that has some old software requirements for my project this week. A quick tip if you need gems to be installed at an older version (if they are still available).
Use the -v version flag to specify which version you want.
If you’ve got the newer versions of the capistrano gem, no need to fret. You can specify the version you want to use on the command line like this:
You can alias that to something else in your bash profile by adding something like this:
Executive Tech Summaries
Is anyone out there interested in some one page tech summaries? I had several occasions where they would have been useful this week and I am ready to write some if they don’t already exist.
They would have basic terminology and usage info as well as pros and cons for an organization.
Comment with what tech you would like covered in the comments.











