Parth Modi, Dec 01

N + 1: When More Queries Is a Good Thing

Parth Modi explains how he discovered that fixing the N + 1 Query Problem isn't always about reducing the number of queries. Sometimes, more queries is better.
Giulio Mainardi, Dec 01

Quick Tip: Use Bootstrap Components without jQuery

Reduce your dependency on jQuery! Giulio Mainardi looks at the Native JavaScript for Bootstrap project, which provides vanilla JS Bootstrap components.
Dmytro Spilka, Nov 30

Google Data Studio: a Nifty, Free, Easy-to-use Data Vis Tool

Dmytro Spilka introduces Google Data Studio, demonstrating how to present data from Google Analytics in a visually pleasing, client-friendly chart.
Kevin Wood, Nov 30

How the Pomodoro Skyrocketed My Productivity & Saved My Business

Kevin Wood explains the productivity technique that gave him his focus back and kept him in business — the Pomodoro Method.
Vildan Softic, Nov 30

Managing State in Aurelia: How to Use Aurelia with Redux

Vildan Softic looks at using Aurelia with Redux to manage state in your Aurelia apps, and in so doing builds a markdown editor with undo/redo functionality.
Sally Wood, Nov 30

6 of the Best Donation Plugins for WordPress

Sally Wood provides an overview of some of the best donation plugins for WordPress that provide your site with the ability to collect donations online.
Pavels Jelisejevs, Nov 30

What's New in HTML 5.1

Pavels Jelisejevs takes a look at the W3C recommendation for HTML 5.1, looking at its major new features with some markup samples.
Luka Žitnik, Nov 30

Sending PHP Event Messages to Remote Logstash on Windows

Luka covers some Logstash basics, and teaches you how to send event messages from PHP to it on Windows. Yes - PHP on Windows - still alive and kicking!
M. David Green, Nov 29

Versioning Show, Episode 18, with Hampton Catlin

David and Tim are joined by Hampton Catlin, creator of Sass, Haml and other tools and services such as Wikipedia Mobile, Tritium and Moovweb.
Eric Bahn, Nov 29

We Quit Facebook and Google to Build a Children’s Book Startup

Eric Bahn explains how he and his sister validated Read Your Story's business model and grew this children's book startup enough to go full-time.
Jack Franklin, Nov 29

Getting up and Running with the Vue.js 2.0 Framework

Guest author Jack Franklin tries out Vue.js 2.0, and walks through building a basic GitHub API demo to put the framework through its paces.
Nitish Kumar, Nov 29

Seven Ways You Can Place Elements Using CSS Grid Layout

Nitish Kumar shows seven ways in which CSS Grid Layout lets front-end developers quickly and intuitively place content on the web.
Christopher Pitt, Nov 29

You Don’t Know Jacks: Learn to Make Your Code More Secure

Christopher Pitt explores Codiscope's Jacks, a service that provides you with security warnings and education as you develop.
Design & UX
Daniel Schwarz, Nov 29

Animations: Using Easings to Craft Smarter Interactions

Modern user interfaces move. But as Fun Boy Three and Bananarama once said, "T'aint what you do, it's the way that you do it!". Let's talk about easings.
Nilson Jacques, Nov 28

Editorial: Are You Writing ES6 JavaScript Yet?

Nilson Jacques takes a quick look at the status of ES6 JavaScript, its rate of adoption among developers, and asks - are you writing modern JS yet?
Christopher Pitt, Nov 28

Event Sourcing in a Pinch

Chris explains what event sourcing is, how to use it, when to apply it, and why. Check out this advanced DDD pattern in an easy to learn format!
Ilya Bodrov-Krukowski, Nov 28

Video Uploads with Rails and Ziggeo

Viraj Khatavkar, Nov 26

How to Properly Deploy Web Apps via SFTP with Git

Viraj demonstrates the full process of writing custom code for deploying different commits of your app to an SFTP server using Git and PhpSecLib
Wolfram Hempel, Nov 25

Deepstream: an Open-source Server for Building Realtime Apps

Wolfram Hempel discusses issues around building realtime apps at scale, and introduces deepstream, an extensible, open-source server.
Bruno Skvorc, Nov 25

What Would You Pay to Make 27% of the Web More Secure?

We talked to Scott Arciszewski who is intent on writing a PHP polyfill for libsodium, with the potential to increase the security of at least 27% of the web
SitePoint Offers, Nov 25

Black Friday: 2 Years of SitePoint Premium for $99

Get 2 Years of SitePoint Premium for $99

Over $20,000 worth of SitePoint web development and design books and courses for $99.

Today, get two years of SitePoint Premium, for the price of 1 - save 50%! Stay ahead of the game, and learn techniques to build better, faster, and more responsive websites and apps. Here's what you get:
  • Download ALL (80+) SitePoint ebooks and keep them forever
  • Download ALL (60+) courses, plus access to 250+ tutorials
  • Easy to follow paths, unlimited Q&A with friendly instructors, shareable certificates and code archives and samples access to every book and course we release in 2017 and 2018! Buy now and save $99!

Did we mention priority access to everything we release in 2017 and 2018?

Teaser: Here's what we have planned over the next few months...
  • Get Started with Functional JavaScript Programming [course]
  • PHP and MySQL: Novice to Ninja [book]
  • Designing UX: Prototyping [book]
  • Angular 2: Novice to Ninja [book]
  • Building a WordPress Theme From Scratch [course]
  • JavaScript Master [book]
Get 2 Years of SitePoint Premium for $99 The library covers all skill levels, including topics like WordPress, CSS, HTML, responsive web design, PHP, Ruby, JavaScript and much more. All our stuff, yours to download, for just $99. Buy now and save $99! Grab this deal before it's gone! Ends midnight Cyber Monday.
Elio Qoshi, Nov 25

Open Source Email Marketing with phpList

Open source email marketing

Open Source Week

It’s Open Source Week at SitePoint! All week we’re publishing articles focused on everything Open Source, Free Software and Community, so keep checking the OSW tag for the latest updates.

Email marketing has been exploding in popularity. You might have heard of the likes of MailChimp and Emma advertising the use of their services to send a whole bunch of messages for prospects and profit. The number of ways to promote goods online is forever growing, and research shows emails are still the most effective. I like to compare it with the "desktop is dead" myth; while mobile is on the rise, desktop is here to stay. I believe the same about email.

Having said that, it’s no surprise that the number of services competing in the field have mushroomed in recent years, capitalising on demand from firms of all sizes to get access to that most personal of places, the email inbox.

While big brand proprietary platforms and their sponsorship deals have been busy establishing themselves, an Open Source alternative has been minding its own business, making regular releases and accumulating a committed base of users since the year 2000. Enter phpList, the email marketing app you can run yourself without paying for messages, subscribers, or additional features.

Why Use a Dedicated App for Sending Emails?

Marketing professionals have a habit of torturing words until they confess (usually to the greatness of their product). Maybe that’s why terminology around email marketing is confusing. If a ‘mailing list’ is just a list of email addresses, and a ‘mailing list manager’ is merely an application to handle and use these lists, then what’s the difference between Mailchimp, phpList, GNU Mailman, and mail clients like Thunderbird? Are Mailchimp and Mailman interchangeable? Unfortunately not.

Old-fashioned mailing lists are many-to-many mailing platforms; a variety of people send single messages to a group of others in a single act, and each member of the group can reply to the others (as healthcare workers at Britain’s National Health Service illustrated last week, when a 1.2 million long mailing list was crashed by 185 million unsubscription requests).

Thunderbird, on the other hand, is is a mail client which can send messages to one or more recipients, but is not designed for managing failed deliveries, recording delivery statistics, or sending to large lists of subscribers.

Mailchimp and phpList are one-to-many sending platforms; a single person sends a single message to a large number of recipients. If the message recipient wants to reply, they can contact only the sender — the other members of the list cannot be replied to directly, and are typically kept secret for the preservation of privacy. These and other popular email marketing platforms share a host of features not found in other software, including built-in email templates, easy integration of newsletter signup forms in websites and apps, and automatic email personalization based on subscriber preferences.

How does phpList measure up against the proprietary competition? Let’s compare its performance in three categories against market leaders (and no, mascot monkey-ness isn’t one of them).


HTML emails aren’t everyone’s cup of tea – packed with tables and inline CSS, the code behind them is a throwback to a less civilized era. Unpredictable rendering by mail clients makes producing beautiful messages a challenge, but some services ease the pain with a range of templates and point and click editors. phpList provides editors as plugins, with CKEditor being the best of the bunch. While it works well for text formatting and media embedding, it can’t handle complex layouts, and doesn’t apply template styles as you type. For floated images and table layouts it’s easier to do your designing in a dedicated app and copy and paste the HTML in afterwards.

When it comes to templates, most people feel the more the merrier, but phpList ships with none pre-installed, and but a handful officially available. In theory, you can use templates from any other application (including many published by Mailchimp on GitHub), but including more and better templates ‘inside the box’ would save us from hunting around.

Reports and Statistics

Once your message is signed, sealed, and delivered, you’ll be itching to see the impact it has had. Open rates, click-throughs, bounces, and conversions are all things you’ll want to check following a successful send. Like other services, phpList includes detailed statistics relating these and more going further than some, giving a complete history of each subscriber. This includes each open, click, visit, and change, including response times. It’s easy to see all subscribers who opted out of future messages, following which campaign, and for what reason (if one was given).

Unlike nearly all competitors, phpList does not include data visualisations – no bar graphs or pie charts found here. If you’re looking for a satisfying uptick in user engagement, you’ll have to use Piwik or Google Analytics (both are supported), or export the data to a spreadsheet and make graphs by yourself. Built-in graphs feel past due for phpList and some users will miss them.


Responsive web interface? Check. Fat finger friendly on tablets and smartphones? More or less. Sleek and modern? Heck no! The usability of email marketing apps varies wildly, and while phpList gets the job done across devices, its design belongs to last decade. No HTML5 inputs or modal dialogues are to be found, but pages are easy to navigate, with a practical aesthetic.

Paul King, Nov 24

Groovy, an Open Source Success Story

The history of the Groovy programming language including technical features and aspects of its governance and community that have made it successful.
Akshay Sachdeva, Nov 24

5 Ways to Drive More Traffic to Your Site with Content Promotion

Akshay Sachdeva teaches you to get more out of your content marketing efforts with five content promotion methods.