Our Blog

Ongoing observations by End Point people

Seeking a PHP developer

By Jon Jensen
October 17, 2019

decommissioned pay phone

We are looking for another PHP software engineer, to work with us during business hours somewhere in the UTC-7 to UTC-4 time zones (U.S. Pacific to Eastern Time). This is a contract-to-hire role, and can be full time or part time.

End Point is a 23-​year-old Internet technology consulting company based in New York City, with about 50 employees, most working remotely from home offices. We collaborate using SSH, GitLab, GitHub, chat, video conferencing, and good old email and phones.

We serve many clients ranging from small family businesses to large corporations.

What you will be doing:

  • Develop new web applications and support existing ones for our clients
  • Work together with End Point co-workers and our clients’ in-house staff
  • Use your desktop OS of choice: Linux, macOS, Windows
  • Use open source tools and contribute back as opportunity arises

What you bring:

Professional experience with web application development and support:

  • 5–7 years of development with PHP (older 5.x and newer 7.x versions) and JavaScript
  • Frameworks such as Symfony or Laravel
  • Databases such as PostgreSQL, MySQL, MongoDB, Redis, Solr, Elasticsearch, etc.
  • Security consciousness
  • Git version control
  • Automated testing
  • HTTP, REST APIs, and/or SOAP

And just as important:

  • Strong verbal and written communication skills
  • A good remote work environment
  • An eye for detail
  • Tenacity in solving problems
  • Ownership of projects to get things done well
  • Work both independently and as part of a team
  • Focus on customer needs

What work here offers:

  • Flexible work hours
  • Annual bonus opportunity
  • Freedom from being tied to an office location
  • Collaborate with knowledgeable, friendly, and diligent co-workers around the world
  • For full-time staff: paid holidays and vacation
  • For U.S. employees: health insurance subsidy and 401(k) retirement savings plan

Getting in touch with us:

Please email us an introduction to jobs@endpoint.com to apply. Include your location, a resume/​CV, your GitHub or LinkedIn URLs...

company jobs php remote-work

Custom cabinets for the Liquid Galaxy

By Ben Witten
October 1, 2019

Liquid Galaxy installation encased in a wood cabinet

End Point is proud to announce a new offering in its product line: Liquid Galaxy systems built into beautiful custom cabinets! Our first custom cabinet was created and installed at Auburn University’s Ralph Brown Draughon Library this past month. Both we and the University are thrilled with the success of this install.

Cabinets provide a perfect hybrid solution for clients who want the look of permanence and grace that comes with a wall-mounted system, but are somehow limited by their physical space. Until now, clients were given options of an entry-level system on a portable aluminum frame (great for those in need of moving displays to various locations) or permanent wall-hung systems that are a build-out of a curved reinforced wall.

In the case of the recent installation at Auburn University (pictured top), the library staff elected to have a cabinet built because the wood-grained structure was more conducive to the architectural integrity of their beautiful library and the popular location they wanted it to be in.

Since 2012, the Liquid Galaxy immersive visual platform has been a primary focus for End Point. Since our first installation at the Smithsonian National Air and Space Museum, we have installed and supported many types of systems ranging from 3 to 48 screens. These systems have expanded across 20 countries and 6 different continents! We have supported many customized and innovative projects, including these:

Liquid Galaxy in a flat layout

Liquid Galaxy in a conference-room layout

Liquid Galaxy Liquid galaxy in a 2x7 cylinder layout

Liquid Galaxy in a traditional 1x7 cylinder layout

Whether portable and free-standing, permanent in-wall, or built within a beautiful cabinet, End Point has a full complement of options for meeting our clients’ installation, exhibiting, and business needs. The new cabinet offering can ease and accelerate your decision-making considerations by not having to renovate existing walls, or build new additions to a space.

Liquid Galaxy cabinet diagram

We are very happy with the success of our new cabinet offering and look forward to developing and installing more cabinets and Liquid Galaxies for our clients. Please do...


Google Drive for virtual machine images

By Jon Jensen
September 30, 2019

Pine Creek Pass, Teton Valley, Idaho

Recently we decommissioned an old database server. We wanted to keep a copy of its 53.7 GB virtual machine disk image in an archive in case there is ever any need to revive it. It is really unlikely that we will need it any time soon, or maybe ever, so we thought of putting it in one of the cloud storage services.

Cloud storage

Cloud service pricing is often metered by storage, network, operations, and other fees, making it complicated to calculate what you will pay. We already use Amazon S3, Azure Storage, and Google Cloud Storage and they are all no exception. For our example 53.7 GB disk image, the Google Cloud Storage Standard Storage pricing is currently:

  • No charge for network ingress when we upload it
  • About $1.08 to $1.40 USD per month to store the file in the US or EU
  • About $6.50 each time we download the file to most places in the world!

These days a ~50 GB disk image is on the small side, so you can imagine the cost going up rapidly with larger disk sizes.

Some cloud storage providers offer lower prices for slow-availability semi-offline storage, such as Amazon S3 Glacier or Google Coldline Storage. Those would indeed save us some money for monthly storage, but the most expensive aspect is the network egress cost, which is the same.

Local storage

External USB disk drives have gotten very inexpensive in recent years, so we considered just spending roughly $180 for a 6 TB hard disk and storing our disk image there. We can fit over 100 VM images of this size on such a disk, so the cost works out to a one-time cost of about $1.80 each.

But there are downsides to local storage, including:

  • It is a single point of failure. The disk can:
    • fail
    • be lost or stolen
    • be damaged by water, an impact such as someone dropping it or a horse kicking it 🐴😀, or a power surge or static electricity
    • be forgotten if the employee who has it leaves and nobody remembers to take it over.
  • The data would likely be inaccessible while the employee is out of the office.

sysadmin cloud storage

React: Style Tips

By Zed Jensen
September 28, 2019

Icon design
Photo by Harpal Singh on Unsplash

I’ve worked on a couple of large React projects over the last few years. In my experience, one of the trickiest parts of getting a React project up and running is figuring out how you want to visually style your application in the browser, so I’ll share in this post some of the ways I’ve styled my projects.

CSS Modules

Libraries like Material-UI (which I’ll discuss next) do a lot of the work of styling for you. However, sometimes you’ll still need to define styles unique to your project, and the most common way is with CSS.

For projects created with create-react-app, any CSS you include in a React project isn’t scoped. This means that if you define a class tall in one component that has a height of 40 pixels and a class tall in another component with a height of 80 pixels, one of your rules will overwrite the other—whichever makes it into the compiled CSS file last. However, Webpack allows you to use CSS modules, which restrict your CSS rules to components that explicitly import them. It took me a long time to figure out how to use them due to lack of relevant documentation, but eventually I discovered a very easy way to do it.

If your file structure looks like this:

- app/

It’s as simple as renaming your CSS file like this:

- app/

Using the suffix .module.css tells create-react-app that the rules within should be scoped only for where they’re imported. They can be used like other styles by importing and passing the classes like this:

import styles from './App.module.css';

export default function Component(props) {
  return <div className={styles.myClass} />;

Material-UI and similar libraries

There are many different design philosophies for web, but probably the most popular is Google’s Material Design. Material Design lays out some rules that help keep a user interface uncluttered, intuitive, and pleasant to use. However, jumping into the guidelines on Google...

javascript react css

Keeping our Windows Server clean

By Juan Pablo Ventoso
September 27, 2019

Keeping our Windows Server clean Photo by Shawn O’Neil, used under CC BY 2.0, cropped from original


I have been running websites and web applications under Windows Server for years, for both work and personal purposes. Most of them were small websites with a few daily visitors, but one particular case (a weather website I originally created as a hobby) grew over time to around one million page views per month.

The website is mostly ASP.NET, with some services and components written in PHP and Python, and uses MySQL for persistence (as well as a bunch of XML/PNG files to cache weather forecasts and weather imagery). As months passed by, I’ve discovered that the default IIS and Windows log files will grow drastically so, while checking its content periodically to detect issues and vulnerabilities, we need to take action to preserve free disk space and server performance.

Internet Information Services log files

In our IIS public folder (by default C:\inetpub) we will have a path logs\LogFiles. Inside that folder, the IIS service will create a set of folders, one per HTTP/FTP service that is running under our instance. How fast it will grow depends on many things, mainly traffic, but also website visibility and bad requests. But it will start to sooner or later consume our free disk space.

To prevent this, we can create a batch file that can be run on a daily basis from a scheduled task.

  • CleanIISLogs.bat
forfiles /D -10 /P "C:\inetpub\logs\LogFiles" /S /C "cmd /c del /f /q @path"

This script traverses through all files on the folder passed by parameter that are more than 10 days old, and for each file, it executes the del command in quiet mode. This script will search for all files within the folder and all subfolders that are more than 10 days old and delete them. After running the task, we should confirm that the used space was reduced:

Folder properties after cleanup

HTTP Error logs

There is another location where different operating system logs are stored: C:\Windows\System32\LogFiles. And when we...

windows iis logging sysadmin

OpenITI Starts Arabic-script OCR Catalyst Project

By Elizabeth Garrett Christensen
September 10, 2019

Decorative Arabic calligraphy Photo by Free Quran Pictures 4K, cropped, CC BY 2.0

Congratulations to the Open Islamicate Texts Initiative (OpenITI) on their new project the Arabic-script OCR Catalyst Project (AOCP)! This project received funding from the The Andrew W. Mellon Foundation this summer.

End Point developer Kamil Ciemniewski will be serving the project as a Technology Integration Specialist. Kamil has been involved with OpenITI since 2018 and with the affiliated project, Corpus Builder, since 2017.

Corpus Builder project version 1.0 made collaborative effort possible in producing ground truth datasets for OCR models training. The application acts as a versioned database of text transcriptions and a full OCR pipeline itself. The versioned character of the database follows closely the model used by Git.

What is remarkable about it is that it brings the ability to work on revisions of documents whose character isn’t linear as text in the Git case. For the OCR problem, one needs both textual data but also the spatial: where exactly the text is to be found.

A sophisticated mechanism of applying updates to those documents minimizes (with mathematical guarantees) the chance of introducing merge conflicts.

The project also hosts a great-looking UI interface allowing non-technical editors to work within the workflow of this versioned data.

CorpusBuilder works with both Tesseract and Kraken as its OCR backends and is capable of exporting datasets in their respective formats for further model training / retraining. Training of Tesseract models was covered last year in a blog post by Kamil.

AOCP will rapidly expand prior work and will help establish a digital pipeline for digitizing texts and creating a set of tools for students and scholars of historic texts.

End Point is really excited to be a part of such a cool integration of technology and the humanities!

Read more at:

clients machine-learning natural-language-processing

Campendium: A Responsive, Fancy Detail Page

By Steph Skardal
September 9, 2019


This week, I was very excited to deploy a project for Campendium, one of our long-time clients. As noted in my recent post on Campendium updates for the year, Campendium has thousands of listings of places to camp and provides a great infrastructure for the development of a rich community of travelers around North America.

For the past few months, I’ve been working on a significant update to Campendium’s campground detail page, the page template where in-depth information is provided for each of Campendium’s locations. This is equivalent to a product detail page on an ecommerce site.

The “guts” of the update included a new detail page design with expanded responsiveness, the introduction of 360° videos, and expanded user driven content in the form of Question & Answer (Q&A or QnA), reviews, notes, nightly rates, etc. Read on to find out more and see video examples of several of the features!

User Interface & Responsiveness Updates

One of the things the Campendium team and I are most proud of here is the responsiveness of the new design. In the case of traveling and camping, responsiveness is important since a large amount of traffic comes from mobile devices, relative to what you might see in other industries.

User images are shown as “hero images” and the user interface updates depending on the browser device and width, as shown in the following videos for Gilbert Ray Campground and Cayuga Lake State Park.

A preview of responsive behavior on the campground detail page with user submitted photos.

A second preview of responsive behavior on the campground detail page with embedded maps.

Another updated design usability tweak was a sticky navigation bar to navigation throughout the page, which can get especially long with user submitted content. See how the “Overview”, “Video”, etc. links become sticky as you scroll down on the page, and the current region coming into view of the page is underlined:

Navigation becomes fixed to the top of the browser as a user...

rails solr sunspot react maps javascript user-interface ruby clients

National Braille Press Releases Redesigned Website

By Elizabeth Garrett Christensen
August 28, 2019

Image 0

End Point congratulates National Braille Press on the recent release of their redesigned website, launched earlier this week! National Braille Press (NBP) supports the blind and low-vision community with events, initiatives, resources, children’s programs, and a bookstore. NBP has been working with End Point since 2002 and hosts and maintains their website, which is based on the Interchange open-source ecommerce platform.

Project Phases

End Point started working with NBP on this redesign project in late 2017. We began with a user experience (UX) review & content strategy project which resulted in design directives for our in-house team. Design and plans were completed in mid-2018 and implementation began then. End Point built a new, more powerful search feature and developed a number of ‘cornerstone’ pages while NBP staff worked tirelessly in-house to convert the rest of the pages on their website to the new designs.

Image 1

Leveraging NBP In-House Resources

NBP’s wide reach in their community and long history means their website has hundreds of content pages. This can be costly to convert, and for some non-profits, can make a redesign project cost-prohibitive. End Point engineers Greg Davidson and Marco Pessotto worked alongside NBP staff helping them learn the Bootstrap web development toolkit and the steps they needed to take to integrate each page into the new designs. Using these in-house resources dramatically reduced the overall project cost while allowing the content to be converted carefully by hand with accuracy and care.

WCAG 2.0, AA Standard

NBP’s user base is heavily centered in the low-vision community, so compliance with user accessibility standards was a main focus of the redesign effort. End Point worked with NBP to make sure all of the engineers on the project were trained in the Web Content Accessibility Guidelines (WCAG 2.0) AA standards and guidelines. Testing for compliance was done with AXE and WAVE Chrome accessibility plugins. NBP also...

clients design
Page 1 of 182 • Next page

Popular Tags


Search our blog