Case Study: Contenda creates 75% finished blogs from videos

Devs For Ukraine was a free, online engineering conference with the goal to raise funds and provide support to Ukraine. All talks are recorded on this YouTube playlist.

Speakers included the creator of Redux (Dan Abramov), former CTO of Product Hunt and CTO of OnDeck (Andreas Klinger), engineering lead of Google Chrome (Addy Osmani), and many more.


Jimple JStures Can Go a Long Way by Charlie Gerard

YouTube video

Contenda’s unedited content

In human-computer interaction (HCI), motion detection is important for detecting specific movements. This can be done with standard motion detectors, which simply detect whether there is movement or not, or with more sophisticated sensors that can detect specific movements.

Standard motion detectors are those that simply detect whether there is movement or not. They do not provide any contextual information about the movement. However, customizable motion detectors are those that can provide contextual information about the movement. This information can be used to build smarter, more customized systems.

Microcontrollers are small computers that can be used to control devices. They typically include an accelerometer and gyroscope, which can be used to detect movement. Accelerometers are devices that measure acceleration. They can be used to detect movement. Gyroscopes are devices that measure rotation. They can be used to detect movement.

With the right tools, it is possible to build a smarter, more customized motion detection system using a microcontroller and TensorFlow.js. Arduino is a great microcontroller for this purpose, and Tinkerers can use it to experiment with building their own motion detection systems.

The Future of Performance Tooling by Addy Osmani

YouTube video

Contenda’s unedited content

When we talk about web page performance, we’re usually referring to how fast a page loads and how responsive it is to user interaction. But there’s more to it than that. User experience is about the overall experience a user has while using a product or service. And lab tooling is the term we use for the tools we use to measure and improve web page performance.

In the past, lab tooling has focused on things like the initial page load performance. But our understanding of user experience has evolved, and so our tooling needs to evolve as well. For example, some of the core web vitals metrics take into account how the experience might change beyond that initial page load.

One way to understand the user experience is through user flows. A user flow is a series of steps a user takes to achieve a meaningful goal. It begins at a user’s entry point into a product or a task like a landing page or a shopping cart, and it ends at a final interaction like them completing a sign up or placing an order.

Understanding user flows can be helpful for things like optimizing the performance of a web page. That’s because you can identify the bottlenecks in a user’s journey and figure out how to improve them.

Chrome’s DEV tools have a new feature called User Flows that can help with this. User Flows allows you to record a series of steps in a user journey and then replay or measure the performance of those steps. You can also export User Flows to JSON, Puppeteer, or WebPageTest.

This is a powerful new tool that can help you improve the performance of your web pages and give you a better understanding of the user experience.

Introduction to Reactive Programming by Ben Lesh

YouTube video

Contenda’s unedited content

Reactive programming is a programming paradigm that focuses on how data flows through a system. There are two main types of reactive programming: pull-based and push-based.

Pull-based reactive programming is where the programmer pulls values from a data source, while push-based reactive programming is where the data source pushes values to the programmer.

The JavaScript interval is weird because it returns an object with a done property instead of just a boolean value. Additionally, the JavaScript interval has a symbol iterator that allows you to call a method on anything that’s iterable.

The concept of a dual in category theory is when you reverse the morphisms of a category and interchange the source and target from each morphism.

Inverting an interval to create an observable means that you change the iterator method to an observed method and that you change the next method to accept a value instead of returning one.

Observables are useful because they allow you to create complex data pipelines and they’re easy to compose. If you’re working with data that’s constantly changing, observables are a great choice.

Third Time’s the Charm: Taking Another Look at Vue 3 by Ben Hong

YouTube video

Contenda’s unedited content

Welcome to my talk on the Vue.js framework. I’m Ben Hong, a senior staff developer experience engineer at Netlify and a core team member of the Vue.js community. I’m also a Nuxt ambassador, helping to share all the goodness about the Vue.js framework.

In this talk, I’ll be covering some of the key features that made Vue.js popular, including single file components and the options API. I’ll also be discussing some of the benefits of using the Vue.js CDN import library.

Single file components are a great way to encapsulate all logic, templating, and styling in one file. This makes it easy to delete or move files without worrying about breaking dependencies. The options API in Vue.js allows for the incorporation of reactive data, event firing, and other logic in one place.

The benefits of using the Vue.js CDN import library include the ability to progressively enhance apps and the small size of the library. The Vue.js CDN import library is a great way to incorporate Vue.js into existing apps.

Local State and Server Cache: Finding a Balance by Natalia Tepluhina

YouTube video

Contenda’s unedited content

When building applications, developers often need to decide how to manage the state of their data. Should they use a local state manager, such as a Redux store, or should they use a server-side state manager?

There are benefits and drawbacks to both approaches. Local state managers are good for sharing data across different components and routes, and for persisting data on a server. However, local state managers require more boilerplate code to handle loading state, errors, and updates to data.

Server-side state managers have the advantage of being able to easily update data on the server. However, they can be more challenging to work with when data is changing on the server.

In the end, the decision of whether to use a local state manager or a server-side state manager depends on the specific needs of the application.

Solving Everyday Problems with Data Visualization by Volodymyr Agafonkin

YouTube video

Contenda’s unedited content

Introducing Observable: A Tool for Data Visualization

Have you ever wanted to visualize data in a more interactive and intuitive way? Well, there’s a tool for that! It’s called Observable, and it’s a data visualization tool that allows you to write code and see the results in real time.

Observable is a great tool for those who work in fields that require visualizations, like maps or computer graphics. It’s also perfect for exploring data and algorithms. With Observable, you can easily drag things around, and you have the whole power of nom at your disposal.

One of the best things about Observable is that it’s easy to use. You can write some code, and then see the results immediately. This makes it great for experimentation. For example, you can import any libraries you want, and you can define some data. Then, you can generate a visualization of a 3D space-filling curve, and explore it by dragging around.

Or, you can use Observable to develop a more advanced algorithm, like a smarty algorithm for generating simplified terrain meshes. With Observable, you can easily see how your algorithm is working and make adjustments in real time.

A RESTful API for Your Wellbeing by Jessica Janiuk

YouTube video

Contenda’s unedited content

It’s no secret that working too much can lead to some pretty negative consequences. We’ve all heard the stories of people working themselves to the point of exhaustion and then burning out. That’s why it’s so important to take some time off from work every now and again.

Time off can be used to recharge our batteries, rest and relax, and reconnect with friends and family. It can also be used to learn new things or simply take some time to enjoy life outside of work.

However, taking time off from work can sometimes be easier said than done. Requesting time off can be a daunting task, especially if you’re worried about how your boss will react.

That’s why it’s important to be assertive when requesting time off. Remember, you have a right to take time off and your boss should not make you feel guilty for doing so.

If your boss does try to make you feel guilty or puts pressure on you to work instead of taking time off, it might be time to consider finding a new job. There are plenty of jobs out there that don’t have such toxic expectations.

Finally, it’s important to take care of yourself. This means getting enough rest, eating well, and exercising. Taking care of yourself will help you avoidburnout and maintain your health and well-being.

If you’re struggling, know that you are not alone. There are plenty of resources out there to help you. And always remember, you are capable, valid, and important.

Almost on Time by Aaron Patterson

YouTube video

Contenda’s unedited content

A Just-In-Time (JIT) compiler is a type of compiler that compiles instructions during runtime. This is in contrast to a Ahead-Of-Time (AOT) compiler which compiles instructions ahead of time, before the program is run.

JIT compilation can provide a performance gain over AOT compilation because it can allow the compiler to optimize the code for the specific platform it is running on. For example, if the JIT compiler knows that the code will be running on a processor with a certain type of cache, it can generate code that is optimized for that cache.

JIT compilation can also provide a performance gain by allowing the compiler to inline code. Inlining is the process of replacing a function call with the body of the function. This can be done because the JIT compiler has more information about the context in which the code will be run.

Another optimization that JIT compilers can perform is called dead code elimination. This is the process of removing code that is not used by the program. A JIT compiler can do this because it can track which code is actually used during runtime.

JIT compilers can provide a significant performance boost for programs that are performance sensitive. For example, video games and web browsers often use JIT compilers to improve performance.

If You Build It, They Will Come by Sandi Metz

YouTube video

Contenda’s unedited content

In object-oriented programming, one of the most important concepts is that of polymorphism. This is the idea that many different objects can respond to the same message. This is powerful because it allows for different objects to be interchangeable from the message sender’s point of view.

Factories are a key part of achieving polymorphism. A factory is responsible for manufacturing the correct instance of a role-playing object. The factory knows all the different types of objects that can play a role, and how to pick the right one for any specific circumstance.

There are different types of factories, depending on how they are implemented. For example, a factory can be open or closed. An open factory is one that can be easily extended to add new types of objects. A closed factory is one that is more difficult to change.

The benefits of using factories include loosening the coupling between objects in an application and lowering the cost of change. By isolating the conditional logic in a factory, it becomes much easier to add or remove new types of objects without affecting the rest of the code. This makes applications more tolerant of change and easier to maintain in the long run.

Engineering For Startups by Lilly Chen

YouTube video

Contenda’s unedited content

The internet has completely revolutionized the way that businesses operate. In the past, businesses would have to rely on things like print ads and word of mouth to get their name out there. These days, startups can use the internet to reach a much wider audience and potentially find the success that they’re looking for.

One of the most important things for a startup is to find product market fit as fast as possible. This means building as many MVPs, or minimal viable products, as possible. The goal is to find a product that the market actually wants and is willing to pay for. Unfortunately, most startups never find product market fit and end up failing.

The team behind Contenda decided to build analytics for Twitch streamers because they are all gamers themselves. However, they soon realized that there was not enough demand in the market to justify the product. They decided to test the market by putting up a landing page and collecting sign-ups. This helped them gauge the level of interest in the product and ultimately led to the development of a more successful product.

The “Wizard of Oz” is a term used in the industry to refer to the fact that startups can use landing pages to collect sign-ups and gauge interest in a product. This is a great way to test hypotheses and see if there is a market for your product. If you’re able to collect enough sign-ups, then you know that you have a product that people are actually interested in.

Overall, it’s important to remember that product market fit is essential for any startup. Without it, you’re likely to fail. The best way to find product market fit is to build as many MVPs as possible and to test the market with things like landing pages. If you can do these things, then you’ll be well on your way to success.

Confident Elixir by Tetiana Dushenkivska

YouTube video

Contenda’s unedited content

Confident code is code that is well organized, well written, and free of side effects. In Elixir, one way to achieve confident code is by using structs instead of interfaces. Structs allow for more flexibility and composability than interfaces, but there is a potential danger in how they are defined.

Another way to achieve confident code is by pushing pure code to the boundary and converting data to structs as early as possible. This can help to avoid potential problems.

Processes are a type of concurrent programming that can be used to add state or concurrency to a program. Supervision trees are used to add fault tolerance to a program.

Event-based architecture is a type of architecture in which events are sent to a central broker and all subscribers of the broker receive and process events asynchronously. This architecture can help to decouple applications.

Patterns for Sanity by Vittoria Bitton

YouTube video

Contenda’s unedited content

Having an architectural reference for your codebase can make your life much easier. It provides a standard for how things should be done and can help people understand your codebase better. Domain-driven design is a great way to create a more organized and scalable codebase. The support and guidelines of a framework can also help improve the structure of your codebase.

When you’re working on a new feature or shipping code, it’s easy to feel lost in a large codebase. Having an architectural reference can help you understand where things belong and how they should be done.

Domain-driven design is a great way to reflect business domain into code. It can help create a more organized and scalable codebase.

The support and guidelines of a framework can also help improve the structure of your codebase by providing a standard for how things should be done.

Opening Doors with Open Source by Anjana Vakil

YouTube video

Contenda’s unedited content

The role of open source in the modern world cannot be understated. It has the ability to help individuals and businesses in a variety of ways, from providing opportunities for collaboration and development to creating opportunities for success.

For businesses, open source can be a key driver of success. From accelerating the adoption of new technologies to fostering positive feedback loops of development and adoption, open source can help businesses achieve their goals.

One of the key ways that businesses can benefit from open source is by reinvesting in open source communities. By contributing to the development of open source projects, businesses can ensure that the software they rely on continues to improve. This, in turn, can lead to increased adoption of their products and services.

Hasura is one company that has seen the benefits of reinvesting in open source. By contributing to the development of the GraphQL and Haskell communities, Hasura has been able to improve the quality of its products and accelerate the adoption of its technology.


Overall, open source is a powerful tool that can help individuals and businesses alike. By contributing to open source projects and communities, businesses can ensure that they continue to reap the benefits of open source for years to come.

These summary posts were generated by Contenda, an AI content transformation tool. There is no human editing* on these posts, so feel free to report bugs to lilly@contenda.co. Q&A’s were omitted because we don’t have a model for that content type yet :(

*Ben Hong’s summary said “nuts ambassador” instead of Nuxt ambassador, so I edited that one because it was too funny. We’ll have to add Nuxt to the allowlist of technical terms.