Email as a Microservice

DevOps|Email| - August 6, 2016 //

Email might be one of the most often overlooked pieces of any web application. Usually the biggest discussion around it in a project begins and ends with “and we’ll send them an email when this happens…”.

A little thought and some minor adjustments can help us avoid some problems that will grow as your project does. Let’s talk about email as a microservice.

PostgreSQL functions with Elixir Ecto

Elixir|Phoenix|PostgreSQL| - July 27, 2016 //

Functions within PostgreSQL can be setup to return rows and included in queries just like any other table. Continuing with our theme of trying to push Elixir and Phoenix a little on this site rebuild, we will move our site search inside of a database function and experiment with different ways to call it from Ecto.

Insanity with Elixir + Phoenix + PostgreSQL

Elixir|Phoenix|PostgreSQL| - July 6, 2016 //

I'm at the borderline of obsessed with Elixir and Phoenix lately. I've avoided writing about it so far because it feels a bit too good to be true. In an effort to test my own enthusiam, I decided to rebuild this site with them in the most ridiculous way possible just to try to test some limits. Because I already have an unhealthy obsession with PostgreSQL, we're getting crazy with it too.

DISCLAIMER: This is not a "how to build a blog" article. If you do what I'm about to do, people will look at you funny (and probably should).

Why Docker?

Docker|DevOps| - October 29, 2015 //

Containers are not a new thing, but implementing them was always a little more complicated than it needed to be. Docker made great leaps in simplification of containers and set the world on fire from there. Let’s look at why.

Monitoring with Bosun

Golang|DevOps| - October 15, 2015 //

Bosun is a monitoring and alerting system developed by the good folks at Stack Exchange, then open sourced for the rest of us. It’s written in Go, meaning its monitoring agents can run anywhere that Go can drop a binary… which is just about everywhere. So what exactly does it do and how does it compare to the likes of New Relic, CloudWatch, Nagios, Splunk Cloud, Server Density, and other monitoring tools?

Heroku Data Links with Postgres and Redis

DevOps|PostgreSQL|Heroku| - September 16, 2015 //

PostgreSQL has a great feature called Foreign Data Wrappers (FDW) that allows it to connect directly to outside systems. Although the setup can be a little complicated, once it’s available you can run queries with joins or subqueries against them, insert data, create views, etc. Heroku has dramatically simplified the process of using FDW with PostgreSQL and Redis thanks to Data Links. Let’s try it out.

Zero Downtime Deployment with AWS ECS and ELB

DevOps|Docker| - August 25, 2015 //

As development teams push farther toward continuous delivery, deploying updates to an application without disruption to users is constantly becoming a more sought-after practice. Amazon’s EC2 Container Service helps to make that easier than ever with tight Elastic Load Balancer integration.

How to Use Heroku PGBackups

Heroku|PostgreSQL|DevOps| - August 11, 2015 //

Backing up your data is one of the most critical activities for your application. Heroku PGBackups makes the entire experience pretty simple but comes with a lot of flexibility too, with a number of options for smooth restoration.

No such thing as "real programming"

PHP|Life|Business| - July 20, 2015 //

I read an article earlier today called The self-hating Web Developer that I found on Hacker News and it bothered me. It resonated with me as something that I professionally internalized over my career but it bothered me because Joseph encountered personal financial difficulty for both himself and his family due to the struggle. For that reason (and insomnia), I feel compelled to write this as reference to refer to for anybody else who may be struggling with the same thing.

Exploring Microservices Architecture on Heroku

DevOps|Heroku| - July 8, 2015 //

Building an application with a microservice architecture is an excellent long-term decision if you can afford the increase in upfront time investment to do it properly. Heroku provides a platform that most developers know for simple deployment, but it also dramatically simplifies microservices architecture.  

Heroku PostgreSQL vs Amazon RDS for PostgreSQL

PostgreSQL|Heroku| - July 3, 2015 //

PostgreSQL is becoming the relational database of choice for web development for a whole host of good reasons. That means that development teams have to make a decision on whether to host their own or use a database as a service provider. The two biggest players in the world of PostgreSQL are Heroku PostgreSQL and Amazon RDS for PostgreSQL. Here's a detailed comparison.

Organizing Background Worker Queues

DevOps| - April 23, 2015 //

At work earlier today I ran across an issue where one of our application queues got backed up and it got me to thinking about how queues are organized in general. The TLDR answer: use urgency and intensity. 

Go from a PHP Perspective

Golang|PHP|Ruby| - April 16, 2015 //

Here are the slides from my recent presentation to UpstatePHP in Greenville, looking at Go (Golang) from a PHP Perspective.

Ruby on Rails and PostgreSQL Class Slides

Rails|PostgreSQL|Ruby| - April 6, 2015 //

In August I taught a course titled Ruby on Rails and PostgreSQL - Intro to Advanced in Greenville over the span of 3 weeks. Here is the compilation of slides from the class.

Protecting Users from Phishing and Fraud

DNS|DMARC|Email| - April 2, 2015 //

This presentation covers my experiences combatting phishing and fraud using DMARC and assorted other techniques in a large eBay-like platform for a niche market...when the site previously did everything over direct user email...for over a decade. Good times.

Code is the Cure for Developaralysis

Ruby|PHP| - October 22, 2014 //

A couple of days ago, TechCrunch ran a column about Developaralysis that hit a little close to home. Developaralysis is defined as "the crippling sense that the software industry is evolving so fast that no one person can possibly keep up." This results in otherwise accomplished developers freezing up when trying to make decisions about the best language / framework / cloud platform to use for their project. There is a cure and it involves code. A code specifically.

Make the ACC the Best Conference in Football

Sports|Clemson| - September 29, 2014 //

It's college football season. Inarguably the best time of year. With that comes discussion of a lot of topics that we generally can't escape like conference strength, who's getting in the playoff, and SEC speed. There is a way to make the ACC the most interesting conference in all of college football while virtually assuring that the champion will be part of that playoff picture every single year. Here's the playbook.

SSH::Batch - Simple remote shell commands

SSH|Perl|DevOps| - September 15, 2014 //

SSH::Batch is a simple command line tool, written in Perl, that allows you to run shell commands over SSH across multiple servers. These days it seems most people turn to Puppet / Chef / Ansible for that type of thing, but sometimes your needs aren't that complicated. For that, SSH::Batch fills the gap nicely and it's really simple to get started.

Video: SQL vs NoSQL Discussion at UpstatePHP

PostgreSQL|NoSQL| - September 13, 2014 //

Here's the video from the August UpstatePHP meeting in Greenville discussing SQL vs NoSQL and where they are useful for your development process. I represented SQL solutions (*cough* PostgreSQL *cough*) while Benjamin Young represented NoSQL. Ben has actively contributed to CouchDB, worked for Cloudant, Couchbase, organizes the REST Fest Unconference (happening again September 25-27th) and is the owner of Big Blue Hat. I am a gainfully employed's that.

Rails Gems to Unlock Advanced PostgreSQL Features

Ruby|Rails|PostgreSQL| - September 9, 2014 //

If you've spent any amount of time on this site you may have noticed that I'm fond of PostgreSQL...and Ruby on Rails...and that I dislike the general trend among Rails developers to ignore all of the amazing features in PostgreSQL that make your application better in favor of risking data integrity just so that all logic can remain in Rails. So here's my top collection of Rails gems to get at all that untapped power in PostgreSQL that you didn't know you had.

What exactly happened to Brightball for hire?

Life|Business| - August 11, 2014 //

It's been about four years since we last took on a new project as a company. Work continued for existing clients for a long time after that, but the company itself was basically dead from that point. I was on vacation with my family last week and somewhat reflecting on exactly how I got there after ending up in a hospital bed in the middle of the night four years ago trying to keep it going. Here's how it happened.

Screenhero - This is your Business Plan

Pairing|Business| - July 31, 2014 //

I got a newsletter last night from Screenhero announcing version 1.0. The problem is that in the announcement, they also announced a change in pricing that will probably kill a lot of what they have going for them. And I hate that. I REALLY hate that. I've worked for companies where we had to invest a lot of time cleaning up bad decisions, so maybe it bothers me a little more. I really like Screenhero though, so I'm going to try to help. I wasn't doing a good job of explaining myself to them via Twitter, so this should hopefully be a better explanation of what I was trying to communicate.

Why should you learn PostgreSQL?

PostgreSQL| - July 21, 2014 //

Nearly a year ago I put together an hour long presentation on PostgreSQL to provide an overview of all of the benefits it provides you over other options in the database space. In hindsight, that wasn't nearly enough time because it has the capability to replace almost your entire application stack outside of the web server. In any case, here is an attempt to summarize all of the amazing functionality that you're cheating yourself out of by not choosing PostgreSQL.

Ruby on Rails and PostgreSQL - Intro to Advanced

Classes|Ruby|Rails|PostgreSQL| - July 15, 2014 //

Beginning August 18th I will be offering a three week evening class aimed at professional programmers who want to learn Ruby on Rails and PostgreSQL, with the goal of becoming proficient with both in a very short time.

Pair Programming - The Lightning Talk Version

DevOps|Pairing| - July 4, 2014 //

Lightning talk introduce pair programming based on information gleaned from RailsConf 2014. Bulk of the credit for this presentation goes to Chuck Lauer Vose of New Relic and Joe Moore of Pivotal Labs.

Exploring Ruby on Rails and PostgreSQL

Rails|PostgreSQL|Ruby| - July 4, 2014 //

An overview of Ruby, jRuby, Rails, Torquebox, and PostgreSQL that was presented as a 3 hour class to other programmers at The Ironyard in Greenville, SC in July of 2013. The Rails specific sections are mostly code samples that were explained during the session so the real focus of the slides is Ruby, "the rails way" / workflow / differentiators and PostgreSQL.

What's the "right" PHP Framework?

CakePHP|PHP|Ruby|Rails| - June 21, 2014 //

This is a presentation that I recently gave at UpstatePHP in Greenville evaluating the framework landscape in PHP. We discussed why there are so many, history, goals, benefits, concerns and ultimately a recommendation.

Tempering My Docker Enthusiasm (retracted)

Docker|DevOps| - June 4, 2014 //

In a recent post I provided my initial impressions of Docker, which were glowing to put it mildly. After spending more time working with it, I've found that it does still have some additional drawbacks in certain situations just about every situation covered thanks to Vagrant.

Docker is the Heroku Killer

Docker|Heroku| - May 14, 2014 //

After getting an intense look at Docker last night, I firmly believe that it is going to be the most disruptive server technology that we've seen in the last few years. It fills a much needed hole that's currently managed by very expensive solutions and it's being actively funded by some of the biggest players in the market.

PostgreSQL - It's kind've a nifty database

PostgreSQL| - November 27, 2013 //

This is a presentation I recently gave to provide an overview of PostgreSQL and some of it's excellent features, including full-text search, multiple built in datatypes, data compression and extensions. 

Also, Morgan Freeman is narrating. You're welcome.

Learning Ruby on Rails: Why? How? Pitfalls?

Ruby|Rails| - May 9, 2013 //

I've always been a proponent of the "right tool for the job" approach to programming. Different languages are well suited for different situations. Over the past 2 years I've spent a great deal of time with Ruby on Rails after coming from a background of PHP, Java and Perl. Here's how I got started and some of the lessons I learned along the way.

The Drawback to Web Frameworks

Rails|Ruby|CakePHP| - April 29, 2013 //

Web frameworks are great, don't get me wrong here. They provide a structure and consistency across projects that will transcend developers over the life of a system while dramatically simplifying the code base amongst other wonderful side effects. But what's the downside?

"Make it faster."

Life| - April 28, 2013 //

 I'm obsessed with performance tuning.  It's an itch that can never fully be scratched.  A sickness that can never be cured.  Here's the story of how I caught the bug.

The Impossible Assignment

Clemson|Life| - April 25, 2013 //

I had the opportunity to visit the class of one of my legendary former professors yesterday and got to share a classic story about him...the time he gave us an impossible assignment.

A Study of Pricing and Billing Models for the Web

Business| - September 13, 2010 //

Asking people for payment for work is a touchy subject for everyone involved.  We've had the luxury of experimenting a little bit over our first couple of years, and here's what we learned.

The difference that expert Quality Assurance makes

Business| - July 6, 2010 //

When we first started out, we listed the thorough quality assurance review as an optional piece of our estimates.  We had this incredibly naive idea that if we gave people the option to save a little money up front that they'd fully understand if there was anything that needed to be tuned up, post-launch.  We learned our lesson...hard.

The Wonders of SSH Tunneling

SSH|DevOps| - May 11, 2010 //

Have you ever been working on a website and needed direct access to the database, but couldn't get access without using something like phpMyAdmin?  SSH tunneling can solve this common problem and a whole lot more.

Should my domain name include a "www"?

DNS|DevOps| - May 6, 2010 //

In the age of Twitter and Web 2.0, we've started to see a lot of websites drop the standard www from their domain names.  This could simply be a product of people following trends or just trying to be a little different, but the real question is "What are the drawbacks?"

String localization with dynamic content in CakePHP

i18n|PHP|CakePHP| - June 20, 2009 //

Cake has a wonderful shell script function built into it called extract that will run through your code and create a .po file full of all of the text contained within your __('My text here') calls. You can then pass these files onto to translators to modify them for your languages. When you want to add variables though, you have to break it up into pieces which may change the context of the phrase. Here's a way around that.

WYSIWYGPro Helper and tutorial for CakePHP

CakePHP|PHP| - June 14, 2009 //

I couldn't find any resources on setting up WYSIWYGPro with Cake so I developed this helper along with instructions for total integration with your system. If you've never used WYSIWYGPro, you should check out the demos. I've tried every WYSIWYG editor out there and none of the other ones even come close as far as I'm concerned.

PublishableBehavior for CakePHP

CakePHP|PHP| - June 10, 2009 //

PublishableBehavior allows the use of datetime fields for start and end ranges on content. Included functionality allows for checking published status, toggling to published / unpublished status, and adding conditions to a find to properly filter those results.

Smoother CakePHP date/time fields with jQuery

PHP|CakePHP| - April 22, 2009 //

While working with the date/time input fields in Cake I got tired of having to select 3/6 drop down boxes to choose all of the date/time information and specifically of having to select 3/6 drop down boxes if I decided to clear the date. A little bit of jQuery will clear this right up though.

Automatically loading your ACL tables

CakePHP|PHP| - January 27, 2009 //

If you've spent anytime wanting to use ACL on your applications, you know how tedious it can be to manually enter your entire controller and action structure. This Task will handle finding and loading or updating all of those for you whenever you run it from the command line.

About Me

My name is Barry Jones and Brightball, Inc was my contract development company from 2008-2012. Although I no longer do contract work this site has become my personal blog.

If you enjoy my writing and want to support the habit please use my referrals to help me pay for my servers with Digital Ocean, my DNS with DNS Made Easy, my email with Sendwithus and my focus with Freedom.

You're also welcome to buy some things that I highly recommend, such as the best movie ever made, a hilarious cookbook for microwave dependent men like myself, the best travel laptop backpack I've ever owned, an awesome lap desk, some of the best headphones out there for the money or maybe an iPad Mini for the kids?

If you just came here to learn by all means keep it up. Grab a book on Elixir, Phoenix, Go, encryption throughout history, hacking stories or running a business. Thanks!

Follow Me

  • Twitter
  • LinkedIn
  • slideshare
  • StackOverflow
  • Github
  • RSS