I'm Salim Virani. I used to design peer learning programs, and these days I'm having fun building stuff.

Forcing myself to take Pomodoro breaks
Jan 8, 2013

I’m awful at taking breaks once I get in the zone, but I’ve noticed that this is counter-productive by the end of the day.  What’s “in the zone” earlier in the day ends up being staring at the screen by the end of the day.

So today, I hacked together a solution. At the end of each Pomodoro, my Pomodoro software loads calm.com in full screen, and starts the 2-minute mediation thingy. What a wonderful way to break away!

  • Update: Much simpler way!

You can run this little AppleScript, which gives you a 10 and 20 minute warning in Growl, then runs Calm.com after 25 minutes.

Copy this into AppleScript Editor. Modify the script if you like. Then File -> Export and save it as an Application called Countdown. You can run Countdown whenever you start a Pomodoro.

-- Wait 10 minutes before the first warning (change this if you want) delay 10 * 60 growlNotification("10 minutes elapsed.") -- Wait another 10 minutes for another warning delay 10 * 60 growlNotification("5 minutes to go.") -- After 25 minutes, load calm.com delay 5 * 60 makeMeCalm()

on makeMeCalm()
do shell script “open ‘/Applications/Google Chrome.app’ http://calm.com"
tell application “Google Chrome” to activate
tell application “System Events”
keystroke “f” using {command down, shift down}
delay 8
keystroke tab
keystroke tab
keystroke tab
keystroke tab
delay 1
keystroke return
end tell
end makeMeCalm

on growlNotification(message)
tell application “System Events”
set isRunning to (count of (every process whose bundle identifier is “com.Growl.GrowlHelperApp”)) > 0
end tell

if isRunning then
    tell application id "com.Growl.GrowlHelperApp"
        -- Make a list of all the notification types 
        -- that this script will ever send:
        set the allNotificationsList to ¬
            {"Timer", "Another Timer"}

        -- Make a list of the notifications 
        -- that will be enabled by default.      
        -- Those not enabled by default can be enabled later 
        -- in the 'Applications' tab of the Growl preferences.
        set the enabledNotificationsList to ¬

        -- Register our script with growl.
        -- You can optionally (as here) set a default icon 
        -- for this script's notifications.
        register as application ¬
            "Growl Timer" all notifications allNotificationsList ¬
            default notifications enabledNotificationsList ¬
            icon of application "Script Editor"

        --       Send a Notification...
        notify with name ¬
            "Timer" title ¬
            "Timer" description ¬
            message application name "Growl Timer"

    end tell
end if

end growlNotification

What am I up to these days?

I’m working on a communication tool for loose community groups and unconference-style interactions. It focuses on individual autonomy rather than top-down coordination.

I recently became a Kernel fellow, where I was exploring models for self-directing communities of care, the history of economic cultural norms, and the connection between mimicry, memes and our sense of belonging.

I did a few advisory gigs too - for Polygon, Limechain and Bankless on education and support programs.

In the past, I designed peer learning programs for Oxford, UCL, Techstars, Microsoft Ventures and The Royal Academy Of Engineering. I also played a role in creating the Lean Startup methodology, and the European startup ecosystem. You can read about this here.


  • Cuppa - decentralised collaboration protocol (WIP)
  • Nonfungo - completely on-chain NFT sale notification bot for Discord. (Look ma! No Opensea API!)
  • Powerplays - real-time token launches


  • Peer Learning Is - a broad look at peer learning around the world, and how to design peer learning to outperform traditional education
  • Mentor Impact - researched the practices used by the startup mentors that really make a difference

Collected practices

  • Source Institute - skunkworks I founded with open peer learning formats and ops guides, and our internal guide on decentralised teams
  • DAOistry - practices and mindsets that work in blockchain communities
  • Decision Hacks - early-stage startup decisions distilled