Issue #147

Top of 2014

Dec. 19, 2014

Pycoder's Weekly: Top of 2014

Issue #147: Top of 2014

Weekly dose of all things Python.
 
Hey Everyone, 

This is our yearly roundup issue of the top articles and projects of 2014. Thanks to our sponsor, Real Python, for helping to make this possible! Here's to a great 2015 ahead! 

Want to share this list? Forward it to someone or send them a link to the permalink at pycoders.com/2014.

Share an article with us and if it lands in newsletter get highlighted as a contributor in the newsletter!

Like what we are doing? Check us out on on twitter too! 
From our sponsors:
Real PythonLearn programming and advanced web development through hands-on, extensive examples with the power of Python, Flask, and Django 1.7. Learn More
(Sponsor this newsletter)

Python Jobs


Software Engineer (New York, NYC) 
Posted By  Beatport. PROMOTED

Backend Python Developer (Edmonton, AB, Canada) 
Posted By  Strathcom Media Inc. 

Projects


robobrowser
A library for web scraping built on Requests and BeautifulSoup. Like Mechanize, but with tests, docs, and a Pythonic interface.
github.com
Shared by @whatthecarp
 

mining
github.com
Shared by @mgrouchy
 

wagtail
Wagtail is a Django content management system with a fresh take. Beautifully designed so if you are looking for an alternative to Django CMS here is your shot.
github.com
Shared by @tomd
 

huey
A multi-threaded task queue for Python.
github.com
Shared by @myusuf3
 

Flask API
Love Django REST Framework? You can now enjoy the same beautiful APIs within Flask.
flaskapi.org
Shared by @myusuf3
 

Mario Level 1 In Python
Recreating the first level in Mario using PyGame. Awesome for anyone interested in build a 2D platformer.
github.com
Shared by @myusuf3
 

Algorithms
A collection of Data Structures and Algorithms in Python.
github.com
Shared by @myusuf3
 

rumps
Ridiculously Uncomplicated Mac OSX Python Status Bar Apps! Got a little app you want to write you can do it Python now!
github.com
Shared by @myusuf3


psdash
Nice looking web dashboard written in Flask that can display data about your system and its processes as returned by psutil.
github.com
Shared by @mgrouchy
 

500 Lines or Less
Awesome repository of how things work with computers and software. I am sure we have shared this before but its definitely worth another look.
github.com
Shared by @myusuf3
 

IPython Notebook Themes
Awesome theme customization for IPython Notebooks!
github.com
Shared by @myusuf3
 

Jarvis
An attempt to create a Jarvis-like personal assistant with Python.
github.com
Shared by @mgrouchy
 

Python Practice Projects
A series of Python practice projects to help your hone your craft with deliberate practice.
pythonpracticeprojects.com
Shared by @mgrouchy
 

Flask-Foundation
A foundation leveraging best practices that you can use to start building your flask applications with.
github.com
Shared by @mgrouchy
 


Stellar
Fast database snapshots for development. It's like Git for databases.
github.com
Shared by @versae
 

percol
Nice. Percol is an interactive grep tool in your terminal. Check out the README for a demo and more information.
github.com
Shared by @mgrouchy
 

magpie
Git-Backed Evernote Replacement.
github.com
Shared by @myusuf3
 

Explore Flask
The Explore Flask book is now freely available online. Time to upgrade your Flask knowledge.
exploreflask.com
Shared by @mgrouchy
 

The Stolen Crown RPG
Cool! A Fantasy RPG built with Python and PyGame.
github.com
Shared by @mgrouchy
 

django-quicky
A collection of tools to get you focused on what you building rather than the usual nitty gritty, tons of of cool little functionality to speed things up!
github.com
Shared by @myusuf3
 

doitlive
Cool little hack to make you look like a superstar during presentations and screencasts. It allows you to write code before hand, and replays the commands in a fake terminal session as you type random characters.
github.com
Shared by @myusuf3
 

Data Science 45 minute intros.
45 minute Ipython notebook presentations for getting starting with basic programming, statistics and machine learning techniques.
github.com
Shared by @mgrouchy
 

battleschool
This is neat. Set up your development environment using ansible in a similar way you would set up your machine with something like Boxen.
github.com
Shared by @mgrouchy
 

awesome-python
A curated list of awesome Python resources, frameworks, libraries and software.
github.com
Shared by @mgrouchy
 

inbox
Inbox platform launched earlier this week, with tons of SDKs and libraries! This is the one in Python. Great premise and should enable people to do some great stuff!
github.com
Shared by @myusuf3
 

py-must-watch
A great collection of must watch Python videos. Great resource to start levelling up your Python knowledge.
github.com
Shared by @STajbakhsh
 

awesome-machine-learning
A curated list of awesome Machine Learning frameworks, libraries and software.
github.com
Shared by @myusuf3
 

python-fields
Writing container classes often requires the writing of significant amounts of boilerplate. Avoid all of that with the fields module which offers a way to avoid it.
github.com
Shared by @mgrouchy
 

awesome-django
Over the last few issues there have been other "awesome" collections. If you are into Django, this is the one for you!
github.com
Shared by @myusuf3
 

Toga
A Python native, OS native GUI toolkit. Very cool project for building Native GUI apps with Python.
pybee.org
Shared by @mgrouchy
 

doorman
Keeps your secrets, secret. Allows you to put the keys, passwords and things you want to keep secret in a config file and then hide and show your secrets.
github.com
Shared by @halitalptekin
 

vim-bootstrap
A simple website that helps you bootstrap your .vimrc for your preferred language.
github.com
Shared by @mgrouchy
 

python-patterns
A collection of common Python design patterns and idioms.
github.com
Shared by @mgrouchy
 

flask-xxl
Interesting. A best practices approach to creating large web apps, with the goal of making flask feel more like django.
github.com
Shared by @mgrouchy
 

discover-flask
A weekly series of Screencasts covering an introduction to Flask.
github.com
Shared by @mgrouchy
 

awesome-sqlalchemy
Lots of really awesome SQLAlchemy resources.
github.com
Shared by @mgrouchy
 

lenscap
Lenscap is a static site generator for creating beautiful photo narratives
github.com
Shared by @myusuf3
 

schematics
A Python library to combine types into structures, validate them, and transform your data based on simple descriptions.
github.com
Shared by @mgrouchy
 

home-assistant
Home automation with Python.
github.com
Shared by @mgrouchy
 

500 Lines or Less
Awesome repository of how things work with computers and software. I am sure we have shared this before but its definitely worth another look.
github.com
Shared by @myusuf3
 

tortilla
Very cool project for consuming APIs made easy. Give it a look if you are tried of writing API wrappers.
github.com
Shared by @myusuf3
 

iterstuff
A collection of tools for working with iterators.
github.com
Shared by @benlast
 

Articles


Python 201: Properties
pythonlibrary.org
Shared by @myusuf3
 

Reasons for Using IPython Interactively
You might have heard all the talk about the wonderful IPython notebooks, here are some reasons why you should check out the IPython interactive shell.
fastml.com
Shared by @myusuf3
 

A Django Code Organization Strategy
I like to see this type of writing when is comes to software and how it is laid out. This covers various options and solving problems and proposes a few solutions. Favourite is in the comments.
github.io
Shared by @myusuf3
 

How to Save 90% on Your S3 Bill
Awesome find, everyone hosting anything on S3 will want to read this.
appneta.com
Shared by @myusuf3
 

Full Stack Python
A great guide of dealing with the full stack required with creating a Python web application. Topics cover the entire stack from servers, web frameworks, security and source control.
fullstackpython.com
Shared by @mgrouchy
 

Starting A Python Project The Right Way
Have an idea for your next, or first, Python project? Well check out this article to make sure you are getting started the right way!
jeffknupp.com
Shared by @mgrouchy
 

14 Minimal Web Frameworks for Python
Want to try a lighter web framework then Django? Check out these minimal Python web frameworks.
codecondo.com
Shared by @alexivanovs
 

Saying Goodbye To Python
Amazing article and growth and the real strength of the Python community.
ianbicking.org
Shared by @myusuf3
 

A Celery-like Python Task Queue in 55 Lines of Code
Nice tutorial about how one would go about starting to create a task queue in Python.
jeffknupp.com
Shared by @mgrouchy
 

How We Use Gevent to go Fast
Nice overview of how Pinterest used gevent to increase throughput of site and speed up requests. They also cover the challenges they faced during the switch over.
pinterest.com
Shared by @myusuf3
 

Unit Testing SQLAlchemy
How do you test your SQLAlchemy apps? Check out this post and its predecessor for the low down.
blogspot.ca
Shared by @mgrouchy
 

How to Create a Python Library
In depth tutorial on how to create a python library and package it.
pypix.com
Shared by @myusuf3
 

Introduction to Python for Statistical Learning
Great introduction to tools like numpy, pandas and matplotlab for doing statistical learning work in Python.
datarobot.com
Shared by @mgrouchy
 

Lessons Learned Architecting Realtime Applications
This discusses the various options of building realtime applications in python and various technologies and techniques used and their limitations. Good read.
lincolnloop.com
Shared by @myusuf3
 

Unyielding
Glyph of Twisted fame talks has written a great article about concurrency in Python.
twistedmatrix.com
Shared by @mgrouchy
 

Python Concurrency: An Intro to Threads
Great tutorial here. If you are looking to jump headfirst into Python threading and concurrency, this is as good a place as any to start.
pythonlibrary.org
Shared by @mgrouchy
 

Python Property
Nice well written introduction to Python properties.
programiz.com
Shared by @myusuf3
 

Generating Machine Learning Models With Scikit-Learn
In a follow up to his last post about "Building decision trees" the author gives a nice explanation of how to generate machine learning models with scikit-learn.
garysieling.com
Shared by @mgrouchy
 

Understanding Test Driven Development with Django
If you are looking to learn a little more about Test Driven Development or are wondering about applying your TDD knowledge to your Django work, this is a great place to start.
arunrocks.com
Shared by @mgrouchy
 

Make Python Faster Without Trying Too Much
Nice article on the few steps you could take to make your code run faster without too much effort. Few great tips on profiling and taking advantage of things like pypy and cython!
lukauskas.co.uk
Shared by @myusuf3
 

Fast scraping in python with asyncio
Cool article showing you how to build a faster screen scraper by downloading pages asynchronously with asyncio.
compiletoi.net
Shared by @mgrouchy
 

Meta Programming with Python
Meta programming basics and as well introduces metaclass hooks.
wordpress.com
Shared by @myusuf3
 

Understanding Python By Breaking It
Increase your Python knowledge by breaking it. The author goes though a guided tour of poking and prodding CPythons internals.
hakril.net
Shared by @mgrouchy
 

Who needs a database?
Interesting thought experiment about completely knocking out database from stack, this obviously has some issues but interesting to see how it comes together.
getsilvi.com
Shared by @myusuf3
 

Logging as Storytelling #3: Types
Have you ever considered what it takes to write excellent and consistent log messages? This article and its predecessors helps you define that.
hybridcluster.com
Shared by @mgrouchy
 

An Artificial Intelligence for the 2048 game
2048 has been all the rage lately with projects cropping up everywhere. This is a cool examination of implementing an AI to solve the game.
blogspot.it
Shared by @mgrouchy
 

20 Good Functions To Know in Python
Another one of these lists that just keep coming up. Likely last one we will link to so enjoy!
thelivingpearl.com
Shared by @myusuf3
 

Python Project Howto
A great place to get started to turn your Python script into a Python project. Great guide that brings you from creating a repository to testing your code, all the way to packaging and releasing your code.
infinitemonkeycorps.net
Shared by @mgrouchy
 

Build a Flask App in 30 Minutes
Get up and running with your first Flask app in no time!
stormpath.com
Shared by @goStormpath
 

Writing Purposeful Unit Tests
Nice post about writing good unit tests to help you write better code, prevent regressions and allow you to assert the correctness of your code.
appneta.com
Shared by @mgrouchy
 

OOP concepts in Python 2.x - Part 1
Cool little article on OOP way of thinking and Python.
github.io
Shared by @tw_lgiordani
 

Getting Started with pylint
Introduction to Pylint for beginners.
blogspot.ca
Shared by @myusuf3
 

Lightweight Virtual Environments in Python 3.4
Article covers new venv features and usecases in Python 3.4
drdobbs.com
Shared by @myusuf3
 

Understanding Gunicorn's Concurrency Model
Nice article touching the finer points of gunicorn's concurrency models.
volant.is
Shared by @myusuf3
 

Visualizing Realtime Data w/ Python, D3, RabbitMQ
Article on consuming data from the twitter stream using RabbitMQ and Python. Then finally visualizing the data using D3.js
brettdangerfield.com
Shared by @myusuf3
 

Python Data Structures are Fast
Nice article that some of you may find illuminating, with respect where certain speed ups and loses may actually occur in Python data structures.
matthewrocklin.com
Shared by @mgrouchy
 

A little note-taking app with Flask
Awesome read for beginners looking to start a small flask project. This one covers the process of creating s simple note taking application in Flask.
charlesleifer.com
Shared by @myusuf3
 

Module Properties | The Proxy Pattern
Nice explanation of how to add a @property to a Python module.
github.io
Shared by @mgrouchy
 

The Light and Dark Sides of Python Name Binding
Pretty cool dive into python name binding! Tons of mind cool stuff to take advantage of for good and/or evil!
excess.org
Shared by @myusuf3
 

10 Most Common Python Mistakes
Nice round up of really common Python gotcha's that can trip up Python developers.
toptal.com
Shared by @mgrouchy
 

Python Partials are Fun!
If you have been wondering about how to get started with Partials this is a great place to start. With a good explanation of what they are and an easy to follow example to see the flexibility and power of partials.
pydanny.com
Shared by @mgrouchy
 

Making a specific Django app faster
Really nice detailed article of the steps you the author followed to speed up a Django application through profiling and optimization with tips on how you can apply these to your applications.
vanrees.org
Shared by @
 

Dynamic Programming with Python
A walk through the Dynamic Programming strategy with a fun Python example
jminuscula.es
Shared by @jminuscula
 

Why I push for Python
Great article about why an engineering professor would make a push to teach Python to undergraduates.
lorenabarba.com
Shared by @mgrouchy
 

Dockerizing a Python Web App
Docker has been all the buzz lately and this post shows you how to turn your Python web app into an application that can be deployed using docker containers on AWS.
amazon.com
Shared by @mgrouchy
 

How to Organize Your Python Application Code
Nice article with some good tips of how to organize your Python code next time you are writing a Python application.
pythonblogs.com
Shared by @mgrouchy
 

Method overriding in Python
Nice tips on Inheritance and Method overriding in Python.
github.io
Shared by @tw_lgiordani
 

How do I Gevent?
Really nice extensive tutorial on Gevent. Provides plenty of background information, its pros and cons and how it all works by showing how to create a simple web crawler.
hownowstephen.com
Shared by @mgrouchy
 

Using Mocks in Python
Extensive introduction to mock library in Python with tons of examples. If you are looking to learn a few things about mock this article is a good resource.
drdobbs.com
Shared by @myusuf3
 

10 Awesome Features of Python 3
Awesome presentation on why you should seriously consider Python 3 and what you are missing out on!
github.io
Shared by @myusuf3
 

Is Crossbar.io the Future of Python Web Apps?
Crossbar is an application router that implements WAMP. Nice post where the author talks about Crossbar and wonders if Crossbar could be the future of Python web applications.
tavendo.com
Shared by @mgrouchy
 

Why Python 4.0 won't be like Python 3.0
Nick Coghlan discusses the far future transition to Python 4.0, as well as touches on how it might not be exactly like the transition between Python 2.0 and 3.0
curiousefficiency.org
Shared by @myusuf3
 

Things from Python I'd miss in Go
If you switched from Python to Go what would be the features you would miss from Python in Go? This is the question the author addresses in this post.
yosefk.com
Shared by @mgrouchy
 

Parallel Programming in Python
A very complete introduction to parallel programming in Python using Python's multiprocessing module. This introduction takes you from the specifics about the multiprocessing module to its application.
sebastianraschka.com
Shared by @mgrouchy
 

Python Classes and Object Oriented Programming
Everything you wanted to know about Object Oriented Programming in Python. Great introduction.
jeffknupp.com
Shared by @mgrouchy
 

Why Every Language Needs Its Underscore
Interesting article about the funcy library and how it is analogous to the Underscore.js library. Its purpose is to make your life easier when writing code and give you a series of functional tools to write cleaner, more understandable code.
hackflow.com
Shared by @mgrouchy
 

Why Python (or any decent language) Doesn't Need Blocks
Very opinionated article on the hype of blocks in other languages and why they are no better than functions.
blogspot.it
Shared by @myusuf3
 

Using Docker as a Python Development Environment
Docker is all the new hotness, check out this post detailing how to use Docker for your Python development environment.
uglyduckling.nl
Shared by @mgrouchy
 

Anti-Patterns in Python Programming
A look at some common Python programming anti-patterns and how to correct those common mistakes.
lignos.org
Shared by @mgrouchy
 

Decorators and Functional Python
How can Python's decorators help us thing in a functional way? Great information about Python decorators and how how they can teach us to think about functional concepts like higher order functions and closures.
brianholdefehr.com
Shared by @mgrouchy
 

The Forgotten Optional `else` in Python Loops
I love this article, if you always felt dirty creating variable to keep track of conditionals, else clause reprise y'all.
svbtle.com
Shared by @myusuf3
 

7 Python Regular Expressions Examples
Get the lowdown on using Regular expressions in Python.
thegeekstuff.com
Shared by @mgrouchy
 

Method decorators in Python
Decorators is probably the most popular topic for Python programming blogs. We can probably take this as a sign that not everyone understands them yet so check out this post on method decorators.
agiliq.com
Shared by @mgrouchy
 

How to argue for Python’s use
Python core developer Brett Cannon gives you some ammunition next time someone asks you "Why use Python?". Nice contrast of the reasons why Go is a good language and why you might still want to use Python.
svbtle.com
Shared by @mgrouchy
 

Become A Better Programmer - How To Read Source Code
Reading source code is one of the most useful skills to learn for any programmer. In this post the author gives some nice tips to step up your code reading game.
pythonpracticeprojects.com
Shared by @mgrouchy
 

Simple Python Parallelism
Nice tutorial of how to easily parallelize tasks in Python with the languages `multiprocessing` library without getting bogged down learning other parallization frameworks.
github.io
Shared by @mgrouchy
 

Making database-backed dashboards in 3 minutes
Very simple tutorial to create Matplotlib graphs and ship them as part of email reports and web dashboards.
maxmautner.com
Shared by @myusuf3
 

Getting Started with Python Internals
Nice guide to get you ready to jump in and start working with Python internals.
github.io
Shared by @mgrouchy
 


Setting up Sublime Text 3 for Full Stack Python Development
Fantastic guide to help you get up and running with Sublime Text for your next Python project.
realpython.com
Shared by @mgrouchy
 

Python for Programmers
A nice collection of all the things you probably wanted to know when you started writing python programs.
rustyrazorblade.com
Shared by @mgrouchy
 

Refactoring monolithic if/else filters with closures
Nice little example on how to refactor your monolithic if/else clauses for filtering data. Provides a small albeit contrived example to illustrate the issue.
startmake.com
Shared by @scottallenon
 

Teaching an old dog new tricks - or, how I learned to love Python's str.format, and gave up on %
Very nice guide about changing your ways from using '%' to format Strings in Python and use string.format instead.
lerner.co.il
Shared by @mgrouchy
 

How to Use Python Regular Expressions to Parse a Text File (Practical Use Case Scenario with Python Reg-Ex Re Split Sub)
Great tutorial. Guides you step by step to parsing and cleaning up the resulting text from text files with Python regular expressions.
thegeekstuff.com
Shared by @mgrouchy
 

Higher Order Functions and List Comprehensions in Python
svbtle.com
Shared by @myusuf3
 

How to Supercharge Your Python Shell with a .pythonrc
Awesome small little way to make your python shell so much more convenient.
dlo.me
Shared by @myusuf3
 

Python Bad Practice, A Concrete Case
Awesome run down of bad practice Python, with concrete examples!
danjou.info
Shared by @myusuf3
 

Python Single Line For Loops
Nice introduction to list comprehensions here for the new Python programmer.
teamtreehouse.com
Shared by @mgrouchy
 

Guido van Rossum On Finding His Way
The Python creator and Dropbox engineer reflects on his early days in programming.
medium.com
Shared by @myusuf3
 

Tutorial I Wish I Had When Tackling AJAX and Django
Beginners tutorial on how to use AJAX and Django!
wordpress.com
Shared by @myusuf3
 

Celery In Production
How Caktus Group uses Celery in production!
caktusgroup.com
Shared by @myusuf3
 

Maybe in Python
senko.net
Shared by @myusuf3
 

Asyncio Implementation Overview
Awesome article for understanding asyncio! For the beginner to async programming but adequately experienced python developers.
bitdance.com
Shared by @myusuf3
 

Django vs Flask vs Pyramid: Choosing a Python Web Framework
Comparing the big 3 Python web frameworks!
airpair.com
Shared by @myusuf3
 

Five mini programming projects for the Python beginner
New to Python programming? Here are five projects to help get you started.
medium.com
Shared by @mgrouchy
 

Simple Interactive Data Analysis with Python
Simple article for the simple basics of python interactivity and the awesomeness that is IPython so if you haven't tried it out yet. Great place to start!
pbpython.com
Shared by @myusuf3
 

In Python, it's all about the attributes
Very detailed post about attributes in Python. Good read!
lerner.co.il
Shared by @mgrouchy
 

Advanced use of Python decorators and metaclasses
Got the basics of Python decorators and Metaclasses down? If so time to step up your Python game with more advanced techniques.
lgiordani.com
Shared by @tw_lgiordani
 

Django vs Flask vs Pyramid: Choosing a Python Web Framework
This post presents a nice comparison to help you choose the between the Django, Flask and Pyramid web frameworks.
airpair.com
Shared by @elldudley
 

Fluent interface in python
kracekumar.com
Shared by @mgrouchy
 

Building Web Applications with Django and AngularJS
Now this is a very detailed guide to building web apps with Django and Angular.js. Definitely worth checking out.
thinkster.io
Shared by @mgrouchy
 

Python Comprehension Syntax
Nice comprehensive tutorial of Comprehension and Generator syntax in Python.
airpair.com
Shared by @elldudley
 

Virtualenv the Docker way
Some neat tricks for working with Virtualenv inside your docker containers.
atte.ro
Shared by @mgrouchy
 

Modern guide to getting started with Data Science and Python
Nice post, but I dont agree with his tempered advice for newbies not to take a look at numpy and matplotlib! Good read though!
github.io
Shared by @myusuf3
 

Multiprocessing and Memory
Multiprocessing in Python doesn't get much HYPE. Here is a cool little post how it can be effective in a ton of spots.
yseam.com
Shared by @myusuf3
 

Recommended Django Project Layout
Unsure on how to setup your Django project?
revsys.com
Shared by @myusuf3
 

Top 10 Python idioms I wish I'd learned earlier
A nice collection of Python idioms that are very nice to know! Check out the discussion section for further discussion of this post on reddit.
blogspot.ca
Shared by @mgrouchy
 

The Future of Asynchronous IO in Python
Real nice overview of common design patterns of the past and a look at the emergent patterns in Asynchronous IO in the future.
medium.com
Shared by @mgrouchy
 

A Python Internals Adventure
Awesome article on diving into python internals and CPython.
dreamwidth.org
Shared by @myusuf3
 

Retries in Requests
Nice dive into one of the advanced features of the requests library, retries. Nice example to get you started here if this is something you need in your next project.
coglib.com
Shared by @sigmavirus24
 

Why is Object-Oriented Programming Useful?
Nice little article on OOP for beginners.
inventwithpython.com
Shared by @myusuf3
 
 
Deploying a Django app on Dokku 
Get up and running with your favorite django applications on Dokku. Very cool!
realpython.com
Shared by @myusuf3
 

Django and Flask: Why and When To Use Each
Cool talk, on when to use which framework and when to switch!
hakkalabs.co
Shared by @myusuf3
 

10 Myths of Enterprise Python
Nice breakdown of myths from PayPal Engineering.
paypal-engineering.com
Shared by @myusuf3
 

14 Best Pandas Features
Nice breakdown of 14 great(and possibly best) Panda's features. Discover what you might be missing out on.
bigdataexaminer.com
Shared by @mgrouchy
 

The Top Mistakes Developers Make When Using Python for Big Data Analytics
Nice breakdown of common mistakes that developers often make when working with Python for big data analytics.
airpair.com
Shared by @elldudley
 

json vs simplejson vs ujson
Very detailed rundown with benchmarks of the differences between common python JSON parsing libraries. SPOILER: ujson is the fastest by a considerable margin.
medium.com
Shared by @mgrouchy
 
Read Later
Tweet
Forward to Friend
Copyright © 2015 Pycoder's Weekly, All rights reserved.


unsubscribe from this list    update subscription preferences 

Email Marketing Powered by MailChimp