About Me
I am AHdark, a full-stack developer focused on the development of web and client business systems, while also having a certain understanding of embedded development, machine learning, algorithms, and more.
Born in 2007, I got my first computer in 2012 and began to learn about computers. I started learning computer programming (C++) in 2014 and began to engage in web full-stack development in 2020. I started learning OI content around 2017 and participated in algorithm competitions.
I am mainly active on GitHub[1], where I have open-sourced some projects and widely participated in community maintenance. Currently, I have hundreds of repositories on GitHub, mainly focused on web and workflow toolchains, etc. [2]
I have worked in several companies, mainly responsible for software development and DevOps work. After several years of learning, I have now basically equipped myself with the architectural capability for business systems of small and medium-sized enterprises.
Skills
Over the years of learning and practice, I have accumulated certain skills.
Frontend Development
On the frontend, I mainly focus on React, and I also have some understanding of frameworks like Vue3 and Angular. I am familiar with TypeScript and JSDoc, and I extensively use them to assist in project development. I have rich experience in developing projects with a Monorepo architecture, mainly using pnpm workspace and TurboRepo for project management.
In terms of UI frameworks, I used to use MUI for a long time, and now I mainly use TailwindCss and Radix Headless UI. My state management solutions mainly include Redux Toolkit, Zustand, and Mobx. During the development process, I tend to use a stricter coding style and employ tools such as ESLint, Prettier, or Biome for automated management of code style.
The current count of TypeScript lines of code on GitHub is 24k+. [3]
Recent major works:
- GFWBoard User: The current SPA version is open-sourced: AH-dark/gfwboard-user which implements a refactoring of the V2Board User part, using MUI to mimic the Ant Design style, achieving a look similar to the original V2B, while significantly improving rendering performance, reducing dependency on a single JS file for loading, and optimizing Webpack to reduce the package size. At the same time, Formik and Yup were used for form management, Redux Toolkit for state management, and I18next for internationalization. [4]
- Bridge Core Console (New Version): Refactored the Console panel of Bridge Core under Kinh, based on Next.js App Router. This project provides technical validation for AHdark Blog.
- AHdark Blog (Next.js version): Currently closed source, no plans for open source, preview address as this webpage. For specific technologies, please refer to the article Reconstructing Blog System Using Next.js and Hexo.
Backend Development
On the backend, I mainly use Go for development, but I have also used Node.js, Python, C++ 20, Kotlin, and other languages for development. As my Go code line count has reached 130k+ lines [3:1], I will focus on Go in this paragraph.
I am a deep user of Uber Go Fx, and I have accumulated about 2 years of experience using Fx. Currently, in the latest applications, whether monolithic or microservices, I use Fx for global dependency injection. [5]
I have previously used Gin extensively, and now I mainly use Hertz. Hertz provides a superior integrated framework solution for microservices, especially in terms of link tracing and Prometheus integration, while having good compatibility with Gin. [6] For microservice frameworks, I particularly like Cloudwego's Kitex. As an open-source product from ByteDance, Kitex has significant advantages in performance and is relatively user-friendly with low invasiveness. [7]
I primarily use MariaDB, Postgres, etc., as relational databases, and I have also used MySQL, SQLite, etc. For non-relational databases, I mainly use Redis, Memcached, ElasticSearch, Cassandra, etc. In terms of database ORM, I mainly use Gorm, and I have also used Xorm, etc. I usually use Gorm Gen on top of Gorm to avoid performance losses caused by reflector and common mistakes in development. [8]
RabbitMQ is the message queue I currently use the most. However, in most cases, I do not use it as a communication method for microservices, but rather as a way to execute asynchronous tasks. At the same time, I also use Etcd as the application's configuration center and Consul as the service discovery and registration center.
As a firm advocate of cloud-native, I usually containerize applications, so I have rich experience in writing Dockerfiles. I also maintain a Kubernetes cluster and prefer to use GKE (Google Kubernetes Engine) as the managed platform for Kubernetes. [^10] I typically use GitHub Actions and Google Builds to provide CI/CD support.
Recent major works:
- epay-cli: Implemented basic testing for the Easy Payment Protocol system and provided basic encapsulation for the Easy Payment Protocol.
- nextpayt: A general payment system written in Go microservices, utilizing Hertz and Kitex. It includes an invention that combines the go-fx module (a large monolithic framework) with microservices, offering higher modularity and scalability.
- Distributed Scheduler: A Rust-based distributed task scheduler implementation based on Consistent Hash, offering various middleware solutions.
Most of the Go applications I write are commercial, so they are not able to be public.
Kubernetes
I maintain a Kubernetes cluster and have previously been responsible for the operation and maintenance of two Kubernetes clusters. I usually use GKE as the managed platform for Kubernetes.
KubeSphere is the Kubernetes management platform I mainly use. For package management, I use Helm, and for deployment in production environments, I prefer Kustomize and Istio.
DevOps
In terms of DevOps, I mainly use GitHub Actions as the CI/CD tool and have configured a complete CI/CD process for a microservice project. You can check the article Using GitHub CI to Automatically Push Images to GAR, which is our container registry solution.
Work Experience
Since I co-founded my first small company in the second year of junior high, I have been continuously improving my interpersonal and business skills.
- 2020.7 - 2021.6: CTO of YuanYun Technology, mainly responsible for development work while participating in the formulation of operational policies.
- 2021.6 - 2022.8: Chief Architect of YunJun Times, mainly responsible for operations and architecture work. Currently on leave, participating in discussions as a consultant.
- 2022.8 - 2023.5: Worked at Star Horizon Corp., mainly responsible for development work, with the title of Technical Director.
- 2023.5 - 2023.8: The original company was restructured and renamed Scalar Investment Corp.
- 2023.8 - 2023.10: Worked at VV Network, mainly responsible for development and operations work.
- 2023.10 to present: Employed at LOCRAY INFORMATION TECHNOLOGY LTD, Technical Director.
- 2024.07 to present: Employed at an internet technology company, responsible for backend development work.
- 2024.09 to present: Employed at Axis Technology Limited, CEO.
Since October 2023, I have basically stopped long-term employment in companies and transitioned to being a semi-freelancer. My time investment in companies has significantly decreased.
Future Plans
In the coming years, I will continue to strive to improve my abilities. I plan to take the college entrance examination in 2025 and hope to be admitted to an ideal university. At the same time, I also hope to further develop my industry in the coming years, change production methods, and improve production efficiency.
Of course, as a lifelong technology enthusiast, I will continue to learn and make infinite progress.
GitHub repository count statistics as of January 2023. ↩︎
Customer: 果酱 Cloud (Note: This site is not operated by AHdark, it is only for style preview) ↩︎
GitHub: uber-go/fx ↩︎
GitHub: gin-gonic/gin, cloudwego/hertz ↩︎
GitHub: cloudwego/kitex ↩︎