開始動手實作pomodoro side project
最近終於開始進行消耗我長期以來一直累積要實作的 side porjects,會加s是因爲有很多projects想做,但是一直pending沒做:P 之前的zettelkasten card and blog static website generator是其中一個,這次要做的是偏向時間管理的工具,其實這種pomodoro 的app有很多,但是基本上都是要錢才能用到大部分功能,免費的功能幾乎只是一個計時器的感覺,當然有些免費的app功能提供不少,但是就是UI或是UX部分用的不是順手,目前免費功能大概覺得還不錯的是這個 https://pomofocus.io/ ,不過要更進階的功能就要付費啦~ 因此就萌生想要開始做一個給自己用的念頭。
前言
pomodoro 這個方法我其實已經用了大概兩年有了吧,但是說實在的我並沒有鑽研到多麼深的境界,起初我是因爲在閱讀書本間歇高效的番茄工作法從中感受到,或許這個可以拿來幫助我專注跟減少拖延症! 所以就抱著嘗試的心態來實驗一下。就目前而言我個人最有感的部分是,pomodoro顯然變成一個專注模式的開關,每當我按下 start 就代表我接下來要認真了,儘量不讓任何事物打擾,內部干擾其實就是自己的內心問題,比較麻煩的是外部干擾的問題。
內部干擾,比如有些人可能就是做事3分鐘熱度,一開始很認真,但是過沒多久心就飄了,雖然他目前可能還在做著事情,但是心裡已經開始想東想西,注意力不集中,以爲自己可以邊動手現在的事情,心裡則是預想其他事情怎麼處理。其實以前我有這樣過,最後很累,而且不一定事情會處理得漂亮,人還是不適合多工啊~
外部干擾,在公司最明顯,太容易被敲訊息,或是有人找上你,這真的只能看你怎麼跟大家做協調了,還有就是不要讓pomodoro session 太長(比如25分鐘),你要在25分鐘內,完全不要有人找你,好像蠻難的? 有可能看職位還有公司工作style啦,總之這個只能儘量。
不過身邊有在用 pomodoro 的人幾乎是沒有,所以比較難做一些意見交換,不確定大家的使用方式是如何,不過我既然初步是想要做一個給自己用順手的,就先按照自己的意思來吧。
構想
這次想要找一些實作的靈感還真是不太好找,除了數量不多(跟其他作品比),大家做的 wireframe 都滿像的,可以參考的範本不多,所以其實這次花在找靈感的時間比之前做部落格還要多更多,大概兩個禮拜多,我心想有點卡太久了,不能夠被 完成 裡面提到的完美主義給拖延到,我還是先從部分想要的跟比較確定開始做做看,試個手感!
老樣子我這邊依然在 figma 上面先記錄一下想法還有簡陋的wireframe
這次的技術方面選擇是打算用 flutter ,關於 flutter 介紹可以去官網 https://flutter.dev/ 看看,會想用這個除了私心想學一下之外,主要是他可以支援編譯你的程式在 windows、macos、linux桌面端之外,連web也可以,甚至是mobile(android、ios),不過或多或少我猜各平臺還是需要tuning啦,但是就當作一個嘗試這樣。 不過我也不是最近才看到這個語言,其實前兩年左右了吧,就有看到了,我想說過了這麼久了,照理說應該相對成熟了不少才對,我看連官方都放上不少showcase了,所以我也多少安心來使用,要不然在這個實作side project 的路上,搞不好光是踩地雷我就飽了,還實作咧 lol
初步規劃大概是以這些爲主軸,細節就之後且戰且走~
Customizable Pomodoro session and break intervals Optional subtle animations and sound effects for enhanced user experience
Smart Reminders
Timely break notifications to promote productivity
Advanced Pomodoro Session Management:
Seamless transition from Pomodoro to rest session
Task Management:
Organize tasks with projects and tags for better prioritization
Insights and Analytics:
Comprehensive report and analytics system to track progress
Timely Notifications:
Receive alerts before the end of each Pomodoro session
Automated Daily Time Blocking:
Generate a daily schedule based on completed Pomodoro sessions"
想法和功能有個大概後,再來就是一些可能需要的 library 調研,其實flutter目前體感上,內建功能就滿足的,像是 state management 其實原生的 provider跟consumer(https://pub.dev/documentation/provider/latest/provider/Consumer-class.html) 就能夠應付大部分狀況,但是我還是用了一個library,叫做 riverpod (https://riverpod.dev/), 老實講目前沒用得很順手,因爲他近期的更新加了一些不兼容的寫法,而且寫法上改變很大,最主要是連他的文檔,關於最新的語法要怎麼用都講的很少,所以我覺得這個不適合剛入門flutter的人用,算是我自討苦吃的一個選擇 lol 另外其實這類的 state management tool 都會搭配 immutability 的特性,所以另外用了 freezed(https://pub.dev/packages/freezed) 這個library,最後推播的套件我是選了https://pub.dev/packages/flutter_local_notifications , 主核心大概就這些,剩下的就看到時候要多什麼feature再多加就行了!
實作過程
我對於flutter其實也是第一次碰,但是最近AI tool實在是進步很快,相信如果你是claude或chatgpt付費用戶,其實要實作應該是滿容易的,甚至是截圖叫它實作畫面大概都有87%像,不過對於我這個免費仔,我都只在必要的時候,用它們的免費額度,主要我是用一些 open source AI model 來幫助我寫code 。不得不說加上AI的幫助,其實寫得很順,尤其是對於一開始常常不知道flutter到底有什麼 widget 可以用在當前場景的時候,問AI通常都可以得到一個不錯的答案,讓我不禁感嘆,如果是以前的時候,這時候都還在努力google or stackoverflow,或是大力啃官方文檔,都不知道消耗多少時間去了! 話雖如此目前AI給的code有不少部分還是得仰賴你自己改(可能是我不是用付費有差吧,很多朋友都說幾乎不用改就可以直接運行),但是真的幫你省了不少心力,有很大部分的感覺是好像多了一個人跟你一起coding的fu跟加上一個超強大的文檔搜尋利器,真心覺得傳統google search會迎來很大的挑戰。
關於AI寫code,等我多累積體驗後再來寫blog表達一下感想,我只能說未來AI取代人力寫code不是不可預期的,只是當前無法,但是你不知道它會進步的多快~
下面這張圖是我目前實作的樣子,其實大概有50%都是AI寫出來的 lol
大致上功能有簡易任務管理跟計時還有自動切換 work / break session,其餘功能會一步一步加上去,當前畫面也是先以desktop爲主,畢竟目前使用上,還是用電腦的時候,才會用到 pomodoro,好像不太有什麼需求是需要隨時使用,但是之後還是會做 responsive 給 mobile 平臺用。
flutter目前體驗還行,主要是麻煩在不知道有什麼widgets可用,還有就是排版不像寫web那樣好用,應該也是因爲我不熟悉的關係? 另外我有發現flutter的library 似乎成熟度沒有很高,不像其他語言那樣使用上不太有問題,flutter的反而我有時候很常需要看github上面issue,有遇到一些而且目前也都是workaround的解法! 對於這個語言的未來其實我也不太確定 lol 而且之前看到一則訊息 https://techcrunch.com/2024/05/01/google-lays-off-staff-from-flutter-dart-python-weeks-before-its-developer-conference/, 連google自己都拿掉一些開發的人了,這雖然不是對flutter宣告死刑,但是也大概透露出一些味道了,加上看一些論壇都在問 flutter的職缺多嗎? 之類的問題。而且 react native,也有人開始幫它增加其他平臺的支援了(https://reactnative.dev/docs/out-of-tree-platforms) ,所以競爭激烈啊。。
總之,我應該會先把flutter當作一個值得玩味的語言工具吧。
心得
現在我用著自己寫的pomodoro app,起碼有初步滿足我個人私心的體驗:p 目前已經取代掉我之前使用的pomofocus了,而且還加了一些他原本要付費的功能,之後打算加一些其他 report 的功能,現在只有簡易的 time blocking
看看之後,能不能將這個使用體驗昇華和提升pomodoro的使用技巧,如同 心流 flow 提到的培養足夠的技能來提升心流體驗,如果我的使用方式一直停留在兩年前,那麼或許我對於這套方式的認知大概就停滯不前了吧? 但是也不是說這樣不對,或許把 pomodoro 當作一個認真模式的觸發器,其實就已經是一個很大功用了,就讓當時的我足夠滿足了。
最近只是來研究跟實驗看看可能性還有動手實現各個side project~
未來
沒意外就是繼續實作功能,其實還有很多可以做跟調整的功能,光是要跨平臺就要很多功夫了,只是目前需要再吸收融會貫通pomodoro的精神,還有自己使用的方式再加入有打動我的功能,之後也會整理一下flutter心得。