雖然 Google 之前改政策,使得 Antigravity 額度變成方案成員共享,但網頁版的 Gemini 額度仍是每個人獨立計算的,而且還算慷慨。

其中我最常用的莫過於文生圖和圖生圖的功能。做遊戲、做插圖都少不了它。

美中不足的是,網頁版的所有操作都必須人力介入,自己輸入提示詞、自己校稿、自己下載、移動、貼上。雖然省去了畫圖的時間(醒醒吧,你不會畫圖),但其他工作絲毫沒有減少,反而因為「好像」可以完成更多工作,而開了更多線的任務,工作量反而增加。

前陣子我終於「已知用火」,其實只要把任務整包委派給 claude / codex(這裡指的是桌面版應用或是 CLI),讓它去操作已經登入 Gemini 的瀏覽器,它就可以幫忙把上述的工作做掉,人類只要審查結果即可。

舉個例子,假如今天想寫一本給小孩看的故事書,先將文本寫好,哪個位置該放什麼插圖也先標注清楚、存檔,接著請 claude / codex 讀文本,依照故事脈絡,把插圖一一補上,並且指定繪圖的方式是透過 claude in chrome / ChatGPT chrome extension 開啟 Gemini Web App,在該網站繪圖。依照這些前沿模型的能力,它已經能夠依照文本內容給予合適的提示詞,審核圖片是否合乎閱讀對象的年齡等等。

上述的工作流程並不須要付費才能使用。ChatGPT 的 codex 和 Google 的 Gemini 都有一定的免費額度,還沒有嘗試過 AI agent 的便利和威力的朋友可以嘗試看看。

使用 Quickemu 在 Linux host 啟動雙系統中的 Windows

使用 Linux 工作,如果偶爾須要用到 Windows 的軟體,以前我的做法是安裝雙系統,須要的時候再切到 Windows。

不想每次要切換系統就重新開機的話,可以直接使用虛擬機如 VirtualBox,在 Linux host 安裝 Windows VM,在 KVM 的幫助之下,效能也還可以。

一直到最近才發現 Quickemu,底層同樣基於 KVM,也同樣支援跨 host/guest 的互動如複製貼上、共享資料夾等等,但提供更多開箱即用的設定,讓使用者免去繁複的設定,幾乎一個命令就可以跑起 Windows VM。

Quickemu 本質是把各種 guest OS 常用的設定,用 QEMU 的命令參數組裝起來,看著看著就動了歪腦筋,不知道能不能直接把雙系統另一端的 Windows 當作 VM 跑起來?這樣在另一邊安裝的軟體、設定都不用在 VM 裡重新跑一次,每次的變動也都會直接留在雙系統的 Windows 裡,哪天要長時間直接切過去也沒問題。大概就跟 macOS 上的 Parallel Desktop 功能類似吧。

讓 agent 弄了一個多小時,最後成功了。

繼續閱讀 →

台北市選舉感想

星期六下午帶著小孩理髮,理髮店電視播放著 T 台政論節目,節目中播放立法院的錄影畫面,畫面中沈伯洋叫國民黨的人不要拉他,而他正要去阻止韓國瑜進議場。與會來賓大抵就是要說沈干擾議事秩序或沒禮貌(?)根本不是暖男啊!這位來賓對著畫面滔滔不絕,時而得意大笑,似乎對於自己的表現相當滿意。

不禮貌、爆粗口、破壞秩序的人,怎麼能做好市政呢?

當然,在這個平行時空裡,體型壯碩的沈伯洋沒有在主席台附近被人搥打內臟和從空中拋落。

拿立院裡的「物理」攻防來攻擊候選人這類把人貼上激進派標籤的策略,很老套卻很有效。百姓希望安定,誰都不希望選出一個激進份子。但看到選舉不能聚焦在政策討論上,還是覺得可惜。

百無聊賴,改讀起手上的書。上個禮拜還在想,奇怪怎麼台北選戰打這麼久了國民黨還沒有拿抄襲、桃色新聞或是弊案來打泥巴戰,結果當晚就來了。

中間的事大家都知道了,雖然認知可能完全相反。

個人閱讀沈伯洋《柯震東震出我國毒品政策的爛瘡》一文後,認為有幾處遣詞用字確實可以再溫和一些,對大眾來說陌生的觀念也可以不厭其煩的為讀者下註解。但是要把這篇批評政策的文章講成沈「支持社區供毒」和「毒品合法化」(還很刻意的販毒和吸毒兩件事混為一談),就真的是充滿惡意了。

我指的不只是對一線醫護人員的努力的抹煞,更是對社會和諧和進步,充滿惡意。

這是一個多麼好的政策討論機會。蔣團隊乃至整個國民黨,可以挑戰、可以質疑、甚至可以罵其不切實際、窒礙難行,有眾多的面向可以帶動討論,但最終還是選擇去脈絡化的,把不是對方的主張硬戴到他頭上。

引起反彈後,只要再戴一次帽子,幾十萬的留言在保守派的眼裡便又成為網軍和機器人的惡意攻擊,就算其中有許多專業的分析討論,上位者一旦定調,也只能牢牢的被鎖在各自的同溫牢籠裡。

我不知道這算盤打得精不精:激起多數醫護的反感,但鞏固保守派的票源,催動保守派為維護社會安定而出來投票,一來一回,說不定還真的划算。如果接下來民調沒有出現交叉,到年底的選戰基調大概就是專打這題了。

但不論誰當選,我們都永久喪失這次公共政策討論的機會了。我們還有多少社會議題須要好好討論?受刑人權利、安樂死、死刑…這些複雜的議題不該永遠不被理解和深刻探討,更不該被拿來當作操弄輿情的工具。政治人物來來去去,都是一時的,如果追尋大位的過程中不促進台灣社會的融合和演進,台灣又怎麼能夠長治久安下去呢?

Featured image of post 野狼掰掰

野狼掰掰

野狼今早過世了。

當初牠趁我等紅燈之際從路邊竄出來躲到機車踏板下,車身動彈不得的情況下只能把牠撿起來。從沒有看過這麼小的貓,稍後給醫生檢查後才知道牠出生還未滿一個月,看起來沒了爸媽,甚至不知道要躲避人類。覺得有緣,當下決定由幾個朋友出資共同撫養,安置在我的住處。從診所回家後牠住進臨時的紙箱,迅速的吃完罐頭,也很快就找到貓砂大便,適應得很好。

可能是因為從小養起,也可能是沒有爸媽教,據養貓的朋友說,野狼超級溫馴。我只知道牠從來不咬人,最多就張口含著作勢要咬下,也不抓人或抓家具。牠也很好哄,下午曬曬太陽,或者搔搔下巴就會呼嚕呼嚕。

畢業搬回家後,就如網路上的梗圖描繪的,本來爸媽不想要家裡有寵物,結果帶回去沒幾天,大家吸貓吸得比我還勤。其中又以我妹妹最為疼愛牠,房間也讓牠自由進出,有小孩後我找牠的頻率降低很多,還好照看牠的人變多,不致寂寞,雖然牠可能也不會感到寂寞就是了。

中間經歷過因環境變動而到處撒尿的不安時期,胃裡積了太多貓毛而嘔吐,和最麻煩的貓癬,還好,走的時候至少看起來是無病無痛,只是不吃不喝並迅速的衰退,最後悄悄的離開。十八個年頭,換算成人的歲數也是人瑞了,我雖難過,卻也為牠健康的活了這麼久,並走得順遂而感到開心。

謹以此文告知曾經撫養或認識野狼的朋友們。

繼續閱讀 →

威廉透納特展

忙裡偷閒,趁著連假開始前,來浸沐在威廉透納的光裡。

老婆個性隨和而且能自得其樂。被我硬拖過來,本來興趣缺缺的,逛了一陣子後竟也開始跟我分享心得,並驚喜的發現她最愛的那一幅也是公認最好的那幅。

小時候畫畫只會工筆,一直到成年後看了畢沙羅的展,才知道景物入畫,是可以透過那迷人的光影來呈現的,從此便愛上印象派。

最近也重新拾起筆來寫字,並嘗試各種可能性。就像繪畫從寫實邁向抽象,在手機電腦如此普及的現在,手寫字的主要目的已不再是傳遞訊息或感情,而應是傳達美感。

PXL 20251009 031445287

OpenWRT Config Generation

In OpenWRT, all config files under /etc/config are generated dynamically. There are scripts in /etc/uci-defaults to construct this configuration.

The scripts in /etc/uci-defaults are executed on first boot and then removed.

繼續閱讀 →

讀《大局》,兼憶金邊台商與我的緣份

讀者:葉學舫

1Ah0Q43

作者黃文局先生是身懷絕藝的江湖高手,在紐約經商四十年終成一方之雄,也是個飽讀中外文史,進而關懷國家興衰的世外異人,跨海資助近代的政治人物和活動,又從不露形跡於幕前。累積巨富後回台的他仿效猶太人,先後在美、台創辦全球台灣研究中心 (Global Taiwan  Institute, GTI) 與台灣勵志協會 (Taiwan Inspiration Association, TIA),向美國政界及學界發聲,並幫助本土政權茁壯。

以史為基,以錢為盾,如今更以筆為刀,黃文局先生將其畢生江湖「撇步」撰於書中傳予年輕人,盼後者經過幾代的茁壯後,引領住在台灣這塊土地的人民邁向自決建國一途。

展讀此書之際,作者在我心中的形象使我數次想起十多年前在柬埔寨與一位台商相遇的經歷。

繼續閱讀 →

農事體驗

YCLDeuc

十月和十一月,帶著小方舟體驗農事。誠然對真正的農夫來說那遠遠算不上農事,但對都市家長如我來說,已經可滿足帶小孩認識世界各種樣貌的目的。為什麼我這樣認定?因為每次結束,小方舟總是嚷著要再參加類似的活動。

小方舟固然驚異於那些初次親見的、體驗的事物,陪伴過程也拓展了對世界認識甚少的我的視野。

繼續閱讀 →

A Minimal Example of Concurrent Python

The CPython interpreter usese GIL (global interpreter lock), to prevent threads from executing Python bytecodes at once.

Suppose I have two components who need to be run in parallel in a modern multi-core processor. Say, add and mul:

def add(n: int) -> int:
    result = 0

    for i in range(n):
        result += (i + 1)

    return result


def mul(n: int) -> None:
    # Run many times to get longer execution period
    for x in range(4000000):
        result = 1

        for i in range(n):
            result *= (i + 1)

    return result

Impose that these two tiny components have to be run sequentially, mul receives add’s output.

繼續閱讀 →

(1 - 2)
Enter Press Enter to jump