Happy 40th Anniversary, Mac!

[This is an updated repost from the 25th and 30th anniversaries.]

It’s the 40th anniversary of the introduction of the first Macintosh.

I first used a Mac back in high school in New Zealand, where I volunteered as head student librarian. The school had mostly Apple IIe computers, but bought one of the newfangled Macintosh computers in 1984. It was an original 128K Mac, with a single internal floppy drive. Back then, the OS, an application, and data fit on a single 400K disk. We used MacWrite for letters and other documents, MacPaint for occasional graphics, and the OverVUE database for some records… though not a full book catalog.

I bought my first Mac four years later while at university, in 1988. It was a Macintosh Plus, one of the new platinum-colored models. And I even had a second 800K floppy drive:

Mac Plus

Later, I added an external hard drive (I think it was 10 MB, though I could be wrong), a modem, and a mageno-optical drive:

Mac Plus

Those were the days… working on a 9-inch 512 x 342 pixel monochrome display… which is actually not much more than the original iPhone screen resolution, to give some perspective.

Later I bought a Macintosh II, which I subsequently upgraded internally to be a Macintosh IIx. Then I used a number of other models provided by a Dejal client.

When my wife and I got married, Apple gave us a PowerBook 150 as a wedding present, since we had met while using Macs with the fledgling internet. Our wedding was covered on local TV news and newspapers. Yep, meeting over the internet was a novel concept back then:

PowerBook 150 and other Mac

Just before we moved to the US, we bought a clamshell iBook G3, then later an iMac G4:

iBook G3 and iMac G4

Over time, I had a PowerMac G5, a 17″ MacBook Pro, and a 27” iMac, and others. I’m currently using an M1 Pro-powered MacBook Pro.

All in all, it’s been a great 40 years. I’ve enjoyed using and owning the various Macs over this time, and developing software for them since 1988, and supporting myself as a Mac developer since 1991. I look forward to many more years. Happy birthday, Mac!

How can I send an email or text message when a break is due or done?

I recently had an interesting customer request. They wanted to send an email or text message when a break was due, in case they were away from their Mac.

So I added a couple of new scripts to the Time Out Extras page.

The first one is called Send Email, which as you might imagine, sends an email message. Download it here.

Here’s the script; after downloading it, you’ll need to edit it to replace the two instances of example@example.com with your email address; you can customize the subject and content of the message as desired:

tell application "Mail"
	set my_message to make new outgoing message
	set subject of my_message to "Time Out break"
	set content of my_message to "Time for a break...."
	set sender of my_message to "example@example.com"
	--
	tell my_message
		make new to recipient at end of to recipients with properties {name:"example@example.com"}
	end tell
	--
	send my_message
end tell

The second script is called Send Message, which you may be amazed to learn sends a text message (via iMessage, Apple’s “blue bubble” messaging protocol). Download it here.

Here’s the script; after downloading it, you’ll need to edit it to replace the example@example.com with your iCloud email address or phone number; you can customize the message as desired:

tell application "Messages"
	set targetBuddy to "example@example.com"
	set targetService to id of 1st account whose service type = iMessage
	set textMessage to "Time for a break!"
	set theBuddy to participant targetBuddy of account id targetService
	send textMessage to theBuddy
end tell

To install the scripts, open the Time Out settings window, select a break, and go to the Break Actions page, then click the + button and choose the Reveal Scripts menu command:

Break Actions menu

Then drag the script files into that revealed folder. Then they will appear in that menu so you can choose one of them.

As always, you can choose to use these scripts before the break is due, when it starts, or when it is done, amongst other options. If you have a long break that you spend away from your Mac, a message when it is done could be very useful:

Send Email after done

If you want to send a message when a break is due, note that if you’re away from your Mac, by default the breaks are skipped, so it won’t send the messages. You can avoid that by choosing to Continue Countdown on the Break Schedule page:

Contine Countdown schedule option

As previously mentioned, I plan to write an iOS edition of Time Out, probably later this year. Once that’s done, you’ll be able to get notified of breaks on your iPhone, even when away from your Mac. But these scripts may be useful in the meantime. Enjoy!

Sinclair Trails 2023 theme for Time Out

I’ve just added a new Time Out theme for your enjoyment: a fast timelapse of driving our Tiffin Allegro Bus motorhome throughout 2023. This combines all of the motorhome travel timelapses for 2023 into one video, at 20x the speed of the original timelapse videos.

You can download this theme from the Time Out Extras page, and follow the instructions on that page to add it to Time Out.

As you may know, my wife and I travel the US in a 40-foot motorhome. We typically drive about two to six hours between campsites. I record each drive of the RV on a dash cam, and post a much shorter timelapse video of the journey. I’ve recently started adding a view from the truck being towed behind our coach, as a picture-in-picture, too.

This theme will start playing from a random point in the video each time it is used. A great way to have some ever-changing scenery during your breaks.

You can see the full 40-minute video on the Sinclair Trails YouTube channel — and I’d appreciate it if everyone reading this would subscribe to this channel, as it still has very few subscribers. It’s free!

Thumbnail

Dejal year in review: 2023

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

Time Out icon Time Out

My popular break reminder tool, Time Out, only had a bug-fix update in 2023, to version 2.9.2. But a lot of thought was put into the big 3.0 update, including planning to add syncing of break settings, adding an iOS app, and offering an auto-renewing subscription option; see issue #84 the DejalNews newsletter for details. The app also hit a major milestone, turning 20 years old in 2023.

Simon icon Simon

My pro app to monitor websites and servers for changes and failures, Simon, also had a bug-fix update, to version 5.1.1.

Pack icon Pack

Pack, a simple iPhone app to make it easy to pack for trips, didn’t have any updates in 2023. 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 again. It remains a product in my lineup.

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 either, but will continue to offer it for as long as it keeps working.

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 develops 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 2023 working on an iPad edition of the app, plus work on a new kanban board view in version 4.0. The Board view update was released in 2023, and the iPad app is progressing well, and should be available in early 2024.

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 that added a handy grid view.

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 2023 go?

It was a relatively quiet year for updates of Time Out and Simon, with a bunch of behind-the-scenes work, but not many releases. It feels like the majority of my time was spent on my consulting projects, but I also spent a lot of Dejal time on developing a new app.

What’s next for 2024?

What’s in store for 2024? As mentioned, I’m working on a new app; when not working on my consulting projects, I am concentrating on this new app. It is almost ready for release; I could have released it already, but decided to wait till the new year. Make sure you subscribe to the DejalNews newsletter to get notified when it is available for a TestFlight or general release.

I also will do a Time Out 2.9.3 update early in 2024, to address a few issues that have been bothering some people.

After that, I’ll get back to work on Time Out 3.0. I’m also keen work on the other new app I have in the works, but I want to get Time Out 3.0 out first.

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.

Time Out is 20 years old

I just noticed that I missed a major milestone a few months ago: my most popular app, Time Out, a break reminder tool for macOS, turned twenty years old on July 10! Its first beta release was on July 10, 2003, with the first general release on August 18.

(If you’re curious, you can see the release notes for those initial versions, and every one since then.)

To (belatedly) mark the occasion, here are some screenshots of the initial version of the app.

Firstly, the original app icon was simply a photo of my hands forming a T shape:

Time Out

Here’s a rendition of the app web page at the time; you can explore it yourself via the Internet Archive Wayback Machine (though the archived copy won’t look exactly like this):

Time Out website

And yes, the exclamation point (!) was initially part of the app name.

When you downloaded the app, it’d appear in the Finder as a disk image; the most popular distribution method at the time:

Time Out

On installing the app, you’d see the “lickable” Aqua-style General Preferences window:

Time Out

Unlike now when you can have many breaks, there were just the two that are defaults now, the Normal and Micro breaks, each with very few options:

Time Out

Time Out

When you started a break, it’d fade the screen much as now, but without customizable themes or buttons:

Time Out

These screenshots may look somewhat familiar; you can see the roots of the current app even in the first version. But the modern app has a lot more options, enabling you to customize it to suit your needs.

Happy birthday, Time Out! Going strong after 20 years — here’s to another 20!

How can I control Time Out from another app?

Time Out supports URL schemes to control some functions:

  • timeout://break/micro/start will start the Micro break.
  • timeout://break/micro/postpone1 to postpone the Micro break by the first postpone amount.
  • timeout://break/normal/postpone2 to postpone the Normal break by the second postpone amount.
  • timeout://break/mybreak/skip to skip “My Break”; use lowercase and omit spaces and punctuation for the break name in the URL.
  • timeout://break/micro/reset to reset the Micro break.
  • timeout://break/micro/pause/1h will pause only the Micro break for one hour.
  • timeout://break/micro/resume to resume only the Micro break.
  • timeout://pause will pause breaks indefinitely.
  • timeout://pause/10m will pause breaks for 10 minutes (use “s”, “m”, “h”, or “d” units, or no suffix for minutes).
  • timeout://resume to resume after a pause.
  • timeout://settings or timeout://preferences to show the Settings window.
  • timeout://settings/advanced/console to open the Console app.
  • timeout://settings/advanced/terminal to open the Terminal app.

Let me know if you want any other functions to be available via URL.

DejalNews #84: thoughts about Time Out syncing, iOS app, subscription options

DejalNews header

Welcome

This is DejalNews, an occasional newsletter from Dejal.

Want to get this newsletter in your inbox? Sign up on the Dejal site.

Time Out syncing

I am currently working on adding the ability to sync Time Out breaks between multiple Macs. Something many people have requested over the years.

Syncing is a little difficult, as it needs to cope with the idle states of each device — if one Mac is being used and another device is not, the idle one might be pushing the breaks back to give credit for natural breaks, but the one being used would not, so they’d drift apart. My current thought is to let them drift, but when the active one starts a break, it tells other devices and they also start the break then, re-syncing the due date for the next break.

If you use Time Out and have multiple Macs, would you like to have them sync, and do you have any ideas for how the sync should work?

I’m currently planning to support syncing between multiple machines signed into the same iCloud account; would you want to be able to sync between multiple accounts, e.g. to have the same breaks as other people at work or home? (Note though that it might be better to use fixed-time breaks in this situation.)

Please let me know your thoughts via the Contact page, or via Reddit.

Time Out for iPhone, iPad, and Vision Pro

Once syncing is done, another big project is to start implementing an iOS, iPadOS, and visionOS app! Another very popular request (well, for iOS, but once Apple’s new Vision Pro is available, I expect people will want to take breaks from it too).

An iOS app is tricky, as an app wouldn’t be able to dim the screen like the Mac app can, and it probably won’t be able to detect when the device isn’t being used. My best idea currently is to display a notification when a break is due, and start it when tapped, much like the ask-to-start schedule option in the Mac app.

Are you interested in an iOS app? Do you have any other ideas on how an iOS app could work? Please tell me via the Contact page, or via Reddit.

Time Out subscription option

As you probably know, Time Out uses an innovative supporter model: you can use the basic features for free forever, but some more advanced features are only available as rewards to supporters, people who help fund ongoing development with at least one payment that unlocks all of the current features and those added in the next 3, 6, or 12 months. There’s no need to renew support after that, unless any subsequently added features are worthwhile (or you just want to continue to support the app, which is always appreciated!).

The supporter model isn’t a subscription, but it can confuse people, being a bit unusual. A lot of apps are moving to a more traditional subscription, and I know some people would prefer an automatic renewal. So I’m considering adding such an option to Time Out. Note that it would be optional; I plan to continue to offer the current supporter model, I’d just be adding a subscription model as well, for people who prefer that.

My current trial mechanism, where you can try premium features for an hour at a time, can also cause confusion. So I’m thinking I might switch that to Apple’s standard free trial mechanism, where you can try all of the features for a week (or whatever), then cancel to go back to the free features, or begin the subscription to continue using the premium ones. I’d probably only make these changes in the Mac App Store edition of the app; the direct and Setapp editions would continue as now.

What do you think? Feedback welcome via the Contact page, or via Reddit!

Dejal blog

Have you checked out the new blog for Dejal? I have recently completed updating and re-publishing the most interesting posts from the old blog, with tips for Time Out and Simon. If you use an RSS reader or Apple News, you can subscribe to the blog to never miss a post.

Sinclair Trails

I mentioned in the previous newsletter that my wife and I had sold our 5-acre homestead and most of our possessions, and bought a 40-foot luxury Tiffin motorhome, and started traveling the country full-time. We’re still doing that, currently heading east, and will end the year in Florida. If interested, you can follow our adventures on my other blog, Sinclair Trails, where I post every weekday about a related topic, including additions and modifications to our coach (every Monday), photos of our travels and timelapse videos of driving between locations on YouTube (every Tuesday), reviews of RV parks (every Wednesday), and photos of National Parks and other interesting places we visit (Thursdays and Fridays).

I won’t mention this in every newsletter, but thought I’d mention it again this time in case you missed the previous one. By the way, you can watch timelapse videos of our travels as one of the themes in Time Out, too!

– David

Simon Context filter

The Context filter in Simon is a sophisticated filter that takes the previous filter’s input and match range to output some context around that filter’s output text.

It includes controls to specify the maximum number of characters before and/or after the matched range, and/or a delimiter before and/or after the matched range. So for example you can show up to 50 characters, stopping at a line break.

This filter is unusual in that it requires a previous filter to be used, and that needs to be either a Block– or Find-based filter, as those are the only ones that output the needed match range information.

The Context filter uses the Input specified in the test to determine which filter’s input and match variables to use: if you have two previous filters, you can make the Context filter look at the first one by choosing Filter1OutputText instead of the default FilterOutputText (which means the proceeding filter).

The match range is available in variables used by the Context filter, and can be used in your custom filters or notifiers if you wish:

  • {FilterMatchLocation}: the position of the match in the input text, e.g. the text between the Blocks, or the Find result. Note that the location is zero-based.
  • {FilterMatchLength}: The length of that match.
  • {FilterMatchEnd}: The location plus the length, for convenience.

You don’t need to worry about these variables for the Context filter, though; it uses them internally.

Here’s a simple example of this filter in action.

This is from a Web test that looks at the Daring Fireball site. It has a Find Required filter to look for the word “finally”, then if that succeeds a Context filter to output the enclosing paragraph. To round it out, if the Find filter fails, the Override as Unchanged failure case is used, to avoid the test resulting in a failure if Gruber hasn’t used the word “finally” recently.

Below the filters, you can see the Preview pane’s output, which you’ll notice includes the word “finally” towards the end.

Context filter

I hope this will be a useful filter for many of your tests. Simon is a powerful tool, with lots of other handy filters, services, and notifiers.

Time Out Dock icon and status item

Time Out has several handy options, some of them only available to current or past supporters, as a reward for helping improve the app.

One such option is the ability to hide the app icon from the Dock. By default, the icon is shown there, for easy access, but if you want Time Out to operate more in the background, you can choose to remove the icon.

If you do so, the second option is automatically turned on: the checkbox to show a status item on the right-hand side of the menubar. This item has further options to choose what to include there.

General settings

The status item can optionally include a variation of the app icon, the label color of the next break, or neither:

General settings

It can also include a countdown to the next break, either in a compact form like “7m” for 7 minutes, or a wider form like “07:32”, for 7 minutes and 32 seconds. In the compact form, it only shows seconds when less than a minute. That’s my favorite form, to attract attention when getting close to a break.

Alternatively, the value can show the time when the next break is due, or will finish, or how long it is. Or no value, just an icon:

General settings

There’s a further checkbox to only show long breaks in the status item, i.e. don’t show ones with a duration of less than a minute.

A further useful tip about the status item is that if you hover over it, a tooltip will appear that lists when the upcoming breaks are next due:

General settings

When the Dock icon is shown, clicking the status item will bring Time Out to the front, to show the settings window. When the Dock icon is hidden, clicking it will display a menu-like popover of the sidebar, for quick background access to the breaks and options. Clicking one will expand to the full window.

You may wonder what happens if you hide both the Dock icon and the status item. The window will display a warning message:

General settings

As the message says, if you do this, you can still access the settings window, though it’s a bit harder. You would need to find Time Out in your Applications folder and double-click it to make it active. Since the Dock is hidden, it won’t show a menu bar, so there isn’t a visual indication that it is active, but you can press ⌘, (i.e. Command and Comma together), which is the keyboard shortcut for the Settings window, to show it.

Some people like doing this, to discourage changing settings, but most people should show either the Dock icon or status item, or both.