Building Async and Cloud Native organizations - Issue #16

GitHub secret scanning, projects in the CLI and platform engineering.

Welcome to my weekly newsletter! Every week, I bring you the latest news, updates, and resources from the world of coding and architecture. I'm so glad you've decided to join me, and I can't wait to share my insights and expertise with you.

I hope you'll find this newsletter to be a valuable resource, and I welcome your feedback and suggestions. If there's something you'd like to see more of, or if you have any questions or comments, please don't hesitate to reach out to me.

Thank you for joining me, and happy reading!

REST and APIs

I have posted some links to them before, but I still think it is a great resource: webhooks.fyi brings you all the details about webhooks, and Nordic APIs explores what they have to offer.

Building a REST API and need to handle a long-running task? Then you might want to use the polling pattern. The client starts a new task, gets a 202 and starts polling for completion. When done, a 303 is returned to the result of the task. Read more about this pattern: https://adidas.gitbook.io/api-guidelines/rest-api-guidelines/execution/long-running-tasks/polling

Coding technicalities

I recently did a workshop about Azure Functions and promoted the use of bindings. The input and output bindings are an excellent way to interact with other components without writing all the plumbing yourself. If the service you want to bind is not supported, you can write a custom binding yourself:

What data to publish in an event? How to consider consumers' needs? How many types of events are worth including in one stream? How does relational data affect event streams? — these essential questions and more are addressed in this article, along with primary considerations and best practices relevant to any event-driven architecture

Required properties can be a nice C# 11 way to handle non-nullable properties. But what to do when you also have a constructor? The SetsRequiredMembers attribute comes to the rescue. Read more in the blog post by Claudio:

GitHub related

It is almost a no-brainer, the secret scanning feature of GitHub. It will check if you committed a secret that could potentially give somebody access to services, databases, etc. It is a free service on a public repository, but you need to enable it. With the latest changes, you can now do this for all your existing repositories and automatically enable it for new public repositories. Read more at https://github.blog/changelog/2023-02-28-enable-secret-scanning-alerts-on-all-your-public-repositories

You can already manage a large part of GitHub by using the GH CLI. However, GitHub Projects was not directly supported. This is changed by introducing a new extension. Run the below command to get some additional tools to interact with your project boards.

gh extension install github/gh-projects 

When installed, use the -h argument to see all the possible options. Be aware that you might need to reauthenticate so you get an additional scope.

This is an excellent way to add items to a Project board via scripts!

Are you moving to GitHub with your sources and application development processes? Then you might want to convert your pipelines as well to GitHub Actions. Converting them by hand is time-consuming, but luckily, GitHub released the Actions Importer tool. Allowing almost automatic conversions of existing pipelines to the Actions used by GitHub.

Computing in general

The term Platform Engineering pops up now and then. In Juli 2022, there was a Twitter thread going around claiming that DevOps was dead and platform engineering was the next best thing.

The author, Sid Palas, responded to this some months later, claiming it was a bit of a clickbait title, and explained why he posted it.

Unfortunately, some vendor of infrastructure tooling took the same statement and promoted it with ads causing even more discussions.

My take on this; use DevOps and Agile practices. Although I can recognize the existence of platform teams; dedicated teams using DevOps practices to manage a platform like a product. Their customers are other teams that can independently consume their platform. My colleague Geert van der Cruijsen wrote a post about this:

A Culture Virus is a contagious idea that hooks into your culture like a pathogen, passing from person to person, and very often preying on the weak and struggling. What kinds of viruses are there, and how to combat them:

Scaling is hard, certainly with people. Sean Bolton takes us on their journey when they grow their company from 300 to 1000 people:

Sometimes you need to push to get outdated architecture into new and modern architecture. Giving the organization the ability to innovate, become less fragile, and remove technical debt. The value stream teams might not be able to handle this task on their own. Setting up an Architecture Modernization Enabling Team can be a solution to coordinate and upskills all teams and stakeholders in the modernization initiative.

Helpers and utilities

Did you know you can control when a certain editor in your phone is used? Type, inputmode and the autocomplete attributes play an important role in providing the best user experience.

Read more and play with the examples at https://better-mobile-inputs.netlify.app/

Searching for a new profile picture? Use Profile Me with some AI to change your picture into something you can proudly use on social platforms:

Computer laws

“Be conservative in what you do, be liberal in what you accept from others”

Postel’s Law

An interesting law to consider when building for example an API, as you do not know what you will get for input.

I hope you've enjoyed this week's issue of my newsletter. If you found it useful, I invite you to share it with your friends and colleagues. And if you're not already a subscriber, be sure to sign up to receive future issues.

Next week, I'll be back with more articles, tutorials, and resources to help you stay up-to-date on the latest developments in coding and architecture. In the meantime, keep learning and growing, and happy coding!

Best regards, Michiel

Join the conversation

or to participate.