Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python and Life Hacking with Emacs

Python and Life Hacking with Emacs

This is a bit overloaded presentation. This is a internal presentation where I show how to use Emacs to hack python code and to organize your life a-la GTD. Link to my configuration:

https://github.com/mfcabrera/dotemacs

Miguel Cabrera

October 09, 2015
Tweet

More Decks by Miguel Cabrera

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. Intro

    View Slide

  4. 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.

    View Slide

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

    View Slide

  6. Why Emacs?

    View Slide

  7. Why Emacs?

    View Slide

  8. Why not Emacs

    View Slide

  9. 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

    View Slide

  10. The Emacs terminology and principles

    View Slide

  11. Sample Emacs Window

    View Slide

  12. 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
    )

    View Slide

  13. 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.

    View Slide

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

    View Slide

  15. 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.

    View Slide

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

    View Slide

  17. Spacemacs and Evilmode
    EvilMode
    Spacemacs

    View Slide

  18. Hacking Python with Emacs

    View Slide

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

    View Slide

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

    View Slide

  21. 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

    View Slide

  22. 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

    View Slide

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

    View Slide

  24. Life Hacking or Intro to OrgMode

    View Slide

  25. 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)

    View Slide

  26. Gettings Things Done

    View Slide

  27. Getting Things Done (Workflow)

    View Slide

  28. 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.

    View Slide

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

    View Slide

  30. Notes
    Headlines
    Levels
    Formatting
    Checklist
    Properties

    View Slide

  31. Notes

    View Slide

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

    View Slide

  33. Tags and Properties

    View Slide

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

    View Slide

  35. Querying the data
    Sparse tree query
    Agenda views

    View Slide

  36. Sample Personal Workflow
    Org-Mode adapts to your mental model

    View Slide

  37. 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

    View Slide

  38. 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!

    View Slide

  39. Some Nice Integrations

    View Slide

  40. It is just text
    Dropbox
    NotationalVelocity
    SimpleNote
    Drafts
    Etc…

    View Slide

  41. MobileOrg

    View Slide

  42. Fetch RSS

    View Slide

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

    View Slide

  44. 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….

    View Slide

  45. 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.

    View Slide

  46. Created by Miguel.

    View Slide