Lee Martin
I develop websites for rock 'n' roll bands and get paid in sex and drugs. Previously Silva Artist Management, SoundCloud, and Songkick. Currently: Available

Lambda, I’m Home!

Image for post
Image for post

This is Part 3 of a series of posts about generating and sharing dynamic images on the web. All work and no hack makes Lee a dull boy.

As I mentioned in Part 1, the one-click, non-authenticated, image share to Twitter and Facebook does not exist. 😔 Instead, we must utilize the meta functionality of both platforms to get them to share an image as part of a on-click URL share. That’s Cards for Twitter and OpenGraph tags for Facebook, respectively. Rather than generating and storing every dynamic image, we’re going to use a Lambda function to return an image…


The Sharing: Part 2.

Image for post
Image for post

This is Part 2 of a series of posts about generating and sharing dynamic images on the web. Check out Part 1 and Part 3.

Check out the companion CodePen while following along with this post.

Part 2: Here’s JPEG!

Introduction to HTML Canvas

You can use HTML <canvas> to generate images via JavaScript. I find it helpful to do as much of the composition beforehand in Figma or a similar design tool before dynamically adding the personalized data using Canvas. Each image will require a slightly different solution depending on the level of dynamic data and the overall composition. In the case of our app, we want…


The Sharing: Part 1.

A banner introducing The Sharing post series.
A banner introducing The Sharing post series.

This is Part 1 of a series of posts about generating and sharing dynamic images on the web. Check out Part 2 and Part 3.

I’m currently working on several client projects which generate dynamic images based on a user’s investment into a web campaign and then encourages them to share it. Depending on the concept, it may be pertinent to include a shareable image such as this. By encouraging users to share their participation in an app, they are inviting others to participate themselves. This is Internet Marketing 101.

Now, you’d think after building so many image generator campaigns…


Sadly, with examples.

Image for post
Image for post

UPDATE: I think they fixed it! Finally! 🙏🏻

Dear Instagram,

I like to design simple mobile web app layouts that consist of a header containing navigation positioned at the top, a centered content area, and a footer containing actions positioned at the bottom. This works well for my users. In all my testing, this layout appears as it should with the exception of your in-app browser on the iOS Instagram app. In this viewport, the footer is cut off and elements are either out of view or more gruesomely, severed in half.

Now, you may not know this, but I…


In support of MEDUZA’s hit single “Paradise”

Image for post
Image for post
MEDUZA’s Medusa

To kick off this year’s client work, I had the opportunity to work with Republic Records and the Italian production trio MEDUZA to help promote their new hit single “Paradise.” The single speaks about the distance separating us and a person or place we wish to get to. Sound familiar?

Oh, My, My, My…
Just a thousand miles between me and paradise

We kicked around a bunch of ideas like figuring out places of interest which were exactly 1,000 miles from you or using AI to attempt to guess your paradise based on prompts. However, I couldn’t shake the simple…


Introducing Listening Party

Listening Party
Listening Party
Throw a listening party for your fans

Having worked in music for almost two decades now, I have thrown my fair share of listening parties. 🎉 One of my earliest memories involved tossing up an embeddable SoundCloud player on Sonic Youth’s website in 2004 to stream their latest, Sonic Nurse. The most recent listening party campaign, which I developed for Future Islands and their new album As Long As You Are, was named the Best Listening Party of last year by Music Ally. Clearly, I love this problem. …


And Expanding the Web’s reach as a Camera and Microphone Platform

Image for post
Image for post

I’ve been following WebRTC’s evolution on iOS ever since Apple brought support to Safari in the summer of 2017. I use WebRTC in my web work to gain access to the user’s camera or microphone and integrate those media streams into unique marketing campaigns. While that 2017 moment was huge for the open framework, there were still gaps in accessibility on iOS. These issues mainly had to do with the browsers within popular social apps such as Twitter, Facebook, and Instagram. The problem also existed in non-Safari browser apps such as Chrome. 😥

As I discussed in a Behemoth case…


Introducing the Instagram Music Patch

Image for post
Image for post

This is Part 3 of a series of posts about building Instagram Spark AR filters for artists in the music business. Check out Part 1 and Part 2 as well. 🤘🏻

Up until this point, any audio integrated into an Instagram Spark AR filter would need to be manually added to the effect as an M4A file. Enter the Instagram Music Patch. This patch allows users of your filter to select any track from the Instagram Music library to use in your effect. The patch can also be connected to the Audio Analyzer or Energy Meter patches to power dynamic…


Featuring Foo Fighters and AC/DC

Image for post
Image for post

This is Part 2 of a series of posts about building Instagram Spark AR filters for artists in the music business. Check out Part 1 and Part 3 as well. 🤘🏻

Earlier this year I wrote a post with tips on how to integrate music into Instagram Spark AR effects. Since then, I’ve developed many filters for artists and attempted to stay up to date with any major changes to the platform which may be interesting to the music business. One of these new features I’ve been meaning to talk about is the Audio Analyzer patch. …


Working Prototype Within

Image for post
Image for post

For the last week, I’ve been taking a break from client work to build an idea I had following the Future Islands project. That idea was a Spotify powered player where users could leave timed comments on a waveform. No doubt you’ve seen this UX on other streaming services and within other music creation software. A waveform is generated using the track’s audio and users may leave comments along the timeline, giving context to their messages. I experimented with timed comments (and other forms of timed content) while I was at SoundCloud. Heck, I even built a video game once.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store