Skip to content

Instantly share code, notes, and snippets.

View jsquire's full-sized avatar

Jesse Squire jsquire

View GitHub Profile
@jsquire
jsquire / text-analytics-client-api-ideation.md
Last active March 14, 2022 21:43
Text Analytics: Client API Evolution Thoughts

Text Analytics: Client API Evolution Thoughts

Currently the TextAnalytics client offers a set of bespoke methods for each operation that developers may wish to perform. These methods are associated with the operation by name, intending to allow operations to be discoverable when browsing code completion lists and organizing related methods into groups.

This pattern has worked well with the Text Analytics REST API, which offered roughly seven core analysis skills. As Text Analytics moves to the Unified Language API, it is expected that the number of skills offered will grow steadily. This growth may cause the number of bespoke methods to become burdensome for developers, necessitating an evolution of the client API.

Things to know before reading

  • The names used in this document are intended for illustration only. The names for Text Analytics skills are placeholders to simulate volume and do not reflect the actual service API.
@jsquire
jsquire / layers.cs
Created March 15, 2022 21:27
Text Analytics Transparent Proxy Thoughts
// This is the convenience layer that customers interact with.
// This should look almost exactly like the current API:
// https://apiview.dev/Assemblies/Review/2d2a87eaa70a43b8860f1c4e7135494b
//
// Because it isn't interacting with the swagger types, we probably need to clone the
// current implementation and use it as template.
//
public class TextAnalyticsClient
{
TransportClient _transport = this.serviceVersion switch
@jsquire
jsquire / amqp-serialization-spike.cs
Created October 27, 2022 14:01
For Josh: AMQP Serialization Testing
private static BufferListStream Serialize(AmqpMessage message, int bufferSizeBytes = 4096)
{
var buffers = new List<ArraySegment<byte>>();
var more = true;
while (more)
{
var messageBuffers = message.GetPayload(bufferSizeBytes, out more);
if (messageBuffers != null)
@jsquire
jsquire / 0-overview.md
Last active March 28, 2023 19:52
Azure SDK Repository Automation Rules

Azure SDK Repository Automation Rules

Goal

This document attempts to define a set of logical rules based on the existing Fabric Bot implementation. Rules are described based on their logical association; in some cases, these may need to be expanded into multiple physical rules due to how GitHub events and/or Actions work. Likewise, concepts and flow are intentionally kept abstract and do not intend to describe a specific implementation. An example of this is the different data integrations. Multiple data items may drive from a single source, but they constitute different logical concepts.

Nomenclature

  • Trigger: An event that occurs in GitHub to which automation should respond to.
  • Target: An item in GitHub that can trigger an event. Generally, this will be an issue or pull request.
@jsquire
jsquire / thoughts.md
Last active June 22, 2023 17:51
Schema Registry: JSON Serializer Thoughts

Schema Registry: JSON Serializer

Azure Schema Registry currently supports the Avro schema type and is adding support for JSON Schema. The Azure SDK library for Schema Registry offers an Avro serializer that is integrated with the Schema Registry client. In order to provide parity between the schema formats, serializer support for JSON Schema with a developer experience consistent with Avro is needed.

Business impact

  • Contributes to the Kafka/Confluent compete story for Event Hubs. (marketing "checkbox" feature)

  • Contributes to the Kafka interoperability story for Event Hubs, focusing on cross-product producing and consuming scenarios. (marketing "checkbox" feature)

  • Enables a consistent developer experience with Schema Registry across different schema formats, reducing support costs and special-case documentation needs.

@jsquire
jsquire / AppConfig-Policy.cs
Last active June 16, 2023 20:47
AppConfig: Access the raw value of a feature flag setting
// Package Reference: Azure.Data.AppConfiguration
// Package Reference: System.Text.Json
using Azure;
using Azure.Core;
using Azure.Core.Pipeline;
using Azure.Data.AppConfiguration;
using System.Threading.Tasks;
using System.Text.Json;
using System.Text.Json.Serialization;
@jsquire
jsquire / problem-statement.md
Last active August 11, 2023 19:56
AppConfig: Data loss with strongly typed settings

AppConfiguration: Data loss with strongly typed settings

Overview

The general form of settings stored in AppConfiguration are simple key/value string pairs, where both have no formal structure. AppConfiguration also has the notion of "feature flag" and "secret reference" configuration settings, which are loosely structured data, conforming to a minimal and extensible JSON schema. These settings are expected to include all elements from the JSON schema but are also permitted to include additional data in the form of simple or complex elements.

Primary champion scenario

  • A developer creates settings in the portal, using a combination of the schema entry form and advanced JSON-centric view for custom attributes.
  • The settings are read by a client application using a platform integration package owned by the service team owns (e.g. ASP.NET, Spring).
@jsquire
jsquire / issue-rules.md
Last active July 21, 2023 16:24
# Azure SDK for .NET repository issue rules and process

Azure SDK for .NET repository issue rules and process

Goal

This document attempts to define the set of rules used for triaging and managing issues in the Azure SDK for .NET repository. These rules were once part of a standardized process owned by Alex Ghiondea and were at least loosely followed in the other language repositories. It is unknown whether there has been drift in the processes between languages since.

History

At one point, these were documented in OneNote and then moved to a DevOps wiki, and then moved again. I do not know where the documentation exists today - if it still does. All that I'm aware of is a high-level view of the process.

@jsquire
jsquire / proposal-tfm-package-trimming.md
Last active February 1, 2024 18:45
Azure SDK: Target frameworks and polyfill packages

Azure SDK: Target frameworks and polyfill packages

Problem statement

Developers using the Azure SDK on modern versions of .NET are required to download unnecessary packages that serve as polyfills for the legacy .NET framework and unsupported versions of .NET Core.

Impact

Developers are faced with longer build times, increased application size, and unnecessary network use.

@jsquire
jsquire / auto-triage-classify.md
Last active February 23, 2024 20:29
Automatic Triage: Classifying issues

Overview

Issues in the Azure SDK repositories use a two label system in order to classify the issue and identify the responsible party. Each issue must have a "service label" (pink) and a "category label" (yellow) to be valid. It is this combination of labels that identifies which specific library an issue is for and, by extension, who should be responsible for the issue. For example, an issue tagged with Event Hubs and Client is owned by Jesse's team. An issue tagged with Event Hubs and Mgmt is owned by Arthur's team.

This constraint is built into the AI label service; if it cannot successfully predict both labels, it will return none. When performing automated triage, the rule will always have access to both tags and needs to take both into account to find the correct owner to triage the issue to. Currently, this is not how triage handles the scenario. Instead, the rule will collect the owners of both tags and consider them both owners. For example, an issue tagged with Event Hubs and