How to search Thunderbird emails with Spotlight on a MacBookPro (OSX 10.5)

After upgrading from OSX10.4 -> OSX10.5, I was surprised to discover that Spotlight was no longer indexing Thunderbird emails.

I went back and rechecked all the steps in my earlier blog post, thinking maybe some files were lost in the upgrade, but all appeared ok. Using “/usr/bin/mdimport -L" I verified that the importer was present and still running. I even tried "/usr/bin/mdimportmdutil -E" to do a complete new re-index, in case it was somehow corrupted. Still no success.

Re-reading my earlier instructions, this step caught my eye:

  • Move Thunderbird.mdimporter to either “~/Library/Spotlight/” (which I did) or “/Library/Spotlight/” (as suggested in some other posts)

…so as an experiment, I moved the Thunderbird.mdimporter directory from “~/Library/Spotlight/” to “/Library/Spotlight/”, used "/usr/bin/mdimport -L" to verify that it was running in the new location. Immediately, Spotlight was finding matches within my Thunderbird emails.

The only change I did was to move the Thunderbird.mdimporter – could the location of this really be o.s. version specific? Maybe that explains why some people used one location, and some the other?

(If anyone reading this has done these same steps, I’d be very curious what location are you using for Thunderbird.mdimporter, and what version of OSX you are using!)

UPDATE: At first, Spotlight worked fine, but problems arose soon after the original blog post. Spotlight started giving garbage results pointing to unrelated files, showing confusing icons and filenames for matches, and eventually a system crash. I suspect that Spotlight from 10.5 got confused by the existing indexed data of Spotlight from 10.4, but have no data to back that theory.

To get Spotlight working with Thunderbird properly, I did the following:

  • move the Thunderbird.mdimporter directory from “~/Library/Spotlight/” to “/Library/Spotlight/”
  • use "/usr/bin/mdutil -E" to clean out the existing indices.
  • reboot the computer
  • use "/usr/bin/mdutil -E" to clean out the existing indices again. (maybe unneeded but by now I was being paranoid!)
  • used "/usr/bin/mdimport -L" to verify that it was running in the new “/Library/Spotlight” location.
  • wait a few mins, then try searching your email.
  • smile and celebrate with a cup of coffee.

Hope that helps – John. 04dec2008

Branch diagram, including the new FF3.1 project branch

Last Wednesday, we setup the new Firefox3.1 project branch. (Details on the machine-setup work coming in a separate blog post.) Meanwhile, I thought people might find this diagram useful to help understand the repository cloning/branching work that happened.

Note:

  • To keep terminology consistent, last week we created a “project branch”. We’ll be creating “release branches” on this project branch for each milestone.
  • Before we allow checkins to the new mozilla-1.9.1 project branch, we will need to carefully cross-check all the changes landed on mozilla-central since the mozilla-1.9.1 branch was created (The area in the dotted circle) and verify that those changes were also landed on mozilla1.9.1.
  • We want the mozilla-1.9.1 branch to start from FF3.1beta2. To speedup opening the mozilla-1.9.1 branch, we branched early. This means that before we allow checkins to the new mozilla-1.9.1 project branch, we will need to carefully cross-check all the changes that landed on mozilla-central since the mozilla-1.9.1 branch was created (The area in the dotted circle), up to the branch for FF3.1beta2, and verify that those changes were also landed on mozilla1.9.1. Any later FF3.1beta2 respin would require patches to also be landed on mozilla-1.9.1.
  • There’s been discussions recently on whether we’d have a FF3.1b3 or not. I included FF3.1b3 in the diagram so that, if we do decide to do Beta3, people could see where it would be branched from. This is not meant to state or imply that we are doing Beta3! 🙂
  • The diagram above shows logical active-branches-of-code. At the SCM repository level, some of these active-branches-of-code are implemented as in-repo-branches, and some are implemented as separate-cloned-repos. For the sake of clarity, I’ve omitted those details in this post, but would be happy to go into further detail, if anyone is interested.

Hope that helps?

tc
John.

UPDATE#1: added extra text in 2nd bullet point, describing the cross-branch synchronization, to clarify how we branched and why.

UPDATE#2: Sam Sidler and and Gavin Sharp both pointed out that the branching diagram had an error when describing how FF1.5 was branched from FF2.0. They are correct, and I thank them. The branch diagram above has been updated, and is now correct. I since found the same error in a presentation we gave here at the 2008 Mozilla Summit (diagram had same error), and a brownbag in Mountain View office (diagram had same error).

How to export Contact info from Palm Pilot/Treo to Apple iPhone 3G/4Gs

The basic technique here is to export all your Contact info from Palm’s format to Microsoft Address format, and then import from there into the Apple iPhone Contacts app. The best instructions I’ve found so far were here, but I’ve added extra gotchas below in case it helps others. Note: this only transfers Contact info, and does not transfer Calendaring, ToDo or anything else.

Before starting, you need to do the following:

  1. On a MS Windows PC, install palm desktop and iTunes. (If you primarily use iTunes on another computer, its ok to just install iTunes on the windows PC, do this one-off data transfer, and then throw away that iTunes installation).
  2. Start Programs->Accessories->AddressBook and make sure that the Microsoft Address book is empty. (Note: this is not to be confused with MS Outlook, which is very different!)
  3. On the Palm Pilot/Treo, look through all the contacts for the following gotchas:
    • If any contact has two entries of the same type (for example, a person with two mobile numbers, or two work phone numbers), you will need to manually remove/rename one of these numbers before you start. I noticed that any contacts with multiple entries of the same type ended up losing all but one.
    • If you have the same person listed multiple times in your Palm Pilot/Treo, this will cause an error later on. I discovered that I accidentally had the same person entered twice, in two different categories. These duplicate names caused errors later on in the export process, so its best to check and fix this before you start. Worst case, if you miss a duplicate, its quick and easy to just throw away all the conversion work and restart from the beginning again….but it sure it annoying!
    • Check for any occurrences of  ‘=  (single-quote followed by equals)  in your contacts, or attached notes. If you find this anywhere, you must change them to something else before you can continue. It seems that ‘= (single-quote followed by equals) is used as a delimiter somewhere in the conversion process, so anything after that gets cut from that specific person’s info, and never transferred.
    • “Custom fields” are not transferred, so you should either migrate that data to one of the “standard” fields, or make a note of them, and come back later to cleanup by manually copying from palm desktop into MS Address book.

OK, thats it. Now we’re ready to begin:

  1. Hotsync your Palm pilot/treo with the Palm Desktop one final time. Remember, backups are your friend!
  2. Start Palm Desktop and view the Address page. Select the contacts you want to bring over (ctrl-A on keyboard if you want them all), then choose File->ExportvCard… to save all your contacts into one single file on your desktop.
  3. Start Programs->Accessories->AddressBook
  4. Drag and drop the newly created file from your desktop into Microsoft AddressBook. You’ll be asked to press “ok” for each entry being imported into AddressBook. Annoying but its very quick.
  5. Unplug your Palm Pilot/Treo, and plug in your iPhone.
  6. Start iTunes. On the iPhone page, Info tab, choose to sync contacts with Microsoft Address Book and click Apply.
  7. Sync your iPhone with iTunes – this will in turn pull the contacts from the Microsoft Address Book.
  8. On iPhone, look in Contacts app, and verify that all your contacts transferred over correctly. Specifically, look for long attached notes to make sure nothing was truncated.
  9. Undo step (6) in iTunes.

Thats it!

Again, this only transfers Contact info; I’m still investigating exporting Calendaring, ToDo and other types of “legacy data” – any hints? 🙂

Big tip-o-the-hat to: http://www.fixya.com/support/t161691-downloading_contacts_from_palm_iphone and also http://www.dba2csv.com. Both were wonderful help!

All this left me wondering why Apple didnt provide an import utility to handle migrating from Palm Pilot to iPhone…or from BlackBerry to iPhone.  That would sure make it easier for business users to migrate over to iPhone. Oh well.

UPDATE: These same instructions worked great tonight when migrating a friend from a Palm Pilot to a new iPhone 4Gs. Added warning about custom fields, which I missed in this first blog. joduinn 04-dec-2011

Sorting letters at the Royal Mail

Found this article and had to share. It struck me as a great experiment, yet somehow I had never even considered this idea before.

An artist wanted to see just how dedicated the letter sorting people were in the Royal Mail in England the UK. So, she mailed letters addressed using puzzles instead of the usual name-and-address format. Of the 130 letters she mailed, only 10 never arrived. Really good delivery rate, imho, especially considering at least one of them required the postal workers to complete the crossword!!

For the full story, and other examples, click here.

Electionmania and Joe Six Pack!?

I’m delighted that voting today was really really busy.

I live a short walk from my polling station, so walked over before breakfast, hoping to beat the rush. No luck, it was mobbed. By 8.30, lines were shorter, but still… At this point, I just patiently waited in the line, and ended up way late for work. But very very proud to have voted and proud of how good humored everyone else in line was.

While buying supplies for the election coverage tonight at the office, I found Joe Six Pack:

Its real beer, from a local microbrewery. I just love that someone thought of doing this… and also that they used their “Mavericks” beers for this. Lets see which one people prefer!

😀
tc
John.
=====

ps: Continuing in the election theme – here’s a local prankster who tried to do some street renaming:

RelEng “group gathering” in the Toronto office

Last week, the entire RelEng group gathered in Toronto. Everyone in the Toronto office was amazingly welcoming to people camping out in conference rooms and on sofas; many many thanks!
Random highlights:

  • Welcoming Chris AtLee to Mozilla and to the RelEng group. He has just started, and survive the first day hazing orientation, so this seemed like a good time for us all to get together in person. He’s already wading through some long standing items, and getting to figure his way around. Expect to hear good things from Chris soon.
  • Getting the entire group together in one place at one time was great. The only time we’ve ever managed this before was in March 2008, and it was also great. In the 6 months since we last met in person, we’ve had people move countries, have babies, helped Mozilla move from cvs->hg, shipped the FF3.0 release, and shipped the FF2->FF3 major update. Needless to say, we had lots to talk about, both in scheduled meetings, and in those all-important spontaneous two-people-doodling-on-a-whiteboard “meetings” that crop up all over the place. This entire week reaffirmed to me just how valuable that face-to-face time can be.
  • Airplane on a treadmill. This came up early in the week, and continued for the entire week. Without further comment, here’s what Mythbusters and xkcd.com(!) had to say.
  • Discovering that Médecins Sans Frontières / Doctors Without Borders was located in the same building as Mozilla. I’ve always had great respect for the work of MSF, and somehow found it inspiring that they were even in the same building as Mozilla.
  • Learning just how important coffee & food was to the Mozilla Toronto office. Every morning started with a long discussion about the virtues of this bean roast vs that bean roast, while powering up the various caffeine dispensers (see Madhava’s photo on flickr). There is also an interesting low-tech, but effective, postit note on the wall tracking monthly coffee consumption for the office. Hopefully, they’ll remember to discount the spike in late October from their math!
  • Half way between the hotel and the office was a “Second Cup” coffee shop. By the 2nd day, I was being recognised by name as I walked in the door. By the 4th day, they would make my drink when they saw me walking down the sidewalk towards the cafe, so it was ready by the time I reached the counter.

Thats it. Again thanks to everyone in Toronto… next time, Rockband! 🙂

How big is BurningMan?

If you’ve never been to Burning Man, the sheer scale of it all is hard to wrap your head around. Heck, if you have been to Burning Man, its still hard to grasp. I’ve been looking for concrete numbers to help wrap my head around.

  • Area: just over 5 5.5 square miles (up from 4 sq. miles last year.  San Francisco is 7 46.7 sq. miles)
  • Population: 49,600 (San Francisco is 800,000)

…but I find those numbers still too big to grasp.

  • Number of porta potties: 1000

One thousand – thats a lot of porta potties?!! Still too many to easily visualize, but it got me thinking. I’ve seen what a line of 20 porta potties looks like – but what would a line of 1000 porta potties look like?

A standard porta pottie is 44″ wide. Standing them all immediately beside each other makes a line of porta potties 44000″ long or 0.6944 miles long. Huh. By comparison, look at Charleston Road – the main street nearest the Mozilla office here in Mountain View. If you placed the first porta potty at the corner of Charleston Road and Rengstorff, the continuous unbroken line of blue porta potties would stretch all the way to the corner of Charleston Road and Shoreline…blocking all side streets and office entrances along the way. See details in this map. It would take you approx 14 minutes to just walk from the start to the end of that long line of blue porta potties with white roofs… The Great Blue PortaPotty Wall of Mountain View?

Taking this thought one step further.

Imagine if someone asked you to organize renting 1000 porta potties. Now to add to the logistics, consider how to deliver those 1000 porta potties to a remote desert location multiple hours drive from the nearest town in Nevada. Oh, and hire a large group of people who will work literally around the clock keeping them all continuously cleaned and restocked for weeks on end. Oh, and they’ll need food and lodging and large equipment too. Then bring the people and the porta potties all out there, and then bring it all back.

If all that doesn’t sound daunting to you, well… have you ever considered volunteering at Burning Man? The logistics and coordination that goes to make Burning Man possible is really quite something, and more help is always welcome! Oh, and dont worry, its not all about porta potties. 🙂 There are many other volunteer roles for medics, firefighters, counselors, airplane-specialists for the airport, large-scale construction workers, solar power technicans, ice sales-folks, greaters, etc, etc, etc… see the full list at: http://www.burningman.com/participate/volunteer.html

John.

[UPDATE: fixed error in size of San Francisco city area, caused by error over “square miles vs miles squared”; thanks to skierpage for spotting the error. Also calculated area of Burning Man more precisely. John 24oct2008]

how many slaves are “enough”?

Last week in the frenzy leadup to FF3.1b1 code freeze, we got into a state where there were too many changes and too many builds being queued for the available pool of slaves to keep up. Literally, there were new builds being requested faster then than we could generate builds. Worst hit was win32, because win32 builds take much longer then than the other platforms.

Short answer: Since early summer, we’ve used double the number of slaves we had for FF3.0 – which was more then than enough until last week. We’ve since added even more slaves to the pool, which cleared out the backlog and also should prevent this from happening again. At peak demand, jobs were never lost, they just got consolidated together. Having multiple changes consolidated into the same build means the overrun machines can keep up, but makes it harder to figure out which specific change caused a regression.
Long answer:

First, make some coffee, then keep reading…

If you recall from this earlier post, we’ve moved from having one dedicated-machine-per-build-purpose, to now using a pool of shared identical machines. Pending jobs/builds are queued up, and then allocated to the next available idle slave, without caring if its a opt-build, debug-build, etc. Any slave can do the work. More importantly, failure of any one slave does not close the tree.

Related topic is: its tough to predict how many slaves will be enough for future demand. We started in early summer2008 by having twice as many builders as we had builders on Firefox3.0. That guesstimate was based on the following factors:

  • using shared pool across 2 active code lines (mozilla-central, actionmonkey). This has since changed to 3 active code lines (mozilla-central, trace-monkey, mobile-browser), with different volumes of traffic on each.
  • assuming that the combined number of changes landing across all active code lines being similar to what we saw in FF3.0. We didnt have project branches back then, but we had approx the same number of developers/community landing changes at about the same rate.
  • changed from “build-continuously” to “build-on-checking”. This greatly reduced the number of “waste” builds using up capacity. We still generate some “waste” builds (no code change, but needed to stop builds falling off tinderbox, and to keep talos slaves busy). The question is how many of these “waste” builds are really needed, and can we reduce them further?

This worked fine until last week when a lot of changes landed in the rush to FF3.1beta1, and then regressions forced a lot of back-out-and-try-again builds. Here’s a graph that might help:

Once we realised the current pool of machines was not able to keep up with demand:

  1. We added new build machines to the pool. This really helped. As each new slave was added to production pool, it immediately was assigned one of the pending builds and started working – helping deal with the backlog of jobs. By the time we added the last slave to the production pool, there were no pending jobs, so there was nothing for it to do, and it remained idle until new builds were queued and immediately processed.
  2. On the TraceMonkey branch, we triggered a “waste” “nothing changed” build every 2 hours. This was done for mozilla-central to ensures that Talos machines are alway testing something, and builds dont fall off the tinderbox waterfall. We originally setup TraceMonkey to build on same schedule as mozilla-central, but as we didnt have any Talos machines on TraceMonkey, we can safely reduce down that frequency. In bug#458158, dbaron and nthomas increased the gap between “waste” “nothing changed” builds on TraceMonkey branch, from 2 hours to 10hours, which is the longest gap we could have, while still frequent enough to prevent builds falling off tinderbox. They also turned off PGO for win32, which seemed fine, as there are no talos machines measuring performance on TraceMonkey branch anyway; turning off PGO reduced the TraceMonkey buildtime, which meant that the slave would be freed up sooner to deal with another pending job. I tried to visualise this drop in pending jobs by the notch in the graph above.

Looking at the graph again, we dont know if we will see  “future#1” or “future#2”. We’re still unable to predict how many slaves is enough for future demand. We’re adding new project branches, hiring people, adding tests. We’re obsoleting other project branches. Once we fix some infrastructure bugs, we can stop “waste” builds completely. Either way, the infrastructure is designed to handle this flexibility, and we have plenty of room for quick expansion if need arises…

We dont yet have an easy way to track how heavily loaded the pool-of-slaves is, so I have to ask for some help.

Until we get a dashboard/console working, for now, can I ask people to watch for the following: Whenever you land a change, an idle slave should detect and start building within 2 minutes (its intentionally not immediate – there’s a tree stable timer of a couple of mins). If we have enough slaves, there should be one build produced per changeset. Its possible, but rare, that people land within 2 mins of each other, and therefore correctly get included in the same build, but that should be very rare. More usually, each checkin would be in a different build. If you start seeing lots of changesets in the one build, and especially if you see this for a few builds in a row, it may mean that the pool-of-slaves cannot keep up, and queued jobs are being consolidated together. In that situation, please let us know by filing a bug with mozilla.org:ReleaseEngineering and include the buildID of the build, details on your changeset and the other changesets that were also there, which o.s., etc and we’ll investigate. There are many other factors which could be at play, but it *might* be an indicator that there are not enough slaves, and if so, we’ll quickly add some more slaves.

Hope all that makes sense, but please ping me if there are any questions, ok?

Thanks for reading this far!
John.

[updated 13oct2008 to fix broken english syntax.]

Welcome to Chris AtLee

Quick introduction.

Chris joined Release Engineering today, and will be based in Toronto… assuming he passes the strict acceptance tests of the Toronto office.

He’s a cool guy, and we’re delighted to have him join us. In the Toronto area, you’ll find him on the guitar, trying to prepare for Ted’s upcoming visit. On irc you’ll find him as “catlee”, which we’ve decided to pronounce “cat-lee”. 🙂

Please do stop by and say hi!