navigation mainnavigation blognavigation aboutnavigation contactnavigation photographynavigation applicationsnavigation widgetsnavigation codenavigation computerlabmanagementnavigation web
Status Screen Saver 1.1

Today, I’ve gone ahead and released the first update to Status Screen Saver. There was a ton of great feedback after the initial release and I hope to have taken care of a few features that people were looking for. Most noticably, there are five brand new modules available. There are a handful of other new changes, as well. Full release notes are below.

You can download it at the Status Screen Saver page.

  • New Features
    • Added module for Vienna <http://www.vienna-rss.org>.
    • Added module for Google Notifier <http://toolbar.google.com/gmail-helper/notifier_mac.html>.
    • Added module that displays the amount of battery left in your laptop.
    • Added module that displays the current time.
    • Added module that displays the computer’s uptime.
    • Modules can now scroll along the bottom of the screen, in order to avoid screen burn-in.
    • Modules can now be re-ordered in the configuration panel.
  • Changes
    • Modules now automatically resize to fit their content, so large strings do not get cut off.


Status Screen Saver

I just finished and released a new product that I am excited to present to everyone. For the longest time, I wanted to be able to show the status of some of my applications while my computer was running the screen saver, so that I could tell from across the room wether I had new emails or news items. As a result, I created Status Screen Saver. Basically, it shows the current status of a few applications in the status bar at the bottom of the screen and any other screen saver above it.

The best part about the implementation is that I made it very easy to add what I call modules. If you would like to see some other application in the status bar, it’s extremely easy to add it to Status Screen Saver, as long as that application works with AppleScript. All that is required is a .bundle file that contains an application icon and a AppleScript that returns a numeric value. I added three applications, (Mail, NetNewsWire and Twitterrific) that I use on a regular basis, but I’m hoping that other users will create modules for their favorite apps and Status Screen Saver can eventually come with a ton of bundles installed.

Anyway, you can download the new product at http://www.loganrockmore.com/StatusScreenSaver/. I hope that everyone else finds it as useful as I do.



A Better NSLog

I looked a bit today at improving the way I use NSLog() and wanted to share my findings here. Recently, I’ve had to use logging as a method of debugging while writing a screen saver, which has been unfortunate. However, I’ve been able to improve it using a #define in my code, inspired by the following sites:

  • The Big Bucket Blog just recently published a blog post which makes available a few custom BBTrace functions. These functions were a great starting point, but I wanted something more compact and that didn’t require adding extra files to my projects.
  • In the comments of the same blog post, Gus Mueller discusses his solution: a simpler #define within an ifdef block that removes logging in Release builds. This is great, but I don’t really need to worry about logging showing up in public builds since I tend to remove all of my logging before committing code to my VCS. Also, I didn’t want to have to add any flags in the target settings of my projects.
  • The Lap Cap Software Blog discusses logging in Leopard, with the goal of removing the log messages from the Console. Again, this isn’t important to me, but the interesting use of arguments to his JJLog() function are what helped me. Also, the idea of adding this code to the .pch file in any project was exactly what I was looking for.

So, after looking at these different options and deciding what information I’m looking for, I came up with the following directive:

#define LRDebug(...) NSLog(@"%s (%d) \n\t %@", __PRETTY_FUNCTION__, __LINE__, [NSString stringWithFormat:__VA_ARGS__])

With this, I’m able to send LRDebug() arguments exactly as NSLog() handles them, using a formatted string. Also, I tried to get the most readable logging I could, so I added the line break and tab after the function and line number. So, some code could call LRDebug(@"The path is: %@", path) and the log would read:

-[Controller awakeFromNib:] (23)
    The path is: /Applications/Mail.app

Perfect!



Mail Unread Menu 3.1

NNW Unread Menu iconI just released version 3.1 of Mail Unread Menu, which includes a few improvements and bug fixes to the Mail utility. In my opinion, one of the largest improvements is a change in the way that the menu is shown, so that we’re back to the NSStatusItem standard of having sharp corners at the top of the menu. I at least know that Shaun Inman will be happy with this change and that’s good enough for me.

Download version 3.1 or run “Check For Updates…” from the application’s menu.

  • New Features
    • Separated unread counts from mailboxes which are shared between accounts.
  • Changes
    • Simplified the way the menu is generated.
  • Fixes
    • Fixed an issue with a slow down when only getting count from Inbox.
    • Fixed small delay when running scripts.
    • Fixed issue if a custom icon could not be found.
    • Fixed an issue with the count showing 0 when sending an email.

[Update]: In the comments, Trevor Cortez pointed out a small bug with the newly released version 3.1. As a result, I released a version 3.1.1 which fixes this bug and also makes one small interface change.



MLB Schedule 2.0

MLB Schedule Icon I’ve just updated MLB Schedule to version 2.0, which includes a lot of major changes for the 2008 MLB Season. The majority of the changes have to do with the backend, which now uses PHP rather than Python. This allows the widget to refresh much, much faster when you activate Dashboard. The other most noticeable change is the background color changing based on the team that you have selected. Version 2.0 is available immediately and can be downloaded at the product page.

  • Scores are now retrieved and parsed using PHP rather than Python.
  • The background image is now based on the team colors of the selected team.
  • A slider for choosing the number of games was added to the preferences.
  • Moved the update notifier to the front of the widget, so that it’s more visible.
  • Changed all URLs from burgundylogan.com to loganrockmore.com .


Roundcube Domain Autocomplete Update

Roundcube LogoIn this post from a while ago, I modified the RoundCube web-based email client to autocomplete the domain when typing in the login name. Here are some updated instructions so that it works with the newly-released version 0.1.

Open program/include/rcmail_template.inc. On line 799, replace

$input_user = new textfield(array('name' => '_user', 'id' => 'rcmloginuser', 'size' => 30) + $attrib);

with the two lines

$domain = preg_replace("/^www\./", "", $_SERVER['HTTP_HOST']);
$input_user = new textfield(array(’name’ => ‘_user’, ‘id’ => ‘rcmloginuser’, ’size’ => 30, ‘onchange’ => ‘domainautocomplete(\” . $domain . ‘\’);’) + $attrib);

(Note: if your Roundcube installation is located somewhere like webmail.domain.com, then change “www” in the first line to “webmail”. Basically, that line just gets rid of the first part of the domain, so you’re left with “domain.com” )

Also in program/include/rcmail_template.inc, on line 73, after

$this->include_script('app.js');

add the line

$this->include_script('domainautocomplete.js');

Finally, in the directory program/js/ create a new file titled domainautocomplete.js and add this content

function domainautocomplete(domain) {
    
    var loginField = document.getElementById('rcmloginuser');
    
    if( loginField.value != '' &&
        loginField.value.indexOf('@') == -1 ) {
        
        loginField.value = loginField.value + "@" + domain;
    }
}


Mail Unread Menu and Tiger

After debating it internally for a while, I’ve decided that I am no longer going to be able to support Mail Unread Menu on Mac OS X 10.4 Tiger. Since I’m no longer running it as my primary OS, it’s much tougher for me to debug the application when there are issues with it. Since I’m just developing the application in my spare time and don’t have the time or resources that a normal software development team has, I can’t arrange to continue the support. These same reasons are why Mail Unread Menu remains donationware and I would love to keep it that way. Thanks for understanding.



Mail Unread Menu 3.0.1

NNW Unread Menu iconMany people were having some major issues with the newest version of Mail Unread Menu, which isn’t surprising, given the number of different types of Mail setups that exist out there. Earlier today, I released version 3.0.1, with a handful of bug fixes, to hopefully clean up most of the problems folks are experiencing.

There are a few more issues, which I’m working with users to fix, so expect another update soon. If you’re still having issues with Mail Unread Menu, definitely let me know and we’ll see if we can solve the problems.

You can download the new version at the Mail Unread Menu page.

  • Changes
    • Changed how the current frontmost application is determined, to improve Unseen status reliability.
  • Fixes
    • Fixed an issue when displaying only the count from the Inbox.
    • Fixed an error with preferences when upgrading from version 2.x to 3.x.
    • Fixed an issue where the menu would look odd when showing a very long string


LRPillTextField

When creating the new layout for Mail Unread Menu and NNW Unread Menu which shows a background behind the menu bar count, I needed to create a subclass of NSTextField to draw that background. I’ve decided to make this code available as LRPillTextField in the Code section of the site. Hopefully, others might find this useful.



BrowserNightly

I wanted a quick little script that I could use to easily update my Camino and WebKit nightly builds, so I put together BrowserNightly. It uses Python to parse out the URL of the nightly dmg file and runs shell commands to download and install the application into a specified directory. It’s a very lightweight and simple solution to this problem that I wanted to share, just in case anyone found it useful.




:: RSS Feed :: Archive :: Categories :: Admin