Unexpected server changes break stuff.

Specialized in industrial processes, Kadant companies rely on their Concrete5 website for 3 main purposes:

  • Advertise their products
  • Provide fresh information about news and events
  • Stay in touch through email

So when the last 2 stopped working overnight, they knew they had a problem…

On a bright sunny day

The site’s RSS feed was working, emails were coming in and suddenly they were not anymore. Out of the blue something had changed that broke the Internet 😕!

Visitors and clients could not reach them. Those who tried never heard back from Kadant and were losing goodwill fast. That’s a business killer.

The news & events page was showing old news when lucky and error messages most of the time.

The site was connected to the Concrete5 community and relied on that connection to get updates to the core and all their plugins and packages. That was broken too. No way to get security updates.

It’s that broken connection to the Concrete5 community that put me on the right track.

Sorry… Wrong number

A broken connection to the Concrete5 community means no more community news and no more updates.

It also usually means cURL is hitting a wall or without the technical lingo: your 2 servers can’t talk to each other.

cURL is a library for transferring data from one server to another. It is responsible for letting your website communicate with the Concrete5 community website (or any other website) to get the information it needs.

Often it means there is a DNS problem.

DNS— or Domain Name Servers for geeks— are like a phone book. On the one hand, there are IP Addresses—numbers that represent the location of a website. On the other hand, there are nice looking, easy to remember, website addresses that everybody has come to use and love and depend on (e.g. mylovelywebsite.com)

A DNS translates the nice-looking, easy to remember address that you understand into the IP address that computers understand.

When there’s a DNS setting problem on a server it’s like having an outdated phone book: you have the names all right, but the numbers don’t match so you can’t phone home.

Happy ending

After communicating the solution to my contact in the Kadant team, she quickly shared the info with their server admin who fixed the issue and they were quickly back in business.

The Music Row Show

Disaster recovery at the eleventh hour.

When Heino contacted me he seemed ready to throw in the towel…

The Music Row Show is a radio show and their website is essential as—among other things—it provides their listeners and fans with free recordings of their show’s highlights.

By the time they found me the website had been down for a week.

First, they did the sensible thing and contacted their hosting provider who was unable to figure it out and fix the problem.

Then they reached out to several developers and got a few responses and some help but nothing worked.

One week later, nothing had changed, their website was still down, they were starting to look bad and were at their wits’ end.

The one where a specialist saves the day 

That’s when Heino reached out to the concrete5 community and found me.

I’m indeed about to toot my own horn 😎📯 That’s because being a concrete5 specialist I was just better positioned than most to fix the problem.

Without going in too many details, the problem appeared out of nowhere after an upgrade. I had it figured out and fixed in about 2 hours.

That’s why working with a specialist might sometimes feel more expensive but in the end, saves you plenty of money and headaches.

The kind folks at the Music Row Show were kind enough to talk about me on the air and explain what happened and what it meant to them. So here it is straight from the horse’s mouth:

What to keep in mind

If your website has any importance at all to your business and livelihood, consider treating it the way you treat your house, your car, your health… Get some kind of insurance!

And by insurance I mean ensure you have easy and fast access to a specialist that will get you back in business in no time. Don’t wait for stuff 💩 to hit the fan to start looking.

Quilted Memories

A small tool for a big boost in user experience

Quilted Memories is a Canadian maker of custom quilts out of pieces of clothing that hold special meaning to the buyer and are a testament to their family history.

Needless to say, that type of product requires a very user-friendly approach and a smooth buying process.

The owner at Quilted Memories felt there were a few kinks she wanted to iron out, the most important being the absence of a clear presentation of pricing options.

Bespoke products don’t usually have a fixed price and asking the buyer to do the math themselves is not the most attractive idea.

Sometimes the simplest tools…

Given the nature of the product offered and the problem at hand, the easiest solution was to add a cost calculator to the website with simple enough options to choose from.

I don’t like building tools that are set in stone and make clients dependent on me for future updates. As much as possible, and if the budget allows, I like to make my tools flexible enough that the site owner can manage them easily.

With that in mind, I knew 2 things might change moving forward:

  1. The options offered (size, trimming… )
  2. The cost of each option

On the other hand, I knew the calculation itself was never going to change.

I then built a block that allowed the client to add any number of options and modify price points for each option.

The resulting calculator on the page was a simple set of questions with dropdown fields presenting selectable options. The price was updated in real-time according to each choice made.

As a result, the buyer could make informed choices and feel they were in control of the final product and its price. On the other hand, the supplier didn’t have to manage email communication back and forth and risk potentially losing the sale in the process.

Win-win 👩‍❤️‍👩.

What to keep in mind

Sometimes tiny little enhancements can make a big difference to you and your clients.

You just have to make sure you work with the right consultants so you get tools and applications that solve more problems than they create. Always think about how the tool will have to evolve as your business grows and you change things up.

You don’t want to be 100% dependent on a developer and you don’t want to have to pay for a whole new tool every time you need to change something.

Sometimes it is better to pay a slightly higher upfront cost for future peace of mind and lower maintenance fees.

The Wonderful Bear Emporium

New Update breaks existing code customization.

The Wonderful Bear Emporium is a British company specialized in Teddy Bears and children’s parties.

As part of their Teddy Bear offering, buyers get a certificate during checkout. It’s a Microsoft Office Word document template that gets populated automatically with the buyer’s name.

The process is based on a slightly modified ProForms plugin for Concrete5.

After an upgrade to the ProForms plugin, the certificate generation stopped working.

My mission—and I accepted it—was to restore the certificate tool and bring back the children’s smiles. No pressure whatsoever 😁…

The best intentions in the world

As I said, an update to ProForms had started this mayhem so that’s where I—cunningly—started my investigation.

It turned out that, for security reasons, the ProForm developer had added a token to the form submission code. And since that code had been overridden by the slightly modified version I was dealing with, the token was not taken into account and submission was failing.

I quickly modified the modification and everything went back to normal.

What to keep in mind

Concrete5 overriding possibilities are enormously useful as they allow customization without sacrificing the possibility to upgrade.

But, as it is for Spiderman, it is for us all and great responsibilities come with that kind of power.

  • First of all, you should always check your override after an upgrade.
  • And second, you should always try your best to override as little as possible. You probably don’t need to override a whole controller when only the one function would do.

Craig & Parsons

Hacking our way around a service provider’s limitations.

Craig & Parsons, an industrial company established in 1945, is one of the UK’s leading manufacturers of labels and printed solutions.

Their website is was, at the time, built on Concrete5 (what else?!)

They use SagePay for their payment processing and Sage Accounts as their accounting software.

The context

SagePay is a major payment processor in the U.K. It is the largest independent payment gateway in Europe and for many years enjoyed a quasi-monopolistic position on the British market.

Many clients use their payment system despite a growing feeling that it is clunky, limited, and even outdated.

One major reason to stick with SagePay is the range of other tools the Sage company offers. Applications such as the accounting software Sage One or the book-keeping software Sage Instant have practically become the norm and they all integrate with SagePay.

The seemingly problematic situation

Switching to a different payment processor means losing the benefit of automation as only SagePay can send data directly to the other Sage tools. Switching to Stripe or Paypal, for instance, would mean switching to manual processing.

For companies that have been using Sage tools for years and have built their processes around them, switching costs are too important to ignore.

The real conundrum

SagePay offers 2 different ways to accept payments:

  • Basket: the old and outdated way which is less secure and offers less information about each transaction
  • Basket XML: the new and more up-to-date solution with reinforced fraud detection and much more flexibility and transaction information. It also allows sending payments to Paypal.

Here’s where it becomes interesting: although Sage ended support for the old SagePay protocol on the 31st July 2015, in early 2016 it was still the only way to integrate SagePay with the other applications of the Sage Family.

Desperate man

The mind-bogglingly impossible situation Sage clients were stuck with was: either stick to the outdated, unsupported, and non-secure model and keep enjoying automation of your accounting and bookkeeping operations or switch to the more secure, better tooled, and supported alternative but enter the disheartening world of manual data input.

The project

Craig & Parsons needed to keep using the old Basket Protocol because they were using Sage Accounts for reconciliation.

What they also needed—and didn’t have access to with ye olde Basket—was a way to factor shipping costs in the final invoice and see it appear properly labeled in Sage Accounts.

The new Basket XML allows for more detailed invoices and there is a field for shipping costs, but the old Basket doesn’t do that.

The only way to achieve what Craig & Parsons wanted was to use a hack and add shipping costs to the basket as if it were just another item bought and added to the cart.

The result

The work was a modification of the existing SagePay plugin for the eCommerce add-on of legacy Concrete5.

I modified it to add shipping as an extra item and fixed a few bugs while I was at it. I like to add extra value 😊

The system works pretty well and was completed in about 2 weeks.

Parting words of advice

In case you would like to have a go at using SagePay, know that it offers a testing environment that can be used during development.

There’s a catch, though: that testing environment is only accessible to paying clients and that requires being a registered business in the U.K.

I, for one, don’t have access to it.

Get your free consultation

Got a project that could use specialised eyes on? Tell me more about it and let's discuss how to get that ball rolling.

Share the details →

Get emergency help

Every single day your website acts up, you lose income opportunities. I can get your site back to normal right away.

Get help now →