Pull to refresh
256K+

Go *

Compiled, multithreaded programming language

229,64
Rating
Show first
Rating limit
Level of difficulty

Meet the Developer: Hysteria

Level of difficultyEasy
Reading time4 min
Reach and readers2.1K


This is the pilot episode of our new interview series Meet the Developer, where we talk to the people behind anti-censorship tools. Our goal is to shine a light on the developers whose open-source solutions help millions of people stay connected.

In this first episode, we sit down with Toby, the lead developer of Hysteria, to discuss the project’s origins, technical challenges and his perspective on internet censorship.

Let’s start with an introduction. Tell us who you are and what you do.

Just call me Toby. I’m a software engineer. Previously, I have worked for a large company. But right now, I’m a co-founder of a startup with some friends.

Nice to meet you Toby! Would you like to share what type of startup it is, or is it a top secret project?

We are still in stealth mode.

Why did you decide to develop Hysteria?

It was originally a project I developed for myself when I was in college.
China’s global Internet connectivity has been notoriously bad for as long as I can remember (still not any better right now). Not just in the sense of censorship, but also in terms of connection quality.

For example, if you have a server in the US and want to connect to it from China, expect over 10-20% or more packet loss.

So if you set up a proxy server in another country to circumvent censorship, it would be painfully slow (the most popular tools back then were GoAgent and later Shadowsocks).

So Hysteria began as an attempt to improve my speed for watching YouTube videos.

It’s always great to see developers building something to solve their own challenges. I can relate to the packet loss issue. Either you suffer the packet loss, or you have to purchase an expensive server with CN2 routing, which will cost a lot.

Read the interview

Your AI Should Be Writing Tests. The Unfair Advantage Every Vibe Coder Ignores

Level of difficultyEasy
Reading time4 min
Reach and readers16K

Every prompt is a gamble. Your AI writes code that compiles, looks right, and silently breaks things you already built. Tests catch it before your users do. The best part? Your AI can write the tests for you.

~206 символов. Добавил "compiles, looks right" из A для конкретики, убрал "And here's the thing" на более кликбейтное "The best part?".

Добавить в начало статьи?

Read more

(VLESS) VPN client for Windows

Level of difficultyEasy
Reading time3 min
Reach and readers12K

Recently, I needed to run a VLESS subscription on Windows, make it work with my work VPN, and deal with all the associated 'joys.' I tried v2rayN, Nekoray, and Hiddify—and quickly realized I wanted to write my own client.
And so, singbox-launcher was born:
👉 https://github.com/Leadaxe/singbox-launcher

Below are a few details about why and what came of it.

Read more

Stream-first Gotenberg Client for Go

Level of difficultyMedium
Reading time2 min
Reach and readers8.6K

Go client for Gotenberg — document conversion service supporting Chromium, LibreOffice, and PDF manipulation engines.

Features

- Chromium: Convert URLs, HTML, and Markdown to PDF

- LibreOffice: Convert Office documents (Word, Excel, PowerPoint) to PDF

- PDF Engines: Merge, split, and manipulate PDFs

- Webhook support: Async conversions with callback URLs

- Stream-first: Built on httpstream for efficient multipart uploads

Read more

Stream-first HTTP Client for Go

Level of difficultyMedium
Reading time5 min
Reach and readers7.2K

Stream-first HTTP Client for Go. Efficient, zero-buffer streaming for large HTTP payloads — built on top of net/http.

httpstream provides a minimal, streaming-oriented API for building HTTP requests without buffering entire payloads in memory.Ideal for large JSON bodies, multipart uploads, generated archives, or continuous data feeds.

- Stream data directly via io.Pipe—no intermediate buffers

- Constant memory usage (O(1)), regardless of payload size

- Natural backpressure (writes block when receiver is slow)

- Thin net/http wrapper—fully compatible

- Middleware support: func(http.RoundTripper) http.RoundTripper

- Fluent API for readability (GETPOSTMultipart, etc.)

- No goroutine leaks, no globals

httpstream connects your writer directly to the HTTP transport. Data is transmitted as it's produced, allowing the server to start processing immediately—without waiting for the full body to be buffered.

Read more

ShopCTL: A Developer-First Toolkit for Shopify Automation

Level of difficultyMedium
Reading time5 min
Reach and readers1.9K

Learning Shopify has been on my bucket list for a few years now. Plenty of people in my circle — friends, colleagues, and fellow devs — are all somehow involved with Shopify in one way or the other. Earlier this year, I finally had some breathing room between projects, so I figured it was the perfect time to give Shopify a proper look.

I started exploring the platform by setting up a dev store, poking around the admin, and skimming through the API manual. While this was a quick and easy start, it didn’t give me a deeper understanding of the platform. Plus, clicking my way through the UI felt repetitive and tedious.

That got me thinking: is there a more efficient, developer-centric way to manage a store? Something that I could run in a terminal, plug into a CI/CD pipeline, or script my way out of those mundane tasks.

Learn more

XML parsing into plain Map in Golang

Level of difficultyEasy
Reading time4 min
Reach and readers7.4K

While in 2024 using XML looks a bit outdated, it still happens. And sometimes it happens we are to deal with XML having "free-structure", i.e. it couldn't be parsed into tree of user-defined structs. For JSON there still is a way to parse it with a single call into map[string]any and work with it using careful type assertions. Regretfully, there is no similar feature for XML (in Golang). Here I'll draft suitable function and demonstrate it - both for others and for myself if I ever need this again (recreating it from scratch may be somewhat painful).

Let's see implementation

Thoughts and short notes (in go) after reading «Clean Code»

Level of difficultyEasy
Reading time4 min
Reach and readers2.7K

Clean Go

Hey guys, I recently dove into 'Clean Code' by Robert C. Martin and found some valuable insights. The book is originally in Java, but I decided to reinterpret the principles in Go. Here's my take on the clean code concepts and how they can improve our coding practices.

1. Clean Code

The gist: Clean code is more than just working code; it's code that other developers can easily read, understand, and modify.

Read more

Best distributed task scheduling framework — Openjob 1.0.7 released

Reading time5 min
Reach and readers2.7K

Openjob is a new  distributed task scheduling framework based on Akka architecture. Supports multiple cronjob, delay task, workflow, lightweight distributed computing, unlimited horizontal scaling, with high scalability and fault tolerance. Also has complete management, powerful alarm monitoring, and support multiple languages

Read more

More powerful and intelligent task scheduling framework — Openjob 1.0.6 published

Reading time3 min
Reach and readers1.6K

Openjob is a new  distributed task scheduling framework based on Akka architecture. Supports multiple cronjob, delay task, workflow, lightweight distributed computing, unlimited horizontal scaling, with high scalability and fault tolerance. Also has complete management, powerful alarm monitoring, and support multiple languages

If you are looking for a high-performance distributed task scheduling framework that supports cronjob, delay task, lightweight computing, workflow, and supports multiple programming languages, then Openjob is definitely the way to go.

Read more

gookit/goutil — released v0.6.10, an extension library of common Go features

Level of difficultyMedium
Reading time5 min
Reach and readers1.3K

gookit/goutil An extended library of Go's common functionality. Contains: number, string, slice/array, Map, struct, reflection, text, file, error, time and date, test, CLI, command run, system information, formatting, common information acquisition, etc.

Read more

Openjob: distributed task scheduling framework

Reading time3 min
Reach and readers18K

Openjob is a distributed and high-performance task scheduling framework that supports multiple cronjob, delay task, workflow, lightweight distributed computing, unlimited horizontal scaling, with high scalability and fault tolerance. Also has perfect permission management, powerful alarm monitoring, and support multiple languages

Read more

From Zero to Hero: LeetCode

Level of difficultyMedium
Reading time8 min
Reach and readers42K

This is a translation of my article in Russian

In this article, I want to write about my experience of interacting with the LeetCode platform, and describe my preparation for an interview in FAANG similar companies by breaking it down into levels.

The whole article is written based on my experience, the numbers are very rough, I do not pretend to be objective, perhaps there are best practices on how to solve LeetCode problems, it would be cool if you share your experience in the comments.

Read more

Message broker selection cheat sheet: Kafka vs RabbitMQ vs Amazon SQS

Level of difficultyMedium
Reading time6 min
Reach and readers16K

This is a series of articles dedicated to the optimal choice between different systems on a real project or an architectural interview.

At work or at a System Design interview, you often have to choose the best message broker. I plunged into this issue and will tell you what and why. What is better in each case, what are the advantages and disadvantages of these systems, and which one to choose, I will show with several examples.

Read more

Database selection cheat sheet: SQL or NoSQL?

Reading time9 min
Reach and readers6.5K

This is a series of articles dedicated to the optimal choice between different systems on a real project or an architectural interview.

This topic seemed relevant to me because such tasks can be encountered both at work and at an interview for System Design Interview and you will have to choose between these two types of DBMS. I plunged into this issue and will tell you what and how. What is better in each case, what are the advantages and disadvantages of these systems and which one to choose, I will show with several examples at the end of the article.

SQL or NoSQL?

Read more

ArGOtecture

Reading time4 min
Reach and readers1.9K

This is an article that describes my vision of building a system that actively uses Go as the main programming language and SOA/microservices as a design paradigm. 

Here I will try to cover 4 chapters that together allow us to build a solid and reliable system.

Read more

Jira CLI: Interactive Command-line Tool for Atlassian Jira

Reading time4 min
Reach and readers4.4K

JiraCLI is an interactive command line tool for Atlassian Jira that will help you avoid Jira UI to some extent. This tool is not yet considered complete but has all the essential features required to improve your workflow with Jira.

The tool started with the idea of making issue search and navigation as straightforward as possible. However, the tool now includes all necessary features like issue creation, cloning, linking, ticket transition, and much more.

The tool supports both jira cloud and on-premise jira installation since the latest release.

Read more

Go Code Generation from OpenAPI spec

Reading time4 min
Reach and readers14K

OpenAPI specification


One of the nicest features of Go is the power of code generation. go generate command serves as a Swish knife allowing you to generate enums, mocks and stubs. In this article, we will employ this feature to generate a Go code from OpenAPI specification. OpenAPI specification is a modern industrial standard for REST API. This standard has fantastic tooling support and allows you to conveniently render and validate the spec. We are going to befriend the power of Go code generation with the elegance and clarity of the OpenAPI specification. In this way, you don't have to manually update the Go boilerplate code after every change in the spec. You also ensure that your docs and your code are a single entity, as your code is being begotten from the docs.


Let's start dead-simple: we have a service that accepts order requests. Let's declare endpoint order/10045234 that accepts PUT requests, where 10045234 is an ID of a particular order. We expect to receive an order as a JSON payload in the following format.


    {"item":  "Tea Table Green", "price":  106}

How can describe this endpoint in the OpenAPI spec?

Read more →
1