I recently updated by Twitter bio to “creative programming”.

I like this because it describes the type of coding I enjoy and describes what I want my overall online presence to be. Like a television channel or radio station, I hope the Polymathematics corner of the internet can be counted on for creative programming, whether that comes as an essay, a new website or application, video, or song.

But today I want to focus on the actual coding aspect of creative programming. I thought I’d invented the term even (though I knew the thing it describes has a decades long history), but in my experimentation and research I’ve come across a super cool cadre of programmers who use the term creative coding to describe something similar to what I am after. I typically describe creative programming as my attempt to make the internet a weirder, more playful, and more interesting place. The way I’ve attempted to do that so far is with sites that are colorful, have hidden aspects to them like secret doors leading to unlisted pages, are full of surprises like a glass of OJ that suddenly spills and changes the site background when your mouse gets too close, and invite visitors to engage with the site and its content rather than simply consume it.

As I’ve become increasingly into this sorta programming, I’ve learned a lot and that in turn has made me more interested in this sorta programming. It is that beautiful feedback loop we are all after. So after the wedding and our mini-moon, I decided I’d double down on this fun experiment I’ve been running and set myself a challenge. That is how the thirty days of creative programming challenge came about. I decided that for thirty days, I’d make one video a day about creative programming and the things I was building with it.

Today is day ten. I am 33% of the way there. So I want to give an update on how it’s going and some of the cool projects that have come out of it. Here are some of the lessons I’ve learned so far.

  1. Documenting creative process is extremely hard. There have been several days so far where I am very proud of the actual project from the day and pulled it off with very little stress, only to feel let down and stressed at how the video documenting the project turned out. The ability to showcase ones’ work is as much an art as the work itself. To this end, I am looking for recommendations for any tools or software that make showcasing websites easier!
  2. Ideas are everywhere. As soon as I told myself that I need one video every single day, my brain started sending out dozens of ideas. I’ve caught myself noticing my environment and routines more too, looking for inspiration for my next project in the telephone pole posters, restaurant menus, or t-shirt someone near me is wearing. I feel like I am in a creative flow state where I am easily inspired by common things. This feels amazing.
  3. Programming gets easier the more you do it. This is obvious, but feeling this viscerally since coding everyday without exception is a great reminder that this is how momentum gets going and improvement happens. I find myself using Ghostwriter less lately and catching when it is wrong faster. This has let me get into a flow session more easily where I am writing continuous lines of code that are outputting exactly what I wanted.
  4. Consistency leads to confidence. The past few days of the last ten I find myself believing I can realize any idea that pops into my mind, no matter how strange or complicated it initially seems. Of course once I start building I often encounter that complexity and come to appreciate it, but the confidence to start is the spark that ignites the bonfire.
  5. I am starting to get better at framing my own ideas to viewers / readers. Creating extremely short (less than 3 minute) videos that explain why I built a particular thing requires pacing and storytelling. I feel like I am starting at a pretty decent place with this, but can see how many levels above me there are.
  6. Leaning into my particular strengths, interests, and “weirdness” creates cooler stuff. I’ve understood this for a while, but with something as vast as programming with so many people far beyond my skillset, it is easy to become intimidated and want to emulate the kinds of things I see others building. But the most fun and interesting stuff I’ve made happened when I simply followed my own curiosity and didn’t stress too much if the way I made it happen isn’t how an expert would have. Trying not to optimize prematurely.
  7. Now that I feel my foundation of self-taught programming skills is getting more solid from several projects, I am feeling the desire to start mixing in some more traditional learning approaches like video tutorials and technical documentation.

So far it has been extremely informative and rewarding. I’ve surprised myself several times which is always a good sign. Below you can check out some of the projects I’m most proud of from the first 10 days.

Day 2: Monochrome CV

This was an idea I woke up with. I think it is because we’ve been taking evening swims and I had the idea for “No Diving” mode. It is a simple personal CV / portfolio site with three fun modes.

Day 4: Marquee Madness

I was inspired by a local restaurant’s colorful website and wanted to make something with tons of color. I coupled that curiosity with another idea I’d wanted to try for a bit involving tons of scrolling text. The result is a super playful portfolio site that still feels simple.

Day 8 / 9: The Internet Payphone

After the weekend inspiration gathering I had the idea for an internet payphone. The initial idea was just to render up a payphone and put fun stickers on it. Then I had the breakthrough idea that makes me like this one so much: calling different numbers connects you with different projects of mine. I had a blast figuring out how to handle the JavaScript for connecting visitors to the right project and adding the little details like the sharpie graffiti and various stickers. Plan on continuing to iterate on this and make it mobile friendly soon.

Day 10: The Weather Station

Yesterday was the first day of Summer and also the day our AC stopped working. Because of that, my day was sweltering. That’s when I had my Day 10 idea, a website that would simply change colors based on the weather. I knew it would give me a chance to work with APIs which I haven’t done in this 30 day challenge yet. Then I combined it with another idea I wanted to execute, which was inspired by this 1984 Mac OS control panel design. The result is The Weather Station, which gives you a sense of the weather in your city at a glance.

20 days later

31 days ago I decided to give myself an ambitious challenge. I planned to make one video a day for 30 days about creative programming and the things I’d build during the month.

Why?

First, I wanted to improve my programming capabilities. Over the last few years I’ve tinkered more and more with coding, gradually going deeper and building more interesting things. Lately I’ve been coding a lot more and having tons of fun climbing the learning curve, so I wanted to turbocharge this and see what happened.

Second, I wanted to share my work more. When I asked myself what activities make me feel proudest and most like myself, they all shared the idea of creating something other people can interact with, read, listen to, or play with. I love putting things out in the world and was inspired by the idea of creating 30 new things in a month.

Third, I wanted to experiment with batching my focus. I was drawn to the absolutist approach to 30 projects and videos in 30 days. I wanted an ambitious way to spend my month focusing on one thing alone.

The first version of “Joiner”, a photo project inspired by David Hockney
The Hovertone, a musical instrument I made that is played with your computer mouse
iPodify, a project I made that turns your Spotify page into an iPod

Yesterday was day 30 and I am proud to say I succeeded. I got a video up every day and even managed to surprise myself with many of the things I built.

Now I want to reflect on the experience and list some of the things I learned during it. If you’re interested, I wrote a Day Ten Check In post too. You can also skip the learnings and just check out the projects here.

  1. Ideas are everywhere. As soon as my brain understood that I needed new ideas almost daily, it started finding them. The tricky part of doing so many new projects so quickly back to back is that the ideas that you start noticing can become caricatures if you aren’t careful. It’s almost like my brain was trying to suggest ideas it thought would be easier or most similar to things it had done in previous projects. I had to be intentional about rating the ideas that came to try and keep a high bar of interestingness and also to seek out ideas in new idea landscapes rather than over farming a particular one.
  2. Building quickly makes it immediately obvious which things matter most. I got very attuned to my own curiosity and the projects that actually made me excited. I also got better at estimating how long some idea would take me to build. Throughout the month I’ve been reading Ken Kocienda’s Creative Selection. In his book, he talks a lot about how important fast demo’s were to the culture of exceptional and innovative products at Apple. It was cool to feel some of that power firsthand.
  3. As you may surmise from this blog’s name, I like doing different things (music, coding, writing, etc). I love that fact, but it can be hard to do deep work when I am constantly having my interest piqued by different things. I recently asked Tim Ferriss at SXSW what he has found helpful for juggling many interests. His answer was to block time for each, and not on the order of hours, but more like weeks / months. I realized I’d sort of already been doing this. I’d spend one month immersed in a short story I was writing and then naturally drop it for a month while I wrote new songs. My previous framing for this was that having multiple projects allows you to switch to another when you are bored. This is true, but I think bringing more intentionality to how I block time for my interests could be great. This project was my first “formal” test at how dedicating longer time blocks to only focus on one interest at a time would feel. It felt very freeing. The “one new video + project a day” piece was part of the test, but I think in the future when I replicate this I will simply adopt the “this next month is for X” aspect. This forces me to stay focused on the project at hand and more importantly fight my rising boredom by making the current project more interesting rather than switching to another creative project entirely. I think that lesson alone makes the last 30 days worth it.
  4. Social accountability and grand challenges are a wonderful tool for staying committed. After I announced that I would be doing a video everyday, I knew I had to less I risk public “failure”. Even though I knew my “public failure” would amount to maybe a handful of people realizing I quit, what mattered was that I didn’t want to let myself down by being the type of person to announce a goal and then quit. Grand challenges like this also imbue purpose to a given time period in your life. Throughout the month I knew my daily challenges were in service of a larger mission and body of work. That broader context helped me stay positive while in the weeds of some bug. During my weekend inspirations I felt like I had a meaningful reason for noticing the things all around me and the way normal things are presented and designed. The tight feedback loop of idea → project helped build my confidence in my own abilities and plans for what I’d make next. “Wouldn’t it be cool if…” no longer felt like fun coffee chat musings and instead felt like a real brainstorming session for something that would exist if I wanted it to. It was also just fun to have family and friends aware of what I was doing, playing with my projects, leaving comments, and sending me inspiration and ideas throughout the month.
  5. To learn new things, start with the cool thing you want to exist. I’ve learned this lesson again and again as someone who naturally goes the self-teaching route. When I wanted to get better at working with audio files, I built The Hovertone a musical instrument you play with your mouse. When I wanted to learn how to use a user’s camera, I built Joiner. When I wanted to get more comfortable with APIs, I wondered which ideas of mine could benefit by pulling data from APIs. I didn’t lookup “cool API based projects”. I consulted my list of ideas and saw 1) a website that changes color based on the weather outside and 2) turn your Spotify into an iPod. Then I built The Weather Station and iPodify using the free weather API and Spotify API. Start with what interests you, then apply the things you want to learn in service of building it.
  6. It is time to get comfortable using databases. For any project that required storing user input, API keys, or anything else I’ve used local storage. But I am ready to dive into databases now. Will probably use Supabase.
  7. Overworking creates bad work. The days I was burnt out I either ended up making a small project that I wasn’t super proud of or creating a video that didn’t adequately represent the project.
  8. Presenting work is its own creative challenge. I became super aware of how an idea could best be described after taking several takes to explain it. I also got better at quickly summarizing what I mean by “creative programming” and why I like doing it.
  9. I feel a larger ambition growing in me to build a (still creative and fun) product that solves an issue for 100 → 1000 people. Each of this month’s projects represents a possibility. I do not want to dismiss them as “toys” or “experiments” because many of them are awesome in their own right. I also believe starting from your own curiosity and exploring even small or silly seeming things can lead to breakthroughs. However, the truth is I want to apply what I’ve been learning to a single project that at least 100 people love. That will, I hope, come soon.
  10. The last five or so days were the hardest. I felt satisfied with the things I’d built in the first 25ish days and the workload caught up with me. Finding that last bit of energy to power through was challenging. But two of my favorite projects from the month came in the last eight days: The Hovertone and Joiner. So I realize that I can’t forget there is always a next best project up ahead.
  11. You must inject yourself into your work. Do things your way. Forget about how you “should” do things or if you’re “doing it right”. Did you make what you wanted to? Are you proud of it? Make your work in an established medium true to your own sensibilities, interests, style and humor. I had the most fun when I was building things that reflected myself and day to day life most truly. I blended weird fictional elements into my work, made projects inspired by some of my favorite music and artists and the things I was reading, added references to my own city and favorite spots, and included easter eggs of my favorite products, books, music and more.

Thanks to everyone who followed along, checked out the videos and projects, or left a comment or like. This was amazing and I am already pondering my next 30 day challenge. I am very tired and ready to recharge my creative battery for the next project. I sense I will enter a writing mode soon where that becomes my focus for a while. More to come!

, , , , ,

Leave a comment