Software Licensing in Open Source


Open Source software is ubiquitous today as a popular way to distribute software freely within the community. However, software licensing that is built on top of intellectual property laws is easy to overlook. Github shows that the percentage of their licensed public repositories has never passed 25% since 2009. Understanding these licenses and making the correct decision for a program can transform them into tools that can help creators’ intentions and goals for a project.

A Brief Introduction to Game Theory


Game Theory is a field shared by math and economics that aims to describe strategies and outcomes of games. A game is simply a set of possible decisions and their outcomes. While Game Theory is immediately applicable to certain board games (Tic-Tac-Toe and Chess among others), its usefulness goes far beyond into areas such as public policy and business strategy.

The Magic of Agile and the Design Process


Over the past year, I’ve been working as the solo designer embedded in a team of mostly developers and one project manager designing web experiences and publishing software for one of our clients, We follow an agile methodology and work hard to effectively and efficiently integrate design. This blog post breaks down the major phases of our process and illustrates, at a high level, the role of design throughout.

Esoteric Programming Languages and You!


Have you ever heard the term “esoteric programming language” and not known exactly what it was referring to? If so, this blog is for you, and hopefully an entertaining jaunt if not.

Esoteric programming languages are a unique class of programming languages that are generally NOT designed for everyday use on projects such as a website or phone app. Instead,
they are designed with a goal in mind, such as being a difficult as possible to program in, or to layout the code into a physical space that has meaning. Amusingly enough, even though they are often rather crazy, they also tend to be Turing complete which is quite impressive considering they weren’t necessarily designed with that goal in mind.

Meet Kotlin


Kotlin is a JVM language that hit version 1.0 about a year ago (February 2016).
It is developed by JetBrains, the same people who make my favorite suite of
IDEs. The language itself is open-source under the Apache License 2.0 and is
developed as a community project over at Kotlin is something
that I have become rather excited about over the past year. This post’s goal is
not to teach you Kotlin but to get you excited about it!

An Introduction to Machine Learning


Machine learning (a field of artificial intelligence) is a rapidly expanding technology that we see  in use more and more in our daily lives. It is used to give us more accurate results when we do an internet search, suggest products to us when we are shopping, and offer diagnoses to our maladies.

Developing for Web Accessibility


HTML 5 represented in American Sign Language

When developing websites it is important to consider your audience and how they interact with your application. This can be even more significant for a person with disabilities. Even the most stunning visual presentation can lose its value when the content cannot be interpreted by an individual due to, for example, a learning disability or difficulty seeing. Therefore, it is important, when doing any development or design, we do not dismiss the 1 in 5 people that would benefit on an accessible web.

Design Synthesis: What it is and How to Apply it to a Design Process


The Magical Part of Design

There has been a few occasions over the course of my design career when I’m asked how I come up with a design solution and know it’s the right one. I’ve never had a satisfactory answer for this because it’s too complex to explain succinctly, so I usually answer with something as simple as “creativity and validation,” which is not far off the mark, but rather vague. A better answer, at least in the context of product, software, and website design is synthesis, which is the magical part of design that uses insights from data to generate epiphanies and inform design decisions.

The Importance of Onboarding Processes


Being a new hire can be overwhelming in more ways than one. Meeting new people, learning how the company operates and how to become a successful member of the team.

In order to make this transition smoother, an onboarding process can be put into action. Going through this process typically happens once during the course of employment, beginning at the time of hire. Over time, faces become familiar and the day to day tasks become more routine, minimizing the unknown.

REST API Models in Swift


There are a lot of APIs out there, a lot of networking layers, a lot of abstractions, I’m going to offer just one way to start building Swift models backed by a RESTful API. Out of personal preference, PromiseKit will be used instead of callbacks and ObjectMapper will be used to convert between JSON and Swift objects.