Akın Aydın

软件工程师

这里是 akinaydin.com 的技术网站:用图和仓库里的代码,讲讲我的项目是怎么做出来的。

  • FitEscala 联合创始人兼技术负责人
  • Liverpool John Moores University 人工智能硕士(机器学习方向)。授课模块平均分 78.8%,最终成绩尚未公布。
  • 英国利物浦

架构图

Architecture console

No diagram yet

Architecture console, idle.

Ready. Type `help`, or tap a command.

点一下命令,或者自己输入。试试输入“ls”列出所有架构图,或输入“source”查看这个控制台自己的代码。

项目详解

深入讲六个项目。每篇都包括要解决的问题、实现方式、关键决策和仓库里的代码。

跑在你浏览器里的神经网络

一个小型神经网络,用 TypeScript 从零写成,没用任何机器学习库。它只利用你浏览器的空闲时间,学习把两个交错的半月形分开。点击“Grad check”,可以把它手写的梯度和数值估计做对比。

Neural net, 1218 parameters

Layers 2-32-32-2 · tanh and softmax · SGD with momentum

Step
0
Loss
n/a
Train acc
0.0%
Params
1218
Budget
Idle frames only

Training idle at step 0.

小项目

客户网站、实验项目和大学作业,每个用几句话介绍。

为客户做的网站

  • Anamaria Andrei

    概念设计

    为牛津一位手工浇筑蜡烛的手作人设计的四套网店方案,每套方向都不一样。其中一套有一支可以点亮的 3D 蜡烛。

    HTML · Three.js · GSAP · Lenis

  • Yağız Cem Yılmaz

    已上线

    为伊兹密尔一位音乐老师、舞台乐手兼合唱指挥做的多页作品集网站:三段式滚动叙事、动态文字和一个可选的 WebGL 场景,所有内容都放在一个经过校验的个人资料文件里。

    Next.js 16 · React 19 · Motion · anime.js · React Three Fiber

    yagizcemyilmaz.com
  • Tiyatro Fısıltı

    已上线

    为伊兹密尔一家咖啡馆兼剧场 Kuluçka Kahve Sanat 里的剧团做的 PHP 网站和管理后台:演出安排、剧目、博客、团队和图库,并为搜索引擎提供活动数据。后台有会话认证、CSRF 防护、限流,以及带 MIME 白名单的图片上传。部署到共享主机上,不需要构建步骤。

    PHP · SQLite or MySQL · JavaScript

    kuluckakahvesanat.com
  • CIBES Research Centre

    已上线

    研究中心的公开网站,以及基于 Meta Marketing API 的会议广告投放,也就是下面第一篇笔记讲的那件事。

    React · Vite · Tailwind · Meta Marketing API

    cibesresearch.org
  • Phinova Clinics

    已交付演示版

    一个演示版,把诊所的单页网站重做成支持九种语言的平台:治疗项目和医生页面,一个带同意确认、工单编号和 WhatsApp 转接的引导式就医导航,再加上 hreflang、sitemap 和 JSON-LD。

    Next.js · Tailwind · Resend

  • Ogün Aslan

    已完成

    为一位音乐制作人、舞台乐手兼老师做的网站:制作、演出和课程页面,外加一个由结构化文章组成的土耳其语博客,内容根据这位制作人的简历和访谈整理。

    Next.js · TypeScript

  • Maske Sanat Tiyatro

    已完成

    为博尔诺瓦一家 50 座的独立剧场兼咖啡馆做的网站。每条信息都能在一份调研文件里追溯到出处,所以演出安排在发布前可以再核对一遍。

    Vite · HTML

  • Emir Özeren

    已下线

    一位副教授的个人学术网站,包括简历、论文著作和笔记。现已下线。

    Astro

产品与实验

  • Anı Defteri

    为一场真实婚礼制作

    一个婚礼留言簿网页应用。宾客扫一下二维码,就能留言并上传最多三张照片。新人可以挑选哪些内容放上共享留言墙,哪些收进可下载的 PDF 书册。

    Next.js · Supabase · React PDF

  • Charisma AI

    已停用

    一个完整的 SaaS,我把它作为业余项目在线上运营过一段时间:输入一张自拍和一份问卷,输出一份由 Gemini 打分的魅力画像,还有教练计划、每日打卡、可以聊天的 AI 教练、Stripe 订阅套餐和提醒邮件。我是主动把它下线的;它的计费和打分模式都用到了后来的产品里。

    Next.js · Supabase · Gemini · Stripe · Resend

  • YouTube 自动化

    已搁置

    输入一个 prompt,输出一个已发布的视频:脚本、场景图片、带词级时间戳的旁白、视频、Remotion 渲染、SEO、缩略图和上传。每一步都会把输出写到磁盘上,所以失败的运行可以从出错的那一步接着跑。它是能用的;我把它搁置,是因为它分散了我在真正的产品上的精力。

    TypeScript · Gemini · fal.ai · ElevenLabs · Remotion · YouTube API

  • Tatil Radar

    已完成

    按区域算出在伊兹密尔海边过一晚到底要花多少钱(酒店、晚餐、海滩和外出玩乐),并在 13 个销售渠道之间比较同一家酒店。每个酒店链接都经过核实,没核实的会如实标注。

    Next.js · TypeScript

  • Hands-Free Chords

    可运行的原型

    摄像头同时追踪双手。每只手各有一个径向菜单,左手选根音,右手选和弦类型,捏合手指就会通过虚拟 MIDI 端口把和弦送进 DAW 里演奏。网页版正在开发中。

    Python · MediaPipe · OpenCV · mido

  • MOKOKO

    已完成

    一款在浏览器里玩的三轮制土耳其语单词游戏,游戏逻辑和单词规则都有单元测试覆盖。

    React 19 · Vite · Vitest

  • LinkedIn 内容流水线

    使用中

    一份品牌文件、一份调研清单和一个内容队列。Claude 起草两个版本,我批准其中一个,再通过 LinkedIn 官方 API 发布。没有我的批准,什么都不会发出去。

    Claude · LinkedIn API · Markdown

  • HorrorGuess

    已完成,未上线

    和一个朋友两天做出来的土耳其语恐怖猜谜游戏。模型在“必须”“可以”“不可以”的规则下写一个鬼故事,输出格式由 schema 强制约束,玩家要猜出它描述的是二十种怪物里的哪一种。

    React · Vite · TypeScript · OpenAI

  • Chordinia

    已暂停

    一个和弦与歌词助手,有一个用纯 Dart 写的真正的乐理内核(和弦解析、调性检测、一键移调、实时音高分析),另外还有歌曲识别和歌词功能。Pistochia 发布期间暂停开发。

    Flutter · Supabase · ACRCloud · Genius API

  • Kuluçka Vampir Köylü

    已停用

    一个为咖啡馆狼人杀之夜做的应用:玩家扫二维码加入,拿到点一下才显示的身份牌,夜间行动在主持人的屏幕上结算,投票实时同步到每个人的手机。谁能看到什么,由行级安全来强制控制,而不是在应用里。咖啡馆的游戏之夜用纸质卡牌就进行得很顺利,所以这个应用就停用了。

    Next.js · Supabase Realtime · Row-level security

  • aifindsit

    工作流已搭建

    一个用 n8n 工作流搭的 Instagram 私信机器人:消息通过 webhook 进来,查找对应的商品,回复里附上它的链接。

    n8n · Instagram Graph API

大学与开源

  • FlexFlow

    毕业设计,已停用

    我在 Yaşar University 的毕业设计,三人团队完成:一款把健身爱好者和私人教练匹配起来的健身应用,包含训练和饮食计划、地图上的附近健身房、AI 教练和卡路里记录。移动端应用是我做的,NestJS 后端由一位队友完成。

    React Native · Expo · Firebase · NestJS · PostgreSQL

  • Smart Bed

    原型,已演示

    由 Yaşar University 和 Penn State Abington 的学生混编成队,在三天内(2024 年 3 月)做出的一张病床。床上的传感器和 AI 摄像头监测病人,病人一开始起身,墙上的装置就会在跌倒发生之前向护士的手机发出提醒。向 Bordatech 做过演示,也上了大学的新闻网站。

    M5Stack · MicroPython · AI camera

  • 带 AI 助手的航空票务系统

    课程作业,两人合作

    一个票务 API(航班、购票、值机、JWT 认证),挂在一个按 IP 限流的 Express 网关后面;另有一个助手,调用和其他所有客户端相同的公开接口,用平实的语言回答问题。代码仓库在我搭档的 GitHub 账号下。

    .NET 8 · EF Core · Azure SQL · Express · OpenAI

  • 酒店预订微服务

    课程作业,两人合作

    一个网关后面有七个服务(管理、搜索、预订、评论、通知和一个语言智能体),各自用适合自己的存储:预订用 Postgres,评价用 MongoDB,缓存用 Redis,邮件走消息队列。

    Node.js · Express · PostgreSQL · MongoDB · Redis · RabbitMQ · Docker Compose

  • MiroFish:加了新功能的 fork

    贡献

    给开源多智能体预测引擎 MiroFish 加的功能:可插拔的记忆后端(Zep Cloud,或在你自己的服务器上跑 Graphiti 加 Neo4j)、一个实时按美元统计花费、到达设定上限就停止运行的成本追踪器、进程看门狗,以及一个紧急停止按钮。引擎本身是上游的成果,只有这些新增部分是我做的。

    Python · FastAPI · Graphiti · Neo4j · Vue

技能与使用频率

不打星级,只看每项技能在实际工作中用得有多频繁,以及在哪里能看到它。

技能频率用在哪里
JavaScript、TypeScript 和 Node.js每天这个网站上的大部分项目都跑在它上面。 Malton London Press
Next.js、React 和 Supabase每天ResearchGo、Ürünereklam、Malton London Press、几个客户网站,以及我自己的两个网站。 ResearchGo
SQL、API 设计、CI/CD 和 Git每天每个项目都会用到。迁移、数据库检查和部署流水线在各篇项目详解里都有提到。 Malton London Press
Python:数据流水线、爬虫和机器学习用于生产FitEscala 的获客引擎、ResearchGo 的解析 worker,以及我的硕士论文(经典模型、集成模型和 Transformer 模型,外加可解释性指标)。 硕士论文:对 AI 生成钓鱼邮件的可解释检测
React Native 和 Expo用于生产FlexFlow,我基于 Firebase 的毕业设计;还有 Pistochia,基于 SQLite 离线优先,配合 Supabase 边缘函数。 Pistochia
WebGL 和 Three.js(React Three Fiber)用于生产akinaydin.com 上的 3D 字母,GPU 丢掉 WebGL 上下文时会自动重建。 akinaydin.com
Meta Marketing API 和广告投放用于生产把一场会议的广告投放从盲投,做到了能衡量单条线索成本。具体经过写在下面的笔记里。
Playwright 和浏览器自动化用于生产LinkedIn 内容流水线。
无障碍用于生产一个面向手语使用者、由欧盟联合资助的项目网站,2024 年和 2025 年为一家特殊教育协会开发。
C、C++、C#、Java、Flutter 和 IoT偶尔实际用过,但不是天天用:Smart Bed 在 M5Stack 上跑 MicroPython,Chordinia 用的是 Flutter,航空票务系统用的是 .NET。

工程笔记

实际开发中出过的问题,以及我做了哪些改动。

2026.06

看不见目标的广告活动

一个会议需要报名,所以广告账户投了转化广告系列。但像素上没有接入任何报名事件。Meta 会朝着它能看到的东西优化,而它什么也看不到,于是一个类似受众把大部分预算花在了三个国家,带来了几千次点击,却一个报名都没有。

换一个更聪明的受众也解决不了这个问题。改用 Meta 自己的线索表单后,算法有了一个真实的事件可以瞄准,同一个账户开始以远低于欧盟 B2B 常见水平的单条线索成本,带来符合条件的学者。实测数字在最终报告里;我是有意不把它们放在这个页面上的。

从那以后,在调整广告活动之前,我都会先确认它真的能看到我想要的结果。

2026.07

把 GPU 搞崩的反射

akinaydin.com 上有一个会反光的 3D 字母,会捕捉周围环境的光。第一版每一帧都重新渲染环境,再跑一遍 PMREM 生成,所以反射总是最新的。在性能好的笔记本上看着没问题;但在普通硬件上,滚动到一半,标签页就丢失了 WebGL 上下文,字母也随之变黑。

现在环境只在页面加载时渲染一次。真机上上下文还是会丢,所以一旦发生,页面会自动重建画布,而不是留下一块死掉的画面。

2026.07

为什么神经网络要故意训练得慢

这个页面上的神经网络,如果放到不节流的 Web Worker 里,训练速度会快得多。但我是故意不这么做的:只是滚动路过的人,不应该因为后台在训练网络而看到掉帧。

所以训练器只在浏览器有空闲时,利用 idle 回调和一帧里的零碎时间跑几步梯度更新,浏览器忙的时候一步都不跑。损失曲线下降得慢一些,但页面始终保持流畅。