Slide 1

Slide 1 text

Python and Life Hacking with Emacs Miguel Cabrera [email protected]

Slide 2

Slide 2 text

Table of Contents Intro Hacking Python with Emacs Life Hacking or Intro to OrgMode Final Thoughts

Slide 3

Slide 3 text

Intro

Slide 4

Slide 4 text

What is GNU Emacs? Emacs is the extensible, customizable, self-documenting real- time display editor. –– the EmacsManual Text editor with more 30 years of development. Comes from the Emacs family of Editors developed at MIT AI Lab. Started by Richard Stallman in the 70's.

Slide 5

Slide 5 text

Emacs characteristics Extensible Modern Customizable Multiplatform Support of many programming languages and format Integrates with external tools (i.e. Latex, compilers, etc…)

Slide 6

Slide 6 text

Why Emacs?

Slide 7

Slide 7 text

Why Emacs?

Slide 8

Slide 8 text

Why not Emacs

Slide 9

Slide 9 text

Editor Wars Editor war is the common name for the rivalry between users of the Emacs and Vi (Vim) text editors. The rivalry has become a lasting part of hacker culture and the free software community. – https://en.wikipedia.org/wiki/Editor_war

Slide 10

Slide 10 text

The Emacs terminology and principles

Slide 11

Slide 11 text

Sample Emacs Window

Slide 12

Slide 12 text

Everything is a command Eveything is a command (i.e. a function) Command can be link to keyboard-shortcut For example C t r l - x C t r l - s will execute s a v e - b u f f e r Abbreviated to C - x C - s . Other keys: M e t a (A l t ) -> M Search and execute using M - x (e.g M - x s e a r c h - f o r w a r d )

Slide 13

Slide 13 text

Modes Emacs contain editing modes that alter its basic behaviour Syntax highlighting Keyboard shortcut Autocompletion / Snippets Interaction with the Text Divided into major and minor modes 1 major mode and many minor modes. e.g. p y t h o n - m o d e is a m a j o r mode and f l y m a k e and p r o j e c t i l e are minor modes.

Slide 14

Slide 14 text

Configuring Emacs Emacs is fully customizable But sometimes it has too many parameters Too many modules doing similar things Might get frustrating…

Slide 15

Slide 15 text

Emacs Packaging System Starting with E m a c s 2 4 . x , Emacs comes with a standard package system. It is now heavily used to create distributions.

Slide 16

Slide 16 text

Popular Emacs Distributions (I use this one) Emacs Starter Kit Prelude Emacs Emacs Cabbage

Slide 17

Slide 17 text

Spacemacs and Evilmode EvilMode Spacemacs

Slide 18

Slide 18 text

Hacking Python with Emacs

Slide 19

Slide 19 text

python.el Comes with Emacs by default Basic facilities to browse data and interact with python shell. When in doubt C - h m

Slide 20

Slide 20 text

Anaconda Mode Context-sensitive code completion Jump to definitions Find references Diew documentation Virtual environment

Slide 21

Slide 21 text

Complimentary Modes w h i t e s p a c e - m o d e F l y m a k e / F l y c h e c k Y a s n i p p e t s P r o j e c t i l e

Slide 22

Slide 22 text

Elpy IDE Like environment in python. Use either J e d i or R o p e as backend. Integrates or replace previously mentioned modes. Custom project support Refactoring powers (imports, autopep8) Demo

Slide 23

Slide 23 text

Doing Ma(Git) Emacs offers a great major-mode for dealing with Git

Slide 24

Slide 24 text

Life Hacking or Intro to OrgMode

Slide 25

Slide 25 text

My Personal History Looking for ways to organize my mental flow Tried different technologies. Todo Applications (Things, TimeTo, Things, etc) Note Taking applications (Tomboy, NotationalVelocity, etc)

Slide 26

Slide 26 text

Gettings Things Done

Slide 27

Slide 27 text

Getting Things Done (Workflow)

Slide 28

Slide 28 text

Enter Org-Mode Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system.

Slide 29

Slide 29 text

Basic concepts and usage Plain Text Note Taking Task Management Project Planning Authoring and Publishing Mobile Support

Slide 30

Slide 30 text

Notes Headlines Levels Formatting Checklist Properties

Slide 31

Slide 31 text

Notes

Slide 32

Slide 32 text

Tags and Properties Headlines can have: Associated dates: deadlines, schedule dates, timestamps Tags Properties

Slide 33

Slide 33 text

Tags and Properties

Slide 34

Slide 34 text

Getting Things Done TODO Keywords Worfklows File wide properties Dates and Timestamps

Slide 35

Slide 35 text

Querying the data Sparse tree query Agenda views

Slide 36

Slide 36 text

Sample Personal Workflow Org-Mode adapts to your mental model

Slide 37

Slide 37 text

Interactive (org-babel) Literate programming in many languages Supports Python, Ruby, Perl, Bash Store small script Create Notebooks for any technology. The Babel Fish is small, yellow, and simultaneously translates from one spoken language to another. – The Hitchhiker's Guide to the Galaxy, Douglas Adams

Slide 38

Slide 38 text

Export and Publishing org-mode is a light way publishing format supported by Github Export to many formats including (HTML, PDF, Markdown, Texinfo, Man, etc..) This presentation (using o r g - r e v e a l ) Org-Mode is Awesome!

Slide 39

Slide 39 text

Some Nice Integrations

Slide 40

Slide 40 text

It is just text Dropbox NotationalVelocity SimpleNote Drafts Etc…

Slide 41

Slide 41 text

MobileOrg

Slide 42

Slide 42 text

Fetch RSS

Slide 43

Slide 43 text

Jira Org-jira allows to fetch, create and update Jira tasks.

Slide 44

Slide 44 text

And more, much more…: Calendar sysmtes (iCal, Google Calendar) Outlook Webbrowsers Github Sublime (Org-mode plugin) Trello and similars 40+ programming languages (org-babel) More….

Slide 45

Slide 45 text

Final Thoughts Emacs provide an nice environment to code in Python. Emacs/Org-mode can act as a powerful Personal Information Management It adapts to your workflow and not the opposite Also can be used as a publishing tool and documentation format.

Slide 46

Slide 46 text

Created by Miguel.