The Tech Behind My Wedding

I got married in April of this year. I’d like to share the tech we used to make planning and communicating a little easier. Then I will get all mushy at the end.

Project Management

Setting up any large social event takes a bit of planning. We were initially pretty overwhelmed by the amount of things that needed to be done (invitations, ceremony planning, cake tastings, music coordination, and the list goes on and on.) It felt like every time we talked with someone else, there was another thing to consider, and we figuratively chased our tails a lot. What’s more, remembering key deadlines and keeping ourselves on track and motivated was pretty important.

So I thought to myself, “what tools do I know that can help with this?” We need some sort of tool to see what needs to be done and to keep us organized. Pivotal Tracker came to mind, but seemed a bit too geeky and software-specific.

Then I thought of Trello. That seemed lightweight enough, and would provide us with a good dashboard of what needed to be worked on. So step one was to take our list of tasks that started to pile up and put them into Trello.

The next step was figuring out what sorts of columns to do. After some experimenting, we went with the following, from left to right:

  • two months after the wedding
  • every month leading up to the wedding, in reverse chronological order
  • what we are doing this week
  • all done tasks

When a new task came to our attention, we tried to slot it based on the other tasks or when it really needed to be done by. For example, getting a dinner tasting needed to precede deciding which dinner options to choose. Then all tasks hopefully flowed from their month to “this week” or “done”. When a given month was over, we could see what tasks still were not complete and to move them to the subsequent month.

A picture of our Trello Board after the wedding

Trello was a great fit for our situation. It allowed for us to see what the progress on various things was pretty quickly. When you comment on a card, the other person gets a notification, which facilitates asynchronous work. It was easy to use and visually appealing.

The nice thing about keeping cards that could be done later was that we didn’t have to think about them much. “Don’t worry, we don’t need to finalize the DJ until March, let’s focus on something else.” Also, the visual nature of the board allowed us to see that a lot was getting put in the March bucket, so we should probably get some more things done this month to clear some room.

Some Getting Things Done strategies helped to organize things. GTD-aficionados will recognize some of the following. Capturing everything in our trusted system (“If it isn’t in the Trello, then I don’t know about it.”) Asking “what is the next action on this task?” helps to clarify how to unblock a ticket or break it down into sub-tickets. Having a dedicated weekly review so we can review how things are going and reassign or reprioritize tasks.

Overall, I think this approach was a big win. I secretly both loved and hated taking a project management approach to the wedding.


A basic flow of keeping track of guests with addresses and formal names, responses, gifts, thank you cards, and so forth was fairly challenging. To manage this, we ended up using some shared Google Docs spreadsheets. Arguably I could have made some sort of web app, but I think that this got the job done in a decent manner.

At one point, our caterer asked for a list of guests at each table, with what meal they were having. However, we had this information spread across a few spreadsheets. So I copied them to a plain-text file and made a Ruby script to join the lines together. I have no idea how long it would have taken or how many errors I would have made doing this manually, but the Ruby script just generally worked and I was able to do this in like half an hour.

There were probably dozens of times that I cursed the lack of better free tools for these problems (that I could find.) However, I can understand why developers probably don’t want to spend too much time working on things like this.

Wedding Website

One of the tasks was to create a wedding website to give guests a way to see more information about the event. Being the software developer of the couple, I happily fell on that grenade.

There were various wedding website generators out there, but I was not happy with the look of any of them. Since the content of the site seemed simple enough, I decided to try my hand at using a static site generator. I don’t think that I had used one up to that point before, and it was a positive experience.

Quick overview of using a static site generator: basically you write in markdown or some other markup language, and then the generator takes your markup and converts it to plain HTML, CSS, and JavaScript. The benefit of this is that you get extremely fast page load times since you can serve static assets that can be cached or served over a CDN.

A picture of the wedding website


I used Jekyll because I know Ruby and it seems like the best static site generator for Ruby. Jekyll was very easy to develop with, and definitely beat setting up yet another WordPress site. I hosted it on S3, which is pretty easy to do and is very cheap.

One of the use cases of the website was to be viewable on mobile devices. I have too often tried to go to a wedding and look up details on the way and the site was hard to use. Using a style framework ensures that the site remains responsive to different screen resolutions. Skeleton seemed to be a very basic but functional set of CSS files to ease responsive development.

The site lacked style for a little while, and then I embedded some Google Web Fonts to spice things up a bit. Basically this was the styling for the “logo” of the site (just swirly text that I gave a bit of offset to to make it run together a bit.) You can actually select text from the “logo” and it kind of looks funny, but I thought it was a pretty cool effect overall.

Awesome Controller sprite art creation taught me how to use Pixen, so I used that tool to create a custom favicon that looks like two rings that go together. Maybe not the best favicon ever, but hey, it was fun.

Dynamic elements

It was interesting to me how many things on the static site were actually interactive or dynamic. Most of these were taken care of by using JavaScript libraries to do the work on the client-side, or to offload work to another service.

The navigation was actually handled by a Jekyll script that looks at the current URL and sets the selected page correctly at compile-time. I found a decent responsive JavaScript slideshow plugin to show off our engagement photos.

We wanted to ask people what their music choices for the reception were, but I couldn’t think of an easy way to do this at first. Then it hit me. Use a Google Docs Form! Then the answers would be aggregated and I didn’t need to set up any sort of form handling.


OK, so enough technical stuff. :)

I am very excited to be married to a wonderful woman, and we had a fantastic day. It was everything we had hoped for. I think the day was very emotionally memorable, in a positive way. I think the planning helped us to grow stronger together as a couple. I think that it is great to be married, and I love Monica more every day!

A picture at the wedding

Categories: main

« Quick Tip: Audio Reminders for Better Posture How I Try to Mentally Unblock Myself »