28 Jun 2016

feedPlanet Python

Python Insider: Python 2.7.12 released

The Python 2.7.x series has a new bugfix release, Python 2.7.12, available for download.

28 Jun 2016 12:26am GMT

Python Insider: Python 2.7.12 released

The Python 2.7.x series has a new bugfix release, Python 2.7.12, available for download.

28 Jun 2016 12:26am GMT

27 Jun 2016

feedPlanet Python

Erik Marsja: Best Python libraries for Psychology researchers

python-logo-master-v3-TM

Python is gaining popularity in many field of science. This means that there also are many applications and libraries specifically for use in Psychological research. For instance, there are packages for collecting data & analysing brain imaging data. In this post, I have collected some useful Python packages for researchers within the field of Psychology and Neuroscience. I have used and tested some of them but others I have yet to try.

Experiment building applications/libraries

Importing expyrimentImporting expyriment

Expyriment is a Python library in which makes the programming of Psychology experiments a lot easier than using Python. It contains classes and methods for creating fixation cross', visual stimuli, collecting responses, etc.

Modular Psychophysics is a collection of tools that aims to implement a modular approach to Psychophysics. It enables us to write experiments in different languages. As far as I understand, you can use both MATLAB and R to control your experiments. That is, the timeline of the experiment can be carried out in another language (e.g., MATLAB).

However, it seems like the experiments are created using Python. Your experiments can be run both locally and over networks. Have yet to test this out.

OpenSesame is a Python application. Using OpenSesame one can create Psychology experiments. It has a graphical user interface (GUI) that allows the user to drag and drop objects on a timeline. More advanced experimental designs can be implemented using inline Python scripts.

PsychoPy is also a Python application for creating Psychology experiments. It comes packed with a GUI but the API can also be used for writing Python scripts. I have written a bit more thoroughly about PsychoPy: PsychoPy.

PsychoPy GUI for a drag-and-drop creation of experiments.PsychoPy GUI for a drag-and-drop creation of experiments.

I have written more extensively on Expyriment, PsychoPy, Opensesame, and some other libraries for creating experiment in my post Python apps and libraries for creating experiments.

Data analysis

Psychology and Neuroscience

PsyUtils "The psyutils package is a collection of utility functions useful for generating visual stimuli and analysing the results of psychophysical experiments. It is a work in progress, and changes as I work. It includes various helper functions for dealing with images, including creating and applying various filters in the frequency domain."

Psisignifit is a toolbox that allows you to fit psychometric functions. Further, hypotheses about psychometric data can be tested. Psisignfit allows for full Bayesian analysis of psychometric functions that includes Bayesian model selection and goodness of fit evaluation among other great things. Note, Psisigni

Pygaze is a Python library for eye-tracking data. Pygaze can, through plugins, be used from within OpenSesame.

General Recognition Theory (GRT) is a fork of a MATLAB toolbox. GRT is " a multi-dimensional version of signal detection theory." (see link for more information).

MNE is a library designed for processing electroencephalography (EEG) and magnetoencephalography (MEG) data. Collected data can be preprocessed and denoised. Time-frequency analysis and statistical testing can be carried out. MNE can also be used to apply some machine learning algorithms. Although, mainly focused on EEG and MEG data some of the statistical tests in this library can probably be used to analyse behavioural data (e.g., ANOVA).

Kabuki is a Python library for effortless creation of hierarchical Bayesian models. It uses the library PyMC. Using Kabuki you will get formatted summary statistics, posterior plots, and many more. There is, further, a function to generate data from a formulated model. It seems that there is an intention to add more commonly used statistical tests (i.e., Bayesian ANOVA) in the future!

NIPY: "Welcome to NIPY. We are a community of practice devoted to the use of the Python programming language in the analysis of neuroimaging data". Here different packages for brain imaging data can be found.

General

Although, many of the above libraries probably can be used within other research fields there are also more libraries for pure statistics & visualisation.

Descriptive and parametric statistics

PyMVPA is a Python library for MultiVariate Pattern Analysis. It enables statistical learning analyses of big data.

Pandas is a Python library for fast, flexible and expressive data structures. Researchers and analysists with an R background will find Pandas data frame objects very similar to Rs. Data can be manipulated, summarised, and some descriptive analysis can be carried out (e.g., see Descriptive Statistics Using Python for some examples using Pandas).Analysing Psychological data using Python

Statsmodels is a Python library for data exploration, estimation of statistical models, and statistical tests. An extensive list of descriptive statistics, statistical tests, plotting functions, and result statistics are available for different types of data and each estimator. Among many methods regression, generalized linear, and non-parametric tests can be carried out using statsmodels.

Pyvttbl is a library for creating Pivot tables. One can further process data and carry out statistical computations using Pyvttbl. Sadly, it seems like it is not updated anymore and is not compatible with other packages (e.g., Pandas). If you are interested in how to carry out repeated measures ANOVAs in Python this is a package that enables these kind of analysis (e.g., see Repeated Measures ANOVA using Python and Two-way ANOVA for Repeated Measures using Python).

Visualisation

There are many Python libraries for visualisation of data. Below are the ones I have worked with. Note, pandas and statsmodels also provides methods for plotting data. All three libraries are compatible with Pandas which makes data manipulation and visualisation very easy.

Python visualisation using SeabornBoxplot made using Seaborn.

Matplotlib is a package for creating two-dimensional plots.

Seaborn is a library based on Matplotlib. Using seaborn you can create ready-to-publish graphis (e.g., see the Figure below for a boxplot on some response time data).

Ggplot is a visualisation library based on the R package Ggplot2. That is, if you are familiar with R and Ggplot2 transitioning to Python and the package Ggplot will be easy.

Many of the libraries for analysis and visualisation can be installed separately and, more or less, individually . I do however recommend that you install a scientific Python distribution. This way you will get all you need (and much more) by one click (e.g., Pandas, Matplotlib, NumPy, Statsmodels, Seaborn). I suggest you have a look at the distributions Anaconda or Python(x, y). Note, that installing Python(x, y) will give you the Python IDE Spyder.

The last Python package for Psychology I am going to list is PsychoPy_ext. Although, PsychoPy_ext may be considered a library for building experiments it seems like the general aim behind the package is to make reproducible research easier. That is, analysis and plotting of the experiments can be carried out. I also think it is interesting that there seems to be a way to autorun experiments (a neat function I know that e-prime have, for instance).

That was it, if you happen to know any other Python libraries or applications with a focus on Psychology (e.g., psychophysics) or for statistical methods.

The post Best Python libraries for Psychology researchers appeared first on Erik Marsja.

27 Jun 2016 9:23pm GMT

Erik Marsja: Best Python libraries for Psychology researchers

python-logo-master-v3-TM

Python is gaining popularity in many field of science. This means that there also are many applications and libraries specifically for use in Psychological research. For instance, there are packages for collecting data & analysing brain imaging data. In this post, I have collected some useful Python packages for researchers within the field of Psychology and Neuroscience. I have used and tested some of them but others I have yet to try.

Experiment building applications/libraries

Importing expyrimentImporting expyriment

Expyriment is a Python library in which makes the programming of Psychology experiments a lot easier than using Python. It contains classes and methods for creating fixation cross', visual stimuli, collecting responses, etc.

Modular Psychophysics is a collection of tools that aims to implement a modular approach to Psychophysics. It enables us to write experiments in different languages. As far as I understand, you can use both MATLAB and R to control your experiments. That is, the timeline of the experiment can be carried out in another language (e.g., MATLAB).

However, it seems like the experiments are created using Python. Your experiments can be run both locally and over networks. Have yet to test this out.

OpenSesame is a Python application. Using OpenSesame one can create Psychology experiments. It has a graphical user interface (GUI) that allows the user to drag and drop objects on a timeline. More advanced experimental designs can be implemented using inline Python scripts.

PsychoPy is also a Python application for creating Psychology experiments. It comes packed with a GUI but the API can also be used for writing Python scripts. I have written a bit more thoroughly about PsychoPy: PsychoPy.

PsychoPy GUI for a drag-and-drop creation of experiments.PsychoPy GUI for a drag-and-drop creation of experiments.

I have written more extensively on Expyriment, PsychoPy, Opensesame, and some other libraries for creating experiment in my post Python apps and libraries for creating experiments.

Data analysis

Psychology and Neuroscience

PsyUtils "The psyutils package is a collection of utility functions useful for generating visual stimuli and analysing the results of psychophysical experiments. It is a work in progress, and changes as I work. It includes various helper functions for dealing with images, including creating and applying various filters in the frequency domain."

Psisignifit is a toolbox that allows you to fit psychometric functions. Further, hypotheses about psychometric data can be tested. Psisignfit allows for full Bayesian analysis of psychometric functions that includes Bayesian model selection and goodness of fit evaluation among other great things. Note, Psisigni

Pygaze is a Python library for eye-tracking data. Pygaze can, through plugins, be used from within OpenSesame.

General Recognition Theory (GRT) is a fork of a MATLAB toolbox. GRT is " a multi-dimensional version of signal detection theory." (see link for more information).

MNE is a library designed for processing electroencephalography (EEG) and magnetoencephalography (MEG) data. Collected data can be preprocessed and denoised. Time-frequency analysis and statistical testing can be carried out. MNE can also be used to apply some machine learning algorithms. Although, mainly focused on EEG and MEG data some of the statistical tests in this library can probably be used to analyse behavioural data (e.g., ANOVA).

Kabuki is a Python library for effortless creation of hierarchical Bayesian models. It uses the library PyMC. Using Kabuki you will get formatted summary statistics, posterior plots, and many more. There is, further, a function to generate data from a formulated model. It seems that there is an intention to add more commonly used statistical tests (i.e., Bayesian ANOVA) in the future!

NIPY: "Welcome to NIPY. We are a community of practice devoted to the use of the Python programming language in the analysis of neuroimaging data". Here different packages for brain imaging data can be found.

General

Although, many of the above libraries probably can be used within other research fields there are also more libraries for pure statistics & visualisation.

Descriptive and parametric statistics

PyMVPA is a Python library for MultiVariate Pattern Analysis. It enables statistical learning analyses of big data.

Pandas is a Python library for fast, flexible and expressive data structures. Researchers and analysists with an R background will find Pandas data frame objects very similar to Rs. Data can be manipulated, summarised, and some descriptive analysis can be carried out (e.g., see Descriptive Statistics Using Python for some examples using Pandas).Analysing Psychological data using Python

Statsmodels is a Python library for data exploration, estimation of statistical models, and statistical tests. An extensive list of descriptive statistics, statistical tests, plotting functions, and result statistics are available for different types of data and each estimator. Among many methods regression, generalized linear, and non-parametric tests can be carried out using statsmodels.

Pyvttbl is a library for creating Pivot tables. One can further process data and carry out statistical computations using Pyvttbl. Sadly, it seems like it is not updated anymore and is not compatible with other packages (e.g., Pandas). If you are interested in how to carry out repeated measures ANOVAs in Python this is a package that enables these kind of analysis (e.g., see Repeated Measures ANOVA using Python and Two-way ANOVA for Repeated Measures using Python).

Visualisation

There are many Python libraries for visualisation of data. Below are the ones I have worked with. Note, pandas and statsmodels also provides methods for plotting data. All three libraries are compatible with Pandas which makes data manipulation and visualisation very easy.

Python visualisation using SeabornBoxplot made using Seaborn.

Matplotlib is a package for creating two-dimensional plots.

Seaborn is a library based on Matplotlib. Using seaborn you can create ready-to-publish graphis (e.g., see the Figure below for a boxplot on some response time data).

Ggplot is a visualisation library based on the R package Ggplot2. That is, if you are familiar with R and Ggplot2 transitioning to Python and the package Ggplot will be easy.

Many of the libraries for analysis and visualisation can be installed separately and, more or less, individually . I do however recommend that you install a scientific Python distribution. This way you will get all you need (and much more) by one click (e.g., Pandas, Matplotlib, NumPy, Statsmodels, Seaborn). I suggest you have a look at the distributions Anaconda or Python(x, y). Note, that installing Python(x, y) will give you the Python IDE Spyder.

The last Python package for Psychology I am going to list is PsychoPy_ext. Although, PsychoPy_ext may be considered a library for building experiments it seems like the general aim behind the package is to make reproducible research easier. That is, analysis and plotting of the experiments can be carried out. I also think it is interesting that there seems to be a way to autorun experiments (a neat function I know that e-prime have, for instance).

That was it, if you happen to know any other Python libraries or applications with a focus on Psychology (e.g., psychophysics) or for statistical methods.

The post Best Python libraries for Psychology researchers appeared first on Erik Marsja.

27 Jun 2016 9:23pm GMT

Continuum Analytics News: Anaconda Fusion: A Portal to Open Data Science for Excel

Company Blog

Posted Monday, June 27, 2016
Peter Wang

Peter Wang

Chief Technical Officer & Co-Founder

AnacondaFusion_stacked_RGB.png

Excel has been business analysts' go-to program for years. It works well, and its familiarity makes it the currency of the realm for many applications.

But, in a bold new world of predictive analytics and Big Data, Excel feels cut off from the latest technologies and limited in the scope of what it can actually take on.

Fortunately for analysts across the business world, a new tool has arrived to change the game - Anaconda Fusion.

A New Dimension of Analytics

The interdimensional portal has been a staple of classic science fiction for decades. Characters step into a hole in space and emerge instantly in an entirely different setting - one with exciting new opportunities and challenges.

Now, Data Science has a portal of its own. The latest version of Anaconda Fusion, an Open Data Science (ODS) integration for Microsoft Excel, links the familiar world of spreadsheets (and the business analysts that thrive there) to the "alternate dimension" of Open Data Science that is reinventing analytics.

With Anaconda Fusion and other tools from Anaconda, business analysts and data scientists can share work - like charts, tables, formulas and insights - across Excel and ODS languages such as Python easily, erasing the partition that once divided them.

Jupyter (formerly IPython) is a popular approach to sharing across the scientific computing community, with notebooks combining code, visualizations and comments all in one document. With Anaconda Enterprise Notebooks, this is now available under a governed environment, providing the collaborative locking, version control, notebook differencing and searching needed to operate in the enterprise. Since Anaconda Fusion, like the entire Anaconda ecosystem, integrates seamlessly with Anaconda Enterprise Notebooks, businesses can finally empower Excel gurus to collaborate effectively with the entire Data Science team.

Now, business analysts can exploit the ease and brilliance of Python libraries without having to write any code. Packages such as scikit-learn and pandas drive machine learning initiatives, enabling predictive analytics and data transformations, while plotting libraries, like Bokeh, provide rich interactive visualizations.

With Anaconda Fusion, these tools are available within the familiar Excel environment-without the need to know Python. Contextually-relevant visualizations generated from Python functions are easily embedded into spreadsheets, giving business analysts the ability to make sense of, manipulate and easily interpret data scientists' work.

A Meeting of Two Cultures

Anaconda Fusion is connecting two cultures from across the business spectrum, and the end result creates enormous benefits for everyone.

Business analysts can leverage the power, flexibility and transparency of Python for data science using the Excel they are already comfortable with. This enables functionality far beyond Excel, but also can teach business analysts to use Python in the most natural way: gradually, on the job, as needed and in a manner that is relevant to their context. Given that the world is moving more and more toward using Python as a lingua franca for analytics, this benefit is key.

On the other side of the spectrum, Python-using data scientists can now expose data models or interactive graphics in a well-managed way, sharing them effectively with Excel users. Previously, sharing meant sending static images or files, but with Anaconda Fusion, Excel workbooks can now include a user interface to models and interactive graphics, eliminating the clunky overhead of creating and sending files.

It's hard to overstate how powerful this unification can be. When two cultures learn to communicate more effectively, it results in a cross-pollination of ideas. New insights are generated, and synergistic effects occur.

The Right Tools

The days of overloaded workarounds are over. With Anaconda Fusion, complex and opaque Excel macros can now be replaced with the transparent and powerful functions that Python users already know and love.

The Python programming community places a high premium on readability and clarity. Maybe that's part of why it has emerged as the fourth most popular programming language used today. Those traits are now available within the familiar framework of Excel.

Because Python plays so well with web technologies, it's also simple to transform pools of data into shareable interactive graphics - in fact, it's almost trivially easy. Simply email a web link to anyone, and they will have a beautiful graphics interface powered by live data. This is true even for the most computationally intense cases - Big Data, image recognition, automatic translation and other domains. This is transformative for the enterprise.

Jump Into the Portal

The glowing interdimensional portal of Anaconda Fusion has arrived, and enterprises can jump in right way. It's a great time to unite the experience and astuteness of business analysts with the power and flexibility of Python-powered analytics.

To learn more, you can watch our Anaconda Fusion webinar on-demand, or join our Anaconda Fusion Innovators Program to get early access to exclusive features -- free and open to anyone. You can also contact us with any questions about how Anaconda Fusion can help improve the way your business teams share data.

27 Jun 2016 3:36pm GMT

Continuum Analytics News: Anaconda Fusion: A Portal to Open Data Science for Excel

Company Blog

Posted Monday, June 27, 2016
Peter Wang

Peter Wang

Chief Technical Officer & Co-Founder

AnacondaFusion_stacked_RGB.png

Excel has been business analysts' go-to program for years. It works well, and its familiarity makes it the currency of the realm for many applications.

But, in a bold new world of predictive analytics and Big Data, Excel feels cut off from the latest technologies and limited in the scope of what it can actually take on.

Fortunately for analysts across the business world, a new tool has arrived to change the game - Anaconda Fusion.

A New Dimension of Analytics

The interdimensional portal has been a staple of classic science fiction for decades. Characters step into a hole in space and emerge instantly in an entirely different setting - one with exciting new opportunities and challenges.

Now, Data Science has a portal of its own. The latest version of Anaconda Fusion, an Open Data Science (ODS) integration for Microsoft Excel, links the familiar world of spreadsheets (and the business analysts that thrive there) to the "alternate dimension" of Open Data Science that is reinventing analytics.

With Anaconda Fusion and other tools from Anaconda, business analysts and data scientists can share work - like charts, tables, formulas and insights - across Excel and ODS languages such as Python easily, erasing the partition that once divided them.

Jupyter (formerly IPython) is a popular approach to sharing across the scientific computing community, with notebooks combining code, visualizations and comments all in one document. With Anaconda Enterprise Notebooks, this is now available under a governed environment, providing the collaborative locking, version control, notebook differencing and searching needed to operate in the enterprise. Since Anaconda Fusion, like the entire Anaconda ecosystem, integrates seamlessly with Anaconda Enterprise Notebooks, businesses can finally empower Excel gurus to collaborate effectively with the entire Data Science team.

Now, business analysts can exploit the ease and brilliance of Python libraries without having to write any code. Packages such as scikit-learn and pandas drive machine learning initiatives, enabling predictive analytics and data transformations, while plotting libraries, like Bokeh, provide rich interactive visualizations.

With Anaconda Fusion, these tools are available within the familiar Excel environment-without the need to know Python. Contextually-relevant visualizations generated from Python functions are easily embedded into spreadsheets, giving business analysts the ability to make sense of, manipulate and easily interpret data scientists' work.

A Meeting of Two Cultures

Anaconda Fusion is connecting two cultures from across the business spectrum, and the end result creates enormous benefits for everyone.

Business analysts can leverage the power, flexibility and transparency of Python for data science using the Excel they are already comfortable with. This enables functionality far beyond Excel, but also can teach business analysts to use Python in the most natural way: gradually, on the job, as needed and in a manner that is relevant to their context. Given that the world is moving more and more toward using Python as a lingua franca for analytics, this benefit is key.

On the other side of the spectrum, Python-using data scientists can now expose data models or interactive graphics in a well-managed way, sharing them effectively with Excel users. Previously, sharing meant sending static images or files, but with Anaconda Fusion, Excel workbooks can now include a user interface to models and interactive graphics, eliminating the clunky overhead of creating and sending files.

It's hard to overstate how powerful this unification can be. When two cultures learn to communicate more effectively, it results in a cross-pollination of ideas. New insights are generated, and synergistic effects occur.

The Right Tools

The days of overloaded workarounds are over. With Anaconda Fusion, complex and opaque Excel macros can now be replaced with the transparent and powerful functions that Python users already know and love.

The Python programming community places a high premium on readability and clarity. Maybe that's part of why it has emerged as the fourth most popular programming language used today. Those traits are now available within the familiar framework of Excel.

Because Python plays so well with web technologies, it's also simple to transform pools of data into shareable interactive graphics - in fact, it's almost trivially easy. Simply email a web link to anyone, and they will have a beautiful graphics interface powered by live data. This is true even for the most computationally intense cases - Big Data, image recognition, automatic translation and other domains. This is transformative for the enterprise.

Jump Into the Portal

The glowing interdimensional portal of Anaconda Fusion has arrived, and enterprises can jump in right way. It's a great time to unite the experience and astuteness of business analysts with the power and flexibility of Python-powered analytics.

To learn more, you can watch our Anaconda Fusion webinar on-demand, or join our Anaconda Fusion Innovators Program to get early access to exclusive features -- free and open to anyone. You can also contact us with any questions about how Anaconda Fusion can help improve the way your business teams share data.

27 Jun 2016 3:36pm GMT

Doug Hellmann: grp — UNIX Group Database — PyMOTW 3

The grp module can be used to read information about UNIX groups from the group database (usually /etc/group ). The read-only interface returns tuple-like objects with named attributes for the standard fields of a group record. Read more… This post is part of the Python Module of the Week series for Python 3. See PyMOTW.com … Continue reading grp - UNIX Group Database - PyMOTW 3

27 Jun 2016 1:00pm GMT

Doug Hellmann: grp — UNIX Group Database — PyMOTW 3

The grp module can be used to read information about UNIX groups from the group database (usually /etc/group ). The read-only interface returns tuple-like objects with named attributes for the standard fields of a group record. Read more… This post is part of the Python Module of the Week series for Python 3. See PyMOTW.com … Continue reading grp - UNIX Group Database - PyMOTW 3

27 Jun 2016 1:00pm GMT

Mike Driscoll: PyDev of the Week: Barry Warsaw

This week we welcome Barry Warsaw (@pumpichank) as our PyDev of the Week! Barry works on the Ubuntu operating system for Canonical and he's the project leader for GNU Mailman. He also used to be the lead maintainer for the Jython project. If you have the time, you should check out his website. Barry's Github page is also worth a look to see what projects he finds interesting. Let's take a few minutes to find out more about our fellow Pythonista!

Can you tell us a little about yourself (hobbies, education, etc):

I work for Canonical on the Ubuntu Foundations team, so we take care of the plumbing layer of Ubuntu. Roughly, it's stuff like toolchains (interpreters, compilers, language runtimes, etc.), image building, installers, and general archive goodness. I try to keep the Python stack happy and over the last few Ubuntu releases have really been concentrating on switching Ubuntu to Python 3. I'm also a Debian Developer, so a lot of the more general work on Python happens there first, and then gets imported automatically into Ubuntu. We get especially busy when new Python versions are released, ensuring that transitions go smoothly. At work I'm also responsible for the "system image updater client" which is the piece of the Ubuntu Touch flavor that performs the atomic system upgrades on Ubuntu phones and tablets.

On the side, I'm a semi-professional musician, playing bass in several local bands, doing studio work for local artists, and writing in my own home studio. I'm also a tai chi practitioner for the last 15 years or so, studying Yang style short form, sword, push hands, and more recently qi gong.

Why did you start using Python?

In 1994 I had just started working at the Corporation for National Research Initiatives in Reston, Virginia. We were doing work with mobile software agents called Knowbots. We started out using Objective-C on NeXT machines. Earlier in my career I had worked at the National Institute of Standards and Technologies, and in late 1994 some former colleagues of mine from there invited me to attend a small workshop hosted at NIST. A Dutch developer was visiting, and the topic of the workshop was this relatively new object-oriented language he'd invented.

The language of course was Python and the developer was Guido van Rossum. The workshop was fantastic and we came away with a plan to work on an Objective-C to Python bridge to support our project. One of our CNRI colleagues suggested we try to hire Guido, and as it turned out, Guido was interested in coming to work and live in the States. Once at CNRI, Guido quickly convinced us that we could do the entire project in Python, without the need for Objective-C! I had the honor of working closely with Guido for the next 8 or so years, through three companies, until he moved out to California to work for Google.

I fell in love with the Python language early on, and over those years, our little team moved a lot of the Python project infrastructure from the Netherlands to the USA. We worked on Python, and used Python in lots of projects, and I served as the release manager several times. Looking back, the Python project and community has grown unbelievable over these last 20 years, probably more than any of us would have dared to imagine, but not more than we'd hoped!

What other programming languages do you know and which is your favorite?

I'd always enjoyed learning new programming languages, and was (am?) pretty proficient at many of the old school languages like C, C++, Lisp, FORTH, Perl, and so on. But I recognized pretty quickly that Python was special. For me, it's the most direct translation from what's going on in my head to working code. I still enjoy occasionally dropping down into C, tweaking my Emacs Lisp, mucking about with JavaScript, or learning the new goodness such as Go. But if I'm starting a new project or looking for something fun to work on, Python will be my first choice.

What projects are you working on now?

Outside of work, I am the project leader for GNU Mailman, a mailing list management system. This is a project with a long history, and it's fueled the Python mailing lists since the late '90s. Although I didn't invent it originally, I've been leading the project for a long time, concentrating these days on improving version 3, which modernizes everything including really nice new web interfaces for list and subscription management (Postorius) and web-based archives (HyperKitty). Postorius and HyperKitty are Django applications which are really lead by other fantastic developers on our team. The are better web developers than me, and I enjoy working on the core management engine, which of course is written in Python 3.

Which Python libraries are your favorite (core or 3rd party)?

In Mailman, we use the email library from the stdlib, which I originally wrote back in the Python 2 days. These days, it's been very much improved and extended in Python 3 by R. David Murray and others. I'm also quite a fan of the stdlib contextlib library, and relatively recently I got a chance to dig into the new asyncio library. That's pretty braintwisty but really cool once you get the hang of it.

For third party libraries, I really love Falcon, which is a REST API library. Mailman 3 has a distributed architecture, with components like Postorius and HyperKitty talking to the core over REST, and Falcon is what powers this for us. It's an amazingly cool library.

In Mailman we also make heavy use of zope.interface and zope.component, two mature libraries for providing component based composition of complex programs. SQLAlchemy for the ORM layer and nose2 for testing are also favorites. I have my own little suite of flufl libraries that provide some nice utilities as well.

Where do you see Python going as a programming language?

I think Python's future is bright. The size of Pycon certainly attests to its continued popularity, and I think there are a lot of interesting ongoing developments. We have a number of implementations of Python, and ones like PyPy show constant improvement in speed, compatibility, and innovation. I'm excited to hear about some of the work regarding JITs, optional static typing, and other performance and multi-core work going on in the community.

I'm very happy that Python 3 adoption is strong and growing. It's no longer the case that we have to convince people to support it, but it's more like a known bug if you *don't*. The notable exceptions are dwindling and we're really in the long-tail of porting to Python 3. I've been using it almost exclusively for many years now, and don't miss Python 2 at all.

Is there anything else you'd like to say?

At the time of this writing, Pycon 2016 is exactly one month away, and my colleague Larry Hastings and I are once again chairing the Language Summit. Every year around this time I get so fired up about not just the amazing things happening *in* Python, and not just the incredible things people are doing *with* Python. More than anything, I can't wait to once again hobnob with the most incredible open source community in the world. We had 20 people at the first Python workshop back in 1994, and I've heard that Pycon this year will host about 3000 Python enthusiasts. There's nothing in my technical career that can compare with being in a conference center with so many amazing people, attending inspiring and mind blowing talks, capped off with 4 days of sprints with friends and co-developers. I can't wait!

27 Jun 2016 12:30pm GMT

Mike Driscoll: PyDev of the Week: Barry Warsaw

This week we welcome Barry Warsaw (@pumpichank) as our PyDev of the Week! Barry works on the Ubuntu operating system for Canonical and he's the project leader for GNU Mailman. He also used to be the lead maintainer for the Jython project. If you have the time, you should check out his website. Barry's Github page is also worth a look to see what projects he finds interesting. Let's take a few minutes to find out more about our fellow Pythonista!

Can you tell us a little about yourself (hobbies, education, etc):

I work for Canonical on the Ubuntu Foundations team, so we take care of the plumbing layer of Ubuntu. Roughly, it's stuff like toolchains (interpreters, compilers, language runtimes, etc.), image building, installers, and general archive goodness. I try to keep the Python stack happy and over the last few Ubuntu releases have really been concentrating on switching Ubuntu to Python 3. I'm also a Debian Developer, so a lot of the more general work on Python happens there first, and then gets imported automatically into Ubuntu. We get especially busy when new Python versions are released, ensuring that transitions go smoothly. At work I'm also responsible for the "system image updater client" which is the piece of the Ubuntu Touch flavor that performs the atomic system upgrades on Ubuntu phones and tablets.

On the side, I'm a semi-professional musician, playing bass in several local bands, doing studio work for local artists, and writing in my own home studio. I'm also a tai chi practitioner for the last 15 years or so, studying Yang style short form, sword, push hands, and more recently qi gong.

Why did you start using Python?

In 1994 I had just started working at the Corporation for National Research Initiatives in Reston, Virginia. We were doing work with mobile software agents called Knowbots. We started out using Objective-C on NeXT machines. Earlier in my career I had worked at the National Institute of Standards and Technologies, and in late 1994 some former colleagues of mine from there invited me to attend a small workshop hosted at NIST. A Dutch developer was visiting, and the topic of the workshop was this relatively new object-oriented language he'd invented.

The language of course was Python and the developer was Guido van Rossum. The workshop was fantastic and we came away with a plan to work on an Objective-C to Python bridge to support our project. One of our CNRI colleagues suggested we try to hire Guido, and as it turned out, Guido was interested in coming to work and live in the States. Once at CNRI, Guido quickly convinced us that we could do the entire project in Python, without the need for Objective-C! I had the honor of working closely with Guido for the next 8 or so years, through three companies, until he moved out to California to work for Google.

I fell in love with the Python language early on, and over those years, our little team moved a lot of the Python project infrastructure from the Netherlands to the USA. We worked on Python, and used Python in lots of projects, and I served as the release manager several times. Looking back, the Python project and community has grown unbelievable over these last 20 years, probably more than any of us would have dared to imagine, but not more than we'd hoped!

What other programming languages do you know and which is your favorite?

I'd always enjoyed learning new programming languages, and was (am?) pretty proficient at many of the old school languages like C, C++, Lisp, FORTH, Perl, and so on. But I recognized pretty quickly that Python was special. For me, it's the most direct translation from what's going on in my head to working code. I still enjoy occasionally dropping down into C, tweaking my Emacs Lisp, mucking about with JavaScript, or learning the new goodness such as Go. But if I'm starting a new project or looking for something fun to work on, Python will be my first choice.

What projects are you working on now?

Outside of work, I am the project leader for GNU Mailman, a mailing list management system. This is a project with a long history, and it's fueled the Python mailing lists since the late '90s. Although I didn't invent it originally, I've been leading the project for a long time, concentrating these days on improving version 3, which modernizes everything including really nice new web interfaces for list and subscription management (Postorius) and web-based archives (HyperKitty). Postorius and HyperKitty are Django applications which are really lead by other fantastic developers on our team. The are better web developers than me, and I enjoy working on the core management engine, which of course is written in Python 3.

Which Python libraries are your favorite (core or 3rd party)?

In Mailman, we use the email library from the stdlib, which I originally wrote back in the Python 2 days. These days, it's been very much improved and extended in Python 3 by R. David Murray and others. I'm also quite a fan of the stdlib contextlib library, and relatively recently I got a chance to dig into the new asyncio library. That's pretty braintwisty but really cool once you get the hang of it.

For third party libraries, I really love Falcon, which is a REST API library. Mailman 3 has a distributed architecture, with components like Postorius and HyperKitty talking to the core over REST, and Falcon is what powers this for us. It's an amazingly cool library.

In Mailman we also make heavy use of zope.interface and zope.component, two mature libraries for providing component based composition of complex programs. SQLAlchemy for the ORM layer and nose2 for testing are also favorites. I have my own little suite of flufl libraries that provide some nice utilities as well.

Where do you see Python going as a programming language?

I think Python's future is bright. The size of Pycon certainly attests to its continued popularity, and I think there are a lot of interesting ongoing developments. We have a number of implementations of Python, and ones like PyPy show constant improvement in speed, compatibility, and innovation. I'm excited to hear about some of the work regarding JITs, optional static typing, and other performance and multi-core work going on in the community.

I'm very happy that Python 3 adoption is strong and growing. It's no longer the case that we have to convince people to support it, but it's more like a known bug if you *don't*. The notable exceptions are dwindling and we're really in the long-tail of porting to Python 3. I've been using it almost exclusively for many years now, and don't miss Python 2 at all.

Is there anything else you'd like to say?

At the time of this writing, Pycon 2016 is exactly one month away, and my colleague Larry Hastings and I are once again chairing the Language Summit. Every year around this time I get so fired up about not just the amazing things happening *in* Python, and not just the incredible things people are doing *with* Python. More than anything, I can't wait to once again hobnob with the most incredible open source community in the world. We had 20 people at the first Python workshop back in 1994, and I've heard that Pycon this year will host about 3000 Python enthusiasts. There's nothing in my technical career that can compare with being in a conference center with so many amazing people, attending inspiring and mind blowing talks, capped off with 4 days of sprints with friends and co-developers. I can't wait!

27 Jun 2016 12:30pm GMT

Python Insider: Python 3.5.2 and Python 3.4.5 are now available

Python 3.5.2 and Python 3.4.5 are now available for download.

You can download Python 3.5.2 here, and you can download Python 3.4.5 here.

27 Jun 2016 4:33am GMT

Python Insider: Python 3.5.2 and Python 3.4.5 are now available

Python 3.5.2 and Python 3.4.5 are now available for download.

You can download Python 3.5.2 here, and you can download Python 3.4.5 here.

27 Jun 2016 4:33am GMT

26 Jun 2016

feedPlanet Python

Weekly Python Chat: List Comprehensions Workshop

When should you use list comprehensions?

When should you not use list comprehensions?

How do you make your list comprehensions readable?

How can you identify whether a code section might be translatable to a comprehension?

This event will be approximately 75 minutes long and will consist of:

26 Jun 2016 4:00pm GMT

Weekly Python Chat: List Comprehensions Workshop

When should you use list comprehensions?

When should you not use list comprehensions?

How do you make your list comprehensions readable?

How can you identify whether a code section might be translatable to a comprehension?

This event will be approximately 75 minutes long and will consist of:

26 Jun 2016 4:00pm GMT

PyCon Australia: The 2016 Programme is here!

We are proud to unveil the 2016 Programme to you all. While still officially a draft, and exact timings are subject to change, the bulk of the Programme will remain as it is.

Spread across four rooms at the Melbourne Convention and Exhibition Centre, running from 9am to 6pm each day, there is a wealth of knowledge and support for you, whatever your background.

For your convenience, each day's details can be found below.

In related news, tickets have been selling steadily leading up to this point, after the initial burst. In previous years, many people have left registering until too late, and some unfortunately missed out. Don't leave it too late this time around!

Should you have submitted a proposal and are currently waitlisted, we will contact you shortly, as the final programme slots are locked in.

26 Jun 2016 12:23pm GMT

PyCon Australia: The 2016 Programme is here!

We are proud to unveil the 2016 Programme to you all. While still officially a draft, and exact timings are subject to change, the bulk of the Programme will remain as it is.

Spread across four rooms at the Melbourne Convention and Exhibition Centre, running from 9am to 6pm each day, there is a wealth of knowledge and support for you, whatever your background.

For your convenience, each day's details can be found below.

In related news, tickets have been selling steadily leading up to this point, after the initial burst. In previous years, many people have left registering until too late, and some unfortunately missed out. Don't leave it too late this time around!

Should you have submitted a proposal and are currently waitlisted, we will contact you shortly, as the final programme slots are locked in.

26 Jun 2016 12:23pm GMT

Vasudev Ram: A Pythonic ratio for pi (or, Py for pi :)

By Vasudev Ram

Py


Pi image attribution

A Python built-in method can be used to find a ratio (of two integers) that equals the mathematical constant pi. [1]

This is how:

from __future__ import print_function

Doing:

dir(0.0) # or dir(float)

gives (some lines truncated):

'__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', 
'as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real']
>>>

from which we see that as_integer_ratio is a method of float objects. (Floats are objects, so they can have methods.) So:

>>> import math

>>> tup = math.pi.as_integer_ratio()
>>> tup
(884279719003555, 281474976710656)

>>> tup[0] / tup[1]
3.141592653589793

>>> print(sys.version)
3.6.0a2 (v3.6.0a2:378893423552, Jun 14 2016, 01:21:40) [MSC v.1900 64 bit (AMD64
)]
>>>

I was using Python 3.6 above. If you do this in Python 2.7, the "/" causes integer division (when used with integers). So you have to multiply by a float to cause float division to happen:

>>> print(sys.version)
2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:40:30) [MSC v.1500 64 bit (AMD64)]

>>> tup[0] / tup[1]
3L
>>> 1.0 * tup[0] / tup[1]
3.141592653589793
>>>

[1] There are many Wikipedia topics related to pi.
Also check out a few of my earlier math-related posts (including the one titled "Bhaskaracharya and the man who found zero" :)

The second post in the series on the uses of randomness will be posted in a couple of days - sorry for the delay.

- Vasudev Ram - Online Python training and consulting Signup to hear about my new courses and products. My Python posts Subscribe to my blog by email My ActiveState recipes

Share |



Vasudev Ram

26 Jun 2016 10:07am GMT

Vasudev Ram: A Pythonic ratio for pi (or, Py for pi :)

By Vasudev Ram

Py


Pi image attribution

A Python built-in method can be used to find a ratio (of two integers) that equals the mathematical constant pi. [1]

This is how:

from __future__ import print_function

Doing:

dir(0.0) # or dir(float)

gives (some lines truncated):

'__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', 
'as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real']
>>>

from which we see that as_integer_ratio is a method of float objects. (Floats are objects, so they can have methods.) So:

>>> import math

>>> tup = math.pi.as_integer_ratio()
>>> tup
(884279719003555, 281474976710656)

>>> tup[0] / tup[1]
3.141592653589793

>>> print(sys.version)
3.6.0a2 (v3.6.0a2:378893423552, Jun 14 2016, 01:21:40) [MSC v.1900 64 bit (AMD64
)]
>>>

I was using Python 3.6 above. If you do this in Python 2.7, the "/" causes integer division (when used with integers). So you have to multiply by a float to cause float division to happen:

>>> print(sys.version)
2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:40:30) [MSC v.1500 64 bit (AMD64)]

>>> tup[0] / tup[1]
3L
>>> 1.0 * tup[0] / tup[1]
3.141592653589793
>>>

[1] There are many Wikipedia topics related to pi.
Also check out a few of my earlier math-related posts (including the one titled "Bhaskaracharya and the man who found zero" :)

The second post in the series on the uses of randomness will be posted in a couple of days - sorry for the delay.

- Vasudev Ram - Online Python training and consulting Signup to hear about my new courses and products. My Python posts Subscribe to my blog by email My ActiveState recipes

Share |



Vasudev Ram

26 Jun 2016 10:07am GMT

Doing Math with Python: O'Reilly Webcast: Doing Math with Python

I am very excited to share that I am doing a webcast this coming week with O'Reilly titled "Doing Math with Python". You can register for it on the event page.

Here are the date and time of the webcast:

Wed, June 29th at 7 PM, San Francisco

Wed, June 29th at 10pm, New York

Thu, Jun 30th at 3am - London

Thu, Jun 30th at 7:30am - Mumbai

Thu, Jun 30th at 10am - Beijing

Thu, Jun 30th at 11am - Tokyo

Thu, Jun 30th at 12pm - Sydney

I have created a GitHub repository which will have the rough transcript, final slides and the code examples as Jupyter Notebooks.

26 Jun 2016 9:00am GMT

Doing Math with Python: O'Reilly Webcast: Doing Math with Python

I am very excited to share that I am doing a webcast this coming week with O'Reilly titled "Doing Math with Python". You can register for it on the event page.

Here are the date and time of the webcast:

Wed, June 29th at 7 PM, San Francisco

Wed, June 29th at 10pm, New York

Thu, Jun 30th at 3am - London

Thu, Jun 30th at 7:30am - Mumbai

Thu, Jun 30th at 10am - Beijing

Thu, Jun 30th at 11am - Tokyo

Thu, Jun 30th at 12pm - Sydney

I have created a GitHub repository which will have the rough transcript, final slides and the code examples as Jupyter Notebooks.

26 Jun 2016 9:00am GMT

Full Stack Python: Setting Up Python 3, Django & Gunicorn on Linux Mint 17.3

Linux Mint 17.3 "Rosa" is December 2015 release of the polished and widely-used Linux distribution. This Mint release includes both Python 2.7 and 3.4 by default, but in this tutorial we will download and install the latest Python 3.5.1 version to run our Django application.

If you want to use a different Linux distribution such as Ubuntu instead of Mint, check out the tutorial for Ubuntu 16.04 "Xenial Xerus". If Mint is your desired development environment though, let's get started!

Tools We Need

Our setup will use several system packages and code libraries to get up and running. Do not worry about installing these dependencies just yet, we will get to them as we progress through the tutorial. The tools and their current versions as of June 2016 are:

If you are on Mac OS X or Windows, my recommendation is to use virtualization software such as Parallels or VirtualBox with the Linux Mint Cinnamon desktop .iso.

We should see a desktop screen like this one when we boot up the operating system for the first time.

Linux Mint default desktop

Open up terminal to proceed with the configuration.

System Packages

We can see the Python version Linux Mint comes with, as well as where its executable is stored.

python3 --version
which python3

The output of those two commands should be (these are not commands to run):

Python 3.4.3
/usr/bin/python3

Output of 'python --version' and 'which python3' commands.

We really want to use the latest Python release instead of the default 3.4 when starting a new Python project, so let's download and install 3.5.1 now.

Run these commands in the terminal to download Python 3.5.1 source code:

cd ~/Downloads
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz

wget Python source code output.

Extract the Python source code:

tar -xvf Python-3.5.1.tgz

Linux Mint is not configured by default to build the Python source code. We need to update our system package lists and install several packages to make building the Python source code possible. If you have a password on your user account, enter it when prompted to allow the installation to proceed.

sudo apt update
sudo apt install build-essential checkinstall
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev 
sudo apt install libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
sudo apt install python3-dev

Once the packages are installed, we can configure and install Python from source.

cd Python-3.5.1
./configure
sudo make install

Test that the installation worked properly by starting up the Python REPL:

python3.5

If the REPL starts up properly with Python 3.5.1 in the output then we're good to go.

wget Python source code output.

The basic system packages we need are now installed so we can proceed to our Python-specific dependencies.

Virtual environment and pip

Python 3.5 comes with the virtual environment and pip applications so we can use them to handle our application dependencies.

Create a directory to store virtual environments then create a virtualenv for our Django project.

# the tilde "~" specifies the user's home directory, like /home/matt
cd ~
mkdir venvs
# specify the system python3 installation
python3.5 -m venv djangoproj

Activate the virtualenv.

source ~/venvs/djangoproj/bin/activate

We should see our prompt change so that we know the virtualenv is properly activated.

Output from the virtualenv environment activation.

Our virtualenv with Python 3.5.1 is activated so we can install whatever dependencies we want, such as Django and Gunicorn. Our default python command is also set to use the Python 3.5.1 installation instead of the Python 2.7 version that comes with Linux Mint.

Django and Gunicorn

Now we can install Django and Green Unicorn into our virtual environment.

pip install django==1.9.7 gunicorn==19.6

If there are no errors in the pip output then that is a good sign we can proceed.

Django and Gunicorn properly install via the pip command.

Create a new Django project named djangoproj, or whatever you want to name your project. Change into the directory for the new project.

cd ~
django-admin startproject djangoproj
cd djangoproj

We can run Django using the development server with the python manage.py runserver command. However, start Django up with Gunicorn instead.

gunicorn djangoproj.wsgi

Result of running gunicorn djangoproj.wsgi on the command line.

Awesome, we can bring up our shell project in the web browser at the http://localhost:8000 or http://127.0.0.1:8000 address.

Django project running in the Firefox web browser.

Now you're ready for Django development!

Ready for Development

Those are the first few steps for beginning development with Django and Gunicorn on Linux Mint 17.3 "Rosa". If you need an even more in-depth walkthrough for deploying your Python web application to a production environment, check out the Full Stack Python Guide to Deployments book.

To figure out what to do next for your Python project, read the topics found on the table of contents page.

Questions? Contact me via Twitter @fullstackpython or @mattmakai. I'm also on GitHub with the username makaimc.

See something wrong in this post? Fork this page's source on GitHub and submit a pull request.

26 Jun 2016 4:00am GMT

Full Stack Python: Setting Up Python 3, Django & Gunicorn on Linux Mint 17.3

Linux Mint 17.3 "Rosa" is December 2015 release of the polished and widely-used Linux distribution. This Mint release includes both Python 2.7 and 3.4 by default, but in this tutorial we will download and install the latest Python 3.5.1 version to run our Django application.

If you want to use a different Linux distribution such as Ubuntu instead of Mint, check out the tutorial for Ubuntu 16.04 "Xenial Xerus". If Mint is your desired development environment though, let's get started!

Tools We Need

Our setup will use several system packages and code libraries to get up and running. Do not worry about installing these dependencies just yet, we will get to them as we progress through the tutorial. The tools and their current versions as of June 2016 are:

If you are on Mac OS X or Windows, my recommendation is to use virtualization software such as Parallels or VirtualBox with the Linux Mint Cinnamon desktop .iso.

We should see a desktop screen like this one when we boot up the operating system for the first time.

Linux Mint default desktop

Open up terminal to proceed with the configuration.

System Packages

We can see the Python version Linux Mint comes with, as well as where its executable is stored.

python3 --version
which python3

The output of those two commands should be (these are not commands to run):

Python 3.4.3
/usr/bin/python3

Output of 'python --version' and 'which python3' commands.

We really want to use the latest Python release instead of the default 3.4 when starting a new Python project, so let's download and install 3.5.1 now.

Run these commands in the terminal to download Python 3.5.1 source code:

cd ~/Downloads
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz

wget Python source code output.

Extract the Python source code:

tar -xvf Python-3.5.1.tgz

Linux Mint is not configured by default to build the Python source code. We need to update our system package lists and install several packages to make building the Python source code possible. If you have a password on your user account, enter it when prompted to allow the installation to proceed.

sudo apt update
sudo apt install build-essential checkinstall
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev 
sudo apt install libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
sudo apt install python3-dev

Once the packages are installed, we can configure and install Python from source.

cd Python-3.5.1
./configure
sudo make install

Test that the installation worked properly by starting up the Python REPL:

python3.5

If the REPL starts up properly with Python 3.5.1 in the output then we're good to go.

wget Python source code output.

The basic system packages we need are now installed so we can proceed to our Python-specific dependencies.

Virtual environment and pip

Python 3.5 comes with the virtual environment and pip applications so we can use them to handle our application dependencies.

Create a directory to store virtual environments then create a virtualenv for our Django project.

# the tilde "~" specifies the user's home directory, like /home/matt
cd ~
mkdir venvs
# specify the system python3 installation
python3.5 -m venv djangoproj

Activate the virtualenv.

source ~/venvs/djangoproj/bin/activate

We should see our prompt change so that we know the virtualenv is properly activated.

Output from the virtualenv environment activation.

Our virtualenv with Python 3.5.1 is activated so we can install whatever dependencies we want, such as Django and Gunicorn. Our default python command is also set to use the Python 3.5.1 installation instead of the Python 2.7 version that comes with Linux Mint.

Django and Gunicorn

Now we can install Django and Green Unicorn into our virtual environment.

pip install django==1.9.7 gunicorn==19.6

If there are no errors in the pip output then that is a good sign we can proceed.

Django and Gunicorn properly install via the pip command.

Create a new Django project named djangoproj, or whatever you want to name your project. Change into the directory for the new project.

cd ~
django-admin startproject djangoproj
cd djangoproj

We can run Django using the development server with the python manage.py runserver command. However, start Django up with Gunicorn instead.

gunicorn djangoproj.wsgi

Result of running gunicorn djangoproj.wsgi on the command line.

Awesome, we can bring up our shell project in the web browser at the http://localhost:8000 or http://127.0.0.1:8000 address.

Django project running in the Firefox web browser.

Now you're ready for Django development!

Ready for Development

Those are the first few steps for beginning development with Django and Gunicorn on Linux Mint 17.3 "Rosa". If you need an even more in-depth walkthrough for deploying your Python web application to a production environment, check out the Full Stack Python Guide to Deployments book.

To figure out what to do next for your Python project, read the topics found on the table of contents page.

Questions? Contact me via Twitter @fullstackpython or @mattmakai. I'm also on GitHub with the username makaimc.

See something wrong in this post? Fork this page's source on GitHub and submit a pull request.

26 Jun 2016 4:00am GMT

Podcast.__init__: Episode 63 - Armin Ronacher

Summary

Armin Ronacher is a prolific contributor to the Python software ecosystem, creating such widely used projects as Flask and Jinja2. This week we got the opportunity to talk to him about how he got his start with Python and what has inspired him to create the various tools that have made our lives easier. We also discussed his experiences working in Rust and how it can interface with Python.

Brief Introduction

Linode Sponsor Banner

Use the promo code podcastinit20 to get a $20 credit when you sign up!

sentry-horizontal-black.png

Stop hoping your users will report bugs. Sentry's real-time tracking gives you insight into production deployments and information to reproduce and fix crashes. Use the code podcastinit at signup to get a $50 credit!

Interview with Armin Ronacher

Keep In Touch

Picks

Links

The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA

Summary Armin Ronacher is a prolific contributor to the Python software ecosystem, creating such widely used projects as Flask and Jinja2. This week we got the opportunity to talk to him about how he got his start with Python and what has inspired him to create the various tools that have made our lives easier. We also discussed his experiences working in Rust and how it can interface with Python.Brief IntroductionHello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.I would like to thank everyone who has donated to the show. Your contributions help us make the show sustainable. For details on how to support the show you can visit our site at pythonpodcast.comLinode is sponsoring us this week. Check them out at linode.com/podcastinit and get a $20 credit to try out their fast and reliable Linux virtual servers for your next projectWe are also sponsored by Sentry this week. Stop hoping your users will report bugs. Sentry's real-time tracking gives you insight into production deployments and information to reproduce and fix crashes. Check them out at getsentry.comVisit our site to subscribe to our show, sign up for our newsletter, read the show notes, and get in touch.To help other people find the show you can leave a review on iTunes, or Google Play Music, and tell your friends and co-workersJoin our community! Visit discourse.pythonpodcast.com for your opportunity to find out about upcoming guests, suggest questions, and propose show ideas.Your hosts as usual are Tobias Macey and Chris PattiToday we're interviewing Armin Ronacher about his contributions to the Python community. Use the promo code podcastinit20 to get a $20 credit when you sign up! Stop hoping your users will report bugs. Sentry's real-time tracking gives you insight into production deployments and information to reproduce and fix crashes. Use the code podcastinit at signup to get a $50 credit!Interview with Armin RonacherIntroductionsHow did you get introduced to Python? - ChrisWhat was the first open source project that you created in Python? - TobiasWhat is your view of the responsibility for open source project maintainers and how do you manage a smooth handoff for projects that you no longer wish to be involved in? - TobiasYou have created a large number of successful open source libraries and tools during your career. What are some of the projects that may be less well known that you think people might find interesting? - Tobias (e.g. logbook)I notice that you recently worked on the pipsi project. Please tell us about it! - ChrisFollowing on from the last question, where would you like to see the Python packaging infrastructure go in the future? - ChrisYou have had some strong opinions of Python 2 vs Python 3. How has your position on that subject changed over time? - TobiasLet's talk about Lektor - what differentiates it from the pack, and what keeps you coming back to CMS projects? - ChrisHow has your blogging contributed to the work that you do and the success you have achieved? - TobiasLately you have been doing a fair amount of work with Rust. What was your reasoning for learning that language and how has it influenced your work with Python? - TobiasIn addition to the code you have written, you also helped to form the Pocoo organization. Can you explain what Pocoo is and what it does? What has inspired the rebranding to the Pallets project? - TobiasKeep In TouchTwitterPicksTobiasRadical CandorChrisLoverbeer BeerBrugnaThe Human Resource MachineArminBiermanufaktur LonciumMatakustix - Hai Hai HaibodnLinksPHPbbPocooPallets ProjectThe intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA

26 Jun 2016 12:48am GMT

Podcast.__init__: Episode 63 - Armin Ronacher

Summary

Armin Ronacher is a prolific contributor to the Python software ecosystem, creating such widely used projects as Flask and Jinja2. This week we got the opportunity to talk to him about how he got his start with Python and what has inspired him to create the various tools that have made our lives easier. We also discussed his experiences working in Rust and how it can interface with Python.

Brief Introduction

Linode Sponsor Banner

Use the promo code podcastinit20 to get a $20 credit when you sign up!

sentry-horizontal-black.png

Stop hoping your users will report bugs. Sentry's real-time tracking gives you insight into production deployments and information to reproduce and fix crashes. Use the code podcastinit at signup to get a $50 credit!

Interview with Armin Ronacher

Keep In Touch

Picks

Links

The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA

Summary Armin Ronacher is a prolific contributor to the Python software ecosystem, creating such widely used projects as Flask and Jinja2. This week we got the opportunity to talk to him about how he got his start with Python and what has inspired him to create the various tools that have made our lives easier. We also discussed his experiences working in Rust and how it can interface with Python.Brief IntroductionHello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.I would like to thank everyone who has donated to the show. Your contributions help us make the show sustainable. For details on how to support the show you can visit our site at pythonpodcast.comLinode is sponsoring us this week. Check them out at linode.com/podcastinit and get a $20 credit to try out their fast and reliable Linux virtual servers for your next projectWe are also sponsored by Sentry this week. Stop hoping your users will report bugs. Sentry's real-time tracking gives you insight into production deployments and information to reproduce and fix crashes. Check them out at getsentry.comVisit our site to subscribe to our show, sign up for our newsletter, read the show notes, and get in touch.To help other people find the show you can leave a review on iTunes, or Google Play Music, and tell your friends and co-workersJoin our community! Visit discourse.pythonpodcast.com for your opportunity to find out about upcoming guests, suggest questions, and propose show ideas.Your hosts as usual are Tobias Macey and Chris PattiToday we're interviewing Armin Ronacher about his contributions to the Python community. Use the promo code podcastinit20 to get a $20 credit when you sign up! Stop hoping your users will report bugs. Sentry's real-time tracking gives you insight into production deployments and information to reproduce and fix crashes. Use the code podcastinit at signup to get a $50 credit!Interview with Armin RonacherIntroductionsHow did you get introduced to Python? - ChrisWhat was the first open source project that you created in Python? - TobiasWhat is your view of the responsibility for open source project maintainers and how do you manage a smooth handoff for projects that you no longer wish to be involved in? - TobiasYou have created a large number of successful open source libraries and tools during your career. What are some of the projects that may be less well known that you think people might find interesting? - Tobias (e.g. logbook)I notice that you recently worked on the pipsi project. Please tell us about it! - ChrisFollowing on from the last question, where would you like to see the Python packaging infrastructure go in the future? - ChrisYou have had some strong opinions of Python 2 vs Python 3. How has your position on that subject changed over time? - TobiasLet's talk about Lektor - what differentiates it from the pack, and what keeps you coming back to CMS projects? - ChrisHow has your blogging contributed to the work that you do and the success you have achieved? - TobiasLately you have been doing a fair amount of work with Rust. What was your reasoning for learning that language and how has it influenced your work with Python? - TobiasIn addition to the code you have written, you also helped to form the Pocoo organization. Can you explain what Pocoo is and what it does? What has inspired the rebranding to the Pallets project? - TobiasKeep In TouchTwitterPicksTobiasRadical CandorChrisLoverbeer BeerBrugnaThe Human Resource MachineArminBiermanufaktur LonciumMatakustix - Hai Hai HaibodnLinksPHPbbPocooPallets ProjectThe intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA

26 Jun 2016 12:48am GMT

25 Jun 2016

feedPlanet Python

Damián Avila: How to pin Conda

One interesting advance feature in Conda is the capacity to pin packages from your environments so they can not be updated at all. If you are interested in that specific version of some package and not the next one because it breaks your work completely or for some other reason, you are probably pinning that package. If you are adding the specific version in every command you run instead of pinning the package, you are doing it wrong and you should keep reading ;-)

But, is it possible to pin Conda itself so it does not get updated every time you try to install/update something else?

Read more… (2 min remaining to read)

25 Jun 2016 3:54pm GMT

Damián Avila: How to pin Conda

One interesting advance feature in Conda is the capacity to pin packages from your environments so they can not be updated at all. If you are interested in that specific version of some package and not the next one because it breaks your work completely or for some other reason, you are probably pinning that package. If you are adding the specific version in every command you run instead of pinning the package, you are doing it wrong and you should keep reading ;-)

But, is it possible to pin Conda itself so it does not get updated every time you try to install/update something else?

Read more… (2 min remaining to read)

25 Jun 2016 3:54pm GMT

Catalin George Festila: OpenGL and OpenCV with python 2.7 - part 002.

I deal today with opencv and I fix some of my errors.
One is this error I got with cv2.VideoCapture. When I try to used with load video and createBackgroundSubtractorMOG2() i got this:

cv2.error: C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\highgui\src\window.cpp:281: error: (-215) size.width0 amp="" cv::imshow="" function="" i="" in="" size.height="">
You need also to have opencv_ffmpeg310.dll and opencv_ffmpeg310_64.dll into your Windows C:\Windows\System32, this will help me to play videos.
Now make sure you have the opencv version 3.1.0 because opencv come with some changes over python.
C:\Python27\python
Python 2.7.8 (default, Jun 30 2014, 16:08:48) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>import cv2
>>>print cv2.__version__
3.1.0

You can take some infos from about opencv python module - cv2 with:

>>>cv2.getBuildInformation()
...
>>>cv2.getCPUTickCount()
...
>>>print cv2.getNumberOfCPUs()
...
>>>print cv2.ocl.haveOpenCL()
True

You can also see some error by disable OpenCL:

>>>cv2.ocl.setUseOpenCL(False)
>>>print cv2.ocl.useOpenCL()
False

Now will show you how to use webcam gray and color , and play one video:
webcam color

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
cv2.imshow('frame',frame)
if 0xFF & cv2.waitKey(5) == 27:
break
cap.release()
cv2.destroyAllWindows()

webcam gray

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if 0xFF & cv2.waitKey(5) == 27:
break
cap.release()
cv2.destroyAllWindows()

play video

import cv2
from cv2 import *
capture = cv2.VideoCapture("avi_test_001.avi")
while True:
ret, img = capture.read()
cv2.imshow('some', img)
if 0xFF & cv2.waitKey(5) == 27:
break
cv2.destroyAllWindows()


25 Jun 2016 11:20am GMT

Catalin George Festila: OpenGL and OpenCV with python 2.7 - part 002.

I deal today with opencv and I fix some of my errors.
One is this error I got with cv2.VideoCapture. When I try to used with load video and createBackgroundSubtractorMOG2() i got this:

cv2.error: C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\highgui\src\window.cpp:281: error: (-215) size.width0 amp="" cv::imshow="" function="" i="" in="" size.height="">
You need also to have opencv_ffmpeg310.dll and opencv_ffmpeg310_64.dll into your Windows C:\Windows\System32, this will help me to play videos.
Now make sure you have the opencv version 3.1.0 because opencv come with some changes over python.
C:\Python27\python
Python 2.7.8 (default, Jun 30 2014, 16:08:48) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>import cv2
>>>print cv2.__version__
3.1.0

You can take some infos from about opencv python module - cv2 with:

>>>cv2.getBuildInformation()
...
>>>cv2.getCPUTickCount()
...
>>>print cv2.getNumberOfCPUs()
...
>>>print cv2.ocl.haveOpenCL()
True

You can also see some error by disable OpenCL:

>>>cv2.ocl.setUseOpenCL(False)
>>>print cv2.ocl.useOpenCL()
False

Now will show you how to use webcam gray and color , and play one video:
webcam color

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
cv2.imshow('frame',frame)
if 0xFF & cv2.waitKey(5) == 27:
break
cap.release()
cv2.destroyAllWindows()

webcam gray

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if 0xFF & cv2.waitKey(5) == 27:
break
cap.release()
cv2.destroyAllWindows()

play video

import cv2
from cv2 import *
capture = cv2.VideoCapture("avi_test_001.avi")
while True:
ret, img = capture.read()
cv2.imshow('some', img)
if 0xFF & cv2.waitKey(5) == 27:
break
cv2.destroyAllWindows()


25 Jun 2016 11:20am GMT

Weekly Python StackOverflow Report: (xxv) stackoverflow python report

These are the ten most rated questions at Stack Overflow last week.
Between brackets: [question score / answers count]
Build date: 2016-06-25 09:53:40 GMT


  1. Is there a Python constant for Unicode whitespace? - [13/1]
  2. Cut within a pattern using Python regex - [10/4]
  3. Meaning of '>>' in Python byte code - [10/1]
  4. Empty class size in python - [9/2]
  5. How to write a complete Python wrapper around a C Struct using Cython? - [8/1]
  6. How to write unittests for an optional dependency in a python package? - [7/2]
  7. Why does Python's float raise ValueError for some very long inputs? - [7/2]
  8. Fast algorithm to find indices where multiple arrays have the same value - [6/4]
  9. Identifying consecutive occurrences of a value - [6/3]
  10. How to obtain the right alpha value to perfectly blend two images? - [6/2]

25 Jun 2016 9:55am GMT

Weekly Python StackOverflow Report: (xxv) stackoverflow python report

These are the ten most rated questions at Stack Overflow last week.
Between brackets: [question score / answers count]
Build date: 2016-06-25 09:53:40 GMT


  1. Is there a Python constant for Unicode whitespace? - [13/1]
  2. Cut within a pattern using Python regex - [10/4]
  3. Meaning of '>>' in Python byte code - [10/1]
  4. Empty class size in python - [9/2]
  5. How to write a complete Python wrapper around a C Struct using Cython? - [8/1]
  6. How to write unittests for an optional dependency in a python package? - [7/2]
  7. Why does Python's float raise ValueError for some very long inputs? - [7/2]
  8. Fast algorithm to find indices where multiple arrays have the same value - [6/4]
  9. Identifying consecutive occurrences of a value - [6/3]
  10. How to obtain the right alpha value to perfectly blend two images? - [6/2]

25 Jun 2016 9:55am GMT

Catalin George Festila: OpenGL and OpenCV with python 2.7 - part 001.

First you need to know what version of python you use.
C:\Python27>python
Python 2.7.8 (default, Jun 30 2014, 16:08:48) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

You need also to download the OpenCV version 3.0 from here.
Then run the executable into your folder and get cv2.pyd file from \opencv\build\python\2.7\x64 and paste to \Python27\Lib\site-packages.
If you use then use 32 bit python version then use this path: \opencv\build\python\2.7\x86.
Use pip to install next python modules:
C:\Python27\Scripts>pip install PyOpenGL
...
C:\Python27\Scripts>pip install numpy
...
C:\Python27\Scripts>pip install matplotlib
...

Let's see how is working OpenGL:
C:\Python27>python
Python 2.7.8 (default, Jun 30 2014, 16:08:48) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import OpenGL
>>> import numpy
>>> import matplotlib
>>> import cv2
>>> from OpenGL import *
>>> from numpy import *
>>> from matplotlib import *
>>> from cv2 import *

You can also use dir(module) to see more. You can import all from GL, GLU and GLUT.
>>> dir(OpenGL)
['ALLOW_NUMPY_SCALARS', 'ARRAY_SIZE_CHECKING', 'CONTEXT_CHECKING', 'ERROR_CHECKING', 'ERROR_LOGGING', 'ERROR_ON_COPY', 'FORWARD_COMPATIBLE_ONLY', 'FULL_LOGGING', 'FormatHandler', 'MODULE_ANNOTATIONS', 'PlatformPlugin', 'SIZE_1_ARRAY_UNPACK', 'STORE_POINTERS', 'UNSIGNED_BYTE_IMAGES_AS_STRING', 'USE_ACCELERATE', 'WARN_ON_FORMAT_UNAVAILABLE', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_bi', 'environ_key', 'os', 'plugins', 'sys', 'version']
>>> from OpenGL.GL import *
>>> from OpenGL.GLU import *
>>> from OpenGL.GLUT import *
>>> from OpenGL.WGL import *

If you are very good with python OpenGL module then you can import just like this example:
>>> from OpenGL.arrays import ArrayDatatype
>>> from OpenGL.GL import (GL_ARRAY_BUFFER, GL_COLOR_BUFFER_BIT,
... GL_COMPILE_STATUS, GL_FALSE, GL_FLOAT, GL_FRAGMENT_SHADER,
... GL_LINK_STATUS, GL_RENDERER, GL_SHADING_LANGUAGE_VERSION,
... GL_STATIC_DRAW, GL_TRIANGLES, GL_TRUE, GL_VENDOR, GL_VERSION,
... GL_VERTEX_SHADER, glAttachShader, glBindBuffer, glBindVertexArray,
... glBufferData, glClear, glClearColor, glCompileShader,
... glCreateProgram, glCreateShader, glDeleteProgram,
... glDeleteShader, glDrawArrays, glEnableVertexAttribArray,
... glGenBuffers, glGenVertexArrays, glGetAttribLocation,
... glGetProgramInfoLog, glGetProgramiv, glGetShaderInfoLog,
... glGetShaderiv, glGetString, glGetUniformLocation, glLinkProgram,
... glShaderSource, glUseProgram, glVertexAttribPointer)

Most of this OpenGL need to have a valid OpenGL rendering context.
For example you can test it with WGL ( WGL or Wiggle is an API between OpenGL and the windowing system interface of Microsoft Windows):
>>> import OpenGL
>>> from OpenGL import *
>>> from OpenGL import WGL
>>> print WGL.wglGetCurrentDC()
None

Now , let's see the OpenCV python module with s=one simple webcam python script:

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()

This is result of my webcam:



25 Jun 2016 7:51am GMT

Catalin George Festila: OpenGL and OpenCV with python 2.7 - part 001.

First you need to know what version of python you use.
C:\Python27>python
Python 2.7.8 (default, Jun 30 2014, 16:08:48) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

You need also to download the OpenCV version 3.0 from here.
Then run the executable into your folder and get cv2.pyd file from \opencv\build\python\2.7\x64 and paste to \Python27\Lib\site-packages.
If you use then use 32 bit python version then use this path: \opencv\build\python\2.7\x86.
Use pip to install next python modules:
C:\Python27\Scripts>pip install PyOpenGL
...
C:\Python27\Scripts>pip install numpy
...
C:\Python27\Scripts>pip install matplotlib
...

Let's see how is working OpenGL:
C:\Python27>python
Python 2.7.8 (default, Jun 30 2014, 16:08:48) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import OpenGL
>>> import numpy
>>> import matplotlib
>>> import cv2
>>> from OpenGL import *
>>> from numpy import *
>>> from matplotlib import *
>>> from cv2 import *

You can also use dir(module) to see more. You can import all from GL, GLU and GLUT.
>>> dir(OpenGL)
['ALLOW_NUMPY_SCALARS', 'ARRAY_SIZE_CHECKING', 'CONTEXT_CHECKING', 'ERROR_CHECKING', 'ERROR_LOGGING', 'ERROR_ON_COPY', 'FORWARD_COMPATIBLE_ONLY', 'FULL_LOGGING', 'FormatHandler', 'MODULE_ANNOTATIONS', 'PlatformPlugin', 'SIZE_1_ARRAY_UNPACK', 'STORE_POINTERS', 'UNSIGNED_BYTE_IMAGES_AS_STRING', 'USE_ACCELERATE', 'WARN_ON_FORMAT_UNAVAILABLE', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_bi', 'environ_key', 'os', 'plugins', 'sys', 'version']
>>> from OpenGL.GL import *
>>> from OpenGL.GLU import *
>>> from OpenGL.GLUT import *
>>> from OpenGL.WGL import *

If you are very good with python OpenGL module then you can import just like this example:
>>> from OpenGL.arrays import ArrayDatatype
>>> from OpenGL.GL import (GL_ARRAY_BUFFER, GL_COLOR_BUFFER_BIT,
... GL_COMPILE_STATUS, GL_FALSE, GL_FLOAT, GL_FRAGMENT_SHADER,
... GL_LINK_STATUS, GL_RENDERER, GL_SHADING_LANGUAGE_VERSION,
... GL_STATIC_DRAW, GL_TRIANGLES, GL_TRUE, GL_VENDOR, GL_VERSION,
... GL_VERTEX_SHADER, glAttachShader, glBindBuffer, glBindVertexArray,
... glBufferData, glClear, glClearColor, glCompileShader,
... glCreateProgram, glCreateShader, glDeleteProgram,
... glDeleteShader, glDrawArrays, glEnableVertexAttribArray,
... glGenBuffers, glGenVertexArrays, glGetAttribLocation,
... glGetProgramInfoLog, glGetProgramiv, glGetShaderInfoLog,
... glGetShaderiv, glGetString, glGetUniformLocation, glLinkProgram,
... glShaderSource, glUseProgram, glVertexAttribPointer)

Most of this OpenGL need to have a valid OpenGL rendering context.
For example you can test it with WGL ( WGL or Wiggle is an API between OpenGL and the windowing system interface of Microsoft Windows):
>>> import OpenGL
>>> from OpenGL import *
>>> from OpenGL import WGL
>>> print WGL.wglGetCurrentDC()
None

Now , let's see the OpenCV python module with s=one simple webcam python script:

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()

This is result of my webcam:



25 Jun 2016 7:51am GMT

10 Nov 2011

feedPython Software Foundation | GSoC'11 Students

Benedict Stein: King Willams Town Bahnhof

Gestern musste ich morgens zur Station nach KWT um unsere Rerservierten Bustickets für die Weihnachtsferien in Capetown abzuholen. Der Bahnhof selber ist seit Dezember aus kostengründen ohne Zugverbindung - aber Translux und co - die langdistanzbusse haben dort ihre Büros.


Größere Kartenansicht




© benste CC NC SA

10 Nov 2011 10:57am GMT

09 Nov 2011

feedPython Software Foundation | GSoC'11 Students

Benedict Stein

Niemand ist besorgt um so was - mit dem Auto fährt man einfach durch, und in der City - nahe Gnobie- "ne das ist erst gefährlich wenn die Feuerwehr da ist" - 30min später auf dem Rückweg war die Feuerwehr da.




© benste CC NC SA

09 Nov 2011 8:25pm GMT

08 Nov 2011

feedPython Software Foundation | GSoC'11 Students

Benedict Stein: Brai Party

Brai = Grillabend o.ä.

Die möchte gern Techniker beim Flicken ihrer SpeakOn / Klinke Stecker Verzweigungen...

Die Damen "Mamas" der Siedlung bei der offiziellen Eröffnungsrede

Auch wenn weniger Leute da waren als erwartet, Laute Musik und viele Leute ...

Und natürlich ein Feuer mit echtem Holz zum Grillen.

© benste CC NC SA

08 Nov 2011 2:30pm GMT

07 Nov 2011

feedPython Software Foundation | GSoC'11 Students

Benedict Stein: Lumanyano Primary

One of our missions was bringing Katja's Linux Server back to her room. While doing that we saw her new decoration.

Björn, Simphiwe carried the PC to Katja's school


© benste CC NC SA

07 Nov 2011 2:00pm GMT

06 Nov 2011

feedPython Software Foundation | GSoC'11 Students

Benedict Stein: Nelisa Haircut

Today I went with Björn to Needs Camp to Visit Katja's guest family for a special Party. First of all we visited some friends of Nelisa - yeah the one I'm working with in Quigney - Katja's guest fathers sister - who did her a haircut.

African Women usually get their hair done by arranging extensions and not like Europeans just cutting some hair.

In between she looked like this...

And then she was done - looks amazing considering the amount of hair she had last week - doesn't it ?

© benste CC NC SA

06 Nov 2011 7:45pm GMT

05 Nov 2011

feedPython Software Foundation | GSoC'11 Students

Benedict Stein: Mein Samstag

Irgendwie viel mir heute auf das ich meine Blogposts mal ein bischen umstrukturieren muss - wenn ich immer nur von neuen Plätzen berichte, dann müsste ich ja eine Rundreise machen. Hier also mal ein paar Sachen aus meinem heutigen Alltag.

Erst einmal vorweg, Samstag zählt zumindest für uns Voluntäre zu den freien Tagen.

Dieses Wochenende sind nur Rommel und ich auf der Farm - Katja und Björn sind ja mittlerweile in ihren Einsatzstellen, und meine Mitbewohner Kyle und Jonathan sind zu Hause in Grahamstown - sowie auch Sipho der in Dimbaza wohnt.
Robin, die Frau von Rommel ist in Woodie Cape - schon seit Donnerstag um da ein paar Sachen zur erledigen.
Naja wie dem auch sei heute morgen haben wir uns erstmal ein gemeinsames Weetbix/Müsli Frühstück gegönnt und haben uns dann auf den Weg nach East London gemacht. 2 Sachen waren auf der Checkliste Vodacom, Ethienne (Imobilienmakler) außerdem auf dem Rückweg die fehlenden Dinge nach NeedsCamp bringen.

Nachdem wir gerade auf der Dirtroad losgefahren sind mussten wir feststellen das wir die Sachen für Needscamp und Ethienne nicht eingepackt hatten aber die Pumpe für die Wasserversorgung im Auto hatten.

Also sind wir in EastLondon ersteinmal nach Farmerama - nein nicht das onlinespiel farmville - sondern einen Laden mit ganz vielen Sachen für eine Farm - in Berea einem nördlichen Stadteil gefahren.

In Farmerama haben wir uns dann beraten lassen für einen Schnellverschluss der uns das leben mit der Pumpe leichter machen soll und außerdem eine leichtere Pumpe zur Reperatur gebracht, damit es nicht immer so ein großer Aufwand ist, wenn mal wieder das Wasser ausgegangen ist.

Fego Caffé ist in der Hemmingways Mall, dort mussten wir und PIN und PUK einer unserer Datensimcards geben lassen, da bei der PIN Abfrage leider ein zahlendreher unterlaufen ist. Naja auf jeden Fall speichern die Shops in Südafrika so sensible Daten wie eine PUK - die im Prinzip zugang zu einem gesperrten Phone verschafft.

Im Cafe hat Rommel dann ein paar online Transaktionen mit dem 3G Modem durchgeführt, welches ja jetzt wieder funktionierte - und übrigens mittlerweile in Ubuntu meinem Linuxsystem perfekt klappt.

Nebenbei bin ich nach 8ta gegangen um dort etwas über deren neue Deals zu erfahren, da wir in einigen von Hilltops Centern Internet anbieten wollen. Das Bild zeigt die Abdeckung UMTS in NeedsCamp Katjas Ort. 8ta ist ein neuer Telefonanbieter von Telkom, nachdem Vodafone sich Telkoms anteile an Vodacom gekauft hat müssen die komplett neu aufbauen.
Wir haben uns dazu entschieden mal eine kostenlose Prepaidkarte zu testen zu organisieren, denn wer weis wie genau die Karte oben ist ... Bevor man einen noch so billigen Deal für 24 Monate signed sollte man wissen obs geht.

Danach gings nach Checkers in Vincent, gesucht wurden zwei Hotplates für WoodyCape - R 129.00 eine - also ca. 12€ für eine zweigeteilte Kochplatte.
Wie man sieht im Hintergrund gibts schon Weihnachtsdeko - Anfang November und das in Südafrika bei sonnig warmen min- 25°C

Mittagessen haben wir uns bei einem Pakistanischen Curry Imbiss gegönnt - sehr empfehlenswert !
Naja und nachdem wir dann vor ner Stunde oder so zurück gekommen sind habe ich noch den Kühlschrank geputzt den ich heute morgen zum defrosten einfach nach draußen gestellt hatte. Jetzt ist der auch mal wieder sauber und ohne 3m dicke Eisschicht...

Morgen ... ja darüber werde ich gesondert berichten ... aber vermutlich erst am Montag, denn dann bin ich nochmal wieder in Quigney(East London) und habe kostenloses Internet.

© benste CC NC SA

05 Nov 2011 4:33pm GMT

31 Oct 2011

feedPython Software Foundation | GSoC'11 Students

Benedict Stein: Sterkspruit Computer Center

Sterkspruit is one of Hilltops Computer Centres in the far north of Eastern Cape. On the trip to J'burg we've used the opportunity to take a look at the centre.

Pupils in the big classroom


The Trainer


School in Countryside


Adult Class in the Afternoon


"Town"


© benste CC NC SA

31 Oct 2011 4:58pm GMT

Benedict Stein: Technical Issues

What are you doing in an internet cafe if your ADSL and Faxline has been discontinued before months end. Well my idea was sitting outside and eating some ice cream.
At least it's sunny and not as rainy as on the weekend.


© benste CC NC SA

31 Oct 2011 3:11pm GMT

30 Oct 2011

feedPython Software Foundation | GSoC'11 Students

Benedict Stein: Nellis Restaurant

For those who are traveling through Zastron - there is a very nice Restaurant which is serving delicious food at reasanable prices.
In addition they're selling home made juices jams and honey.




interior


home made specialities - the shop in the shop


the Bar


© benste CC NC SA

30 Oct 2011 4:47pm GMT

29 Oct 2011

feedPython Software Foundation | GSoC'11 Students

Benedict Stein: The way back from J'burg

Having the 10 - 12h trip from J'burg back to ELS I was able to take a lot of pcitures including these different roadsides

Plain Street


Orange River in its beginngings (near Lesotho)


Zastron Anglican Church


The Bridge in Between "Free State" and Eastern Cape next to Zastron


my new Background ;)


If you listen to GoogleMaps you'll end up traveling 50km of gravel road - as it was just renewed we didn't have that many problems and saved 1h compared to going the official way with all it's constructions sites




Freeway


getting dark


© benste CC NC SA

29 Oct 2011 4:23pm GMT

28 Oct 2011

feedPython Software Foundation | GSoC'11 Students

Benedict Stein: Wie funktioniert eigentlich eine Baustelle ?

Klar einiges mag anders sein, vieles aber gleich - aber ein in Deutschland täglich übliches Bild einer Straßenbaustelle - wie läuft das eigentlich in Südafrika ?

Ersteinmal vorweg - NEIN keine Ureinwohner die mit den Händen graben - auch wenn hier mehr Manpower genutzt wird - sind sie fleißig mit Technologie am arbeiten.

Eine ganz normale "Bundesstraße"


und wie sie erweitert wird


gaaaanz viele LKWs


denn hier wird eine Seite über einen langen Abschnitt komplett gesperrt, so das eine Ampelschaltung mit hier 45 Minuten Wartezeit entsteht


Aber wenigstens scheinen die ihren Spaß zu haben ;) - Wie auch wir denn gücklicher Weise mussten wir nie länger als 10 min. warten.

© benste CC NC SA

28 Oct 2011 4:20pm GMT