• 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

    Cesium Labels

    Dmitry Kiselev

    By Dmitry Kiselev
    May 24, 2023

    A 16th-century topographical map of ancient Rome. Buildings are drawn in simple, clear, engraved lines. Streets and important structures like the Pantheon are labeled in Latin.

    Improving place labels in CesiumJS, the open source JavaScript library for 3D globes and maps, has been a longstanding request from some of our VisionPort clients. The display of labels embedded in imagery has not been up to their expectations. The names look upside down as the globe is rotated and there’s no option to change the language:

    The old Cesium labels. The 3D camera is rotated so that the labels reading “New York”, “Kips Bay”, etc., are at a 90 degree angle, making it difficult to read.

    Cesium has vector labels which allow you to anchor some text to a point on a map which will always be aligned with the camera. However, there is no ready-to-use solution to display city names in particular and no way to load them according to a specific zoom level.

    To improve performance when displaying labels in Cesium it would make sense to load labels as a tile tree and only show some of the top of the tree at different zoom levels in a manner similar to how KML Regions with NetworkLinks work. Unfortunately, although Cesium supports KML, it doesn’t support KML Regions and NetworkLinks updates on Region change.

    Another off-the-shelf solution that might conceivably work would be to use Cesium 3D tiles, but unfortunately, tiles do not support 2D Billboards.

    Calculating regions and their level of detail is complicated, but Cesium already …


    visionport cesium gis open-source

    eCR Coordinator job opening

    Shannon Sandall

    By Shannon Sandall
    May 23, 2023

    This position has been filled. See our active job listings here.

    Person on boulder overlooking valley with lake

    We are seeking a full-time Electronic Case Reporting (eCR) Coordinator to provide high-level expertise in the validation and automation of eCR messages.

    This position is responsible for establishing complete, up-to-date, timely, and automated reporting of individual-level data, and automation of incoming EHR data. Position is remote, in the United States only.

    The person in this role will be responsible for coordinating and overseeing the eCR onboarding process for our clients. Additionally, the person will become our subject matter expert for the NNDSS Modernization Initiative (NMI) and how systems in place within EpiTrax can be configured to report through the NMI module.

    Job responsibilities

    1. eCR onboarding—40%

      • Assist the on-boarding team with eCR reporters.
      • Develop Structure, Dictionary, LOINC and SNOMED codes in EMSA.
      • Assist in eCR message structure approval.
      • Assist with EMSA management.
    2. Troubleshooting—30%

      • Issues found by the program epis and the LHDs.
      • Issues found by the surveillance team.
      • Create trouble tickets for issues.
    3. Testing—15%

      • Test the structure for incoming messages.
      • Test new enhancement functionality.
      • Test bug fixes.
    4. Grant document development—5% …


    jobs-closed remote-work casepointer epitrax

    How to use the Caps Lock key as an Escape key on Windows, macOS, and Linux

    Trevor Slocum

    By Trevor Slocum
    April 17, 2023

    At sunset, the sky is a dark, fading orange above mountains which seen through layers of haze, making them appear blue. In the foreground, a lake with a large outcropping of land reflects the sky and mountains. At the bottom of the image much darker land is broken by a path of water travelling into the lake, reflecting orange, positioned directly into the center of the frame.

    On most keyboards, the Escape key is distant from the most common keys. In order to reach it, you likely need to lift your hand from the keyboard. This interrupts the flow of typing and, over time, may cause repetitive strain injuries.

    When using modal applications which require frequent use of the Escape key, such as the text editor Vim, shortening the distance your fingers travel to and from the Escape key helps prevent injury and saves time.

    After following the instructions below, you may need to restart your system in order to finish applying the changes.

    Windows instructions

    Download and install PowerToys, a set of utilities created by Microsoft.

    Open PowerToys and browse to the Keyboard Manager. Enable the Keyboard Manager and click Remap a key. Choose Caps Lock -> Escape.

    Note that this fix requires PowerToys to be running.

    macOS instructions

    Go to Apple menu -> System preferences -> Keyboard. If you have multiple keyboards, make sure your active keyboard is selected.

    Click on the Modifier keys button to open a popup dialog. Open the dropdown next to Caps Lock and select Escape.

    Linux instructions

    There are separate instructions for Linux depending on whether you …


    tips

    SSH host key verification: a few useful tips

    Selvakumar Arumugam

    By Selvakumar Arumugam
    April 13, 2023

    A close shot of a large golden key sitting on top of a wooden fence. There is green grass visible behind the fence, on the left and right upper sides of the image.

    The SSH connections between a client and a remote server begin with a host key verification as an initial handshake. If the default key algorithm is not supported between the client and server, the SSH connection attempt is closed with no matching host key type response.

    $ sftp username@domain
    Unable to negotiate with xx.xx.xx.xx port 22: no matching host key type found. Their offer: ssh-rsa
    Connection closed.
    Connection closed
    

    In this article, we will explore the host key verification process and discuss ways to handle the non-matching host key issue to establish the connection.

    Host keys

    By default, OpenSSH automatically generates a public-private key pair on the server and stores it in /etc/ssh. These keys, known as host keys, are created using several encryption algorithms including RSA, DSA, ECDSA, and ed25519.

    The pair of private and public keys is available on the host server at the path /etc/ssh.

    $ ls /etc/ssh | grep key
    ssh_host_dsa_key
    ssh_host_dsa_key.pub
    ssh_host_ecdsa_key
    ssh_host_ecdsa_key.pub
    ssh_host_ed25519_key
    ssh_host_ed25519_key.pub
    ssh_host_rsa_key
    ssh_host_rsa_key.pub
    

    How does OpenSSH decide which host key to use?

    During SSH connection establishment, the …


    ssh authentication sysadmin

    How To Set Up pgTAP for Writing PostgreSQL Database Unit Tests

    Edgar Mlowe

    By Edgar Mlowe
    April 12, 2023

    A steep, green mountain slope divides the image with a steep diagonal downwards and to the right, reaching the bottom of the frame two thirds of the way to the right edge of the image. A small, red-roofed Georgian church sits on it. Another hill sinks down and to the left, creating an apex at the bottom. In the background, framed by these asymmetrical diagonals, is a tall, rocky ridgeline lined with snow anywhere the rocks aren’t too steep to hold it.

    In a previous blog post, my colleague Josh Tolley introduced the concept of using pgTAP, a set of Postgres functions designed for writing unit tests within the database. This post will serve as a supplement to Josh’s post, focusing on the process of setting up pgTAP for testing a Postgres database.

    Installing & setting up pgTAP

    Note: make sure you have Postgres installed on your system. If you don’t have it, you can follow the Postgres documentation to learn how to install it.

    To install pgTAP for Postgres, you will need to follow these steps:

    1. Download the pgTAP source code from its GitHub repository.

      git clone https://github.com/pgtap/pgtap.git
      
    2. Navigate to the pgtap directory.

      cd pgtap
      
    3. Install with make.

      make && make install
      
    4. Finally, connect to your Postgres database using psql or any other Postgres client and run the following SQL command to create the pgTAP extension.

      CREATE EXTENSION pgtap;
      

    Now you should have pgTAP installed and ready to use in your Postgres database. If you face issues with installation, visit the pgTAP documentation for further help.

    Writing simple database tests with pgTAP

    Test to check if a table exists:

    SELECT plan(1); …

    postgres sql database testing casepointer epitrax

    Tennessee Hackathon 2023

    Darius Clynes

    By Darius Clynes
    March 30, 2023

    EPTN main room. Several development VisionPort systems are mounted on the back wall. Four End Pointers are seen sitting at a variety of desks and workstations.

    We just had our first company gathering in our Tennessee office after a hiatus of several years. About 20 End Pointers came to our Johnson City, Tennessee office to work on various VisionPort projects. For several of us, it also provided an opportunity to meet each other in person for the first time.

    End Point Tennessee office (EPTN)

    Other than our Johnson City-based team, for many of us this was our first look at our Tennessee office from which the VisionPort systems are assembled, tested and shipped.

    Our Content Management System (CMS) team worked on some exciting updates to our VisionPort CMS, including important modifications to our touchscreen systems and improvements to the user interface.

    Meanwhile our Research & Development team worked on upgrades to the VisionPort system itself, focusing on integrating large and small touchscreens for multimedia presentations. One such improvement was support for 8 tabletop touchscreens integrated to serve 16 museum visitors simultaneously.

    EPTN main room. Closer image of the left side of the room. Three End Pointers sit side-by side, working on computers. Two of them are checking each others’ work on a laptop.

    Our support team worked on testing and spinning up documentation to bring our inventory up to date and prepare for the next wave of our new VisionPort CMS installations.

    EPTN main room. A wider shot. Six End Pointers are hacking away at their workstations.

    Casablanca

    The luxurious …


    visionport company conference remote-work travel

    Identifying Vulnerabilities in Code Using Horusec

    Indra Pranesh Palanisamy

    By Indra Pranesh Palanisamy
    March 28, 2023

    The sun has just started to rise over the horizon. A group of fishermen can be seen pushing their small wooden boats into the water, preparing to start their day’s work. The air is still cool and quiet, with only the sound of waves gently lapping against the shore as the fishermen row out into the open sea, ready to begin their early morning fishing expedition.

    Horusec is an open source tool which, by orchestrating other security tools, identifies security flaws and vulnerabilities in source code. It puts all the possible vulnerabilities it finds into a database for analysis.

    Currently, Horusec supports C#, Java, Kotlin, Python, Ruby, Go, JavaScript, TypeScript, PHP, Swift, C, Dart, Elixir, shell, Terraform, Kubernetes, nginx, HTML, and JSON. You can see an up-to-date list of supported languages in Horusec’s docs.

    It can also be integrated with CI/CD to execute the scan every time a developer creates a pull request or merge request.

    Horusec CLI Installation

    Requirements: Docker, Git.

    The easiest installation method listed in the docs is curling Horusec’s install script and piping it into bash:

    curl -fsSL https://raw.githubusercontent.com/ZupIT/horusec/main/deployments/scripts/install.sh | bash -s latest
    

    Be aware that there is risk to piping unseen commands into the shell like this: It can lead to unintended consequences and it is a bad security practice.

    If a user blindly pipes the output of a website response to be run by a shell without fully understanding what each command does, they may inadvertently execute malicious …


    security casepointer epitrax

    Interchange 3rd Party Tax Support

    Mark Johnson

    By Mark Johnson
    March 21, 2023

    Looking across a lake, a mountain rises to the left, splitting the dark storm clouds from their reflection with a long, thin triangle of the mountain and its reflection. On the lower side of the hill is a small town, with its light green fields standing out against the otherwise unbroken dark green pine trees. The lake’s wind-blown ripply texture is broken up on the far right by a rock and grass outcropping, along with a railing on the right side.

    New 3rd-party tax API support has been added to core Interchange1.

    In the wake of the Wayfair court decision2, many businesses running Interchange catalogs lack the necessary tools for full compliance. A new translation layer has been created in Vend::Tax to connect the standard sales tax structures and routines that operate within Interchange, and the development of vendor-specific 3rd-party tax providers. The goal of the Vend::Tax framework is to create a space to allow for development of any number of vendor-specific tax services to support tax calculation in Interchange.

    Vend::Tax defines 3 new tags to support its function:

    • [tax-lookup]: Returns calculated tax amount determined by specific 3rd-party provider. Tax may be estimated or live lookup, depending on settings. Data required to calculate tax will be provider dependent.
    • [load-tax-averages]: Requests and stores tax averages for running in estimate mode, for providers that support it. Stores estimates by default in the tax_averages table. Further, allows for local tracking of jurisdictions with nexus, which can be used by live lookups to determine if a particular lookup can be skipped entirely. See load_tax_averages Job …

    ecommerce payments interchange
    Previous page • Page 8 of 217 • Next page