Brandonz | 不烂凳子

  • 生活的思考

    Woman looking out a window at rooftops and tower.

    我把老朋友惹生气了。别怪我也把你当成了杂音,嫌弃你烦,最近我好不容易才找到稳定的工作,生活才有一点起色。怀念过去虽然能带来一点快乐,但现实的生活和责任让我不得不一直往前走,有时也没心思顾及其他。妈妈年纪也大了,我也在想着要更努力去争取自己想要的生活,才不会辜负大家的期待。如果我在过程中冒犯了你,或是忽略了老朋友,那真的是我不对,对不起。

  • Condolences to the Families and Nation

    I am in deepest condolences to the families and the country who lost a person who tells the truth. I feel sad and unsafe that there is no longer anyone to tell me the truth about the world.

  • 纯JS+HTML打造!本地运行Dialog Builder with OpenAI

    纯JS+HTML打造!本地运行Dialog Builder with OpenAI

    ,

    Hey各位privacy-conscious developers和AI enthusiasts!今天要proudly introduce我的latest project——Dialog Builder with OpenAI,这次是100% pure JavaScript and HTML构建,而且你的API keys只保存在local browser,我们完全不store任何sensitive data!马上体验demo 👉 https://dialogs.brandon.my/

    我知道很多developers都worried about sharing API keys with third-party services。所以这个project采用了完全前端实现的设计理念:

    • 你的OpenAI API key只存在localStorage,永远不会发送到我的server.
    • 所有API calls直接从你的browser发出,完全bypass backend.
    • 对话设计自动保存到local storage,即使refresh page也不会丢失数据.

    🔒 Premium Content

    You need a Paid Member account to access this content.

    这个project完全使用vanilla JS + HTML + CSS构建,主要技术亮点:

    // Example of local API key handling
    const saveAPIKey = (key) => {
      localStorage.setItem('openai_api_key', key);
      console.log('API key saved locally only!');
    };
    
    // All API calls made directly from client
    const fetchAIResponse = async (prompt) => {
      const response = await fetch('https://api.openai.com/v1/chat/completions', {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${localStorage.getItem('openai_api_key')}`,
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          model: "gpt-3.5-turbo",
          messages: [{role: "user", content: prompt}]
        })
      });
      return await response.json();
    };

    为保障你的API key安全,我们实现了多重保护:

    • 🔐 API key模糊显示,默认显示为asterisks.
    • ⚠️ 清除本地数据按钮,一键清除所有sensitive information.
    • 🌐 所有请求直接发送到OpenAI,无中间server参与.

    🔒 Premium Content

    You need a Paid Member account to access this content.


    如何使用 | How to Use

    1. 访问https://dialogs.brandon.my/
    2. 输入你的OpenAI API key(只保存在你的浏览器).
    3. 开始构建对话流程,实时测试AI响应.
    4. 导出HTML代码,直接嵌入你的网站.

    所有操作都在你的浏览器内完成,完全无需担心数据隐私!

    a man speaking into a microphone in front of a group of people

    适合场景 | Perfect Use Cases

    这个tool特别适合:

    • 🏢 企业内部工具开发,无需部署backend.
    • 🎓 教育演示用途,学生可以安全地学习AI integration.
    • 🔧 快速原型开发,快速验证对话流程设计.
    • 🌐 静态网站集成,即使只有HTML也能拥有AI功能.

    未来规划 | Future Roadmap

    虽然已经是pure client-side,但我们还有更多计划:

    • IndexedDB存储 – 支持更大规模的对话数据存储.
    • Service Worker缓存 – 实现完全离线功能.
    • Web Components版本 – 更容易嵌入其他项目.
    • 本地模型集成 – 支持WebLLM等本地运行模型.

    结语 | Final Thoughts

    在这个data privacy越来越重要的时代,client-side AI solutions绝对是未来趋势。我的Dialog Builder就是一个很好的起点,让你在享受AI强大功能的同时,完全掌控自己的数据。

    🎯 立即尝试:https://dialogs.brandon.my/
    💡 记住:你的API key永远只留在你的设备上!
    GitHub: https://github.com/phototix/OpenAI-TTS-Dialog

    P.S. 如果你喜欢这个project,记得star我的GitHub repo哦!

  • 我终于搞了自己的AI Jarvis系统!

    我终于搞了自己的AI Jarvis系统!

    , ,

    Yo各位tech迷,今天我要share一个超级兴奋的project!我终于入手了一台NVIDIA A1000 GPU workstation,然后combine with最新的LLama models,通过Open WebUI搭建了一个完全属于我自己的AI chat和agent系统。Seriously,感觉就像当了一回Iron Man,拥有了自己的Jarvis!😎

    🔒 Premium Content

    You need a Paid Member account to access this content.

    Overall,这个project不仅让我experience了cutting-edge AI tech的power,还让我feel到了那种“未来已来”的excitement。如果你也是tech enthusiast,我真的highly recommend尝试build你自己的AI system。Trust me,那种拥有personal Jarvis的感觉,真的是无敌!🚀

    有没有人也在玩AI agents?欢迎在comments分享你的experience!

  • 告别软件订阅时代:How I Built My Own Web Apps with AI Instead of Paying for Subscriptions lah

    告别软件订阅时代:How I Built My Own Web Apps with AI Instead of Paying for Subscriptions lah

    ,

    各位朋友,你们有没有发现,现在很多软件都变成subscription-based了?Every month都要扣钱,真的很sian啊!💸 尤其像我这种搞IT的,需要用到各种tools,subscription fees加起来可以买很多碗laksa了咧!

    But guess what?自从我开始用AI来generate code,我都不需要花更多的钱去买软件和电脑里的工具了!Self Built Apps 怎么做?都用AI给我生成出来。

    🔒 Premium Content

    You need a Paid Member account to access this content.

    🔒 Premium Content

    You need a Paid Member account to access this content.

    以下是一些我自己已经建立的Web Apps 和 一些辅助工具来自社群:Self Built Apps

    🔒 Premium Content

    You need a Paid Member account to access this content.

    Open Source Apps I Use:

    • Open WebUI – 管理我的AI models
    • NextCloud – 自己的cloud storage,不用给Google Drive钱
    • Joplin – Note-taking app,sync去自己的serverSelf Built Apps

    总结一下:Why This Approach Rocks 🚀

    1. Cost Savings:省下几百块的subscription fees every year
    2. Customization:可以customize到完完全全符合我的需求
    3. Learning Opportunity:在build的过程中学到超多新skills
    4. Independence:不用被大公司lock-in,我的data我做主

    所以啦,各位tech朋友,不要再傻傻付subscription了!Leverage AI的力量,build你自己的tools吧!如果你们有兴趣学how to do this,可以留言让我知道,我可能consider做一个小型的workshop哦!😉

  • AI Gadgets Are Everywhere Lah: But Are They Really Your 救星 or Just Another 电子垃圾? 

    AI Gadgets Are Everywhere Lah: But Are They Really Your 救星 or Just Another 电子垃圾? 

    Look around you lor. Suddenly everywhere also got some new gadget shouting about “Powered by AI!” From your 冰箱 that can suggest recipes based on a rotten tomato, to your 耳机 that can translate your Singlish into proper English for your ang moh boss. The hype is real, but as someone who’s been in the tech game since floppy disks were a thing, my 直觉 is tingling. Is this the future, or are we just being sold a very expensive, glorified paperweight?

    Let’s be real hor. Most of these so-called “AI” features are just pre-programmed routines with a fancy name. Your “smart” speaker telling you the weather isn’t intelligence; it’s a bloody API call, something any decent programmer can whip up in 5 minutes. They’re slapping the “AI” label on everything to justify a 50% price hike, and consumers are 吃这一套 like it’s free chicken rice.

    🔒 Premium Content

    You need a Paid Member account to access this content.

    So what’s the bottom line? Don’t be a 韭菜. The next time you see an “AI” toothbrush, ask yourself: “What problem is this actually solving?” If the answer is “making the company money,” then walk away.

    True, useful AI should feel seamless. It should solve a problem you actually have, not one invented by a marketing team. It should make you more efficient, more creative, or more informed. Anything else is just 电子垃圾 waiting to happen.

    你的看法是什么? Have you bought any “AI” gadget that turned out to be surprisingly awesome or a complete waste of time? Share your horror or success stories in the comments lah. Let’s separate the 钻石 from the 玻璃.

  • 用WhatsApp自动化你的任务管理?我搞了个超懒人版AI助手!

    用WhatsApp自动化你的任务管理?我搞了个超懒人版AI助手!

    ,

    Yo,各位拖延症晚期患者 & 生产力工具控!今天我要分享一个超级简单但极度实用的自动化方案——用 WhatsApp 打造个人专属任务管理系统!是的,你没看错,连App都不用装,直接在WhatsApp里收每日任务提醒、早晨鸡汤(误)、晚间总结,甚至还能帮你记录完成情况!


    🤔 为什么搞这个?

    因为我!但又不想完全摆烂(偶尔还是要装一下自律)。市面上太多任务管理App,但每次都要打开另一个软件?太麻烦了啦! 既然我每天泡在WhatsApp里(谁不是?),那就让任务提醒直接怼到我脸上

    🔒 Premium Content

    You need a Paid Member account to access this content.

    ⚙️ 怎么运作?

    • 每天早上8点:从数据库拉取今日任务 + 随机一句毒鸡汤(例如:“今天的你,和昨天的你一样烂,但没关系!继续努力!”),通过WhatsApp发给我。
    • 任务完成时:我直接回复 ✅ [任务ID],捕捉消息,更新数据库。
    • 晚上10点: 汇总今日完成情况,计算生产力分数(自我欺骗用),并发送总结+明日预告。

    🚀 效果如何?

    • 零学习成本:不用学新软件,直接WhatsApp聊天式操作。
    • 极度个性化:任务逻辑、鸡汤语录、总结格式全自定义(我甚至加了天气提醒和生日提醒)。
    • 免费或极低成本:WhatsApp API 用量少的话几乎不要钱。

    😈 要不要试试?

    如果你也懒得开一堆App,但又想假装高效,这个方案绝对适合你

    🔒 Premium Content

    You need a Paid Member account to access this content.


    总结:用自动化工具把琐事丢给机器,人类负责躺平+创造!如果你也搞了类似的操作,欢迎交流——或者吐槽我的简陋设计!🤣

    🚨 免责声明:此方案可能导致你变得更懒,本人概不负责。


    P.S. 代码?哼,才不直接给你!自己动手丰衣足食~(付费客户另谈,谢谢 😏)

  • 普通马来西亚人在新加坡生存和融入的实用指南

    ,

    Practical Guide for Ordinary Malaysians to Survive & Adapt in Singapore

    Hey 各位大马朋友,如果你刚来Singapore工作 or 已经在这里打拼多年,this post 就是为你准备的!

    Singapore 是一个高效但竞争激烈的社会,especially for Malaysians who 需要适应这里的快节奏。别担心,这篇指南会帮你 navigate 生活、工作、省钱、社交,让你更快 feel at home!

    1. 工作环境适应 Work Culture Adjustment 准时 Punctuality 是王道:Singapore 的 workplace 非常重视时间观念,迟到会被视为 unprofessional。 Hierarchy 比较明显:上司和下属的关系 more formal than Malaysia,建议用 “Mr./Ms.” 称呼 superiors unless 对方允许你叫名字。 加班文化 OT Culture:某些行业(如 finance、IT)expect 你加班,但记得 check contract 有没有 OT pay。 💡 Pro Tip: 如果遇到职场问题,可以找 MOM (Ministry of Manpower) 或 Malaysia High Commission 求助。
    2. 省钱大法 Money-Saving Hacks Singapore 的 cost of living 比 Malaysia 高很多,but 你可以用这些方法 stretch your dollar:

    🔒 Premium Content

    You need a Paid Member account to access this content.

    Conclusion 总结 作为 Malaysian in SG,you’re not alone!很多人和你一样在这里奋斗,只要掌握正确的方法,你不仅可以 survive,还可以 thrive!

  • Sending Bulk Utility Emails: The Right Way

    Sending Bulk Utility Emails: The Right Way

    ,

    As someone who’s worked with email systems, let me tell you straight – sending mass emails isn’t as simple as blasting your entire contact list. Here’s how to do it properly without getting blacklisted:

    Proper Methods

    1. Email Marketing Services
      • Use professional platforms like Mailchimp, SendGrid, or Amazon SES
      • These services handle deliverability and compliance automatically
      • Pricing typically based on number of emails sent
    2. SMTP Relay Services
      • For more technical users
      • Configure your application to send through services like Postmark or SparkPost
      • Requires some coding knowledge
    3. Self-hosted Solutions
      • Only recommended if you know what you’re doing
      • Requires proper SPF, DKIM, DMARC setup
      • Need to warm up IP addresses gradually

    What NOT to Do

    • Don’t use your personal Gmail/Yahoo account
    • Don’t put all recipients in the “To” field (this exposes everyone’s email)
    • Don’t send attachments – use cloud links instead
    • Don’t ignore unsubscribe requests (it’s illegal in many countries)

    For Your Work

    Since you’re working now, I’d recommend:

    1. Check if they already have an email service provider
    2. If not, propose setting up a proper system (Mailchimp has non-profit discounts)
    3. Always get explicit consent before adding anyone to mailing lists

    Remember, sending bulk emails improperly can get your domain blacklisted – then NO emails from your organization will reach anyone’s inbox. 小心驶得万年船啊!

  • Web開發業的非專業化

    Web開發業的非專業化

    , ,

    Reflecting on my journey in the web development industry, it’s hard not to notice the 非專業化(de-professionalization) happening right before our eyes. 以前,我们的工作得到了应有的尊重和奖励,但现在却面临着许多挑战。

    First, 低估 talent 感觉已经成为了常态. Many clients prefer to hire cheaper freelancers instead of investing in skilled developers. 我们花了很多时间学习和提升,却常常被忽视。

    Then there’s crowdsourcing exploitation. It feels like full projects are demanded via contests, with little to no pay offered. It’s frustrating! 我常常想,难道我们不应该为我们的努力获得公平的回报吗?

    Moreover, the 過度依賴 on no-code tools really undermines the need for actual developer expertise. 它们可能看起来方便,但质量有时候难以保证。

    Unrealistic timelines are also making things worse. When clients rush us, it leads to poor-quality output. 有时候我希望他们能理解,一个好的项目需要时间。

    man wearing red hoodie

    And let’s not forget about scope creep abuse. Features are added without any extra pay or time. 这几乎是对开发者的不公平对待!

    Then there’s non-tech management interference. It’s heartbreaking when our advice on architecture gets ignored. 我们是专业人士,应该听取我们的意见。

    And how about the infamous “exposure” instead of pay? Offering visibility in place of fair compensation is just ridiculous! 我们的工作不是用眼球来换取的。

    Worse yet, interns replacing pros has become a trend; free labor disguised as training. 他们在承担重要工作,但却没有得到应得的指导。

    We also see a lot of people ignoring best practices. Skipping code standards and version control can lead to chaos down the road. 每个开发者都知道,规范化是保证质量的关键。

    Finally, the price war tactics just destroy our value and professionalism. 不断的压价只会让整个行业走向低谷。

    To wrap it up, the web development industry is facing a serious identity crisis. 我们需要重新审视我们的价值和专业性,才能让这个行业恢复应有的荣光。