{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/77EWLiUEjuaV3ULfr68E/YApBp5BDCVrdcZDXfP7o/Q_7UXgzYE-4.js"],
  "sourcesContent": ["import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{ComponentPresetsConsumer as o,Link as r}from\"framer\";import{motion as a}from\"framer-motion\";import*as n from\"react\";import i from\"https://framerusercontent.com/modules/pVk4QsoHxASnVtUBp6jr/VRQHcjrUbz44BGN94kVX/CodeBlock.js\";export const richText=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Nothing is more frustrating than dropping out of your flow state and joining a 30-minute meeting just to give a status update.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,UE3JG9blqsxnpPyvxfMpQgLku8.png\",\"data-framer-height\":\"300\",\"data-framer-width\":\"1290\",height:\"150\",src:\"https://framerusercontent.com/images/UE3JG9blqsxnpPyvxfMpQgLku8.png\",srcSet:\"https://framerusercontent.com/images/UE3JG9blqsxnpPyvxfMpQgLku8.png?scale-down-to=512 512w,https://framerusercontent.com/images/UE3JG9blqsxnpPyvxfMpQgLku8.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/UE3JG9blqsxnpPyvxfMpQgLku8.png 1290w\",style:{aspectRatio:\"1290 / 300\"},width:\"645\"}),/*#__PURE__*/e(\"p\",{children:\"We've all felt this way at one point\"}),/*#__PURE__*/e(\"p\",{children:\"If the point of a standup was just to give a status update, most teams would do them async and standups wouldn\u2019t be as ubiquitous as they are in the industry. The reason we can\u2019t just get rid of standups is that, if they\u2019re done right, they\u2019re invaluable to engineering teams.\"}),/*#__PURE__*/t(\"h3\",{children:[\"What does a \",/*#__PURE__*/e(\"em\",{children:\"good\"}),\" standup achieve? At the end of the day, it\u2019s all about surfacing opportunities for the team to collaborate and solve problems together.\"]}),/*#__PURE__*/e(\"p\",{children:\"Things that happen in good standups:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Someone is working on a problem that someone else can help with, they notice and talk afterwards.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A project is taking longer than estimated, they flag it and the team talks about how to adjust the plan (change scope, get help, etc.)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Create better awareness on the team about what everyone is working on.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Regular team interaction, which leads to psychological safety and people asking for help more.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Why is it so hard to have a standup that sparks collaboration?\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"People don\u2019t know how much or what detail to give in their status updates to help people realize when there\u2019s an opportunity to help out. Not enough detail (e.g. \u201CI\u2019m working on X project\u201D) is not enough for people to notice how they could help. Too much detail and people zone out and stop paying attention, and won\u2019t notice how they could help.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"People rarely think they\u2019re blocked. Engineers are really creative and will keep thinking of new things to try, even when we could have used help days earlier.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"People are uncomfortable asking for help, usually because we assume everyone is busy Doing Important Stuff and we\u2019re the only ones who are lagging behind and we should really hide that fact so no one notices we don\u2019t belong here \uD83D\uDC40\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Engineers are usually spending all of their mental capacity solving hard problems and become totally absorbed in their current problem, which means they forget about the estimated task timeline. It\u2019s also easy to fall into the \u201Cthis is the plan, so we\u2019ll do it however long it takes\u201D trap. Task timeline estimates are usually the last thing on someone\u2019s mind in a standup.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"How to solve these problems and foster more collaboration with standup\"}),/*#__PURE__*/t(\"p\",{children:[\"The good news is that these are solvable problems! The bad news is that there isn\u2019t a one-size-fits-all solution for every engineering team, so you\u2019ll have to experiment with your team to figure out what works for you. Start by aligning on the \",/*#__PURE__*/e(\"em\",{children:\"goals\"}),\" of the standup and take it from there. Check in periodically to see if your process is still working for you.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"Here are some ideas to try:\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Problem:\\xa0People giving too much detail, making others lose focus\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Solution:\\xa0\"}),\"Try async updates via Slack. People are lazy and won\u2019t type much, so you actually need to encourage giving more detail, but it\u2019s unlikely you\u2019ll have to tell people to spend less time on it. Or, if you still want to do synchronous updates, limit the time each person can talk in standups to 2 minutes.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Problem:\\xa0People not giving enough detail to spark collaboration\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Solution:\\xa0\"}),\"Ask people to elaborate if their update is just \u201Cworking on project X\u201D. Ask them what\u2019s the biggest challenge they\u2019re tackling right now.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Problem:\\xa0People don\u2019t think they\u2019re blocked\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Solution:\\xa0\"}),\"Don\u2019t ask if they\u2019re blocked, ask if they could use help (not if they \",/*#__PURE__*/e(\"em\",{children:\"need\"}),\" help).\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Problem:\\xa0People are uncomfortable asking for help\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Solution:\\xa0\"}),\"Normalize it by making it part of a daily practice, celebrate when people ask for help, and build psychological safety on your team by spending time together casually (e.g. coworking independently on your project in \",/*#__PURE__*/e(r,{href:\"https://remotion.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remotion\"})}),\" rooms).\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Problem:\"}),\"\\xa0\",/*#__PURE__*/e(\"strong\",{children:\"Engineers always forget about task timelines because they\u2019re so focused on the problem\"})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Solution:\\xa0\"}),\"Make it someone else\u2019s responsibility to ask them regularly if the task is still on track (in a not-micromanagey way)\"]}),/*#__PURE__*/e(\"h2\",{children:\"How we maximize collaboration in standups at Remotion\"}),/*#__PURE__*/t(\"p\",{children:[\"Here\u2019s our daily standup agenda right now at \",/*#__PURE__*/e(r,{href:\"https://remotion.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remotion\"})}),\" (it\u2019s a constantly evolving process):\"]}),/*#__PURE__*/e(\"h3\",{children:\"Daily async updates in slack on a team basis (e.g. TypeScript engineers).\"}),/*#__PURE__*/t(\"p\",{children:[\"We have a Zapier bot post in the team channel:\",/*#__PURE__*/e(\"br\",{}),\"Hey ts-devs! Let\u2019s sync up in a thread:\"]}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What did you do yesterday?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What do you plan on doing today?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What could you use help with?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How are you feeling today?\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"The \u201Chow are you feeling today?\u201D question is an opening for people to share a little bit about themselves, make the update more human and is also an early warning system for burnout on the team. If people start saying \u201CTired\u201D a lot, something needs to change.\"})}),/*#__PURE__*/e(\"h3\",{children:\"Synchronous team standup on Mondays\"}),/*#__PURE__*/e(\"p\",{children:\"More detailed (but still less than 3 minutes per person) updates about what people are working on and if they could use help with anything.\"}),/*#__PURE__*/e(\"p\",{children:\"Team-wide discussions about:\"}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What we\u2019ll be doing that cycle or how things are going.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Tricky architectural decisions.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Upcoming projects and who will work on what.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Whoever is leading the meeting is in charge of asking people if their projects are still on track.\"}),/*#__PURE__*/e(\"h2\",{children:\"Good standups won\u2019t solve all your problems - building a more collaborative team requires you to change your cultural norms\"}),/*#__PURE__*/e(\"p\",{children:\"In my experience, the high value moments, when one engineer is talking about something they\u2019re working on and another engineer realizes they can help, often happen in hallways or break rooms. It\u2019s really hard to recreate those moments on a remote team, but here are the essential ingredients:\"}),/*#__PURE__*/e(\"h3\",{children:\"Psychological safety (people feel comfortable asking for help)\"}),/*#__PURE__*/t(\"p\",{children:[\"This is a whole thing. Read \",/*#__PURE__*/e(r,{href:\"https://www.ccl.org/articles/leading-effectively-articles/what-is-psychological-safety-at-work/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"this\"})}),\", we like it.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Setting cultural expectations that people should ask for help and work together\"}),/*#__PURE__*/e(\"p\",{children:\"Example: proactively encourage casual collaboration, jams, etc. in standup or other meetings.\"}),/*#__PURE__*/e(\"h3\",{children:\"Space to casually work independently in parallel (fosters spontaneous conversation AKA the secret sauce)\"}),/*#__PURE__*/t(\"p\",{children:[\"We create this space using coworking rooms in \",/*#__PURE__*/e(r,{href:\"https://remotion.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remotion\"})}),\". We use these types of rooms:\"]}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Company-wide rooms (e.g. Coworking Lounge) for people to work independently and unmute for casual chats.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Team-specific rooms (e.g. TypeScript eng) for people to work independently and sometimes unmute to ask for help or chat.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Project-specific rooms for people to pair and work closely together on the same project.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Over time, people will get to know each other better, have more casual conversations, and end up feeling more comfortable asking for help. You can set up these coworking rooms in \",/*#__PURE__*/e(r,{href:\"https://www.remotion.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remotion\"})}),\" for free.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"Have feedback or other thoughts about standup?\\xa0Let me know at harriet at remotion dot com or on twitter \",/*#__PURE__*/e(r,{href:\"https://twitter.com/remotionco\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"@remotionco\"})}),\".\"]})]});export const richText1=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"TL;DR: If you\u2019re excited about SwiftUI but still need to write AppKit, use NSStackViews. They\u2019ll bring some similar benefits, and make it easier to migrate to SwiftUI later.\"})}),/*#__PURE__*/e(\"h1\",{children:\"The nib file revolution is over\"}),/*#__PURE__*/e(\"p\",{children:\"For macOS and iOS projects, the future is certainly SwiftUI. The SwiftUI approach to interface layout using code is an efficient, easy-to-understand representation of internal state. But what if you are working with a legacy code base, and aren\u2019t ready to fully commit to SwiftUI?\"}),/*#__PURE__*/e(\"p\",{children:\"As a long-time macOS/iOS developer, I\u2019ve been using \u201Cnib\u201D files for years. Decades! These data representations of a user interface were revolutionary at the time: Not only could you \u201CWYSIWYG\u201D lay out your interface visually, you could connect your code with the interface elements bidirectionally, avoiding a ton of glue code required in other interface-building paradigms. Along the way, Apple also gave us Storyboard files, with additional advantages such as transitions and navigation.\"}),/*#__PURE__*/e(\"p\",{children:\"However, as the years have gone by, many disadvantages to using nib files have cropped up. Adaptive UIs means that pixel-based layouts were are longer relevant in many cases. Unlike the traditional springs-and-struts, layout constraints are tedious to specify and get just right. Merge conflicts in a multi-author team happen more than we\u2019d like. And in a complex project with many nested custom views and view controllers, boilerplate glue code has become more and more necessary.\"}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/e(\"h1\",{children:\"Pulling SwiftUI-like benefits into AppKit\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/630683ff3595cc7cd7566227_dock.png\"}),/*#__PURE__*/e(\"p\",{children:\"My Remotion dock\"}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/e(\"p\",{children:'Our native Mac app, Remotion, started out being written in AppKit before SwiftUI came on the scene. Of course, we recognize that SwiftUI is where we all should be moving \u2014 as Paul Hudson said, \"SwiftUI is the future. Not the distant future, the imminent future.\u201D'}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,rzubiFursE1yrcR0fgxtJSwMaKg.png\",\"data-framer-height\":\"450\",\"data-framer-width\":\"1196\",height:\"225\",src:\"https://framerusercontent.com/images/rzubiFursE1yrcR0fgxtJSwMaKg.png\",srcSet:\"https://framerusercontent.com/images/rzubiFursE1yrcR0fgxtJSwMaKg.png?scale-down-to=512 512w,https://framerusercontent.com/images/rzubiFursE1yrcR0fgxtJSwMaKg.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/rzubiFursE1yrcR0fgxtJSwMaKg.png 1196w\",style:{aspectRatio:\"1196 / 450\"},width:\"598\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"br\",{}),\"Some benefits of SwiftUI over legacy AppKit (and UIKit) building techniques include:\"]}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Easier to adapt to varying screen/window sizes\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Not having to deal with merge conflicts in nib/storyboard files\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A terse, easy-to-understand representation of layout and internal state\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Though we will be gradually implementing some pieces of Remotion in SwiftUI, we can still make headway toward that future by building our interfaces in a way that\u2019s closer to SwiftUI than to legacy, nib/storyboard-based interfaces.\"}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/e(\"h1\",{children:\"Stacks and stacks of stacks\"}),/*#__PURE__*/e(\"p\",{children:\"If you\u2019ve looked into SwiftUI, you\u2019ll notice that the HStack and VStack constructs are ubiquitous. There\u2019s a reason for that: many user interfaces can be decomposed into nested groups of horizontal or vertical \u201Cstacks.\u201D Thinking of a layout in terms of nested stacks is also a great way to make sure that a layout is adaptive to changing container sizes, such as the variety of iPhone screen sizes or resizable Mac window sizes.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/6306845c3595cc20885664d9_calendar%20broken%20down.png\"}),/*#__PURE__*/e(\"p\",{children:\"For instance, we could decompose the main window of Apple\u2019s Calendar application into a series of nested vertical and horizontal stacks.\"}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/e(\"h1\",{children:\"When not to use stack views\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/63077e1e95aae0eb6cef80bf_integrations.png\"}),/*#__PURE__*/e(\"p\",{children:\"Remotion's preferences, implemented with nibs\u2014not stack views\"}),/*#__PURE__*/e(\"p\",{children:\"Of course, some kinds of windows and views are still great candidates for specifying using a nib or a storyboard. Static, unchanging layouts such as preference panes or inspector panels, or custom alerts and dialogs are great for nibs; our App uses them in these cases. Complex, multi-level interfaces such as assistants and master-detail navigation can be built up with storyboards. (Our onboarding window is ideal for this technique.)\"}),/*#__PURE__*/e(\"p\",{children:\"However much in the Remotion application is a dynamic layout, consisting of a one- or two-dimensional collection of interface elements that can\u2019t really be specified in a graphical manner because the contents aren\u2019t determined at implementation time. For these, we need to use one of Apple\u2019s other container classes. For some, like our call window that shows a matrix of circular videos of participants in a call, the NSCollectionView is the best approach. In other cases, such as our lists of users and rooms, the NSTableView is the best way to present the data.\"}),/*#__PURE__*/e(\"p\",{children:\"But for mixed-bag situations, such as our inspectors for users and rooms, we\u2019ve found that the best way to build up the interface is with nested stack views.\"}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/e(\"h1\",{children:\"We\u2019ve found stack views are best implemented programmatically\"}),/*#__PURE__*/e(\"p\",{children:\"While it\u2019s possible to build a nib file with stack views, we\u2019ve avoided doing this for two main reasons:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The contents of the stack view often aren\u2019t known until run-time. For example, different views are presented depending on whether a user depicted is the user of the app or one of their teammates, whether they are online or offline, whether they are currently talking to another teammate, etc.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"We have a lot of custom views that require their own custom view controllers, and it\u2019s not possible to embed a view controller with associated view within a nib. We found ourselves creating empty container NSView objects in the nib, and then writing glue code to insert a view controller and view into that container. That ended up being quite a mess!\"})})]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/6306877d92576c953b860928_room-composite.png\"}),/*#__PURE__*/e(\"p\",{children:\"As an example, here is an inspector for one of our rooms, as exploded by Xcode\u2019s \u201CDebug View Hierarchy\u201D tool. Notice how many stack views are used to compose the layout.\"}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/e(\"h1\",{children:\"How to programmatically write view controllers with stack views\"}),/*#__PURE__*/t(\"p\",{children:[\"In order to break out of the pattern of loading a view from a nib file and a view controller, the easiest way is to override \",/*#__PURE__*/e(\"em\",{children:\"loadView()\"}),\" and set the value of the view controller\u2019s \",/*#__PURE__*/e(\"em\",{children:\"view\"}),\" yourself. Be sure not to call \",/*#__PURE__*/e(\"em\",{children:\"super.loadView()\"}),\" since that will attempt to load a nib file.\"]}),/*#__PURE__*/e(a.div,{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/VRQHcjrUbz44BGN94kVX/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(i,{...t,code:\"override func loadView() {\\n  view = NSView()\\n  view.addSubview(stackView)\\n  ...\\n}\",language:\"Swift\"})})}),/*#__PURE__*/t(\"p\",{children:[\"Note: We\u2019ve found through trial and error that setting an NSStackView or NSCollectionView to be view controller\u2019s \",/*#__PURE__*/e(\"em\",{children:\"view\"}),\" can result in some errors when the view was deallocated, so we \",/*#__PURE__*/e(\"em\",{children:\"always\"}),\" add an empty NSView and add our stack view or collection view nested inside of this.\"]}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/t(\"p\",{children:[\"Because we are creating a lot of stack views in code, we\u2019ve created a new convenience constructor so we can specify typical parameters quickly. It\u2019s based loosely on the built-in \",/*#__PURE__*/e(\"em\",{children:\"init(views: [NSView])\"}),\" which returns a horizontal stack view with the given views in the \u201Cleading\u201D gravity area, and has translatesAutoresizingMaskIntoConstraints set to false. In our constructor, everything has a default value so it can be left unspecified.\"]}),/*#__PURE__*/e(a.div,{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/VRQHcjrUbz44BGN94kVX/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(i,{...t,code:\"extension NSStackView {\\n  public convenience init(orientation: NSUserInterfaceLayoutOrientation = horizontal,\\n                          // default: center X/Y\\n                          alignment: NSLayoutConstraint.Attribute? = nil,\\n                          distribution: NSStackView.Distribution = gravityAreas,\\n                          spacing: CGFloat = 8.0,\\n                          views: [NSView]? = nil) {\\n    self.init()\\n    translatesAutoresizingMaskIntoConstraints= false\\n    self. orientation = orientation\\n    self.alignment = alignment ?? (orientation == .vertical ? centerx : .centerY)\\n    self.distribution = distribution\\n    self. spacing = spacing\\n    if let views = views {\\n      for view in views\\n        addView (view, in: leading)\\n      }\\n    }\\n}\",language:\"Swift\"})})}),/*#__PURE__*/e(\"p\",{children:\"\u200DThis allows us to specify a stack view with very little code! For instance:\"}),/*#__PURE__*/e(a.div,{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/VRQHcjrUbz44BGN94kVX/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(i,{...t,code:\"private lazy var iconAndTitleStackView\\n  = NSStackView(distribution: .fill,\\n                spacing: 4.0,\\n                views: [roomIconViewWrapper, peopleViewWrapper, titleLabel])\",language:\"Swift\"})})}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/e(\"h1\",{children:\"Looking ahead to SwiftUI\"}),/*#__PURE__*/e(\"p\",{children:\"Although this code looks nothing like SwiftUI and migrating will still be a major investment, we get some similar benefits: Code is broken down into small components. Merge conflicts are rare and easy to resolve. And the UI already uses the helpful conceptual layout of nested horizontal stack and vertical stacks\u2014so we won\u2019t need to rethink the view hierarchy when it\u2019s time to migrate.\"}),/*#__PURE__*/e(\"p\",{children:\"Of course, SwiftUI still has a number of advantages. In areas where we are starting to migrate our legacy stackview-based layouts to SwiftUI, the amount of setup and layout code is greatly reduced and it\u2019s much easier to conceptualize how data flows to build up the interface.\"}),/*#__PURE__*/e(\"p\",{children:\"How is your team approaching adopting SwiftUI? Would love to hear your thoughts and feedback at dan at remotion dot com.\"})]});export const richText2=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"TL;DR:\"}),\" We had a major outage. We wanted to increase stability. The obvious way is to increase process & testing, but a better way is to ship more frequently.\"]}),/*#__PURE__*/e(\"h2\",{children:\"The debate: To write tests or not to write tests?\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/62f429eeeafac51ae46b23d8_skull.jpeg\"}),/*#__PURE__*/e(\"p\",{children:\"At Remotion, whether or not to write tests is left up to the individual engineer\u2019s discretion. Basically: \u201CWill tests help you ship this feature faster?\u201D There are some obvious places where tests help (e.g. server functions) and obvious places where they\u2019re hard (e.g. integrations). But there\u2019s a wide in-between space, and the the team frequently debates the right level of testing.\"}),/*#__PURE__*/e(\"p\",{children:\"This resurfaced recently when we had a major user-facing outage. Our unexpected conclusion: instead of increasing stability by writing more tests, increase stability by shipping more frequently.\"}),/*#__PURE__*/e(\"h2\",{children:\"Our mistake: Shipping multiple changes to a complex system, all at once\"}),/*#__PURE__*/t(\"p\",{children:[\"We recently prepared for a \",/*#__PURE__*/e(r,{href:\"https://www.producthunt.com/products/remotion#play-spotify-together-by-remotion\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{href:\"https://www.producthunt.com/products/remotion#play-spotify-together-by-remotion\",rel:\"noreferrer noopener\",children:\"product launch\"})}),\" with large and risky changes. The changes were large and risky. In our rush to release, commits were coming in fast and the main branch was never quite stable enough to deploy. We ended deploying all the changes at once, under time pressure near the end of our release window.\"]}),/*#__PURE__*/e(\"p\",{children:\"During testing in our staging environment, we\u2019d noticed some issues: Certain app interactions felt slow, and our Slack integration fired some duplicate notifications. After investigation, the issues seemed unrelated to our changes. We chalked the issue up to temporary Google Cloud Platform (GCP) or Slack server issues, and deployed.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/62f42a6eed2763a81e774db4_Screen%20Shot%202022-08-10%20at%204.58.59%20PM.png\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Narrator: But everything was not fine\"})}),/*#__PURE__*/e(\"p\",{children:\"\u200D\"}),/*#__PURE__*/t(\"p\",{children:[\"The next morning, we got user reports of \u201C5+ repeated slack messages\u201D and app slowdowns\u2014the same issues we saw but discounted when testing. Our first response was to mitigate the most critical user facing issue of repeated Slack notifications. We went for simple and just disabled the feature. To our surprise, disabling Slack notifications \",/*#__PURE__*/e(\"em\",{children:\"also\"}),\" fixed our servers\u2019 slow response times!\"]}),/*#__PURE__*/e(\"h2\",{children:\"Root cause: Adding a retry\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/62f41f630b52a6dc0b17fae4_diagram.png\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"Yes, now that we\u2019ve drawn this diagram the problem is obvious. \"}),\"\uD83E\uDD26\"]}),/*#__PURE__*/e(\"p\",{children:\"Turns out adding a retry to a commonly called function was the root cause. When a user joins a \u201Croom\u201D in Remotion, we need to both access and mutate rooms in our database. This often happens in bursts, such as when many people simultaneously join a room for standup. The retry was an attempt to work around the resulting contention issues.\"}),/*#__PURE__*/t(\"p\",{children:[\"However, the problem is that this code also calls a Slack API mid-transaction. When we retried, Slack quickly used exponential backoff \",/*#__PURE__*/e(r,{href:\"https://api.slack.com/docs/rate-limits\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{href:\"https://api.slack.com/docs/rate-limits\",rel:\"noreferrer noopener\",children:\"rate limiting\"})}),\". Resulting in failed, slow transactions. Resulting in even more retries. And loop.\"]}),/*#__PURE__*/e(\"p\",{children:\"Ultimately, the issue was a combination of unexpected behaviors from multiple systems interacting with each other. The underlying architecture was flawed, but it took a small, seemingly unrelated change to break it.\"}),/*#__PURE__*/e(\"h1\",{children:\"Preventing repeat issues without slowing down\"}),/*#__PURE__*/e(\"p\",{children:\"In our retro, we discussed what changes we needed to make to prevent this from happening again: The obvious reaction was to write new tests and add more rigor to processes like code review. For this specific issue, the tests we\u2019d need would be complex mocks of external systems. Expensive and difficult to build accurately.\"}),/*#__PURE__*/e(\"p\",{children:\"More generally, we weren\u2019t excited about increased testing and code review requirements. Startups win by moving fast, and these options push us away from \u201CSpeed\u201D in the classic engineering triangle.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/62f41f70c69d4aff8bbf14b0_pyramid.png\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Instead, we aligned on a radical alternative approach: Improve reliability by speeding up shipping to users:\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/62f41f7d59b4fc74be2f05d2_graph.png\"}),/*#__PURE__*/e(\"h2\",{children:\"Our solution: Ship more to unbreak quickly\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Make it easy to deploy quickly with automation\"}),/*#__PURE__*/t(\"p\",{children:[\"Deployments can easily involve painful manual steps, especially if you ship \",/*#__PURE__*/e(r,{href:\"https://www.remotion.com/blog/why-remotion-is-a-native-macos-app-not-electron\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{href:\"https://www.remotion.com/blog/why-remotion-is-a-native-macos-app-not-electron\",rel:\"noreferrer noopener\",children:\"native code on Apple platforms like us\"})}),\". We\u2019ve found investing in automation and simplification to be well worth it. The easier it is to ship, the more it happens.\"]}),/*#__PURE__*/e(\"h3\",{children:\"2. Make it easy to deploy quickly by creating a culture of trust and followup\"}),/*#__PURE__*/e(\"p\",{children:\"In the face of mistakes, process builds up like scar tissue. Most of that process is unnecessary\u2014in fact it\u2019s probably demotivating to your strongest performers. Instead of adding process, celebrate mistakes. Make it an opportunity to reinforce the level of trust across the team. And build a culture of following up on releases rapidly in response to metrics or feedback.\"}),/*#__PURE__*/e(\"h3\",{children:\"3. Ship small pieces instead of large blocks\"}),/*#__PURE__*/e(\"p\",{children:\"Shipping a giant project all at once is harder than shipping smaller milestones. We all know it, but projects frequently become monolithic\\xa0releases despite our best efforts. It happens to us at Remotion all the time! We don\u2019t have any silver bullets for this, but it\u2019s useful to remind ourselves. Plus, frequent deploys makes shipping milestones much more rewarding.\"}),/*#__PURE__*/e(\"h3\",{children:\"4. Write tests when they speed up development\"}),/*#__PURE__*/e(\"p\",{children:\"I always tell my team: \u201CTests are not process. They are a developer tool.\u201D\"}),/*#__PURE__*/e(\"h2\",{children:\"Thanks for reading\"}),/*#__PURE__*/e(\"p\",{children:\"Although we write more tests than this post may lead you to believe, the recent outage was a great opportunity to reaffirm the culture of trust and ownership that we\u2019re building at Remotion. Building it is both a learning process, and a work in progress.\"}),/*#__PURE__*/e(\"p\",{children:\"I\u2019d love your thoughts and feedback. Just email me at charley at remotion dot com.\"})]});export const richText3=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"One of my favorite aspects of the Remotion software is the ability to send and receive Emojis to and from my colleagues.\"}),/*#__PURE__*/e(\"p\",{children:\"Our emoji sending includes custom animation for certain characters (such as a bicycle \uD83D\uDEB2 or rocket \uD83D\uDE80 moving from one side of its window to the other, or raised hands \uD83D\uDE4C moving up in celebration).\"}),/*#__PURE__*/e(\"p\",{children:\"We even replaced certain emoji (e.g. fireworks \uD83C\uDF86, donuts \uD83C\uDF69) to take advantage of Apple\u2019s particle animation engine for some spectacular effects.\"}),/*#__PURE__*/e(\"p\",{children:\"Sending emoji in Remotion is a great way to stay connected to your teammates throughout the day. Fun as a back-channel during a stand-up meeting or informal presentation, or just to say hello.\"}),/*#__PURE__*/t(\"p\",{children:[\"This week, Apple has released the version 12.3 update to its Monterey operating system, and with that update \u2014 along with the update to iOS version 15.4 \u2014 comes \",/*#__PURE__*/e(r,{href:\"https://blog.emojipedia.org/first-look-new-emojis-in-ios-15-4/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"a new batch of emoji\"})}),\". \\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"We are proud to share that Remotion already contains support for these new emoji. As long as you and your colleagues are running this latest operating system, you can start sending each other melting faces, salutes, and so much more!\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,YrWMOfBuZY7Z0uRQeghFSuXtS9A.png\",\"data-framer-height\":\"632\",\"data-framer-width\":\"2000\",height:\"316\",src:\"https://framerusercontent.com/images/YrWMOfBuZY7Z0uRQeghFSuXtS9A.png\",srcSet:\"https://framerusercontent.com/images/YrWMOfBuZY7Z0uRQeghFSuXtS9A.png?scale-down-to=512 512w,https://framerusercontent.com/images/YrWMOfBuZY7Z0uRQeghFSuXtS9A.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/YrWMOfBuZY7Z0uRQeghFSuXtS9A.png 2000w\",style:{aspectRatio:\"2000 / 632\"},width:\"1000\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"The newest batch of emoji.\"})}),/*#__PURE__*/e(\"p\",{children:\"We\u2019re very interested in designing software for inclusion, so a new feature in our software is the support for multiple skin tones in our Emoji sending.\"}),/*#__PURE__*/e(\"p\",{children:\"Much like other software that allows you to pick emoji, you can now choose a skin tone that reflects you. You can keep sending the generic yellow emojis representing people, or you can pick one of the five skin tones (light, medium light, medium, medium dark, and dark) and send your emojis that way!\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,yTCyL1tujhuAdmwpgUqBXOl8NA.png\",\"data-framer-height\":\"1847\",\"data-framer-width\":\"1654\",height:\"923\",src:\"https://framerusercontent.com/images/yTCyL1tujhuAdmwpgUqBXOl8NA.png\",srcSet:\"https://framerusercontent.com/images/yTCyL1tujhuAdmwpgUqBXOl8NA.png?scale-down-to=1024 916w,https://framerusercontent.com/images/yTCyL1tujhuAdmwpgUqBXOl8NA.png 1654w\",style:{aspectRatio:\"1654 / 1847\"},width:\"827\"}),/*#__PURE__*/e(\"p\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"em\",{children:\"Our emoji picker with medium-dark skin tone selected.\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/6234aa321912ce291d44f443_Screen%20Shot%202022-02-14%20at%209.49.13%20AM.png\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,QpBYqhCGynZJ53jLbanC263O4.png\",\"data-framer-height\":\"1844\",\"data-framer-width\":\"1648\",height:\"922\",src:\"https://framerusercontent.com/images/QpBYqhCGynZJ53jLbanC263O4.png\",srcSet:\"https://framerusercontent.com/images/QpBYqhCGynZJ53jLbanC263O4.png?scale-down-to=1024 915w,https://framerusercontent.com/images/QpBYqhCGynZJ53jLbanC263O4.png 1648w\",style:{aspectRatio:\"1648 / 1844\"},width:\"824\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Our emoji picker with the skin-tone chooser visible and light skin tone currently selected.\"})}),/*#__PURE__*/e(\"p\",{children:\"\u200DWe\u2019re proud of our emoji picker \u2014 we\u2019ve had to create our own custom picker for technical reasons. (Specifically, Apple\u2019s picker only works for inserting emojis into editable text, so picking an emoji outside of that context isn\u2019t possible).\"}),/*#__PURE__*/e(\"p\",{children:\"One improvement we can offer over Apple\u2019s emoji picker (which you use for inserting emoji into text) is that when it comes to the two-tone emoji \u2014 such as the brand-new handshake emoji \u2014 you can choose a handshake based on your chosen tone in combination with any of the five skin tones.\"}),/*#__PURE__*/e(\"p\",{children:\"Notice the skin tone for the hand on the left matches the rest of the single-tone emoji, while the hand on the right varies from light to dark.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,oUWQwuzOrNe5Z7PvCFYCvsDbQdI.png\",\"data-framer-height\":\"285\",\"data-framer-width\":\"2000\",height:\"142\",src:\"https://framerusercontent.com/images/oUWQwuzOrNe5Z7PvCFYCvsDbQdI.png\",srcSet:\"https://framerusercontent.com/images/oUWQwuzOrNe5Z7PvCFYCvsDbQdI.png?scale-down-to=512 512w,https://framerusercontent.com/images/oUWQwuzOrNe5Z7PvCFYCvsDbQdI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/oUWQwuzOrNe5Z7PvCFYCvsDbQdI.png 2000w\",style:{aspectRatio:\"2000 / 285\"},width:\"1000\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"A closer look at the two skin tone emoji.\"})}),/*#__PURE__*/t(\"p\",{children:[\"Because we\u2019ve had to do some work under the hood to support our own emoji picker, we thought that it might be helpful to release some of our work to the developer community. So we are announcing our \",/*#__PURE__*/e(r,{href:\"https://github.com/Remotionco/Emoji-Library-and-Utilities\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"strong\",{children:\"Emoji-Library-and-Utilities\"})})}),\" repository on GitHub. It\u2019s open-source (MIT License) for developers to get an easy-to use set of emoji, along with Swift code (in the file EmojiUtilities.swift) for reading our data files and manipulating the emoji to add skin tones where appropriate.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The source code also includes methods for reading the latest versions of the Emoji data from the Unicode Consortium, so more advanced developers may wish to use this as a starting point for manipulating Emoji data for other purposes. (At this point, our repository includes the data and manipulation but not any UI components. Be sure to see the \",/*#__PURE__*/e(r,{href:\"https://github.com/Remotionco/Emoji-Library-and-Utilities/blob/main/README.md\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"README.md\"})}),\" file in the package for more details.)\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(a.div,{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/VRQHcjrUbz44BGN94kVX/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(i,{...t,code:'\uFE19\\n\"\uD83C\uDF04\":[\"sunrise over mountains\",\"morning mountain sun\"], \\n\"\uD83C\uDF05\":[\"sunrise\",\"morning sun\"],\\n\"\uD83C\uDF06\":[\"cityscape at dusk\",\"city evening landscape sunset\"],\\n\"\uD83C\uDF07\":[\"sunset\",\"dusk sun buildings\"]\\n\uFE19',language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"An excerpt of EmojiAnnotations.json, which you can use for captions or searching.\"})}),/*#__PURE__*/e(a.div,{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/VRQHcjrUbz44BGN94kVX/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(i,{...t,code:\"\uFE19 \\n\uD83D\uDCAA,1 \\n\uD83E\uDDBE,,12 \\n\uD83E\uDDBF,,12 \\n\uD83E\uDDB5,1 \\n\uD83E\uDDB6,1 \\n\uD83D\uDC42,1\\n\uFE19\",language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"An excerpt of Categories.csv. Each line contains an emoji character with additional information such as whether it supports adding skin tones and what version of Emoji it is first available in.\"})}),/*#__PURE__*/t(\"p\",{children:[\"We hope that this will help foster the sense of inclusiveness in more software! Tweet \",/*#__PURE__*/e(r,{href:\"https://twitter.com/danwood\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"@danwood\"})}),\" or \",/*#__PURE__*/e(r,{href:\"https://twitter.com/remotionco\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"@remotionco\"})}),\" with any thoughts. And check out my blog post on why we're proud to be building a \",/*#__PURE__*/e(r,{href:\"https://www.remotion.com/blog/why-remotion-is-a-native-macos-app-not-electron\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"native macOS app\"})}),\".\"]})]});export const richText4=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"br\",{}),\"For startups like us (Series A; 11-20 people) it\u2019s a tough climate for startup hiring. We\u2019re hearing other founders and top recruiters quote half-year+ timeframes for hiring for many roles.\"]}),/*#__PURE__*/t(\"p\",{children:[\"That\u2019s forced us to get creative. At this point we think the \u201Cstandard\u201D way many early startups hire actually makes it harder to build a high-performing, diverse team. \",/*#__PURE__*/e(\"strong\",{children:\"Candidates with unique, valuable experiences often fall through the cracks of a standardized interview process\"}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Dominant thinking around hiring for early stage startups: use a linear process, leaning on standardized loops to get consistent results and reduce bias.\"}),/*#__PURE__*/e(\"p\",{children:\"In other words: match the tried-and-true processes of bigger tech companies. The intentions of this approach are great, but we think there\u2019s a better way for early-stage startups to hire stronger, more diverse talent. We call it objective-based recruiting.\"}),/*#__PURE__*/e(\"h2\",{children:\"First: why the standard process makes hiring harder for early-stage startups\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"1. Standardized loops screen for weakness instead of creating opportunities to highlight diverse strengths.\"})}),/*#__PURE__*/e(\"p\",{children:\"Though standardized interview loops help calibrate the hiring panel and reduce bias, they tend to be overly focused on mitigating risk. They get signal the same way for every candidate, and focus on flagging any significant weaknesses.\"}),/*#__PURE__*/e(\"p\",{children:\"To state the obvious, diverse candidates show their strengths in diverse ways. If we assess everyone the same way, we might overlook candidates who have different strengths from us. We risk building a monoculture of people who solve problems in the way we already do.\"}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Example:\"}),\" a mobile engineer who has worked as a developer for a large/older non-tech company doesn\u2019t have experience working with \u201Cstandard\u201D toolchains (like Github) but has deep knowledge in the mobile platform. Their weakness in existing toolchains might mean they get knocked out of an interview process, despite the ability to provide your startup with massive value.\"]})})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"2. A cookie cutter process = higher drop-off and lower offer accept rates.\"})}),/*#__PURE__*/e(\"p\",{children:\"Startups are struggling with candidates declining offers or even accepting competing offers mid-process. If a process is optimized to find a cookie cutter candidate, a candidate might not feel like their unique abilities are needed. They won\u2019t see how their work will have a big impact on the team\u2014the main reason they\u2019d join an early stage startup over a larger company.\"}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Example:\"}),\" A senior engineer who wants to join an early stage company, specifically because they have specialized experience around solving for a type of user the startup builds for. With a standardized process, the engineer\u2019s relevant experience may not come up.\"]})})}),/*#__PURE__*/e(\"p\",{children:\"Sometimes candidates also drop off because a standard loop doesn\u2019t fit in with their life or where they are in their job search.\"}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Example:\"}),\" A strong candidate who is a recent parent returning from parental leave. They might drop out because they don\u2019t have time to complete a take-home project, despite being highly qualified.\"]})})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"3. The standardized process under-leverages the expertise of the best candidates, and leaves you no room to be surprised.\"})}),/*#__PURE__*/e(\"p\",{children:\"When hiring for a specialist role or a new function we\u2019re unfamiliar with, the standard process has us predicting which precise role is needed and how to assess candidates for it. If we\u2019re wrong, we can end up with the wrong person for the business problem.\"}),/*#__PURE__*/t(\"p\",{children:[\"This under-leverages candidates, who know their fields and competencies best. On the other hand, if we have a collaborative conversation about the best way to solve our business problems, and whether the candidate wants and is able to do \",/*#__PURE__*/e(\"em\",{children:\"that\"}),\" role, we\u2019re more likely to make a successful hire.\"]}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"\u200D\",/*#__PURE__*/e(\"strong\",{children:\"Example:\"}),\" A team of systems engineers needs to hire a web developer to build a frontend for their app. Instead of hiring for someone with a spike in UI, they will naturally bias toward hiring another engineer with strong systems ability, just one that has some familiarity with web tech, instead of a design-oriented engineer that may not know the right \u201Csystems\u201D jargon.\"]})})}),/*#__PURE__*/e(\"p\",{children:\"Business objectives and candidates are constantly in flux, but rest of the hiring process is rigid. Why not flex it to everyone\u2019s needs? Ultimately, the only thing that matters is finding candidates who want to help us achieve our objectives, and have the skills to match.\"}),/*#__PURE__*/e(\"h2\",{children:\"An idea: Objective-based recruiting\"}),/*#__PURE__*/e(\"p\",{children:\"We\u2019ve collected a number of ways to flex our hiring process. Some are home-grown, and most we learned from other folks. They all fall under the principle of \u201CObjective-based recruiting.\u201D\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Objective-based recruiting in a nutshell: Lead with a focus on business objectives, then flex the interview process to gain conviction candidates can solve those objectives.\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"This approach ensures we don\u2019t miss out on candidates with unique strengths, and creates a collaborative interview loop that appeals & sells to candidates in the process.\"})}),/*#__PURE__*/e(\"p\",{children:\"One way of visualizing this is that a traditional hiring process is a sequence of decisions made linearly to build a filter. Then, source candidates until they pass the filter. Objective-based recruiting suggests the only fixed input is the business objective. Everything else is constantly revisited.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/61f86f7e582d73583909801f_image%20(5).png\"}),/*#__PURE__*/e(\"h2\",{children:\"A step-by-step guide to objective-based recruiting\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Prep and sourcing\"})}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"\uD83C\uDD95 \",/*#__PURE__*/e(\"strong\",{children:\"When you decide to open a role:\"}),\" Start by writing a \u201CNew Role Objectives\u201D doc that explains why you need to hire someone and what you hope they\u2019ll accomplish (focus on the what, not the how). Plan to share this doc with prospective candidates.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"[Normal step] Draft the role\"}),\". Lead with the business objectives and why those are important. Have an absolute minimum set of \u201Crequirements\u201D and \u201Cnice to haves\u201D. Keep an open mind towards flexing even on this minimum set for a candidate with unexpected strengths.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"[Normal step] Draft your default interview process\"}),\". You\u2019ll use this default loop for the majority of candidates. But those times you flex will be rewarding!\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"[Normal step] Publish the role and source for it.\"}),\" Plenty has been written here, but here\u2019s \",/*#__PURE__*/e(r,{href:\"https://www.remotion.com/blog/how-to-recruit-diverse-talent-9-ways-to-improve-your-pipeline\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"our thinking on improving your pipeline for diverse talent\"})}),\".\"]})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Interview Process\"})}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"\uD83C\uDD95 Discuss business objectives with candidate in your first phone screen\"}),\". If you decide to move forward, share your \u201CNew Role Objectives\u201D doc after call.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"\uD83C\uDD95 Have a collaborative conversation about the role, hiring process, and best way to showcase the candidate\u2019s strengths early on.\"}),\" Candidates may have feedback on the role and how they want to bring something different than what you were thinking to the table. Next, ask the candidate what strengths they want to make sure come across in the hiring process given the role. Share the hiring process and discuss adjustments to best highlight those strengths.\"]})})]}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Example Candidate A\"}),\": Specialized Senior Dev.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"\u200D\",/*#__PURE__*/e(\"strong\",{children:\"Adjustment:\"}),\" Consider replacing the coding exercise with a detailed tech talk for the team explaining how the architecture for a system they once built works. Have them answer questions about it.\"]})})]}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"\u200D\",/*#__PURE__*/e(\"strong\",{children:\"Example Candidate B:\"}),\" Bootcamp grad with customer success experience.\",/*#__PURE__*/e(\"strong\",{children:\"\u200D\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Adjustment:\"}),\" Customize the project around turning customer demands into a technical spec and building parts of it. This could reveal technical strengths beyond pure code.\",/*#__PURE__*/e(\"strong\",{children:\"\u200D\"})]})})]}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Example Candidate C:\"}),\" A talented ESL developer.\",/*#__PURE__*/e(\"strong\",{children:\"\u200D\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Adjustment:\"}),\" A take-home project where they can prepare ahead of time, to help them show off their skills during an interview.\",/*#__PURE__*/e(\"strong\",{children:\"\u200D\"})]})})]}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Example Candidate D:\"}),\" Longtime Indie dev.\",/*#__PURE__*/e(\"strong\",{children:\"\u200D\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Adjustment:\"}),\" Contract to hire could make more sense than an interview loop, to help them show their depth of experience in a realistic situation.\"]})})]}),/*#__PURE__*/e(\"ol\",{start:\"3\",style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"\u200D\",/*#__PURE__*/e(\"strong\",{children:\"\uD83C\uDD95 Run the process adjusted based on conversations above!\"})]})})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Debrief & offer\"})}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"[Normal step] Debrief\"}),\" from interviews with the interview panel. Open by reiterating company objectives and potential role, then discuss candidate strengths and fit.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"\uD83C\uDD95 Create a custom role for (or with) the candidate.\"}),\" This may be the role you originally intended, or something different. The key is to think through how the candidate might have the most impact and satisfaction at your company before you proceed. Sometimes, we even do this collaboratively with the candidate.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"[Normal step] Post debrief discussion with candidate.\"}),\" Share the vision of how the candidate and the custom role fit together to solve your business objectives.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"[Normal step] Reference checks.\"}),\" It may be helpful to ground the conversation with the specific role you\u2019re considering. As a bonus, this discussion often makes it back to the candidate, so emphasizing how important the role is can help close rates.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"[Normal step] Offer!\"}),\" We like to prepare decks for \u201Creverse-pitches\u201D to sell Remotion to candidates.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"This blog post in a single graphic\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/61f86fac606c99943b23f47b_image%20(6).png\"}),/*#__PURE__*/e(\"h2\",{children:\"Objective-based recruiting isn\u2019t for everyone\"}),/*#__PURE__*/e(\"p\",{children:\"The biggest challenge with objective-based recruiting is scale. Standardization is helpful for large or even medium-sized companies to recruit efficiently at scale. It helps operate processes efficiently, helps train new interviewers, and more. Providing hiring managers with this high degree of latitude is also much easier when you have founders and execs directly involved with interviews.\"}),/*#__PURE__*/t(\"p\",{children:[\"Another major concern is interviewer calibration and bias. Structure is a helpful tool to make candidate evaluation more objective and less biased. As we open up to varied criteria and evaluation methods, candidate evaluation becomes more judgement-based. For now, we think the diversity benefits of \",/*#__PURE__*/e(\"em\",{children:\"hiring for strength, not lack of weakness\"}),\" outweigh the risks of bias, but this is something to keep in mind.\"]}),/*#__PURE__*/e(\"p\",{children:\"Finally, some of the ideas here don\u2019t fit neatly into hiring processes and tools. Even for us, we find ourselves working around the recruiting tools we use (like Lever or Gem) as we adjust for candidates. It\u2019s not that hard, but it is occasional effort. Rather than overhauling your entire process, our hope is that this blog post serves as a nudge in the direction of flexibility and a framework for thinking about it.\"}),/*#__PURE__*/e(\"h2\",{children:\"Why this makes sense for us at Remotion\"}),/*#__PURE__*/e(\"p\",{children:\"For us, working remotely is all about empowering people to live and work on their own terms. \\xa0We value the ability to build a team of diverse, strong talent beyond a single city. And we value kind and candid communication as the best way to get work done. Each time we flex towards agency, diversity, and transparency, we\u2019re just following our values.\"}),/*#__PURE__*/t(\"p\",{children:[\"If you have comments or feedback on these ideas, or just found them interesting, please email me at charley [at] \",/*#__PURE__*/e(r,{href:\"http://remotion.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"remotion.com\"})}),\". I\u2019d love to chat.\"]})]});export const richText5=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,wYsHbUhDsP2pl0qVbiZW2R1FPo.png\",\"data-framer-height\":\"1200\",\"data-framer-width\":\"2000\",height:\"600\",src:\"https://framerusercontent.com/images/wYsHbUhDsP2pl0qVbiZW2R1FPo.png\",srcSet:\"https://framerusercontent.com/images/wYsHbUhDsP2pl0qVbiZW2R1FPo.png?scale-down-to=512 512w,https://framerusercontent.com/images/wYsHbUhDsP2pl0qVbiZW2R1FPo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/wYsHbUhDsP2pl0qVbiZW2R1FPo.png 2000w\",style:{aspectRatio:\"2000 / 1200\"},width:\"1000\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"br\",{}),\"I\u2019m Dan Wood, and I\u2019ve been writing Mac software since the Mac\u2019s early days.\"]}),/*#__PURE__*/e(\"p\",{children:\"Many years ago I created the award-winning app \u201CWatson\u201D because I wasn\u2019t content with the status quo of having to go to websites for common tasks like looking up the weather, shopping, or checking on your stocks. I wanted these services at my fingertips, in a Mac interface!\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,JgougR0wYDtjPlmEfK5TLIOItU.png\",\"data-framer-height\":\"954\",\"data-framer-width\":\"2000\",height:\"477\",src:\"https://framerusercontent.com/images/JgougR0wYDtjPlmEfK5TLIOItU.png\",srcSet:\"https://framerusercontent.com/images/JgougR0wYDtjPlmEfK5TLIOItU.png?scale-down-to=512 512w,https://framerusercontent.com/images/JgougR0wYDtjPlmEfK5TLIOItU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/JgougR0wYDtjPlmEfK5TLIOItU.png 2000w\",style:{aspectRatio:\"2000 / 954\"},width:\"1000\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/61522da85ebb4485ede80103_watson-mac-app-sherlocked.jpg\"}),/*#__PURE__*/e(\"p\",{children:\"Later, I created Sandvox because I wanted a native, Mac-like way to build websites.\"}),/*#__PURE__*/t(\"p\",{children:[\"Now I\u2019m at it again, building \",/*#__PURE__*/e(r,{href:\"https://www.remotion.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remotion\"})}),\" so that remote teams can have a native, smooth, Mac-like experience when connecting with their teammates online.\"]}),/*#__PURE__*/e(\"p\",{children:\"Given all that, it probably won't surprise you to hear me say:\\xa0I wish more people built native instead of going the Electron route. Here's why I think native software is worth it.\"}),/*#__PURE__*/e(\"h2\",{children:\"The case for native: performance and that just-right feel.\"}),/*#__PURE__*/t(\"p\",{children:[\"The strength of macOS is the consistency of all its apps working together seamlessly. By building natively, we can be part of that consistency. \",/*#__PURE__*/e(\"strong\",{children:\"Native lets us build an app that feels right at home on macOS, rather than reflecting the average of every platform and feeling right on none of them.\"})]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/6153440b31cec08750c5506a_Desktop-with-dock-min.png\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,uvKTiWNFUXusBueNpeRkrvQgdNc.png\",\"data-framer-height\":\"1250\",\"data-framer-width\":\"2000\",height:\"625\",src:\"https://framerusercontent.com/images/uvKTiWNFUXusBueNpeRkrvQgdNc.png\",srcSet:\"https://framerusercontent.com/images/uvKTiWNFUXusBueNpeRkrvQgdNc.png?scale-down-to=512 512w,https://framerusercontent.com/images/uvKTiWNFUXusBueNpeRkrvQgdNc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/uvKTiWNFUXusBueNpeRkrvQgdNc.png 2000w\",style:{aspectRatio:\"2000 / 1250\"},width:\"1000\"}),/*#__PURE__*/e(\"p\",{children:\"The Remotion dock, right at home on your macOS desktop.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"There are a lot of cross-platform approaches out there that attempt to feel native, but they don't\"}),\". Electron, the most popular one, is essentially a wrapper around a web page. Electron comes with all the baggage of a web browser, including bloated app bundles and RAM usage.\"]}),/*#__PURE__*/e(\"p\",{children:\"On macOS, you can lean on Apple's Cocoa framework to provide nearly everything you need, in an efficient way that's opinionated as to how apps, the operating system, and hardware work together to serve the user.\"}),/*#__PURE__*/e(\"p\",{children:\"With Cocoa, you get to take advantage of the OS and its hardware. With Electron, it often takes months or years to get support for the latest OS and hardware capabilities.\"}),/*#__PURE__*/e(\"p\",{children:\"A few of the benefits of native apps:\"}),/*#__PURE__*/e(\"h3\",{children:\"They feel right at home on the operating system\"}),/*#__PURE__*/e(\"p\",{children:'Native Mac apps build on components that fit seamlessly into the OS. In Remotion, this means everything from the \"clickiness\" of the buttons, to dark/light mode, to the transparency of our dock, to the contextual menus, to the weight of scrolling and the way the shadows look\u2014behaves like you expect it would on macOS. This makes using our app much more intuitive.'}),/*#__PURE__*/t(\"p\",{children:[\"Beyond the code itself, building natively is opting into conventions and \",/*#__PURE__*/e(r,{href:\"https://developer.apple.com/design/human-interface-guidelines/macos/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"guidelines\"})}),\" from Apple and the community, who sweat the details about everything. Ultimately, the goal is for you to forget the app is there and just focus on your work.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Thinking outside the box\"})}),/*#__PURE__*/e(\"p\",{children:\"Not all desktop software should fit neatly into a web browser. Direct access to the OS unlocks our creativity to try and rethink things like how our status item works (shows teammates when you hide the dock), or how to get out of the way of user clicks with features like shift click.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"RAM Performance\"})}),/*#__PURE__*/t(\"p\",{children:['With Electron apps, we talk about using \"',/*#__PURE__*/e(r,{href:\"https://www.quora.com/Why-is-every-app-created-with-electron-using-500mb-of-ram-Shouldn-t-electron-be-lighter\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"as little as 200 MB\"})}),\"\\\" of RAM, and 500 MB isn't out of the ordinary. Native apps can use just tens of MB. Don't be surprised if your browser-based video call reaches a gigabyte of RAM usage!\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/61536723db6c89914b3babd8_Screen%20Shot%202021-09-28%20at%203.00.47%20PM.png\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,Y57l27BZGFjmihM0EeKCwKtzpI.png\",\"data-framer-height\":\"1088\",\"data-framer-width\":\"2000\",height:\"544\",src:\"https://framerusercontent.com/images/Y57l27BZGFjmihM0EeKCwKtzpI.png\",srcSet:\"https://framerusercontent.com/images/Y57l27BZGFjmihM0EeKCwKtzpI.png?scale-down-to=512 512w,https://framerusercontent.com/images/Y57l27BZGFjmihM0EeKCwKtzpI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Y57l27BZGFjmihM0EeKCwKtzpI.png 2000w\",style:{aspectRatio:\"2000 / 1088\"},width:\"1000\"}),/*#__PURE__*/e(\"p\",{children:\"Remotion vs. Google Meet memory usage during a 2-person video call\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/61536712bfffcd273ddcc3b3_Screen%20Shot%202021-09-28%20at%203.00.02%20PM.png\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,jpqtG7cK7bf6JLmHfk9RcuABDJo.png\",\"data-framer-height\":\"1088\",\"data-framer-width\":\"2000\",height:\"544\",src:\"https://framerusercontent.com/images/jpqtG7cK7bf6JLmHfk9RcuABDJo.png\",srcSet:\"https://framerusercontent.com/images/jpqtG7cK7bf6JLmHfk9RcuABDJo.png?scale-down-to=512 512w,https://framerusercontent.com/images/jpqtG7cK7bf6JLmHfk9RcuABDJo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/jpqtG7cK7bf6JLmHfk9RcuABDJo.png 2000w\",style:{aspectRatio:\"2000 / 1088\"},width:\"1000\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"CPU usage\"})}),/*#__PURE__*/e(\"p\",{children:\"Our in-call experience uses much less of your CPU than web-based apps like Google Meet. Native apps can take advantage of first-class delegation to the GPU using Metal, Apple's low-level GPU API. As a result:\\xa0an app doesn't drain your battery life.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Bundle size\"})}),/*#__PURE__*/e(\"p\",{children:\"A 30mb download vs. what would likely be ~100mb for Electron-based alternatives.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Better AV quality thanks to direct access to low-level hardware and device APIs\"})}),/*#__PURE__*/e(\"p\",{children:\"With Electron, you have a lot of great work done by Chromium contributors out of the box. However, it's difficult to push past the limits of Chromium because you have to learn, develop and build your own forks of major libraries. On the other hand, natively you can access hardware and device APIs unencumbered.\"}),/*#__PURE__*/e(\"h2\",{children:\"The case against native: it's hard.\"}),/*#__PURE__*/e(\"p\",{children:\"I and my team at Remotion are big fans of native apps, but we acknowledge that there are serious tradeoffs to weigh if you're considering building native. Here are the main ones for us:\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"First and most obvious: you'll only have a macOS app.\"})}),/*#__PURE__*/e(\"p\",{children:\"You'll then have to build a separate Windows app (and Linux app). We feel this pain most days when we have to turn away interested beta testers who are on Windows.\"}),/*#__PURE__*/t(\"p\",{children:[\"There is a silver lining here: if you plan to eventually build a mobile app, building a macOS app gives you a head start on building for iOS. With \",/*#__PURE__*/e(r,{href:\"https://developer.apple.com/mac-catalyst/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Mac Catalyst\"})}),\", some apps can even share code with iPad apps, and this functionality will only continue getting better.\"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"The macOS developer community is mighty, passionate, but small.\"})}),/*#__PURE__*/e(\"p\",{children:\"We're talking much, much smaller than the the community of web and Javascript developers at large. This means there are fewer libraries, fewer places to ask for help, and that it's harder to reference others' experiences.\"}),/*#__PURE__*/e(\"p\",{children:\"There are many ways being among the few building a native app has made things difficult for our team. One example\u2014implementing our emoji picker. If you're building a web app and you need an emoji picker, you can start out by choosing from a few well-used libraries with many contributors. When we needed to add one to Remotion on macOS, we had to start from scratch. Then we wanted to add emoji search:\\xa0What would have been one-liner with a mature JS library had to be a custom implementation in native Swift!\"}),/*#__PURE__*/e(\"p\",{children:\"Similarly, commonly-used services like Google's Firebase have out of the box support for web and JS, but not macOS. You take a risk to use them for macOS, and you'll probably have to do some jerry-rigging of their iOS library to make everything work in the process. These kinds of problem come up all the time.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"There is less developer tooling.\"})}),/*#__PURE__*/e(\"p\",{children:\"Given the smaller number of macOS developers out there, there is a lack of macOS-focused developer tooling beyond the great tools Apple provides. For example, many build pipeline tools exist for iOS, but don't add support for macOS.\"}),/*#__PURE__*/e(\"p\",{children:\"Native desktop frameworks also aren't invested in by Apple with the same amount of urgency they give mobile. That means that macOS developers are generally stuck with pre-mobile or cloud era tooling.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"It's difficult to hire macOS developers.\"})}),/*#__PURE__*/e(\"p\",{children:\"When it's time to grow the team, it's much harder to find great teammates. It's also a less diverse talent pool, with fewer college grads\u2014typically an important source for talent as a company scales. This leads many companies that start on macOS to become more and more web-focused. It's something our cofounder Alexander saw happen when he was at Dropbox.\"}),/*#__PURE__*/e(\"h2\",{children:\"Why native is the right choice for Remotion (and any app that's open for >30 minutes a day)\"}),/*#__PURE__*/e(\"p\",{children:\"All things considered, we believe native is the best choice for Remotion and our users on macOS. We thought long and hard about the tradeoffs we outlined above. Candidly, we still go back and forth about it sometimes, and we expect to reach a different conclusion for Windows & Linux. We knew that choosing native was signing up for a potentially painful journey and delayed gratification.\"}),/*#__PURE__*/e(\"p\",{children:\"We chose to do it anyway.\"}),/*#__PURE__*/e(\"p\",{children:\"Why? Because we think of Remotion not as a destination you open and close, but as a permanent operating system upgrade that puts your team right on your desktop. The success of our app\u2014its ability to create a sense of presence of your team\u2014relies on our users loving keeping it up all day.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/61522c035cd0852a81830617_Screen%20Shot%202021-09-23%20at%2010.42.38%20AM.png\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,BruTtIp4Fk2gAuTKSyuTEcjS6g.png\",\"data-framer-height\":\"181\",\"data-framer-width\":\"2000\",height:\"90\",src:\"https://framerusercontent.com/images/BruTtIp4Fk2gAuTKSyuTEcjS6g.png\",srcSet:\"https://framerusercontent.com/images/BruTtIp4Fk2gAuTKSyuTEcjS6g.png?scale-down-to=512 512w,https://framerusercontent.com/images/BruTtIp4Fk2gAuTKSyuTEcjS6g.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/BruTtIp4Fk2gAuTKSyuTEcjS6g.png 2000w\",style:{aspectRatio:\"2000 / 181\"},width:\"1000\"}),/*#__PURE__*/e(\"p\",{children:\"My teammates coworking in Remotion\"}),/*#__PURE__*/e(\"p\",{children:\"That means the benefits that building a native app brings are critical for us. Our app feeling at home on the OS, a low memory and CPU footprint, and being able to use everything the device offers to make AV quality great, all make a huge difference when your app is meant to be always-on.\"}),/*#__PURE__*/e(\"p\",{children:'We regularly hear from our users that they stick around in Remotion because it\\'s lightweight and \"just feels better\" than other virtual offices or video call apps. That sentiment is hard to quantify, but stems from all the ways our app feels consistent with macOS. We make it worth it to give Remotion valuable real estate on your desktop by making it look, feel, and perform like it belongs there.'}),/*#__PURE__*/e(\"p\",{children:\"If you're willing and able to put in the work, macOS apps can reach a quality of experience that's simply not possible with cross-platform frameworks. I think the extra effort is worth it.\"}),/*#__PURE__*/e(\"h2\",{children:\"If you love native apps, we want to build with you.\"}),/*#__PURE__*/e(\"p\",{children:\"I get the warm fuzzies every time I download a native app. If you do too, my team would love to connect with you.\"}),/*#__PURE__*/t(\"p\",{children:[\"We want to build community with other macOS developers as we build Remotion, and we're excited to share more of what we've learned along the way. What's most helpful for us to blog about? Unit testing? UI components? Let us know \",/*#__PURE__*/e(r,{href:\"https://twitter.com/remotionco\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"@remotionco\"})}),\" on Twitter.\"]}),/*#__PURE__*/e(\"p\",{children:\"We're only beginning to scratch the surface of what we can do on macOS, and the quality of other macOS apps out there is humbling. If you're a macOS fan, I'd love for you to check out Remotion and let us know what you think.\"})]});export const richText6=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"br\",{}),\"Hi, I'm Harriet, a software engineer at \",/*#__PURE__*/e(r,{href:\"https://www.remotion.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remotion\"})}),\". I care deeply about making sure my team is inclusive of individuals of all backgrounds, because early on in my career I\\xa0struggled to feel like I\\xa0belonged in the tech industry. It's something I\\xa0write about on my personal blog, \",/*#__PURE__*/e(r,{href:\"https://www.harrietpeptalks.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Harriet's Pep Talks\"})}),\", and something I\\xa0spend a lot of time on at Remotion.\"]}),/*#__PURE__*/e(\"p\",{children:\"At Remotion, we strive to recruit and retain a diverse team. We're by no means perfect, but we're sharing our diversity recruiting strategy in the hopes that some of our tactics will help other likeminded teams. I will use the term \\\"diverse candidates\\\" to refer to candidates that are underrepresented minorities either in the company or in tech in general.\"}),/*#__PURE__*/e(\"h2\",{children:\"Why should you care about having a diverse team?\"}),/*#__PURE__*/t(\"p\",{children:[\"People with diverse backgrounds react to things differently and have different opinions. Diverse opinions lead to better decision-making and better business outcomes. Plenty has been written about this by folks like \",/*#__PURE__*/e(r,{href:\"https://hbr.org/2016/09/diverse-teams-feel-less-comfortable-and-thats-why-they-perform-better\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Harvard Business Review\"})}),\", \",/*#__PURE__*/e(r,{href:\"https://www.mckinsey.com/featured-insights/diversity-and-inclusion/diversity-wins-how-inclusion-matters\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"McKinsey\"})}),\", and \",/*#__PURE__*/e(r,{href:\"https://www.forbes.com/sites/sianbeilock/2019/04/04/how-diversity-leads-to-better-outcomes/?sh=483af5f865ce\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Forbes\"})}),'. If you\\'re unconvinced, you can find plenty of evidence by googling \"diverse teams perform better\" or \"impact of workplace diversity.\"']}),/*#__PURE__*/e(\"p\",{children:\"The goal of our recruiting efforts at Remotion is to fill our team with people who will have diverse opinions and (crucially!) empower them to share those opinions. We believe diversity also leads to better company culture and, at the end of the day, is the right thing to do.\"}),/*#__PURE__*/e(\"h2\",{children:\"How to Recruit Diverse Talent\"}),/*#__PURE__*/e(\"p\",{children:\"Keep in mind that recruiting diverse talent means intentionally finding candidates who value different things than you. Diverse candidates with a totally different background than you will find different things compelling.\"}),/*#__PURE__*/e(\"p\",{children:\"For example, a hiringemail that seems great to you might be full of red flags for them. You'll need to optimize your hiring communications to showcase your focus on an inclusive employee experience. Here are our top tips for appealing to a diverse talent pool:\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Talk about your team's culture of inclusion more than your product.\"}),/*#__PURE__*/e(\"p\",{children:\"Speaking from personal experience, I have waded through though hundreds of job postings asking me if I wanted to work on a product that billions of users use every day, only to latch onto the first job posting that talked about how everyone on the team has a voice and they all work together, etc.\"}),/*#__PURE__*/e(\"p\",{children:\"As a female candidate, it was very important to me that I join a team that does not have a toxic masculine culture, and I suspect that's true for many underrepresented candidates.\"}),/*#__PURE__*/e(\"h3\",{children:\"2. Share evidence and inclusive practices, not platitudes.\"}),/*#__PURE__*/e(\"p\",{children:'Evidence holds a lot more weight than platitudes. Instead of saying \"We value diversity\", showcase what you actually do (e.g. the whole company participates in solution brainstorms; list your diversity goals and progress towards them; share your investments in employee resource groups). Bonus: taking the time to find IRL evidence of inclusion on the team is also a great exercise to determine if your company is really as great as you claim it is.'}),/*#__PURE__*/e(\"h3\",{children:\"3. Remember that what resonates with you might not resonate with diverse candidates.\"}),/*#__PURE__*/t(\"p\",{children:[\"Assume that a diverse candidate is in much higher demand than a non-diverse candidate. They may receive so many recruiter emails per week that they only read the subject line before deleting them, so the subject line \",/*#__PURE__*/e(\"strong\",{children:\"needs to stand out,\"}),\" and so does the first sentence in the job description. Remember that what 'stands out' to an underrepresented candidates may not be what you think.\"]}),/*#__PURE__*/e(\"h3\",{children:\"4. Have a group of diverse individuals review your hiring process and communications.\"}),/*#__PURE__*/e(\"p\",{children:\"Draft something, then get people from underrepresented groups to review it and give you suggestions for how to improve it. They could be your teammates, or friends or family. Assume that something that seems great to you might be a red flag for them! This is a helpful exercise for identifying bias in your recruitment process.\"}),/*#__PURE__*/e(\"h3\",{children:\"5. Scan your hiring communications for exclusionary language.\"}),/*#__PURE__*/t(\"p\",{children:[\"You might be turning off qualified candidates without even realizing it. Use tools like \",/*#__PURE__*/e(r,{href:\"https://textio.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"textio\"})}),\" and \",/*#__PURE__*/e(r,{href:\"http://gender-decoder.katmatfield.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"gender-decoder\"})}),\" to scan the language in your job description, employer branding, and recruiting emails to highlight bias or gendered language and suggest alternatives to make it more universally appealing to job seekers.\"]}),/*#__PURE__*/e(\"h3\",{children:\"6. Scale down your list of job 'requirements'.\"}),/*#__PURE__*/t(\"p\",{children:[\"Keep the requirements section of your job posting really short. What are the actual skills the candidate will need on day one and what are the things they could acquire on the job? \",/*#__PURE__*/e(r,{href:\"https://www.linkedin.com/business/talent/blog/talent-acquisition/how-women-find-jobs-gender-report\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Research shows\"})}),\" that women will only apply to a job if they feel they meet 100% of the requirements, whereas men will apply if they feel they meet 60%. Factor in imposter syndrome and your skill and requirements section might be filtering out a lot of qualified candidates.\"]}),/*#__PURE__*/t(\"p\",{children:[\"A helpful way to think about this, and even write the job description, is to \",/*#__PURE__*/e(r,{href:\"https://leaddev.com/hiring-onboarding-retention/increase-your-hiring-success-job-success-profiles\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"think about your existing teammates and what makes them successful\"})}),'. Willingness to learn, curiosity, determination? Consider listing those things. Think about what the first 30, 90 days will be like for the candidate if they join. The first 6 months. What will they work on and what will you expect them to achieve? Painting that picture makes it a lot easier for them to decide if they should apply, compared to requirements like \"3+ years javascript experience\".']}),/*#__PURE__*/e(\"h3\",{children:\"7. Actively source to build a diverse talent pipeline.\"}),/*#__PURE__*/e(\"p\",{children:\"With diversity hiring, you can't just wait for incoming applications. Candidate reach-out is the best way to get quality candidates and build a more diverse talent pipeline. We've had the best success getting diverse candidates by actively reaching out in 2 specific ways:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Using automated sourcing tools (\",/*#__PURE__*/e(r,{href:\"http://dover.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Dover,\"})}),\" \",/*#__PURE__*/e(r,{href:\"http://recruitbot.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"RecruitBot\"})}),\") to send out high volumes of reach outs to potential candidates. This is a highly time-efficient way to reach out to many diverse candidates, but it can be a little spammy.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Directly reaching out to 1st, 2nd, and 3rd degree LinkedIn connections via personalized email campaigns (using \",/*#__PURE__*/e(r,{href:\"http://gem.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Gem\"})}),\"). This involves setting up an email drip system (e.g. 1 email with 2 followup drips) that should be carefully crafted to draw the attention of diverse candidates regularly receiving a lot of recruiter emails. See the above section on hiring communications copy. The subject line is the most important.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Sourcing is a lot of work, but worth the investment!\"}),/*#__PURE__*/t(\"p\",{children:[\"We also post on job boards that focus on a diverse candidate pool (\",/*#__PURE__*/e(r,{href:\"https://elpha.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Elpha,\"})}),\" \",/*#__PURE__*/e(r,{href:\"http://include.io/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"include.io\"})}),\", \",/*#__PURE__*/e(r,{href:\"https://www.hiretechladies.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"techladies\"})}),\") with customized listings. In the past, we've struggled to get either high volume or high quality candidates into our talent pipeline using this method, but it is still worth spending the time to get this right.\"]}),/*#__PURE__*/e(\"p\",{children:\"I have had job candidates tell me that our email/job description was so thoughtfully worded that they felt they had to respond even though they weren't looking! Here's an example.\"}),/*#__PURE__*/e(\"img\",{alt:\"You know what's hard? Feeling close to your teammates online. I'm an engineer at Remotion and that is the problem we are trying to solve: we focus on the human aspects of collaboration because trust is necessary for creative expression. We don't just want remote teams to be able to communicate effectively--we want them to thrive. We want remote teams to thrive because we believe that people should be able to live and work on their own terms, anywhere in the world. Our company was founded (remotely!) on this principle last year and we have gradually built up a team of people who are devoted to solving this problem together and we are now looking for someone to own our web platform. That's where you come in. We have spent the past year focusing on our macOS experience and now we need a web app that brings that experience beyond the mac. We need a web frontend expert like you to help us imagine it and build it. You would be the lead developer and owner. We're a team of 10 with 40+ years combined macOS experience, 15+ years A/V expertise, hailing from Google, Dropbox, Microsoft, Amazon and others. Your web development skills and your voice are what we need next.\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,JecZznbk4XdTmWwgiRMKpSmLaI.png\",\"data-framer-height\":\"1074\",\"data-framer-width\":\"1178\",height:\"537\",src:\"https://framerusercontent.com/images/JecZznbk4XdTmWwgiRMKpSmLaI.png\",srcSet:\"https://framerusercontent.com/images/JecZznbk4XdTmWwgiRMKpSmLaI.png?scale-down-to=512 512w,https://framerusercontent.com/images/JecZznbk4XdTmWwgiRMKpSmLaI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/JecZznbk4XdTmWwgiRMKpSmLaI.png 1178w\",style:{aspectRatio:\"1178 / 1074\"},width:\"589\"}),/*#__PURE__*/e(\"p\",{children:\"A personal favorite recruiting template of mine!\"}),/*#__PURE__*/e(\"h3\",{children:\"8. Start the diversity recruiting process long before you need to fill the role.\"}),/*#__PURE__*/t(\"p\",{children:[\"Retention of underrepresented talent in the tech industry is bad. This means that many people quit the industry before reaching senior levels, usually because of toxic environments, lack of opportunity to grow, and not feeling like they belong. Unfortunately, this means that it's very hard to fill a senior role with someone from an underrepresented group.\\xa0It could take a very long time to build a diverse talent pipeline for a more senior role, so if you want to make it happen, you need to open that role and get sourcing \",/*#__PURE__*/e(\"strong\",{children:\"early\"}),\".\"]}),/*#__PURE__*/e(\"p\",{children:'There is a worthwhile workaround: hire people from underrepresented groups at lower levels and help them grow and reach seniority here! Talent development is crucial. To get started, open a general, opportunistic role (e.g. \"Mid-level designer\") and only interview candidates from underrepresented groups.'}),/*#__PURE__*/e(\"h3\",{children:\"9. Build conversations with diverse team members into your interview loop.\"}),/*#__PURE__*/e(\"p\",{children:\"Obviously you, the hiring manager, will be the first person to talk to the candidate, but as soon as possible, you should have the candidate talk to a team member who is from an underrepresented group. It's important for them to see someone like themselves in an important position and it will go a long way to help them imagine feeling comfortable and successful on your team.\"}),/*#__PURE__*/e(\"p\",{children:\"Unfortunately, this means you may need to lean on some of our teammates more than others to be involved in interviewing. If you're moving forward with a candidate that isn't from an underrepresented group, give your overburdened teammate a break and have someone else fill that slot in the interview loop.\"}),/*#__PURE__*/e(\"p\",{children:\"It's probably going to be harder to close a diverse candidate because they may have multiple offers or need more assurance that your company is a safe place for them to land. If they have gotten past the interview process, or if they are showing some hesitancy earlier in the process, you might want to offer for them to meet with someone else on the team (read: a team member from a underrepresented group) to talk about what it's like to work on the team.\"}),/*#__PURE__*/e(\"p\",{children:\"I have had many conversations with female candidates (not just engineers) about Remotion's approach to diversity and inclusion, what it's like to be the only female engineer, etc. Or, they may just want some time alone to think. Ask them.\"}),/*#__PURE__*/e(\"h2\",{children:\"Final thoughts: how to recruit diverse talent\"}),/*#__PURE__*/e(\"p\",{children:\"Hiring a diverse team takes intentionality, time, and a keen eye for unconscious bias. Remember that to hire a diverse workforce, you first need to have an inclusive culture. Show, don't just tell when it comes to company practices that will make someone from an underrepresented group feel at home.\"}),/*#__PURE__*/e(\"p\",{children:\"Of course, hiring is only half the battle\u2014retention of diverse hires is equally, if not more, important. We'll be sharing more soon about how we build an inclusive culture at Remotion that prioritizes making our diverse team members feel like they belong, their opinions are valuable, and that they have opportunities to grow.\"}),/*#__PURE__*/t(\"p\",{children:[\"Questions on how we run recruiting at \",/*#__PURE__*/e(r,{href:\"https://www.remotion.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remotion\"})}),\"? Feel free to reach out to me at harriet at remotion dot com.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});export const richText7=/*#__PURE__*/t(n.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Launching on \",/*#__PURE__*/e(r,{href:\"https://www.producthunt.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Product Hunt\"})}),\" is a great way to introduce your product to a large, very engaged community of early adopters. It can be a valuable way to accelerate your growth and help you rally your existing audience to spread the word about your product. As with most marketing strategies, you get out what you put in when it comes to launching on Product Hunt.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Product Hunt launches have been written about extensively elsewhere, but this blog post is a high-level game plan for a successful launch based on our experience \",/*#__PURE__*/e(r,{href:\"https://www.producthunt.com/posts/remotion-2-0\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"launching Remotion 2.0\"})}),\" in July 2021 (where we hit #1 Product of the Day). We focus on useful ideas and advice we received from other startup leaders but didn't find frequently reflected in posts elsewhere online.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Why is Product Hunt worth getting right?\"}),/*#__PURE__*/e(\"p\",{children:\"A good Product Hunt launch can result in hundreds of signups or potential users in a day or two, and then a trickle of interest as people find you through the platform over the next few years\u2014either as similar products launch, or because they're using Product Hunt to search for something that solves their problem.\"}),/*#__PURE__*/e(\"p\",{children:\"In addition to the eyeballs that come with making it to the top of the product hunt homepage and your supporters sharing on social media, the top launches of the day and week are featured in the Product Hunt team newsletter to their massive audience. Plus, it's a fantastic way to generate social proof from existing users or tech enthusiasts who support your new product launch.\"}),/*#__PURE__*/e(\"h3\",{children:\"Our first launch, before we knew all this:\"}),/*#__PURE__*/e(\"img\",{alt:\"Remotion on Product Hunt\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/611c0c19ee0831bdea96e766_Screen%20Shot%202021-08-17%20at%203.20.32%20PM.png\"}),/*#__PURE__*/e(\"p\",{children:\"434 upvotes (some of which came long after launch day)\"}),/*#__PURE__*/e(\"h3\",{children:\"Our second, more well-informed launch:\"}),/*#__PURE__*/e(\"img\",{alt:\"Remotion 2.0 on Product Hunt in July 2021\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/611c0c7a53f6df83ae708a7a_Screen%20Shot%202021-08-17%20at%203.22.25%20PM.png\"}),/*#__PURE__*/e(\"p\",{children:\"#1 Product of the Day, #4 Product of the Week, and 961 upvotes!\"}),/*#__PURE__*/e(\"h2\",{children:\"Our highest-impact advice for a great Product Hunt launch\"}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Create a posting that resonates with the Product Hunt community.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Rally your community in advance.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Pre-write and pre-schedule your content.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Engage your audience throughout the day.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Decide if you want to work with a pro product hunter.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Read on for the nitty-gritty.\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Create a posting that resonates with the Product Hunt community.\"}),/*#__PURE__*/e(\"p\",{children:\"This is mostly your existing product marketing at play. For Product Hunt, it can help to consider:\"}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"The Product Hunt community prefers specific value props to high-level, lofty value props.\"}),' Many members of the Product Hunt community are makers, developers, and tech enthusiasts who are constantly checking out new products. They are more likely to be familiar with similar products, so be sure to cut to the chase of what\\'s most unique about your product. For example, we chose to lead with \"your virtual office in a macOS dock\" vs. \"connect like everyone\\'s together\" in our first visual and social assets for the day.']})})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/60e46f6a056a85a033606370_PH_1_compressed.gif\"}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Keep your posting concise\"}),', and then add extra content to your \"maker comment,\" which is a good place to tell your founder story to ph users.']})})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/611c1726a40f071fa7bc15ca_Screen%20Shot%202021-08-17%20at%204.07.57%20PM.png\"}),/*#__PURE__*/e(\"p\",{children:\"Our Maker comment\u2014have fun with it!\"}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Pre-schedule your post for 00:01 PST\"}),\", because the clock resets at 00:00.\"]})})}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Launch early in the month\"}),\" to give yourself a better shot at Product of Month, because the clock resets every month.\"]})})}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Offer the Product Hunt community something exclusive and immediately actionable\"}),\", like a free month or a shortcut off the waitlist.\"]})})}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Nail your preview image. \"}),\"When it comes to designing the assets for your post, be sure to take into account that the first still image in your gallery will be the preview that's shown whenever your post is shared.\"]})})}),/*#__PURE__*/e(\"h3\",{children:\"2. Rally your community in advance.\"}),/*#__PURE__*/e(\"p\",{children:\"Although Product Hunt will generate some organic traffic, you need to rally your community for support in the form of votes and comments to have a chance at being above the fold and winning a product hunt badge. Here's what to consider:\"}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Encourage both votes and comments\u2014without ever asking for them directly.\"}),\" The Product Hunt algorithm considers both absolute counts of votes and comments, so encourage both forms of activity. Be sure to never ask directly for upvotes, as that can get you disqualified. Ask for support, feedback, and shares instead.\"]})})}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Votes from active accounts count more than votes from new or inactive accounts.\"}),\" Therefore, try to email your lists a week before and ask users to create a product hunt account and upvote some things first. You should also be sure to reach out to your friends who are active on Product Hunt, such as other founders. Lastly, we also made sure to have our own team create product hunt account in advance so we could list them as product makers day of launch.\"]})})}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Spread your votes out over the course of the day. \"}),\"Suspicious spikes in upvotes can get you penalized or disqualified. Also, the algorithm apparently rewards constant and increasing velocity. Therefore, work to spread votes throughout the day in order to avoid a noticeable decline in vote velocity. You can track your vote velocity vs. the competition with sites like \",/*#__PURE__*/e(r,{href:\"https://pw2.akkio.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Product Wars\"})}),\". If you have a large user base or mailing list, it can be a good idea to schedule sends throughout the day, as time zones wake up.\"]})})}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Be above the fold when the west coast wakes up. \"}),\"It seems to be a good idea to be above the fold on the product hunt homepage by 9a PST in order to benefit from organic traffic there. Aim to be at 100+ upvotes by then. If you have mostly PST users, you might need to get creative.\"]})})}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Give your community a heads up.\"}),\" Let your audience, especially folks with followings like your investors, know about your launch in advance. Here's what we shared with our VIPs one week out:\"]})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"We're launching Remotion 2.0 on Product Hunt this Tuesday July 7th!\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Please be on the look out for an email from me on Tuesday asking for support on Product Hunt and signal-boosting on Twitter & LinkedIn.\"}),\" We'll have a doc for you with example copy and talking points to make it as easy as possible. Sneak peak: 1/ \",/*#__PURE__*/e(r,{href:\"https://www.producthunt.com/posts/remotion-2-0\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Scheduled Product Hunt post\"})}),\" (don't share yet). 2/ \",/*#__PURE__*/e(r,{href:\"https://www.remotion.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Revamped landing page\"})}),\". 3/ \",/*#__PURE__*/e(r,{href:\"https://youtu.be/BIYL9pByddE\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"New demo video\"})}),\" (2m30s).\"]}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Help your supporters help you. \"}),\"On the day of launch, help people signal-boost you by giving them a doc (here's ours) with helpful content like your latest messaging, demo, Product Hunt post and social posts. Here's what we shared:\"]})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Hey everyone, we're live on Product Hunt! Would love your help today:\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:/*#__PURE__*/e(\"strong\",{children:\"1/ Please support at \"})}),/*#__PURE__*/e(r,{href:\"https://www.producthunt.com/posts/remotion-2-0\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"em\",{children:/*#__PURE__*/e(\"strong\",{children:\"https://www.producthunt.com/posts/remotion-2-0\"})})})}),/*#__PURE__*/e(\"em\",{children:/*#__PURE__*/e(\"strong\",{children:\".\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Excluding a post that seems slightly suspicious for inorganic traffic, we're in second place and catching up as our US community activates!\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:/*#__PURE__*/e(\"strong\",{children:\"2/ Please help us amplify with your reach.\"})})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"We have a \"}),/*#__PURE__*/e(r,{href:\"https://www.notion.so/Remotion-Help-with-our-launch-e9a833aea66e4dbcb1f73cd8bdeb0fe3\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"em\",{children:\"live doc with useful info, links, and sample posts here\"})})}),/*#__PURE__*/e(\"em\",{children:\". Would be amazing if you could create your own posts on Twitter and LinkedIn! For convenience, here are the most important Remotion posts for liking & retweeting:\"}),/*#__PURE__*/e(r,{href:\"https://twitter.com/remotionco/status/1412394881469849603\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"em\",{children:\" Twitter - Remotion\"})})}),/*#__PURE__*/e(r,{href:\"https://twitter.com/embirico/status/1412421456026390539\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"em\",{children:\", Twitter - Alexander\"})})}),/*#__PURE__*/e(r,{href:\"https://www.linkedin.com/feed/update/urn%3Ali%3Aactivity%3A6818163638382190592/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"em\",{children:\", LinkedIn - Remotion\"})})}),/*#__PURE__*/e(r,{href:\"https://www.linkedin.com/feed/update/urn%3Ali%3Aactivity%3A6818195676216778752/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"em\",{children:\" &\\xa0LinkedIn - Alexander.\"})})}),/*#__PURE__*/e(\"em\",{children:\" Thank you all so much!\"})]}),/*#__PURE__*/e(\"h3\",{children:\"3. Pre-write and pre-schedule your content.\"}),/*#__PURE__*/e(\"p\",{children:\"Your launch day will be spent on social media, replying to Product Hunt comments and reaching out to your community that is on un-schedule-able platforms like Messenger and text. So, we recommend you take advantage of every platform that allows pre-scheduling content. Especially email.\"}),/*#__PURE__*/e(\"h3\",{children:\"4. Engage your audience throughout the day.\"}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Create other reasons to talk about your Product Hunt launch on launch day.\"}),\" Our friends over at \",/*#__PURE__*/e(r,{href:\"https://meetbutter.io/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Butter\"})}),\" had the brilliant idea of running celebratory launch day workshops with influential users over the course of the launch day. Leveraging their users' reach in this way drove impactful additional traffic to the product and then the Product Hunt post\u2014without annoying their social media following with constant launch promotion.\"]})})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/611c1b5c35bc38474274c1c2_Screen%20Shot%202021-08-17%20at%204.25.43%20PM.png\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Create content that leverages the networks of your connections.\"}),\" Remotion is more of a team-only product, so we weren't able to take Butter's approach. Instead, we had influential members in our community record short videos with target audience-appropriate tips, and helped make them look awesome. Then, we asked those influencers to share for us, linking to our Product Hunt. \",/*#__PURE__*/e(r,{href:\"https://twitter.com/remotionco/status/1412441313535053826?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1412441313535053826%7Ctwgr%5E541754ee7555295653627e0486dfce6d15a53dfb%7Ctwcon%5Es1_c10&ref_url=https%3A%2F%2Fwww.remotion.com%2Fblog%2Fproduct-hunt-launch-guide-our-learnings\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"For example\"})})]})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"5. Decide if you want to work with a pro product hunter.\"}),/*#__PURE__*/t(\"p\",{children:[\"In our observation, having a famous or popular product hunter hunt your product is of low to moderate impact on a successful product hunt launch. For example, \",/*#__PURE__*/e(r,{href:\"https://www.producthunt.com/@chrismessina/submitted\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"hunts by the #1 hunter Chris Messina vary greatly in results\"})}),\", including some that barely reach 100 upvotes. So don't sweat it!\"]}),/*#__PURE__*/e(\"p\",{children:\"That said, working with a great hunter can be incredibly impactful if you lean on their learnings. For example, we worked with Chris Messina (after DM'ing him on Twitter). Over the course of a couple Zoom calls, he shared great advice on our product and launch content. We think it meaningfully improved our outcome and would recommend working with him to anyone taking Product Hunt seriously.\"}),/*#__PURE__*/e(\"h3\",{children:'6. Spend your launch day coworking together in a Remotion \"launch war room.\"'}),/*#__PURE__*/t(\"p\",{children:[\"In other words...make your product hunt launch day fun! You can create a launch day war room in \",/*#__PURE__*/e(r,{href:\"https://www.remotion.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remotion\"})}),\" and listen to music together while you rally support for your launch, and watch your upvotes rise throughout the day.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"It'll make the experience of refreshing your product hunt page and Twitter account all day more celebratory and exciting, we promise.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/62a393b143f02665432ece8c_Screen%20Shot%202022-06-06%20at%204.24.20%20PM.png\"}),/*#__PURE__*/t(\"p\",{children:[\"The team at Magical hanging out in their Remotion coworking room while they \",/*#__PURE__*/e(r,{href:\"https://www.producthunt.com/posts/magical\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"launched their product\"})}),\" for the first time!\"]}),/*#__PURE__*/e(\"h2\",{children:\"After all that...happy launching!\"}),/*#__PURE__*/e(\"p\",{children:\"It might seem intimidating, but some intentional effort ahead of your Product Hunt launch can make it much more impactful (and fun!). We found a lot of joy in bringing the latest and greatest version of Remotion to such an engaged platform, and watching our users rally behind us was incredibly rewarding.\"}),/*#__PURE__*/e(\"p\",{children:\"Keep the specific context of the platform in mind, activate your community, and get prepared in advance to make the most of the moment. For further reading, check out these resources we found helpful in preparing for our launch.\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"18px\",\"--framer-letter-spacing\":\"0.1px\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"rgb(51, 51, 51)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://blog.producthunt.com/how-to-launch-on-product-hunt-7c1843e06399\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to Launch on Product Hunt, by Product Hunt\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://docs.google.com/document/d/1gtJqdSzhKb4yulKCyspG8uTKin0_7R6tpmlvIIpSlBc/edit\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"The Nordic Web Ventures Guide to Launching on Product Hunt\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(r,{href:\"https://www.notion.so/Product-Hunt-Launch-Checklist-166a46fbe162412e9545b39ec18353e4\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Tally's Product Hunt Launch Checklist\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(r,{href:\"https://typestudio.co/blog/product-hunt-learnings/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Type Studio's Product Hunt Launch Guide\"})}),/*#__PURE__*/e(\"br\",{}),\"\u200D\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"2022 Update:\\xa0Launching a feature (our Spotify sharing) on Product Hunt\"}),/*#__PURE__*/e(\"img\",{alt:\"Play Spotify together by Remotion - Product Hunt launch screenshot\",className:\"framer-image\",src:\"https://uploads-ssl.webflow.com/5eaca37c661b3fa1a12df483/6361370c3f02a64787a25284_Screen%20Shot%202022-11-01%20at%2011.10.57%20AM.png\"}),/*#__PURE__*/t(\"p\",{children:[\"Check out the Product Hunt launch \",/*#__PURE__*/e(r,{href:\"https://www.producthunt.com/products/remotion#play-spotify-together-by-remotion\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"This past Summer, we released a new feature:\\xa0the ability to \",/*#__PURE__*/e(r,{href:\"https://www.remotion.com/play-spotify-together\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Play Spotify together remotely\"})}),\" in Remotion. We decided to launch it on Product Hunt given the positive results of our previous launches, but we weren't sure how the launch of a specific feature would perform versus launching and re-launching our entire product. We'd also heard that recent launches were performing worse than expected, with some questions about the efficacy of Product Hunt launches in general.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"So, we decided to put a lot less effort into the launch\u2014we didn't rally our community in advance, we didn't do many of the things we outlined in our Product Hunt launch guide above. We saw 141 new teams created (vs. 400-500 in our Remotion 2.0 launch), and leveraged the launch to get some coverage in \",/*#__PURE__*/e(r,{href:\"https://9to5mac.com/2022/07/25/remotion-spotify-mac-shareplay/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"9to5 Mac\"})}),\" and a few other outlets that we think drove many of those signups.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"This launch was the lowest performing of our 3 launches so far. We expected lower results because we held off on the multiple emails, DMs etc to rally community to PH, but this is still lower than our lowered baseline. This could be that our experiment of marketing a niche, consumery feature (Spotify sync) instead of main product (virtual office or video for remote collaboration) didn't pay off. I wrote more \",/*#__PURE__*/e(r,{href:\"https://twitter.com/embirico/status/1552042769727868930?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed&ref_url=https%3A%2F%2Fwww.notion.so%2Fremotion%2FProduct-Hunt-Reflections-7ed3d8f8873d441aae6346d274042680\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" about how this second launch went, and also found \",/*#__PURE__*/e(r,{href:\"https://twitter.com/michwirantono/status/1539458194380136448\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"this take\"})}),\" on how Product Hunt is better for initial traction than sustainable growth from the team at Typedream helpful. Overall:\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"I hope this update helps as you decide if and how to launch on Product Hunt. Questions on launch strategy or our experience? Feel free to reach out to alexander at remotion dot com or kayanne at remotion dot com. Good luck with your launch!\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"Want to create a Launch war room in \",/*#__PURE__*/e(r,{href:\"https://www.remotion.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remotion\"})}),\" to cowork with your team?\\xa0\",/*#__PURE__*/e(r,{href:\"https://www.remotion.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Sign up free today\"})}),\".\"]})]});\nexport const __FramerMetadata__ = {\"exports\":{\"richText3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText1\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText4\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText7\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText5\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText6\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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",
  "names": ["richText", "u", "x", "p", "Link", "richText1", "motion", "ComponentPresetsConsumer", "t", "CodeBlock_default", "richText2", "richText3", "richText4", "richText5", "richText6", "richText7", "__FramerMetadata__"]
}
