Skip to main content

· 10 min read
Anh-Tuan Bui

pivoting-from-b2b-gaming

summary
  • Even though the gaming TAM looks large on paper, gaming companies have diverse needs. There are nuances that shrink the TAM depending on what types of gaming companies have the hair on fire problem that your product solves
  • Based on our ideal customer profile, we had to adopt an enterprise go to market motion which was challenging to get initial traction for
  • We needed to truly be 10x better off the bat since we were looking to replace a core function for gaming companies and we couldn't get there

A startup is a long and difficult journey, one that I was wholly unprepared for despite having a decade of work experience in finance and tech. Learnings from one failed startup influence the next startup attempt, so to take a step back and discuss why I got into the gaming space in the first place, I have to talk about my first startup, an investment app that helped people learn about and construct portfolios of ETFs, that I co-founded in 2021.

· 10 min read
Dylan Huang

Open Source vs. Paid OpenAPI Documentation Generators

OpenAPI makes it really easy to generate documentation for your API. There are a number of open source and paid solutions that make it easy to generate documentation for your API. To determine the best solution for your needs, we researched and compared the best open source and paid OpenAPI documentation generators.

At the end, we give our opinion on which solution is best for you depending on your requirements and current setup.

· 2 min read

Banner

Python SDK Ergonomic Improvement

We improved the Python SDK to return Pydantic-based response values which allows for using the __getattr__. This is slightly more concise than the previous version, which used the __getitem__ syntax to access response values.

Before

Previously, you had to use the [] syntax to access response values. This required a little more code for every property access.


_10
response = client.store.place_order(quantity=1000)
_10
print(response.body["order_id"])

After

With Pydantic-based response values, you can use the . syntax to access. This is slightly less verbose and looks more Pythonic.


_10
response = client.store.place_order(quantity=1000)
_10
print(response.order_id)

Notice how there is also no need to use the body attribute to access the response body. All new Python SDKs will be using this new syntax.

We will not be updating previously generated Python SDKs to use this new syntax to ensure backwards compatibility.

Non-SDK Snippets in API Portal

Non-SDK Snippets
Example of generated snippet for using cURL

The API Reference page now generates non-SDK code snippets for cURL and other languages that do not have an SDK. This allows developers to quickly generate, copy, and paste code snippets regardless of whether or not there is an SDK for your language.

· 6 min read
Dylan Huang
Anh-Tuan Bui

Konfig vs. Open Source

Konfig offers numerous benefits when generating SDKs from OpenAPI compared to utilizing an open-source library or crafting them manually. These benefits significantly impact your engineers and business in a positive manner. In this article, we will outline these crucial advantages.

· 8 min read
Dylan Huang

GitHub Copilot has recently taken the software engineering world by storm, hitting a milestone of $100M ARR. This achievement alone qualifies it to be a publicly listed company. Meanwhile, funding continues to flow into code-focused LLM use cases.

100M ARR
GitHub Copilot crosses 100M ARR Milestone
TabbyML
TabbyML Raising 3.2M for an open-source GitHub Copilot
Tabnine
Tabnine raises $15.5M for AI that autocompletes code
Cursor
Anysphere raises $8M from OpenAI to build an AI-powered IDE
Codium
CodiumAI raises $11M

· 3 min read

Improved API Portal Design

We completely refactored the design and look of our API Portal to be more modern, sleek, and intuitive. Take a look at the screenshots below to see the improved design. We also added generated response examples and ergonomic improvements when navigating between pages in the portal. See a full list of changes in the "Improvements and Fixes" section below.

new design
Improved API Portal Design
docs dark
Markdown Documentation (dark)
docs light
Markdown Documentation (light)
docs dark
Markdown Documentation (with brand color header in dark mode)
docs light
Markdown Documentation (with brand color header in light mode)
reference dark
API Reference (dark)
reference light
API Reference (light)
demo dark
API Demos (dark)
demo light
API Demos (light)

Refactored SDK Documentation

We now allow you to brand your README.md with a banner image using the new readmeHeader property in your konfig.yaml file like so:

konfig.yaml

_10
readmeHeader:
_10
title: Acme
_10
image: header.png
_10
url: https://acme.com

This generates READMEs with your image and title at the top of the file like so:

README Header
Example TypeScript SDK README.md file

We completely overhauled the generated documentation for Python and TypeScript to be easier to read and find what you're looking for.

TOC
Table of Contents
TypeScript Usage
Usage (TypeScript)
TypeScript Usage
Usage (TypeScript)
Python Usage
Usage (Python)
TypeScript Return
Parameters and Response (TypeScript)
Python Return
Parameters and Response (Python)

We also plan to improve the generated documentation for other SDKs.

Improvements and Fixes
  • API Portal now preserves scroll position when navigating between pages
  • Clicking the logo in the top-left corner brings you back to homepage
  • Implemented light/dark logo theme for API Portal
  • Added -x to not start a mock server in konfig test
  • Fix table rendering width larger than viewport in API Portal
  • Fix table from causing horizontal scroll on small screens
  • Fixed handling of non-Blob type values in TypeScript SDK for multipart/form-data
  • Handle array type schemas in request body for API Portal
  • Support bash, JavaScript, and many more languages as code blocks in API Portal
  • Point top-level API Portal domain to documentation if documentation is configured
  • Remove nested documentation in Python SDK
  • Embed all documentation into neatly organized README.md for Python SDK
  • Removed nested documentation for TypeScript SDK
  • Embed all documentation into neatly organized README.md for TypeScript SDK
  • Added ability to order endpoints in the API Reference page
  • Fixed scrollbar blocking header on Windows for API Portal
  • Fixed bug in konfig fix where fixing operation IDs fail because await wasn't used
  • Fix invalid links in top-level README.md in SDK repository
  • Show example values and schema in API Portal for operations

· 2 min read

Dart

Konfig now supports generating Dart SDKs! This means that you can now use Konfig to generate SDKs for your customer's Flutter applications or Dart projects.

info

According to Stack Overflow's 2023 Developer Survey, Flutter is in the top 10 of the most admired frameworks for developers, with 64% of professional developers enjoying the programming language.

Dart

Generated Python Snippets

Konfig's API Portal now seamlessly integrates your Python SDK into the API Reference Page. This means that you can dynamically generate Python code snippets that can be easily copy-pasted for lightning-fast integration in Python. This is the second of many SDK languages that we will be integrating into Konfig.

Example Generated Python Snippet
Example Generated Python Snippet for SnapTrade

Improved API Portal Styling

We made improvements to the styling of the API Portal. The API portal now has rounder edges and denser styling to make it easier to read and navigate. We also made the navbar on the left side smaller to give more room for the core content on the page.

Example API Reference Page
Example API Reference Page in dark mode for SnapTrade
Example API Documentation Page
Example API Markdown Page in dark mode for SnapTrade
Improvements and Fixes
  • Eliminated dependency security vulnerabilities in Python and TypeScript SDKs
  • Add removeKonfigBranding configuration to Go SDK
  • Improved generated tests and documentation for Go SDKs
  • Created konfig pr-merge and konfig-pr-create commands for GitHub automation
  • Fixed Git repository tagging for Go publishing to properly be indexed by pkg.go.dev
  • Support submodules for Go SDK
  • Created new lint rule to catch potentially invalid required syntax
  • Created konfig list-sdk-submodules to be used in automation
  • Support submodules in the automation pipeline
  • Added client state validation in Ruby to catch invalid client state when SDK is instantiated
  • Validate UUID parameters in the API Reference Page
  • Created documentation for setting up API Portal with custom markdown pages
  • Added --tolerate-republish flag to konfig publish to allow for gracefully publishing of existing versions
  • Support multipart/form-data input for konfig mock server
  • Fix bug with .yaml files not being properly pulled in konfig pull

· 2 min read

Markdown Pages

We are excited to announce the release of Markdown Pages! This feature allows you to create a custom documentation page for your API / SDKs. You can use markdown pages to provide examples, links to external documentation, or any other information you want to share with your users. Konfig's markdown pages are fully integrated with the rest of the portal, so you can easily create links to API endpoints or interactive demos.

Example Markdown Page
Example Markdown Page for SnapTrade

Currently, we are deploying with a few early customers. If you are interested in trying it out, please reach out to [email protected].

Improvements and Fixes
  • Add --ci flag to konfig fix to loosen fix rules for CI/CD automation
  • Security credentials are now hidden in API Reference page
  • Fixed handling of "date-time" format in API Reference page inputs
  • Support array of integers / strings in API Reference page
  • Support OAuth client credentials flow in API Reference page
  • Support file type parameters in API Reference page
  • Fixed storage of API Reference page inputs in local storage to prevent forms from other pages from being shared
  • Fixed bug in Python SDK with incorrect reference to schema instead of model
  • Fixed bug in setupcode for generated test_deprecation_warning.py test in Python SDK
  • Fixed bug in README.md for badge in Python/TypeScript/Java SDKs when dash "-" is used
  • Fixed bug in generated TypeScript code in API Reference where snake case was improperly converted to camel case

· 2 min read

We are excited to announce the launch of our newest product at Konfig!

Introducing: API Reference

The Problem

The next step after generating SDKs is adding them to your docs. But as soon as you do, something feels off. Your API reference is not integrated with your SDKs and you have to maintain two separate pages. You manually copy-paste code snippets from your SDKs to your docs and you have to update them every time your API changes. So we created a better way.

The Solution

Introducing API Reference by Konfig. It's a single page that combines your API reference and SDKs. It's automatically generated from your OpenAPI spec and SDKs. It's always up-to-date and it's always in sync with your API. It allows you to dynamically generate code snippets for your SDKs and make API requests directly from your docs. It's a single source of truth for your API.

Portal
Live API Reference Page for SnapTrade

Currently, we are deploying with a few early customers. If you are interested in trying it out, please reach out to [email protected].

Improvements and Fixes
  • Allow for configuration of a specific operation in SDK README.md files
  • Remove quotes from strings when copying in demo portal
  • Added "konfig versions" command to CLI to query currently published SDKs
  • Add a one-time deprecation warning for deprecated operations in Python SDK

· 9 min read
Dylan Huang

From DHH shunning serverless, Ahrefs saving millions by using a cloud provider at all, to Amazon raining fire on their own serverless product, serverless has recently faced significant scrutiny.

But still, everyone and their pet goldfish seem to be creating a serverless runtime (see Bun, Deno, Pydantic, Cloudflare, Vercel, Serverless, Neon, Planetscale, Xata, FaunaDB, Convex, Supabase, Hasura, Banana, and literally hundreds more). One research paper from Berkeley even claimed:

Serverless computing will become the default computing paradigm of the Cloud Era, largely replacing serverful computing and thereby bringing closure to the Client-Server Era.

-- Cloud Programming Simplified: A Berkeley View on Serverless Computing

Is it all hype? Is there real 100% objective merit to it? Where does serverless excel? Where do the trade-offs make sense?

To understand how developers are receiving serverless, I went to where developers live: Reddit, Twitter, Hacker News, and YouTube. I parsed 1,000s of discussions and synthesized my findings in this article, striving to present only thought-provoking opinions.

funnel
Funnel for gathering through-provoking opinions

Next, I transcribed these discussions onto a whiteboard, organizing them into "Pro Serverless," "Anti Serverless", or "Neutral" categories, and then clustering them into distinct opinions. Each section in this post showcases an opinion while referencing pertinent discussions.

FigJam
FigJam I used to organize perspectives