• 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
  • Reflections on Being a Co-working Couple

    Elizabeth Garrett Christensen

    By Elizabeth Garrett Christensen
    November 15, 2016

    Over Labor Day weekend I married another End Point employee, David Christensen. I thought I’d take a minute to reflect on life as a co-working couple. In the days before everyone worked in a mad scramble to pay off their student loans, save for their kids’ college, and save for retirement, lots of couples shared in the responsibilities of owning a business or farm. Today for most families those days are long gone and each spouse goes off to a long day at the office to meet back at home in the evening.

    David and I are really fortunate to work at End Point and work remotely from our home in Lawrence, Kansas. David is a veteran at End Point starting as an application developer a decade ago and now is a project manager and heads up many of End Point’s larger sales, database, and VR projects. I am brand-new to End Point and serve as the Client Liaison doing billing, client support, sales, and project management.

    Our home office in Lawrence

    What I love

    Being together all the time

    Like any newlywed, I cannot get enough of this guy. He’s easy to talk to, fun to be around, and pretty much makes everything better. But enough of that sappiness…

    Getting some real insight on …


    company remote-work

    8 Simple Steps to Saner Software Development

    Dylan Wooters

    By Dylan Wooters
    November 10, 2016

    While these might seem obvious for seasoned developers, many projects, especially legacy software, still fail to follow most of the steps below.

    In future posts, I’ll expand on these steps and give more details. For now, here’s an overview of some basic guidelines for making the process of software development smoother (& saner) for both the client and the dev team.

    Separate environments:

    Ideally there should be Dev, QA, UAT/Staging, and Production environments. And, UAT/Staging should be as close to Production as possible. It’s amazing how many software projects are still done on someone’s local machine and pushed directly to Production.

    Use a bug tracking tool:

    This is pretty obvious. Bugs need to be logged and labeled so that they can be tracked through stages of development (i.e., To-Do, In Progress, Completed). Using a bug tracking tool like Jira or GitHub also helps the non-technical stakeholders comment on and clarify requirements/issues.

    Have a source control strategy:

    It doesn’t have to be fancy. For example, if you’re using Git, it should be more than having multiple developers working out of the master branch. Ideally link branches to features or bugs defined in a …


    development environment devops

    The Happy Path: An Interview with Design Strategist & Gallerist Kelani Nichole

    Liz Flyntz

    By Liz Flyntz
    November 9, 2016

    Kelani Nichole is a digital strategist who is also a contemporary art gallerist. Or maybe vice versa.

    She works with the Theresa Neil Strategy + Design agency, doing user-centered design research for (mostly) big products at big companies. Her gallery, Transfer, presents internet and computer-based artworks in its Brooklyn, NY location and as pop-up installations around the country and the world.

    We spoke about design methodology, client engagement, and salad at El Rey in Manhattan. We got right into it, so don’t expect much prelude.

    Kelani Nichole: Existing designs are often based on legacy, opinions, and politics. The methodology I use is all about collaborative design. It’s part of the engagement from the beginning - you get people in a room drawing pictures together. Then when it comes across their desk as we’re building it, they see their own work in what you’re building, and there’s buy in.

    It’s really kind of magic the way that it works. They don’t even realize it’s happening. It’s like the film Inception.

    Liz Flyntz: When you come on to a new project do you do a presentation? Or are they just buying you on reputation?

    KN: No, when I do new business I’ll go pitch the …


    development art architecture

    Making cross-blogs queries in multi-site WordPress performant

    Kamil Ciemniewski

    By Kamil Ciemniewski
    November 2, 2016

    Some time ago I was working on customizing a WordPress system for a client. The system was running in a multi-site mode, being a host of a large number of blogs.

    Because some blogs had not been updated in a long while, we wanted to pull information about recent posts from all of the blogs. This in turn was going to be used for pruning any blogs that weren’t considered “active”.

    While the above description may sound simple, the scale of the system made the task a bit more involving that it would be usually.

    How WordPress handles the “multi-site” scenario

    The goal of computing the summary of posts for many blogs residing in the hypotethical blogging platform, in the same database doesn’t seem so complicated. Tasks like that are being performed all the time using relational databases.

    The problem in WordPress arises though because of the very unusual way that it organises blogs data. Let’s see how the database tables look like in the “normal” mode first:

    It has a number of tables that start with user configurable prefix. In the case of the screenshot above, the prefix was wp_.

    We can see there’s a wp_posts table which contains rows related to blog posts. Thinking about …


    database mysql php extensions wordpress

    Postgres connection service file

    Greg Sabino Mullane

    By Greg Sabino Mullane
    October 26, 2016

    Postgres has a wonderfully helpful (but often overlooked) feature called the connection service file (its documentation is quite sparse). In a nutshell, it defines connection aliases you can use from any client. These connections are given simple names, which then map behind the scenes to specific connection parameters, such as host name, Postgres port, username, database name, and many others. This can be an extraordinarily useful feature to have.

    The connection service file is named pg_service.conf and is setup in a known location. The entries inside are in the common “INI file” format: a named section, followed by its related entries below it, one per line. To access a named section, just use the service=name string in your application.

    ## Find the file to access by doing:
    $ echo `pg_config --sysconfdir`/pg_service.conf
    ## Edit the file and add a sections that look like this:
    [foobar]
    host=ec2-76-113-77-116.compute-2.amazonaws.com
    port=8450
    user=hammond
    dbname=northridge
    
    ## Now you can access this database via psql:
    $ psql service=foobar
    
    ## Or in your Perl code:
    my $dbh = DBI->connect('dbi:Pg:service=foobar');
    
    ## Other libpq …

    postgres

    Use Java along with Perl

    Szymon Lipiński

    By Szymon Lipiński
    October 18, 2016

    While working with one of our clients, I was tasked with integrating a Java project with a Perl project. The Perl project is a web application which has a specific URL for the Java application to use. To ensure that the URL is called only from the Java application, I wanted to send a special hash value calculated using the request parameters, a timestamp, and a secret value.

    The Perl code calculating the hash value looks like this:

    use strict;
    use warnings;
    
    use LWP::UserAgent;
    use Digest::HMAC_SHA1;
    use Data::Dumper;
    
    my $uri = 'param1/param2/params3';
    
    my $ua = LWP::UserAgent->new;
    my $hmac = Digest::HMAC_SHA1->new('secret_something');
    
    my $ts = time;
    
    $hmac->add($_) for (split (m{/}, $uri));
    $hmac->add($ts);
    
    my $calculated_hash = $hmac->hexdigest;

    My first try for calculating the same hash in the Java code looked something like this (without class/package overhead):

    import javax.crypto.Mac;
    import javax.crypto.spec.SecretKeySpec;
    import org.apache.commons.codec.binary.Hex;
    
    public String calculateHash(String[] values) throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException {
    
        java.util.Date date= new java.util.Date …

    java perl

    Building Containers with Habitat

    Kirk Harr

    By Kirk Harr
    October 17, 2016

    Many Containers, Many Build Systems

    When working with modern container systems like Docker, Kubernetes, and Mesosphere, each provide methods for building your applications into their containers. However each build process is specific to that container system, and using similar applications across tiers of container environments would require maintaining each container’s build environment. When approaching this problem for multiple container environments, Chef Software created a tool to unify these build systems and create container-agnostic builds which could be exported into any of the containers. This tool is called Habitat which also provide some pre-built images to get applications started quickly.

    I recently attended a Habitat Hack event locally in Portland (Oregon) which helped me get more familiar with the system and its capabilities. We worked together in teams to take a deeper dive into various aspects of how Habitat works, you can read about our adventures over on the Chef blog.

    To examine how the various parts of the build environment work, I picked an example Node.js application from the Habitat Documentation to build and customize.

    Node.js Application into a Docker …


    chef containers docker devops

    Postgres schema differences and views

    Greg Sabino Mullane

    By Greg Sabino Mullane
    October 14, 2016

    Comparing the schemas of two or more different Postgres databases is a common task, but can be tricky when those databases are running different versions of Postgres. The quick and canonical way to compare schemas is by using the exact same pg_dump program to query each database via the –schema-only option.

    This works great, but there are some gotchas, especially when dumping database views.

    Background

    First some background as to how this issue was discovered. We have a client that is in the process of upgrading from Postgres 9.2 to the Postgres 9.6 (the latest version as of this writing).

    Using the pg_upgrade program was not an option, because not only are data checksums going to be enabled, but the encoding is being moved to UTF-8. A number of factors, especially the UTF-8 change, meant that the typical upgrade process of pg_dump old_database | psql new_database was not possible.

    Thus, we have a very custom program that carefully migrates pieces over, performing some transformations along the way.

    Problem

    As a final sanity check, we wanted to make sure the final schema for the upgraded 9.6 database was as identical as possible to the …


    postgres
    Previous page • Page 64 of 223 • Next page