using leopard’s stacks as application launchers


July 31st, 2008

Upon Leopard’s launch, some people found the new Stacks feature of the OS X Dock as generally useless. Some simply do not use Stacks at all, others just keep the default Downloads and Documents. Myself, I have taken to using stacks as simple application launchers, useful for grouping together related programs and not forgetting about them1.

«Continue Reading»

  1. As ridiculous as that may sound, it has happened before, so a reminder may be useful []

fixing repeated mail.app crashes on iphone 2.0


July 20th, 2008

Another issue I ran into after upgrading to 2.0 was that Mail.app was crashing, no matter what I did. Again, not content with simply resetting the phone1, I set to investigate. Again, log into via SSH and delete the /private/var/mobile/Library/Mail folder. Then sync again, so that iTunes will re-add your mail account information to the phone. Back in business.

Unfortunately, if you have not jailbroken your phone, this fix does not work for you — rather, it is rather impossible to delete the folder. You need to reset the phone. Since these settings are saved by iTunes’ backup procedure, they should be someplace on your filesystem, and theoretically you should be able to change them there and restore from that backup, but I have not attempted to do this.

  1. Setting iPhone up as a ‘new phone’ instead of restoring from a backup []

fixing edge on pwned iphone 2.0


July 20th, 2008

So very eager to update my iPhone to 2.0, once Pwnage Tool was released, I forgot completely I had disabled my EDGE from BossPrefs (seeing how I was at home, with Wi-Fi) and proceeded with the update. This had the unpleasant effect and completely leaving me without any way of enabling EDGE, post-update. Well, most of ‘any way’. If you have done something similarly stupid (out of, I am sure, excitement) here is my quick and dirty fix for the problem, inspired by some older posts from ModMyIfone.com1

«Continue Reading»

  1. You can also simply set-up the phone as a ‘new phone’ after restore, and you should get the same result []

making twitterrific secure


May 20th, 2008

As I have found out today, Twitterrific’s default behaviour is to use base64 encoding for logging into Twitter. Now, you may or may not care about that, but it is very insecure and it makes it relatively trivial for someone to grab your username and password. Here is an easy way to make it safer.
«Continue Reading»


the brief


March 19th, 2008

A few interesting titbits from today’s news - Apple, GPL, JP Morgan controversies, beer is the secret to success.

«Continue Reading»


netnewswire/feeddemon syncing free as well


January 29th, 2008

Because I can be rather hasty sometimes, I have overlooked one important aspect that makes the free NetNewsWire (and its Windows counterpart FeedDemon) even more enticing as a favoured RSS reader: feed syncing via NewsGator is free as well1. Which may not be news for some and not that big a deal for others, because FTP syncing was obviously free before.
«Continue Reading»

  1. The obvious was pointed out by a blog post from one of NNW’s developers, via Daring Fireball []

gmail imap


November 1st, 2007

Well it’s been enabled for my accounts, finally, so the first thing I did was to see how I can flag items from my iPhone so that I may review at a more convenient time. No further: simply move the mail into the ‘Starred’ folder and you’re done. Granted, it also removes it from the Inbox view, but as far as I am concerned that is quite all right.

Now, if only Apple’s Mail wouldn’t display these IMAP accounts so weirdly. I am uncertain if it’s a mistake on my part or not, though my other IMAP accounts look just fine.


Firefox Supercharged


August 6th, 2007

Beyond the superior rendering capabilities and improved security that Firefox provides, another reason I love using it lies in the power that Extensions provide to the user. Since historically speaking, Firefox was meant as a lightweight browser, it allows extensibility through various add-ons that the user may find useful. Here’s my power-user, supercharged version of FF1.

Firefox Supercharged

As you may be able to tell, I’ve tried to dedicate as much space as possible to viewing websites and less to the things I don’t use [like navigation buttons.] Here’s what I have [click the pic above for the full-size rendition] and how I browse:

«Continue Reading»

  1. Bon Echo used to be the codename for Firefox 2. Since the main Mozilla team has been slow to use Mac OS X’s native buttons and look and feel, somebody very nice made a minor ‘port’ of sorts - but due to obvious copyright issues the name and logo were changed. Regardless, whatever you do in Bon Echo is automatically synchronized with vanilla Firefox - this means history, bookmarks, plugins etc []

enum factory method


July 25th, 2007

People that have had to deal with Design Patterns would be familiar with the Factory Method. One of the projects I’m working on requires creating classes depending on what types are specified in an XML configuration file, something like:

<hacker name=""/>

So we need to instantiate the object based on the name or type attribute. Enter the Factory Method and my little way of doing it, via an EnumFactory:


public enum HackerFactory {
LAMO { public Hacker getHacker() { return new Lamo(); } },
MITNICK { public Hacker getHacker() { return new Mitnick(); } },
GOLDSTEIN { public Hacker getHacker() { return new Goldstein(); } },
ABENE { public Hacker getHacker() { return new Abene(); } };


public abstract Hacker getHacker();
}

This is the Enum class. To actually instantiate, considering that our parsed XML lives in a String name object, the code is simply:

Hacker h = HackerFactory.valueOf(name).gethacker();

Some might argue that an Enum is not very extensible - while that’s true, the limitation exists also in the Factory Method so we’re not actually polluting our code further. Changes still need to happen only in one place - the Enum class - to reference the new additions. Where an implementation does not exist, the Enum will throw the appropriate Exception to the user.