Designing for SEO from the Start

Search engine optimization (SEO) is critical to the success of your website, and therefore critical to the success of your business. A high Google ranking means more page views—and more conversions. Google rewards websites that are user-friendly and easy-to-navigate, with fresh content and frequent updates. At End Point, we design with SEO in mind from the beginning of the project to help you get the most value from your online presence.
These are the five main areas that we focus on to improve your ranking:
-
Content Strategy—You want to provide your users with quality content. We can provide a content strategy to help ensure that your site stays on target, with clear copy, focused messaging, and consistent branding. We’ll help you put together a site that gets visitors where they want to be—and you’ll reap the rewards with an increase in traffic to your site.
-
Sitemap, Keywords, and Semantic Markup—We dive into the nuts and bolts of your site to make sure that it can be crawled and indexed easily by Google. We produce a prioritized XML sitemap, relevant, long-tail keywords and metadata, descriptive page headings, titles, and URLs. Your site’s code will utilize HTML5 …
design seo
In-House to Consulting, Rinse and Repeat

Photo by Matthew Henry of Burst
Hi! I’m Steph. I’ve been working 10+ years now as a software engineer, and I’ve spent ~4 years of that as an in-house developer at 2 different companies and 7+ years as a consultant here at End Point and as an independent contractor. Whenever I’ve started a new position, I get asked “What’s it like on the other side?” or something along the lines of “Is the grass greener?” I thought my answer to this was good blog fodder, so here we are.
If you google “in-house vs. consultant”, much of the results are written from the perspective of a company looking to hire either in-house engineers or looking to outsource to consulting companies. Here’s my approach to answer the question as it relates to employee happiness, skill development, and job satisfaction.
Working as an in-house engineer
- Working as an in-house engineer can mean that you may focus on one technology (or one web stack) and even one main codebase, although this isn’t necessarily true. When I worked for Backcountry.com a while back, the main application was an ecommerce application running on Interchange, and that’s where I spent most of my dev time. But as my experience grew, I began working …
tips software
Multi-Tenant Architecture

Photo by Rüdiger Stehn, cropped, CC BY-SA 2.0
Definition
Multi-tenant architecture allows one instance of an application to serve multiple customers/organizations. Each customer/organization is called a tenant. Each has its own apparent separate application and is not aware of the other tenants. The tenant has the ability to customize their own UI, users and groups, etc. Every tenant typically has these features:
View: Tenants can define the overall styling to their application.
Business rules: Tenant can define their own business rules and logic for their application.
Database schema: Tenant can define their own database schema (real or apparent) for the application. They can add/remove database tables, rename database fields, etc.
Users and groups: Tenant can define their own rules to achieve data access control.
Types of multi-tenancy
There are 3 main types of multi-tenant architecture:
(1) Multi-tenancy with a single multi-tenant database: This is the simplest form of multi-tenancy. It uses single application instance and the single database instance to host the tenants and store/retrieve the data. This architecture is highly scalable, and when more tenants are added the …
rails architecture development
King Arthur Flour Recipes
The delicious yield of King Arthur Flour recipe Simply Perfect Pancakes
We have been pleased to have King Arthur Flour (renamed King Arthur Baking in 2020) as a client for a few years. A year or so ago I started using some of their recipes, and their website has since become my go-to source for good baking recipes. I have used their flours a few times, but I am going to focus on their recipes in this post.
They have a ton of recipes. There are upwards of 30 recipes for different kinds of brownies alone. These include gluten free, fudge, raspberry, mint, you name it. The vast majority of recipes I’ve seen have at least a 4 star rating from the public. The recipes are organized into 9 major categories, which makes it easy to browse through recipes quickly.
Their customer service is amazing. Most recipes have several comments on them, and some have up to several hundred. Even with this many comments, if you leave criticism of the recipe, a KAF staff member will almost always answer with suggestions to make it work better. They also have a toll-free baker’s hotline, where you can call or email them with any baking questions, whether or not it’s related to their products!
Crazy …
clients tips
Recycling Web Workers: Just Proper Hygiene

Photo by Dano, CC BY 2.0
A long while back we were helping out a client with a mysterious and serious problem: The PostgreSQL instance was showing gradual memory growth, each of the processes slowly ballooning memory across a few days until the system triggered the OOM (out of memory) killer. Database at that point kicks out all connections and restarts. Downtime is bad, yo.
Spoiler alert: It was a prepared SQL statements bug in Rails. Sometimes it’s fun to take you through all the hair-pulling that goes into debugging something like this, but instead this Friday I’m feeling preachy.
Of course there’s a few different directions you could go to work around a problem like this:
- Update your framework. If, of course, the fix has been released, or determined in the first place. And if your application doesn’t have any compatibility trouble preventing it from running on the updated version, or you feel comfortable back-patching the fix yourself. And if the Change Management Officer doesn’t try to string you up for wanting to update production willy nilly. (Not everyone works at a startup!) But do add it as a milestone. It should be one anyway.
- Take a different code path. Feature …
database python ruby sysadmin
The End Point Design Process
Designing for the web means more than just creating beautiful websites—whether it’s a marketing site, an ecommerce platform, or a large-scale web application, thoughtful design means better, more intuitive user experiences. The design process provides a roadmap for developers and a shared set of expectations for the clients of what the final product will be.
If you’ve contracted End Point for design work, or you’re considering it, this post will show you all the steps as we go from an initial concept to a polished design that’s ready for development. You’ll also learn the basic vocabulary of deliverables and some of the tools involved in the process.
Phase I: Discovery
Every new app, website, or product starts with an idea. The initial phase of design work means clarifying that idea—defining its boundaries and goals. Thorough research and investigation are critical for setting the path to success. We interview our clients’ staff, stakeholders, and users to get a comprehensive picture of the current marketplace, discover any pain points in existing workflows, and learn what we can do to make things better. We also take an in-depth look at existing content and, with the client, …
design
Rails Active Storage
Overview
Active Storage is a new feature of Ruby on Rails 5.2 that provides functionality to upload files to the cloud, currently Amazon Web Services, Google Cloud, Microsoft Azure.
This gem attaches pointers to uploaded files to the Active Record object. It uploads the file asynchronously which reduces app server overhead, and it also doesn’t require adding a background job explicitly. Active Storage by default uses Active Job to upload the files.
Features of Active Storage
Mirror Service: This allows synchronization of the file between multiple cloud storage services. For example we have this config/storage.yml:
development:
service: Mirror
primary: amazon
mirrors:
- azure
- googleThe Mirror service first uploads files to Amazon S3. After that it pushes to Azure and Google Cloud. When we remove the file then first it removes it from Amazon S3 and after that it removes it from Azure and Google Cloud. This service is very helpful when we are migrating from one cloud to another.
Direct Uploads: Active Storage comes with a JavaScript library activestorage.js. By using this library we can upload files from the front-end browser to cloud storage directly. Some events …
ruby rails
Vue in Ecommerce: Routing and Persistence

I recently wrote about Vue in Ecommerce and pointed to a handful of references to get started. Today, I’ll talk about using vue-router in a small ecommerce application, combined with vuex-persist for state storage.
I forked this Vue Shop on GitHub from Matheus Azzi. It was a great starting point for to see how basic component organization and state management might look in a Vue ecommerce application, but it is a single page ecommerce app with no separate page for a product detail, checkout, or static pages, so here I go into some details on routing and persistence in a Vue ecommerce application.
Vue Router
In looking through the documentation, I don’t see a great elevator pitch on what it is that Vue Router does. If you are new to routing, it’s a tool to map the URL request to the Vue component. Since I’m coming from the Rails perspective, I’m quite familiar with the Ruby on Rails routing from URL pattern matching, constraints, resources to Ruby on Rails controllers and actions. Vue routing via vue-router has some similar elements.
When you create a basic Vue application via vue-cli, you are given the option to include vue-router:
vue init webpack myapp
? Project name myapp
? …ecommerce vue javascript open-source
