2017年9月30日 星期六

[What's New] Fennec Android Engineering

Hi All
I want to update the recent changes at Firefox for Android Engineering side :

Done
1. Leanplum push notification: This will allow us to interact with users when they are not running our app. The registration happens after switchboard init. Handling push is in GcmMessageListenerService (Shared with Sync).  

Photon is our brand new visual redesign for enhancing perceived performance. You should easy see the UI change and feel Fennec has been faster. But there are some follow-up issues we might need to take care about:

1. There are some color codes use different alpha values(different transparency) to simulate different states(pressed, enabled, disabled, etc). We should consider using different colors, instead of changing alpha value to reduce overdraw issues.

2. Because of the project descoping, we don't have enough resources to write Robocop tests instead highly depend on SoftVision's manual tests. To keep engineers/contributors having faith refactoring without afraid of causing regression, we should supplement related UI tests ASAP.


In Progress:
1. Limit Intent Filter: Adopt the same scheme for BrowserApp and LauncherActiivty.
2. Leanplum Deep Link security: Add User Id for each Leanplum Deep Links 
3. Custom Tab front end support: Mainly working on Context Menu
4. PWA front end support: Page Action when the page has proper manifest

Overall Priority
Product Managers (Joe and Andreas) have agreed on engineering priority like below. We'll put resource according to the list and add some engineering work in the middle if required.(e.g.Gradle build support) :
  1. Mobile Photon (including Onboarding / Tablet / RTL support) (57)
  2. Activity Stream (57) - (ownership on Activity Team)
  3. Web Extensions (57) - (ownership on Add-ons Team)
  4. LeanPlum (Push notification) (57/58)
  5. PWA using GeckoView (57/58)
  6. Custom Tabs using GeckoView (57/58)
  7. Gradle build system (58/59)
  8. Android O updates & support (dependency on Gradle build / new SDK)
  9. Front-end refactoring planning for GeckoView
  10. Work with marketing on ad blocker experiment in Taiwan
  11. LeanPlum Banners
  12. LeanPlum Onboarding
  13. LeanPlum more triggers / events
  14. Bookmark management (dependency on Sync team)
  15. DLC on Android (w/ l10n team) (e.g., 1353334)

2017年6月11日 星期日

小孩長得好快 紀錄一下週末跟小孩的對話


今年四歲 跟小孩對話一整天有好多樂趣
 
前天晚上
爸爸今天晚上不用做家事,就可以陪我喝奶睡覺了
 

昨天早上
小孩看我早上起來不說話在收東西 問我:爸爸你有在生氣嗎
我說有啊  東西到處都是又都不能丟,每張圖畫紙你都只畫一半 又不收好
隔了一陣子  我拿起另外一張紙問他  那這個可以丟嗎
他竟然還記得剛剛的對話  :可以啊  那丟了以後你心情會變好嗎
唉...


昨天下午
小孩對我說:爸爸 請問這個迷宮小熊是要走有頻果的路嗎? 我聽了嚇一跳 你怎麼知道,你看得懂上面的字嗎? 他回答:因為小熊手上拿著蘋果啊. 沒想到他竟然會看得懂這個邏輯,就算不是非語言記號,也是很開心他能夠自己去分析體會。這就是做父母的喜悅吧

昨天傍晚
爸爸 如果我今天玩具也有收好 你就可以立刻去買軌道嗎
爸爸 如果我現在馬上立刻把玩具收起來  你會打電話給玩具店老闆說我們要買一個軌道 這樣嗎
爸爸 如果要買平交道,是不是今天也要收玩具,明天也要收玩具,後天也要收玩具,要好多天都要收玩具才能買?因為平交道比較貴所以要比較多天
爸爸   我也想要工作 你可以教我寫程式嗎
 ----XDDDD


昨天晚上
爸爸,請問五個十塊可以買什麼東西呢,
我說:可以買咖啡
爸爸,那我們下次去美國可以拿著這個存錢筒一起去美國喝STARBUCKS好嗎
我說:STARBUCKS的咖非比較貴,五十塊的只能喝7-11的
爸爸,那你可以給我比較大的硬幣嗎。
我說,你可以去找媽媽要
拿到媽媽給的5個50元硬幣以後投入存錢筒後,他又問我
爸爸,你第一個給我的錢跟媽媽的是一樣的嗎
哎唷  小小孩子怎麼開始會存錢了




2017年3月22日 星期三

"亞斯伯格" 這個標籤所代表的意義


標籤是一種用來識別或加速理解的好工具
但是在使用前必須先真正能了解其中的涵意
否則就會陷入"知識障"之中,


亞斯伯格是....
  1. 一種人格特質
  2. 跟遺傳有關(例如: 過敏)
  3. 神經連結方式不同(杏仁核/皮質層的連結與一般人不同) 
  4. 不擅長處理人際關係
  5. 無法用"感覺"與"經驗"調整自己行為
  6. 無法理解他人感覺與情緒
  7. 固著行為
  8. 儀式式行為
  9. 缺乏彈性
  10. 容易焦慮
  11. 常有低肌肉張力的問題(跌倒,手腳不協調)
  12. 真摯與忠誠
  13. 需要生活能力的訓練(一些對平常人很基本的能力, 如親疏遠近的分別)
  14. 大約88個人中有一個
  15. 若未學會溝通技巧,常會併發其他疾病問題(躁鬱/憂鬱/失學)
雅斯伯格不是
  1. 全部都是天才
  2. 幼兒生活有陰影
  3. 父母教育失敗所造成
  4. 心理異常或者有陰影
  5. 所有患者都擁有相同的症狀
  6. 可以靠"魔鬼班長"去"矯正"
  7. 等於柯文哲
  8. 智商沒問題不等於生活能力沒問題
  9. 已經在DSM-5被納入自閉症光譜中 但這個稱呼仍然被廣泛使用
  10. 可以被"治癒"的病 , 但是透過訓練, 可以讓患者學會替代性的溝通技巧來減輕對生活造成的不便

2017年3月19日 星期日

自閉症光譜的兒童與網球運動


最近看了這篇文章:

https://spectrumnews.org/opinion/viewpoint/tennis-program-serves-up-benefits-for-children-with-autism/

作者Shafali Jeste 是 UCLA的精神疾病與神經學的副教授(associate professor)並且是UCLA的自閉症研究治療的首席研究員( lead investigator )

她與先生(大學是網球選手)一起主持了ACEingAutism這個專門教導自閉症兒童打網球的組織。這篇文章裡面提到,一開始只是為了要讓四歲的自閉症兒童Zoe有地方可以運動,所以開始的業餘計畫,最後先生變成全職在主持這個組織。這篇文章講述了他們成立的經過,得到的結果,並且分享這個過程中他們的經驗。

先說我看完的心得:

  1. 什麼運動也許不是最重要的,最重要的是運動教練有沒有針對自閉光譜的兒童設計漸進式的課程
  2. 一開始的這位Zoe本身沒有低肌肉張力(low musle tone)的問題,文中也有(少少)提到如何幫助低張的學童,還有針對感覺敏感的處理,以及心態上的調整。這真是對家長與教練不錯的知識。
  3. 運動真的對於自閉症的孩子超重要的!不只是會比較健康,對於他們練習人際關係也很有幫助。大部分自閉症兒童的運動需求都會被忽略,而比較專注在"讓他們達到跟別人相近的程度"
對於目前自閉症光譜的教育我也有許多想法,但這篇會主要專注在運動上面,以下是我自己的心得筆記:
  1. 一開始Zoe只有少量的口語,而且會在教室裡崩潰爆炸。她體能不錯,能跑能跳,也試過不少設計給身障孩子的運動,但都沒辦法讓Zoe的體力潛能能夠好好發揮。
  2. 作者跟先生討論過後,發現許多自閉光譜兒童的家長都沒辦法幫小孩找到適合的運動娛樂,因此他們開始設計一系列除了網球技巧外,包含眼神接觸,合作雙打的網球+社交技巧訓練課程。
  3. 一開始先從握拍,揮拍,餵球給學童打開始....但結果有的小孩在黏土球場上挖洞,有的小孩跑到球場外面去玩積水,有的小孩開始咬球....
  4. 之後他們檢討自己的教學方法,並且請教了自閉光譜的介入專家(intervation expert)以及家長,他們決定把球場從泥地球場(註:應該像是紅土那樣的正式場地)移到網子比較小的黑色場地(註:應該是指瀝青場地)以減少感官刺激。並且加入視覺目標:在球場上用顏色畫圈告訴學童應該要站在哪邊,口頭指令也從"撿球時間到囉"改成更明確的指令如"撿起十顆球"。
  5. 結果接下來的課程就比較順利了,他們開始跟醫師,物理治療師,介入專家(intervation expert),自閉症專家,網球專家,還有家長一起修正這個課程,最後建立一個每週一小時,連續八到十週,可以每年參加的運動訓練課程。
  6. 他們還提供視覺課程表讓學童可以預先知道上課的一小時內會發生什麼事情,讓他們有心理準備,並且避免未知的焦慮。
  7. 課程每十分鐘分為一個模組,一開始分為大肌肉動作如跑/跳/丟球,越到後面會有更多針對網球的訓練,最後一個模組則讓他們有機會可以把球打過網子的對面。每個模組都針對不同程度的學童而生訂做,像低張的學童可能連握拍都需要幫助,一般體能沒問題的孩童在八週後有的已經可以對打了。
  8. 在課程中他們也很重視社交互動,例如設身的時候孩童們會在球場邊肩並肩站著,並節練習把球拿給別人,在傳送的過程當中要叫對方的名字而有些互動。下課的時候要團隊歡呼"1-2-3我們愛網球!" 讓學童跟志工可以形成一種團隊的意識, 這讓學童不但可以學到網球,還可以增加專注力,互動,與社交能力。
  9. 兩年後,這個計畫延展到更多的地方, 並且服務更多像是語言困難,重複行為,爆衝(aggressive outbursts)/ 焦慮/ 感覺障礙(profound sensory aversions)的兒童。這些小朋友可能在一般的運動中都被貼上"不適合"的標籤,但他們修正課程以適應孩子們,這點我覺得很不錯。
  10. 更酷的是隨著規模擴大,更多志工瞭解了自閉症光譜,甚至決定以幫助自閉症光譜兒童當作未來職業,這對未來孩子們出社會以後的融入也很有幫助。

這篇文章可以我許多啟發......

2017年3月10日 星期五

在Mozilla 四個月的工作經驗

從2016年10月底加入Mozilla開始,到今天已經快四個月,想要紀錄一下心得,分為技術成長,職場成長,以及家庭成長三個部分:

  1. 技術成長
    1. 學了Javascript! Javascript是我一直很害怕的語言,因為有很多不一樣的寫法,而且我一直搞不懂我到底寫對了嗎...在這邊真的學會了不少新增JS物件的方法(據說有10種以上,我只知道三種: new/function/prototype),在這邊的好處是有人可以幫忙review,這比任何QA都來的強,而且還可以學到前因後果,不會只是告訴你:這不work喔。
    2. 學到Android/JS debugger的技巧(感謝walkingice & maxliu)
    3. 學到Launcher app的邪惡(感謝maxliu)
    4. 嘗試過 data-drive 的decision (使用Telemetry:一個Mozilla內部用來收集 Desktop跟 Mobile browser behavior 的工具,但還在奮戰中,因為文件有太多沒寫到的地方)
    5. 可惜Android本身的新功能沒什麼機會運用,我一半以上的patch都是JS
  2. 職場成長
    1. 體驗open source的文化,code的commit無法由完全由政治力決定,有些外部contributor擁有很高的決定權(有點烏托邦的感覺)
    2. 跟不同文化的人一起工作與生活,以前雖然也有外國同事,但要能聊天,或者連續個幾天一起吃午餐有點難
    3. Don't work for the man, work for man-kind. 
    4. 寫的Code有很多人用,而且可以直接跟使用者/貢獻者互動。
    5. 不太有階級的感覺,主管感覺是supporting rule而非management,是真的想幫你解決工作上的問題(更高的主管我就不知道了,因為對他們只有像朋友那樣的聊天)
  3. 家庭成長
    1. 下班時間不太需要工作,生活跟工作比較分開了
    2. 中午開始運動了,因為一起運動的同事真的很nice
    3. 沒辦法像以前那樣隨時可以跟家人相處,但不會有隨時沒辦法跟家人相處的恐懼
當然每個公司都有自己的困境與挑戰,這裡就不多說了XD 
2017年的目標是站穩腳步,多瞭解自己的產品,多瞭解如何跟其他部門合作,找到更好的家庭工作平衡,明年希望能有更多的成長

2016年8月23日 星期二

Firefox for Android


before start...
install yasm
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Yasm

install cask
https://github.com/caskroom/homebrew-cask

if you want to use git instead of Mucrial
https://github.com/glandium/git-cinnabar


if you have any problem ,try below and do again
hash -r python

Follow below instruction to build Firefox for Android!
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Simple_Firefox_for_Android_build




2016年8月1日 星期一

iOS vs Android

Last week, I was officially announced the iOS developer of my client .  I was still on the way to be an expert in Android. But I decide to take a small tour to iOS for the time being.

Here's the list I've used to play around with iOS

http://awesomeios.com/
http://awesome-ios.readthedocs.io/en/latest/#hud
https://github.com/vsouza/awesome-ios
https://medium.com/app-coder-io/27-ios-open-source-libraries-to-skyrocket-your-development-301b67d3124c
https://gitlab.com/TridentX/awesome-ios


and below is my pod file for current project

 pod 'EDHexColor'
  pod 'HMSegmentedControl'

  pod 'AFNetworking', '~> 3.0'
  pod 'ZDCChat'

  pod 'MagicalRecord', '~> 2.2'
  pod 'Mantle'

  pod 'OpenUDID', '~> 1.0.0'
  pod 'SecureNSUserDefaults'

  pod 'Fabric'
  pod 'Crashlytics'

  pod 'Realm'
  pod 'JTMaterialTransition', '~> 1.0'



Looking forward to have more fun!