“It would probably be worth examining the underlying question here, which is why people like me continue to click through to these stories. But rather than do that, I’d prefer to sidestep that issue completely and instead appeal directly to the writers themselves.”
This trope is shallow and meaningless. It’s a sign that a writer has given up on being interesting.
Ifttt is one of the best things I wish I could pay for. It’s excellent at plugging holes in my various systems. For example, I now rely on Fever Reader for RSS. While it’s comforting that I now own my favorited articles, I also wanted them in my Pinboard.in collection. Ifttt solves this by scraping the RSS feed of my Fever installation and adding the links to Pinboard.
Bonus
I also have an Ifttt rule for adding any links I post to Twitter.
Don Southard (aka DirtDon.com and MacStories writer) has released a very nice Pinboard menu bar app for the Mac called Thumbtack. Just Pinboard.in, just $1.99, just what I need. Simple and effective.
This morning I read through a nice little article by Neven Mrgan about working in a machine shop. Maybe the article resonated with me but the next article I read during my morning coffee fit together as a theme with Neven’s article.
Circumstances in my life enabled me to work at all types of jobs. I’ve worked in a machine shop, changed tires on big-rigs, bussed tables, washed dishes, even retail. You name it and I’ve likely done something related.1 Neven Mrgan’s experience is not unique. Many were crappy jobs and I was treated poorly. However, enough were good jobs to teach me a valuable lesson. I learned something about business from these experiences. A business rarely cares more about their customers than they do about their employees. Any business that cheats and mistreats its employees will just as quickly cheat and mistreat its customers (see Zynga).
GitHub (and many others) are examples of the other side of the coin. Empathetic businesses care about their work. They make better products. They have better customer service. They care about employees.
Before I get too much “well actually” emails, I realize there are exceptions. Amazon has amazing service but appears to treat their warehouse workers badly. My local pizza place treats its employees great but serves a side of disdain with every pie. From my experience these are outliers. It’s why so many hipsters were up-in-arms over Apple’s factories. Because Apple treats it’s customers so well, there’s a sense of expectation that their kindness runs through all aspects of their business. We want to like them. But few people directed outrage at Microsoft or Sony for the same indiscretions. We assume crappy companies treat their employees crappy.
No, I’ve never been a rodeo clown or done rodeo related work. You got me. ↩
For all my grief for AppleScript, his work is an excellent model of the power of scripting on the Mac. I also love the structure of his scripts. Unlike mine, he properly designs his scripts with methods and descriptive structure. This is how you write an AppleScript:
His Taskpaper to Omnifocus script is particularly amazing. It does not require TaskPaper either. I can sketch out a large project in plain text (my preferred medium) using the TaskPaper format:
Build Death Star:
- Call about completion of clone army @GPhone @due(2012-02-28)
- Check schematics @due(2012-02-24)
- Ask designer about the unprotected vent @flag
- Call Darth to schedule meeting @due(2012-02-27 08:00)
- Lookup Darth's number @Outlook
- Send flowers (Padmé anniversary) @PC @due(2012-02-24)
- Buy new Overlord todo app from the droid app store @amazon
After drafting a project, I just copy the project outline to the clipboard and run Rob’s script.1 A popup window shows what will happen and the results afterward.
At the completion, a new project is sitting in OmniFocus with the tasks and structure as I outlined.
To get at the script, view the package contents of Rob’s droplet. The script is buried a few levels deep.
Note that this script expects the old TaskPaper format, not the new indented format. I’ve had problems with the project structure when I use the new TaskPaper format.
Commentary
My biggest complaint about OmniFocus (for me) is that it’s great at capturing quick actions and mind-dumps but it sucks for designing and planning a moderately complex project. OmniOutliner is great at planning large projects because I can easily grab and move tasks and milestones around. The Omni Group makes some great stuff, but absolutely none of it works well together. Why can’t I copy an outline and past it into OF to create a new project?2 How about a direct link between OmniFocus and OmniPlan? These are great applications individually, but they are silos fighting against each other.
Rob actually makes the script available through a droplet. The droplet can process multiple text files in one go. ↩
Don’t even get me started about the import/export options. They just don’t work consistently or predictably. After designing a project with 50+ tasks and sub-tasks, it’s a real pisser when it doesn’t import properly. ↩
Distraction free environments are all the rage. Or at least writing about them is.
Do you know what is a real distraction? A system meltdown.
I don’t consider the fuel gauge in my car a distraction. I don’t consider my smoke detector a distraction. They are all about reducing consequences and preventing larger distractions. They are about priorities.
When I am deep into a problem, my desktop is not visible or is set to plain black. I don’t watch a timer or a clock but depend on alarms to remind me of scheduled events. I don’t immerse myself in a sensory deprivation tank. I set priorities for my interruptions. If my phone rings and it’s not from day care or the CEO, I ignore it. But there are interruptions that I don’t get the option to ignore. If a critical system goes ass-up then I need to know about it. At work, we deploy Nagios for many of these systems and I am alerted to serious conditions like high load or low memory.
Perhaps if my job did not involve timely problem solving, I would care less about alerts. For many of my daily activities, I need interruptions.
The Home Front
I deploy a similar methodology at home. I played with Nagios at home but decided it was overkill. Instead, I have several scripts running that check the status of my systems and services.
I keep Mail.app running to execute mail rules and perform spam and message filtering. For this purpose, I have a Keyboard Maestro scheduled task that restarts Mail if it is not running. The same goes for OmniFocus which is integral to some Mail rules. If there’s a problem running the task, I will get a notification via Prowl. I’ve written about Prowl before. It’s great.
More recently, I have begun to rely on my home server for blogging from Simplenote1. In this case, I’d like to know when a post makes it to the Web site. Ifttt fits that bill.
System Monitoring
I use iStat Menus by Bjango. I only care about three metrics. Free memory, CPU load and HD Space. Everything else is useless for me. Those three things are harbingers of bigger problems. If I’m just writing in BBEdit and my CPU’s are maxed out then something terrible is happening inside my machine. iStat is a passive notification system. I don’t get alerts by I can glance at the menu bar to see the status.
Macdrifter.com
For this site, I use a couple of basic alerting systems. None of these are particularly distracting.
I use Pingdom now that Marco Arment mentioned it in an episode of Build and Analyze. It’s free for a single site and works like a champ. If the site goes down, I get an email. I get a followup email when the site comes back online. Simple and informative.
As mentioned above, I use Ifttt to alert me when a new post is available on this site. This happens within seconds of submitting the post so it really is less of an alert and more of a confirmation that the post process completed successfully.
I use Keyboard Maestro for scheduled task, similar to cron. I run a regular Fever Reader refresh so that when I ocassionally read my feeds, they are already up to date and ready to go.
Weak Links
Since much of my notification system is running on my home server, I have a single point of failure: My home. If Keyboard Maestro goes down several jobs will stop functioning. I will not receive alerts when this happens. Fortunately, this is a minor annoyance.
If my Internet access is down I’ve got problems I can not immediately solve. I’m already at the mercy of Verizon so this is the price of being online.
If I have a power outage that does not impact the Verizon repeaters then I will get a remote alert before shutting down. My Mac is on UPS battery and so is my network router and Verizon box. If the power to my house goes out, I may get a push notification through Prowl.
This is not a review. I’ve been relying on Moom for many months and these are examples of how I use it. If you’re not using Moom then you probably spend a lot of time moving and tweaking windows on your Mac. Stop it. Just go get Moom and play along.
Snap Shots
One of my favorite uses of Moom is to create work environments and save them as Moom Snap Shots. I adjust visible applications and move windows to preferred configurations. When I like the setup, I create a new Window Layout Snapshot. This action can be performed from the Moom menu bar list.
It can also be performed as a new window action in the Moom preferences. Snapshots include all displayed windows on primary and secondary monitors. With the “Ignore obstructed windows” option checked, only top level windows will be recorded as part of the snap shot. This is convenient for taking snapshots without having to completely cleanup all other windows.
Snap shots can be triggered with a keyboard shortcut. When I’m ready to work through my tasks, I hit ctrl-opt-cmd-T and OmniFocus, Mail, and BusyCal are all laid out on my screen ready to process.
Move and Resize
Moom provides several options for dynamically resizing windows. The Grow and Shrink actions are the most generic. These actions adjust the current window by a predefined amount but only on one edge at a time.
Unfortunately, there’s no way to shrink or grow a window from all sides in one action, which can be frustrating. There is also no way to tie multiple actions to the same keyboard shortcut in Moom. Keyboard Maestro also fails to trigger multiple Moom actions in sequence. This is better accomplished with a pure Keyboard Maestro macro.
Multiple Displays
Moom provides several options for users with multiple displays.
Trigger When Switching
I don’t use this option very often. It’s helpful when connecting or disconnecting an external display. If I have my Macbook connected to an external display, this option will automatically rearrange and resize the windows when I disconnect the external display. But the setting also monitors display resolution. If I rotate my external monitor from portrait to landscape, change the resolution or switch display priorities Moom will automatically switch to the defined layout.
To use this action effectively, setup the display configuration and the preferred window layout. Next, click the “Save Snapshot” button.
Move to Other Display
Checking the “Resize Proportionally” button means that if the window takes up the left half on Display 1 then it will be moved to Display 2 and resized to take up the left half as well. Without that option the window will be kept at the same pixel dimensions.
The “Loop through displays” option means that the window will cycle through displays. That means I don’t need to worry about which display the window is currently on. The ctrl-option-rightArrow will cause the window to jump to the next display.
Undo
The “Revert to Original Dimensions” action is like an undo function. If I accidentally resize or move a window with Moom, this action will undo the last change.
Keyboard Control Pop-Over
After enabling the Trigger Control, Moom will present a screen overlay. I’ve turned on the cheat sheet display as well. While in this mode, windows can be manipulated with otherwise excluded shortcuts, like number keys.
As the name implies, windows can be manipulated entirely by keyboard maneuvering as well. By repeating the window activation key combo Moom provides a grid view overlay. The arrow keys can then adjust the window position on the grid. Holding shift and using the arrow keys allows for resizing the window.
I actually do not find this functionality all that useful. I may just need some time to adjust to it but it feels a bit awkward still. I prefer to use keyboard shortcuts with specified window locations and size.
The rest of Moom is great though. Moom is kind of like LaunchBar, but for window management. I don’t realize how much I use it until I sit down at my wife’s mac and curse myself for not installing it earlier.
UPDATE: I did not know it when I wrote this post, but Don McAllister just recently did a screencast about Moom. Sorry about that Don.
The module supports standard Python string processing but also includes some built in variables for accessing strings from the shell.
The “p” variable processes each line of the shell output while “pp” processes the entire block as one string. There are several interesting examples available through the module home.
Here’s what I did to install the command on my Mac:
Download the file and place it in the /usr/local/bin directory.
Set the permissions to include execute (755 should work)
A great explanation of list comprehensions at DZone. I’ve used them several times and the linked Python.org explanation was what I used to understand them. I’m not a mathematician or a Programmer but list comprehensions are pretty cool.
Sometimes Fever Reader is good for telling me what not to share. I love all of these sites, but sometimes it is just too much to read about the same topic. I appreciate Fever more every day. It’s a huge time saver.
BoingBoing links to a new chrome plugin that encrypts Facebook content so that not even Facebook can read it. I love this idea in general. Browser side encryption of content as it is posted and read from a webservice. This would obviously break a lot of bonuses that come with server-side processing, like search and suggestions but it sounds like a great option for sensitive data.
I don’t use Facebook so I have no idea how well this works. I just like the concept and hope this becomes a more general solution for working on the web.
Growl has evolved into a mature notification system on OS X, providing many third party plugins and extensions. Given the lack of third-party hooks into the iOS notification system, I have little hope that Apple will open the OS X notification system for customizations. That means additions like Prowl will still be the domain of Growl.
Prowl
Prowl is a plugin for Growl that provides push notifications from the Mac to iOS. It’s a simple plugin with a lot of customization.
Prowl is configured through the Growl preferences panel. There are a number of important customizations. For example, setting Prowl to only push alerts after a period of inactivity. If I’m working on my Mac, I don’t need every notification to show up on my iPhone and iPad.1
Another key feature is the ability to tell Prowl what kind of notifications to push. This is the ability to set a minimum priority so that only high priority alerts are pushed. For example, setting the threshold to “Moderate” means I only get notifications of critical alerts on my Mac. As an example, when used in conjunction with the HardWare Growler plugin I can get alerts when my Mac at home suddenly switches to UPS backup power.2
Web Service
Once configured on the Mac, Prowl needs to be configured on the web. The web application is the glue that holds the system together. The Mac tells the cloud about a notification and the cloud notifies all of the iOS devices. Not just any iOS devices though. Just the devices registered with the service and with the $2.99 iOS Prowl app installed.
iOS
The iOS application provides any more customization. Customizations that I wish iOS had. Not only can notifications be toggled with a do-not-disturb setting but the application provides granular settings for Quiet Hours, when no Prowl messages should be displayed.
The app also acts as a centralized Prowl log. Even after notifications have been dismissed, the history is still available in the app.
Notifications can be set to redirect to specific applications. The system works by launching the specified application directly from the notification. Since it supports custom URL’s this should work similar to the excellent Launch Center.
Privacy
There could be a lot of information funneling through Prowl. Some of that information I may not have control over. Luckily Prowl has a good privacy policy that is clear to understand and I’m comfortable with.
Now What?
Sure, I can get notifications when a backup is done or when a script starts to fail, but what other things can be Prowl be used for? Prowl provides email triggers. Each Prowl account comes with a secret email account to send Prowl alerts, called ProwlMail. The service provides out of the box support for Google Voice Prowl notifications.
Through the 2Prowl Safari Plugin I can send URL’s directly to my iOS device through Prowl. Once a free API key is generated the Safari plugin provides a single toolbar button for sending the current URL to all iOS devices through Prowl. When activated, Prowl provides the option for opening the URL in Safari.
A script to monitor a list of sites and send alerts about problems. I use Pingdom now (after Marco Arment recommended it) but I can imagine some interesting variations on this. How about monitoring the Apple Store for when it goes down?
Beyond the examples listed on the Prowl site, any application or script that can send a Growl message becomes a Prowl enabled application. I’ve added Prowl alerts for my Simplenote WordPress system. When ever I post from Simplenote, I get a Prowl alert with the outcome, good or bad. It’s confirmation that my server is doing what it should, but also that this site is processing posts as it should. It’s a small piece of mind.
Growl is great, not just because of what it does right now. It’s great because it provides access to other developers. Anyone can add Growl support or extend Growl. Prowl is a great example of why I think I’ll be sticking with Growl even with the coming of Lion Mountain Notifications.
Unlike Apple’s iCal alerts that synchronize like an elementary school marching band. All playing as loudly as possible, but out of time with each other. ↩
That assumes my network still has power to send out-bound messages. ↩
“And when I’m typing the sentence it always has a resemblance to its platonic ideal.”
I think that’s true for most of my writing. By the time I add a period to the end of the sentence, it’s structure closely resembles my thought. When I write with Siri, I regularly abandon sentences or stop dictation and finish by typing.
Whenever I have attempted to use voice recognition to write long pieces, I suffer from an awkward kind of stage fright. I stumble over words and fumble the idea I am trying to form. I have no problem dictating short text messages or reminders with Siri. The real problem comes when I am attempting to dictate long poorly defined chunks of text. I have no such problem while typing.
I think the crux of the problem also highlights a weakness with Siri. I’m conscious of the difficulty in correcting Siri. I try hard not to make a mistake. I try so hard that I end up killing the creative thought I am molding.
If I change my mind mid sentence with Siri, my only options are to either abandon the dictation session and start new or push through and remember to go back and manually edit the work later. While I type, I have none of these concerns. If I change my pants mind I can edit in place and continue. There is very little lag from thought to screen.
For me, I think the only way this can be fixed is for Siri to provide recognition for corrections. If I make a mistake I’d like to say “back two letters” or “scratch that last word” and continue from there. Until that time, Siri will remain a dim-witted assistant only capable of helping with short writing. She’s helpful, but she’s still not all that bright.