Skip to content

Instantly share code, notes, and snippets.

View serkan-ozal's full-sized avatar

Serkan ÖZAL serkan-ozal

View GitHub Profile
@serkan-ozal
serkan-ozal / gist:45bf70343ba276065c973c1ab7f9e28e
Last active January 14, 2026 17:57
Browser DevTools MCP Blog Post

Empowering AI to Test and Debug Its Own Code: Introducing Browser DevTools MCP

How AI agents can autonomously test, debug, and validate web applications without human intervention


The Problem: AI Can Write Code, But Can It Test It?

We've reached a remarkable milestone in AI development: AI assistants can now write complex code, refactor entire codebases, and implement sophisticated features. But here's the catch—when AI generates code, especially for web applications, how does it verify that the code actually works? How does it debug issues? How does it ensure the UI matches the design?

@serkan-ozal
serkan-ozal / stacktrace.txt
Created December 8, 2025 15:30
AWS Lambda Nodejs CJS Module Load StackTrace in Nodejs v24
at Object.<anonymous> (/var/task/index.js:2:13)
at Module._compile (node:internal/modules/cjs/loader:1760:14)
at Object..js (node:internal/modules/cjs/loader:1893:10)
at Module.load (node:internal/modules/cjs/loader:1480:32)
at Module._load (node:internal/modules/cjs/loader:1299:12)
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:244:24)
at cjsLoader (node:internal/modules/esm/translators:342:5)
at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:234:7)
at ModuleJob.run (node:internal/modules/esm/module_job:377:25)
@serkan-ozal
serkan-ozal / stacktrace.txt
Created December 8, 2025 15:29
AWS Lambda Nodejs CJS Module Load StackTrace in Nodejs v22
at Object.<anonymous> (/var/task/index.js:2:13)
at Module._compile (node:internal/modules/cjs/loader:1706:14)
at Object..js (node:internal/modules/cjs/loader:1839:10)
at Module.load (node:internal/modules/cjs/loader:1441:32)
at Function._load (node:internal/modules/cjs/loader:1263:12)
at TracingChannel.traceSync (node:diagnostics_channel:322:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:237:24)
at Module.<anonymous> (node:internal/modules/cjs/loader:1463:12)
at Module.T (/opt/wrapper.js:1:172790)
at _require.o.require (/opt/wrapper.js:1:174123)
@serkan-ozal
serkan-ozal / index.mjs
Created December 4, 2025 08:03
AWS Lambda Nodejs Runtime Code Extracter
import { readdir, readFile } from "fs/promises";
import { statSync } from "fs";
import path from "path";
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
const ROOT_DIR = "/var/runtime";
const s3 = new S3Client({
region: process.env.BUCKET_REGION ?? process.env.AWS_REGION,
});
@serkan-ozal
serkan-ozal / index.mjs
Created December 4, 2025 07:59
AWS Lambda Nodejs Runtime Interface Client (Extracted from AWS Lambda Environment) Nodejs v22
/** Copyright 2019,2020,2021,2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. */
// node_modules/lambda-runtime/dist/node16/index.mjs
import { createRequire } from "module";
var require2 = createRequire(import.meta.url);
var __getOwnPropNames = Object.getOwnPropertyNames;
var __require = /* @__PURE__ */ ((x) => typeof require2 !== "undefined" ? require2 : typeof Proxy !== "undefined" ? new Proxy(x, {
get: (a, b) => (typeof require2 !== "undefined" ? require2 : a)[b]
}) : x)(function(x) {
if (typeof require2 !== "undefined")
return require2.apply(this, arguments);
@serkan-ozal
serkan-ozal / index.mjs
Created December 4, 2025 07:59
AWS Lambda Nodejs Runtime Interface Client (Extracted from AWS Lambda Environment) Nodejs v24
// dist/logging/verbose-log.js
var EnvVarName = "AWS_LAMBDA_RUNTIME_VERBOSE";
var Tag = "RUNTIME";
var Verbosity = (() => {
if (!process.env[EnvVarName]) {
return 0;
}
try {
const verbosity = parseInt(process.env[EnvVarName]);
return verbosity < 0 ? 0 : verbosity > 3 ? 3 : verbosity;
@serkan-ozal
serkan-ozal / otel-lambda-nodejs-layer-init-timings-gte-5ms
Last active January 22, 2025 20:06
OTEL Lambda Node.js Layer Init Timings (>= 5 ms)
|-- require('@opentelemetry/api') took 23 ms
..|-- require('./baggage/utils') took 8 ms
....|-- require('../api/diag') took 6 ms
|-- require('@opentelemetry/core') took 60 ms
..|-- require('./common/time') took 45 ms
....|-- require('../platform') took 44 ms
......|-- require('./node') took 44 ms
........|-- require('./performance') took 15 ms
..........|-- require('perf_hooks') took 15 ms
........|-- require('./sdk-info') took 22 ms
This file has been truncated, but you can view the full file.
{"nodes":[{"id":1,"callFrame":{"functionName":"(root)","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[2,9,28,98,119,120,10349,10350]},{"id":2,"callFrame":{"functionName":"startProfiler","scriptId":"418","url":"file:///opt/profile-controller.js","lineNumber":16,"columnNumber":28},"hitCount":0,"children":[3]},{"id":3,"callFrame":{"functionName":"_sessionPost","scriptId":"418","url":"file:///opt/profile-controller.js","lineNumber":8,"columnNumber":27},"hitCount":0,"children":[4]},{"id":4,"callFrame":{"functionName":"","scriptId":"418","url":"file:///opt/profile-controller.js","lineNumber":9,"columnNumber":23},"hitCount":0,"children":[5]},{"id":5,"callFrame":{"functionName":"post","scriptId":"419","url":"node:inspector","lineNumber":115,"columnNumber":6},"hitCount":0,"children":[6]},{"id":6,"callFrame":{"functionName":"dispatch","scriptId":"0","url":"","lineNumber":-1,"columnNumber":-1},"hitCount":0,"children":[7]},{"id":7,"callFrame":{"functionName":"","scriptId":"419","url":
Algorithm / OS Ubuntu Window MacOS
Dot Product 750,622.625 ops/s 760,163.774 ops/s 961,366.490 ops/s
Cosine Similarity 586,113.920 ops/s 705,148.739 ops/s 892,124.358 ops/s
Manhattan Distance 793,538.457 ops/s 717,150.911 ops/s 1,156,442.603 ops/s
Euclidean Distance 760,819.826 ops/s 748,286.320 ops/s 1,012,210.232 ops/s
Runtime JDK 21, Java HotSpot(TM) 64-Bit Server VM, 21+35-LTS-2513
Benchmark tool JMH (version 1.37)
Benchmark mode Throughput, ops/time
Warmup iteration 3
Warmup time 5 seconds (for each warmup iteration)
Measurement iteration 10
Measurement time 30 seconds (for each measurement iteration)
Vector length 1000