Creating Graphics Code in iOS & OS X with PaintCode


Two years ago, I worked on a large iOS project with a very complex, dynamic shape that needed to be rendered on its main screen. The shape had to be drawn using hundreds of Bézier curves in a closed path, generated from real-world data.

Despite my background in computational geometry and OpenGL, I wasn’t sure how to best accomplish the shape in iOS using the drawing primitives and their rendering contexts. Fortunately, I found a helpful tool called PaintCode which cut the time to prototype the drawing code by an order of magnitude. In this post, I’ll describe how I used PaintCode and cover some of its more interesting features. Read more on Creating Graphics Code in iOS & OS X with PaintCode…

Career Lessons from an Electronics Lab

I recently had the privilege of being a lab instructor at GVSU for one of my favorite undergrad classes, “Intro to Digital Systems.”  Watching students go through the class that I took a few years back has been an interesting learning experience for me, and hopefully my students have learned a few things, as well. Read more on Career Lessons from an Electronics Lab…

Creating Reusable Page Layouts in Ember

Creating components is a great way to remove redundancy in Ember.js apps. For example, you might have a custom button that is used over and over in many different views but is defined only once. This is great, but what if you want to reuse an entire nested page layout instead? It’s easy to do with yields and some Ember magic. Read more on Creating Reusable Page Layouts in Ember…

Testing with Swift – Approaches & Useful Libraries

I’ve been working on developing an iOS app in Swift. It’s my first experience developing in pure Swift, without any Objective-C. This project has taught me a lot about the current state of testing in Swift, including different testing approaches and best practices. In this post, I’ll share some of my experiences and discuss how we have approached testing different types of Swift code. I’ll also talk about some useful testing libraries. Read more on Testing with Swift – Approaches & Useful Libraries…

Why FIRST Robotics is My New Favorite Sport

There are five seconds left on the clock, and the Blue Alliance is down by two points. Machine 3536 picks up a ball and speeds toward the opponent’s castle. This is the Blue team’s only hope of surviving the battle. The clock winds down, and the final shot is fired. The crowd is silent. The ball breaches the castle, and the arena erupts in cheers—the Blue team is victorious!
Read more on Why FIRST Robotics is My New Favorite Sport…

How Do We Know Our Software Works?

Yes, really. How do we know that software we build actually works? How can we know that it works? What observations and actions contribute to a holistic, fact-based, confident understanding that software I just helped build does what it was intended to?

I want you to feel a little anxiety about that question. Forget for a moment that you’re working with smart people who participate in practices that help bolster your confidence. Instead, dwell on the frightening reality that people are flawed and make mistakes on a regular basis. Human communication is always incomplete, good intentions don’t guarantee good results, and it can be genuinely hard to build a broadly-shared mental model about how a problem should be solved. How do we have any confidence that our software works?!
Read more on How Do We Know Our Software Works?…

Managing AWS Route 53 Hosted Zones with AWS Lambda

On AWS, I use a Route 53 private hosted zone for Amazon VPC to allow me to conveniently address EC2 instances and other resources. While all EC2 instances are automatically assigned a private DNS entry, it is usually something fairly unintelligable such as “ip-172-31-51-229.us-west-2.compute.internal.” An entry like “website-production.atomic.aws” is much more helpful, especially when trying to configure communication between various EC2 instances that comprise a larger system.

I constructed an AWS Lambda function to automatically update the DNS records in my Route 53 private hosted zone whenever new instances are created. This ensures that the private hosted zone is up-to-date and can be relied upon for communication between EC2 instances.
Read more on Managing AWS Route 53 Hosted Zones with AWS Lambda…

A Hierarchy of Needs for Software Development

When we talk about educating developers, we talk about “what they should know.” For example:

  • They should know “the web” (as if it were a homogenous enough thing that someone could “know” it).
  • They should know JavaScript or some other language.
  • They should read Design Patterns.

But how do you drive down from the whole universe of topics worth knowing to the specific of the next thing to learn? I’ve recently identified a way to think about that: a “hierarchy of needs” for a developer. Read more on A Hierarchy of Needs for Software Development…

Go Home Swift Compiler, You’re Drunk

Swift is approaching its two year anniversary. Thus far it has experienced high adoption and continues to grow as developers transition away from Objective-C. As a programming language, Swift is great. It feels productive to work in, and has a nice variety of modern language features.

Read more on Go Home Swift Compiler, You’re Drunk…

loading…