Elixir Native Interoperability – Ports vs. NIFs

Lately I’ve been working on a personal project of creating a wireless sensor network across my home. Elixir is a perfect fit for this project, but I quickly hit a road block: serial device access. While there are Erlang serial libraries that I could use, I wasn’t ultimately comfortable doing so, due to many forks and adding yet another layer of complexity. Read more on Elixir Native Interoperability – Ports vs. NIFs…

Multiplatform C (with Networking)

I’ve been working on a project with a diverse set of software components that must all work together and communicate over the network. There are separate Mac and Windows clients that must communicate with the same unix server. And while there’s already a well-defined protocol for their network communication and message passing, we also need to transmit a large stream of somewhat time-sensitive data. Read more on Multiplatform C (with Networking)…

Testing mOxie File Upload with PhantomJS

I was recently working on a feature that allowed users to upload images to a web app. The front end was written in Ember.js and the server was Rails with paperclip for image storage. For the best user experience, we decided to try to read the file locally, display it, and send the data URI up to Rails for storage.

Unfortunately, our target platform included Internet Explorer 9. Read more on Testing mOxie File Upload with PhantomJS…

Is Presenter First Still Valuable to Modern App Architecture?

Thijs van Dien wrote to us in early 2015 with some great questions about Presenter First’s place in application architecture in the post-MVC era. His well-researched questions were a joy to respond to; while there’ve been many advances in desktop and mobile programming patterns since we first wrote about PF back in 2007, we still find value in the core aspects of Presenter First. I’ve captured our email conversation here for broader sharing and posterity. Read more on Is Presenter First Still Valuable to Modern App Architecture?…

Protecting the Root Filesystem on Ubuntu with Overlayroot

In certain situations, it is desirable to have a read-only root filesystem. This prevents any changes from occurring on the root filesystem that may alter system behavior, and it allows a simple reboot to restore a system to its pristine state. Examples of such applications include kiosks and embedded devices. Using overlayroot on Ubuntu makes creating a read-only root filesystem quick and easy. Read more on Protecting the Root Filesystem on Ubuntu with Overlayroot…

Sunrise and Sunset in iOS using CoreLocation

Recently I found myself needing to determine the local sunrise and sunset times within an iOS application that I was working on. The app that we were building was designed with different color schemes for daytime and nighttime in order to make the app more pleasant to use in different lighting conditions. Read more on Sunrise and Sunset in iOS using CoreLocation…

Setting Up a Project Workspace in Tmux

As a developer, I spend a lot of time working in the terminal. Besides starting long-running daemons such as web servers in the terminal, I also use Git, Vim, and other command line tools throughout the day, and terminal sessions tend to pile up. On any given day, I can have more than a dozen terminal sessions open at a time, and that’s just for one project. Read more on Setting Up a Project Workspace in Tmux…

Read more on Setting Up a Project Workspace in Tmux…

Minimum Viable Product: Pick Any Two

As the minimum viable product idea becomes mainstream, I’m starting to hear “MVP” used to justify any minimal effort. It’s great that people want to benefit from being lean and agile, but it’s also absolutely vital that an MVP answers your important questions. There are many kinds of MVPs and most of them are anything but minimal effort. Thinking of an MVP as minimal effort risks wasting the effort completely.

In software we often balance competing goals. I’m going to deconstruct the MVP as tension between three different kinds of questions. Thinking this way helps you prioritize what you want out of your MVPs. It’s more useful than trying to find the sweet spot on a Venn diagram of potential products. Read more on Minimum Viable Product: Pick Any Two…

loading…