00:00:00.900
Hello, foreign.
00:00:12.360
I'm so glad you could make it! Please take a seat and get comfy, because we're about to get started.
00:00:18.420
To start out, who exactly am I? Well, simply put, my name is Brandon. I recently started at Gusto as a principal engineer on the service modularization team, doing all manner of fun things with Ruby and explaining them later.
00:00:25.140
Using a series of illustrated cartoon lemurs brings me to this talk today, so how about we skip the rest of that and go ahead and get started?
00:00:43.739
Now, for those of you who aren't familiar with our adventurous young lemur, let's take a quick look back.
00:00:50.640
This is Red lemur, and he has been on quite a few adventures over the years in programming through many different stories.
00:00:57.059
It all started years ago with 'Reducing Enumerable,' a tale of a student named Red as he journeyed through the lands of Enumerable to learn the powers of reduce from several wise masters.
00:01:02.340
Then it went on to a story of operations and capacity planning during the holiday seasons and scaling Christmas.
00:01:08.280
There was that one time he showed up to conduct a symphony orchestra at RailsConf using the audience's cell phones and WebSockets in the Action Cable Symphony.
00:01:14.280
Then on to an adventure deep in the darkest magics of the Ruby programming language with the dark lord Crimson and the Ruby Grimoire.
00:01:19.380
This brings us right back to Christmas for 'The Night Before Code Freeze,' where we took 'The Night Before Christmas' and gave it a fun twist involving certain time-traveling lemurs.
00:01:27.000
That was from RailsConf 2020, which I unfortunately had to drop but may resubmit again in the future.
00:01:33.299
Returning with stories around the archetypes of expertise, we explore how to apply them to teams, mental health, and other such matters.
00:01:38.579
Additionally, we discuss pattern matching using poker, and finally, we landed at this last talk at RubyConf with a few delightfully fashionable lemurs decorating Ruby.
00:01:44.520
It’s safe to say our friend Red has gone on many adventures over the years, and I hope he will have the chance to go on many more.
00:01:50.460
So, what exactly goes into a talk like one of Red's adventures? To start out, we need to build a foundation.
00:01:56.399
The first part of that process for me is the story. You see, art is great, but what really ties it together is a good story.
00:02:03.420
A good story involves a trial, a victory, a challenge to overcome, and a lesson to be learned. It can transport us to another world, give us wings to fly, and let our imagination soar.
00:02:09.539
It awakens creativity and possibility in our minds, igniting hope. Stories have this wondrous power to ground abstract ideas in reality that we might not have thought possible before.
00:02:15.540
For me, every good talk starts with one of these stories, and every picture helps me tell that story.
00:02:21.300
It could be about anything, and frequently I have a story before I even have a technical concept I want to discuss.
00:02:28.680
Perhaps it’s a detective noir, maybe a musical, getting lost while traveling, or perhaps even a trip to Wonderland or through space and time.
00:02:35.160
There is no real limit to the amount of stories that can be told. The easiest stories are thematic.
00:02:41.819
For example, date and time can be tied to something like Doctor Who, or sea extensions can relate to a pirate seafaring adventure, with a few sea shanties thrown in for fun.
00:02:48.360
After all, what can you get away with? That's kind of the challenge, isn't it?
00:02:54.300
The nice thing is that sometimes those themes can help you refine your competencies and guide example code into something more concrete, giving audiences something to grasp onto.
00:03:03.420
Perhaps the stories I shared when I went to RailsConf two years ago to conduct a symphony orchestra on the audience's cell phones to play Beethoven 6 can help illustrate this point.
00:03:10.560
There are a lot of things you can get away with if you have a good story to tell and a good call for papers (CFP) to sell it.
00:03:17.040
Now, stories are well and good, but these are programming conferences filled with serious programming people.
00:03:23.400
They take programming incredibly seriously; just look at me! I'm a bastion of seriousness—no jokes aside.
00:03:31.440
How do I go about choosing a technical subject to weave a tale around? Well, there are a few things I keep an eye on.
00:03:38.520
The first of which is I like to look at the current zeitgeist or mood of the day, if you will.
00:03:45.840
Before Javier's talk, I thought approximately five people in the audience were going to get that, so thank you very much for introducing that, and my apologies to him and Allah.
00:03:52.500
I also consider what tech I want to focus on, but it's not quite that easy.
00:03:58.680
There are some topics I'd love to cover, but they would be far too complicated to get through in a single talk.
00:04:05.160
Conversely, there are also topics that aren't complicated enough, although I find that's less of a concern than being too complicated.
00:04:10.920
Entry topics are usually well received and not everyone at a conference is a highly experienced practitioner.
00:04:18.600
Now speaking of complexity, you have to remember that you have 30 minutes, maybe 40 if you're lucky.
00:04:24.840
That's much less time than you think because there’s only so much content you can put in a talk.
00:04:31.560
When paired with some of the complexity of the technical subjects you're trying to tackle, there are a few rules I keep in mind.
00:04:38.280
The first of these is the rule of three. Now, what do I mean by that?
00:04:45.150
Let's say we have three main competencies: A, B, and C, all related to a single topic. Any more than that, and it becomes hard to fit in, and your audience retains information less effectively.
00:04:51.960
Ultimately, it will feel like that talk is dragging. Frequently, each of these sections builds on the last, culminating in a conclusion that ties everything together.
00:04:59.880
I have found that three is probably the best balance. Sometimes I might go a little more or a little less, but this is typically what I aim for.
00:05:07.140
The second rule I adhere to is 5-25, which simply means five minutes for the introduction, 20 minutes on the core technologies, and five minutes for a conclusion to tie everything together.
00:05:13.680
Now, I don’t always strictly follow this, but I often get close.
00:05:19.740
If it's a 40-minute talk, I expand this layout, leading me to introduce concepts and to hint at additional lessons in the conclusion.
00:05:26.520
Little breaks, expositions, jokes, and convenient drinks of water can sneak in just to give myself a few seconds.
00:05:32.880
Now that we have the tech and the story, as with any software work, the next thing required is a plan to turn this into reality.
00:05:38.580
We start with the Call For Papers (CFP) outline, which is a skeleton, the core central tenet of your talk.
00:05:45.480
If you have the tech, your three competencies, and the story, you'll find that this is a lot easier than if you try to start from the CFP itself.
00:05:51.720
That's why we emphasize building the foundation first.
00:05:58.560
The abstract in the CFP is perhaps the hardest part for me to write because you're trying to distill an entire talk and capture the essence of everything you want to communicate in one or two paragraphs.
00:06:05.640
This sets the tone of the talk and is perhaps the piece most likely to sell attendees and CFP reviewers on your talk.
00:06:12.060
It's your hook, your introduction to the magic, the story to be told; it’s a window into your imagination, so make sure to polish it well.
00:06:18.660
A good abstract often takes me several hours over the course of weeks to finalize.
00:06:24.480
The abstract will definitely be influenced by the audience I wish to reach.
00:06:29.160
For example, an introductory talk may have an extremely wide audience, applying to many people at the conference but may not be as interesting to a more advanced audience.
00:06:36.420
Especially at a venue like RubyConf, where the audience tends to be more beginner, you'll have a larger audience.
00:06:44.820
Now, an intermediate talk might combine some introductory information, making it harder for new members to follow what's going on, but it can dive deeper into novel techniques.
00:06:52.080
At RailsConf, intermediate talks tend to take center stage, given the assumed knowledge within the Rails community.
00:06:58.560
According to the 2020 Rails community survey, the vast majority of respondents have about four to five years of experience.
00:07:05.880
An advanced talk is one everyone wants to give, but it's also by far the most difficult and typically attracts the smallest audience at the conference.
00:07:12.660
Unless you're speaking at something like RubyKaigi, which is more familiar with that type of content.
00:07:17.640
However, if it targets such a small percentage, you're aiming at a very small target.
00:07:24.420
Even if you have the most amazing talk in the world, you're competing against exceptionally interesting people.
00:07:30.900
This also makes it challenging to get the talk accepted.
00:07:36.840
In any case, remember that you can't be all things to all people.
00:07:43.320
You need to pick an audience, decide what trade-offs you're willing to make in communicating that subject, and how you intend to reach them.
00:07:50.340
If you try to reach everyone, you're likely to reach no one, including the CFP reviewers.
00:07:57.000
Then comes the outline, where you expand on the skeleton of the talk and what you intend to cover in each section.
00:08:03.900
It can serve as either a well-drawn map or a difficult trudge.
00:08:10.860
I personally try not to tie myself too tightly to this, as it tends to change as the talk comes together.
00:08:17.580
As long as the core concepts are there, the rest will follow.
00:08:24.840
The rule of three helps me focus on what I want to do here, as well as 5-25, which books in the core technology concepts with the story to tie it all together.
00:08:31.740
This leads us to the last section, which would be the pitch.
00:08:37.780
It's the final sell of the talk and for me, where I explain some of the thinking behind what may not be fully obvious in the rest of the CFP.
00:08:43.560
That said, the more that is not obvious, the more trouble I'm likely to encounter with reviewers.
00:08:49.920
As a previous reviewer of some of the CFPS here, the pitch is usually the last thing I consider when reading through submissions.
00:08:56.040
Therefore, I need to be sold on it much earlier in the process, likely in something like the abstract.
00:09:02.040
The talk should stand on its own by this point, with the pitch used for final clarifications rather than absorbing a lot of content that likely belongs in other sections.
00:09:08.640
That rounds out the CFP process.
00:09:15.900
The reason I spend so much time on the outline is that it serves as the skeleton that drives and storyboards my talk.
00:09:22.860
I get a stack of index cards, set a timer for five minutes, and sketch out what I’d like each stage of the story to look like.
00:09:30.240
It doesn’t have to be pretty; the goal is to get ideas on paper and visualize the talk instead of obsessing over minute details.
00:09:37.020
It may turn out to be a horrid idea, I may rearrange everything, or I may completely change my outline in this phase.
00:09:43.560
However, this definitely helps me refine my talk down. These are a small portion of the cards from my most recent talk.
00:09:49.440
Sometimes I stick with my plan, and other times, I go in a completely different direction.
00:09:56.520
Now, the big thing is keeping track of what exactly you're doing. I tend to use Google spreadsheets to keep track of everything.
00:10:03.840
What I do is turn each step from the individual sketch to eventually slide decks.
00:10:09.600
I use this to heavily budget my time and try to see how much I'm signed up for, which helps me see if I'm going overboard.
00:10:16.920
This may compel me to drop art or some sections of the story to make it more realistic.
00:10:23.760
You might notice the corner of my spreadsheet mentions a 100-hour time commitment; I’m not joking, and I wish I were!
00:10:30.960
This does take a significant amount of time.
00:10:38.760
This brings me to a very important point: if you get nothing else out of this talk, I want you to hear this: don't overcommit.
00:10:46.920
I'm fairly decent at estimating how long a project will take, but this comes from a lot of practice and many years of experience.
00:10:52.680
Things tend to take much longer than you think, and that can consume significantly more time than you can imagine.
00:10:59.040
Therefore, focus on the core of your talk, getting the main message through first, and then add the flourishes—like icing.
00:11:05.400
If you don’t keep a careful plan, you will find yourself unpleasantly surprised a few weeks before the conference.
00:11:13.560
When I say 'plan,' I mean down to the day. Avoid signing yourself up for five hours of art the week before the conference!
00:11:20.940
As that will be a very difficult thing to do, I know from experience.
00:11:27.300
Make sure to know what you're signing up for and trim that down during your initial planning.
00:11:33.660
I have learned this the hard way, and it can come back to haunt you.
00:11:40.680
You don’t want a crash landing the week before the conference as you're trying to bring everything together.
00:11:45.900
This brings me to the fun part: creating the lemurs themselves and the art surrounding them.
00:11:52.620
In the old days, I would use pencil and paper for a lot of this work. I would start everything in a sketch pad before scanning it.
00:12:00.720
By 'scanning', I mean I would take pictures of it with my phone and then transfer those to my iPad.
00:12:07.320
Resolution didn't matter back then; pack it up, and congratulations, you have a digital sketch!
00:12:13.680
Anyway, point being, with fashionable lemurs, I decided to take the leap and go completely digital for the first time.
00:12:20.520
Now, all I use is an iPad, with the exception of the index cards, which is a habit that won’t die anytime soon.
00:12:27.600
One important thing I always use is a matte screen protector to make it feel more like drawing on paper, as otherwise, my Apple pencil would slide around.
00:12:35.040
The new version of the iPad made this much easier, especially with that matte protector to keep me on track.
00:12:42.240
As for applications, this was one of the first talks I did with lemurs, and I originally used Adobe Illustrator Draw.
00:12:47.220
However, that has since been deprecated, and I now use Adobe Fresco for my drawings.
00:12:55.320
Its successor allows me to use vector artwork, which is very useful for creating stickers and scaling images.
00:13:02.820
I could even create giant cutouts of cartoon lemurs, which surprisingly is quite affordable, although difficult to transport to and from conferences.
00:13:09.780
I don’t think poor Red here survived the flights!
00:13:16.080
Anyways, back to the tools! Let's take a brief look at the simplified process of creating Red, step by step.
00:13:22.620
If you note the timestamps on the screenshot, it's because I kept locking my iPad while trying to take them.
00:13:29.520
Normally, this process takes me about 10 to 15 minutes for a simple character.
00:13:35.640
I start from a blank canvas using a vector brush, which allows me to scale things up to lemur size cutouts.
00:13:43.680
In principle, I carry over traditional habits, like using blue pencil to lay out my initial sketch.
00:13:49.620
This helps me see more clearly amidst the black inking and other phases of the drawing.
00:13:56.160
From there, I create a new layer and start inking, meaning I fill it out with black ink to finalize the drawing along the blue outlines.
00:14:02.520
The blue lines don’t need to be exact. They just provide a rough guide for what I'm creating.
00:14:09.960
Once the base outline is complete, I fill in areas that will be solid black or white to prevent color overlap.
00:14:16.440
Then I hide the blue layer, duplicate that outline layer, and now you’ll see why shortly.
00:14:24.180
I begin color blocking by filling in the bottom duplicate outline layer with colors.
00:14:30.600
I utilize the Hue, Saturation, and Brightness levels, which is one of my favorite tools in this application.
00:14:36.900
For instance, if I need a darker orange tone for the outfit, I can adjust accordingly.
00:14:43.200
After that, it's time to start shading the drawing.
00:14:49.560
The cheat I typically use is to not color the entire area in. Instead, I draw outlines where shadows should go.
00:14:55.920
Next, I use the Hue, Saturation, and Brightness sliders to darken those segments by about five to ten percent.
00:15:01.740
I then fill that in to complete the look.
00:15:08.520
I often utilize a color dropper, which allows me to grab tones from around the image and modify them to use them effectively.
00:15:14.640
Honestly, I typically wing this process, and over time I will fix any inconsistencies in shading.
00:15:21.060
An interesting trick is that I don’t just modify the saturation for shading; I also adjust the hue.
00:15:27.960
For instance, I take a gold tone, shift it left a bit for an orange shadow, and decrease brightness.
00:15:34.440
My rule of thumb is to select a warmer hue for shadows to add some grounding and cooler hues for highlights.
00:15:40.920
This helps create distinct transitions.
00:15:46.140
As for why I use duplicate outlines? Quite frankly, it's because I don’t like coloring inside the lines!
00:15:52.440
This technique allows me to get close to the lines and fill in the rest.
00:15:59.280
After this, I tend to hide the background and add layers to a group, which contains the outline, coloring, and hidden blue lines.
00:16:05.760
This lets me manipulate all these layers together.
00:16:11.280
For example, I may decide to center the character if there’s too much empty space and adjust the size accordingly.
00:16:18.000
The iPad has a lovely feature called Export to Time-Lapse, which I often use to demonstrate my process.
00:16:24.840
However, it doesn’t show which specific tools I used or the details on color and shading.
00:16:30.300
That’s why we covered the previous section together.
00:16:37.860
This entire process results in something that looks like this—a sped-up version of creating a complete lemur.
00:16:44.520
I really do envy this speed; I wish I could draw that quickly!
00:16:49.680
As for how I manage to create so many characters and organize them, there are often 200-plus slides in each of these talks.
00:16:56.160
Sometimes with multiple scenes, character designs, and various elements, there can be a lot going on.
00:17:02.280
To manage complexity, I ensure everything is well named for easy navigation.
00:17:09.000
Let's take a look at this particular build. I start with the background, and subtly, you can see the foreground.
00:17:16.680
This allows me to position characters behind or in front of elements in a scene.
00:17:23.520
Every character is a distinct entity, which enables me to move them around, use keynote animations, or apply other techniques.
00:17:30.840
This brings me dangerously close to animation, which I really shouldn’t do, considering how much time I already spend on these.
00:17:36.540
Keep in mind, the principle rule of creating is to be lazy and reuse elements.
00:17:43.320
In my first conference, I redrew 68 slides from beginning to end, which took way too long.
00:17:50.520
Now, let’s look at this slide and consider how I approached it.
00:17:56.160
Those who know me understand I absolutely hate perspective—even though I’ve tried repeatedly to mastering it.
00:18:02.760
But I discovered a useful trick while playing Minecraft, where I trace perspective buildings in the game.
00:18:09.720
Starting from the base, I trace and try to get an idea of how I want everything to look.
00:18:18.240
As a result, I embellish trees, clock towers, buildings, and even add mountains.
00:18:24.240
After shaping everything, I start color blocking and add shading, which includes some mood lighting.
00:18:30.720
Finally, I add some ambient lighting to bring the scene together.
00:18:36.480
All in all, that specific illustration took me about five to six hours to complete.
00:18:43.260
I do wish I could draw that quickly, though!
00:18:49.380
Let's move on to discussing how I organize slides for my presentations.
00:18:56.760
As I mentioned earlier, I can sometimes have around 200 slides for my talks.
00:19:02.340
Keynote allows you to nest slides, which helps keep track of sections and subsections.
00:19:10.320
Once you reach that number of slides, it becomes a challenge to keep on track.
00:19:16.740
Trust me, scrolling up and down while editing is a frustrating exercise!
00:19:23.940
Now, how do I incorporate code into Keynote?
00:19:30.600
You may recognize this from my past talks, where we discuss topics like prepending a module.
00:19:38.040
With the layout of code on the slides, several techniques come into play.
00:19:45.240
The title appears at the top left, which is particularly useful for viewers watching the presentation later.
00:19:51.420
Often the title indicates exactly which section we are discussing, which is very helpful.
00:19:57.420
Additionally, if a section is convoluted, I might include subtitles.
00:20:01.920
The next feature is the focal character—each section has a core character presenting it, providing visual contrast.
00:20:07.320
The background color of each slide corresponds to the color of that particular lemur.
00:20:12.540
For example, an orange lemur will have an orange background, yellow for a yellow lemur, blue for a blue one, and so forth.
00:20:18.240
Furthermore, the newest addition in my last talk is a subsection count, similar to a page number.
00:20:25.920
This helps further distinguish sections within the presentation and serves as a cheat to remind me if I’m moving too fast or slow.
00:20:32.760
Lastly, I include my Twitter handle so that people can find more resources I've shared.
00:20:39.240
Together, these elements make it easier for viewers to navigate through the content.
00:20:46.920
Moving our focus now to the right section where most of the magic happens.
00:20:53.160
One common trick I employ is using an invisible rectangle drawn on the slide.
00:20:59.460
This allows me to adequately center sections within that shape, which is essential for keeping slides organized.
00:21:06.060
Alignment guides are incredibly handy here; otherwise, I'm left guessing at alignment and precision.
00:21:12.930
Now, coming back to the code itself, I like to use Magic Move, which helps direct focus during specific segments.
00:21:20.580
In part, this allows me to highlight the module first and then show the class method that has been prepended.
00:21:28.740
Notice how the colors differ between the talk method in both the prepended module and the class. This is intentional.
00:21:35.340
The colors represent a superset of syntax highlighting, which I refer to as concept highlighting.
00:21:42.000
This adds clarity about which part of the code pertains to which section.
00:21:47.880
One trick I utilize is to gray out sections that I'm not currently discussing, guiding the audience to the focal point of the slide.
00:21:55.140
In this case, notice how the method is highlighted in red, indicating it comes from the Talkable module instead of the Lemur class.
00:22:02.280
I also like to employ pseudo Ruby to illustrate values in this section of the code, which emphasizes how data flows through each step.
00:22:09.840
Though some might inquire about the magic trick I used to achieve this, unfortunately, I break my own rules in this instance.
00:22:16.320
I usually do the highlighting entirely by hand, and I should probably find a more efficient method.
00:22:22.620
Now, a quick interlude: for those who recall, I do cartoon voices during my talks.
00:22:28.920
Here’s a keyboard for reference; I’ll give you a brief demonstration using octaves.
00:22:36.360
The scale ranges from zero to five, with zero representing very low growly voices, and five indicating high soprano.
00:22:42.420
I am blessed with the range, remarkably spanning from F sharp zero all the way to A4.
00:22:49.080
For those who have heard me sing karaoke, I boast quite a range, which comes in handy for cartoon voices!
00:22:54.780
When I’m singing, I typically stay between bass and baritone, which is one to three on the scale.
00:23:01.620
However, when it comes to mimicry, I can stretch my voice more broadly.
00:23:07.680
But I must be cautious not to strain my voice, avoiding characters above four because of the toll it takes!
00:23:14.040
Now let’s wrap things up with timing.
00:23:19.440
Practice is key! It’s essential to go through your talk from beginning to end several times, noting anything unusual.
00:23:27.480
You’ll be surprised at how much you catch each time you review.
00:23:33.360
And if you can, set up a dry run because only focusing on slide transitions can lead you to miss key speaker notes.
00:23:40.920
If you're only looking at notes, you'll miss slides—and vice versa.
00:23:46.920
In a talk, minor mistakes will often go unnoticed to the audience, yet they'll continue to nag you for the next week!
00:23:53.940
I try to avoid that situation!
00:24:00.000
I usually go through my talk about 10 to 15 times before I deliver it live.
00:24:06.540
Speaker notes help me pace myself and keep centered on the main theme and teaching points.
00:24:12.180
Even though I've winged it a few times, sticking to speaker notes aids me in timing my delivery.
00:24:19.860
One of the best pieces of advice I received about conferences is to use checkpoints.
00:24:26.880
On my dry run, I keep a sheet of paper to record the time I hit each significant section.
00:24:32.280
I repeat this three times to calculate an average for each key segment.
00:24:40.800
This helps me adjust my speech pace throughout the talk.
00:24:46.560
An essential part of this process combines with my 5-25 rule.
00:24:53.640
That is, five minutes for storytelling, twenty minutes for core content, and five minutes for conclusion.
00:25:00.240
Normally, if anything, I make up time in the outro section and come close to that 30-minute mark.
00:25:07.440
Above all, have fun! The goal of these talks is to spread joy and inspire others to envision new possibilities.
00:25:14.040
We should allow ourselves to dream and unconstrain our thoughts from the strictly professional.
00:25:23.400
This is at the heart of the Ruby community; we’re meant to share joy and what gives us life.
00:25:30.900
I look forward to seeing what makes you happy one day too.
00:25:37.320
To wrap things up, it has been quite a journey over the last few years giving these lemur talks.
00:25:43.260
I hope many more are yet to come.
00:25:48.780
Feel free to find me on these various social networks, or follow along on anything else!
00:25:58.860
As always, thank you to everyone who has supported me over the years.
00:26:05.220
From reviewing slides and drawings to tolerating my late-night brainstorm messages, thank you for your time!
00:26:12.540
With that, we'll call it good and say, 'Goodbye!'
00:26:22.620
Foreign.