# extend

Published articles for extend.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## The Microsoft 365 Copilot Agent's Playbook: A Practical Livestream Series for Building Better Agents

DevFeed: [The Microsoft 365 Copilot Agent's Playbook: A Practical Livestream Series for Building Better Agents](<https://devfeed.tech/articles/the-microsoft-365-copilot-agent-s-playbook-a-practical-livestream-series-for-building-better-agents-23835.md>)

Original publisher: [Read original article](<https://devblogs.microsoft.com/blog/the-microsoft-365-copilot-agents-playbook-a-practical-livestream-series-for-building-better-agents/>)

Author: Shavonna Jackson

Published: 2026-07-23T19:03:53Z

Content type: release

Language: en

Sources: [Developer Blogs](<https://devfeed.tech/sources/developer-blogs.md>)

Topics: [microsoft 365](<https://devfeed.tech/topics/microsoft-365.md>), [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [build](<https://devfeed.tech/tags/build.md>), [developer-tools](<https://devfeed.tech/tags/developer-tools.md>), [developers](<https://devfeed.tech/tags/developers.md>), [evals](<https://devfeed.tech/tags/evals.md>), [evaluation](<https://devfeed.tech/tags/evaluation.md>), [extend](<https://devfeed.tech/tags/extend.md>), [flow](<https://devfeed.tech/tags/flow.md>), [microsoft-365-copilot](<https://devfeed.tech/tags/microsoft-365-copilot.md>), [microsoft-for-developers](<https://devfeed.tech/tags/microsoft-for-developers.md>)

### AI overview

Microsoft is launching a four-part livestream series about building, extending, grounding, and evaluating declarative agents for Microsoft 365 Copilot. The sessions include presentations, demos, and live Q&A for developers, makers, architects, and technical teams.

### Source excerpt

Building on Microsoft 365 Copilot? Here's your playbook. Declarative agents are quickly becoming one of the most exciting ways to extend Microsoft 365 Copilot and bring organizational knowledge, workflows, and tools directly into the flow of work. But as agent capabilities grow, so does the need for practical guidance: How do you build agents that [...] The post The Microsoft 365 Copilot Agent's Playbook: A Practical Livestream Series for Building Better Agents appeared first on Microsoft for Developers.

## Khronos Launches Initiative to Extend glTF for Volumetric Media

DevFeed: [Khronos Launches Initiative to Extend glTF for Volumetric Media](<https://devfeed.tech/articles/khronos-launches-initiative-to-extend-gltf-for-volumetric-media-15113.md>)

Original publisher: [Read original article](<https://www.khronos.org/blog/khronos-launches-initiative-to-extend-gltf-for-volumetric-media>)

Author: jphilips (jeff@khronosgroup.org)

Published: 2026-06-15T13:00:00Z

Content type: news

Language: en

Sources: [Blogs Khronos Blog](<https://devfeed.tech/sources/blogs-khronos-blog.md>)

Topics: [3D](<https://devfeed.tech/topics/3d.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [api](<https://devfeed.tech/tags/api.md>), [blog-gltf-volumetri](<https://devfeed.tech/tags/blog-gltf-volumetri.md>), [capture](<https://devfeed.tech/tags/capture.md>), [extend](<https://devfeed.tech/tags/extend.md>), [gltf](<https://devfeed.tech/tags/gltf.md>), [media](<https://devfeed.tech/tags/media.md>), [playback](<https://devfeed.tech/tags/playback.md>), [standard](<https://devfeed.tech/tags/standard.md>), [standards](<https://devfeed.tech/tags/standards.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

Khronos has established a Volumetric Media Subgroup within its 3D Formats working group to extend glTF for interoperability across volumetric capture, data formats, and content playback. The initiative invites organizations to help define the new capabilities.

### Source excerpt

Any interested organizations are invited to join Khronos to help define new glTF capabilities to enable interoperable volumetric capture, streaming and playback

## Generic Variance

DevFeed: [Generic Variance](<https://devfeed.tech/articles/generic-variance-25066.md>)

Original publisher: [Read original article](<https://typealias.com/start/kotlin-variance/>)

Author: author@typealias.com (Dave Leeds)

Published: 2024-04-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Dave Leeds on Kotlin - typealias.com](<https://devfeed.tech/sources/dave-leeds-on-kotlin-typealias-com.md>)

Topics: [generics](<https://devfeed.tech/topics/generics.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [advanced-kotlin-concepts](<https://devfeed.tech/tags/advanced-kotlin-concepts.md>), [contravariance](<https://devfeed.tech/tags/contravariance.md>), [covariance](<https://devfeed.tech/tags/covariance.md>), [extend](<https://devfeed.tech/tags/extend.md>), [generic-variance](<https://devfeed.tech/tags/generic-variance.md>), [generics](<https://devfeed.tech/tags/generics.md>), [implement](<https://devfeed.tech/tags/implement.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [introduction](<https://devfeed.tech/tags/introduction.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-generics](<https://devfeed.tech/tags/kotlin-generics.md>), [kotlin-type-safety](<https://devfeed.tech/tags/kotlin-type-safety.md>), [learn-to-program](<https://devfeed.tech/tags/learn-to-program.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language-type-systems](<https://devfeed.tech/tags/programming-language-type-systems.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [subtyping-in-kotlin](<https://devfeed.tech/tags/subtyping-in-kotlin.md>), [type-parameters](<https://devfeed.tech/tags/type-parameters.md>)

### AI overview

A tutorial on variance in Kotlin generic types. It explains how covariance and contravariance affect subtype relationships between parameterized types, using examples to show when one generic type can substitute for another.

### Source excerpt

We've seen how we can implement interfaces and extend classes to create subtypes. However, with generic types, we sometimes want to create a subtype based on the type arguments instead of the base types. Kotlin gives us a few different tools to achieve this, and in this chapter we'll learn all about them. In order to understand how this is possible, we'll first need to understand the principles of variance. Then, we'll look at three simple rules that explain when one parameterized type can be the subtype of another.

## Jetpack Compose Clip or Cut a Composable with Custom Image Shape

DevFeed: [Jetpack Compose Clip or Cut a Composable with Custom Image Shape](<https://devfeed.tech/articles/jetpack-compose-clip-or-cut-a-composable-with-custom-image-shape-25850.md>)

Original publisher: [Read original article](<https://medium.com/@banmarkovic/jetpack-compose-clip-or-cut-a-composable-with-custom-image-shape-062dde54d4b2?source=rss-8aced922ece------2>)

Author: Ban Markovic

Published: 2024-02-14T17:25:40Z

Content type: tutorial

Language: en

Sources: [Stories by Ban Markovic on Medium](<https://devfeed.tech/sources/stories-by-ban-markovic-on-medium.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Graphics](<https://devfeed.tech/topics/graphics.md>)

Tags: [alignment](<https://devfeed.tech/tags/alignment.md>), [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [building](<https://devfeed.tech/tags/building.md>), [component](<https://devfeed.tech/tags/component.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-ui](<https://devfeed.tech/tags/compose-ui.md>), [customization](<https://devfeed.tech/tags/customization.md>), [extend](<https://devfeed.tech/tags/extend.md>), [images](<https://devfeed.tech/tags/images.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [layout](<https://devfeed.tech/tags/layout.md>), [merge](<https://devfeed.tech/tags/merge.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A tutorial showing how to clip a Jetpack Compose composable to a custom image shape. It builds a health-bar example, then uses PorterDuff operators and Modifier.drawWithContent to combine the image shape with colored content.

### Source excerpt

As an Android developer, I face all sorts of challenges provided to me by my fellow designers. One of them was actually building an UI component that has a custom shape in a form of an image. This was required because we wanted to display a special type of a progress bar by fulfilling the image shape with gradient. Because I didn't find this functionality trivial to implement, I decided to show how I solved this issue with some fun example. Example Here is a simple game where I utilized cutting of my composable. The game consists of one plane with full health. Upon each hit, it looses 10% of its health. Game is over once the plane remains with no health. Game Setup First, let me show you how I formed the basic layout for this game. It will contain the gray square and Hit button. Column( modifier = Modifier.fillMaxSize().background(Color.Black), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { Box( modifier = Modifier .size(240.dp) .background(Color.LightGray) ) Spacer(modifier = Modifier.height(40.dp)) Button( onClick = { /* TODO */ } ) { Text("HIT") } } Next step, is to create custom Composable called SquareHealth. SquareHealth is expecting the progress value (from 0.0 to 1.0). This will determine the height of the green area inside my gray square (aligned at bottom). It will represent remaining health for my Square. @Composable fun SquareHealth(healthPercentage: Float) { Box( modifier = Modifier .size(240.dp) .background(Color.LightGray) ) { Box( modifier = Modifier .fillMaxWidth() .height((240 * healthPercentage).dp) .background(Color.Green) .align(Alignment.BottomCenter) ) } } Now, I can call it instead of the static gray Box inside my screen. The basic layout is now set, and I just need to set initial health progress to 1.0, and enable my button to decrease the health percentage by 0.1 on each click. var healthPercentage by remember { mutableStateOf(1.0f) } Column( modifier = Modifier .fillMaxSize() .background(Co

## Abstract and Open Classes

DevFeed: [Abstract and Open Classes](<https://devfeed.tech/articles/abstract-and-open-classes-25047.md>)

Original publisher: [Read original article](<https://typealias.com/start/kotlin-abstract-and-open-classes/>)

Author: author@typealias.com (Dave Leeds)

Published: 2023-08-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Dave Leeds on Kotlin - typealias.com](<https://devfeed.tech/sources/dave-leeds-on-kotlin-typealias-com.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [abstract-class](<https://devfeed.tech/tags/abstract-class.md>), [classes](<https://devfeed.tech/tags/classes.md>), [compare](<https://devfeed.tech/tags/compare.md>), [delegation](<https://devfeed.tech/tags/delegation.md>), [extend](<https://devfeed.tech/tags/extend.md>), [function](<https://devfeed.tech/tags/function.md>), [implement](<https://devfeed.tech/tags/implement.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [introduction](<https://devfeed.tech/tags/introduction.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [learn-to-program](<https://devfeed.tech/tags/learn-to-program.md>), [open-class](<https://devfeed.tech/tags/open-class.md>), [polymorphism](<https://devfeed.tech/tags/polymorphism.md>), [programming](<https://devfeed.tech/tags/programming.md>), [retro](<https://devfeed.tech/tags/retro.md>), [speed](<https://devfeed.tech/tags/speed.md>), [subclass](<https://devfeed.tech/tags/subclass.md>), [superclass](<https://devfeed.tech/tags/superclass.md>)

### AI overview

A tutorial chapter explaining how to extend open and abstract classes to create subtypes and share general code. It compares this approach with interfaces and delegation, highlighting that each has advantages and disadvantages.

### Source excerpt

In Chapter 12, we saw how we could use interfaces to create subtypes, and in the last chapter, we saw how we could use delegation with interfaces in order to share general code among specific classes. In this chapter, we'll learn how we can extend open and abstract classes to accomplish these same things with a different approach. Each approach has its advantages and disadvantages, so we'll also look at how they compare to one another.

## Adopt a Customer 360 approach to prevent fraud with GraphQL

DevFeed: [Adopt a Customer 360 approach to prevent fraud with GraphQL](<https://devfeed.tech/articles/adopt-a-customer-360-approach-to-prevent-fraud-with-graphql-23127.md>)

Original publisher: [Read original article](<https://www.apollographql.com/blog/adopt-a-customer-360-approach-to-prevent-fraud-with-graphql>)

Author: Val Polouchkine

Published: 2023-03-27T16:10:33Z

Content type: tutorial

Language: en

Sources: [Apollo Blog](<https://devfeed.tech/sources/apollo-blog.md>)

Topics: [GraphQL](<https://devfeed.tech/topics/graphql.md>), [data-architecture](<https://devfeed.tech/topics/data-architecture.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [apollo](<https://devfeed.tech/tags/apollo.md>), [compliance](<https://devfeed.tech/tags/compliance.md>), [extend](<https://devfeed.tech/tags/extend.md>), [financial-services](<https://devfeed.tech/tags/financial-services.md>), [fraud](<https://devfeed.tech/tags/fraud.md>), [graphos](<https://devfeed.tech/tags/graphos.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [identity](<https://devfeed.tech/tags/identity.md>), [integration](<https://devfeed.tech/tags/integration.md>), [object](<https://devfeed.tech/tags/object.md>), [prevent-fraud](<https://devfeed.tech/tags/prevent-fraud.md>), [series](<https://devfeed.tech/tags/series.md>)

### AI overview

This tutorial explains how financial institutions can use GraphQL and Apollo GraphOS to build a single customer view for KYC and anti-money-laundering work. It describes combining customer metadata and risk assessments from separate teams and subgraphs in a federated graph, while allowing teams to evolve their areas independently.

### Source excerpt

This post is a part of our "How to power modern financial services apps with Apollo GraphOS" series. Also in this series: - Deliver a personalized customer experience with GraphQL - Securing APIs declaratively with GraphQL - Ensure compliant and secure third-party access using GraphOS Customers are the cornerstone of any business, but many companies don't truly know who their customers are.

## Animating fonts in Jetpack Compose

DevFeed: [Animating fonts in Jetpack Compose](<https://devfeed.tech/articles/animating-fonts-in-jetpack-compose-25764.md>)

Original publisher: [Read original article](<https://www.sinasamaki.com/animating-fonts-in-jetpack-compose/>)

Author: sinasamaki

Published: 2022-11-03T06:32:43Z

Content type: tutorial

Language: en

Sources: [sinasamaki](<https://devfeed.tech/sources/sinasamaki.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [floating-point](<https://devfeed.tech/topics/floating-point.md>)

Tags: [animation](<https://devfeed.tech/tags/animation.md>), [article](<https://devfeed.tech/tags/article.md>), [behavior](<https://devfeed.tech/tags/behavior.md>), [code](<https://devfeed.tech/tags/code.md>), [color](<https://devfeed.tech/tags/color.md>), [compose](<https://devfeed.tech/tags/compose.md>), [extend](<https://devfeed.tech/tags/extend.md>), [floating-point](<https://devfeed.tech/tags/floating-point.md>), [function](<https://devfeed.tech/tags/function.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [object](<https://devfeed.tech/tags/object.md>), [optional](<https://devfeed.tech/tags/optional.md>), [state](<https://devfeed.tech/tags/state.md>)

### AI overview

A tutorial on animating between TextStyles in Jetpack Compose. It explains using lerp with a float animation and introduces a helper function that manages animation state and completion callbacks to reduce repetitive code.

### Source excerpt

Jetpack compose offers many different animation helper functions. We can easily animate floats, colors, density-pixels, etc. These helper functions are usually called like this: val animatedColor by animateColorAsState( targetValue = color, animationSpec = tween(durationMillis = 300, easing = LinearEasing) ) The animateColorAsState function returns a state object and we can simply listen to

## Extending SwipeToDismiss in Jetpack compose

DevFeed: [Extending SwipeToDismiss in Jetpack compose](<https://devfeed.tech/articles/extending-swipetodismiss-in-jetpack-compose-25779.md>)

Original publisher: [Read original article](<https://www.sinasamaki.com/extending-swipetodismiss-in-jetpack-compose/>)

Author: sinasamaki

Published: 2022-09-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [sinasamaki](<https://devfeed.tech/sources/sinasamaki.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [color](<https://devfeed.tech/tags/color.md>), [compose](<https://devfeed.tech/tags/compose.md>), [customization](<https://devfeed.tech/tags/customization.md>), [extend](<https://devfeed.tech/tags/extend.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [icons](<https://devfeed.tech/tags/icons.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [state](<https://devfeed.tech/tags/state.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains how to extend Jetpack Compose's SwipeToDismiss composable for list actions by adding configurable swipe behavior, threshold state, colors, icons, and other UI improvements.

### Source excerpt

This is a common UI pattern to perform quick actions on lists of items. In this article, we will go over how to build a rich, expressive swipe to dismiss example. Jetpack compose has a default composable that provides this functionality called SwipeToDismiss. This composable offers some customization but we

## How to Use Material Data Tables on the Web

DevFeed: [How to Use Material Data Tables on the Web](<https://devfeed.tech/articles/how-to-use-material-data-tables-on-the-web-28811.md>)

Original publisher: [Read original article](<https://una.im/material-data-tables/>)

Published: 2019-09-25T00:00:00Z

Content type: tutorial

Language: en

Sources: [Una Kravets](<https://devfeed.tech/sources/una-kravets.md>)

Topics: [Design system](<https://devfeed.tech/topics/design-system.md>), [web design](<https://devfeed.tech/topics/web-design.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [creative-web-design](<https://devfeed.tech/tags/creative-web-design.md>), [design](<https://devfeed.tech/tags/design.md>), [design-system](<https://devfeed.tech/tags/design-system.md>), [extend](<https://devfeed.tech/tags/extend.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [web](<https://devfeed.tech/tags/web.md>), [web-design](<https://devfeed.tech/tags/web-design.md>)

### AI overview

This post explains how to use Material data tables on the web and extend the Material design system to create a customized design.

### Source excerpt

Creative web design and systematic web design don't need to be at arms. This post examines how to use a design system (Material) and extend it to make it your own.

## How to Extend Material for a Custom Design System

DevFeed: [How to Extend Material for a Custom Design System](<https://devfeed.tech/articles/material-theming-making-material-your-own-28813.md>)

Original publisher: [Read original article](<https://una.im/material-theming-intro/>)

Published: 2019-06-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [Una Kravets](<https://devfeed.tech/sources/una-kravets.md>)

Topics: [Design system](<https://devfeed.tech/topics/design-system.md>), [web design](<https://devfeed.tech/topics/web-design.md>)

Tags: [creative-web-design](<https://devfeed.tech/tags/creative-web-design.md>), [design](<https://devfeed.tech/tags/design.md>), [design-system](<https://devfeed.tech/tags/design-system.md>), [extend](<https://devfeed.tech/tags/extend.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [post](<https://devfeed.tech/tags/post.md>)

### AI overview

The post examines how to extend the Material design system for more customized web design.

### Source excerpt

Creative web design and systematic web design don't need to be at arms. This post examines how to use a design system (Material) and extend it to make it your own.

## Spring internals - BeanDefinition

DevFeed: [Spring internals - BeanDefinition](<https://devfeed.tech/articles/spring-internals-beandefinition-27303.md>)

Original publisher: [Read original article](<https://blog.pchudzik.com/201904/beandefinition/>)

Published: 2019-04-29T00:00:00Z

Content type: tutorial

Language: en

Sources: [Paweł Chudzik](<https://devfeed.tech/sources/pawe-chudzik.md>)

Topics: [Spring Framework](<https://devfeed.tech/topics/spring-framework.md>), [Code](<https://devfeed.tech/topics/code.md>), [implementation](<https://devfeed.tech/topics/implementation.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [customization](<https://devfeed.tech/tags/customization.md>), [examples](<https://devfeed.tech/tags/examples.md>), [extend](<https://devfeed.tech/tags/extend.md>), [framework](<https://devfeed.tech/tags/framework.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [internals](<https://devfeed.tech/tags/internals.md>), [spring](<https://devfeed.tech/tags/spring.md>), [spring-framework](<https://devfeed.tech/tags/spring-framework.md>)

### AI overview

A tutorial on Spring Framework BeanDefinition internals explains how bean definitions are discovered, registered, created, and customized. It covers dynamic registration and modification through BeanDefinitionRegistryPostProcessor and BeanDefinitionCustomizer.

### Source excerpt

How beans are registered in spring and what is the base of beans creation, how to extend spring's context to our needs? In this post, I'm going to dig into the foundation of many mechanics in spring framework - bean definition. Read more

## Writing Craft Plugins with Extensible Components

DevFeed: [Writing Craft Plugins with Extensible Components](<https://devfeed.tech/articles/writing-craft-plugins-with-extensible-components-31322.md>)

Original publisher: [Read original article](<https://nystudio107.com/blog/writing-craft-plugins-with-extensible-components>)

Author: andrew@nystudio107.com (Andrew Welch)

Published: 2018-12-26T22:19:00Z

Content type: tutorial

Language: en

Sources: [nystudio107 | Articles on modern web development.](<https://devfeed.tech/sources/nystudio107-articles-on-modern-web-development.md>)

Topics: [Content Management System](<https://devfeed.tech/topics/cms.md>), [PHP](<https://devfeed.tech/topics/php.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [API](<https://devfeed.tech/topics/api.md>), [Code](<https://devfeed.tech/topics/code.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [allows](<https://devfeed.tech/tags/allows.md>), [article](<https://devfeed.tech/tags/article.md>), [cms](<https://devfeed.tech/tags/cms.md>), [code](<https://devfeed.tech/tags/code.md>), [component-ized](<https://devfeed.tech/tags/component-ized.md>), [craft](<https://devfeed.tech/tags/craft.md>), [extend](<https://devfeed.tech/tags/extend.md>), [flexible](<https://devfeed.tech/tags/flexible.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [insights](<https://devfeed.tech/tags/insights.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [modular](<https://devfeed.tech/tags/modular.md>), [php](<https://devfeed.tech/tags/php.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [plugin-development](<https://devfeed.tech/tags/plugin-development.md>), [write](<https://devfeed.tech/tags/write.md>)

### AI overview

A tutorial on designing Craft CMS plugins with extensible components. It uses the ImageOptimize plugin as a practical example and explains how PHP interfaces can define an API that allows image transformation functionality to be replaced or extended by other services.

### Source excerpt

How to write a plugin for Craft CMS that allows others to extend it in a flexible, component-ized way

## Extend the \*ngIf Syntax to Create a Custom Permission Directive

DevFeed: [Extend the \*ngIf Syntax to Create a Custom Permission Directive](<https://devfeed.tech/articles/extend-the-ngif-syntax-to-create-a-custom-permission-directive-21326.md>)

Original publisher: [Read original article](<https://juri.dev/blog/2018/02/angular-permission-directive/>)

Published: 2018-02-20T00:00:00Z

Content type: tutorial

Language: en

Sources: [Juri Strumpflohner](<https://devfeed.tech/sources/juri-strumpflohner.md>)

Topics: [Angular](<https://devfeed.tech/topics/angular.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [angular](<https://devfeed.tech/tags/angular.md>), [extend](<https://devfeed.tech/tags/extend.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implement](<https://devfeed.tech/tags/implement.md>), [permission](<https://devfeed.tech/tags/permission.md>)

### AI overview

A tutorial on extending Angular's *ngIf syntax to create a custom permission directive. It explains how to show or hide elements based on the authenticated user's permissions and discusses implementing permission checks and logical OR comparisons.

### Source excerpt

Lorem ipsum dolor sit amet

## How To Write Your First Plugin For The Serverless Framework - Part 1

DevFeed: [How To Write Your First Plugin For The Serverless Framework - Part 1](<https://devfeed.tech/articles/how-to-write-your-first-plugin-for-the-serverless-framework-part-1-14476.md>)

Original publisher: [Read original article](<https://www.serverless.com/blog/writing-serverless-plugins>)

Author: Anna Doubkova

Published: 2017-01-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Serverless Blog](<https://devfeed.tech/sources/serverless-blog.md>)

Topics: [serverless framework](<https://devfeed.tech/topics/serverless-framework.md>)

Tags: [aws](<https://devfeed.tech/tags/aws.md>), [aws-lambda](<https://devfeed.tech/tags/aws-lambda.md>), [cloud-computing](<https://devfeed.tech/tags/cloud-computing.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [extend](<https://devfeed.tech/tags/extend.md>), [faas](<https://devfeed.tech/tags/faas.md>), [framework](<https://devfeed.tech/tags/framework.md>), [function-as-a-service](<https://devfeed.tech/tags/function-as-a-service.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [learn](<https://devfeed.tech/tags/learn.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [serverless](<https://devfeed.tech/tags/serverless.md>), [serverless-architecture](<https://devfeed.tech/tags/serverless-architecture.md>), [serverless-framework](<https://devfeed.tech/tags/serverless-framework.md>)

### AI overview

A tutorial introducing the basics of creating a plugin to extend the Serverless Framework.

### Source excerpt

Learn the basics of creating a Serverless plugin to extend the frameworks functionality

## Let's Build A Simple Interpreter. Part 8.

DevFeed: [Let's Build A Simple Interpreter. Part 8.](<https://devfeed.tech/articles/let-s-build-a-simple-interpreter-part-8-33329.md>)

Original publisher: [Read original article](<https://ruslanspivak.com/lsbasi-part8/>)

Author: Ruslan Spivak

Published: 2016-01-18T11:10:00Z

Content type: tutorial

Language: en

Sources: [Ruslan Spivak](<https://devfeed.tech/sources/ruslan-spivak.md>)

Topics: [Parsing](<https://devfeed.tech/topics/parsing.md>), [Parser](<https://devfeed.tech/topics/parser.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [expression](<https://devfeed.tech/tags/expression.md>), [extend](<https://devfeed.tech/tags/extend.md>), [generate](<https://devfeed.tech/tags/generate.md>), [here](<https://devfeed.tech/tags/here.md>), [node](<https://devfeed.tech/tags/node.md>), [rules](<https://devfeed.tech/tags/rules.md>)

### AI overview

This tutorial explains how to add unary plus and unary minus operators to an interpreter. It covers grammar changes, a UnaryOp abstract syntax tree node, and parser and interpreter updates.

### Source excerpt

Today we'll talk about unary operators, namely unary plus (+) and unary minus (-) operators. A lot of today's material is based on the material from the previous article, so if you need a refresher just head back to Part 7 and go over it again. Remember: repetition is the ...

## Bugzilla Changes Pushed: 2FA, Testing, Feature Requests, and Membership Reports

DevFeed: [Bugzilla Changes Pushed: 2FA, Testing, Feature Requests, and Membership Reports](<https://devfeed.tech/articles/happy-bmo-push-day-20274.md>)

Original publisher: [Read original article](<https://globau.wordpress.com/2015/09/23/happy-bmo-push-day-161/>)

Author: glob

Published: 2015-09-23T05:24:22Z

Content type: release

Language: en

Sources: [Mozilla Automation](<https://devfeed.tech/sources/mozilla-automation.md>)

Topics: [Mozilla](<https://devfeed.tech/topics/mozilla.md>), [bug](<https://devfeed.tech/topics/bug.md>), [Tool](<https://devfeed.tech/topics/tool.md>)

Tags: [bmo](<https://devfeed.tech/tags/bmo.md>), [bug](<https://devfeed.tech/tags/bug.md>), [extend](<https://devfeed.tech/tags/extend.md>), [feature](<https://devfeed.tech/tags/feature.md>), [mozilla](<https://devfeed.tech/tags/mozilla.md>), [profile](<https://devfeed.tech/tags/profile.md>), [protection](<https://devfeed.tech/tags/protection.md>), [regression](<https://devfeed.tech/tags/regression.md>), [report](<https://devfeed.tech/tags/report.md>), [request](<https://devfeed.tech/tags/request.md>), [test](<https://devfeed.tech/tags/test.md>)

### AI overview

The article announces changes pushed to bugzilla.mozilla.org, covering the suggested Firefox OS 2FA app, upstream test suite backports, feature and regression-range fields, expanded 2FA protection, and membership-report last-seen dates.

### Source excerpt

the following changes have been pushed to bugzilla.mozilla.org: [1203991] change the suggested fxos 2fa app (again) [1204704] Backport upstream testsuite changes to test against bug 1202447 [1205683] Feature request: STR and regression-range pulldowns [1199087] extend 2fa protection beyond login [1204645] the 'last seen' value in the group membership report should use a profile's last-seen date, [...]

## Modularity in JavaScript MVC Frameworks

DevFeed: [Modularity in JavaScript MVC Frameworks](<https://devfeed.tech/articles/modularity-in-javascript-mvc-frameworks-21191.md>)

Original publisher: [Read original article](<https://juri.dev/blog/2013/04/modularity-in-javascript-frameworks/>)

Published: 2013-04-07T00:00:00Z

Content type: tutorial

Language: en

Sources: [Juri Strumpflohner](<https://devfeed.tech/sources/juri-strumpflohner.md>)

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [mvc](<https://devfeed.tech/topics/mvc.md>), [Frameworks](<https://devfeed.tech/topics/frameworks.md>), [Highlight.js](<https://devfeed.tech/topics/highlightjs.md>), [Single-page application (SPA)](<https://devfeed.tech/topics/spa.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [communication](<https://devfeed.tech/tags/communication.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [components](<https://devfeed.tech/tags/components.md>), [extend](<https://devfeed.tech/tags/extend.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [modularity](<https://devfeed.tech/tags/modularity.md>), [mvc](<https://devfeed.tech/tags/mvc.md>), [test](<https://devfeed.tech/tags/test.md>)

### AI overview

This article explains how modularity can improve JavaScript MVC applications. It presents widgets as atomic components with clear responsibilities and recommends decomposing complex applications into smaller, reusable, testable, and maintainable parts. It also discusses decoupling component communication through event broadcasting, pub/sub, or the Observer pattern.

### Source excerpt

Lorem ipsum dolor sit amet