Posted by & filed under Developer Blog.

Whether you are using the old UsabilityInitiative extension, or the new split out Vector enhancements, you may have noticed an issue where the Collapsible Navigation functionality causes the first nav item in your list to remain open when the page loads. It doesn’t behave like the rest of the nav items that will remain in their closed or open state when you move to another page in your wiki. It simply remains open no matter what. If you wish to solve this little bug, you can replace line 3 of Vector.combined.min.js with the following:

$j('#mw-panel').addClass('collapsible-nav');
$j('#mw-panel > div.portal').each(function(){if($j.cookie('vector-nav-'+$j(this).attr('id'))=='true'){$j(this).addClass('expanded').find('div.body').show();}else{$j(this).addClass('collapsed');}});
$j('#mw-panel > div.portal > h5').click(function(){$j.cookie('vector-nav-'+$j(this).parent().attr('id'),$j(this).parent().is('.collapsed'));
$j(this).parent().toggleClass('expanded').toggleClass('collapsed').find('div.body').slideToggle('fast');return false;});});
$j(document).ready(function(){if(!wgVectorEnabledModules.collapsibletabs){return true;}

Posted by & filed under Developer Blog.

If you’ve ever tracked your time in Basecamp, and you are forgetful like me, you know that sometimes it’s a pain to go check how much time you’ve already tracked. When you forget to check your time as you go, you end up going back and fill in the blanks. The process involves a few too many clicks, and not any way to really create a shortcut. First, you need to click the Time tab, which shows everyone in your group’s time and it orders by company, not by date or project. Cool, if you are a manager after an overview. Not cool, if you are a worker-bee trying to see your own time for the day. So, next, you click Create a Report in the upper right corner, click a bunch of options to select yourself and get the start and end date the same, then click the Create report button. WALAH! A usable report. But the URL contains all of the data for the day you bookmarked it. If you bookmark it, you are stuck changing the URL in 2 different places to update the date to today, which is almost as time consuming as just running the report again.

So, I came up with this tiny bookmarklet that I find extremely useful. So I decided to share.

Before you start using it, you need to find your Basecamp ID. When you first run the report I mentioned above, your ID is the 7 digits that appear in the URL after subject_id=. Once you have that, you need to tweak the bookmarklet to contain that ID, otherwise it won’t work. That being said, you can technically create more bookmarklets for everyone/anyone in your company using their ID. If that tickles your fancy.

[added 1/20/2010] You also need to tweak the bookmarklet to contain your domain. Replace “yourdomain” in the url with yours.

So, you have 2 options.

1) Copy this code, create a New Bookmark using your favorite browser, paste it in and edit the ID where it says “YourID,” edit the domain where it says “yourdomain” and then save it:

javascript:void(cd=new%20Date());if(cd){location.href=%22https://<em><strong>yourdomain</strong></em>.basecamphq.com/time_entries/report?subject_id=<em><strong>YourID</strong></em>&from=%22+cd;}

— or —

2) Drag this link to your bookmarks, then edit the bookmark to contain the ID in place of “YourID” and your domain in place of “yourdomain”:

Today’s Time

I hope this helps someone else. Comment below and let me know if you end up using it.

Posted by & filed under Developer Blog.

If you are looking for a command line way to remove all .svn folders in a directory tree, the correct answer here is: Don’t.

As it turns out, all you need to do is run an SVN Export command and that will create a clean directory tree for you, hastle free. Here’s an example

$ svn export svnProject myExportWithoutSnvFiles

Then you can just ignore or remove the svn directory tree and keep the new one.

Posted by & filed under Developer Blog.

Sometimes we have to use someone else’s CMS to get our content live. That’s what I ran into today. The genius that set up this suctom CMS, decided it wasn’t a good idea to allow the user to have access to the HTML editor that comes with TinyMCE, so at first I thought my ability to add classes, and custom code was impossible.

It actually is possible with the Firebug plugin for Firefox. As you may already know, Firebug allows you to edit HTML and CSS “live” on the page. I put “live” in quotes, because while the changes automatically appear, they won’t be stored to the server.

Actually, that’s not necessarily true either. Using Firebug to edit the HTML within a TinyMCE window, you can then click save in the TinyMCE toolbar and it will actually save, to the server, the HTML that currently exists in that window, including those changes you made using Firebug. An excellent hack that saved me a lot of headache because of someone elses poor implementation. My guess is that it works on other tools similar to TinyMCE. Let me know if you get it working using other CMS tools.

Posted by & filed under Developer Blog.

We all know that Mark Shurtleff has no clue how to use Twitter. In fact, he mistakenly announced his Senate Candidacy via twitter when he thought he was sending a text message to news reporter Ben Winslow. But that was like, a whole year ago, right? Mr. Shrutleff has certainly become more aware of how to use Twitter and now knows that whatever he tweets his more than 7k followers will read, right?

You would think. But recently Shrutleff has been spewing out more nonsense thinking he was responding to who knows who on twitter. I thought it was pretty funny when I saw it and I promptly retweeted his nonsense. Then I called him out on it in a reply via twitter. (In the interest of full disclosure: I did so privately to Mark, but later reposted to the public timeline so that everyone could see. The original was posted immediately after my retweets, the repost was a few hours later. I’ll explain more about that decision below). It was about this same time that he tried to cover up his mistakes by posting this hilarious cover up.

This is where the fun began. The Attorney General for the entire state of Utah then took it upon himself to start making fun of me via Direct Message on Twitter and calling me names. That’s about the time I decided to delete the original reply and repost it to the public timeline for all to see (mentioned above).

I was laughing about the incident all night. Especially the fact that he was still trying to convince anyone that he leaked his Senate hopes on purpose. In fact, I later posted how funny I thought it was that he was wasting his time arguing with me.

Now, in spite of getting a kick out of the whole thing, I will admit I was a bit nervous. How would you feel if the Attorney General threatened you with a big fat “stay tuned” and that was the last you heard from him? It turns out he did retaliate. Although it took me a good long while to figure it out (sneaky guy!). He actually BLOCKED me on Twitter. Wha…..NO! Anything but that. Now I have to actually VISIT your profile to see your tweets instead of getting them in my timeline. What a shambles.

I guess Shurtleff didn’t remember about the time he added me to his list of Utahns on Twitter. Whatever I post publicly on Twitter ends up on that list’s timeline.

click to enlarge

So, yes it is true that I only have around 150 followers currently. But I wonder how many people look at that list? I wonder how many people will read this blog post? More importantly, I wonder what else Mark Shurtleff is covering up on a daily basis. He obviously won’t admit his own mistakes made on something as trivial as Twitter.

I only have two words of advice in case the Attorney General ends up here and reads this.

  1. You would really benefit from taking the advice found on this website:
    How To Use Twitter For Marketing And PR
  2. Next time you want to pick on some “twit” who doesn’t matter much, maybe you should pick on this guy.