• Home

  • Custom Ecommerce
  • Application Development
  • Database Consulting
  • Cloud Hosting
  • Systems Integration
  • Legacy Business Systems
  • Security & Compliance
  • GIS

  • Expertise

  • About Us
  • Our Team
  • Clients
  • Blog
  • Careers

  • VisionPort

  • Contact
  • Our Blog

    Ongoing observations by End Point Dev people

    Lock down your security with GPG on a YubiKey

    Ardyn Majere

    By Ardyn Majere
    September 10, 2021

    Photo by Mauro Sbicego on Unsplash

    Gnu Privacy Guard (GnuPG or GPG) is a tool we use a lot at End Point. Its ubiquity and quite decent security is a perfect fit for us — and there’s a way to make it even safer.

    GPG uses the OpenPGP standard to encrypt files. Normally, one creates a PGP key on their computer and just keeps the keyfile safe. A password is generally used, but as with any private key, it’s only as safe as the computer it’s on.

    Got a YubiKey and not sure what to do with it? Want to get a little more secure with your encryption?

    In case you haven’t heard of them, YubiKeys are hardware USB keys that can be used as a multi-factor authentication (MFA) token, or to fill in one-time password (OTP) fields (like those generated by Google Authenticator) on sites that don’t support the YubiKey directly as an MFA token.

    Using a smart card like a YubiKey can increase GPG’s security, especially if the key is generated on an air-gapped machine. This way the keyfile is stored in the hardware security token, and is never exposed to the internet.

    In addition, you can even store an SSH key on the card, which will enable you to log in to remote Linux …


    security ssh

    Video Conference Integration

    Alejandro Ramon

    By Alejandro Ramon
    September 3, 2021

    Liquid Galaxy being displayed in a Zoom call

    End Point’s Immersive and Geospatial Division is proud to announce the rollout of our new Video Conference Integration as an extension to the Liquid Galaxy platform’s capabilities.

    Video Conference Integration allows a user to join Zoom calls or host meetings with a native, software-level view of the Liquid Galaxy. The necessary hardware and software configuration can be added to existing installations or included in a solution provided by our sales team.

    Functionally, this allows users to remotely share and view the Liquid Galaxy through a high-definition live stream, giving end users the capability to test content remotely or join in on presentations from other offices. Furthermore, the participant view can be shared to the main display wall or to an integrated side screen so that presenters or members in the Liquid Galaxy room can see and interact with others in the meeting.

    Our integration currently supports Zoom. We plan to support Google Meet, Microsoft Teams, and Cisco Webex in the future.

    A Liquid Galaxy screenshot

    Why we created this

    The need for flexibility due to the COVID-19 pandemic raised the question of how users could present to clients who were unable to travel or be present in-person. We …


    visionport

    Converting to Hugo

    Seth Jensen

    By Seth Jensen
    August 23, 2021

    A view of Manhattan from the Empire State Building

    We recently converted the End Point website from Middleman to Hugo. I’ll go into more detail shortly, but the general result has been much better build times with less configuration and better support for local development.

    Background

    In 2017 we converted this website from a Ruby on Rails app to a static site. With tons of high-quality static site generator options, we could implement the shiny features used by our Rails site in 2009 with less overhead and quicker load times.

    We also wanted to move away from Blogger to self-hosting our blog, using GitHub issues for comments. We ended up switching to Middleman, a static site generator written in Ruby, and had a mostly positive experience. Ruby was a good fit switching from Rails, and (if I remember correctly) Middleman had pretty competitive performance.

    With over 1000 blog posts at the time, as well as lots of other pages, our site was quite slow to build—3.5 minutes when building with the full blog.

    Middleman had a nice development server, but due to some server-side rewrites, we couldn’t use it. Instead, we got around the build times by writing a simple Ruby script to generate an HTML preview, letting our blog authors see …


    company design html static-site-generator

    Full-text search on a budget: Xapian

    Marco Pessotto

    By Marco Pessotto
    August 19, 2021

    Mounted telescope monocular pointing through a wire fence

    Over the years I’ve seen and implemented different full-text search applications using various technologies: plain SQL, PostgreSQL, Elasticsearch, Solr, and most recently Xapian.

    While Solr and Elasticsearch are very well known, Xapian, despite the fact that it’s available and packaged in all the major GNU/Linux distributions, doesn’t seem to be so popular, at least not among project managers.

    But Xapian is fast, advanced, can be configured to do faceted searches (so the user can filter the search results), and my favorite, is fast to build and has virtually no maintenance overhead.

    Its main feature is that it’s not a stand-alone application, like Solr or Elasticsearch, but instead it’s a library written in C++ which has bindings for all the major languages (as advertised on its homepage). It has also great documentation.

    Now, being in the e-commerce business, my typical use-case is that the client’s shop needs something faster and better than a search using a SQL query against the products table. And beware, even implementing a non-trivial SQL-based search can burn more hours than setting up Xapian.

    With Xapian you can prototype very quickly, without losing hours wading through …


    database search perl

    Liquid Galaxy at Kansas State University

    Ben Witten

    By Ben Witten
    August 18, 2021

    KSU’s new Liquid Galaxy

    End Point recently installed a Liquid Galaxy system in Kansas State University’s Sunderland Foundation Innovation Lab! The seven-screen Liquid Galaxy will provide students with engaging, immersive, and user-friendly educational experiences. It will be a great asset to the Innovation Lab, enhancing a collaboration space used for meetings, webinars, presentations, and seminars. The Liquid Galaxy enables data visualization, map viewing via Google Earth, GIS, and more.

    During the installation, End Pointer Josh Harless had the opportunity to work very closely with K-State’s team to ensure the system met their expectations and vision, such as by adjusting the screen angles multiple times to perfect viewing positions.

    K-State experienced a terrible fire at Hale Library in 2018. Liquid Galaxy fit into their plans as they rebuilt in the aftermath. In an interview with Dr. Sheila Yeh about her role in reinventing K-State’s library, Dr. Yeh commented that “Information technology has been the catalyst for much of the transformation we find in today’s academic libraries.” She added that digital and information technologies such as the Liquid Galaxy are “enablers” that offer “new opportunities …


    education visionport clients

    Building REST APIs with .NET 5, ASP.NET Core, and PostgreSQL

    Kevin Campusano

    By Kevin Campusano
    July 9, 2021

    A market at night Photo by Sam Beasley

    This is old news by now, but I’m still amazed by the fact that nowadays .NET is open source and can run on Linux. I truly believe that this new direction can help the technology realize its true potential, since it’s no longer shackled to Windows-based environments. I’ve personally been outside the .NET game for a good while, but with the milestone release that is .NET 5, I think now is a great time to dive back in.

    So I thought of taking some time to do just that, really dive in, see what’s new, and get a sense of the general developer experience that the current incarnation of .NET offers. So in this blog post, I’m going to chronicle my experience developing a simple but complete REST API application. Along the way, I’ll touch on the most common problems that one runs into when developing such applications and how they are solved in the .NET world. So think of this piece as a sort of tutorial or overview of the most common framework features when it comes to developing REST APIs.

    There’s a table of contents at the bottom.

    First, let’s get familiar with what we’re building.

    What we’re building

    The demo application

    You can find the finished product on my …


    dotnet aspdotnet csharp rest api postgres docker containers

    Appium: Automated Mobile Testing

    Couragyn Chretien

    By Couragyn Chretien
    June 30, 2021

    Clouds and a river

    First impressions are everything. You can have the best, most robust application in the world, but if it looks like it’s from 2004 most users won’t give it a second look. Automated testing can help ensure that the app the user sees is consistent and fully functional no matter the iteration.

    Selenium, Cypress, and other automated testing suites have become more and more popular for webapps. This trend has not carried over to mobile native app testing. This may be a bit surprising, as a fully functional frontend can be the difference between a professional-feeling app and a hacky one.

    There are many frameworks that can be used to test mobile applications (Appium, UI Automator, Robotium, XCUITest, SeeTest, and TestComplete to name a few), but today we’ll be focusing on Appium.

    Appium is an open source framework that’s easy to use out of the box. It can be used to test many versions of many different mobile OSes. It’s a one-stop shop to ensure your users are on the same page, no matter the platform.

    Installation and setup for Linux

    General

    We will be testing the To-Do List app from the Google Play Store. What we’re testing and for which platform isn’t important, since we’re here to …


    automation testing android mobile

    Catching CSS Regressions and Visual Bugs in Continuous Integration

    Afif Sohaili

    By Afif Sohaili
    June 24, 2021

    Blue patterns Photo by Alexandra Nicolae

    Many web projects nowadays are equipped to simulate real users and automatically test a real use case, but these end-to-end tests still have a weakness. Browser automation tools run tests by performing the interactions and assertions in the context of the DOM of the pages. That is very different from how humans use web applications, which is by looking at the user interface. Due to this, the tests’ definition of a “functional web app” differs from that of a real human.

    For example, let’s take a simple music player with two buttons:

    1. One in green with a play icon, and
    2. One in red with a stop icon.

    The HTML would look something like this:

    <!-- music player -->
    <button class="button is-red"><i class="icon icon-stop"/></button>
    <button class="button is-green"><i class="icon icon-play"/></button>
    

    In our end-to-end tests, one would typically instruct the test to check:

    1. If the expected classnames exist.
    2. If clicking the stop button stops the music.
    3. If clicking the play button plays the music.

    If all of the above conditions were met, then the app is considered “functional”. However, the …


    automation user-interface testing css
    Previous page • Page 24 of 218 • Next page