Obsidian 週記功能

在 Obsidian 中有一個功能叫做間隔筆記(periodic notes),搭配日曆模組用起來很方便。其中有提供了週記的功能。我改動了如下設定,來搭配原本的部落格設置:

  • 檔案名稱:不論是部落格還是「筆記花園」,格式都是 yyyy-MM-DD 後接關鍵字。在 momentjs 設定中,使用方括號來跳脫(escape)匹配。
  • 模板:模板統一放置於 Templates 資料夾
  • 檔案資料夾:放置於部落格 Weekly 資料夾中

Setting

像上面這樣設好後,即可獲得如下的好處:

  • 撰寫週記不再需要額外手動創建檔案、填寫 metadata,只需要去日曆點選當週的週數即可。
  • 因為檔名具備一致性,可以匹配到舊的週記。

今年的目標是要多多地寫週記。


事實、解釋、行動

過年整理書房清出了很多舊書。其中一本《為什麼聰明人都用方格筆記本》本來想扔了,不過還是很快地過濾內容。書中提到了康乃爾筆記法及麥肯錫的「黃金三分割法則」,覺得有點意思。所謂的黃金三分割法則是指在筆記過程中重新整理資訊,使其變成三大區塊:

  • 事實:記述客觀資訊
  • 解釋:根據這些客觀資訊所做出的推理
  • 行動:提出問題或整理結論

一些其他的筆記術重點包括:

  • 留白:創造出思考空間
  • 使用少數顏色:一般筆記為藍色、重要筆記或修改為紅色
  • 使用較大尺寸
  • 擬定標題、一頁(對開)只寫一個主題

最後面提到了一個很有年代感的頭影片數據圖製作網站 Thick-cell


轉移筆記網站到 Quartz

原本數位花園使用的是跟部落格本站一樣的 Jekyll。不過,考慮到搜尋、互聯的需求,轉移到另一個基於 NodeJS,可以相容 Obsidian flavored markdown 格式的工具 Quartz。另外把部落格內一些比較跟個人無關、偏工具類的文章轉移到筆記網站去,例如 Emacs、Obsidian 還有一些程式片段。


2023-12-10 週記

這週在實驗了很多的 GPT API,覺得這工具穩定性還是沒有想像中的那麼穩定。要作為大型研究案的基石可能還需要很多的方法學(最基本的是調節 temptop-k 這兩個參數)。不過,我覺得是很適合用來代替「人工過濾」這件事情。目前測試了一些項目也有結論。也許之後可以寫成小文章發表到一些低分期刊上。

同樣是 LLM 相關:這週嘗試用沈浸式翻譯工具搭配 GPT-4 API 來翻譯一本嚴肅的放射科教科書,結果翻譯到 68% 死活不動(應該是網路問題)。按網頁說明重新整理後內容竟然不見了,查看了一下使用量竟耗用了快 10 美元,實在是吃不消,後來改用了 GPT-3.5 進行。速度也快。

現在每天都會有一堆骨骼肌肉的 MRI 灌進來,都不會打,讀書得十分辛苦。還有國健局的乳篩、心臟電腦斷層、肺結節篩檢跟定位、婦癌影像、各式各樣以前住院醫師沒學過的。

小米電磁爐

買了一個知吾煮湯鍋跟小米電磁爐的組合,因為現在住處的是明火的瓦斯爐,已經很久沒有用,還是用電磁爐比較安心一點。以前住處是那種底部有線圈加熱的黑晶爐,那種我覺得比較好,功率沒有電磁爐那麼驚人,鍋具適用性也比較廣。

Railway Empire 2

Railway Empire 沒玩幾次就出二代了。記得以前國中很愛玩 Railway Tycoon 2,那時候都看攻略玩。後來有自己的遊戲主機後買了 Railway Tycoon 3 跟 Railroads,但都覺得太卡通化了。直到 Railway Empire 才覺得有精神繼承的遊戲。之後再來仔細研究攻略。

堅持鍛鍊

精神狀態比較差的時候,可改槓鈴訓練為使用腿推機。其奧秘就在於要保持骨盆輕微的活動,在重量下壓的時候,適度讓骨盆後傾,使臀部肌肉拉長。昨天雖然上班累爆,但還是推 150 公斤八下四組,今天屁股跟大腿超酸。


網頁對照翻譯書籤工具

出處我找不到了(汗)總之是個神奇工具。它允許用戶透過點擊書籤啟動一段 JavaScript 腳本,快速複製網頁上的特定元素(如段落、列表項目、標題),並將複製的內容插入原文上面,然後,使用者可以使用瀏覽器的內建翻譯功能,會有原文不動的效果,從而實現對照翻譯的目的。

如何使用

  1. 將程式碼保存為書籤。
  2. 在需要翻譯的網頁上點擊書籤。
  3. 使用瀏覽器內建的翻譯功能對頁面進行翻譯。

程式碼重新整理(排版)

以下是重新排版後的程式碼,以提高可讀性:

javascript:(function() {
    for (var node of document.querySelectorAll('p, li, h1, h2, h3, h4')) {
        var copy = document.createElement(node.nodeName);
        copy.textContent = node.textContent;
        node.parentElement.insertBefore(copy, node.nextElementSibling);
        node.setAttribute('translate', 'no');
        node.setAttribute('class', 'notranslate');
    }
})();

這段程式碼會遍歷頁面上的段落、列表項目和標題元素,創建它們的複製版本,然後將這些複製版本插入到原始元素旁邊。同時,它會修改原始元素的屬性,以防止它們被翻譯,從而實現原文和譯文的並排顯示。

替代方案

有個「沈浸式翻譯」的 Chrome 插件也能達到類似的效果,免費用戶可以自訂 OpenAI 的 GPT 模型 API,或付費使用它提供的 DeepL 額度。它同時也提供了 Epub 及 PDF 的對照翻譯功能,比前述的書籤工具用途更大。免費用戶則可以通過它來薅 Google Translate 的羊毛。


2023-11-26 週記

科裡有一些醫師最近對 AI 不知道為什麼突然狂熱(因為醫院釋出指標?)。我是覺得我會寫一點程式,純粹是個人喜好。我完全不想要把我的技能變成科部的公共財。同時,我也強烈反對因為要推動 AI,把收住院醫師的主要標準從好相處、能學習,變成會寫程式。也有人在問我要不要考慮改做研究型醫師,不用應付那麼多臨床工作。這真的是不用想,我出來是要賺退休金的,才不要自廢武功,領少少的錢,然後疲於應付醫研部跟科內諸多大佬們的妄想。

我認為放射科要發展 AI 的方向應該是:

  • 跟上最新的應用(例如 prompt engineering)
  • 理解各個架構、模型的基本原理(例如 residual learning、transformer)
  • 了解目前各次專科的商用產品程度如何?能不能引入、落地?

有效加速主義 e/acc

OpenAI 執行長政治鬥爭風暴剛過一段落。有一個很有名的詞浮出叫「effective accelerationism」有效加速主義,指的是應該不計代價的、善用資本力量推動科技進步。這種思想的使用者認為技術的進步,相比制度變更,是引導生產形式改變的主要機制。快速推動技術進步,從而有機會解決舊科技難以處理的社會問題。減速主義者則認為這只會加速剝削。有網友評論:

只要技術人員沒有辦法意識到「管理」和「資本」的價值,他們就總會認爲自己在被「企業家」和「資本」剝削,而總想要發明一種新方法把管理者排除出生產體系。上次是讓無私的革命黨領導做管理。這次是讓 AI 做管理。


組建家庭小劇院

之前因為想在睡前可以躺平看一些輕鬆的影片,在比較幾台可以調整投影角度的投影機後,買了流明最高的 Samsung The Freestyle 投影機放在房間。經過半年的使用,覺得內建的系統運作十分緩慢(要在投影機跑簡化版的 Android TV 實在是太勉強了)。所以最後決定添購一台 Apple TV。

除此之外,臥室另有一顆放在當鬧鐘跟睡前音樂播放器的 HomePod Mini。上網看介紹說可以再買一個組合成立體聲,所以同時也再添購了另一顆。

設定

TV 的設定比較簡單,iPhone 靠近就能登入了。註冊進 Home 之後,其他家庭成員也能添加帳號到 TV 內。App 部分是共用,不過消息通知、來電等功能則視登入成員而定。HomePod Mini 則需要先註冊到同一個房間,更新到同樣的系統版本後,從 Home 中設定他們為立體聲。這部分我試了幾次才搞定。

使用

經由 AnyNet+(HDMI-CEC),投影機偵測到 TV 開機便會同時啟動,所以不再需要投影機的遙控器。音量部分我是設定 TV 直接連線到兩個 HomePod Mini。不過其實也可以加入投影機變成 2.1 聲道的效果。操作上真的是迅速很多,而且 TV 也支援 5G-wifi,連線速度很快。除了看電視、聽音樂外,目前也打算之後通過連線,玩主機上 Steam 串連過來的遊戲。


試玩 OpenAI 的 API

隨著 GPT-3.5-turbo-1106 模型的推出,使用 GPT 直接取代繁複的 NLP 工具變得越來越容易。最主要是現在可以通過設定,使模型回傳特定的 JSON。不過,模型本身還是常常做出超過指示的動作,例如自顧自的折疊結果,或只輸出一半。

以下是我最近在進行的一個項目的呼叫程式碼。

class Client:
    def __init__(self, model):
        self.client = openai.ChatCompletion.create()
          # Assuming openai is already imported and configured
        self.model = model

    def send_request(self, messages, response_format):
        completion = self.client.completions.create(
            model=self.model,
            messages=messages,
            response_format=response_format
        )
        return completion

    def parse_response(self, completion):
        return completion.choices[0].message.content

    def analyze_text(self, prompt, additional_questions):
        messages = [
            {
                "role": "system",
                "content": "You are a helpful assistant.",
            },
            {
                "role": "user",
                "content": f"{prompt}\n{additional_questions}",
            },
        ]
        completion = self.send_request(messages, {"type": "json_object"})
        return self.parse_response(completion)

通過額外的工具,可以設定出不同形式的 Client 做實驗,例如比較同一筆資料在不同的 prompt 下會有什麼變化,以及客製化額外的 prompt。環繞著我這個簡易的 framework 建構新的研究範式是十分有趣的事情;我也得看看網路上有沒有更多已經成熟的類似工具。


2023-10-29 週記

SSSS 系列的三個主題曲全曲我最喜歡 imperfect,但是 Union 的橋段(Bridge)最有張力。

A wish, A wish come true 夜の星に願いを 君とつなげた夢のUNION

火氣大

科內某個資深醫師某日一早打電話要求我中午列席某個科內會議(我不是委員),我直接拒絕了。要求列席是不會發會議通知?尊不尊重人?再說我也不在該院區。過幾日早上又打來,叫我中午有空過去,我直接說今天沒空,明天早上十一點可以撥出半小時給你。越想展現自己的權威?那我也會越來越不客氣,大家公事公辦。再說那麼老了還不懂尊重別人的工作表。要預約一個較長的談話(一小時左右)應該先傳個訊息或郵件預約時間吧。大家也好準備討論素材。

前幾個月,另一個科內資深醫師擅自在我的時段加超音波導引的切片、然後推給我做(說他不會)、做完之後又去跟家屬邀功(「讓你們插隊我很厲害吧」)。我後來放話,從今以後我一律不幫做,自己加的台自己想辦法。

半吊子

不懂 MRI 原理,就是個半吊子的放射科醫師唉。查 PDFF(proton density fat fraction) 跟 6 point gradient echo Dixon sequence 還有傳統的 T1/PD spin echo 的差別,很是混亂。


建構筆記網頁

尋思著建構一個能直接輸出筆記系統的網站,同時用來存放各種短抄及提供類似長青筆記的功能。我拿原本的部落格改造,不過需要一些額外設定:

  1. 修改同步腳本:主體是單向的 Rsync。本地資料夾不含有 _site。所以每次同步完都會刪除目的地(我的小主機)內的資料夾來逼迫 Jekyll 重新渲染。
  2. Jekyll 調整:
    1. 安裝 relative link 模組
    2. 啟用模組本體及 collections(參考 README 最下方)
    3. 修改 _config.yaml 內的 perm-link 為 /:year-:month-:day-:title

比較麻煩的是在寫筆記時,需要把 wiki-like 的連結變成 markdown 格式。不過這步驟很容易。弄好之後,部落格本文內可以用 markdown link 互聯。筆記頁面呈現到 Jekyll 上的時候會自動把 .md 副檔名變成 .html,於是就能實現互聯式的筆記效果了。

目前看起來會像這樣 筆記部落格 (yfwu.pro)。首頁是流水帳,不過各自的筆記頁面會有可以跳來跳去的效果。我有在想大改主部落格的 Jekyll 的 _config.yaml 讓它也有一樣的效果,但是擔心這樣會導致已經在社群軟體分享的一堆網頁連結失效。最好還是別亂動吧。


2023-09-24 週記

這週四開婦癌會,漏看了一個病人的外片,臨時要報告分期。影像越看越奇怪,趕快請一起開會學姊立刻重看,結果發現這個病人的其實只有 T1a,被我講成 T3,真的是糟糕透頂,覺得很丟臉。下次不要衝動看著某組影像就開講,大方承認自己忘了看需要一分鐘很快看一下。

Open Interpreter

最近在玩 Open Interpreter,真的是很棒的一個工具。通過 GPT-4 的 API,在本地機器上寫程式。相比於 ChatGPT 本身提供的 Advanced Data Analysis,可以有效利用本機端的強大硬體(例如我的 Nvidia RTX 4090 顯示卡及記憶體),也可以持久化(只要我對話不關掉,就能隨時繼續)。搭配 Tmux 一類的軟體,隨時可以從平板繼續研究。之後應該再來寫篇文章描述如何善用此類軟體。

按摩要選對師傅

給那種自以為按的很深的按摩師傅按,隔天更痠痛。實際上只是按傷肌肉而已呀。我覺得油壓那種方式(類似滾筒)的舒緩效果比指壓好。不過若有激痛點,那指壓還是略勝一籌。總的來說,有個能配合的按摩師比較重要。我現在都指定同一個我覺得按的夠放鬆、但是又不會痠痛的人按。這次是他休假,我想說換一個看看,結果翻車啦。


2023-09-18 週記

最近在同時玩薩爾達王國之淚、絕命異次元、博德之門。覺得絕命異次元的遊戲過程壓力很大,雖然很刺激但沒有很舒適,實在是不適合疲累了一天、下班後還要催促腎上腺素。今年還剩下三個月,目前每個月大約只能再多擠出 20 ~30 小時玩遊戲。計畫玩完薩爾達跟 2077 的 DLC。博德之門用 SteamDeck 玩還算舒適,不過 SteamDeck 真不適合休息的時候玩,螢幕太小了,需要聚精會神。

Shortcuts 的妙用

Apple Music 每次啟動都要聯網去載入他那些推薦歌單跟新專輯,但我的目標是打開我要的、已經下載的歌單。如果網路不順就得等,很煩。現在換用 shortcut 直接要求隨機播放我的最愛歌單。我覺得 Shortcuts 真是蘋果生態系一個最基本也最該掌握的自動化工具。更進階的像 Automator 及 Keyboard Maestro 則就見仁見智。


參加新思維論文寫作工作坊之心得

耳聞新思維久矣,早些年處在一個有點鄙夷的狀態。直到自己真的成了 young V (年輕主治醫師),開始有臨床、學術兩方夾擊的壓力,才發現事情沒有想的那麽簡單。工作忙碌之餘要如何做好穩定的學術輸出,同時兼顧一部分的生活品質其實是蠻困難的事情。看到 08-19 這個週末有一堂醫學寫作與論文工作坊,遂報名參加。簡單寫下我對課程的想法:

  1. 論文每段怎麼寫:
    1. 拆解成四大段十六小段,分別介紹了各段的成份
    2. 優點:什麼該寫、什麼不該寫有帶過
    3. 缺點:似乎是針對好上手的 cohort 為主。另外關於什麼該寫的部分是用中文介紹,著重在邏輯,但其實我想看更多的例子。
  2. 統計圖表與文稿排版
    1. 介紹了圖表、草稿該注意的地方
    2. 優點:講的很清楚;後續做出來的圖也確實十分美觀
    3. 疑惑:講者說目前的編輯已經比較沒要求按照傳統排版規範(如兩倍行高、圖片額外放文件),但似乎還是因出版社而異?
  3. 統計基礎課及圖表實作
    1. 簡潔有力的介紹了基本的檢定選擇;資料量大需要先做常態分佈檢定,然後若允許就做基於常態分佈的假說檢定。
    2. 優點:分支樹式的選擇法
    3. 缺點:內容略為簡陋,不過可能時間上也很難涵蓋進階主題(例如 ROC curve、存活分析)
  4. 製圖手作課:MedCalc 確實好用,製圖策略跟教學也很清晰。不過因為我本來就會用 R 畫圖了,我覺得相對沒那麽驚艷。不過畢竟寫程式很麻煩,有在考慮入手一套永久授權的 MedCalc。
  5. 期刊選擇策略
    1. 主要集中在介紹 mega journal 和 predatory journal
    2. 優點:介紹了幾種期刊選擇工具(例如 Jane Journal Estimator
  6. 研究計畫申請及撰寫策略
    1. 我自己有寫過計畫、也被打過槍。科裡有很會寫計畫的前輩有跟我私下分享過,所以我覺得這堂收穫就一般般。
    2. 優點:知道新進人員有加分效果(五年內)。應該趕緊明年寫個計畫出去累積 reputation 跟履歷項目。
  7. 時間安排及各種問答:
    1. 蔡校長的問答時間,很犀利直白,也點出了臨床醫師的學術生涯是一種苦行。其實我也知道帶狀、大塊時間好重要,但有時候下班真的只想休息唉…
    2. 提到了如何跟大師們合作,很有感。目前有跟著阿吉醫師做研究,進度都是按天計算的。沒有什麼兩週、三週。

整體來說,我自己沒有尋找指導老師的困擾。同時我覺得在我想聽的論文寫作、如何敲定假說並驗證的細節部分著墨較少,而花了不少時間(三小時)讓大家練習製圖(雖然製圖本身有趣,而且我做完還是有細節忽略,汗)。總結來說,有收穫、但沒有想像中多。如果價格能再打個七折的話,我會推薦仍在自行摸索的 PGY / junior R 去的。


Obsidian Canvas 及 Properties

目前已經拋棄之前的論文工具鏈,改用 Zotero 做學術文獻的整理,可參考測試 Zotero 一文。我個人認為,論文筆記最好跟隨在原文旁。然而又要能方便搜尋。怎麼辦呢?這時候就要使用筆記匯入的功能了。一樣,需要 BBT 和 Obsidian Zotero Integration 模組。一些需要的前置作業如下:

  • 設定 BBT 中的 citation key。原本的格式是「姓氏 + 標題前三字 + 年份」可增加唯一度,但是看了礙眼。
  • 原本的缺點是搜尋功能只能找檔名,但是 citation key 其實很難搜尋。錄入論文全名又十分冗長。還好最近 Obsidian 開通了 properties 功能,可用 aliases 來記錄論文名稱,而 aliases 中的名稱也可通過搜尋來創造雙向連結。
  • 將論文筆記通過 import 功能同步進來。目前唯一的缺點是沒辦法從 Obsidian 跳到 Zotero 的對應論文本體。

我的論文閱讀及與「知識網」Obsidian Canvas 的串連過程如下:

  • 閱讀論文,在 Zotero 中做摘要及筆記
    • 記得在筆記中設置 YAML 格式的 aliaese
  • 打開要添加論文的 Canvas
    • 使用 import 功能匯入對應論文
    • 在 Canvas 頁面通過搜尋功能即可添加論文筆記。
  • 如果需要額外整理論文內容當作卡片,可以從 Canvas 中複製貼上

Obsidian Canvas

在 Heptabase 掀起一股筆記架構視覺化的潮流後,Obsidian 那中看不中用的知識網路功能被深切的檢討。於是在正式版發布沒多久,Obsidian 就複製出了接近全功能的 Obsidian Canvas。由於前一陣子 Heptabase 有宣佈了月費鎖定方案,所以我就訂購了一個月試用。經過我一個功能一個功能的比對,Canvas 還是有一部分的缺點跟差異,列舉如下:

  • 複製部分筆記成為新卡片這個功能在 Heptabase 中做的比 Obsidian 直觀很多。在 Obsidian 中,會需要 refactor 這個模組,設定好後,可以獲得一套快捷鍵,並要求以選取段落的首行作為檔名。
  • Obsidian canvas 無法真正地讓兩則筆記關聯起來,所以沒有辦法像 heptabase 那樣回溯筆記創建的場景。
  • 操作體驗上,Heptabase 相對滑順。

最多 hepta-cult 詬病的就是 Obsidian 中所有筆記皆是檔案的作法,會讓創建卡片相對麻煩(需要先設計檔名)。Obsidian 的解方除了剛剛提到的 refactor 外,還可以先寫成卡片並調整大小容納長文,待穩定後,可一鍵轉換成 markdown 筆記。到時候再來指定檔名,如此一來比較不會干擾整體性的思考。

Obsidian Properties

Properties 是以前的 YAML front matter 的大進化版。在不變動文字檔的情形下提供了很多功能:

  • 內建的 aliases、tags 支援:
    • 位在 aliases 的內容可以當作檔名搜尋 - 所以我才能維持簡潔的 citation key 檔名同時能快速搜尋我要的文件
    • 位在 tags 內的內容會被視為同本文中的 tag
  • 支援下來式選單:可以跨文件的汲取多文件 front matter 內的內容,不擔心搞混,大幅強化了 dataview 的威力
  • 支援雙向連結:[[]] 現在可以視為文件的一部分

在這個設計下,front matter 的玩法豐富了很多,也規避了命名重複的問題。關於雙向連結的部分,目前還在摸索。


2023-08-07 週記

報告依然持續往上增長,雖然說原本的工作量(去年十二月規劃的)大概我每週不需要特別加班即可完成,但是只要有人請假就得額外開工。加上每單週六的額外支援,似乎沒有看到盡頭的一天。與 clerk、intern、PGY、resident 不同的是,當前生活模式其預設的終點是退休或轉職。如果未來十年都是這樣的日子,確實是令人考慮要去輕鬆一點的小醫院呢…但是我又捨不得大醫院做酷玩意的機會。