Mugo Web main content.

In-depth insights on content, code, and creativity

Web development as a service: customer service is as important as code

Many people think web development is mainly about code: code in frameworks, code connecting systems, code in different languages. And it’s true, web development is full of code. But it’s also about much more than code; it’s about serving clients.

What makes your web development team a great partner instead of just "those technical people you have to deal with"? Good communication. A solid understanding of your needs. Digital solutions that meet those needs. All of which, ultimately, amounts to good customer service.

LEARN MORE

An rx for quality medical content online

With more than one-third of Americans using Dr. Google to search for medical information online, and one in every 20 Google searches related to health information, there is undoubtedly a need for quality medical content on the internet.

LEARN MORE

Why an accessible website benefits your business

Ensuring your website is accessible to people with visual, auditory, speech, cognitive, and neurological disabilities -- including all of its text, images, video, audio, and even forms and checkboxes -- is good business practice.

LEARN MORE

Building an accessible website: how to make toggle boxes screen-reader friendly

Making your website accessible to people with visual impairments involves ensuring that screen readers effectively communicate all essential information to the user -- including information conveyed in toggle boxes. Here's an example of a toggle box that needs to be made accessible. Let's walk through how it's done.

LEARN MORE

Mailchimp newsletter template tool for WordPress

When it comes to creating newsletter campaigns, you have to compile the content and then send that content out through an e-mail marketing service. Having a content management system helps in order to structure your content and automate the creation of the newsletter HTML. Here's an example of a newsletter integration with WordPress and Mailchimp.

LEARN MORE

How to create custom tags in eZ Publish 5

Custom tags are very useful for adding custom functionality to rich text fields beyond simple formatting and embeds. Here is a walkthrough of how to implement custom tags in eZ Publish 5.x compared to an eZ Publish 4.x / legacy install.

LEARN MORE

Layout management in book publisher website platform ReaderBound

In developing a website platform for book publishers, we wanted to provide fully featured page layouts that publishers can customize. We've built many custom publisher websites, but with ReaderBound it is important to offer ready-to-use widgets as building blocks for editors to organize into their own layouts. By achieving this balance, ReaderBound is a flexible but powerful platform.

LEARN MORE

Stamping PDFs with a watermark in eZ Publish

When running an intranet or an otherwise password-protected site, you sometimes need to share confidential or sensitive files, specifically PDFs. It is a challenge to balance the confidential nature of the files while allowing privileged users to download and work with the files normally. One lightweight approach is to stamp a watermark onto each page of the PDF. Instead of just a big "confidential" watermark you can customize each download so that each file is stamped with, for example, the current user's name and the current date.

LEARN MORE

Mugo office in New Westminster!

In early 2015, we decided to trade in our downtown Vancouver office for a new Mugo HQ in downtown New Westminster (30 minutes outside of Vancouver)! Although the main motivation behind the move was to have a more central location relative to Mugonites' homes, we've been very pleased with the surrounding area and amenities.

LEARN MORE

First draft preview in eZ Publish 5

The eZ Publish 5 series has been a successful step forward for eZ Publish with the adoption of the Symfony stack and the ability to run dual kernels with the new and legacy stacks. However, content preview functionality has gone through many fixes through the 5.x version. The final fix comes in eZ Publish 5.4.5, which is very important since eZ Publish 5.4 is a milestone release that will be used as a stepping stone for upgrades through to the 6.x series aka eZ Platform! Here's how to update your code to make your editors happy with proper content preview!

LEARN MORE

Online Daily Evaluations: a walkthrough of emergency department shift evaluations

With the Online Daily Evaluations portal, student (or "trainee") doctors and attending doctors can easily evaluate each other after every hospital shift with a customizable online course evaluation form. This ensures that mandatory student evaluations are completed within a CanMEDS compliant and RIME compliant evaluation system, and that students get the most out of the learning experience. In such key environments as emergency medicine and anesthesia departments, doctors and patients can appreciate every bit of efficiency! Here is a brief walkthrough of how Online Daily Evaluations works.

LEARN MORE

Sorting search results by date-based relevance in eZ Find

The eZ Publish search extension eZ Find offers many sorting parameters for its search results, the most common being by relevance / score, and by date. On large sites, sorting by date can lead to non-relevant results showing up first. What if you want to sort by date and relevance, essentially boosting newer content but still giving you relevant results?

LEARN MORE

Building a development environment from a production website with Vagrant and VirtualBox

When it comes to local development environments, in a lot of cases Mugo uses VirtualBox images and manages them with Vagrant. These environments are sometimes created after the production environment has been set up. To make a local development environment as similar to production as possible, one approach is to actually copy the production server.

LEARN MORE

Image aliases and filters in eZ Publish 5.4+

As of eZ Publish 5.4 / 2014.11, there is a new way to define custom image filters and image aliases. This is because image alias generation is now using LiipImagineBundle, with the underlying Imagine library from avalanche123. In this post we will review the old and new ways of configuring image aliases and filters along with a useful example.

LEARN MORE

JavaScript and CSS caching best practices with ezjscore and eZ Publish

A good caching system keeps elements in the cache as long as possible, but clears them as soon as the elements are updated. For content pages in eZ Publish and most content management systems, "purge-on-publish" features are well documented. When it comes to JavaScript and CSS files, there are usually different caching systems involved, and these are important to configure. Otherwise, you'll end up with the all-too-familiar problem of a broken front-end on deployments, where the only fix is to have users do a "hard refresh" (CTRL+F5) in the browser.

LEARN MORE

Integrating the Dropbox Chooser with eZ Publish

When working with a CMS, you might decide to store some files in Dropbox rather than in the CMS for several reasons, including storage, workflow, and performance considerations. The Dropbox Chooser is one of 2 Dropbox Drop-ins. The "Chooser" enables users to generate a file link from a Dropbox account, and the "Saver" enables users to save a file to a different Dropbox account. The Chooser is often most useful for CMS editors.

Using the Dropbox Chooser with the eZ Publish Administration Interface saves editorial staff a lot of time by giving them direct access to the file links they need without having to jump between Dropbox and eZ Publish. The Chooser UI also allows you to upload files to a Dropbox account, making it even easier to get everything done within one operation.

LEARN MORE

Multi-language sites in eZ Publish: requirements analysis

eZ Publish has had multi-language features (also called "internationalization") built into its core for over a decade. If you're considering building a multi-language eZ Publish website from scratch or to add additional languages to a single-language eZ Publish site, there are many technical details to be aware of. However, before you begin, it's important to develop a list of requirements for how end users and editors will use the languages on the site.

LEARN MORE

eep in action: eZ Publish command line operations

eep (Ease eZ Publish) is a command line tool we introduced in a previous post, which in combination with other command line tools like awk, grep and xargs makes for powerful one-liners. The examples in this post will highlight its versatility and show just how quickly and conveniently eZ Publish related tasks can be accomplished using eep. Get ready for some command-line fun!

LEARN MORE

Securing eZ Find's Solr installation

When using eZ Publish's eZ Find extension on a public facing site or project -- arguably any project -- it is vital to secure it to prevent unauthorized access and potential data loss. eZ Find is powered by Apache Solr, an open-source search server based on the Lucene Java search library. Its power and flexibility make eZ Find a great tool when working with a lot of content in eZ Publish.

There are a number of ways a Solr installation can be secured. We'll look at BasicAuth via Jetty UserRealms and iptables firewall rules in detail.

LEARN MORE

VirtualBox virtual machines with Vagrant and Ansible for website development

Vagrant and Ansible are tools to efficiently provision virtual machines (also called VMs or simply boxes).

This blog post will begin with a short discussion of why one would invest the time to use these tools, then cover the required software, an overview of how Vagrant works with VirtualBox and the use of Ansible to provision a VM.

LEARN MORE

Managing Salesforce and HubSpot storage and API limits

Using HubSpot together with Salesforce, you can tie your inbound marketing campaigns to your customer and lead records for a nearly complete view of every user interaction with your business. (Add some analytics and you're all set!) However, with so much data syncing going back and forth, you must take care not to go over your storage and API call limits in Salesforce. Surprisingly, data overage charges are not cheap, and if you use up your API call limits, not only will your data stop syncing between HubSpot and Salesforce, but other systems -- such as your website -- will not be able to access and update important data.

LEARN MORE

Mugo Image Server for eZ Publish: a scalable, flexible solution

In order to increase the image serving performance of high-traffic websites and improve the editorial user interface around image management, Mugo Web came up with an alternative way to serve content images in eZ Publish.  It is aptly titled the "Mugo Image Server for eZ Publish".

LEARN MORE

Built-in Varnish Cache "purge-on-publish" support in eZ Publish

eZ Publish 5 comes with built-in Varnish Cache support. Essentially this means that when content is published in the eZ Publish back-end, it notifies Varnish so that the Varnish cache is cleared. This feature is often called "purge-on-publish" and makes it so that you can cache your pages for a very long time, but that edits refresh the cache and thus appear immediately. To get this native support, you just have to use the "new stack" in eZ Publish. However, even if your legacy site is not ready to be fully upgraded to the new stack and you are running eZ Publish 5 in "legacy mode", you can take advantage of this native support.

LEARN MORE

Marketing automation technical review: Marketo versus HubSpot

Some time ago I wrote a blog post about integrating Salesforce and Marketo in a web marketing solution powered by a content management system (in this case, the eZ Publish CMS). Recently, Mugo had the opportunity to migrate one of our clients from Marketo to HubSpot. The decision to move to HubSpot was made for non-technical reasons; regardless, it is useful to review the technical differences and challenges when it comes to integrating the marketing systems with a content management system.

LEARN MORE