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.
cd /Users/Shared/dports && svn co –revision 21127 http://svn.macports.org/repository/macports/trunk/dports/lang/ruby/ lang/ruby/

4) Run portindex so that ports now finds your new (old) version of ruby.
portindex /Users/Shared/dports

5) Now you should be able to see ruby @1.8.5-p12 in addition to @1.8.6 by running:
port list

6) Install Ruby
sudo port install ruby @1.8.5-p12

You should be up and running now, so to check, run:
ruby -v

You will see something like this:
ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-darwin8.10.1]

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.
sudo gem install capistrano -v 1.4.1

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:
cap _1.4.1_ deploy

You can alias that to something else in your bash profile by adding something like this:
alias cap1=’cap _1.4.1_’

Laws of Power #31

This law is something that I have been burned by in the past, but can be turned into something good. I think the only real defense against someone with malicious intent is to remember something that a teacher told me some time ago: Consider the source. More after the jump.

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.

Books For Business Analysts

I was involved in a discussion recently about books that were good for Business Analysts. Here’s a list to get people started.

The Inmates Are Running The Asylum by Alan Cooper

About Face 3: The Essentials of Interaction Design by Alan Cooper

Don’t Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition by Steve Krug

Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans

The Visual Display of Quantitative Information, 2nd edition by Edward R Tufte

Writing Effective Use Cases by Alistair Cockburn

Patterns for Effective Use Cases by Alistair Cockburn & Others

The Responsibility Virus by Roger Martin

You’ll notice that most of these are design books. As an analyst, it’s often the case that you are going to have to look at an old business process or application interface and design something new. It helps to know the limits of the technologies you are working in, but it is better to get a general understanding of design principles in general so that you’ll never be caught off guard.

Note: All Amazon link proceeds go to charity. If this turns out to be popular, I’ll write up some more book lists my colleagues and I think are good to have on your bookshelf as an Analyst, Dev, QA, PM and consulting in general.

A Lesson In Getting Organized

Someone I know recently took over a housing community board by getting organized against the old board and running an effective campaign. The strategies used to do this can apply in many areas of life. Here’s how they told me they did it.

*Know What You Want To Accomplish*
The old board was being run by 5 residents of the community and they had contracted with a management company that wasn’t doing an effective job. On top of ineffective management, the board was illegally charging landlords an extra fee for being non-residents. This was strike one for this person and was the whole reason that a group of people decided that the board needed to be replaced. This single goal united 3 people to run for the board.

*Make Sure You Are In The Right*
In cases of legal judgement, it is best to get a lawyer’s advice. The more specific the lawyer’s experience, the better. In this case, one of the landlords was a lawyer and confirmed that the fees were illegal and even sent letters to the board requesting that they discontinue the fee and refund the landlords in the form of a credit on their association dues. When the board ignored the letters, this was further cause for action. Strike two.

*Plan Your Campaign*
Now that there was no choice but to take over the board to effect change, the leader of the 3 did some research on past elections to the board and found that the largest vote count for any one member was around 90 votes. Each resident gets 5 votes, so each of the 3 needed to get around 20 people to vote for them and they would pretty much be guaranteed a seat on the board.

*Know Your Audience*
The people that were being affected by the extra fee were non-residents, so the 3 needed a strategy to communicate with them and explain what needed to be done. The 3 printed up fliers about the problem and mailed them to all of the landlords of the units in the community. They also went around to each of the units and knocked on doors telling people about the problem and to come and vote on the day of the election.

*Stand Your Ground*
On the night of the election, the ballot box was filled with a large percentage of the votes going to the 3 wanting to take over the board. The old board members had set a deadline of 6pm for all of the ballots to be in. They decided to change their minds and open the ballots to anyone who was at the meeting. The old board members went around the community and asked people to vote on the issue. This nearly doubled the amount of votes cast in the election. The 3 were still confident that they would be able to get a majority on the board. Strike three for the old board.

*Move Quickly*
Once all of the ballots were counted, the results were read and the winners announced. The 3 were on the top of the vote count and each got a seat. One of the old board members and a newcomer got the other two seats. Immediately, the management company, seeing the writing on the wall, resigned. The new board members immediately put the extra fees to a vote and the fees were immediately reversed and all past payments were credited back on the association fees.

*Plan Ahead*
Knowing that they would win, the leader of the 3 had already gotten bids several weeks before from several management companies to replace the one that had just left. In my state, you’re required to have a new management company within 30 days. Having these bids in place would speed up the process and allow the board more decision time to choose the best management company.

*Don’t Burn Bridges*
The 2 board members left on the board were upset that they no longer had a majority and couldn’t make decisions the way that they wanted anymore. Being gracious, the 3 board members included them in the process of managing the community, but made it clear that any illegal activity would not be tolerated and that they would need to decide on issues as a board. The 3 knew that it was important not to alienate the community and make sure to listen to their concerns and manage fairly.

*Recap*
So the lessons I took away from this are that in order to get something done, you need to have a clear goal, a flexible plan for getting there, research to back up your claims, and organization to pull it all together. Once you’ve gotten what you want, it’s important to make sure that you make good on your stated goals quickly and work with the former group to keep things running smoothly in the future.

On Agile And Backend Integration Projects

Another consultant recently told me that she doesn’t believe Agile works for backend-type projects. She said that Agile just introduces too much change and she can’t keep up with the process. She also mentioned that there were studies emerging that said as much, but when pressed, she couldn’t find any.

Now, I’m all for Agile taking criticism. It’s about People over Process, so if there’s some process hurting people in that equation, then it needs to be examined and possibly fixed. I also believe that building working code iteratively is vastly better than talking about it for months and then sitting down to write code.

Our client, like all clients, likes to change their mind about what features they want in the application we are building. This other consultant and I are on two different teams within the project and she’s doing legacy integration work and we’re doing essentially greenfield development that will have to hook into her systems. As our client changes their mind, it’s pretty easy for us to keep up while she struggles to make changes to database models, ETL processes, and other bits of code in her work.

Thinking about what’s going on, I think I’ve come to the reason why it’s hard for her to change and easy for us. We’re using tools and processes that allow us to change rapidly. Her tools are hindering her from making rapid and iterative change and her processes might be too rigid.

Notice that I’m not telling what tools each of us is using. I don’t want to get into a debate about what tool is better, only the type of tool that allows people to be empowered to change at a moment’s notice and then change their minds back again. My hypothesis is that her tools are hindering her from keeping up with our clients. She’s certainly capable of doing the work, but I feel like processes that her tools make her go through are getting in her way.

What advice can I give to someone in that position? I’ve mentioned stronger scope control to her, greater communication between our teams, and getting another analyst to help with the workload of deciphering the legacy systems she has to integrate with. These are all people processes because I’ve seen other consultants use the same tools in my Agile projects and fit in with the process relatively comfortably.

Agile may not work for all types of projects, but I believe it can work here. It may just be that we need better tools.

Marc Andreessen on Innovation

I’ve been reading Marc Andreessen since I heard about his blog from Fred Wilson. There was a great post about retaining good people a few weeks ago that has stuck in my mind ever since.

Things not to do when trying to retain great people:

Now we’re getting into personal opinion, but for what it’s worth…

Don’t create a new group or organization within your company whose job is “innovation”. This takes various forms, but it happens reasonably often when a big company gets into product trouble, and it’s hugely damaging.

Here’s why:

First, you send the terrible message to the rest of the organization that they’re not supposed to innovate.

Second, you send the terrible message to the rest of the organization that you think they’re the B team.

That’s a one-two punch that will seriously screw things up.

Instead, focus on boosting the innovation culture of the entire company.

There are a ton of other tips in there, some of which we used to tell our client companies at NeoTactix. It’s always nice to be reminded of great advice, particularly about what to do with great people that want to make the move to a startup.

iPhone Service Pricing And A Great Opportunity

at&t just announced the pricing for the iPhone plans.

The pricing is inflated from the normal plans.

*iPhone Pricing*
| *Price* | *Talk Time* |
|$60/mo | 450 min|
|$80/mo | 900 min|
|$100/mo | 1,350 min|

*Regular Pricing* (Cingular)
| *Price* | *Talk Time* |
|$40/mo | 450 min|
|$60/mo | 900 min|
|$80/mo | 1,350 min|

The regular pricing includes rollover, unlimited nights/weekends, and unlimited mobile-to-mobile minutes. I’m not sure if you get those with the iPhone plan. You do get unlimited data access which normally costs around $20/mo.

And that is the whole point of calling this out. The iPhone plan comes with unlimited data access. So the first company that comes up with a VOIP web app for the iPhone is going to make a killing. I’ll bet it’s already in development.

Less Junk Mail - Now With Less Privacy

I was going through a backlog of feeds today and noticed a number that I could call that would allow me to opt-out of getting credit card junk mail from the big credit bureaus. I thought to myself, “Great, I really hate those things and they go directly to the trash. Let’s see if I can stop it for a while.”

For those outside the US that don’t know, we Americans get a ton of junk mail from a bunch of credit card companies and other companies we could care less about because these credit bureaus keep a mailing list with our names on them and then they sell the list to direct marketers. It’s a great business for them and they can even qualify you as a good lead because they know your credit score. What turns out to be good business for them is really annoying to those of us who have to receive this mail.

So, I call the number and I get a computerized greeting. The nice computerized voice tells me that there are no operators to take my call, but that I can still opt-out. She asks me if my phone number is the one that I’m calling from (I’m assuming they have caller ID, but that can be blocked or I could call from a pay-phone) and I say no. The computer then asks me to say the phone number for the residence I want to opt-out for. I give them the number to my house and the computer starts reading back my home address to ask me if it is correct. _Wait, what?_ A little concerned, I say yes because it was my address. It then proceeds to say my full name and asks me to confirm. I say yes because that’s correct too.

Thankfully, that’s all the information that it decided to give to me without asking for any sort of verification, only a phone number which I could have picked out randomly, or worse yet, given to someone who now wants to find out where I live.

The rest of the call asked me to enter in my social security number and date of birth to confirm that I was who I said I was.

This seems backwards to me. Shouldn’t I have to tell you who I am with some information that I don’t just readily give away? I don’t go around printing my social security number on business cards, but I do print my phone number on business cards. My information is in their systems if they are using what I enter to verify the transaction. Ask me this information first before you disclose my name and home address to anyone I’ve given my phone number to.

Here’s the number for those interested: 1-888-5-OPTOUT

For those who are going to say that this number was fake and that I just got my identity stolen, I used the web browser on my phone and checked this number out before I called. That is also where my feed reader is. The number is listed on the Federal Trade Commission’s website along with a link to a free website where you can enter in your information to opt out. I was going to use the form, but typing in a whole bunch of data using your phone is not ideal with a simple 12 button keypad, so I decided to use the number. The website gets things right. I have to enter in tons of information about myself including my address. The phone number just gives it up willingly.

← Previous PageNext Page →