Home

Finishing a Read-Only MCP Server: From 6 Tools to 9

This is a submission for the GitHub Finish-Up-A-Thon Challenge What I Built I took an unfinished open-source MCP server for DEV.to and added the missing half. The original repo (nickytonline/dev-to-mcp) was built by an actual DEV.to engineer and shipped six…

How Excel is used in Real World Data Analysis

I’ve always known Excel as a tool for creating tables and performing simple calculations. However, after spending a week learning its fundamentals, I now understand why Excel remains one of the most widely used tools in data analysis. Microsoft Excel…

AI Agent Safety Need Stop Signs, Not Just Instructions

AI agents do not only need better instructions. They need stop signs. That is one of the clearest reasons Ota exists as software execution governance for humans and AI agents. A repo should not merely tell an agent what it…

把 Sa-Token 搬到 NestJS 生态:xlt-token 1.0 的几个设计取舍

最近发布了 xlt-token@1.0.0-rc.1,一个为 NestJS 设计的 Token 鉴权库,灵感来自 Java 生态的 Sa-Token。 仓库:github.com/xiaoLangtou/xlt-token 功能列表看起来不复杂——登录、登出、踢人、权限校验、会话存储——但动手实现时,每个”理应如此”的能力背后都有几个不那么显然的选择。这篇文章想聊聊其中几个,主要是为了自己复盘,也希望对做类似设计的人有参考价值。 为什么不直接用 Passport? @nestjs/passport 几乎是 NestJS 鉴权的默认答案,但它本质上是个 strategy 调度器——你提供策略(local / jwt / oauth2),它负责调度。它不解决的问题包括: 同账号在第二台设备登录时,第一台应该被踢还是共存?用户被踢下线后,前端拿到 401,怎么区分”token 过期”和”管理员强制下线”?用户连续操作 24 小时不该被踢,但闲置 30 分钟应该自动登出——这两种过期机制怎么同时支持?除了 loginId,还想存最近 IP、设备 ID 等数据,且与 token 同生命周期。 这些是业务侧每次都要重新发明的轮子。Sa-Token 在 Java 生态把它们统一封装好了,我希望…

Java Annotated Monthly – June 2026 

A fresh edition of Java Annotated Monthly has landed! The world of software development keeps moving at full speed, and this month’s selection helps you keep up without drowning in tabs. Inside, you’ll find hand-picked articles, podcasts, videos, and thought-provoking…

Why Zig Isn’t 1.0 (Yet)

Most programming languages follow a familiar trajectory: early experimental releases, rapid iteration, and then – at some point – a 1.0 version that signals stability and the potential for serious adoption. Zig hasn’t followed that well-trodden path. What could be…

First blog: My journey was started

Hello everyone, my name is Ethan and I from Vietnam. I am a Backend Engineer with over 5 years of experience, mainly developing with Python and hand-on Golang in about 1 year. I focus on developing and building scalable and…

Search a 2D Matrix

One of the easiest ways to miss this problem is to focus on the matrix structure instead of the ordering property. Problem Given an m x n matrix where: Each row is sorted in ascending order. The first element of…

IntelliJ IDEA 2026.1.3 Is Out!

We’ve just released IntelliJ IDEA 2026.1.3. You can update to this version from inside the IDE, using the Toolbox App, or using snaps if you are a Ubuntu user. You can also download it from our website. The latest update…

Super Schema Architecture

This article describes an approach to application development based on a single, highly detailed format for describing domain entities and contracts. It provides practical examples of how such descriptions can be used and demonstrates how declarative schemas can bring some…

How To Make Your Design System AI-Ready

AI-generated prototypes often don’t deliver consistently decent results because of tiny inconsistencies scattered all across a design system. I’s decisions made but not documented, hard-coded values never cleaned up, or relying too much on AI making sense of mock-ups or…

The Most Confusing Thing in VirtualBox: Networking Explained

If you’ve ever run this command in Kali Linux: ip a you’ve probably seen something like this: lo 127.0.0.1 eth0 10.0.2.15 eth1 192.168.56.10 docker0 172.17.0.1 And then immediately asked: Why does my machine have multiple IP addresses? What are eth0…