Profile 03 00@2x

陳罕非 Neil

有10年以上開發過數種不同軟體的資深軟體工程師,較擅長Android App開發。熱衷於研究新的技術、架構、框架(如Google IO、WWDC),注重code refactoring、clean code。樂於與同事討論、分享、協助解決技術問題,提升軟體品質。雖然本身是身心障礙,但不需任何輔助器具,不影響工作,過往工作表現常常比一般人好。

資深軟體工程師
台灣,新北市
[email protected]

技能


程式設計

  • Android: Java, Kotlin, AOSP
  • iOS: Swift
  • Backend: PHP (REST API)
  • Network: Socket (TCP/UDP)
  • Linux: kernel porting
  • Common: C, C++, C#


版本控管

  • Github
  • Gitlab
  • Bitbucket


其他

  • Design Patterns
  • Dependency Injection
  • MVP, MVVM Architecture
  • Unit Test


資料庫

  • SQLite
  • MySQL


Issue Tracking

  • JIRA
  • Trello

工作經驗

香港商栢能科技,資深軟體工程師,2016年4月 ~ 在職中

Embedded Linux (50%)、Android App/Framework (25%)、Windows C++/C# (15%)、MCU (10%)
  • 協助Android Team技術支援(MVVM architecture、Jetpack、design patterns、lifecycle、memory leak、SOLID、Kotlin Coroutines/Flows、code review)
  • 開發nRF52832藍牙韌體,主要用來溫度監控與記錄。與Android/iOS App團隊合作,自定義藍牙通訊協定,使手機能接收溫度記錄、控制LED與Alarm等各種設定,且支援OTA更新(DFU)。大幅優化了約60倍資料傳送速度(每秒可傳1500筆記錄)。監測狀態耗電量僅約18uA(未連線、持續廣播與監測、至少超過一年)。(影片
  • 負責ARM Embedded Linux kernel porting(NVIDIA Jetson TX2)。修改device tree、kernel config、driver porting、rootfs customization等。研究出一個有效率的方式能在本機端客製化L4T rootfs,節省很多開發時間。
  • 負責x86 PC從頭開始第一次做Linux kernel porting。在團隊中是第一個成功把audio driver移植上去的人。
  • 負責客製化Android framework(NXP i.MX6),在framework增加新的system service,撰寫JNI控制RTC與HDMI blank,並提供API給上層App呼叫。
  • 用C++開發Windows顯示卡控制程式,用NVAPI library來控制NVIDIA顯示卡(例如超頻、風扇轉速、LED燈光控制等等),與Android/iOS App團隊合作,自訂通訊協定,使手機或平板透過TCP/UDP(Winsock)經由RSA/AES加密連線(OpenSSL)來控制顯示卡。(影片
  • 開發TI CC2541藍牙韌體,用來顯示LED跑馬燈,並且開發Android app透過BLE(Bluetooth Low Energy)來控制。(影片
  • 用C#開發Windows藍牙程式,透過BLE(Bluetooth Low Energy)來抓取特定碼錶的計時資料,並做分析。(影片
  • 開發Android智慧家庭app,透過雲端來監控各種家電裝置,使用Firebase推播通知。

啟源數位科技,資深軟體工程師,2014年3月 ~ 2016年2月

Android (80%)、iOS (10%)、Backend (10%)
  • 開發Android近10個不同類型App,如汽車美容預約、藍牙應用、民宿訂房系統、文博會、社群交流等。使用Facebook SDK、Twitter API、Google API、Google map、GA、GCM、BLE beacon、camera、OkHttp、Retrofit、Picasso等套件。(IGcar
  • 開發iOS汽車美容預約App,以Auto Layout設計UI,使用Alamofire、Kingfisher、ObjectMapper、Realm等套件。(IGcar
  • 開發後台REST API(MySQL + PHP + CodeIgniter)。規劃資料庫並建立了40+ tables、3 views、1 SP、10+ triggers,共寫了50+ APIs。為了優化SQL queries效能,建立indexes、調校nested queries、在手機加入快取機制等等,速度增加約30%。
  • 協助開發app客製化UI與特殊效果,例如刮刮卡。

生動科技,Android程式設計師,2013年6月 ~ 2014年3月

Android App (100%)
  • 負責Android app開發,主要是政府標案,提供觀光、旅遊資訊、景點、優惠券等等在地服務(Location-Based Service)。
  • 維護現有Android app並修正問題。

銓鎂科技,系統工程師,2010年8月 ~ 2011年11月

VB.net (95%)、C# (5%)
  • 主要維護以VB.net開發的美國德州兒童早期教育機構管理系統(Windows程式),管理學員資料、申請、註冊、軟硬體設施、健康、教育、出缺勤、志工管理、人才管理、各式報表及電子公文等,並連接SQL Server資料庫。
  • 使用insertion sort演算法,改善某個查詢功能的效率,平均提升約40%查詢速度。
  • 使用廠商提供的SDK來開發網路攝影機Windows應用程式(C#)。

學歷

淡江大學,資訊工程系,學士畢業,2006年 ~ 2010年

在大學課餘時間,常常寫一些程式作品,並分享到網路上(連結)。例如:
  • 魔獸爭霸三輕鬆等 (Windows程式,連結
    • 在遊戲房間等待玩家時,程式利用逆向工程技術,讀取遊戲的記憶體資料,觀察房間人數。當人滿時,程式會跳出提醒,並自動開始遊戲的外掛程式。
    • 使用技術:Reverse EngineeringWindows API, C#
  • 網路五子棋 (Windows程式,連結
    • 能夠跟電腦玩(AI演算法),存檔或讀檔,或者透過網路跟朋友玩。
    • 使用技術:SocketAI algorithmC++
  • 簡易多人聊天程式  (Windows程式,連結
    • 一個可以多人聊天的小程式,透過AES-128 bit加密,且有簡易檔案傳送的功能。
    • 使用技術:Socket, Multi-threading, AES, C++

Profile 03 00@2x

Neil Chen

Senior software engineer with 10+ years of experience in developing various software applications, specialized in Android App development. Dedicated to studying new architectures, frameworks and techniques (Google IO, WWDC). Focused on code refactoring and clean code. Discussed, shared and solved technical issues with co-workers, improved the quality of applications. Although I am the person with disability, I do NOT need any assistive devices, NOT affect work, moreover, my performance is even better than others in work experience.

Senior Software Engineer
Taipei, Taiwan
[email protected]

Skills


Programming

  • Android: Java, Kotlin, AOSP
  • iOS: Swift
  • Backend: PHP (REST API)
  • Network: Socket (TCP/UDP)
  • Linux: kernel porting
  • Common: C, C++, C#


Version Control

  • Github
  • Gitlab
  • Bitbucket


Others

  • Design Patterns
  • Dependency Injection
  • MVP, MVVM Architecture
  • Unit Test


Databases

  • SQLite
  • MySQL


Issue Tracking

  • JIRA
  • Trello

Work Experience

PC Partner Limited, Senior Software Engineer, Apr 2016 ~ Present

Embedded Linux (50%)、Android App/Framework (25%)、Windows C++/C# (15%)、MCU (10%)
  • Assisted Android Team with technical support (MVVM Architecture, Jetpack, SOLID, design patterns, memory leak, lifecycle-aware, Kotlin Coroutines/Flows, code review, and so on).
  • Developed nRF52832 Bluetooth firmware to monitor and record temperature data. Cooperated with Android/iOS App team, the smartphones can receive temperature records, control LED and set alarm settings based on custom BLE protocol, and OTA (DFU) support. Optimized data throughput about 60 times faster (up to 1500 data per second). The power consumption of monitor mode is 18uA only (non-connected, keep advertising, at least 1 year). (video)
  • Porting NVIDIA Jetson TX2 (embedded Linux) to a customized board. Modified device tree, kernel config, driver porting and rootfs customization. Saved lots of development time by using an efficient way to customize L4T rootfs on the host machine.
  • Porting Linux (Ubuntu) to a custom x86 PC from scratch. I was the first one who porting audio driver successfully in the team.
  • Porting Android framework (NXP i.MX6), built custom system service, wrote JNI for controlling RTC and HDMI blank, and provided top-level APIs for applications.
  • Developed Windows utility to control NVIDIA GPUs (such as overclocking, fan speed, LED lights) via NVAPI library in C++. Cooperated with the Android/iOS App team in customizing protocol, the smartphones were able to control GPUs via TCP/UDP (Winsock) with RSA/AES encryption (OpenSSL). (video)
  • Developed both TI CC2541 firmware to display LED message marquee and Android app to control it via BLE (Bluetooth Low Energy) protocol. (video)
  • Developed Windows application to fetch and analysis data from particular stopwatch device via BLE (Bluetooth Low Energy) protocol in C#. (video)
  • Developed Smart Home Android app (IoT) to monitor and control devices via cloud service with Firebase notification.

SourceKode Co., Ltd, Senior Software Engineer, Mar 2014 ~ Feb 2016

Android (80%)、iOS (10%)、Backend (10%)
  • Developed about 10 different kinds of Android apps, including car detailing, BLE, room booking, expo and social network, which use Facebook SDK, Twitter API, Google API, Google map, GA, GCM, BLE beacon, camera, OkHttp, Retrofit and Picasso dependencies or libraries. (IGcar)
  • Developed a car detailing iOS app, designed UI with Auto Layout, used some libraries, such as Alamofire, Kingfisher, ObjectMapper and Realm. (IGcar)
  • Developed backend REST API (MySQL + PHP + CodeIgniter). Planned and built the database with 40+ tables, 3 views, 1 SP and 10+ triggers, created 50+ APIs in total. Optimized SQL queries by building indexes, tuning nested queries and caching data in smartphones that getting 30% faster.
  • Assisted in creating special effects and UIs, such as scratch card effect.

Sundance Technologies, Android Engineer, Jun 2013 ~ Mar 2014

Android (100%)
  • Developed Android apps for LBS (Location-Based Service) which are bid of government projects to promote travel information, tours, POI (point of interest) and coupons.
  • Maintained existing apps and bugs fix.

Quan Mei Technologies, System Engineer, Aug 2010 ~ Oct 2011

VB.net (95%)、C# (5%)
  • Maintained an education institute management system (Windows program) used in Texas which developed in VB.net, manage students info, applications, enrollments, health, education, attendance records, volunteers, talents, e-form, reports, and so on, connect to SQL server database.
  • Improved particular query performance about 40% by using insertion sort algorithm.
  • Developed IP Camera Windows application with manufacturer’s SDK in C#.

Education

Tamkang University, Bachelor's Degree, Computer Science, 2006 ~ 2010

I usually make some programs in spare time during the semester, and share on the internet (link). For instance:
  • Warcraft III Easy Wait (Windows program) (link)
    • Using reverse engineering technique to read game's memory data for observing players in the room when waiting for other players. Once the room is full, it will notify users and start the game automatically.
    • Skills: Reverse EngineeringWindows API, C#
  • Network Gobang (Windows program) (link)
    • Able to play with computer (AI algorithm), save/reload, or play with friends through the internet.
    • Skills: Socket, AI algorithm, C++
  • Multi Chatting Room  (Windows program) (link)
    • An multi-user chatting room program with AES-128 bit encryption, and simple file transfer.
    • Skills: Socket, Multi-threading, AES, C++