“Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the origin city?”

This seemingly benign question has had a vast influence in its purest formulation within the areas of theoretical computer science, planning and logistics, and the manufacture of microchips. It is known as the Travelling Salesman Problem. Modified versions of this problem have even had applications in disparate areas, from DNA sequencing to astronomy. In the following post I will sketch a brief outline the problem, illuminate the computational complexity…


As full-stack developer in-training, I have found using Github as a medium for code management to be seamless and coherent in many instances, and maddening in others. I certainly recognize its utility in working on group projects, and I appreciate all of the Git-related features that are found in VS Code, my current code editor of choice. Yet I will be the first to admit that I have accidentally merged, overwritten, and lost code numerous times, particularly when I first started using the Git ecosystem. Therefore I must also reveal that I was initially reluctant to approach the topic of…


The past of future present.

Coming from an educational and work background in architecture, a field which has been wholly dependent on software applications for decades now, I have long been familiar with the use of both bitmap and vector graphics in the production of construction documents. Most CAD modeling programs utilize the latter, vector graphics being the ideal format for the speedy rendering of architectural drawings, with an incomparable level of precision. In my recent forays into full-stack software development I have discovered that the utility of vector image formats is equally strong in the coding world. …


In the software development arena, mastering server-side processes and the necessary steps to retrieving data via external APIs emerges gradually through hands-on experience. Fortunately, once many of the basic principles behind back-end development are apprehended, and setting up applications becomes more routine, there are numerous software tools available which facilitate in speeding up this process and allowing for more flexibility. GraphQL is such a tool, and functions as an improvement to the REST API standard in key respects. …


[insides of computer]

As a developer in training, I have found React to be the best overall framework for handling the front end of web applications, and have become acquainted with the syntax required to manipulate state. Ultimately state is the medium in which data is shared between components, and the process of state management is often carried out by dedicated libraries outside of React for better data handling, such as Redux. Enter Recoil, an experimental state management library created by Facebook.

Recoil functions as a library, but keeps much of the same syntax as React. Moreover, it solves many of the problems…


React Router is a routing library for React. This library is ideal for single-page applications which have multiple views, or pages. The advantage of single-page applications is that they don’t require a page reload when new data is rendered. Thus in keeping with this feature, navigating between views need to be rendered ‘inline’ within the current page.

When writing an app with the React framework, it is important to present it in a manner which retains many of the features a typical end-user would be accustomed to when viewing multi-page applications. …


Many developers opt to use Markdown, a markup language which is popular for writing blogs, readme files, and many other forms of documentation related to web development. Markdown is a text-to-HTML conversion tool which allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML). The main philosophy behind Markdown is that plain text documents should be readable without tags obfuscating readability, but there should still be ways to add text modifiers like lists, bold, italics, etc. …


Node.js is an open-source, cross-platform runtime environment that allows developers to generate server-side tools and applications using JavaScript, and to be able to do so outside of a browser context. Using this framework has many advantages: Node.js requires less context-shift between client-side and server-side code, it is optimized for scaleability and for overcoming many frequent web-development problems, and it also has NPM or node package manager which allows access to hundreds of thousands of packages for installing useful dependencies. As a result, it is possible to use Node.js alone as a framework for writing web servers, by implementing Node’s HTTP…


The core technology of the World Wide Web is HTTPHypertext Transfer Protocol. It’s the communication protocol that is used any time one browses the web. At a fundamental level, when you visit a website, your browser makes an HTTP request to a server. Then that server responds with a resource (an image, video, or the HTML of a web page) — which your browser then displays for you. This is HTTP’s message-based model and every HTTP interaction includes a request and a response. Because this layer of operations is so essential to how data is transferred between mediums…

Randolph Perkins

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store