Friday, March 16, 2007

Xslimmer, dugg (indirectly)

This week's traffic in our main site has come as a bit of a surprise to us. It all began on Tuesday, 13th -which, ironically, is the Spanish date when bad luck conjures up to make your day miserable-. When I got to bed at around 2am, everything was quite between the normal boundaries. However, when I got up at 6am (yes, it's a hard life for poor little developers with a day job) I immediately noticed that something was happening that was out of the usual: the moment I switched my mobile phone on, I began to receive SMS messages alerting me of events that had been happening while I was asleep. One of the consequences of crafting something that others are willing to pay for, combined with a technically oriented mindset, is that you develop a compulsion to measure, analyze, monitor and graph everything that happens. In my case, I had programmed the sending of SMS messages to my mobile whenever important events, such as sales, take place. Receiving an steady stream of SMS beeps is something I did not expect to happen in a random day with no recent important releases or noteworthy events on our side. This lasted for a couple of minutes, signaling that something had happened in the 4 hours my mobile had been switched off. I got to my MacBook Pro and run a couple of scripts to determine that we were receiving a lot of traffic from this article by Ed Eubanks Jr. at lowendmac.com. Xslimmer was mentioned as one of a variety of options that can be used to help you optimize your Mac. I read the article, dugg it, wrote the author with my compliments and comments, answered to some emails from customers, and drove to work.

Whenever Xslimmer is featured in a popular blog or site, we experience a traffic burst that translates proportionally to sales and mails from prospective customers or new buyers. Although the effect lasts for some days, the main spike declines pretty soon. However, in this case we kept having a relatively steady amount of activity during the following hours. And then, a second burst was noticed at around 15:30: the article had already accumulated 670 diggs and had been deemed "popular" by the Digg team. We kept receiving a lot of traffic, more sales than usual, and therefore had to cope with an increased amount of support activity (mostly derived from licenses that got trapped by spam filters and had to be resent manually). I thought this would last for a day, but that night when I got home the article had snowballed to more than 2,000 diggs and traffic was solid. This continued for another day and a half, and then decreased when the article finally left page 1 of Digg's Apple section.

We are proud and very grateful about the response received from all of you. We have gone through frentic activity trying to answer all your emails as soon as possible, but this activity is much more pleasurable when most of the feedback we receive is positive and encouraging. We'd also like to send our heartfelt thanks to Ed, who originated the best string of sales and response in our short history. And your article is interesting, too, if you don't mind we may borrow some of your ideas for future Xslimmer releases! :)

There are a number of lessons to be made from this story. The obvious one is the immense power of community sites such as Digg. I cannot imagine what would have happened if Xslimmer had been "dugg" in a direct way instead of marginally. A consequence is that quality and word of mouth really, really count: Ed chose to mention Xslimmer because he had liked the program. And because Ed's article was authoritative and respected, it was chosen and made popular by its readers. I believe there is a parallelism between this new wave of user-promoted content and the strong and traditional heritage about quality in the Mac tradition, whose users tend to look for good solutions, recognize them and recommend them to others. Being small software developers, our bet was to provide a "Mac-like" experience to a seemingly sensitive operation and rely on word of mouth to get our message through, hoping that this would pay off in the long run. The process is cumulative, and we do believe that each new customer is a potential referral for new ones; therefore, we have no option but to strive for simplicity, quality, robustness, ease of use, customer support. That's why we chose to distribute 5,000 free (non-upgradeable) Xslimmer licenses during the MacAppADay promotion, back in December, and only a few weeks after having released Xslimmer 1.0: in the hope that this community of users would spread the word if they really liked our application.

You know what? Ed downloaded Xslimmer during MacAppADay, bought it a few days later, and recommended it to the world last Tuesday, 13th.

The next Tuesday, 13th will be in November. After this week's events I'm confident that by then we'll be closer to our goal to "go Indy" and work on this thrilling activities the whole day. We'll keep working to achieve that, and we can't fail because November 13th is my birthday, and I'm determined to prove that bad luck may happen on Fridays, but not on Tuesdays, and certainly not on my birthday!

Monday, March 12, 2007

Lossless same-drive Mac HD Repartition

Recently I discovered a lossless way to repartition my Mac's main hard drive, without having to boot from an external drive. I have been looking for this for quite a while, as I wanted to install the Mac OS X Leopard preview in order to test the new development tools and maybe try a new feature or two for Xslimmer.



Some people had suggested to use the Bootcamp utility to resize and partition the drive. But I had already installed Windows (basically for gaming) and did not want to lose that partition.

So, I finally read an article on how to do this using the command line command diskutil, and its hidden feature named resizeVolume. If you check the man pages, you will see that there is no information on this matter, but you can obtain some executing "diskutil resizeVolume":

freeport:~ jorge$ diskutil resizeVolume
Disk Utility Tool
Usage: diskutil resizeVolume [Mount Point|Disk Identifier|Device Node] size
...
Non-destructively resize a disk. You may increase or decrease its size.
When decreasing size, you may optionally supply a list of new partitions to create.
Ownership of the affected disk is required.
Valid partition sizes are in the format of .
Valid sizes are B(ytes), K(ilobytes), M(egabytes), G(igabytes), T(erabytes)
Example: 10G (10 gigabytes), 4.23T (4.23 terabytes), 5M (5 megabytes)
resizeVolume is only supported on GPT media with a Journaled HFS+ filesystem.
A size of "limits" will print the range of valid values for the current filesystem.
Example: diskutil resizeVolume disk1s3 10G
JHFS+ HDX1 5G MS-DOS HDX2 5G
Valid filesystems: "Case-sensitive HFS+" "Journaled HFS+" "Case-sensitive Journaled HFS+" "HFS+" "HFS" "MS-DOS FAT32" "MS-DOS FAT16" "MS-DOS" "MS-DOS FAT12" "UFS" "Linux" "Swap"


So, as you can see, to resize a partition you first need to know its name. For that you can use "diskutil list":

freeport:~ jorge$ diskutil list
/dev/disk0
#: type name size identifier
0: GUID_partition_scheme *465.8 GB disk0
1: EFI 200.0 MB disk0s1
2: Apple_HFS Macintosh HD 434.0 GB disk0s2
3: Microsoft Basic Data WINDOWS HD 31.4 GB disk0s3


In my case, the partition was disk0s2. The partition scheme or the EFI partition should be ignored. As I said before, I already had a Mac OS partition and the Bootcamp partition. I wanted to create a new 20 Gb partition out of the main Mac OS partition, disk0s2.

Now, there are some limitations to the resizing. I guess it has to do with how much free space you have in the partition you want to divide. To verify the limitation, you use "diskutil resizeVolume partition_name limits":

freeport:~ jorge$ diskutil resizeVolume disk0s2 limits
For device disk0s2 Macintosh HD:
Current size: 466003951616 bytes
Minimum size: 213448208384 bytes
Maximum size: 466003951616 bytes


Finally, you have to provide the resizing parameters to the "diskutil resizeVolume" command. In my case, I wanted to keep 414Gb for the main partition and create a new Journaled HFS+ with 20Gb:

freeport:~ jorge$ diskutil resizeVolume disk0s2 414G JHFS+ Leopard 20G
Started resizing on disk disk0s2 Macintosh HD
Verifying
Resizing Volume
Adjusting Partitions

Finished resizing on disk disk0s2 Macintosh HD
You will need to manually reformat your new partitions.
WARNING: You must now reboot!


In my case the first step, "Verifying" was what took the longest time. After that it all went very fast.

Once done, you should reboot. After rebooting, you can use diskutil or Disk Utility to prepare that new partition for use.

freeport:~ jorge$ diskutil list
/dev/disk0
#: type name size identifier
0: GUID_partition_scheme *465.8 GB disk0
1: EFI 200.0 MB disk0s1
2: Apple_HFS Macintosh HD 414.0 GB disk0s2
3: Apple_HFS 19.9 GB disk0s3
4: Microsoft Basic Data WINDOWS HD 31.4 GB disk0s4


In my case, I used Disk Utility, selecting the new partition, the Erase tab, then proving a name for the partition, and clicking on the Erase button.

freeport:~ jorge$ diskutil list
/dev/disk0
#: type name size identifier
0: GUID_partition_scheme *465.8 GB disk0
1: EFI 200.0 MB disk0s1
2: Apple_HFS Macintosh HD 414.0 GB disk0s2
3: Apple_HFS Leopard HD 19.9 GB disk0s3
4: Microsoft Basic Data WINDOWS HD 31.4 GB disk0s4

(Update) One more thing needs to be done. This time is for Windows to keep running fine. You should edit boot.ini (I used textmate), so it knows the partition is it located in. Mine looked like this:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
As you see, it says partition(3) for the Windows partition, which is now wrong. I changed it to partition(4) and it worked like a charm. Notice partition(3) appears twice, you should change both.

All set!

Now I have Leopard on my Mac along with Tiger and Windows, thanks to these simple operations. Needless to say, before you attempt to do anything like this, you should have a backup.

[Update: I wrote a second part of this article]

Disclaimer: Visitors do assume all the risk of viewing, reading, using, or relying upon this information. We assume no responsibility for damage to computers or software of the visitor or any person the visitor subsequently communicates this information to.

Have fun!

Tuesday, March 06, 2007

Back...after the break

As with every major release of an application, not only the days prior to the release are very intensive, but also the days after. With Xslimmer 1.2 it has not been different. Issues, doubts, questions, bugs, feedback. Lots of hours of dedication and little sleep.

The most important bug was what I initially called the "UK English Bug", which at the end also had an important impact on our German customers. After a few hours of being detected, we released 1.2.1 in order to fix it. Incredibly, none of our beta testers were German or UK English people. We apologize to those who suffered this issue.

A few days later, with 1.2.2 we fix some other minor fixes and tweaks were introduced. Then, we took a break. For a few days, we had enough with our day jobs and our families.

Right now we are back, and starting with 1.2.3 and our general Xslimmer roadmap. We shall keep you posted.

Wednesday, February 14, 2007

Maintenance release

Xslimmer 1.2.1 is a maintenance release that solves a bug detected after launch of version 1.2.0. The bug could cause Xslimmer to remove all localizations of some apps in certain circumstances, rendering those applications unusable. This was the case, for example, for users whose preferred language was British English and decided to keep one language.

Our apologies for not having detected this behaviour even after having conducted a closed beta programme.

Hope you can now enjoy Xslimmer 1.2 to its fullest.

UK English Bug Detected

Unfortunately, there has been a bug detected in the case of selecting UK English as the only language to keep. We are working hard to nail it down and release a fix for it as soon as possible.

Xslimmer 1.2 is Out!

That's right. The anticipated release of Xslimmer that allows language stripping from applications is here. In this release, we include a series of benefits:

* Language stripping. Xslimmer 1.2 allows you to easily select how many languages you want to preserve and will remove the rest, thus greatly increasing the amount of disk space you'll free.
* Send apps to exclusion list. A new menu option allows you to easily add applications to your personal list of excluded ones, directly from the Xslimmer window. No more search for the app to exclude!
* Quicksilver integration. Allows Xslimmer to become a target for Quicksilver's "Open with..." feature.
* Localizations. Xslimmer is now available in English, Spanish, French and Italian!
* UI improvements. A variety of minor UI improvements have been added that contribute to (we hope) a sound, consistent and polished user experience.

Hope you enjoy using Xslimmer 1.2.

Friday, February 02, 2007

Xslimmer Language Stripping Ready for Beta

Time for a new beta! This one will be smaller than the original one, but we want to find out if there could be any issues, that we did not forsee or find out, with the new language stripping system that we have implemented onto Xslimmer 1.2.

This means that we have finished Xslimmer 1.2 development, and we are ready to let our original beta testers check it out. If you are interested in testing it out too, you are more than welcome to write to us. We are limiting total new submissions to 10.