Jon Fuller Named Tech 25 Winner

In 2015, TechPoint launched the Tech 25 Awards, a prestigious selection of twenty-five individuals who are critical and exceptional performers helping to grow our community’s tech and tech-enabled companies, but…

Looking Back on the Summer 2017 Intern Experience

As the summer wraps up and our summer interns are returning to school, we’ve asked them to reflect on their experiences this summer. Here’s what they have to say: Adam…

5 ways to get 5 (★★★★★) star reviews for your mobile app

At Telescope, we are all about keeping our mobile app customers happy. Over the years, we have learned several lessons (some the hard way) that lead to 5 star apps….

Meet the 2017 SEP Interns

    Elliot Yesmunt Software Engineering Intern School: IUPUI Major: Computer Science Project: Web-based suite of management tools “I really enjoy the teamwork here. It’s easy to get stuck on…

How I Used Lean and Agile . . . for Dog Training

We’ve re-entered the world of training service dog puppies. This time, the team is bigger – the whole family is participating. How do we keep everyone organized? Turns out, Agile…

WSL, git, and Beyond Compare

Back Story As I was drafting some new blog posts, I was exploring some stuff on the technical side. Part of that was using WSL (Windows Subsystem for Linux) to…

Code Analysis: Methods

We’ve already gone through a lot of different programming language constructs, however we haven’t really talked about a very highly used feature.  How do we think about methods using these…

Code Analysis: Exceptions

Exceptions are a thing that we tend to use for signaling error conditions such that the error will be dealt with in some other location besides the current code location….

SEP Acquires Visual Story Mapping Software, CardBoard

CARMEL, Ind. (May 22, 2017) – Carmel-based software product design and development company, Software Engineering Professionals (SEP), has acquired CardBoard, a collaborative design and story mapping tool. The product was…

Bringing #NoEstimates into an FDA world

The last few years I have been part of a team that is building diabetes management apps for both iOS and Android. Our client partner is a global leader in…

Code Analysis: Global State

Global mutable state by itself can make a program harder to work with because instead of  having a call tree that’s simply a tree structure, you end up with more…

Code Analysis: Abstract Data Type

Abstract data types are a pretty well known concept in computer science and software engineering.  The concept is pretty simple.  If you have something that is complicated, then you can…

Code Analysis: Fluid Call Tree

Let’s elaborate on the nature of these call tree diagrams.  Consider the following code: Depending on the input for the blah function, we are going to experience two very different…

Code Analysis: Shared Mutable State

My previous post asserts that mutable state can cause a software engineer issues in understanding the program because it becomes arbitrarily hard to understand when two different parts of a…

Code Analysis: Mutable State

Mutable state gets a bad rap when you talk to pure functional programmers.  I don’t think mutable state is inherently a problem, but it does have an effect on your…

Code Analysis: Halting Problem

Let’s do a quick digression.  I wanted to talk about mutable state, but first I think we should consider the halting problem. The halting problem goes something like this: Okay,…

Code Analysis: Introduction

There already exists a significant amount of code analysis techniques out there.  I think the existing technologies are pretty useful for tracking some aspects of why a given piece of…

Build Better Backlogs Using Behavioral Design

Decisions we make every day are driven by cognitive biases designed to save time and energy. These mental shortcuts serve us well. Marketers have used this knowledge to build successful…

A day in the life of a wannabe data scientist

I recently had an experience that I think matches well with the textbook steps often presented in “day in the life of a data scientist” discussions: Frame the question Collect…

Connecting Ruby to a Google Spreadsheet With a Service Account

Ever wanted to connect your ruby app to a Google Spreadsheet? Yeah. Me too. I find myself writing ruby scripts and console apps all the time. Many times needing a…

Problem Analysis: Overlapping Blobs

Last time we started to explore the idea that you can have a system or problem that is difficult to deal with and understand because the interactions between blobs are…

Rotating Title Headers for Tables

One of my co-workers (Jason Giles) and I were recently pairing on the implementation of a table for a client that would allow dynamic addition and removal of rows.  The…

Problem Analysis: System Complexity

The last post talked about aspects about arrows that could make a problem difficult to deal with.  Now I’m going to talk about how a collection of arrows might make…

Problem Analysis: Continuous Functions

The last blog was the final entry talking about the aspects of blobs that cause problems to be difficult.  Now, we’re going to talk about the aspects of arrows (III)…

Storylines: A Tale of Two Products

So, you say you want to build a product? Awesome. How do you get started? In the Days of Yore Day 1 Some people used to (and sometimes, still do)…

Problem Analysis: Path Connected

Last time we talked about blobs that have holes in them.  This time lets talk about how we might deal with a blob that is hard to deal with because…

Problem Analysis: Topological Holes

  Our previous posts were talking about the aspects of our blobs (I and II).  Now we’re going to transition to talking about the aspects of the contents inside of our blobs that…

Custom UISegmentedControl: Swift Tutorial

Customizing a UISegmentedControl If you have spent any time developing an iOS app, you have probably realized that customizing UI elements in Swift can be hard. There is either a…

Problem Analysis: High Dimensional Spaces

Previously we were discussing our how you probably want your valid input blob to be a metric space.  Let’s move on to another aspect that can make a problem difficult…

Problem Analysis: Blob Structure Examples

The previous blog post gave us our first aspect to look for in a problem, meaningful structure in our valid input blob.  Let’s look at some concrete examples. The important thing…

Problem Analysis:  Blob Structure

  The previous blog was just an introduction to the problem analysis technique that I want to talk about.  And to review, the definition of problem that I’m going with…

Problem Analysis: Introduction

Before we can measure how difficult a code base is for software engineers to work with, we have to also have a method to measure how difficult problems are for…

Objective Code Quality Blog Series

I’m proposing a method for tracking how difficult it is for software engineers to work with code.  Preexisting methods such as code smells, cyclomatic complexity, best practices, test coverage, etc…

Cleaning Up Left-over Docker Resources

After spending some time hacking with Docker for a blog series, I found that I had a lot of unused Docker containers and images lying around. As part of cleaning…

Security in the Age of the Internet of Things

Originally published over here. The Internet of Things is big. No, really big. No, even bigger than that. How big? My colleague Brad Boyer explains it better than I could…

Refactoring JavaScript – a play in three acts

Originally published over here. Act 1, the setup Once upon a time, there was a JavaScript codebase. This codebase used the function expression syntax: const returnTheNumberOne = () => 1;…

Strategies for IoT Edge Devices in Noisy Channels.

As Internet of Things technologies mature, there is more focus on aggregation of disparate information. Edge devices provide the rich data streams on which those techniques are based. While low level design…

Virtual Machine Pains and How Vagrant Can Help You

In my last project we were upgrading the database for the application from Oracle 11g to Oracle 12c. I created and configured a VirtualBox Virtual Machine (VM) using these instructions….

Indy.Code() Conference Debuts in Indianapolis

The Indy.Code() conference held its inaugural event in Indianapolis on March 29-31, 2017. This multi-city software development conference presents topics that cover all aspects of software creation. The Indianapolis event…

My manager gave me an AWS IoT button…

Originally published over here. With the touch of a button you can notify the world that you touched a button. I was sitting at my desk the other day, busily shifting…

The Most Popular Wireless Standard You’ve Never Heard Of (Part III)

Part III: Getting the Message Through In Part II, we explored some of the physical aspects of 802.15.4 networks. Way back in Part I, we saw why the ISM Band…

The Most Popular Wireless Standard You’ve Never Heard Of (Part II)

Part II: The Self-Organizing Network In part I, we started exploring the features of 802.15.4 networks. In this post, we’ll explore the ways these devices organize themselves into networks. The 802.15.4…

Round Tripping Your Assumptions

This is an ignite talk I did at one of our Estimation Guild Meetings. Here is the text parsed by SlideShare 1. Round Tripping Your Assumptions ‘CAUSE YOU KNOW WHAT…

The Most Popular Wireless Standard You’ve Never Heard Of (Part I)

Part I: Life on the Edge As the Internet of Things (IoT) gained popularity, the industry needed radios that could provide a reasonable data rate at a low cost using…

i got a new laptop – setting up a macos development environment

I recently got a new laptop. Here is how I set it up.

A Review of Three Checksum Verifier Tools

What is a CheckSum? A checksum is a unique string that identifies a file. You can think of it as a file’s fingerprint.   Why do I need a Checksum…

SEP DevOps Ignite Talks – Packer

​For the fifth installment of the SEP DevOps Ignite Talks I gave an overview on Packer. Packer can create base images with built in configurations. Click through the slides below…

Installing FoodCritic on Windows

FoodCritiic is a linter for Chef Cookbooks. It does an automated code review on your Chef Cookbook and reports violations. See the FoodCritiic home page for a list of violations…

SEP DevOps Ignite Talks – Docker

This is the next in the series of DevOps Ignite talks that were given at SEP in January to present the different tools available for software configuration and deployment.  It…

Load Balancing with Nginx and Docker

The previous post showed how to use Nginx as a reverse proxy to an ASP.NET Core application running in a separate Docker container. This time, I’ll show how to use…

App Crashing on 32-bit Devices When Resigning Xamarin.iOS IPAs

Recently on a project, we were receiving reports from some users that the iOS app we had developed with Xamarin was crashing immediately after opening the application, but only on certain…

Puppet – Configuration Management Ignite Talk

I recently gave my very first ignite talk, which was on a configuration management tool called Puppet. The short version of the already short ignite talk is: Puppet is cool….

Nginx Reverse Proxy to ASP.NET Core – Separate Docker Containers

The previous blog post showed how to setup a reverse proxy between Nginx and an ASP.NET Core application. In that example, both Nginx and the Kestrel process ran in the…

Nginx Reverse Proxy to ASP.NET Core – Same Docker Container

As mentioned in the previous post, it is recommended to use something other than Kestrel as the front-line web server. In this example, I’m going to show how to use…

SEP Named Best Places to Work Hall of Fame Company

They come from throughout the state and across 25 industries. They are the 100 honorees on the 2017 Best Places to Work in Indiana list. In this week’s announcement, the…

Finding a Job after College

Finding a job straight out of college, is like watching Inception for the first time, it makes no sense, and it takes a few times before you get it. You…

[DevOps Guild] SaltStack Configuration Management

Some time ago, I gave an ignite talk here at our SEP Dev Ops guild meeting discussing SaltStack.  It’s a wondrous configuration management tool with a load of features.  The…

GraphViz – A Tool You Aren’t Using, but Should

Recently, we had a book club where we read the Mikado Method, a process of handling large scale rearchitecting via refactors on the Master Branch without adversely impacting new features….

Hosting ASP.NET Core in Docker

The containerization trend has been growing for a while now in the industry. The idea is to “containerize” (or package) any application into a well-defined container. This allows the same…

Creating a Chef Cookbook for Windows

The Berkshelf documentation moved to the “official” Chef docs. I found it a little confusing but complete. The purpose of this post is to remind future self how to do…

Finding Additional Performance Problems With System Tests

In a previous post, I showed how to leverage system test components to find memory leaks. The same technique can be applied to other types of performance problems. Using a…

Basic Swift Animation Tutorial – SpriteKit, Xcode, and Swift

But wouldn’t it be cool if it did this?… I’ve thought these words to myself many times during my career of software development.  I want a product to do more…

Leverage Your Tests to Find Memory Leaks

Many projects involve creating a suite of system tests alongside application features. These tests can provide some benefits that may not initially be self-evident. Generally, system tests are understood to…

Ignite DevOps 2017 @ SEP – Chef

Last week I blogged about the Ignite Talks that happened at SEP last month. See below for the slides from the Chef Ignite Talk.    

Mistakes Were Made: iOS App in Xamarin

This post is an artifact from my recent participation in an experiment in “learning as a project” (I made that up). I went through the process of adding TouchID to…

SEP Ignite DevOps 2017

Last month at SEP, our DevOp guild hosted an internal meeting of Ignite Talks. The theme for the talks was Configuration Management. Below is a slide deck I used to kick…

Elastic Search, LogStash, Kibana and Beats

I attended the Indy DevOps meetup last week to learn about Elastic Search, LogStash, and Kibana. Also known as the ELK stack. The speaker, Adis Cesar a Solution Architect at Elastic, also…

Why consider a Data Warehouse?

The need to collect, store and analyze large amounts of data continues to increase in importance for businesses across all industries. Marketing agencies have led the pack in processing large…

SEP expands with the opening of a new software product design studio

SEP expands with the opening of a new software product design studio CARMEL, Ind. (January 5, 2017) ─ Software Engineering Professionals (SEP) is expanding its Carmel, Ind. operations with the…