Blogs

Time Out 2: Dock vs status item

Without a doubt, the most popular request for Time Out over the years has been the ability to not need to be in the Dock. The second-most popular request is a countdown in the menubar.

These feature requests are related, as if the app isn't in the Dock, it should be in the menubar, otherwise there's no real convenient way to access its settings.

Your wish is my command: both of these requests have been granted in version 2 (and much more). A countdown can be displayed in a menubar status item, which when clicked displays a popover listing the breaks and more options.

Here's a blurred screenshot:

Breaks can be manually started, paused, etc from this popover. Clicking on an item will show it in the preferences window, enabling you to configure the breaks.

There is a preference to control whether or not Time Out appears in the Dock, and the appearance of the status item can be configured, to change the icon and countdown or time of the next break, among other options:

It is currently technically possible to not have Time Out in the Dock or status menu, but then the only way to access the settings would be to open the app from the Finder. Which some people might like, perhaps.

When I first created version 2, I had the scheduler and status item in a helper process, separate from the main app with the preferences window. Later I merged the two, as that proved a bit unreliable and more complex. But now I'm reconsidering the design, as it turns out that the status popover doesn't work when an app is fullscreen.

So I'm thinking about a number of options for a redesign:

  1. Go back to the previous design, with the status item in a helper.
    • Pros: consistent working status popover, crash-proofing.
    • Cons: more complex architecture; had issues with prefs not loading; delay opening settings window while app loads.
  2. Make the app only use a status item; no option to show in the Dock.
    • Pros: simplified UX; could remove menus; status popover would always work.
    • Cons: some people might like to access via the Dock.
  3. Change the prefs to either show the status item or be in the Dock, not both.
    • Pros: the status popover would always work, when enabled; people could still access via the Dock.
    • Cons: two UX styles; no countdown in Dock mode.
  4. Always just show the settings window when the Dock is shown, or popover when no Dock.
    • Pros: the status popover would always work when no Dock; could still have status countdown.
    • Cons: two UX styles.

I am currently leaning towards the last option, as that seems like the best of both worlds: the ability to show or hide the Dock icon, and a countdown status item available with either. If the Dock icon is shown, clicking on the status item would be equivalent to clicking on the Dock icon, bringing the app to the front. If not, it'd show a popover for quick access, and only bring the app to the front if you want to edit something.

What do you think? Would you want to show or hide the Dock icon? Do you want the countdown item? Let me know in the comments below. Alpha testers can reply here if you don't mention any unannounced features, or in the private alpha forum.

Developer: NSButton drawing issue

A post for developers, though also related to Time Out 2.

One of the features of Time Out 2 is a sidebar listing the breaks and options, as you could see (blurred somewhat) in my previous post . The sidebar includes a couple of buttons that appear when you hover the pointer over a row, enabling you to manually start or pause that break.

A vexing issue I had, though, was that the button didn't draw correctly. If you look closely at this screenshot, you may notice that the background of the text and the remainder of the button content don't match — there's a visible outline around the text:

That is rather ugly. I'm not sure exactly what causes it, but presumably it's related to being in a sidebar list, and perhaps an issue with title-less windows (I've seen some other issues, too).

Regardless, I wanted to fix it. After a bit of experimentation, I found a simple solution: a subclass of NSButtonCell to override the -drawTitle:withFrameinView: method, which as you might imagine is responsible for drawing the title text. The override simply invokes the superclass, and returns the full button rect instead of the rect of the text itself:


@interface DejalButtonCell : NSButtonCell

@end

@implementation DejalButtonCell

- (NSRect)drawTitle:(NSAttributedString *)title withFrame:(NSRect)frame inView:(NSView *)controlView;
{
    [super drawTitle:title withFrame:frame inView:controlView];
    return frame;
}

@end

That seems to do the trick:

Filed Radar #22491410.

Time Out 2 teaser

As you may know, I'm working on a major upgrade of my popular break reminder tool, Time Out. Version 2 has been in the works for quite some time, in between working on contract work and updates of Simon, Pack, and other apps.

I've recently made some significant progress, and although there remains much to do, I think it's time to start teasing a little about the new version.

So without further ado, I present your first glimpse of the app (other than the icon, which I showed previously). A heavily blurred screenshot, admittedly... but you may be able to glean something about it.

Want to see more? How about actually try the current version? No need to wait: licensed users can apply to become alpha testers, and actually use the latest builds now (version 2.0a13 was released a few days ago). If you've made a donation, and are using Yosemite or later, you can contact me to request to join the alpha team, or to get more information.

Otherwise, stay tuned for more screenshots and information about the upgrade over the coming months. (Yes, I fully expect it'll be a few months before it's finished, though who knows; it'll be done when it's done.)

Simon 4.1 released

Announcing the general release of Simon version 4.1!

This update is free for licensed customers of Simon 4. It includes several significant improvements and fixes.

Redesigned web feature

One of the most noticeable changes is a redesign of the Web (HTTP) feature. It now uses a list of pages including Parameters, Headers, Cookies and Other. Clicking on one shows the corresponding page.


Support for custom headers

Another much-requested enhancement to the Web feature is support for custom headers. This enables you to send extra values to the server, for example a "User-Agent" so the server thinks the request is coming from a specific web browser.


Load dynamic web content

Many websites nowadays use JavaScript to load additional content after the initial HTML is loaded, for example to incorporate updating values from a database, or activity tracking, and other uses. Previously, Simon wouldn't see that dynamic content — it only looked at the base HTML. Now, you can enable a new option to load the dynamic content a specified number of seconds after the base HTML loads, to incorporate such later changes.


Plus much more

There are many more changes, including various tweaks to the UI, moving the Delete function to the Edit menu, adding a crash reporter to make it easier to capture issues, and localization improvements (including adding Chinese).

Read the release notes for full details of the changes.

Download Simon 4.1 now!

Simon 4.1b5, 4.1b6 and 4.1b7 released

Oh look, another beta!

  • Fixed an issue in the previous betas with the Username and Password fields in the Web feature.
  • Simon now uses the third-party Fabric Crashlytics framework to automatically capture crash reports. Previously it would attempt to ignore crashes, so it might crash a little more than before, but hopefully not. Automatically aggregating crash reports will enable faster fixing any that occur.
  • If a crash occurs, Simon will now display an assistant window on next launch to ask for information about the crash, which may help trace the cause. There are also optional fields for your name and email address, in case there are any questions.
  • Updated a few pages in the help book.
  • Integrated a German translation into the help book.

EDIT: A quick update to fix another couple of issues:

  • Fixed a crasher in the Web feature when quickly editing custom headers or cookies.
  • Fixed an issue in previous betas with the Web feature when using a username and password.

EDIT 2: Hey why not make it a trio: another quick update with some further tweaks of this area:

  • Fixed another crasher in the Web feature (caused by earlier beta changes).
  • Fixed an issue in previous betas with the Web feature when editing Parameters values.

Download Simon 4.1b7 now!

Simon 4.1b4 released

One last beta, with just localization changes. English customers can feel free to skip this update if you like, though it's trivial to update.

  • Added Chinese localization, thanks to WeiOSX. Anyone familiar with Chinese, please provide feedback on this work (any issues or improvements).
  • Removed Japanese localization, as it has not been updated for a while. If anyone experienced with Japanese localization would like to take over this, please get in touch.
  • Updated the German and French localizations in some of the plugins (where they hadn't been used before).

Download Simon 4.1b4 now!

Introducing zCloud

I'm pleased to introduce zCloud, a new app in the Mac App Store to quickly and easily share screenshots and other files.

zCloud lives in your menu bar, and has shortcuts to take screenshots, upload them to Dropbox, and place a link to share them on your clipboard. Just hit the shortcut then paste the link to share with co-workers, friends or family.

You can also drag any file to the menu bar icon to upload and share it.


The preferences enable you to choose what happens when you upload a file, and enable automatically uploading screenshots from the Desktop:

zCloud can even watch any number of folders to automatically upload new files:

The screenshot shortcuts can be fully customized:

The history of uploaded files can be viewed via the menu bar icon, enabling re-sharing, viewing or removing previous items:


zCloud was written by Dejal, as a contract project for zFoundry, LLC. To find out more about Dejal's consulting / contract development service, visit the Dejal Consulting page.

Learn more about zCloud via the zCloud site or the Mac App Store. Available now!

Simon 4.1b3 released

One more beta with a few fixes, for good measure. This will probably be the last beta before general release; please let me know if you find any issues.

  • If the When pop-up menu for a test filter is changed to None, the filter plugin controls are now removed, as expected.
  • Changed the (-) button to set the When pop-up menu to None for the last filter or notifier in the test.
  • Fixed an issue where the Preview source wouldn't finish loading if the Preview is displayed on launch of the app.

Download Simon 4.1b3 now!

Simon 4.1b2 released

Just been a couple of days, but here's another beta of Simon 4.1, with some exciting changes:

Redesigned Web feature

  • The Web (HTTP) editor has been significantly redesigned, to use a list of pages including Parameters, Headers, Cookies and Other. Clicking on one shows the corresponding page.
  • The Method pop-up menu is now on the Parameters page, since it indicates how the parameters are sent.
  • The Username and Password fields are now on the Other page; they are only useful if you connect to a server that has an authentication challenge (as displayed in a web browser via a sheet; not the same as a in-page form-based login).

Web feature support for custom headers

  • The new Headers list enables you to add custom headers to send with the request, e.g. Accept, User-Agent, etc.
  • Note that sending a request via Post will set the Content-Type and Content-Length headers, overriding any you may add.

Download Simon 4.1b2 now!

Simon 4.1b1 released

Time for an update to Simon! This first beta release includes:

Support for dynamic web content

  • Added an option to the Web (HTTP) service to enable capturing the rendered source some interval after the base HTML is loaded, to support including dynamic changes from JavaScript, as is more and more common nowadays.
  • Now does Post requests via the more compact application/x-www-form-urlencoded content type, instead of multipart/form-data. (Please let me know ASAP if this breaks any of your POST tests.)
  • Updated the web helper to 64-bit.

Other changes

  • When adding a new test with the Preview displayed, now displays a message saying that there's no location, instead of making the test a failure immediately.
  • Changed the display of status icons in the Tests list to support the Use simple status icons preference option (that uses just green & red instead of fading colors over time).
  • Moved the Delete menu item from the File menu to the Edit menu, to match the placement in most other apps.
  • Fixed enabling and disabling of menu and toolbar items depending on the selected list items.
  • Fixed a very vexing code signing issue with the Growl framework.

Download Simon 4.1b1 now!

Pack 1.2 released

It's my birthday today! To celebrate, I give you a gift: a redesigned Watch app for Pack!

Like many developers, I was excited by the ability to write an app for the new Apple Watch, so I wrote one before the Watch was actually available: Pack 1.1.

And like many developers (e.g. Marco's Overcast), once I actually had a Watch and used my app on a real device, I realized that my initial design wasn't all that good.

I had thought that scrolling a long list of items to pack, like on the iPhone, would be annoying on the Watch. So I split the packing list up between two screens: a list of categories (or other groupings), where you tap on one to drill down to the items within that group.

In practice, that was cumbersome. Scrolling long lists is actually really easy and fast with the digital crown (or even swiping), and realistically most packing lists aren't all that long, especially as you get towards the end of packing. Having to go back and forth between categories was a pain.

So for version 1.2, I redesigned the Watch app. I collapsed the two screens into one simple list, with headings for groupings.

I also added a Force Touch menu to change the grouping (between by item name, category, or person), and to mark all remaining items as packed (or mark all as unpacked).

I also found, as many others have, that going to the app home screen is less preferred as a way to launch apps. The best way in most cases is to use a Glance from the watch face. So I also added a Glance to Pack, which indicates the number of items still to pack. Now one can simply tap that to launch the full app.

Here are all the changes in version 1.2:

  • Redesigned the Apple Watch app to simplify the layout, with all items in one list like in the iPhone app.
  • Added a Force Touch menu in the Watch app, with buttons to change the arrangement and to mark all items as packed or unpacked.
  • Improved the appearance of the Watch screen when all items have been packed.
  • Now automatically updates the Watch app when making changes in the iPhone app.
  • Fixed a crash when launching the Watch app in some circumstances.
  • Added a Glance on the Watch, as a quick indication of the number of items remaining, and a quick way to get back to the app.
  • The iPhone and Watch apps now arrange by category by default (your selection is still remembered).

Learn more about Pack, or download for free on the App Store.

CocoaConf PDX

At the end of last week I attended my first conference since WWDC07. That's quite the hiatus!

This time it was a much smaller conference: CocoaConf PDX, a small two-day touring conference organized by the Klein family, which visits a number of cities each year.

Now that I'm doing new contract work (in addition to my own apps), I thought it'd be good to stretch myself a little outside my comfort zone with some networking. What better way to start than a small conference in my home town?

Despite being in Portland, I stayed at the conference hotel — mainly because I live about an hour away, and wanted to avoid that commute. The hotel is quite nice, for one by the airport — a nice foyer with ponds and streams, and all rooms are two-room suites. I put in for an upgrade to a "premium" room, and got that, so enjoyed additional benefits like free snacks.

One bit of pre-conference excitement (and hassle for some attendees) was the arrival of President Obama in Portland. I happened to catch Air Force One coming in for a landing, and the motorcade as he and his entourage headed downtown.

The conference provided some nice swag, including a helpful booklet with information about the sessions. Unfortunately, many of the sessions were rescheduled at the last minute, but I still got to attend all of the ones I most wanted to see. Perhaps in the future they'll use an app, so the information can be updated dynamically?

Some conferences are single-track, meaning that everyone attends the same sessions. Others (like WWDC) are multi-track, with a number of simultaneous sessions to choose from. There are certainly pros and cons of each — a single track means more opportunities to meet other people, but could mean having to sit through (or skip) sessions that aren't interesting... while multi-track gives more choice at the cost of fewer personal interactions.

I liked the balance that CocoaConf had: some single-track sessions, and some in three tracks. Plus 15 minute breaks between sessions, and catered lunches and dinner. So there were plenty of opportunities to meet new people, catch up with old friends, and of course learn about the topics that are most interesting (while also expanding one's horizons with new topics).

The circular tables helped with meeting new people — better than the rows of chairs at WWDC, where the only interaction is in the hallways or queues.

Another fun event at the end of the first day was a performance of James Dempsey and the (Conditional) Breakpoints, the biggest group in Cocoa rock.

I recorded a bootleg of their final song of the evening, The Liki Song:

Overall, it was an excellent experience. I'm very glad I attended, and definitely plan to go again next year. I'm also thinking about other conferences that I could participate in... probably not WWDC this year (even the alt conf stuff), but I'm considering the new Release Notes conference in October, as a more business-focused one, though there are many other excellent options.

Simon tip: Simon Extras

Dejal Simon is a powerful and flexible website & server monitoring tool. One of the reasons it is so flexible is that in addition to the many built-in services, filters, notifiers & reports, you can extend it by using or writing custom scripts (or port sessions).

Simon comes bundled with many examples of such scripts; check out the Services, Filters & Notifiers lists and look for the items with a "Script" subtitle. You can inspect and edit those to customize them to suit your needs, or use them as inspiration for your own.

As an additional resource, the Simon site has an Extras page, which lists several more scripts that customers have contributed over the years. Some of which have later been bundled with the app, but some are only available there.

The Simon Extras page is organized by feature kind: Service Scripts, Filter Scripts, Notifier Scripts, Report Templates, and Other Goodies (including a way to add multiple tests, an extended siren sound, and a script to monitor a FTP site). There's also info for developers on writing custom plugins.

I occasionally add new customer-contributed items to the Simon Extras page. For example, yesterday I added a notifier script provided by Carlos Leal to use the third-party Plivo site to send a SMS message, as an alternative to using Clickatell or email.

Installing scripts is easy:

  1. Decompress the downloaded archive, if you browser didn't do it for you;
  2. Launch Simon if not already running;
  3. Go to the Services or Notifiers list, as appropriate;
  4. Click the New toolbar button (or via the File menu);
  5. Choose the Service Kind (or Notifier Kind) button to show the service (or notifier) page.
  6. Choose the Script service/notifier kind, if not selected by default.
  7. Click the Open Script... button and choose the script file.

The script is copied into Simon, so there's no need to keep the downloaded file around after loading it.

If you create or modify a script that others might find useful, please share it! Send me an email with the script attached, along with a description, and I'll be happy to add it to the Simon Extras page.

Pack 1.1.1 released

Quickly following the 1.1 update, which introduced the Watch app, here's version 1.1.1 with an important fix:

  • All items are now selected by default, so you can begin packing immediately.
  • Fixed a crash when adding a new item.

Learn more about Pack, or download for free on the App Store.

Simon tip: enable PHP for scripts

Simon is a very powerful server monitoring tool. One of the reasons for this power is the ability to create custom services, filters and notifiers using a variety of scripting languages.

While languages like AppleScript, Perl, Python, Ruby and shell scripts work out of the box, many people are more comfortable with PHP, commonly used server-side for web pages. But that is not enabled by default in OS X.

It's not too difficult to make it available for Simon scripts, though... if you feel comfortable using Terminal.

Fire up Terminal and enter this command to edit the Apache configuration:

sudo nano /etc/apache2/httpd.conf

You'll be prompted for your password (for the sudo command), then presented with an editor screen.

Press Control-W to search for php. This will move the cursor to this line:

#LoadModule php5_module libexec/apache2/libphp5.so

Delete the leading # to uncomment this line.

Then press Control-O to save the change, then Control-X to exit the editor.

Finally, for good measure, tell the Apache web server to restart:

sudo apachectl restart

That's it! You should now be able to run PHP scripts in Simon.

Pack 1.1 (with Watch app) released

The Apple Watch is available for pre-order and in-store tryout today, and will be delivered starting April 24 for those who stayed up late enough to get their order in quickly. Did you order yours? What did you get? Let me know in the comments.

Personally, I ordered two Watches: a 42 mm for myself and a 38 mm for my wife, Jenn:

Also available today is an update to my Pack iPhone app, to include an Apple Watch extension to help you even more quickly and easily pack for trips.

The Watch app for Pack is very simple: the idea is that you choose what to pack on your iPhone, then you can put the phone in your pocket while actually stuffing your clothes etc into your suitcase, and just tap on your Watch to mark things as packed.

This will be much more convenient. I've used Pack for my own travel for several years (as a pre-release prototype), and while it is quite easy to mark things as packed, having to take my iPhone out of my pocket while I have my hands full of clothing can be a little inconvenient. Being able to just tap my watch will be so much easier.

Since I don't have a Watch yet, I've only been able to test this in the simulator, but Apple has tested and approved it (after a couple iterations of fixes and clarifications), so I'm confident that it'll work well. I'm sure I'll add further features in a future version, based on my and others usage. If you already have a Watch, please try it and let me know what you think!

Here's a brief looping demo of the Watch app in action:


Learn more about Pack, or download for free on the App Store.

About Simon Express and Simon Free

Did you use Simon Express or Simon Free for the Mac App Store? As you have probably seen by now, they are no longer available. I was unable to update them, so announced back in October last year that I'd remove them, which I did when Simon 4.0 was released.

I thought I'd go into this in a bit more depth today.

So, why wasn't I able to update them?

When the Mac App Store was introduced back in 2011, apps could be included without too many modifications or special requirements. So I was happy to provide special editions of my Simon app, which I called Simon Express and Simon Free. The Express edition enabled unlimited tests (at a time when the standard edition had license limits on the number of tests, which is no longer true), but was streamlined to only provide a basic set of services, filters and notifiers, without the ability to add or edit them. Simon Express sold for $59.99. Simon Free was the same, but was limited to only a few tests, and available at no cost. These seemed like useful editions for people who didn't need the full power of the standard edition, and preferred the convenience of the Mac App Store.

But as of June 2012, Apple threw a spanner in the works: they required that all apps in the Mac App Store be “sandboxed” — where the apps can only access their own private folder, among other restrictions.

Since Simon is a powerful tool, capable to monitoring arbitrary folders, accessing network services, running customizable scripts, etc, it wasn't feasible to sandbox Simon without cutting out a lot of functionality, which I didn't want to do. Even the cut-down Express and Free editions would have had to be severely restricted. So it just wasn't doable.

For a couple of years, I left the Express and Free editions on the store, without updates, but I felt bad about them falling behind the standard edition, and so when version 4 came along, it was time to retire those editions.

But where does that leave people who bought the Express edition?

If that's you, you are of course welcome to continue using it (or the Free edition) for as long as you like. But to take advantage of the attractive new user interface and enhanced features of version 4, you'll need a Simon 4 license.

I didn't want to make you have to buy a full license, though. So in version 4 I added support for treating Simon Express as a full version 3 license. If you have Simon Express installed (or have previously used it with your Mac), a “Simon Express” item will automatically appear in Simon's Licenses window. So all you need to buy is a Simon Upgrade license.

Furthermore, if you don't already have data for the standard edition, Simon 4 will automatically recognize and import your Simon Express data, enabling a smooth transition from the old app.

In the months since removing the Mac App Store editions, I don't recall having received any negative feedback about this move. I think most people understand... and frankly the Mac App Store editions were never huge sellers; most people preferred the power and flexibility of the standard edition.

The Mac App Store is a useful tool for discovery of apps that fit within Apple's rulebook, but some apps like Simon, and other third-party ones like BBEdit, Coda and more don't fit in that model. And that's fine.

I will continue to include my apps in the Mac App Store when I can... while also selling directly from the Dejal site.

20th wedding anniversary

Today marks the 20th anniversary of marrying my wife, Jennifer. My how time flies... it seems only yesterday when I posted about our 15th wedding anniversary — read that post from five years ago for the story of how we met, got married, and more.

I wanted to do something special to mark this milestone, so a couple of weeks ago I did something I've been meaning to do for decades: I edited the videotape footage of our wedding into a short movie (about 5 minutes).

It begins with part of a TV news report that aired shortly after our wedding. As that previous blog post described, we met via the internet in an age when that was new and rare, so we were interviewed by local TV and newspaper reporters.

The movie then has clips from the ceremony and reception, which were both held near the beach at one of our favorite spots, Long Bay Beach in Auckland, New Zealand. It concludes with some scenes from our honeymoon in the credits.

Take a look:

20 happy years, full of love and adventures. Happy anniversary Jenn; I love you!

Simon tip: reorder filters, notifiers & more

One of the many enhancements in Simon 4 is the ability to rearrange the order of filters, notifiers, reports and auto pause times while editing a test.

Before, the only way to reorder them after adding was to remove and re-add, but now you can change the order very easily. Simply click and drag anywhere outside a control to move a filter etc to a new position.

Here's a looping video example:

$Cashtag

This morning I saw a blog post by Casey Liss (of ATP and Analog(ue) fame) about the new Square Cash service.

The general idea is to reduce the friction on making payments. You've probably seen or used the Square card reader in indie coffee shops etc. This new service appears to take it to the next level, only requiring a link (similar to a hashtag, hence the wacky name) to initiate a payment. When you go to a $Cashtag page, you're presented with a big field to enter a dollar amount, and fields for a debit card number and an optional note.

It's easy to sign up to receive money, too, via an Square Cash app for iOS or Android. You can then claim your own $Cashtag.

I have, of course, signed up as $dejal. So if you want to send me some money, feel free to use this. It isn't suitable for buying licenses for Dejal products, but as an extra donation of appreciation, this could be a good option.

It'll be interesting to see if this becomes a popular service.

Syndicate content