Projects and Updates, 2019-04-01

Projects and Updates, 2019-04-01

People of Minnesota: eat the last cookie. Please. Don't leave it, don't cut it in half. You crushed the first 49, finish the job.

That's apropos to nothing in this post, it just needed to be said.

Playlist of music in this post: Spotify

The design and testing of a real life space
Previously on C. Kennedy Design: I moved!

One of my main reasons for moving was more space and more hosting. While having friends in my home is fun and rewarding and stuff, this isn't a site about fun and rewarding and stuff... it's a site about design[1], so let's talk design!

When I designed my space, I knew I wanted people to feel comfortable here. Specifically, I knew I wanted:

  • A decent experience for board games,
  • The ability for guests to create and interact in distinct, intimate areas.

The process for arranging and outfitting my home was similar to how a person might design anything else: watch people use it, note the user's pain points and innovations, fix and integrate, do it again.

The Set Up
The public facing space of my apartment vaguely looks like this:

The previous tenant had a the following layout:

Here's my layout:

There are a few things to note in these (beautiful and highly professional) renderings.

I've spent enough time at parties to know that a large chunk of the party will always, invariably, end up in the kitchen. This is because the kitchen is generally where the snacks are and everybody loves snacks.

I've also spent enough time playing board games to know the gaming area should be close to the kitchen, so people getting snacks are still within ear shot, if not eye shot, of what's happening in their game.

Placing the television and couches around the corner from the kitchen allowed me to create an area that was closed off from everything else, creating a space that could be slightly more intimate and removed. I also made sure my albums and art books were in that area, to help spur conversation or give introverts something interesting to look at, if they ever needed a moment.

Watch, Note, Update, Repeat
There have a been a bunch of tweaks to the design along the way; here are two of the more interesting adjustments.

Story time: One evening, I invited people to my place after an event and I made them chocolate chip cookies. As someone who bakes all the time, here are things I personally know about fresh chocolate chip cookies:

  • The cookies are too hot to put directly into your mouth,
  • The cookies are too hot to hold directly in your hand,
  • The cookies have absolutely zero units of structural integrity until they've cooled for about five minutes.

Here's what I've recently learned about hosting people and baking them cookies:

  • The people want the cookies in their mouths like ten seconds ago,
  • The people don't know they're too hot to eat right now,
  • The people don't know they're too hot to hold right now,
  • The people don't know the cookie they are grabbing has zero units of structural integrity,
  • It's not quite as hard to get chocolate stains out of carpet as I feared, but still pretty hard.

Fixing this problem reminded me of the difference between bad designers-of-things and better designers-of-things.

A bad designer-of-things will tell the user they're doing it wrong. In this case, a bad designer-of-things might tell the guests to wait like 5 minutes and then eat the cookies, people!!

This is a bad choice for a few reasons:

  • It's hard to do in a way that isn't a buzzkill. It makes especially no sense coming from me, someone who is a hardcore pusher of food-and-drink decadence.
  • It shifts responsiblity for poor design decisions from the designer to the user, who honestly thinks they're choosing the best course of action: I'm making delicious cookies; obviously people should eat them.
  • Why would I try to dissuade anyone from eating fresh chocolate chip cookies? Fresh chocolate chip cookies are one of life's true, unmitigated joys.[2]

A better designer-of-things just designs a better thing. In this case, a better choice was adding napkin holders. I have them spread throughout my apartment and when someone wants a delicious, melty cookie that's fresh out of the oven, I serve it up on a napkin.

One of the hard parts of being a designer-of-things - whether that's creating software, throwing parties, or writing emails to your coworkers - is releasing the idea that other people aren't doing something correctly.

If I have a large crew over for games and hangs, I'll turn on my Nintendo Switch and let some party games run idly in the background. Eventually, a few people will decide to check it out, a few more people will decide to join in, things snowball from there, and fun is had by all.

Having it on in the background and giving people the option to engage on their own, as they see fit, is a much better option than actively pressing people to start playing at any given point in time. Mandated fun is already a difficult sell, and it makes no sense to break up a fun interaction between a group of people to have them start something else. Setting out a clear, open invitation to engage in the party games gives my friends the opportunity to jump in whenever they're ready.

So far I've only tried this approach with the Switch... it's been fairly easy since the TV attracts attention but is out of the way. I need to find a way to apply a similar approach to board games... if the boxes are sitting on a table, they're in the way of food and drinks; if they're on a shelf, people may not feel welcome to grab them and open them up.

Adding tags to the events/invitations app
I made some updates to the events/invitations app this quarter, perhaps none more important than adding tags.


As the number of people and events in my database increased, it was becoming difficult to track which of my friends liked board games, which new person loved salsa dancing, etc. Tags are a great solution to that problem and, as a bonus, they were already on my list of things to add to the app... the database had tag and linking tables ready to go from day one.

My main focus was getting minimal functionality built as quickly as possible... more than anything I needed help filtering through my data, ASAP. There are still some things to tackle: not all of the results are sorting properly; I'd like to add tag info directly to contact cards; when adding people to events, I'd like to filter by tag.

The simplest solution[3] I found for adding tags to a database was:

  • Identify your table that needs tags (i.e. A contacts table)
  • Create a tags table
  • Create a third table that only has three columns: its own key, the contact foreign key, the tag foreign key.

From there, it's just a bunch of searching the third table, either for a specific contact key or a specific tag key.

The toughest part was deciding what my SQL statements should look like, specifically when I needed to return a list of all tags, while marking which tags were already associated with a given person:


For a while I tried to research and write a perfect SQL command to make it happen. I thought I had it, then realized I was very far off. Eventually I decided to use two SQL commands to grab two sets of results, and manually combine them.

Social Media
I had some thoughts about social media this quarter. Read them here.

I did some python at work to automate document creation. Check that post here.

Favorite Five Albums
Here are my current favorite five albums.
All Things Must Pass, George Harrison
Bear Creek, Brandi Carlile
Black Messiah, D'Angelo
The Hits/The B-Sides, Prince
Metropolis: Suite I (The Chase), Janelle Monáe

Featured songs: Spotify

  1. By volume, it's definitely a site about music. ↩︎

  2. For people who are into eating chocolate chip cookies. ↩︎

  3. I'm not sure if that speficic page is one I used when working through the problem, but it's representative. ↩︎