彭祈恩,英文名 Jonathan Peng。 畢業於國立陽明交通大學機械工程學系。
目前就讀陽明交大研究所,專注於影像處理與電腦視覺,探索 AI 與視覺技術的實際應用
實習期間投入 Agentic AI、Long-Running Agent 與 AI-driven Software Automation 的系統設計開發
除了是一名研究生,同時也是一名 台灣魔術師
Long-Running Agent // 負責 Agent execution 與 validation capabilities,設計自動化 Deploy、Boot、Testing workflow。
特邀魔術表演者 // 在三立電視台與藝人合作演出。
創辦人暨第一屆總召 // 自主開發即時桌球比賽紀錄系統。
網站設計 // 負責多頁式架構規劃、UI/UX 設計。
講座助手 // 擔任國際冠軍魔術師陳日昇的講座助手,協助表演及拍攝紀錄。
魔術互動表演 // 與孩童近距離互動,營造歡樂與驚喜的公益時光。
迎新舞台主持 // 與知名魔術師陳冫茜同台,負責流程掌控、現場氣氛與觀眾互動。
113級隊長 // 規劃年度訓練制度,帶領團隊。
第十八屆副社長 // 負責社團識別設計與策畫活動。
OpenCV / NumPy / AI
# Computer Vision Core
def process_stream(frame):
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Neural Network Inference
results = model.predict(gray)
if results.conf > 0.95:
return "TARGET_IDENTIFIED"
Agentic Workflows / Tool-Use / Eval
# Long-running agent loop
while not task.done():
step = agent.plan(context)
result = tools.execute(step)
if not validator.check(result):
context.retry(step)
context.commit(result)
GSAP / DOM / Vanilla-Tilt
// Cinematic Timeline Sequence
const tl = gsap.timeline();
tl.to(".hero-section", {
scale: 1.1,
filter: "brightness(1.5)",
duration: 0.8,
ease: "elastic.out(1, 0.5)"
})
.to(".glitch-text", { skewX: 20 }, "<");
WebGL / Shaders / Three.js
// Fragment Shader (The Void)
void main() {
vec2 uv = gl_FragCoord.xy/uRes.xy;
float noise = fbm(uv * 3.0 + uTime * 0.2);
// Domain Warping
vec2 q = vec2(fbm(uv), fbm(uv + 5.2));
vec3 color = mix(vec3(0.), vec3(0,1,1), noise);
gl_FragColor = vec4(color, 1.0);
}
SolidWorks / ROS / Mechatronics
#include <ros/ros.h>
// 6-DOF Arm Control
void move_end_effector(geometry_msgs::Pose target) {
moveit::planning_interface::MoveGroupInterface group("arm");
group.setPoseTarget(target);
group.move();
ROS_INFO("TRAJECTORY_EXECUTED");
}
MATLAB / Simulink / Kinematics
% Inverse Kinematics Calculation
L1 = Link('d', 0, 'a', 1, 'alpha', 0);
robot = SerialLink([L1 L2 L3], 'name', '6-Axis');
T_goal = transl(0.5, 0.5, 0.2) * trotx(pi);
q_sol = robot.ikine(T_goal, 'mask', [1 1 1 1 1 1]);
robot.plot(q_sol);
Flask / PostgreSQL / MongoDB
@app.route('/api/secure_data', methods=['POST'])
def get_secure_data():
token = request.headers.get('Authorization')
if not verify_token(token):
return jsonify({'error': 'ACCESS_DENIED'}), 403
data = db.session.query(Records).all()
return jsonify(data_schema.dump(data))
FiveM / Event Handling
-- Server Side Event
RegisterNetEvent('core:purchaseItem')
AddEventHandler('core:purchaseItem', function(item, price)
local xPlayer = ESX.GetPlayerFromId(source)
if xPlayer.getMoney() >= price then
xPlayer.removeMoney(price)
xPlayer.addInventoryItem(item, 1)
end
end)
Git / Docker / Kubernetes
# Deployment Sequence
$ git checkout production
$ git merge develop
$ docker build -t jonathan-site:v2 .
$ docker run -d -p 80:80 jonathan-site
> Status: CONTAINER_LAUNCHED
> Port: 80 OPEN
Blender / DaVinci Resolve
# Procedural camera move
import bpy
cam = bpy.data.objects["Camera"]
cam.keyframe_insert("location", frame=1)
cam.location.z += 4.0
cam.keyframe_insert("location", frame=120)
bpy.ops.render.render(animation=True)
Golang / Java / C++
// Concurrent worker pool
jobs := make(chan Task, 128)
for w := 0; w < runtime.NumCPU(); w++ {
go func() {
for t := range jobs {
t.Run()
}
}()
}
Arduino / Raspberry Pi / C++
void setup() {
pinMode(RELAY_PIN, OUTPUT);
Serial.begin(115200);
WiFi.begin(ssid, password);
}
void loop() {
if (sensorVal > threshold) {
digitalWrite(RELAY_PIN, HIGH);
Serial.println("ACTUATOR_ENGAGED");
}
}
展示一些自己發明的比較視覺的魔術效果,都有發布在 IG Reels。
自走車系統、闖關機器人、機械手臂、自動控制、感測器整合應用。
Scanning surface data...