Our Blog

Ongoing observations by End Point people

Ecommerce sales tax primer

By Elizabeth Garrett Christensen
January 13, 2020

Co-authored by Greg Hanson

Roman tax burning Source image

Tax collection is one of the topics du jour for those of us in the ecommerce industry. Since state and local authorities are now able to levy taxes on ecommerce goods, taxation for online stores has become quite complicated. The purpose of this post is to give you some next steps and ideas on implementation if you’re new to the topic and need to know how to get started on tax collection for your ecommerce business.

Current ecommerce sales tax policy stems from the 2018 U.S. Supreme Court decision South Dakota v. Wayfair, Inc. Since that decision, favoring South Dakota, 30 states have enacted legislation to require ecommerce stores to pay sales tax if they fit the definition of having an ‘economic nexus’, that is, they do enough business in the state to be worth taxing.

Talk to your Tax Accountant

So the first and most important note is to get your own legal counsel in regards to your taxes. There are many rules and things are changing every month with local and state authorities, so you’ll need reliable counsel on the topic.

If you’re looking for someone to help, make sure this person has:

  1. Knowledge about product variants. For example, clothing may not be taxed in some areas.
  2. Familiarity with tax policy in the entire country, and not just one local retail area.
  3. The ability to help you determine in which states you have a tax ‘nexus’ and need to pay sales tax. For many small businesses, you might only do enough business to pay sales tax in your home state and a few large ones like California or New York.

Research Software

Luckily for anyone starting to collect sales tax, there are some very good SaaS (software as a service) systems out there to make tax collection, reporting, and compliance easy. These software systems typically integrate with your ecommerce store by providing the store with the correct tax amount for the sale and collecting information for you on your reports and filing information to get the taxes...

ecommerce saas payments magento interchange

Decreasing your website load time

By Juan Pablo Ventoso
January 7, 2020

Decreasing our website load time Photo by Johan Larsson, used under CC BY 2.0

We live in a competitive world, and the web is no different. Improving latency issues is crucial to any Search Engine Optimization (SEO) strategy, increasing the website’s ranking and organic traffic (visitors from search engines) as a result.

There are many factors that can lead to a faster response time, including optimization of your hosting plan, server proximity to your main traffic source, or utilization of a Content Distribution Network (CDN) if you are expecting visitors on an international level. Some of these solutions and many others can be implemented with only a couple hours of coding.

Inline styles and scripts for the topmost content

Nobody enjoys waiting for long load times. When opening a Google search link, being met with a blank page or a loading GIF for several seconds can seem agonizing. That’s why optimizing the initial rendering of your page is crucial.

The content that immediately appears to the user without the need to scroll down is referred to as “above-the-fold”. This is where your optimization efforts should be aimed. So here’s a plan to load and display as quickly as possible:

  • First, differentiate the critical styles and scripts you need to render the topmost content, and separate them from the rest of our stylesheet and external script references.

  • Then, minify the separated styles and scripts, and insert them directly on our page template, right before the closing </head> tag.

  • Finally, take the stylesheet and scripts link references from the <head> tag (where it’s usually located) and move them to the end of the above-the-fold content.

Now, the user won’t have to wait until all references are loaded before seeing content. Tip: Remember to use the async tag on scripts whenever possible.

  • example.html:
    <style>{above-the-fold minified inline styles goes here}</style>
    <script type="text/javascript">{above-the-fold critical scripts goes here}</script>

seo optimization html csharp dotnet

Useful terminal tools

By Jon Jensen
January 3, 2020

Móricz Zsigmond körtér Underground Station (people, escalators)
Photo by Tee Cee · CC BY 2.0, cropped

Like most of my co-workers, I spend a lot of time in a terminal emulator (console) in a shell at the Linux command line. I often come across tools that make work there nicer, but sometimes I forget about them before I integrate them into my workflow. So here are notes about a few of them for myself and anyone else who may find them useful.


HTTPie is:

a command line HTTP client with an intuitive UI, JSON support, syntax highlighting, wget-like downloads, plugins, and more.

Given how commonly-used curl, wget, and GET/POST (lwp-request) are, it is nice to see some innovation in this space to enhance usability.

Here is a simple example that demonstrates several HTTP redirects with full request and response headers, colorized:

http -v --pretty=all --follow endpoint.com | less -R

The color highlighting of the body, not just response headers, is the main difference here from curl, wget, etc.

Also nice for ad-hoc interactive use is that the verbose header output is sent to stdout instead of stderr, so it shows up in less without needing to have the shell merge it with 2>&1 before piping to less.

An aside on HTTP redirects

In the above example, the client makes 3 requests, because the first 2 are redirects:

  • http://endpoint.com/
  • https://endpoint.com/
  • https://www.endpoint.com/

Normally we would want to reduce the number of HTTP redirects, so why not redirect straight from http://endpoint.com/ to https://www.endpoint.com/?

Before the introduction of HTTP Strict Transport Security (HSTS) to the web, that is what we did.

But with HSTS it is better to pass through HTTPS for each hostname, so that the Strict-Transport-Security HTTP response header can be sent and the browser can cache the fact that both the bare yourdomain.tld and www.yourdomain.tld should only be accessed via HTTPS.

See the thorough description at the Sentinel Stand blog post for more details, including a discussion of includeSubDomains traps.

tips tools

Making sense of XML/JSON items in the shell

By Muhammad Najmi bin Ahmad Zabidi
December 31, 2019

a shell

Working as a system administrator means I have to spend quite some time during my work (and even during casual surfing) with the terminal. Sometimes I feel that certain information I want could just be fetched and parsed through the terminal, without having to use my mouse and point to the browser.

Some of the websites I visit use XML and JSON, which we could parse with Bash scripting. Previously I wrote a Ruby script to call Nokogiri to parse the XML elements until I found a Bash tool that could do the same thing.

These tools have already been around for quite a while—I’d just like to share what I did with them. The tools I used are xmlstarlet for XML parsing and jq for JSON.


I have the following XML elements, and I’ll save them to a file called data.xml:

<rss version="2.0"

        <title>eSolat JAKIM : Waktu Solat Hari Ini</title>
        <link>Gombak,Petaling,Sepang,Hulu Langat,Hulu Selangor,Rawang,S.Alam</link>
        <description>Gombak,Petaling,Sepang,Hulu Langat,Hulu Selangor,Rawang,S.Alam</description>
        <dc:rights>Copyright JAKIM</dc:rights>
        <dc:date>26-12-2019 00:37:31</dc:date>
        <admin:generatorAgent rdf:resource="expressionengine" />


shell json

A Career Talk for 1st Graders

By Steph Skardal
December 6, 2019

Steph giving a career talk Giving a Career Talk to 1st Graders

This week, I gave a career talk to my daughter’s 1st grade class and I talked about my job as a software engineer. I started with this video, which depicts two kids explaining to their dad how to make a peanut butter sandwich (called the “Exact Instructions Challenge”), but he takes them very literally and acts as though he has no context on how to work with peanut butter, jelly, and bread. The video got some giggles!

After the video, I talked about how the video was similar to what I do: I give computers instructions, and like that silly dad, computers don’t know anything about what they are being told to do. I hope they understood the analogy!

I have 5 Alexas!

We talked about what a computer is and how we all have a lot of computers at our house (“I have 5 Alexas at my house!”, “I have a PS4!”, “I have a PS2!”), even some that can turn the lights on and off now. I didn’t show them code because I didn’t think it would mean much to them, but a couple of the kids in the class had worked on kid-friendly coding projects.

I talked a little bit about my education (1st graders aren’t quite sure what this “college” thing is), and how I work from home. We talked about how I problem-solve, just like they do — right before the talk started, their teacher asked them to problem-solve so that everyone could have a chair! I explained that sometimes I problem-solve and figure out what the fastest way to do something is, or what another solution might be, but it might last longer. We also talked about how communication (reading and writing) are important in my job, so they should keep working on that!


The best part of the talk was Q&A, because I was able to understand what was in their big kid brains! Here are some of the questions I fielded:

  • Do you give computers instructions in 1s and 0s? How do you do that? How do computers understand 1s and 0s? I tried to explain this a little bit by talking about different languages (a couple...

development community

Reviewing the Code

By Kürşat Kutlu Aydemir
November 26, 2019

Magnifying glass

Code review is analysis of source code of a software project by reading the code itself or sometimes using automated tools to analyze it, and it is part of the Software Quality Assurance (SQA) activities which define the quality assurance of the whole software development lifecycle. As we go through the flow of a code-review, we’ll understand what to assure by doing code review. Code review lifecycle covers the guidelines and the code review process itself.

Code review guidelines

Preparing for code review

  • Pick the right reviewers. The reviewer should be an experienced software architect. Sometimes, less experienced groups can join the review team. Communication is also important, since frequent round table code review meetings with the developers are not usually productive.
  • Let authors annotate the code before review indicating which files have precedence for review. Annotation by the developers to orient the reviewer so they know where changes have taken place and where to review is a good practice.
  • Request code review. Requesting code review just before testing is another good practice.

Tips for reviewer during the code review

  • Review small pieces of code at a time, for instance around 400 lines of code.
  • Review for around 60 minutes at a time.
  • Set goals and metrics.
  • Use SMART criteria:
  • Specific: target one area clearly and precisely.
  • Measurable: quantify progress toward success by using metrics.
  • Actionable: ready to start and possible to accomplish.
  • Relevant: connected to what’s being done, considered, and/or resourced.
  • Timely: occurring at a favorable or useful time and opportune.
  • Measure inspection rate and defect rate.
  • Use checklists.

Code review flow

Regardless of what programming language is used to develop, code review should cover the following common areas:

  • Maintainability
  • Reusability
  • Performance
  • Security
  • Bug analysis
  • Knowledge sharing

Other practices can also be reviewed, like extensibility or OOP (Object Oriented Programming)...


A Project Manager’s Toolkit

By Elizabeth Garrett Christensen
November 16, 2019


I do a lot of project management work related to web applications. Everyone assembles their own set of useful productivity tools and I’m feeling pretty good about how I’ve got things set up at the moment so I thought I’d share my secret sauce. I’m interested to hear what other people have found useful as well so feel free to share in the comments.

Chat Tools

Ok, this one is all over the map. Slack is obviously the big one and many of our clients use that with us. Most larger organizations incur a cost (smaller projects are free). Internally End Point uses Zulip, which is a pretty decent open source application. Zulip doesn’t have as refined a user interface as Slack, but it works for our needs, and also has a mobile app I can use on the go.

I also highly recommend Skype. While it’s not the best system out there, so many people use it, it is almost impossible to avoid. Skype is really easy way to get someone’s attention and I use it with a lot of my clients for quick one-on-one questions and chats. Google Hangouts chat is also really nice for working with external folks and will run in your menu tray and mobile phone, so you can stay up to date wherever you’re working.

Video Calls

I spend a few hours on the phone a day and my go-to system at the moment is Zoom. End Point often uses Google Hangouts or Meet, but those require a Google account, which can be a burden for some clients or contacts who aren’t Google-ified. Zoom is pretty cost effective and lets you connect with someone via video chat or phone and even provides local numbers for your participants all over the globe. This is not only a great system for large group meetings, it is excellent for initial meetings or situations where you’re unsure if your group needs a phone or video call. Each participant can choose for themselves. It’s also technically the most stable and is far better about maintaining solid connection (for my OS/browser) when compared to Skype or Google Meet/Hangouts. I...


Winning with CSS Grid and Autoprefixer

By Greg Davidson
November 4, 2019

Aerial view of St. Vitus Cathedral, Prague

Photo by Stijn te Strake on Unsplash

Using CSS Grid Today

Support for CSS Grid is excellent (over 90% globally! 💯). I have been using it in a variety of client projects for the past few years with great success. The combination of CSS Grid and Flexbox has made layout on the web much simpler, more fun and less frustrating compared to the hacks techniques which were used for CSS layout in the past. Definitely give it a try if you haven’t already done so.

IE10 and IE11 support an earlier version of the CSS Grid spec and with help from Autoprefixer we can reap the benefits of CSS Grid in those old browsers with a little bit of extra work. I’ve long been a huge fan and happy user of Autoprefixer. It’s a PostCSS plugin that examines your CSS and augments it with vendor prefixes and alternative syntaxes. Although vendor prefixes (e.g. -webkit, -moz, -o, etc.) are much less common these days, there are a few still in use.

CSS Grid Basics

With CSS Grid the basic idea is to define the grid, i.e. the rows and columns that make it up, and then go about placing elements on the grid. Think of a website layout with a masthead, navigation, hero image, main content sidebar, and footer as an example. Your grid styles can specify where each of these elements should be displayed on the grid: how many rows or columns they span, etc. In addition to this method of explicitly placing elements on the grid, auto-placement places elements on the grid for you automatically.

Autoprefixer + CSS Grid

I recently learned how to use control comments in Autoprefixer to get fine-grained control over the way it operates on and enhances my CSS Grid styles. Rather than specifying a single (global) behavior via config options, control comments let you tell Autoprefixer how you would like it to process individual blocks of CSS code. For the scenario where I was explicitly placing elements on my grid I used the following control comment in my CSS file:

/* autoprefixer grid: no-autoplace */


browsers css tools development
Page 1 of 184 • Next page

Popular Tags


Search our blog