Main

May 31, 2008

Snapz Pro X a bit to eager?

Run this:

sudo fs_usage  -w -f filesys 'Snapz Pro X'

Does your copy checks the Preferences and License File every two seconds? Sheeeshh...

(tested on Tiger by the way, not sure if it work on Leopard)

April 26, 2008

Two new apps: Yuuguu and PortMap

Yesterday, Rui pointed me to two applications/services that immediately found a place in my Applications folder.

The first is Yuuguu. Its a screen sharing application that just works. You install the client (Windows, Mac. You can also use the web server), create a free account and add your friends (by email address). That's it. You can now share you entire desktop with any of your friends. Essential for those support calls you get from your family members.

The second one is PortMap, a free application from the CodingMonkeys (of SubEthaEdit fame). It allows you to open services running on your desktop when you are sitting behind a NAT gateway. It will use NAT-PMP or UPNP to map a public port to your private address.

PortMap is the end user application. They also made available the Framework they created around the code that does this magic. I should point out that Leopard has this functionality built-in (point from João Pavão, the Cocoa guru at hand).

DevonThink online

I'm a big fan of DevonThink. I've used the Pro version for two or three years now, to store my web clippings, my own personal Google.

Yesterday, I read through the Evernote review at AppleInsider and it looks like it could be event better. My favorite feature is the bookmarklet that lets you select part of a web page inside Safari, and send to the Evernote server.

I love this combination: a web service to store all this data, and a companion desktop application to ingrate perfectly with my environment.

February 15, 2008

Screenshot editor

I need a Mac app to blur or hide certain parts of screenshots I take.

I don't want a app tied to any online system. Just a quick, direct, graphics editor.

Any recommendations?

Screencast software

I usually use Snapz Pro X and I'm pretty happy with it, but ScreenFlow is amazing.

Checkout the screencast, specially the last 20 or 30 seconds.

But €79.99? Yeah, only if you are a Pro.

October 23, 2007

And now there are two

With the recent arrival of HTML5-style SQL access in Webkit, we now have two approaches to the problem of offline storage available to us.

Comparing the HTML5/Webkit version with the Google Gears version, personally I prefer the Webkit one due to the async nature of the API.

With Gears, database access is a synchronous operation that might delay a critical event-driven application. By making those operations async, your Javascript event handlers can fire off a couple of queries and keep on doing their work. As a side effect, it introduces some parallelism into JS without the beautiful heavyweights of Gears worker pools.

I didn't see it written yet, but I assume that the Webkit implementation also uses the SQLite database, same as Google Gears. It would make sense given that the whole CoreData API also uses it. It seems to me that SQLite is becoming the standard SQL engine for this kind of thing, and with the work Google is doing with it and the fts engine, it can only get better.

I think that having these tools in our toolbox before a standard is defined is essential to provide real-world feedback. Committee-based standards are rarely as good as market-driven ones.

One thing that we cannot stop from speculating about, is the reasons for this code to appear right now. The blog post mentions that it was mere excitement of a couple of engineers with the spec, and I can understand that. But in my mind, having a decent offline mode in Webkit is essential to a proper Web-based SDK for the iPhone.

Of course, database access is only one of the parts to make a decent offline mode. In Gears, you have two more tools: a local server and a worker pool. The worker pool is nice but not required for a offline mode. On the other hand, the local server is. So it would make sense to implement some sort of local/offline asset manager next.

Yet, the worker pool is much, much more fun to play with and it could be used even with online apps. So I hope to see that first.

This would be less important if Gears was already supported in Safari, but we are nowhere near that point right now. The choice of C++ for the core of Gears has been pointed out in the mailing list as the main sticky point regarding a WebKit version: C++ and Objective-C are not the best of friends.

In any case, this is a step in the right direction. I welcome this efforts of implementation prior to standardization. And its nice to have new toys to play with.

September 12, 2007

SynergyKM

Beta6 of SynergyKM is working ok for me. I recommend the upgrade to anybody using Synergy on a Mac.

Things that can bite you:

  • if your clients can't see the server, disable Bonjour discovery: it fails miserably with me;
  • don't use screen names with spaces in it: it will fail with some strange error about failing to read /tmp and friends. If you look at the log file, you'll see that it barfs with spaces.

Apart from that, smooth sailing.

September 06, 2007

There is a new git in town

Git v1.5.3 was released earlier this month but I only noticed today.

There are a lot of tweaks and improvements, but for me the killer feature of this release is git-stash.

That feature alone is worth the upgrade.

August 09, 2007

iGTD stuff

I'm enjoying my iGTD experience. I think there is a lot of good stuff in there, and with some MailActOn stuff and some mail rules, I've been able to use very effectively as a Inbox for everything.

I still miss a easy way to track external tickets, but maybe we can work around that with the Pro version and some plugins.

Update: Ok, found it! Just select all the projects... Stupid me. Now on to step 3 of my list: I have this list of tasks for a set of projects, I want to filter per context.

One thing that I don't like at all is the query capabilities. I miss a view that combines Project and Contexts.

I would like to see something like this:

  1. select one or more projects to focus on (usually one);
  2. check some box to include sub-projects also;
  3. select one context;
  4. apply.

This would give me all the actionable tasks that I have in those projects in that context. So far, I haven't found a way to do it with iGTD.

See this screenshot: if I have 12 tasks in that project, including sub-projects, I would expect that, if I select that project, I would see the 12 tasks. But no, I only get to see the ones in that project exactly, not a single one from the kids. That is the correct behavior if I expand the project to show sub-projects (iGTD even updates the count to 2 in that situation, correctly). Only the task list does not adjust properly for collapsed projects.

Fortunately.... The data is inside a SQLite database... hmmms... :)

August 01, 2007

Love / Hate relationship with GTD

I've read the book, adjusted some of the things mentioned to fit me and my personal style, but I've always fallen short of nirvana.

My "inbox" is very distributed. I have to check several ticketing systems for several projects I participate, on top of all the things that arrive via email.

I'm also very command line oriented, and I still write a lot of code, sprinkled with TODOs and FIXMEs.

What I wanted is a tool that collects all that, with my help, and keeps me up-to-date. And a Pony, it seems.

So far all the this is not available. All the GTD helper applications (current favorite is iGTD) that I've tried are:

  • single user: no easy way to delegate a task in a structured way, and receive updates on it;
  • no semi-automatic external inputs: if we had some sort of plugin system, iGTD could be extended to watch specific tickets on specific ticketing systems, as my own tasks, and allow basic interaction (update, close);
  • task dependencies: iGTD sort-of has this, but doesn't track dependencies across multiple contexts.

The first one could be solved with a XML representation that is sent via email. A mail rule on the receiving side would integrate it in the other person GTD app, probably placed in the inbox for acceptance / rejection, with a checkbox "send updates to the sender".

If the email configured for a project is a mailing list, several people in the project could be in the loop.

The second one is very complex because there are several ticketing systems out there. In the same way that Blogging APIs are more or less converging to two or three standards, it would be great if a simple REST API could be developed that would allow integration with desktop apps.

In the meantime, GTD apps could allow external plugins to integrate with those systems.


Right now, I'm giving iGTD a try. Previously I was using todo.txt but it was not enough for some of my needs, like hierarchic projects and tasks dependencies.

I have to take tickets from external systems and place them in my personal iGTD, but that is only a F6 away, for now.

Lets see if I survive a week with this...

July 14, 2007

Love porcelain

I just love the porcelain around git, in particular cogito. They have great error messages:

cg-commit: unable to revert the original patch;
the original patch is available in /tmp/gitci.tWnPNq/patch.diff,
your edited patch is available in  /tmp/gitci.tWnPNq/patch2.diff,
your log message is in /tmp/gitci.tWnPNq/logmsg.diff,
your working copy is in undefined state now
and the world is about to end in ten minutes, have a nice day

Any software written by Douglas Adams fans is a good software.

March 13, 2007

Mac OS X: streaming audio between laptops35

In my workspace I use two laptops to increase the number of screens available (low quality picture of the setup I use).

I have everything the way I want it right now: the mouse, keyboard and clipboard are in sync using Synergy, and all my backup apps are installed on the Tibook (SuperDuper! and Retrospect, the best backup application for your small network), including the big external disks. They are connected with Gigabit ethernet so transferring files is a breeze, even gigabyte sized files.

I have only one last problem to solve: audio. I need to redirect all the audio of the TiBook to the Macbook, so that I can open sound apps in the TiBook and keep listening to them with the headphones I have on the Macbook.

Does anybody knows of an app that does this?

February 28, 2007

SAPO Messenger for Mac

One of my favorite projects in the last years is finally public. The first public version of SAPO Messenger for Mac, a Jabber client tied to the SAPO Messenger community.

The client has both English and Portuguese and given that most Portuguese Mac users have English as their default language, we choose to ignore the settings of the International preferences pane for now and force the Portuguese locale. To switch back to English, do this:

  1. in the Finder, select the SAPO Messenger icon, from the Applications folder;
  2. Use the Get Info menu option (Cmd-I shortcut);
  3. From the Languages section, enable English.

You have to do this after every upgrade, but we will probably change this in a future version.

You can register an account at the SAPO Messenger registration page, its free. Its Portuguese only for now, but it should be self evident. I'll try and do a a small screencast about that part.

The cool features that I think make this an excellent Jabber client for the Mac:

  • native Cocoa interface;
  • a rock solid Psi core (kudos the Psi team, Justin Karneges, Kevin Smith and Remko Torçon in particular);
  • a multi-contact implementation: just drag all the contacts of the same person on top of each other;
  • a search-as-you-type roster: amazingly useful with big rosters;
  • Growl notifications;
  • SOCKS5 File Transfer;
  • SMS text messaging to Portuguese networks;
  • and lots of other small things.

All in all, it was a great year fine tuning the first set of features. I'm particularly in love with the search-as-you-type roster (and the internal versions are already a lot better :) ).

There are some features that are not present because we haven't decided how to do them right. Two examples are tabbed chat and address book integration. We don't know if they will appear in a future version or not.

Other features are not present because we are still building them:

  • multi-user chat support;
  • better handling of offline and pending messages.

So download and give it a whirl. If you need to add a local user, feel free to add pedro.melo@sapo.pt.

One last thing: during the last year, we have had the privilege to have an amazing Cocoa programmer in the team. He single handed took the project into his hands, used the core framework and C++-to-Coocoa bridge developed by the Psi team, and built all the Cocoa goodies that you will see. kudos to João Pavão of Critical Software. This was a team effort of course, but some elements just stand out.

Last but not the least: expect a GPL source code release soon :).

Happy! Happy! Joy! Joy!

April 28, 2006

Textmate goodness

I'm still impressed with TextMate and although I still run into Vim from time to time, most of my work is now done inside the new sweetheart.

Of course, we are still in early stages of our relationship, and the old and trusted Vim can still regain is rightful place, specially with the newest version 7 (in late beta now).

Yet sometimes I see another set of possibilities with Textmate that blew me away. The latest one is this new concept, by Duane Johnson, of multiple arbitrary simultaneous carets (MASC). Go and see the screen-cast.

Great stuff.

Technorati Tags:

February 09, 2006

iTunes Estimator

I like Dashboard widgets. I like the looks, I like some of them for their functionality, but mostly I like them because the poetic way they burn my CPU.

Anyway, If I had access to the US iTunes Music Store, I would be running this one, iTunes Estimator. Heck, I'll fess up: I'm running it anyway to see how accurate will he be.

Thanks go to the TUAW guys for this waste of my CPU.

Technorati Tags: , , ,

February 03, 2006

Removing all mail from your gmail account

When gmail first appeared I subscribed as soon as I could get my hands on an invitation. I forward a lot of mail to try it out.

Some months later, I saw that I could use gmail as an archiver for certain things, those mails you don't know if you really want to keep, but the problem was that now my gmail account was full of garbage.

I wanted to purge all mail from my account to start from scratch but there seems to be no way to do it easily. Clicking on 80 pages (8k message, 100 messages per page), selecting all and delete, was not an option.

So I wrote a script to login to gmail POP3 service, delete all messages, exit, and try again, until I got 0 messages on my inbox.

I now have about 10k messages in the trash, and those will be removed in 30 days.

Done!

In case you need to do the same, here is my x-gmail-expunge script. It requires Perl and the Mail::POP3Client from CPAN. Run it without parameters for usage, but it's really simple: x-gmail-expunge.pl LOGIN PASSWORD.

Technorati Tags: ,

January 14, 2006

WMV for Quicktime

If you need to see WMV files on Mac OS X, until recently you had to use the Windows Media for Mac.

If you knew that and used it, you know that it wasn't that good.

Recently, there where some mentions about Flip4Mac on Mac OS X Hints, and this week, Microsoft said that it would stop developing the Media Player, and made and agreement with Flip4Mac to distribute their WMV Quicktime plugin and standalone player software for free.

I've downloaded a version last week, and installed. In the next few days, I experience crashes in both Mail.app and Safari, something that I hadn't before. I decided to reinstall and yesterday I downloaded again. I don't remember which version I downloaded the first time, but yesterday I picked up 2.0.1 and since then the crashes have stopped.

I don't know if they released a minor upgrade due to some problems, but if you are having random crashes since installing Flip4mac, try uninstalling (there is an uninstaller in the /Applications/Flip4Mac folder), download the 2.0.1 release and install again.

Technorati Tags: , , ,

December 29, 2005

The quest for fastcgi MT setup

After successfully placing Trac under fastcgi with Lighty, I'm now targeting Moveable Type.

It's not as important as Trac was, I'm pretty happy doing it via CGI, I'm very low traffic. One of the caveats with this approach is that some plugins might not work correctly, due to the persistent nature of fastcgi processes. But, hey, this is the way Yahoo! is doing it, so if that is really a problem, I think they will be corrected shortly.

Anyway, I've collected some links to how-to's about this:

Technorati Tags: , ,

Tip: use TextMate and Ecto

Quick tip for those who are using ecto and Textmate: you can edit your drafts using Textmate directly from ecto. In case you use Markdown to write your posts, this is great. The Markdown bundle in Textmate is very good.

Just choose Edit > Edit with > TextMate and you're done. The text updates in ecto after you save in Textmate.

For more information, see this article on the ecto blog.

Technorati Tags: , ,

Trac and Lighty

I'm moving this and other simplicidade.org sites to Lighty.

My main motivation was memory usage and the fact that I'm starting to use Trac a lot, and using that as a CGI is painful. I wanted to use fastcgi and Lighty is high-rated in that area.

After reading some articles about Trac and fastcgi, I settled on this config:

$HTTP["host"] == "projects.simplicidade.org" {
  server.document-root = "/servers/sites/projects.simplicidade.org/docs"
  accesslog.filename   = "/servers/logs/lighty/sites/projects.simplicidade.org_access_log"

  server.indexfiles    = ( "index.html" )

#  fastcgi.debug        = 1
  fastcgi.server       = ( "/project" =>
                           ( "trac" =>
                             ( "socket" => "/servers/workspace/lighty/sites/projects_simplicidade_org-trac-fcgi.sock",
                               "bin-path" => "/usr/share/trac/cgi-bin/trac.fcgi",
                               "check-local" => "disable",
                               "min-procs" => 1,
                               "max-procs" => 3,
                               "max-load-per-proc" => 1,
                               "idle-timeout" => 30,
                               "bin-environment" => (
                                   "TRAC_ENV_PARENT_DIR" => "/servers/workspace/trac/instances/simplicidade"
                               )
                             )
                           )
                         )
  alias.url            = ( "/trac/" => "/usr/share/trac/htdocs/" )

  auth.backend         = "htpasswd"
  auth.backend.htpasswd.userfile = "/servers/workspace/trac/passwd/simplicidade/trac.htpasswd"

  $HTTP["url"] =~ "^/project/[^/]+/login" {
    auth.require       = ( "/" =>
                           ( "method" => "basic",
                             "realm" => "projects at simplicidade.org",
                             "require" => "valid-user"
                           )
                         )
  }
}

Works very well. The trick to have several Trac instances with a single fastcgi server is the TRAC_ENV_PARENT_DIR environment. You should point it to the parent directory of all your Trac instances.

Oh, and the site projects.simplicidade.org is not up and running yet. I'll announce it soon though.

Technorati Tags: , ,

TextMate: cool stuff so far

In my quest to implement my 2006 Resolutions, I decided to start early and I've switched to TextMate already.

I will not dump all the links to the documentation on you. I will only point to some "Wow, cool"-type of things I found in the last couple hours browsing stuff.

Some of the links are from the Macromates blog, a resource I would recommend you to, if you are also switching to Textmate. The author posts some lengthy articles, and I was able to pick up general Mac OS X tidbits I didn't knew about.

So far, so good. Snippets and Macros are my new best friends.

Technorati Tags:

September 29, 2005

MT Upgrade

Going to upgrade to Moveable Type 3.2 now.

If the site disappears, then something went wrong with my backups :).

I'm sorry but you'll loose all the juicy links to sex, travel and casinos that we could find on my trackbacks.

update: seems to work. Still messing around with templates, expect some changes and fixes.

July 30, 2005

New darcs web interface

In case you usually browse my darcs repos, I switched to the new web interface.

The old one is still available.

Confluence

Recently I downloaded a copy of Confluence due to the new licensing option, Personal Edition.

So far I'm still getting to know the application but it seems quite good and in a corporate environment like the one I work at the mail integration and access control features are essential. I'm tempted to try a full trial license during August, with the JIRA integration also.

Will see how my personal evaluation goes. In the meantime, check the notes that Rui took with his installation. One thing though: it's not closed source. You get full source code with the commercial versions of Confluence.

May 17, 2005

Looking for command line To-do app

I'm looking for a command line to-do app for UNIX-based systems. It must work on a Mac, though.

I don't need no fancy text-based GUIs, just command line.

Each to-do must have the following fields:

  • body of text;
  • optional due date;
  • a set of tags.

That's it.

It's so little that I though of writing it myself... I'm just curious to see if there is anything like it already.

BTW, I know about Remind, but although powerful, it's a calendar application, not a to-do app.

March 05, 2005

Apache 2.1

I just noticed that Apache 2.1 documentation is available in the usual place.

Some new features, the most interesting being mod_proxy_balance.

I'm still biased to Perlbal because of the internal redirection to a local file feature.

February 05, 2005

Using mairix with Mail.app

I was reading Sam Tregar post in use.perl regarding mairix and I though: "that would be cool with Mail.app and my bazillion folders...". At least until Spotlight gets here...

So after 15 minutes trying to understand how Mail.app stores the IMAP messages locally (it stores them in a mh folder, at least similar enough for mairix), I did a small .mairixc, set the output as mbox into a newly created folder, and pointed mairix to a incoming IMAP folder.

Run it once without parameters to index all the stuff, and run it again with a string to query the database.

Matched 82 messages

Whoa! Already? :) Jump back into Mail.app, look at the folder created and lo and behold, they where there.

Very cool!

So, the steps you need to take (this is a beta how-to, ok? the steps will get better):

  1. Download and install mairix: it compiles cleanly in my Mac, but the install failed for some reason, just copy the binary to someplace in your $PATH;
  2. Create a Results folder on you Local Mac. It must be created in the Local Mac.
  3. Use my modified .mairixrc and adjust the following variables:
    1. base: the base where all your Mail.app info is stored, usually /Users/**your_short_name**/Library/Mail;
    2. Comment all the lines starting with maildir and mbox;
    3. mh should be the path of one of your folders in a IMAP account, something like IMAP-**name_of_account**/INBOX/Sent.imapmbox/CachedMessages. One way to find this out is to run this command (find ~/Library/Mail -type d -name CachedMessages) from the terminal. You can put as many lines as you want;
    4. mfolder should be changed to point to your results folder that you created above. If the name is Results, mfolder should point to Mailboxes/Results.mbox/mbox;
    5. Remove the comment in the mformat=mbox line: this specifies the result folder as a mbox-style folder;
    6. Point database to a place in your home directory: mine is /Users/melo/Library/Mail/mairix_database;
  4. run mairix once. It indexes all the folders you specified in step 3;
  5. now query the created database: mairix some_string - it should display the number of messages found. Jump back into Mail.app, check the Results folder and they should be in there.

Don't forget to run mairix from time to time to update the database. Use Cronix or edit a crontab maybe.

Next steps: I only indexed one folder as you can see from the example .mairixrc. I need to write a small perl script to generate my .mairixrc file with all my mailboxes, and do a AppleScript to call the mairix command with the query.