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

D0ab1fbc41764f8ea112824449b33e18?s=128

Miguel Cabrera

October 09, 2015
Tweet

Transcript

  1. Python and Life Hacking with Emacs Miguel Cabrera mfcabrera@gmail.com

  2. Table of Contents Intro Hacking Python with Emacs Life Hacking

    or Intro to OrgMode Final Thoughts
  3. Intro

  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.
  5. Emacs characteristics Extensible Modern Customizable Multiplatform Support of many programming

    languages and format Integrates with external tools (i.e. Latex, compilers, etc…)
  6. Why Emacs?

  7. Why Emacs?

  8. Why not Emacs

  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
  10. The Emacs terminology and principles

  11. Sample Emacs Window

  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 )
  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.
  14. Configuring Emacs Emacs is fully customizable But sometimes it has

    too many parameters Too many modules doing similar things Might get frustrating…
  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.
  16. Popular Emacs Distributions (I use this one) Emacs Starter Kit

    Prelude Emacs Emacs Cabbage
  17. Spacemacs and Evilmode EvilMode Spacemacs

  18. Hacking Python with Emacs

  19. python.el Comes with Emacs by default Basic facilities to browse

    data and interact with python shell. When in doubt C - h m
  20. Anaconda Mode Context-sensitive code completion Jump to definitions Find references

    Diew documentation Virtual environment
  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
  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
  23. Doing Ma(Git) Emacs offers a great major-mode for dealing with

    Git
  24. Life Hacking or Intro to OrgMode

  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)
  26. Gettings Things Done

  27. Getting Things Done (Workflow)

  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.
  29. Basic concepts and usage Plain Text Note Taking Task Management

    Project Planning Authoring and Publishing Mobile Support
  30. Notes Headlines Levels Formatting Checklist Properties

  31. Notes

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

    dates, timestamps Tags Properties
  33. Tags and Properties

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

    and Timestamps
  35. Querying the data Sparse tree query Agenda views

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

  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
  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!
  39. Some Nice Integrations

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

  41. MobileOrg

  42. Fetch RSS

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

  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….
  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.
  46. Created by Miguel.