1991-2016—25 years of Art & Logic
A C++ Class Factory for JUCE

A C++ Class Factory for JUCE

So, I’m working on a side project (as one does), and reach the point in development where I need to be able to take a tree of objects that all share a common base class and persist them to and from disk.

I prefer using plain text files to binary for a bunch of different reasons, so the problem really boils down to:

At runtime, I need to be able to convert a string containing the name of a class into a pointer to an object of the corresponding C++ class. Sounds simple, right?

read more

Generating PDFs: wkhtmltopdf & Heroku

So, it has come to this.

Reports, yes, your application will have to have reports – in brand colours, with images and logos abounding, and probably festooned with graphs of various sizes, shapes and degrees of relevance to what was once a nice, streamlined set of data. This report has just become a part of the application ‘product’, meant not just to communicate, but also to entice and enthrall. Form has become just as important as function… and, did I forget to mention? It also needs to be exportable.

read more

Book Review: Programming Beyond Practices

This new book from Gregory T. Brown (@practicingdev) provides a fresh look at the skills and habits that modern software developers need to possess in order to advance past the stage of slinging code around. The most clever code in the world is useless if it’s solving the wrong problem, or solving the right problem in the wrong way, whether that’s because it only addresses a user’s needs tangentially, or is brittle in the face of real world constraints. None of us should settle for being just a code monkey.

read more

Go Fetch 2! (JavaScript Fetch API)

Last time we discussed the Fetch API in general, taking a look at how it differed from the XMLHttpRequest API, and some of its advantages. Today, we’re going to take a look at a little library that you can include in your projects today that offers you localStorage caching for the Fetch API.

read more

There is a Bug on this Code

Software is a serious business. Fatal bugs have been around since at least the 1980s, and a decade-old report estimated the annual cost of bugs at $60 billion. Tech companies spend millions on political lobbying. Opponents argue over labor shortages and H-1B visas.

So how about we take some time out to give three cheers for a little levity?

read more

Go Fetch! (JavaScript Fetch API)

Long ago, we briefly brushed upon the topic of what has made jQuery such a valuable part of the web developer’s toolset for such a long time – namely, a cleaner interface for interacting with the DOM, and the $.ajax abstraction over XMLHttpRequest.

These days, I would go a step farther and discuss how it has positively influenced browser APIs. jQuery offered a way to find elements using their css selectors, and this eventually gave us document.querySelector and document.querySelectorAll. More recently, browser developers have taken another page from jQuery’s playbook and introduced a new, Promise-based API for making asynchronous requests, and so much more – Fetch.

Why go Fetch? Let’s take a look.

read more

The Best Interface is an Enchanted Object

Book Review: Let’s look at a pair of books that contain deep critiques of the world where more and more of our devices’ functionality is exposed only through interfaces on screens, and lay out a path to a more human-centered technological future filled with devices that engage us more richly in a wide variety of ways instead of asking us to keep poking at black glass rectangles with our stubby fingers.

read more

Designing Connected Products

Someday, you’ll be sitting at your desk, minding your own business.

Your boss, or a client, will come in and start explaining this cool new IoT project you’ll be working on. As you listen, the timeline splits:

In the Darkest Timeline, no one on your team knows about what’s discussed in this book. Your boss/client starts specifying requirements that sound cool to them, but are really bad ideas in ways that aren’t immediately evident. Your team builds the project as it was specified, and it fails in the marketplace because of mistakes that could have been avoided.

In the Prime Timeline, you’ve read this book.

read more

Smarter Debugging with Unified Logging & Activity Tracing

At WWDC this year Apple engineers gave a talk about their new Unified Logging and Activity Tracing APIs which is definitely worth checking out. I know logging isn’t exactly going to steal the headlines away from Siri integration or watchOS 3, but as a developer it’s a valuable debugging tool and the changes in these APIs look to save some significant time while debugging crashes and squashing bugs.

read more

Level Up Your Coding Skills With exercism.io

A few months ago I stumbled across across an interesting open source project created by Katrina Owen called exercism.io that provides a collection of programming practice problems in over 30 languages. On the surface, it’s a great resource for learning to code or learning a new language. I’ve found however that as you dig deeper it has much more to offer on a number of levels.

read more

Nanobot: A Tiny Little Twitterbot Framework

There’s been a lot of talk this year about bots and conversational interfaces becoming an increasingly important tool for software developers. A few years ago I wrote about a twitterbot that I created, and I’ve just pulled out all of the common logic into a Python framework that you can use to quickly create your own twitterbots by focusing on just the bits that make your bot unique.

Check out ‘nanobot’.

read more

Django Channels: From The Ground Up – Part 2

Last time, we decided to embark on a brave new adventure and give our Django framework a big upgrade with the inclusion of Django Channels. We got just far enough to get the development server running, but while this may be an *adequate* start, it’s better to develop against something like what we intend to deploy, right?

So, let’s go the rest of the way and get ready to develop against something that at least resembles a standard production-ready environment with Django Channels.

read more

Are You Attending CES 2017?

Are you going to CES? We’ll be there. We expect to see some exciting breakthroughs in virtual reality (VR), augmented reality (AR) and mixed reality (MR) as well as new innovations in pro-audio equipment, Internet of Things (IoT) devices, and much more. It looks like...

Looking Back at 2016 and Looking Forward to 2017

As we reach the end of 2016, let’s take a look at some of the stuff we wrote about over the course of the year. We shared our thoughts on custom software development, looking at the such things as: the differences between composing and improvising; the value of refactoring; the nuances of following a lean-startup model; the conflict between Apple and the FBI; what happens when bad projects happen to good people; and a top ten list of the ways in which software development is like parenting.