Simon tip: groups

One feature request that I received many times for Simon was the ability to organize tests into folders or groups — especially useful for people with lots of tests, or simply want to collect all tests relating to a particular server or client together.

Tests can be grouped together however you wish. It’s easy to create a group: simply choose the New Group command in the File menu or the + pop-up menu, then drag the tests into the new group. Even easier, you can just select some tests and choose the New Group with Selection command to make a group and move those tests into it in one step.

New menu

Groups appear with disclosure triangles, enabling them to be collapsed. The group row shows a summary of the contents, with any common values displayed for easy reference. And similarly, the info pane shows a summary of the contained tests.

Tests

Groups can even be nested, if desired — you can have an unlimited number of groups within other groups, if that helps organize them.

But wait, there’s more! While grouping tests is perhaps one of the most-requested features, I didn’t stop there: you can also group services, filters, notifiers and reports in the same way!

Notifiers

When these items are grouped, they appear indented in the Kind pop-up menu in the test editor, so you can keep related items together:

Popup

I hope you enjoy this feature.

Simon tip: hide the Dock icon

Simon has a feature that many people have asked for over the years: the ability to hide the app from the Dock.

By default, the Dock icon is shown, but there is an option in the General Settings to hide it.

Why might you want to hide it? Maybe you want to keep your Dock as sparse as possible. Simon’s Dock icon can display the most interesting status, but maybe you don’t need to see that all the time, or you’re satisfied with seeing that only in the status menu. Since you’d probably want to keep Simon running all the time, treating it as a background-only app can make a lot of sense. Now you can!

General Settings

If you turn off the Show the Simon icon in the Dock checkbox, the app icon vanishes from the Dock, and also from the Cmd-Tab app switcher. Note that if you have chosen the Keep in Dock option in the Dock menu, the icon will linger, in an inactive state; you can disable that or drag the icon out of the Dock to remove it.

When Simon is hidden from the Dock, you can still activate the app via the status menu, if you have that enabled — and the app will automatically turn it on when you turn off the Dock icon, as a convenience. If you don’t want the status menu, you can turn it off again… in which case the only way to activate the app will be to click on one of its windows, if any are visible, or open it from the Finder.

One thing to note is that as a necessary side-effect of hiding the Dock icon, Simon will no longer have a menubar. It’ll truly be a background-only app. When you display the Simon Monitor window, the menus won’t change from whatever other app you were using. This isn’t a problem for most functions, as the toolbar buttons and sort drop-down menu options cover most menu commands. But for app functions like checking for updates, accessing preferences, etc, when the Dock icon is disabled a special action menu is added to the toolbar. For power users, the keyboard equivalents still work, too — so you can press Ctrl-Cmd-1 to switch to Preview mode, for example.

Actions

I know that this is an exciting feature for many customers. For anyone who wants Simon to “disappear” into the background, try turning off the Dock icon. You can always turn it back on again. No restart required.

Simon password protection

Simon includes a password feature, that can be used to require a password when Simon is launched or activated. This provides some level of security to prevent unauthorized people from accessing the app. It doesn’t encrypt data or any other changes, it’s just a simple access control.

By default, a password is not required. If you want to require one, open up the General Settings. Notice the Choose Password… button and the text to the left indicating that a password hasn’t been set:

Password not required

Click the button to display the password sheet. If a password hasn’t already been set, the first field will be disabled (and display “None”). If one has been set, enter the existing password there. The next two fields are for the new password; enter the same one in both, or leave them both blank to disable the password feature. If entering a password, you should also enter a hint that will remind you of the password (without being too obvious):

Password sheet

After setting a password, the text in the Settings window will change to indicate so:

Password required

When a password has been set, whenever you activate Simon it will display an unlock sheet, asking for the password. It includes a Quit button to quickly stop Simon, and a Cancel to deactivate Simon. After two failed attempts, it will display the password hint (if any); after two more failed attempts, it’ll disallow further attempts until after you quit or cancel:

Unlock

I expect that most people won’t need this feature, but for those who do, it should prove quite useful.

A Simon filters case study

Before I moved the Dejal blog to WordPress, I had a test that was bundled with Simon called “Dejal posts” (you may still have this if you’re a long-time customer). This was a great example of using multiple filters to narrow down the output of a Web Page service. While the URL it monitored is no longer valid, it remains a useful example for you to learn more about creating your own filters.

The general idea of this test was to look at a “Recent Posts” page of the Dejal site, which listed all recent blog, forum, FAQ etc posts and their comments, and output some tidy text describing the most recent one, along with a changed state when a new post or comment is added.

Firstly, here’s the Service page; nothing remarkable here (the cookies are automatically recorded, and unimportant for this test):

Service

The most interesting page is the Filters one:

Filters

When you check the test and look in the Activity log, you can see the output from each of those filters (from bottom to top):

Activity

Another way to view the output is via the Preview pane, which includes not only the service response and headers, but also the full output of each filter, to help you diagnose each step.

Here’s the output of the service; the full HTML of the web page:

Preview0

Let’s break down each of the filters, via the Preview filter output.

The first filter, a Block one, takes the service response as its Input, and has Start text of <tbody> and End text of <td class="replies">. This finds the first occurrence of each of those bits of HTML in the service response, which corresponds with the most recent post information:

Filter1

This filter outputs that:

Preview1

The second filter is another Block one. It takes the output of the first filter as its input, and narrows it down further to just the title of the post. Notice that it also uses options disclosed on the right-hand-side of the filter configuration: it looks for the second occurrence of the Start text, searching from the beginning of the input:

Filter2

The output of this filter is the post title:

Preview2

The third filter is yet another Block (it is one of the most useful filters), but the input is different: this time it uses the output of the first filter, instead of the previous one (as is the default). It also has an option to look for the third occurrence:

Filter3

It extracts the author information:

Preview3

Filter number four is different. It uses an Ignore Links filter to extract out just the author name from the previous filter output. The previous filter doesn’t do this as when you were not logged in on the Dejal site, only the name is included (in which case this filter has no effect):

Filter4

The output is just the non-HTML part of the input:

Preview4

Next we’re back to a Block filter again, but this time looking at the original service response text to extract the number of replies to the post:

Filter5

This should always output a number:

Preview5

We then use a Singular or Plural filter, to take the number found in the previous filter and output “reply” if it is one, or “replies” for any other number:

Filter6

As seen in the preview:

Preview6

The last filter puts it all together: an Override Custom filter uses variables to combine the output of several filters in a nice readable way. In this case all the variables are variations of the filter output, but other variables are available too. Something that isn’t immediately obvious is that you can insert numbers to reference specific filters (otherwise it refers to the previous one):

Filter7

Which results in:

Preview7

So now that we’ve got some nice output text, what do we do with it? Of course, you can just see it in the Tests list, if you have the last change and failure displayed:

Tests

But you’ll probably want to get a notification:

Notifiers

I hope this case study is helpful. Most tests don’t need a series of filters like this, and there are other ways to achieve similar effects (like writing all the logic in a script), but it can be very useful when you want it. You can use similar techniques in your own tests.

Why are my Simon tests timing out on my Apple Silicon Mac?

If you install Simon on an Apple Silicon (M1, M2, etc) based Mac, you may notice Web Page tests timing out.

That is because the Web Page service uses an embedded helper tool to load the HTML in a separate process, to improve performance and reduce the risk of crashing Simon. But currently this helper is Intel-only. Some other helpers, e.g. to send emails or upload reports to a remote server, are also Intel-only.

This is fine, but it means that you need to install Rosetta, Apple’s emulation layer to enable running Intel apps on Apple Silicon.

The main Simon app is universal, so launching it won’t prompt to install Rosetta, but you can override that by checking the “Open using Rosetta” option in the Finder’s Get Info window:

Open using Rosetta

Just remember to uncheck that option after you’ve opened Simon, so subsequent launches use the universal code.

Using Simon to watch YouTube subscriber counts

A customer sent a query, asking how to use Simon to monitor the subscriber counts on YouTube channels.

This is easy for Simon to do, by having Web Page tests for each YouTube channel, each with a filter to extract the subscriber count, and whatever notifier you wish.

The first step is to add a Web Page test for a YouTube channel, and look at the HTML output in the Preview pane, to find how the subscriber count appears.

Test

For example, for my Sinclair Trails channel, the HTML includes:

    "subscriberCountText":{"accessibility":{"accessibilityData":{"label":"30 subscribers"}},"simpleText":"30 subscribers”},

Yes, I currently only have 30 subscribers… rather sad. Please subscribe to help me reach a more respectable number!

A sensible default choice for a filter is the Block one, though in this case a better choice would be the Find Regular Expression filter. But if you want to have several tests with the same notifier configuration, an even better choice is to create a new custom notifier, so you don’t have to configure the notifier for each test.

A regular expression to extract the subscriber count from that HTML could be:

    subscriberCountText.+?simpleText\":\"(.+?)\”\}

This will look for text starting with “subscriberCountText”, some more text, then “simpleText”:"” , then capture the desired text up until “”\}” .

In my case, that will result in:

    30 subscribers

To make a new filter for this, you can go to the Filters page in Simon, and add a new filter named “YouTube subscribers” (or whatever you prefer).

Then choose Find for the Filter Kind, and Regular Expression from the find options menu:

Find options

Then enter the expression as the find text, and choose Capture 1 as the output:

Custom filter

Click Done, then go back to your YouTube test, and choose this new filter on the Filters page:

Test filters

This will output just the subscriber count:

Filter output

You can see this output in the Activity log:

Activity log

Or you can add a new Email notifier to email the filter output using the {FilterOutputText} variable:

Email notifier

And of course use that notifier in your test, along with whatever other notifiers you wish:

Test notifiers

Then you can add more tests for other YouTube channels you want to monitor, specifying your YouTube subscribers filter for each. For example, CGP Grey has a few more subscribers than me:

CGP Grey test

I hope this helps!

Dejal year in review: 2022

As we start a new year, let’s review what happened with the Dejal apps in 2022:

Time Out icon Time Out

My popular break reminder tool, Time Out, had a significant update in 2022, to version 2.9, adding a status message in the sidebar to indicate why a break was skipped etc, the ability to schedule and exclude breaks using calendar events, support for Monterey focus, an option to hide the Pause function, new break options to pause or reset an individual break, and much more. It finished the year at version 2.9.1.

Simon icon Simon

My pro app to monitor websites and servers for changes and failures, Simon, had a feature update, to version 5.1. This added the ability to disable rendering a Web Page test, the addition of an automatic data backup, support for macOS Ventura, updated example tests, and several other improvements and fixes.

Pack icon Pack

Pack, a simple iPhone app to make it easy to pack for trips, didn’t have any updates in 2022. Now that I take my home with me when I travel, I rarely need to pack suitcases anymore. So I’m unlikely to update it, though I hope Apple leaves it available. If they eventually decide to remove it due to lack of updates, I’ll have a tough decision on whether to do an update, or discontinue it.

Date Stamp icon Date Stamp

Date Stamp, an iMessage app to provide customizable date stamp stickers, also didn’t have any changes. Since few people seem to use iMessage stickers anymore, I’m unlikely to update this, though I still think it was a fun concept, and turned out really well.

Date Stamp icon New Apps

I also have another couple of new apps in various stages of development. More about those below.

Consulting

Dejal also produces macOS and iOS apps for other companies, under the banner of Dejal Consulting.

SheetPlanner icon SheetPlanner

SheetPlanner is a pro-level outliner, planner, todo, calendar, and more. I spent 2022 working on an iPad edition of the app, plus work on a new kanban board view in version 4.0, both still in development.

NewsBlur icon NewsBlur

I have also continued to work on the iOS client for NewsBlur, a popular RSS reader. It recently had a big update with a new design and lots of other improvements.

I am currently fully booked up for the next several months at least, but am always interested in talking with potential new clients. If you have a macOS or iOS project you’d like help with (or a custom Simon enhancement), check out my consulting page for more information.

So how’d 2022 go?

The expected update of Time Out to version 2.9 (and 2.9.1) was completed, as was the update of Simon to version 5.1. And I made great progress on my consulting projects, too.

I mentioned a couple of new projects I was noodling on. One is on the back burner, but the other has had significant progress, and I’m using it every day.

What’s next for 2023?

What’s in store for 2023? As mentioned, I’m working on a new app; when not working on my consulting projects, I am concentrating on this new app. It’ll be a few more months before I’ve polished it up for release, but I’m confident that it’ll be this year. I’ve recently updated both Time Out and Simon, so don’t feel too much urgency for their next updates, though I have a lot of stuff planned for Time Out 3.0, so that’ll probably be next. Or I might opt to work on the other new app, since I’m keen to bring that into existence; another app I’d use daily. Scratching one’s own itch is a great motivation for developing an app (that’s how Time Out, Simon, and Pack all came about; Date Stamp was more of a fun idea to catch what could have been a popular new feature on iOS… but sticker apps never really caught on).

I also want to tweak the Dejal website a bit; it still doesn’t support dark mode or responsive design. And I want the new WordPress-based blog to match the style of the rest of the site. Though I’m tempted to farm those out to a web developer; I don’t have time to do it all, or much interest in web technologies.

And on the personal side, my wife and I will continue to explore the country in our motorhome, and blog about it at Sinclair Trails, and post travel timelapses on the YouTube channel (please subscribe!). I hope you’ll follow along there.

Thank you

Thank you and welcome to my new customers, and many thanks to the long-term customers who are still enjoying my apps, and of course my consulting clients. I really appreciate your support.

Simon tip: watching the Yellowstone gate cam

Here’s a fun example of using Simon for a purpose that may not be entirely obvious.

My wife and I had a big trip to Yellowstone National Park coming up, so I was curious about what the traffic was like to get into the park.

Conveniently, Yellowstone has a number of webcams that watch the park, including the west entrance gate, where we’d be entering.

So I thought I could leverage Simon to help me watch it over time — rather than keeping the web page open and watching it throughout the day, I can have Simon capture the webcam images to a local folder, then review at my convenience.

To find the URL of the webcam image, I used Safari’s web inspector:

Inspector

Then I added a custom service to Simon to download the webcam images to a folder:

Simon service script

That uses the curl command line tool to download the image and save to a local folder; the `date -v+1H +%Y%m%d%H%M%S` part of the path outputs the date and time in the format YYMMDDHHMMSS, adding one hour from my local time zone, since Yellowstone was an hour ahead of me at the time.

To schedule the captures, I added a test in Simon that checks once per minute, using that service. No filters or notifiers needed.

That results in a folder in the Finder with files like this:

Finder

I can arrow through them to quickly view them. And I can also do other things, like use the excellent Retrobatch app to convert them to a GIF:

Retrobatch

Click to view an example of the resulting GIF, showing the traffic flow from 06:00 to 18:00 on one day (the GIF is 61 MB, despite being scaled, so might take a moment to load); each frame of the GIF represents one minute, six frames per second:

That seems typical; it gets really busy around 06:30, and eases off around 12:30 every day. So a tip for Yellowstone visitors; enter in the afternoon! Of course, that really only works if you’re staying in the park, since it takes ages to get anywhere in the park. It’s a big place.

If you’re curious, I did several posts about this Yellowstone trip on my Sinclair Trails blog. Check it out!

Simon script example: Show & Screenshot

One of the major strengths of Simon, my website and server monitoring tool, is the flexibility it offers through the ability to write custom scripts in many scripting languages. Simon is plenty useful with the built-in services, filters, and notifiers, but the ability for customers to enhance it themselves makes it even better.

There are several script-based services, filters, and notifiers built in to the app, and others can be downloaded from the Simon Extras page.

One such example is the Show & Screenshot notifier script (click that link to download it). To install it, go to the Notifiers page in Simon, add a new notifier, choose Script for the notifier kind, click the Open Script… button, and choose the downloaded script.

This script simply opens the page in the default web browser, waits a few seconds for the page to render, then takes a screenshot of it. By default it’ll wait 10 seconds, and save to the Desktop, but you can customize those values; enter the path of a folder to save them to (the folder must already exist). Also specify how long to wait before performing the screenshot, in seconds:

Browser screenshot

And of course to use the notifier, specify it in the Notifiers page of a test:

Use notifier

Note that when this notifier is first used, macOS will ask for permission to capture the screen; until you grant that, it’ll capture an empty desktop.

Check out the Simon Extras page for other scripts. And if you create a useful script for Simon, please share it with others!

Simon 5.1 released

I’m pleased to announce the general release of an update of my website and server monitoring app for macOS: Simon version 5.1.

It includes the ability to disable rendering a Web Page test, the addition of an automatic data backup, support for macOS Ventura, updated example tests, and several other improvements and fixes.

Please Note

  • Simon 5.1 requires a minimum of macOS 10.13 (High Sierra).

New Web Page test option to render the page in the Preview

  • Added a new option to the Other page when editing a Web Page test to control whether or not to render the page in the Preview.
  • By default it is on, preserving the usual behavior.
  • But if you turn it off for a test, the Preview pane only shows the HTML source and filter output, instead of the rendered page.
  • Reload the Preview to show or hide the rendered page after changing the option.
  • This option is independent of the “Capture rendered source” option; that will render the page in a separate process.
  • This is useful for performance, or if you want to minimize the risk of malicious JavaScript on the page, or other side effects.

Web Page render option

Added an automatic data backup

  • Once per hour Simon will make a copy of its data into a dated folder within a Backups folder in the data folder.
  • Added a slider on the Advanced settings page to control how many backups to keep; defaults to 10.
  • Set to zero to disable the automatic backups.
  • When the maximum has been reached, it’ll remove older ones, so that half of the backups are for the most recent hours, and half are for previous days.
  • If you need to restore your data, turn off syncing if it’s on, use the new File ▸ Reveal Data Folder menu command to show the data folder in the Finder, quit Simon, then copy the folders from one of the backup folders to replace the Filters, Notifiers, etc folders.
  • If in doubt, contact Dejal for assistance.

Backups

Support for Ventura

  • Updated for Ventura (macOS 13), but still compatible back to High Sierra (10.13).

Plus several other improvements

  • Updated the example tests.
  • Added a File ▸ Reveal Data Folder menu command, to show the Simon data folder in the Finder.
  • Added an option on the Advanced settings page to show the Debug menu, as an easier way to toggle it.
  • Fixed filters not completing if the {FilterStatusNumber} variable was used.
  • Fixed an issue with loading data that doesn’t have any reports.
  • Fixed an issue with the font in the script editor and elsewhere.
  • Fixed a localization issue, and updated the French localization.
  • Fixed a crash with the Preview.

Want to try it?

If you are using the Setapp edition, it will handle that update for you.

If you are using the direct edition, you can use the Check for Updates feature in the app to update.

Otherwise, download Simon 5.1 now!