Workflow on OS X

I have been currently running Mac OS X for a year (since this writing).  I have become obsessed with workflows.  If I can cut down 5 minutes of my time, that is 5 extra minutes I have to enjoy life (although usually it is to work more).

Currently I run a MacBook Pro 15″ Retina with 16GB or RAM and a 1TB Flash Drive.  Love it.

Applications I use on the MacBook:

OmniFocus – This application allows me to import all my tasks for a particular project and define ‘defer dates’ (AKA Start Dates) and due dates.  When on site, I can create a perspective which is essentially a filter to only show me tasks pertaining to that project; helps with my A.D.D.

TextExpander  – This application allows you to create shortcuts of text and even smart prompting for use in scripts.  For instance, if I were to type ‘;re’ (without the quotes) this is what it would automatically replace it with:

Regards,

Manny

Evernote – Wow! What can I say about Evernote?  I love it.  It syncs to Windows, Mac, Linux (web), iPhone and Android.  With iOS (recently release on Android as well) you can take a picture of a business card and not only will it save the picture of the card in Evernote, but it will add it to your contacts, send a LinkedIn invite (optional) and can send the person who you just scanned your vCard.  It supports markdown and with the premium edition, allows up to 4 GB a month of uploads.

1Password – Great Password manager.  Syncs with iOS, Mac and now Windows.  Has a great security feature as well that monitors sites that have been compromised and notifies you to change your password for that site.

SecureCRT  – One of my favorite tools.  I used this while I was running Windows, then when I ran Linux for many years, and now on Mac. It is fantastic.  It supports python scripts and has a great script recording feature.  Saves your sessions so you can easily connect to customers.  I have over 300 sessions in my config.

UltraEdit  – Great text editor with so much more.  Great RegEx support as well.  I use this daily.

BusyCal – Love this calendar app.  It integrates with Exchange, Gmail. Office 365, iCloud etc.  Very flexible and much cleaner than the default calendar.

PDF PenPro – Great for creating PDF Forms, has an incredible OCR feature where it will turn a PDF into a Word Document.

MailTags 4 – This is a must have.  It allows me to send an email and add a follow up or tickler to it.  This way I can set it to remind me in three days (or whatever you like) that I sent you an email and was awaiting a response.  Additionally, it allows you tag mail with projects and or keywords.

 

Applescript for my projects

 

– Sets up the JobName, CustomerName and location by asking the user

set JobName to text returned of (display dialog “Please enter Job Name:” default answer “Job_Name”)

set Customer to text returned of (display dialog “Customer Name:” default answer “Customer”)

set loc tochoose folder “Choose Parent Folder Location”

— Sets up the date variables

set incomingDate to (current date)

set yr to year of incomingDate astext

set mo to (monthof incomingDate asnumberastext

if ((length of mo) = 1) then

set mo to “0” & mo

endif

set dy to day of incomingDate astext

if ((length of dy) = 1) then

set dy to “0” & dy

endif

— Sets the filename to be used concatinated with date

set newfoldername to yr & “-” & mo & dy & “-” & JobName

set customer2 to Customer & “-” & JobName

tellapplication “Finder”

display dialog “Do you want me to create an OmniFocus Project?” buttons {“yes”, “no”} default button 2

if button returned ofthe result is “no” then

–Parent Directory Structure

set dir_1 tomake new folder at loc with properties {name:newfoldername}

set dir_2 tomake new folder at dir_1 with properties {name:”Caps”}

set dir_3 tomake new folder at dir_1 with properties {name:”Configs”}

set dir_4 tomake new folder at dir_1 with properties {name:”Diagrams”}

set dir_5 tomake new folder at dir_1 with properties {name:”Documents”}

set dir_6 tomake new folder at dir_1 with properties {name:”Scripts”}

— Sub-Folder structure

set sub_3_1 tomake new folder at dir_3 with properties {name:”Backups”}

set sub_3_2 tomake new folder at dir_3 with properties {name:”Logs”}

set sub_3_3 tomake new folder at dir_3 with properties {name:”Sites”}

set sub_3_4 tomake new folder at dir_3 with properties {name:”Worksheets”}

set sub_4_1 tomake new folder at dir_4 with properties {name:”Logos”}

set sub_4_2 tomake new folder at dir_4 with properties {name:”Screenshots”}

set sub_4_3 tomake new folder at dir_4 with properties {name:”Network Diagrams”}

set sub_5_1 tomake new folder at dir_5 with properties {name:”Customer”}

set sub_5_2 tomake new folder at dir_5 with properties {name:”Deliverable”}

set sub_5_3 tomake new folder at dir_5 with properties {name:”License”}

set sub_5_4 tomake new folder at dir_5 with properties {name:”Certificates”}

set sub_5_5 tomake new folder at dir_5 with properties {name:”InfoSecOps”}

set sub_5_6 tomake new folder at dir_5 with properties {name:”Validation”}

— Creates sub-folders under \InfoSecOps

set sub2_5_1 tomake new folder at sub_5_5 with properties {name:”BoMs”}

set sub2_5_2 tomake new folder at sub_5_5 with properties {name:”Quotes”}

set sub2_5_3 tomake new folder at sub_5_5 with properties {name:”Private”}

set sub2_5_4 tomake new folder at sub_5_5 with properties {name:”SoW”}

set sub2_5_5 tomake new folder at sub_5_5 with properties {name:”Standard”}

else

–Parent Directory Structure

set dir_1 tomake new folder at loc with properties {name:newfoldername}

set dir_2 tomake new folder at dir_1 with properties {name:”Caps”}

set dir_3 tomake new folder at dir_1 with properties {name:”Configs”}

set dir_4 tomake new folder at dir_1 with properties {name:”Diagrams”}

set dir_5 tomake new folder at dir_1 with properties {name:”Documents”}

set dir_6 tomake new folder at dir_1 with properties {name:”Scripts”}

— Sub-Folder structure

set sub_3_1 tomake new folder at dir_3 with properties {name:”Backups”}

set sub_3_2 tomake new folder at dir_3 with properties {name:”Logs”}

set sub_3_3 tomake new folder at dir_3 with properties {name:”Sites”}

set sub_3_4 tomake new folder at dir_3 with properties {name:”Worksheets”}

set sub_4_1 tomake new folder at dir_4 with properties {name:”Logos”}

set sub_4_2 tomake new folder at dir_4 with properties {name:”Screenshots”}

set sub_4_3 tomake new folder at dir_4 with properties {name:”Network Diagrams”}

set sub_5_1 tomake new folder at dir_5 with properties {name:”Customer”}

set sub_5_2 tomake new folder at dir_5 with properties {name:”Deliverable”}

set sub_5_3 tomake new folder at dir_5 with properties {name:”License”}

set sub_5_4 tomake new folder at dir_5 with properties {name:”Certificates”}

set sub_5_5 tomake new folder at dir_5 with properties {name:”InfoSecOps”}

set sub_5_6 tomake new folder at dir_5 with properties {name:”Validation”}

— Creates sub-folders under \InfoSecOps

set sub2_5_1 tomake new folder at sub_5_5 with properties {name:”BoMs”}

set sub2_5_2 tomake new folder at sub_5_5 with properties {name:”Quotes”}

set sub2_5_3 tomake new folder at sub_5_5 with properties {name:”Private”}

set sub2_5_4 tomake new folder at sub_5_5 with properties {name:”SoW”}

set sub2_5_5 tomake new folder at sub_5_5 with properties {name:”Standard”}

— Creates the OmniFocus Project

— set thePath to choose file of type “oo3” with prompt “Please choose a OmniOutline file.”

(* Need to figure out this date issue, These are some of the tests I tried.

— set startDate to do shell script “date -j -f ‘%A, %B %e, %Y %l:%M:%S %p’ ‘” & startDate & “‘ ‘+%y%m%d_%H-%M-%S'”

— display dialog “Start Date date:  ” & startDate

— set dueDate to do shell script “date -j -f ‘%A, %B %e, %Y %l:%M:%S %p’ ‘” & dueDate & “‘ ‘+%y%m%d_%H-%M-%S'”

— display dialog “Start Date date:  ” & dueDate

set incomingDate to startDate

set yr to year of incomingDate as text

set mo to (month of incomingDate as number) as text

if ((length of mo) = 1) then

set mo to “0” & mo

end if

set dy to day of incomingDate as text

if ((length of dy) = 1) then

set dy to “0” & dy

end if

set incomingDate to dueDate

set yr to year of incomingDate as text

set mo to (month of incomingDate as number) as text

if ((length of mo) = 1) then

set mo to “0” & mo

end if

set dy to day of incomingDate as text

if ((length of dy) = 1) then

set dy to “0” & dy

end if

. *)

— Need to figure this out

set startDate to text returned of (display dialog “What will be the start date?” default answer “”)

set dueDate to text returned of (display dialog “When is it due by?” default answer “Customer”)

display dialog “Start Date is:, ” & “startDate”

display dialog “Due Date is:, ” & “dueDate”

tellapplication “OmniFocus”

tell default document

import intoit from POSIX file “/Users/mannyfernandez/Desktop/test123.oo3”

endtell

endtell

tellfrontdocumentofapplication “OmniFocus”

set homeContext tofirstflattened contextwhose name is “InfoSecOps”

set theProject tomake new project with properties {name:JobName, defer date:startDate, due date:dueDate, context:homeContext, sequential:false}

tell theProject

make new task with properties {name:”Kickoff Meeting”}

make new task with properties {name:”Closeout Meeting”}

endtell

endtell

endif

— Set variable to be used by Evernote

set custfldr tothe loc astext

set POSIXPath to (the POSIX path of custfldr)

set filelink to “file://” & POSIXPath

endtell

tellapplication “Finder”

set the clipboard tothe POSIXPath astext

endtell

tellapplicationid “com.evernote.Evernote”

create note with text filelink title customer2 notebook “Inbox”

endtell

Although still a work in progress, this is essentially what it does:

I have a shortcut key ⌘ 8, which will pop-up and ask me for the Job Name, then the Customer Name and then ask if I want to create an OmniFocus project for it.  Once I enter the Job Name and the Customer name it will automatically create all of my directory structure I use for a common project.  If I choose YES on the OmniFocus question, it will ask me where the OmniOutline file is that contains the tasks.  I then import it into OmniFocus.  It then creates an Evernote note with the Customer, Job Name and Date.

Using TextExpander I have created a shortcut for updates Evernote, OmniFocus or even the office ticketing system.  By typing ‘;up’, Text Expander will automatically add:

===============================================

20141209-0037:

I can then start typing the update.  As you can see it adds the Year, Month and Day plus the current time.  Very useful for updating statuses.

I also use mail plugins for Evernote which allow me to move/copy things to my Evernote.

:: Coming Soon:  Part 2 and iOS workflow.