Bruno Pedro


December, 2024

Permalink: 20241219141406

Found at “Developing Developers” on 2024-12-19 14:14:06 +01:00.

Teaching explicit and systematic design introduces students to a general problem-solving approach that applies to many more domains than programming.

Permalink: 20241219095650

Exciting!

Found at “shaprmarkovkeyboard: keyboard layout that changes by markov frequency” on 2024-12-19 09:56:50 +01:00.

Static keyboard layouts are boring and predictable. Let’s spice up the whole idea of keyboard layouts by having the layout CHANGE WHILE YOU ARE TYPING!

Permalink: 20241218180654

(…) give a child an environment that’s active like him. It’s an environment in which thinking and creativity are the natural kinds of things that are done.—Alan Kay

Permalink: 20241218152102

Found at “Ethical Web Principles” on 2024-12-18 15:21:02 +01:00.

The web should be a platform that helps people and provides a positive social benefit

Permalink: 20241218151843

Found at “Never Forgive Them” on 2024-12-18 15:18:43 +01:00.

I don’t believe that this gradual enshittification is part of some grand, Machiavellian long game by the tech companies, but rather the product of multiple consecutive decisions made in response to short-term financial needs.

Permalink: 20241218151351

Found at “Tools for Thought as Cultural Practices, not Computational Objects” on 2024-12-18 15:13:51 +01:00.

If only to make clear to ourselves why we currently consider apps that allow you to link notes together the epitome of a tool for thought.

Permalink: 20241217115255

Protobuf has a new Opaque API.

Found at “Go Protobuf: The new Opaque API - The Go Programming Language” on 2024-12-17 11:52:55 +01:00.

With the Opaque API, the struct fields are hidden and can no longer be directly accessed. Instead, the new accessor methods allow for getting, setting, or clearing a field.

Permalink: 20241213153714

Trying an API is a natural extension to documentation.

While documentation—and reference, in particular—provides a source of truth of what the API is capable of, trying offers a layer of experimentation. Trying isn’t about understanding the capabilities of the API; it’s about seeing how they work.

Permalink: 20241205010513

Found at “Using Bluesky posts as blog comments” on 2024-12-05 01:05:13 +01:00.

Your blog’s comment section can be pulled directly from Bluesky.

Permalink: 20241204234157

Found at “Genie 2: A large-scale foundation world model - Google DeepMind” on 2024-12-04 23:41:57 +01:00.

Genie 2, a foundation world model capable of generating an endless variety of action-controllable, playable 3D environments for training and evaluating embodied agents.

November, 2024

Permalink: 20241130111417

Found at “The Influence of Bell Labs - by Brian Potter” on 2024-11-30 11:14:17 +01:00.

following WWII, research spending by both the government and the private sector increased enormously

There’s a well-known phenomenon that technological progress is often driven by bubbles, as irrational enthusiasm drives huge amounts of investment in a novel technology far beyond what can be economically justified.

Permalink: 20241127094934

Inverting the flow of control is something I was hoping to see for a while. The concept of human-in-the-loop (HITL) isn’t something new. However, seeing it all put together so nicely is interesting.

Found at “HumanLayer” on 2024-11-27 09:49:34 +01:00.

HumanLayer is an API and SDK that enables AI Agents to contact humans for feedback, input, and approvals.

Permalink: 20241126140636

Found at “Introduction to Causal Logs | Joel Gustafson” on 2024-11-26 14:06:36 +01:00.

People use apps, apps use databases, and databases use logs. Logs are useful because they make distributed replication easy, and can be deterministically reduced, but they’re inherently single-writer. All appends must go through a single point.

Permalink: 20241126122813

Found at “Deactivating an API, one step at a time” on 2024-11-26 12:28:13 +01:00.

The only suggestion I’d add is to implement API brownouts - short periods of time where the deprecated API returns errors, several months before the final deprecation. This can help give users who don’t read emails from you notice that they need to pay attention before their integration breaks entirely.

Permalink: 20241125204333

Found at “Introducing the Model Context Protocol \ Anthropic” on 2024-11-25 20:43:33 +01:00.

The Model Context Protocol provides a universal, open standard for connecting AI systems with data sources, replacing fragmented integrations with a single protocol.

Permalink: 20241122165821

Knowing how it works isn’t what makes it work. The magic of it isn’t how it works. The magic is the magic.—Rick Rubin

Permalink: Thoughts on OpenAPI JSON Schema descriptions

I recently posted that I wish the OpenAPI JSON Schema still had descriptions like it used to on v2.0. My post triggered a discussion on the official OpenAPI Slack, explaining they had removed the descriptions to avoid maintenance costs related to keeping the descriptions in sync in several places. I joined the discussion on Slack to share my perspective. The following is a transcript of what I wrote for future reference.

I’m looking at https://github.com/OAI/OpenAPI-Specification/blob/main/schemas/v3.1/schema.yaml and using it as the JSON Schema I refer to in the following comments.

  • Using $comment is great. However, according to the spec, “JSON schema implementations aren’t allowed to attach any meaning or behavior to it whatsoever.” Comments are useful for leaving notes to other editors that aren’t meant to be passed to the end user. (see https://json-schema.org/understanding-json-schema/reference/comments)
  • Most $comments are being used to reference the corresponding section of the OpenAPI spec. While that’s interesting, the links to the reference are all broken (404). As an example, the $comment on paths has the value of https://spec.openapis.org/oas/v3.1#paths-object. Instead, It looks like the correct value should be https://spec.openapis.org/oas/v3.1.0.html#paths-object.
  • The description on the exact section of the spec is great for human consumption. On the other hand, extracting the information in a programmatic way is not easy.

My suggestions:

  • Using the JSON Schema description annotation to describe what each OpenAPI schema object is.
  • Because I see that maintenance cost is the reason why descriptions were removed, why not use the JSON Schema as the source of truth? Then, the sections of the spec could be programmatically generated from the information on the schema, avoiding maintaining two separate documents.

I might, obviously, be missing many other details. However, I wanted to share my opinion in case anyone finds it interesting.

Permalink: 20241119151234

Found at “Causal Islands Berlin 2024” on 2024-11-19 15:12:34 +01:00.

Causal Islands is a conference about the future of computing and a home for new perspectives ranging from deeply technical insights to sharp socio-political analysis.

Permalink: 20241119124718

How do AI agents identify themselves when consuming APIs? Agents are acting on behalf of people, so can they potentially use OAuth 2? Or something else? What about AI agents that act on behalf of other agents? Do we need a different authorization framework?

Permalink: 20241114103310

Found at “No-code, no thought? Substrates for simple programming for all - Tomas Petricek” on 2024-11-14 10:33:10 +01:00.

The idea of programming substrates is generalizing the usual distinction between programming a software system and using a software system.

Permalink: 20241114102943

Found at “Codestrates v2 | Codestrates v2” on 2024-11-14 10:29:43 +01:00.

With Codestrates, you can create dynamic webpages (or webstrates as we call them) that can be edited directly from within the browser — and editing can also be done collaboratively.

Permalink: 20241112122907

The secret to the most creative people I know is they work within a framework and that’s what allows creativity to flow.

Permalink: 20241109165306

What is API Quality?. I published this post on LinkedIn on October 2024. I wanted to understand how people familiar with APIs would define quality. The answers varied significantly but mostly revolved around the notion of technical quality. Image

Here’s a summary of the answers I captured from my LinkedIn post where I asked “What is API Quality?”

One kind of answer points toward a maturity model, hinting that quality is a technical aspect. The idea is to have a multi-dimensional model that includes what the Richardson and Amundsen (PDF) models offer, adding other layers.

Another view gives importance to the functional interface. There’s no quality if the API doesn’t offer what consumers need. Or, in short, quality is tied to usability. To achieve that, there are aspects such as consistency of interface, and semantic clarity, that should be taken into account. I still see this type of quality as technical.

Some answers connect quality to governance and point out that it’s often not easy to convince people the two are tied. Things like linting, having rules that enforce consistency and naming, and making sure APIs use the right architecture and types of operations are part of this line of thought.

Permalink: 20241107223940

Alan Kay refers to the “Creative Magic” as “Good Woowoo.” (20240306160214)

Permalink: 20241107162227

According to Seth Godin, there are three kinds of quality:

  1. Technical.
  2. Luxury.
  3. Creative magic.

Having technical quality means things work according to specs. Luxury means there’s something about the product that makes it special to consumers. This is often what most people understand as quality. The third kind of quality is the most interesting one. Creative magic is the less-understood attribute that makes people love your product to the point they feel special when using it. Creative magic is what makes consumers recommend your product.

—from The Practice, pp. 75–77

Permalink: 20241106175323

An abstraction provides a higher-level vocabulary that shields the user from the underlying complexity.—Gregor Hohpe

Permalink: 20241101230335

Found at “The Dual Nature of Events in Event-Driven Architecture” on 2024-11-01 23:03:35 +00:00.

events that travel between services have a dual role: They trigger actions and carry data.

October, 2024

Permalink: 20241030144316

Found at “Engraft” on 2024-10-30 14:43:16 +01:00.

Engraft is an API that makes live & rich programming interfaces powerful and practical through composition.

Permalink: 20241029153437

What’s important is expressing your program as what you want it to do. Not a set of instructions on how to do it. Letting the computer itself figure out how to do it.—Bret Victor

Permalink: 20241026183145

Most OpenAPI editors aren’t doing what I think they should. They focus on two things: linting the OpenAPI document and rendering an API reference preview. The second thing puts the focus on creating good-looking API references. API creators will, naturally, try to write their OpenAPI documents so that the API reference looks nice.

When you’re creating, you want to see a preview of what you create. When you write code, you want to see the output of the code running. When you write a markdown document, you want to see it rendered—either in place or on a new panel. When you write an OpenAPI document, you want to see the API it defines running. What you want is to feel the result of what you’re creating.

Permalink: 20241023101956

Found at “The Strategy Questions | Seth’s Blog” on 2024-10-23 10:19:56 +02:00.

Where are the non-believers, and how do I avoid them?

Permalink: 20241010161954

Found at “Tenno” on 2024-10-10 16:19:54 +02:00.

You can think of Tenno as a mix of Word and Excel with a touch of Obsidian, Markdown and Javascript.

Permalink: 20241009160929

Found at “Potluck: Dynamic documents as personal software” on 2024-10-09 16:09:29 +02:00.

it’s critical that the system can provide immediate feedback as a user types and help them develop consistent expectations for how the system will interpret their text.

Permalink: 20241008222032

I’ve been using the first prototype of my API Assistant for a couple of weeks, and it feels like magic. The prototype automatically creates an API server based on the content of an OpenAPI document. I don’t need to write any code or generate any “server stubs” to have my API running. It just updates itself every time I change the OpenAPI document.

Permalink: 20241006153042

Found at “Prototyping APIs with OpenAPI - by Bruno Pedro” on 2024-10-06 15:30:42 +02:00.

I built a personal system for interpreting OpenAPI documents and using them as the only thing needed to run an API

September, 2024

Permalink: 20240929180145

Found at “Alan Kay On Messaging” on 2024-09-29 18:01:45 +02:00.

The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be.—Alan Kay

Permalink: 20240927112717

Found at “[1802.07068] Talent vs Luck: the role of randomness in success and failure” on 2024-09-27 11:27:17 +02:00.

if it is true that some degree of talent is necessary to be successful in life, almost never the most talented people reach the highest peaks of success, being overtaken by mediocre but sensibly luckier individuals

Permalink: 20240923221223

Found at “The Intelligence Age” on 2024-09-23 22:12:23 +02:00.

(…) humanity discovered an algorithm that could really, truly learn any distribution of data. To a shocking degree of precision, the more compute and data available, the better it gets at helping people solve hard problems.—Sam Altman

Permalink: 20240919163401

Found at “Paper Programs” on 2024-09-19 16:34:01 +02:00.

I liked how you could physically hold a program in your hands, and then put on any surface in the building, where it would start executing, as if by magic.

Permalink: 20240918153643

Found at “howard rheingold’s | tools for thought” on 2024-09-18 15:36:43 +02:00.

A few of the pioneers of personal computing who still work in the computer industry can remember the birth and the dream

Permalink: 20240912192817

Found at “Learning to Reason with LLMs | OpenAI” on 2024-09-12 19:28:17 +02:00.

We are introducing OpenAI o1, a new large language model trained with reinforcement learning to perform complex reasoning.

Permalink: 20240912141406

Found at “Tidy data” on 2024-09-12 14:14:06 +02:00.

Tidy datasets are easy to manipulate, model and visualize, and have a specific structure: each variable is a column, each observation is a row, and each type of observational unit is a table.

Permalink: 20240911114014

A new omniauth-saml RubyGem version has been released. It mostly fixes security issues related to SAML signatures.

Permalink: 20240910095600

Found at “Why GitHub Actually Won” on 2024-09-10 09:56:00 +02:00.

We cared about the developer experience and had the creativity to throw away assumptions about what it was supposed to be and build how we wanted to work. Everyone else tried to build what they thought they could sell to advertisers or CTOs.

Permalink: 20240908154603

Extensive use of glass in architecture. (…) the extensive use of glass makes the walls appear to be so light that they seem to negate the conventional laws of tectonics.—Sigel, Gilbert Lupfer & Paul. Gropius. Germany: TASCHEN, 2017. Image

Permalink: 20240908145842

Found at “API Complexity Is a Lie - by Bruno Pedro” on 2024-09-08 14:58:42 +02:00.

Anyone telling you that working with APIs is hard isn’t telling the truth. What is hard isn’t the API. It’s all the tools, processes, and technical language surrounding it.

Permalink: 20240908142926

(…) design should not dominate things, it should not dominate people. It should help people.—Dieter Rams

Permalink: 20240904141932

Found at “11 · Universal comments” on 2024-09-04 14:19:32 +02:00.

When building this system, we aimed to find a minimal API that expresses only the app-specific parts of commenting.

August, 2024

Permalink: 20240830163323

Helping people understand the complexity of navigating enterprise CI/CD tools is under-appreciated. With APIs, it’s not easy to go from having just an idea and go through the whole lifecycle to something that’s running and deployed in production. Whoever understands how that’s done—and can do it—has an advantage over those who specialize in just one or a few steps of the process.

Permalink: 20240828152850

Found at “HTTP Mocking | Prism” on 2024-08-28 15:28:50 +02:00.

If a response has an example, it will be used for that response. If there are multiple examples, then they can be selected by name.

Permalink: 20240823163521

It’s taken me years to come to the conclusion or to the belief that probably the only thing one can really learn is the capacity to be able to change.—Philip Guston

Permalink: 20240822132014

Found at “Semantic Versioning 2.0.0 | Semantic Versioning” on 2024-08-22 13:20:14 +02:00.

Should you increase the API version when deprecating one or more operations?

Deprecating existing functionality is a normal part of software development and is often required to make forward progress. When you deprecate part of your public API, you should do two things: (1) update your documentation to let users know about the change, (2) issue a new minor release with the deprecation in place. Before you completely remove the functionality in a new major release there should be at least one minor release that contains the deprecation so that users can smoothly transition to the new API.

Permalink: 20240820155851

Found at “Seth’s Blog” on 2024-08-20 15:58:51 +02:00.

If the writing you’re doing doesn’t need to be in an idiosyncratic voice, take your memo, paste it into claude.ai and say, “please rewrite this to make it clear, cogent, positive and concise.”

Permalink: 20240820091836

So naive…

Found at “GitHub - wasi-master13ft: My own custom 12ft.io replacement” on 2024-08-20 09:18:36 +02:00.

It pretends to be GoogleBot (Google’s web crawler) and gets the same content that google will get. Google gets the whole page so that the content of the article can be indexed properly and this takes advantage of that.

Permalink: 20240819154100

I’ve been out walking

I don’t do too much talking these days

These days

These days I seem to think a lot

About the things that I forgot to do

And all the times I had

A chance to

—Nico

Permalink: 20240814162057

Found at “Things I learned from teaching” on 2024-08-14 16:20:57 +02:00.

Getting people to code in person is actually quite difficult, and if there’s only one of me, I can’t keep up with every student at once.

Permalink: 20240814092115

Found at “Using OpenAPI to Document the API Operations You Consume” on 2024-08-14 09:21:15 +02:00.

You could use the OpenAPI document as a source of truth for all the APIs you consume. Instead of having to update all the code that consumes third-party APIs you could simply make it read the OpenAPI document and grab the details of the operation you need.

Permalink: 20240807143422

Found at “API Governance Delivers Quality - by Bruno Pedro” on 2024-08-07 14:34:22 +02:00.

How do you unpack the notion of governance that Seth Godin shares? If governance antagonizes with politics, then what are the forces driving it? Is the role of governance to give an excuse to who’s leading to enforce their opinions? I don’t think so. I wrote about it before and I think governance is what drives quality. In the world of products that’s the quality consumers perceive. In the world of politics that’s the quality of life of a country or an administrative region.

Permalink: 20240807123028

Found at “Politics vs. governance | Seth’s Blog” on 2024-08-07 12:30:28 +02:00.

Governance is the serious business of taking responsibility for leadership.

Permalink: 20240807093218

Lately, I’ve been feeling the internet speed at home is slower than it could be.

I’ve recently moved and, while before I had a 10Mbps connection in the room where I usually type from, now I have everything wired to reach the maximum available speed. So, I was surprised to get ~100Mbps and not more than that. I finally found what the problem was. I was using a CAT5 Ethernet cable. I quickly replaced it with a CAT5e and the problem was solved. I’m now getting speeds of over 500Mbps, which feels fast.

Permalink: Starting from scratch

Sometimes in life, you’re surprised with a situation that takes you a few steps back. Or, all the way to step zero. The first reaction is to panic. To get into a survival mood. To try to get back what you lost at all costs as quickly as you can.

While the change in the situation itself is a fantastic learning opportunity, starting from scratch is a gift. Starting from scratch gives you the chance to reinvent yourself. Of rethinking who you really are. Answering questions such as “Was I doing what I really wanted to be doing?” Or, “Was I being real to what I believe?” More often than not, the answers aren’t positive.

That’s why I see starting from scratch as a way to be born again. When you have nothing to lose, you’re free to do whatever you want. Embracing change is more powerful than fighting it.

Permalink: 20240802112814

Found at “What are you thinking about? | Seth’s Blog” on 2024-08-02 11:28:14 +02:00.

What are you working on? When will you change your mind? What can you learn, what can you challenge?