Category: Clients

  • 4 CMSs: Comparing Craft CMS, Ghost, Netlify CMS, and WordPress

    4 CMSs: Comparing Craft CMS, Ghost, Netlify CMS, and WordPress

    This project is testing a variety of Content Management Systems built on active sites with genuine, timely, content. In this way, we are testing each CMS in real world use, more extensively than would happen with just demo or “filler” content. Beginning with version WordPress 2.3, nearly 10 years ago, we started building by building WordPress sites using custom themes. Many of these information WordPress sites continue to be used today with minimal theme changes.

    Since then though, our WordPress focus has shifted to more extensive WooCommerce installs, custom API construction and connection, and fully custom plugins. We continue to build some simple informational sites but the development landscape has drastically changed since WordPress’ early years. WordPress started as one of the only stable, actively updated content management systems. Now there many mature options including; Ghost a publication focused system, Netlify a platform for static sites that also includes a simple CMS, or Craft CMS which can work with widely flexible content.

    Starting Point

    To explore all these new options, we’ve setup 3 example sites based on a variety of current topics, Automation, the Green New Deal, and the Shapes and Screens of modern computing; these topics will provide endless angles from which to create media and content. We then started building a universal theme to use across each of the the CMSs, the theme isn’t pretty yet but sets a level starting place.

    Are these CMS fair to compare to each other?

    These CMSs are not directly comparable. For one, WordPress is often bundled right on many hosting platforms. Positioned as a “default” option, WordPress has near endless application. Each of these site managers is more difficult to set up and get going. However, even if they aren’t directly comparable, we are starting each with a simple publishing base. Each site should be able to have a customizable homepage, leading to list of posts, and individual posts should have layout options for images and other media. Ideally, getting started building these on an Nginx platform shouldn’t be difficult. (Also each site has to work locally, more on that later.)

    Craft CMS

    Craft’s feature types are key the flexible content management of the system.

    Craft CMS is often compared to WordPress as both are run on PHP. Our setup on localhost was downloaded from the community version. At the moment, Craft needs the database information entered in code, not a browser, but overall installation was straightforward. From there, setting up the sections and entries to make the blog took some work wasn’t difficult. Our main critique is that there should be placeholder content and set up that helps users get started with a blog or simple information site. Craft CMS has been more difficult to update though, we are seeing a PHP issue that isn’t obvious to resolve. We’ll definitely have a follow post on updates for each CMS.

    Ghost

    Ghost has total focus on publishing.

    From install to content creation, Ghost has an elegant interface and keeps clutter to an absolute minimum. Ghost has a paid option but installing the standalone system can be done from the command line and is built in the speedy, straightforward Node.js. With no database to setup, Ghost is self-contained and setup was a breeze on the local and remote servers. The complexity with Ghost came in editing the template, which needs a restart to show the edits. Overall though, Ghost startup and early management is the easiest.

    Netlify with the Hugo Starter

    Ghost has total focus on publishing.

    Netlify CMS is the outlier in the group. Not only does Netlify CMS run as a static HTML site, the others are complied when a user visits or “time-of-flight,” but also Netlify is known more for it’s CDN infrastructure than for it’s CMS. Hosting the static site on a shared server removes the advantages of using the whole CDN but we’ll explore hosting options in the future. While many CMSs can output somewhat “static,” Netlify is purpose built and leans on Git versioning for content. This developer focus is appreciated, but is unlikely to be used by an “average” site creator.

    Right now all the sites are set up and we are actively publishing content for each. First, we’ll dig into how post writing and publishing works. Stay tuned!

    (Originally published in October 2020. Modified and republished February 2021.)

  • Two-Factor Authentication is a necessity.

    Two-Factor Authentication is an additional step in signing into social media, applications, or websites using rotating randomly generated codes. At first, the added layer might seem time consuming and even unnecessary but it can actually save time and make collaboration easier, in addition to adding security. This layer of security also might seem technical or excessive but everyone should use it for every service that has it available. In particular, we use two-factor for any service that doesn’t have  multiple users and for social media accounts that are often targets for “drive-by” intruders.

    The one pitfall for two-factor is the setup. There are 2 main ways to setup and get the codes, via text message SMS or through an app such as Google Authenticator; both options have issues.

    Facebook version of Two-Factor via SMS.

    SMS can be convenient, especially with messages available on multiple devices, but an app is preferred if many accounts are being handled, as shown in the examples.

    Facebook version of Two-Factor via QR Codes.

    The app is the better direction because it’s not tied to a single phone number which can make using multiple phones or systems difficult. To make sure you can use multiple devices with an app, save the QR code (securely!) that is used to setup, so you can add multiple devices including a phone, tablet, or laptop.

    As example here are the two-factor steps for CloudFlare:

    1. Getting to the security page is the first step. Services like Facebook have usually have this option bundled with other security settings but CloudFlare's is on the profile page: https://www.cloudflare.com/a/profile
    2. Next the service will either offer both SMS and a QR code or one of the options. As mentioned, QR codes are slightly easier but save the QR code securely! 
    3. Open your authenticator on your phone or tablet and put the camera over to sync up. (There is also usually an option to type a code in also.)
    4. Last, when the service is added, you’ll confirm by typing in the first random code a first time. 

    How does two-factor authentication save time?

    Even if you don’t enable two-factor, services like Facebook and CloudFlare will often email you to double check your login randomly, if logging in from a new location or from a new device. You can avoid this random check with the two-factor. Also, if you’re sharing access to accounts without multiple users, you can use two-factor to avoid this check when others are logging into the account. Last, most importantly, the extra security could be what saves the immense headache of cleaning up after an intruder as gotten access to important accounts.

    Two-factor is important for collaboration, shared accounts or individual.

    As mentioned above, two-factor avoids a service emailing to confirm a login, which avoids the inconvenience of an email conformation. If there are multiple users for an account though, there often isn’t password consistency so having two-factor on each account at least enforces a random level of security backing up a potentially insecure user password.

    Must must must use for social media, but steadily add every service that you login into regularly.

    Next to financial sites, or cloud password managers, social media sites are becoming go to easy targets for hackers as they are gateways to other services. For example, to log into Buffer, you may use Twitter. If your Twitter is compromised, so to is your Buffer account. In fact, once you have two-factor set up, keep an eye on connected accounts also since they can sometimes bypass logins altogether.

    Although it adds a little more setup time, keep in mind all the benefits of adding two-factor authentication including the primary goal of added security. To make this a habit, have a process of generating and saving a secure password, backup code, and connecting QR code when you set up a new service. Like other habits, the early effort adding two-factor will save a ton of time later down the road.

  • Content and code, similar headaches with similar solutions.

    Content and code, similar headaches with similar solutions.

    Managing content and managing code are surprisingly similar. However, where content management and creation can be more freeform, coders are forced into a number of standard practices by the collaborative nature of modern coding.

    Even when working alone, coders rarely start from scratch often building off ongoing projects such as frameworks or libraries. This collaboration is also asynchronous since various interconnected pieces of projects are being worked on by different coders at different times. 

    Because of these unique conditions, coders have adapted a few techniques that can be helpful both for teams of content creators and those working alone. The more standout techniques are standardized file and folder organization, index files, and versioning. Each of these techniques are starting to show up in content management and creation but they aren’t always obvious or easy to implement.

    Standard folders. Collection files.

    File and folder organization are crucial for coders, even for those few sites without Content Management Systems. The most simple of websites, such as 1 page landing page sites, can have dozens or hundreds of files. It might seem like a paradox, but websites with more files are often more organized.

    Recently, there has been an effort bundle common files together, break out larger files into smaller pieces then reference these files in one index file. Indexes and outlines aren’t new to content of course but coding as put a new spin on them.

    Let’s take a comparison of a document in InDesign and a CSS file. CSS, or Cascading Style Sheet(s), are what lay out HTML sites. Early on, CSS was written as single large sheets but these are cumbersome to build and maintain.

    Now, CSS is written as much shorter individual files and grouped into standard folders that are automatically combined just before posting. On the right, the final file that is used is style.css but all of the other files combine into that 1 file before being used.

    Programs like InDesign, Google Docs, and Photoshop all allow similar methods of pulling in smaller files, nothing new there, but it’s how the smaller files are referenced and managed that can save time and effort.

    Simple structure, bite-size files.

    Diving into the contents of the files further reinforces why breaking out files is so important. Looking at the 2 CSS versions to the right, there are more layers to walkthrough but these layers add clarity.

    With one massive file, a fair amount of digging and searching is needed. which can take more time and lead to more errors.

    Using InDesign as an example again, images can be imported right in the file then the original file discarded. In fact many programs can now embed images or other files instead of linking but this both increases file sizes and makes later editing difficult.

    Plan for maintaining not only the main file but also the element files. Combining files right into an layout file might seem convenient but the smaller files aren’t reusable. Reusability is extremely important to code, so much so that nearly every website includes some common code library or framework.

    With our example you can go so far as to include InDesign files within InDesign files. It seems ridiculous but this layering keeps the element files very simple. Another huge benefit of breaking out files is the ability to version the files independently.

    Versioning. Track, plan, sort.

    Versioning is extremely important for coding. Having a clear view of what has changed between different iterations of files, who made the last edit, or just having a history to refer to refer to makes it easier for coders to share, maintain, and reuse code.

    Version trackers such as Git are essential to good coding but there isn’t one go to version tracker for content because of the many different tools content creators and editors use. Instead, you need to both look for tools that support version tracking and see what level tracking each tool has.

    For example, Google Docs recently added excellent version support where each change is reviewable, changes clearly comparable, and a history to follow.

     

    WordPress has some version tracking but only within it’s main content. But these revisions are overlooked too often.

     

     

     

    Last Photoshop has a history allows a user to move back and forth in time and even snapshots of time periods but no clear preview. The preview of what content has changed over time is one way of highlighting that can be adapted but there are more ways that we can bring from coding.

     

    Since code is simply text versioning has been standardized with ecosystems built around managing, sharing, and deploying pieces or whole collections of code. However, making similar ecosystems for content is not nearly as easy but if you look around at your existing software, it may have the features you need and you’ll now what to look out for when choosing new options.

    In the end.

    Standardizing folders is general good practice but it might not happen until your forced into a workflow. As well, getting in the habit of keeping reusable files easily accessible takes some additional time on creation but can pay off enormously when there dozens of projects with various kinds of media to keep track of.

    Neither of these take any special software to adapt, coders have just refined them to a nearly seamless degree.

    Versioning might be available to you now but it not only takes the right software implementation but also keeping a critical eye out for time when it will save time.

    What techniques have you adapted from technical work?