Matthew LUI

Matthew LUI

Tech, Education, Photography, Design, Thoughts

📍 Hong Kong
2021 所謂IT這行業的一二
culture

2021 所謂IT這行業的一二

在這段不長不短的打工生涯, 想不到也夠我見識得多形形式式的Developer, 雖算不上是人生百態, 但林林總總, 卻也夠總結出些一二。 註* 本文不敢/亦非一些什麼教你力爭上游的廢話, 只乃在這行業浮沈所見之表象的一些廢話感言 薪金的虛高先容我先下個判斷, 近幾年的IT界實在是虛。這一方面是薪金的虛高, 二是指業務的虛浮。 近年這行的薪金漲幅是有目共睹,對於業者來說實可喜可賀。實際所得上, 起碼叫做和在美國有得一拼, 就算仍趕不上, 也叫看到個希望。 但其中也有些隱憂教我不得掉以輕心, 首當其衝便是業者的自覺。 漫天叫價成了風氣, 但其背後支撐這叫價的能力非但沒有保證, 更什往往僱員僱主都沒能力察覺。 說起來香港真不愧為金融中心, 儘管到了科技勞工市場也是炒炒作作。梗係啦,做開炒作的, 都不太理解實業的定價標準, 所以在人材那只好循老方法, 用你上一份人工來衡量你的價值, 除此之外似沒有辦法了。這不知造成了多少業界悲劇, 也加速了這虛高的進程。當然,這進程亦終將帶來沈淪。 以一個人的過往人工去判定你愿花多少錢用他, 這過程等於把風險做槓桿, 你可能在第二次槓桿時接了平貨, 也可能接了火棒, 想快快地找個下家出貨。雖則在一些實業上有豐厚收獲的老公司在招聘管理層時尚且能不論產出也養得好這幫人, 且這火勢也未必足以影響太多該公司的營運, 可當公司慢慢將業務重心都轉移到IT, 不料接著根火棒, 那星星之火必將... 但僱主只懂以薪金衡量能力也罷, 僱員也真以為其支的薪真又反映了其能力才是對整個行業最可怕的猛毒。而且雪球滾了出去, 便只能越滾越大,

學習

致家長舊函-關於教育

回首,敞 隨同學學習數年,理念仍可笑地單一-學習學習所需的一切。具體地說,是學習如何去學習。獨立思考在這裡早已不是命題,不過是實踐已久的信條。努力讓他們知道犯錯不可怕,也不去逃避自己犯了錯;知道「責罵」可能只是為加深其對錯誤的記憶的一種「表演」;知道認錯不是最重要,重要的是如何去改變。因為敞 深信,學會怎樣面對或者說是利用錯誤,是進步的根源。在這裡,無聊至如何使他們意識到成績這些事並不歸功於補習社而是其自身的努力也會被放大,獨自有一套嚴密的理論及說辭。因為,我們認為付出與回報是在體會下才有可能理解,為其將來的付出埋下伏筆。這裡的所謂教育,早不是一個高高在上的大白象,只是身邊的一草一木一言一行。    回到正題,現在的「教育」本身是矛盾的。矛盾在於其實行及目的是相反的。因為與知識相應的學習,理應是受需求所驅動的。可惜是當今的教育卻沒有為此努力,更像總是自顧自地宣揚以為二十年後可有可無的需求而強迫你去學習。 可就算對於一個大人,你要為將來老去而積谷防饑這件事,是在你幾歲,經受多少的歷練及思考後才明白,是下了多少決心後才付諸實行? 孩童接受教育所需的覺悟可能不比於此,卻相去不遠。人生來更易只辨識自己周邊的事物。口渴才會想起水;經歷過缺水,才懂準備好多一天的水;

德智體群美

學習是一種成長的過程。『德智體群美』五育是學生成長的五大要點。 但在現今教學制度下,除了『智』外,其他四育似是被忽視。無他,在當下社會生存『智』是首要條件。說白了,『智』高者更懂得怎利用『資源』,或保障自己不作『單被利用』的『資源』。  既然說到『利用』這種比較灰色的字詞,我們不免聯想到『德』。『德』似乎是完整抽離於生存的觀念。一個人不論腰纏萬貫還是衣衫襤褸,他的『德行』卻不必成正比。『德』是約束『智』的唯一利器,他使『智』者不會沉淪在『智』海。『德』是抽離於生存的價值觀,相較『智』而言是一種『前意識』的項。具體來說如果『智』是一輛車的引擎,

難眠夜

昨夜聞友未能眠 洗耳傾聽坐床前 說是三十未成家 癡情佳人未愿嫁 樓房重擔不能負 舊人早作他人婦 舉目不見有明月 窗外六月紛飛雪 十八以來望而立 而立之年待不惑 人生不過爾爾此 生死只是過來客 富貴早非吾所為 只望有家得能歸 不過一方三寸土 卻是遙遙不可期 傾盡多年之所積 仍付不起那首期 佳人絕非輕別離 唯吾力薄難比翼 話盡音聲凝如冰 悲痛之情無處傾 終於淚落如堤缺 洶湧激憤難自制 此情何人會不懂 你我皆是同道人 行行即即復行行 不見光明死如生 昨夜尚是有期許 今日夢碎不敢兌 不見苦盡甘會來 甘甜早在人口中 只是別人兩把口 富貴只落他人手 話盡無言不敢對 靜默無聲蓋被睡

Web 開發入門 之1 用Text Edit寫一頁能在Browser 打開的 html

不日更新 到最最最後,用戶接觸的是Browser(你所看見的網頁),Browser的視覺傳達是受html/css約束,而一切的開發,便是怎樣組織及更新html/css的內容。 記著這句說話,Web的(目前)本質,是讓Browser畫出你的內容。那麼如何指揮Browser繪畫呢?html HTML是一種所謂Markup Language,所以老生常談的論調,在嚴格意義,用HTML並不是編程。但請不要低估了認識HTML的重要程度,因為到最後Bowser能按你所想地繪畫出網頁,都要經過HTML。 什麼是HTML 本質上,HTML是個純文字檔(純粹儲存文字的文件),一種按特定格式編排的文檔。 記得中文作文段首要空兩格、句終要寫句號、開引號關引號啊這些規則嗎?HTML大概便是另一套作格式 。當然為了讓你的網頁更具風格,HTML加了很多獨特的規則,但從本質上來說也不過如此。 僅記:寫網頁,只是用特別的格式,指揮Browser作畫。 HTML 速速速成 HTML最最重要的一條規則便是<XXX>和</XXX>

Web 開發入門之0

感言 + 前言我想我認同JS Machine這說法。如果你叫我推介一個網頁給初學者看看,我可能要弄個爬蟲看看有哪個難度適中的網站有讓人類學習到的html及JS源碼。這不禁讓我慶幸,自己是成長在那個仍然各家打開大門的年代 這個年代(現年2019)要從0開始入門Web開發,可說是十分微妙。老套也要講句,這是最壞的年代,也是最好的年代,但終究這是你仍有生命的年代 向好方面說,現在有很多現代工具及基礎設施助你構建一個美倫美喚的網站(應用), 同時,這也意味著你現在需要掌握更好的知識才能夠我著「入門」這兩個字。 從前最歡迎初學者的web開發,也開始變得冷漠,學習曲線也變得越來越拒人千里。但是,如果你挺得過這叫人沮喪的階段,迎來的,會是更錦繡的前程。 那究竟我要學什麼?(序)你的首要任務,是改變對Browser的觀念。你要忘記他是一個「瀏覽網頁的工具」這一狹隘的想法,取而代之,你要認為他是一個「繪畫內容的畫布」。這一細微意識形態上的改變,會帶給你廣闊的思維空間,而只有這樣,你的腦袋才能容下接下來這知識汪洋。 接下來讓先看看一個基本Frontend(前端/網頁/網頁應用/單頁應用 etc⋯⋯)開發者的基礎工具分類。

Xcode autocomplete真慢!高效Swift類型配對Code Style

當你的project慢慢變大,你必定抱怨過Xcode慢慢變得慢慢起來。 有沒有想過那是因為Xcode開始開始看不懂你寫的Code呢? 在此先「溫馨提示」,「看不懂」是依賴於臨界點,當你突破和沒突破的那一線之間,所有問題才會一次爆發。 好了,正正經經說內容。 Swift 是一門強類型(Strong typing)的language。而何謂強類型呢?便是萬物皆有分類 ,不一定是Class,可以是Structure、Enum、Tuple、Function、Protocol⋯⋯ 而Swift的type哪裡也在,但你有很多時候也沒多看見它。那是因為Swift有強大的類型推斷系統,讓你寫Strong typing的時候也能像寫Weak typing一般舒適自在有如在海邊緩步,迎著海風,咳咳⋯⋯ 回到正題,Type Casting是Swift的利劍,可是CPU這身份卻未必跟得上大招連連的對陣。如果一個程式(其實是Module,後述)之內有過多(或複雜)的類型及推斷,LLVM便很容易會飛上天去。 你可能會問,有這麼複雜嗎?如果你不介意長文,請看: http://www.cocoawithlove.

快說SwiftUI對iOS開發者影響
ios

快說SwiftUI對iOS開發者影響

Apple 在這介WWDC對Cocoa Cocoa Touch 的Developer按了一次Reset,最起碼UI層面上。 不少身邊友人看了簡介,立即中年危機上身,開始吐糟門檻又變低了一大半啊,新人湧現啊,存在感決失啊如此這般。 但是真的便是這樣嗎? 其實同時是,亦都不是。 首先,對於開了簡介便下此判斷的人,我想說聲對不起,對你來說,可能真便如此。或許那麼簡單便下判斷,便是你那中年危機的成因。你需要的,不是讓Apple收回成命,而是重新審視這些年來,自己學會了什麼。不是說你一定便不求上進,只是可能在軟件開發的領域裡,你嚴重偏科了。 讓我們認真聊聊吧。 軟件領域,是進化得最快的一個行業。就算只談UI,在SwiftUI出現之前,UI開發早經歷過無數次洗牌。 從Assembly到高級語言,從高級語言直接控制vBuffer到低級抽象庫,到低級抽象庫到高級抽象庫⋯⋯即使不談操作系統間的切換,對比起來SwiftUI的進化與之相較,真的屁也不是。 SwiftUI真的很簡單易用方便,但最主要的,只是其一等公民的身分。在它出現之前,要寫出這種風格不可能嗎?絕對不會。聲明式UI構建在很多不同平台早已風行,即使iOS,在ObjectiveC年代Facebook開源的ComponentKit 及AsyncDisplayKit便開始為Flex

programming

關於開四停三的「大」數據迷思

新年回廣州探親,在親友車上,聽其誇耀現在廣州市的數據處理能力及規模的厲害。cctv滿街,最少一星期的視頻數據才能支撐得起那開四停三的厲政,這般那般。 當然了,我對中國挖掘個人數據的能力,是不會致疑的。要說當今世界對圖像的深度學習領域,中國必為前列。而其背後的主要推動,當然是監控的需求。 在這番共聚天輪的家庭閒聊之中,最叫我好奇的,是從技術角度能出發及解釋得了的一個問號 - 開四停三的數據規範。 首先,視頻數據是不會直接入庫的。視頻可以儲存,數據可以接某視頻或其分段,但沒有表是直接一個BLOB把視頻放進去的(嗯⋯⋯是沒有的🙈)。 想當然,分析也不會直接依賴原始數據,特別是視頻數據。 數據入庫在視頻數據分析前,首先是feature extraction,這裡可以走過不少的pre processing pipeline,而對於非即時處理/管理的數據,會在提取完feature後,把feature入庫。走到這一步,可能只剩下車牌、地點、時間、型號⋯⋯此類的數據。而視頻可以作他用作冷數據分別保存。 數據分析在進行數據分析時,當然不會在這大母體裡進行了。假如成千上萬的子程式同時存取主表,先不論其性能如何,但只能算是種浪費。

你習慣了快,漸漸忘記怎樣慢
culture

你習慣了快,漸漸忘記怎樣慢

放心,這裡不會很溫吞地說的人生大道理,也稱不上什麼勸戒,只想分享一下一些從真實的觀察,整納出來的點點現象。 真的,我只怕當世人都習慣了快,便再沒有人懂怎樣慢。 這不懂,不是不明白的不懂,是不知怎做的不懂。 但為什麼大家仍那麼樂此不疲? 我想很大部分原因是大家都認為懂了跑,難道不懂怎去走?這比喻道理是正確,但其本身錯了⋯⋯ 如果說從速度出發,跑確是走的進階,但因其本身便是以快作本位的一個比較,那當然能順理成章的得出其結論。 那麼在一個本位不是快,速度的事物上引用這比喻呢?我想大家也很清楚,這是不恰當的。 在資源是恆定的世界,每一個決定都是對別的決定的妥協,所以在你快我也快的情況下,大家便很容易默認一些缺失是快的成本被放棄(很不中文,請見諒,再改善)。 而這些一個個被放棄的,理所當然是來自慢(別浪費時間討論個體別整體)。普遍的快,不是因爲你鉅細無遺地做好每件事仍很快,而是放棄做好每一步換來的快。那些被你放棄的,別說當你做起上來有多快,我更怕有一天你什至忘了有這一步(更何況只是大單位意義上的一步)。 啊。 別把tech debt拿出來說事,那是另一個層面的課題,大家只是個別時間點的顯現之處有所類近,背後是徹底不同的兩個教訓😅 別告訴我你為世所迫,你只是選擇了走最舒服的那一步。趕Deadline之前你有多努力地做好計劃,

culture

開發者該如何學習的角度看別人產品

作為一個開放者,我們該怎樣去看別人的產品? 要答這一個問題,便只能從所有軟件產品的根源說起⋯⋯ 電腦程式的本質,便是對電子活動的一層一層抽象。我們從電流的開合,數學的模擬,語言的整合,直到圖形系統,無一不是在更高的位面對低位面的一次抽象。 但即使是每天都進行著抽象活動的我們,也未必會時刻保持抽象的角度看待別人的產品。因為我們太習慣於具象的世界了。 上一次我看見的開發者集體跳崖事件,便是material design出現時。 抽象是一層一層地向上的,我們繼續談Material Design。 遊戲開始,請簡短說出什麼是Material Design。 3 2 1 ⋯⋯ 好了,對於你來說什麼是Material Design呢? 是卡片、圓角?陰影、過渡?還是飽和度/灰度展現層次? 以上的講法都很難說正確。我舉個例。本人在11年左右的作品已貫通整個App地大量使用圓角、陰影、卡片、灰度層次及少許仿冒物理的過渡,但他們便是Material Design嗎?但凡有以上原素的,便應該叫做Material Design嗎?(我想這也是很多人的疑問🤔️) 當然不是! Material Design是依循物理材質的一種抽象方式。