# Bookmarks for Python 3 for Scientists and Engineers

## Advanced Topics

Functional Programming with Python
  A talk given by Alexey Kachayev at PyCon 2012
How to install MinGW compiler
  Instructions for installing the MinGW compiler; needed for extending Python or Perl with C
How to install SWIGWIN.exe
  How to install swigwin.exe; this is one method used for extending Perl or Python with C.

## Editors/IDEs

Eclipse
  Powerful IDE for many languages; originally developed for Java.
Is it me or is eclipse a piece of s***
  From the introduction: I know eclipse is free, but come on, I don't know how people actually use this piece of s**t to build software. I like open source as much as the next guy, I just like "high quality open source" which may be an oxymoron. NOTE: this is a blog posting followed by nearly 100 comments, almost all of which agree with the blogger.***WARNING: Contains a large amount of profanity***
Komodo Edit
  Open source editor/IDE for many languages. Does not provide debugging support or the RE toolkit like its commercial sibliing Komodo IDE, but otherwise very powerful and programmer-friendly. It has syntax highlighting, autocompletion, and much more.
Mastering the VI editor
  This tutorial is written to help beginning users get accustomed to using the VI editor, but also contains sections relevant to regular users of VI as well.
Notepad++
  Full-featured open source editor for Windows. Has syntax highlighting, autocompletion, RE support, etc. Resembles the original Notepad in name only!
Pida - A Framework for integrated development
  PIDA is an IDE (integrated development environment). PIDA is different from other IDEs in that it will use the tools you already have available rather than attempting to reinvent each one. PIDA is written in Python with the PyGTK toolkit, and although is designed to be used to program in any language, PIDA has fancy Python IDE features.
PyDev download site
  Download PyDev, the Python editing plugin for the Eclipse Platform
PyScripter
  PyScripter is a free and open-source Python Integrated Development Environment (IDE) created with the ambition to become competitive in functionality with commercial Windows-based IDEs available for other languages.
PyTools
  Python Tools for Visual Studio
Python Development with PyDev and Eclipse - Tutorial
  This article describes how to write and debug Python programs with Eclipse
Python Editors (on Python Wiki)
  A list and discussion of Python editors
Using Perspectives
  An article explaining how perspectives work in Eclipse
Vim
  A full-featured editor with vi compatibility. Be sure to install gvim, the GUI version.
XML Copy Editor
  A free editor/IDE for manipulating XML, including validation and XSLT
spyder
  The spyder editor, from the pythonxy project. A full-featured, cross-platform Python IDE with support for debugging, iPython, and many other goodies.
sublime editor
  From the web page: "Sublime Text is a sophisticated text editor for code, markup and prose. You'll love the slick user interface, extraordinary features and amazing performance."

## General

It's Not You, It's Them: Why Programming Languages Are Hard To Teach
  (NSFW) I've been teaching programming for a few years now, and I've come to realize that the harder a languages is to teach, the more poorly designed it is
Microsoft Windows Bitmap File Format Summary
  File layout for .bmp files
Moby Words
  Grady Ward's lexical lists, including 610,000 words and phrases, the largest word list in the world. These are great for word games or test data. Also, hyphenated entries, parts of speech, and thesaurus
Project Gutenberg
  Thousands of plain-text eBooks -- from the Bible to Shakespeare, and many more modern classics.
Public XML-RPC Services
  A list of public servers for XML-RPC
TIOBE Programming Community Index
  The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, MSN, Yahoo!, Wikipedia and YouTube are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.
TkDocs Tk Tutorial
  This tutorial will quickly get you up and running with the latest Tk from Tcl, Ruby, Perl or Python on Mac, Windows or Linux. It provides all the essentials about core Tk concepts, the various widgets, layout, events and more that you need for your application.
Unicode Charts
  Unicode Character Code Charts by Script (updated for Unicode 5.1)
WOTSIT
  The Programmer's File and Data Resource -- a compendium of binary file formats
merge-sort algorithm explained with folk dance
  A visual presentation of the merge-sort algorithm using folk dance, from Sapientia University, Romania.

## Object-Oriented Programming

Coupling and Cohesion
  A slide show describing the OOP concepts of coupling and cohesion

## Python

A Guide to Python's Magic Methods
  This guide is the culmination of a few months' worth of blog posts. The subject is magic methods.
ActivePython
  ActiveState's main Python page
ActiveState Code
  The online Python code archive from ActiveState. It is tied in with the Python Cookbook, and has over 2000 recipes for Python programming.
An Introduction to Asynchronous Programming and Twisted
  From the preface: "Someone recently posted to the Twisted mailing list asking for something like the 'Twisted introduction for people on a deadline'. Full disclosure: this isn't it. On the spectrum of introductions to Twisted and asynchronous programming in Python, it may be on the exact opposite end. So if you don't have any time, or any patience, this isn't the introduction you are looking for."
Best Practices for Python Scripting
  A 4-page quick reference by Matt Harrison
Charming Python: TK programming in Python
  (From IBM) Tips for beginners using Python's GUI library
Cheese Shop
  Python module repository
Class decorators might also be super!
  David Beazley illustrates that a class decorator can be used instead of super() for a mixin class
Code Skulptor
  CodeSkulptor is a browser-based Python interpreter, as featured in the online course "An Introduction to Interactive Programming in Python"
Design Patterns in Python
  Design Patterns in Python is a free online book written by Rahul Verma and Chetan Giridhar on the subject of employing design patterns in the world of object-oriented programming using Python. The book is written in a way to keep the discussion and the related examples simple.
Dive Into Python
  Free online book which goes from elementary through advanced concepts
Django project
  Main page for the entire Django project
Django templates
  Programmer's guide to using Django templates
Django: My First Impressions
  Ross Poulton's description of how Django let him create a Python-based web site in hours that had taken months in PHP
Extending Python with C
  A discussion and tutorial on creating C interfaces by hand
Extending and Embedding the Python Interpreter
  This document describes how to write modules in C or C++ to extend the Python interpreter with new modules.
Generator Tricks for Systems Programmers
  Slide show and example Python scripts explaining generator functions and generator expressions.
Getting Started with Django
  In this quick tutorial, Marakana Python expert Simeon Franklin will cover: - Installing django the easy way - using a virtualenv to isolate your development environment - getting rid of hard coded paths in your settings.py
Google Calendar API v1 Developer's Guide
  Google Calendar allows client applications to view and update calendar events in the form of Google Data API feeds. Your client application can use the Google Calendar Data API to create new events, edit or delete existing events, and query for events that match particular criteria.
Google's Python Style Guide
  The Python style guide in use at Google
Guido on main() function
  (Guido says) For Python programmers, I've got some suggestions on how to write a main() function that's easy to invoke in other contexts, e.g. from the interactive Python prompt when you feel like experimenting.
Guido's Home Page
  Guido van Rossum's personal home page
How to write "Pythonic" code
  Notes from a talk given 2008-04-13 at RuPy about the right way to write Python
How-To Guide for Descriptors
  Defines descriptors, summarizes the protocol, and shows how descriptors are called.
Introduction to Twisted
  Excellent video on Twisted by Chander K. Ganesan of the Open Technology Group
Invent with Python
  Hello! This is a book that will teach you how to program by showing you how to create computer games (from chapter 1)
Learn Python The Hard Way
  This is the site for the book "Learn Python The Hard Way". The book is a very beginner book for people who want to learn to code. If you can already code then the book will probably drive you insane. It's intended for people who have no coding chops to build up their skills before starting a more detailed book.
Metaclass programming in Python
  Pushing object-oriented programming to the next level
New Relic (commercial product)
  Get Real-Time Visibility Into Your Python Web App Gain performance insights while in production Work with actual production data The Python community is no stranger to performance, and now you can take it to the next level by monitoring your app in a production environment. New Relic lets you see the whole stack, front to back so you can find and eliminate performance bottlenecks before they affect your end users. Works out of the box with frameworks like Django, Flask, Bottle, CherryPy, and Pylons.
Online Python Tutor
  Online Python Tutor is a free educational tool that helps students overcome a fundamental barrier to learning programming: understanding what happens as the computer executes each line of a program's source code.
Plumbum
  Ever wished the wrist-handiness of shell scripts be put into a real programming language? Say hello to Plumbum Shell Combinators. Plumbum (Latin for lead, which was used to create pipes back in the day) is a small yet feature-rich library for shell script-like programs in Python. The motto of the library is "Never write shell scripts again", and thus it attempts to mimic the shell syntax (shell combinators) where it makes sense, while keeping it all Pythonic and cross-platform.
PyAtl presents: A Brief Introduction to Buildout (January 2008)
  This is the talk that I (Brandon Craig Rhodes) gave about the "buildout" development and deployment technology to conclude our January 2008 meeting of the Python Atlanta Meetup. This is actually a somewhat modified version of the talk, since I found that simplifying the slides made for a better online presentation
PyCon
  Annual grassroots (volunteer-run) Python Conference
PyMySQL
  PyMySQL: Pure Python MySQL Client
PyWin32
  Python library for Win32 (needed for Windows event Logging)
Pydev IDE
  An Eclipse Plugin for Python
Pyramid is too damn easy
  Daniel Nouri's blog post describing a Python/Pyramid success story.
Python 3 primer, Part 1
  Summary: Python 3 is the latest version of Guido van Rossum's powerful general-purpose programming language. It breaks backwards compatibility with the 2.x line but has cleaned up some syntax issues. This article is the first in a series that talks about the changes that affect the language and backwards compatibility, and it provides examples of new features.
Python Attributes and Methods
  Explains the mechanics of object attribute access for new-style Python objects.
Python Best Practices
  A laundry list of dos and don'ts for Python developers by Leonardo Maffi
Python Challenge
  The Python Challenge is a set of riddles that require a little bit of Python programming to be solved. The solutions are entered by changing the address of the page (URL). You get used to the idea pretty fast after solving the first few levels.
Python Cheat Sheet
  A one-page Python 2.x cheat sheet
Python Cookbook
  Python Cookbook — a clearinghouse for assorted Python tips and scripts. (Maintained by the authors of the O'Reilly & Assoc. book Python Cookbook)
Python ElementTree XML Tutorial
  Tutorial for ElementTree module
Python Essentials
  A page with many good Python links (some links may be out-of-date).
Python Gotchas
  This is a page devoted to Python "gotchas"
Python Home Page
  Main web site for all things Pythonic
Python IDEs
  An annotated list of Python IDEs
Python Jobs
  Python job postings; also has customized links to popular job search sites such as Monster.com and DICE
Python Journal
  Python Journal -- a little out-of-date, but some good information
Python Library Reference
  Keep this under your pillow (this is where the documentation for all basic Python functions, objects, and modules lives).
Python Module of the Week
  Doug Hellmann's Python Module of the Week series, or PyMOTW, is a tour of the Python standard library through short examples.
Python Packaging Guide
  How to build Debian Unix packages to distribute Python packages
Python Quick Reference
  Richard Gruet's Home page (scroll down for links to his excellent Python Quick Reference in various formats)
Python Testing Tools Taxonomy
  A description of available Python testing tools
Python Timeline
  From first release through 2001
Python Tools for Visual Studio
  An integrated environment for developing Python in VS2010
Python Usenet group
  The main Python discussion group on Google Groups (FKA Usenet)
Python Wiki
  A wiki for all things python. Lots of good explanations and tutorials.
Python __Underscore__ Methods
  A discussion of all the special builtin methods that can be used to override operators and builtin functions
Python for Unix and Linux System Administration
  From the web site Python is an ideal language for solving problems, especially for Linux and Unix. With this pragmatic book, administrators can review various tasks that often occur in the management of these systems, and learn how Python can provide a more efficient way to handle them. Once you finish this book, you'll be able to develop your own set of command-line utilities with Python to tackle a wide range of problems.
Python's Super Considered Harmful
  James Knight's discussion of why NOT to use the super keyword in Python
Pythonology
  From the web site I try to tag the amazing things people are doing with Python in my del.icio.us feed. Keep your eye on Planet Python or its RSS feed for other interesting new stuff.
  There's always something new in the Python world.
RESTful Application Example
  One framework that gets it right is web.py. When combined with the mimerender library, it allows you to write nice RESTful webservices:
SWIG
  A C/C++ interface generator for Python and other languages
Socket Programming How-To
  A guide to programming with sockets; part of the standard Python Documentation
Special Method Names
  Special methods for user-defined classes to emulate builtin types
Speeding up and running legacy test suites, part one
  This is part one in a two part series on Test Driven Development at SpiderOak. In part one, I discuss ways to decrease the time it takes to run a test suite
Speeding up and running legacy test suites, part two
  In part two, I discuss two ways to run a test suite that are painful if the tests are slow, but greatly beneficial if performed often with fast tests.
Tkinter Book
  An online Tkinter book with thorough descriptions of each widget
Tutorial on Threads Programming with Python
  Threads tutorial written by Norman Matloff and Francis Hsu, University of California, Davis
Twisted Code Examples
  A selection of code samples from the Twisted documentation
Twisted Matrix Labs
  The home page of Twisted, the event-driven networking framework.
Twisted News Group
  General discussion group for Twisted
Twisted Web in 60 seconds
  A series of articles on how to put together Twisted applications
Unit Testing Guidelines
  The Pylons Project rather rigorously follows a unit testing dogma along the lines described by Tres Seaver in Avoiding Temptation: Notes on using unittest effectively which this document is based on.
Unofficial Windows Binaries for Python Extension Packages
  This page provides 32- and 64-bit Windows binaries of many open-source extension packages for the official CPython distributions of the Python programming language.
What is a metaclass in Python?
  Great StackOverflow answer to the question "So what are metaclasses? What do you use them for?"
Why Python?
  Well-known hacker and Linux Advocate Eric Raymond discusses his Python Epiphany (and why he abandoned Perl)
abc module
  Abstract base classes are a form of interface checking more strict than individual hasattr() checks for particular methods. This is the discussion on Doug Hellmann's Python Method of the Week blog
blessings 1.5
  A thin, practical wrapper around terminal coloring, styling, and positioning
distribute 0.6.24
  Distribute is a fork of the Setuptools project. Distribute is intended to replace Setuptools as the standard method for working with Python module distributions.
nose
  nose extends unittest to make testing easier.
restclient
  A helper library to make writing REST clients in python extremely simple
web.py
  web.py is a web framework for Python that is as simple as it is powerful. web.py is in the public domain; you can use it for whatever purpose with absolutely no restrictions

## Python for Scientists and Engineers

A short demo on how to use IPython Notebook as a research notebook
  The great part about the seamless integration of text and code in IPython Notebook is that it's entirely conducive to the "form hypothesis -- test hypothesis -- evaluate data -- form conclusion from data -- repeat" process that we all follow (purposely or not) in science.
IPython
  IPython provides a rich toolkit to help you make the most out of using Python, with: Powerful Python shells (terminal and Qt-based). A web-based notebook with the same core features but support for code, text, mathematical expressions, inline plots and other rich media. Support for interactive data visualization and use of GUI toolkits. Flexible, embeddable interpreters to load into your own projects. Easy to use, high performance tools for parallel computing.
IPython: A System for Interactive Scientific Computing
  The IPython project provides an enhanced interactive environment that includes, among other features, support for data visualization and facilities for distributed and parallel computation.
Introduction to NumPy and Matplotlib
  Tutorial by Eric Jones from PyCon 2012
Large-scale Array-oriented Computing with Python
  A discussion of NumPy, SciPy, and their succeosrs by the leader of NumPy development. Keynote for Day 1 of PyCon Taiwan 2012, by Travis Oliphant
List of packages in Python(X,Y)
  This is the extensive list of packages in PythonXY, a complete installation of Python for numerical analysis, science, and engineering
Multi dimensional (axial) slicing in Python
  A blog entry on slicing multidimensional arrays in numpy
NumPy
  NumPy is the fundamental package for scientific computing with Python. It contains among other things: a powerful N-dimensional array object sophisticated (broadcasting) functions tools for integrating C/C++ and Fortran code useful linear algebra, Fourier transform, and random number capabilities
PyAOS
  Python for the Atmospheric and Oceanic Sciences
PyEphem
  PyEphem provides scientific-grade astronomical computations for the Python programming language
Python Imaging Library (PIL)
  The Python Imaging Library (PIL) adds image processing capabilities to your Python interpreter. This library supports many file formats, and provides powerful image processing and graphics capabilities.
Python as Super Glue for the Modern Scientific Workflow
  An insightful talk by Joshua Bloom on how python is used for controlling telescopes and visualizing data
SciPy
  SciPy (pronounced "Sigh Pie") is open-source software for mathematics, science, and engineering.... The SciPy library depends on NumPy, which provides convenient and fast N-dimensional array manipulation. The SciPy library is built to work with NumPy arrays, and provides many user-friendly and efficient numerical routines such as routines for numerical integration and optimization.
SymPy
  SymPy is a Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python and does not require any external libraries.
Teaching with ipython notebooks -- a progress report
  A discussion of using iPython to teach programming and science at the college level
iPython in depth
  A video of a 3-hour tutorial on iPython, presented by the creators of iPython
matplotlib
  matplotlib is a python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms. matplotlib can be used in python scripts, the python and ipython shell (ala MATLAB or Mathematica), web application servers, and six graphical user interface toolkits.
pandas (Python Data Analysis Library)
  pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.

## Regular Expressions

Expresso
  The premier regular expression development tool The award-winning Expresso editor is equally suitable as a teaching tool for the beginning user of regular expressions or as a full-featured development environment for the experienced programmer or web designer with an extensive knowledge of regular expressions.
Jeffrey Friedl's web site
  The web site for the author of Mastering Regular Expressions. If you buy the book from his site, he makes a bit more money. We should support him!
Kodos
  Kodos is a Python GUI utility for creating, testing and debugging regular expressions for the Python programming language.
Mastering Regular Expressions
  The most complete book on regular expressions ever.
Open Group Specifications for Regular Expressions
  Detailed and academic specification for REs and EREs from The Open Group
Python Regular Expression Testing Tool
  A simple web-based tool for testing Python regular expressions
RE Quick Reference
  A chart (in PDF) which shows what each metacharacter does, and for which applications it's valid.
RegEx Advice
  Looking for help with regular expressions? You'll find regular expression forums and blogs here at RegexAdvice.com
RegExLib.com
  Welcome to RegExLib.com, the Internet's first Regular Expression Library. Currently we have indexed 2392 expressions from 1450 contributors around the world.
Regex Coach
  The Regex Coach is a graphical application for Windows which can be used to experiment with (Perl-compatible) regular expressions interactively.
Regex Tool
  A web-based tool for PHP and Javascript regular expressions
Regular-Expressions.info
  In their own words, "The Premier website about Regular Expressions". They have tools and tutorials for using regular expressions with many different languages and applications.
jQuery Regular Expressions Review
  A comprehensive review of all jQuery regular expressions was recently performed, and this article presents the results of this analysis and offers improved versions
re -- Regular expression operations
  Python re module documentation

## SQL and Databases

Details on MySQL support for regular expressions
  MySQL's support for regular expressions is rather limited, but still very useful. This section of regular-expressions Info describes the support for regular expressions in MySQL using the RLIKE operator
Writing An Hadoop MapReduce Program In Python
  In this tutorial, I will describe how to write a simple MapReduce program for Hadoop in the Python programming language.

## Web Programming

All The Cheat Sheets That A Web Developer Needs
  See title :-)