• 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

    Linux desktop Postfix queue for Gmail SMTP

    Jon Jensen

    By Jon Jensen
    April 30, 2019

    Winter view of snow, river, trees, mountains, clouds at Flagg Ranch, Rockefeller Parkway, Wyoming

    On a Linux desktop, I want to start sending email through Gmail in a G Suite account using SMTP, rather than a self-hosted SMTP server. Since Gmail supports SMTP, that should be easy enough.

    Google’s article Send email from a printer, scanner, or app gives an overview of several options. I’ll choose the “Gmail SMTP server” track, which seems designed for individual user cases like this.

    However, since I am using two-factor authentication (2FA) on this Google account — as we should all be doing now for all accounts wherever possible! — my Gmail login won’t work for SMTP because the clients I am using don’t have a way to supply the 2FA time-based token.

    Google’s solution to this is to have me generate a separate “App Password” that can sidestep 2FA for this limited purpose: Set up an App Password.

    That works fine, but the app password is a randomly-generated 16-letter password that is not amenable to being memorized. For security reasons, my mail client doesn’t cache passwords between sessions, so I have to look it up and enter it each time I start the mail client. That’s generally only once per day for me, so it’s not a big problem, but it would be nice to avoid.

    I also want other …


    sysadmin email linux

    Job opening: Linux system administration and DevOps remote engineer

    Jon Jensen

    By Jon Jensen
    April 18, 2019

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

    computer monitors behind silhouetted head
    Photo by Kevin Horvat on Unsplash

    We are looking for a full-​time, salaried engineer to work during business hours in UTC-10 to UTC-6 (somewhere between Hawaii Time and Mountain Time) in the fun space where operations and development overlap!

    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 development and hosting clients ranging from small family businesses to large corporations.

    What you will be doing:

    • Remotely set up and maintain Linux servers (mostly RHEL/​CentOS, Debian, and Ubuntu), with custom web applications
    • Audit and improve security, backups, reliability, monitoring
    • Support developer use of major language ecosystems
    • Automate provisioning with Terraform, Ansible, Chef, Puppet, etc.
    • Troubleshoot problems with performance, automation, security
    • Use open source tools and contribute back as opportunity arises
    • Use your desktop OS of choice: Linux, macOS, Windows

    What you bring:

    Professional experience with Linux system administration and web application …


    jobs-closed devops remote-work

    How to set up your Ruby on Rails development environment in Windows 10 Pro with Visual Studio Code and Windows Subsystem for Linux

    Kevin Campusano

    By Kevin Campusano
    April 4, 2019

    Banner

    There’s one truth that I quickly discovered as I went into my first real foray into Ruby and Rails development: Working with Rails in Windows sucks.

    In my experience, there are two main roadblocks when trying to do this. First: RubyInstaller, the most mainstream method for getting Ruby on Windows, is not available for every version of the interpreter. Second: I’ve run into issues while compiling native extensions for certain gems. One of these gems is, surprisingly, sqlite3, a gem that’s needed to even complete the official Getting Started tutorial over on guides.rubyonrails.org.

    In this post, I’m going to be talking about how to avoid these pitfalls by setting up your development environment using the Windows Subsystem for Linux on Windows 10 Pro. You can jump to the summary at the bottom of the article to get a quick idea of what we’re going to do over the next few minutes.

    Anyway, I’ve since learned that the vast majority of the Ruby and Rails community uses either macOS or some flavor of Linux as their operating system of choice.

    Great, but what is a Windows guy like me to do under these circumstances? Well, there are a few options. Assuming they would like/​need to keep using …


    ruby rails windows vscode

    Eliminating Resolvers in GraphQL Ruby

    Patrick Lewis

    By Patrick Lewis
    March 29, 2019

    GraphQL Ruby code

    In this follow-up to my post from last month about Converting GraphQL Ruby Resolvers to the Class-based API I’m going to show how I took the advice of the GraphQL gem’s documentation on Resolvers and started replacing the GraphQL-specific Resolver classes with plain old Ruby classes to facilitate easier testing and code reuse.

    The current documentation for the GraphQL::Schema::Resolver class essentially recommends that it not be used, except for cases with specific requirements as detailed in the documentation.

    Do you really need a Resolver? Putting logic in a Resolver has some downsides:

    Since it’s coupled to GraphQL, it’s harder to test than a plain ol’ Ruby object in your app Since the base class comes from GraphQL-Ruby, it’s subject to upstream changes which may require updates in your code

    Here are a few alternatives to consider:

    • Put display logic (sorting, filtering, etc.) into a plain ol’ Ruby class in your app, and test that class
    • Hook up that object with a method

    I found that I was indeed having trouble testing my Resolvers that inherited from GraphQL::Schema::Resolver due to the GraphQL-specific overhead and context that they contained. Fortunately, it …


    ruby graphql api

    Thoughts on Project Estimation: The Star, the Planet, and the Habitable Zone

    Árpád Lajos

    By Árpád Lajos
    March 25, 2019

    planet in orbitPhoto by ESO on Flickr · CC BY 2.0

    Whenever we are working on a feature, planning a milestone or a project, there is always a discussion about the cost and time needed. In most cases there are three main parties involved: the client, the manager, and the programmer(s). Let’s use the analogy of a star system, where the client is the star everything orbits around, the project is the planet, and the programmers are the biosphere. The closer we are to the star, the closer we are to the exact requests of the client.

    Everything orbits around the star (the client), whose activity produces the energy, ensuring that there is any planet at all. If the planet (the project) is too close to the star, it will burn out quickly and evaporate. But if the planet is too far away, the relationship between the star and the planet, or the client and the project (from our perspective) will freeze out. There is a so-​called habitable zone, where the planet, or the project can benefit of the energy of the star.

    First the habitable zone should be found. This is a concept of the project which is close enough to the client’s desires, but still achievable, so biosphere can coexist with the star system, shaping …


    tips project-management

    Switching from Google Maps to Leaflet

    Juan Pablo Ventoso

    By Juan Pablo Ventoso
    March 23, 2019

    Leaflet Weather map example
    Photo: RadSat HD

    It’s no news for anyone who has Google Maps running on their websites that Google started charging for using their API. We saw it coming when, back in 2016, they started requiring a key to add a map using their JavaScript API. And on June 11, 2018, they did a major upgrade to their API and billing system.

    The consequence? Any website with more than 25,000 page loads per day will have to pay. And if you are using a dynamic map (a map with custom styling and/or content) you only have roughly 28,000 free monthly page loads. We must create a billing account, even if we have a small website with a couple of daily visitors, hand credit card information to Google, and monitor our stats to make sure we won’t be charged. And if we don’t do that, our map will be dark and will have a “For development only” message in the background.

    So what are your options? You can either pay or completely remove Google Maps from your websites. Even enterprise weather websites like The Weather Channel or Weather Underground have now replaced their Google Maps API calls with an alternative like Leaflet or MapBox (in some cases, they even gained some functionality in the process).

    I have a …


    leaflet open-source gis maps api

    Running Magento 2 in Windows with XAMPP

    Juan Pablo Ventoso

    By Juan Pablo Ventoso
    March 22, 2019

    Ecommerce
    Photo by Nicole De Khors · Burst, Some Rights Reserved

    Magento is an open source ecommerce platform, written in PHP and relying on MySQL/​MariaDB for persistence. According to BuiltWith, Magento is the third most used platform in ecommerce websites. It began its life in 2008 with its first general release, and a major update (Magento 2) was released in 2015.

    And now, more than three years after, Magento 1 is slowly dying: There won’t be any more quality fixes or security updates from June 2020, and there won’t be extended support for fixes or new payment methods. So the obvious choice will be Magento 2 from now on.

    But is it fully tested yet? Is it stable enough? If we already have a website running with Magento 1, what should we do? Migrating to Magento 2 is not just hitting an “Update” button: Themes are incompatible, most extensions won’t work, and of course, there’s a big set of changes to get familiar with.

    So a good approach might be to get a clean Magento 2 version deployed locally, to look what we need to do to get our website updated and running, test the backend, find where the configuration sections are located, and so on. And many business users, and even some …


    magento ecommerce mysql windows php

    Extensible Binary Encoding with CBOR

    Matt Vollrath

    By Matt Vollrath
    March 18, 2019

    illustration of man converting something in a machine

    CBOR is a relatively new IETF draft standard extensible binary data format. Compared to similar formats like MessagePack and BSON, CBOR was developed from the ground up with clear goals:

    1. unambiguous encoding of most common data formats from Internet standards
    2. code compactness for encoder and decoder
    3. no schema description needed
    4. reasonably compact serialization
    5. applicability to constrained and unconstrained applications
    6. good JSON conversion
    7. extensibility

    RFC 7049 Appendix E, Copyright © 2013 IETF Trust, Bormann & Hoffman

    In the context of data storage and messaging, most developers can relate to CBOR as a binary drop-in replacement for JSON. While CBOR doesn’t share the human readability of JSON, it can efficiently and unambiguously encode types of data that JSON struggles with. CBOR can also be extended with tags to optimize serialization beyond its standard primitives.

    Encoding Binary Data

    JSON is a ubiquitous data format for web and beyond, for many good reasons, but encoding blobs of binary data is an area where JSON falters. For example, if you are designing a JSON protocol to wrap the storage or transfer of arbitrary objects, your options are:

    • Require that all input …

    performance optimization browsers scalability nodejs benchmarks
    Previous page • Page 39 of 217 • Next page