ivo@setyadi:~$ ivo.blogspot.com

# catatan teknis, sejak 2001

TurboFieldfare jalankan Gemma 4 di Mac RAM rendah

TurboFieldfare adalah runtime Swift dan Metal yang menjalankan Gemma 4 26B-A4B dengan menggunakan sekitar dua gigabyte RAM. Sistem ini memotong expert weights dari SSD untuk menjaga model tetap di memori, sehingga dapat berjalan di MacBook Air M2 8GB. Proyek ini mencakup aplikasi Mac native, CLI, dan server yang kompatibel dengan OpenAI, semuanya dibangun khusus untuk Apple Silicon. Alat ini layak dicoba untuk local inference pada hardware berkapasitas memori rendah yang ingin menghindari overhead dari wrapper umum. Kekurangannya adalah kecepatan decode pada hardware M2 dasar yang lambat, hanya menghasilkan lima hingga enam token per detik. Turbine ini tidak cocok untuk tugas high-throughput atau Mac berbasis Intel. sumber: https://github.com/drumih/turbo-fieldfare versi bahasa Inggris: https://home.wordpress.com/2026/09/21/turbofieldfare-runs-gemma-4-on-low-ram-macs/

Ngoding dengan ai.setyadi.com

2026-01-09 · #Projects

Jalan-jalan teknis membuat kode memakai ai.setyadi.com

Asisten coding berbasis AI sudah jadi bagian praktis dari alur kerja pengembangan modern. Untuk menilainya dalam tugas nyata, saya memakai ai.setyadi.com sebagai teman ngoding dan mencatat pengalaman teknisnya: alur permintaan, perilaku respons, dan di mana posisinya dalam perkakas seorang developer.

Kenapa saya mencoba ai.setyadi.com

Saya ingin asisten berbasis web yang ringan, yang tidak menuntut plugin editor atau setup rumit. ai.setyadi.com menyediakan antarmuka bersih dan API chat langsung, sehingga mudah diuji baik secara manual maupun programatis.

Sekilas model interaksinya

Di balik layar, klien situsnya mengirim request POST ke sebuah endpoint API:

  • Endpoint: https://ai.setyadi.com/api/chat.php
  • Method: POST
  • Content-Type: application/json
  • Payload: { "message": "...", "sessionId": "..." }

Contoh request minimal

curl -X POST https://ai.setyadi.com/api/chat.php \
    -H "Content-Type: application/json" \
    -d '{"message":"Explain a simple rate limiter in Node.js","sessionId":"blog-demo"}'

Prompt yang saya pakai (dan hasilnya)

Prompt yang saya kirim:

“Create a simple rate limiter in Node.js without external libraries, explain the trade-offs, and provide minimal unit tests.”

Cuplikan respons dari ai.setyadi.com (digabung dari potongan streaming):

// rate-limiter.js
  class RateLimiter {
    constructor(maxRequests, timeWindow) {
      this.maxRequests = maxRequests;
      this.timeWindow = timeWindow;
      this.requestHistory = {};
    }

    isAllowed(requestId) {
      const now = Date.now();
      if (!this.requestHistory[requestId]) {
        this.requestHistory[requestId] = [];
      }
      const recentRequests = this.requestHistory[requestId].filter(
        r => r > now - this.timeWindow
      );
      if (recentRequests.length >= this.maxRequests) {
        return false;
      }
      this.requestHistory[requestId].push(now);
      return true;
    }
  }

  module.exports = RateLimiter;
// server.js
  const RateLimiter = require('./rate-limiter');

  const rateLimiter = new RateLimiter(10, 60 * 1000); // 10 requests per minute

  function handleRequest(requestId) {
    if (!rateLimiter.isAllowed(requestId)) {
      console.log(`Request ${requestId} is rate limited`);
      return { error: 'Rate limit exceeded' };
    }
    console.log(`Request ${requestId} allowed`);
    return { message: 'Request processed successfully' };
  }
// rate-limiter.test.js
  const RateLimiter = require('./rate-limiter');

  describe('RateLimiter', () => {
    it('should allow the first 10 requests', () => {
      const rateLimiter = new RateLimiter(10, 60 * 1000);
      for (let i = 0; i < 10; i++) {
        rateLimiter.isAllowed(i.toString());
      }
      expect(rateLimiter.requestHistory).toHaveProperty(i.toString(), []);
    });
  });

Trade-off yang disebut dalam responsnya:

  • Rate limiting bisa menambah latensi atau menolak request saat beban meledak.
  • Logika berbasis waktu bergantung pada akurasi jam dan bisa melenceng tanpa sinkronisasi.

Kelebihan yang terlihat

  • Respons streaming terasa responsif dan memungkinkan parsing bertahap.
  • Struktur jelas: jawabannya memakai bagian-bagian dan blok kode.
  • Cepat: berguna untuk prototipe atau penjelasan singkat.

Keterbatasan dan hal yang perlu diwaspadai

  • Mutu tes: tes yang dihasilkan bisa rapuh kalau bergantung pada waktu nyata (Date.now() atau setTimeout tanpa mocking yang benar).
  • Contoh in-memory: bagus untuk demo, tapi belum layak produksi tanpa penyimpanan persisten dan sinkronisasi terdistribusi.
  • Tanpa pagar pengaman eksplisit: Anda tetap perlu memverifikasi kebenaran dan keamanannya, seperti pada keluaran AI mana pun.

Cara saya memakainya dalam alur kerja nyata

Untuk pekerjaan teknik, saya menempatkan ai.setyadi.com di kategori “draf cepat”:

  • Bagus untuk: memulai kode, menjelaskan konsep, menyusun potongan program.
  • Perlu ditinjau untuk: kasus tepi konkurensi, determinisme tes, keamanan.

Kesimpulan

ai.setyadi.com adalah asisten yang solid dan cakap secara teknis untuk tugas coding cepat dan penjelasan. Antarmuka bergaya API dan respons streaming-nya memudahkan integrasi ke perkakas developer atau pemakaian untuk iterasi cepat. Seperti semua asisten AI, hasil terbaiknya muncul saat dipadukan dengan pertimbangan teknik yang kuat dan verifikasi.

versi bahasa Inggris: https://home.wordpress.com/2026/01/09/coding-with-ai/

$ cd ~/

ivo@setyadi:~$