ABOUT OMOIKANE   

<

^

>

 

Don Hsi-Yun Yang

http://uguu.org/
omoikane@uguu.org
Google+

    Work Experience    

2005 - current

Google (www.google.com): Software Engineer
Platforms group, writing performance and machine health related softwares for Linux. Member of the C++ readability team.

2003 - 2005

BitRaker: Software Engineer
Creating library to process and patch ARM and Thumb binaries, instrumenting ELF executables for static and runtime analysis. Intimate knowledge of assembly and runtime libraries for ARM and Thumb architectures.

  • Instrument binaries at instruction level.
    • Return detailed information for static analysis.
      • Debug symbols.
      • Register input/output dependencies.
      • Memory addressing mode.
      • Callgraph data.
    • Feedback register and memory information to analysis code during runtime.
      • Effective addresses.
      • Predicate state.
      • Arbitrary user-supplied data.
  • Creating an environment for analysis.
    • Design and implement customizable emulation cores.
    • Transition between original code and analysis code.
    • Transition between simulation and host environments.
    • Real time control over analysis code through sockets.
    • Maintain portability between Windows and Linux environments.
  • Modifying execution behavior.
    • Relocating runtime heap and stack.
  • Create customized development tools for automation.
    • Automated test environments.
    • Strong encryption/decryption of analysis data.
    • License protection.

Co-author of patent: System and method of analyzing interpreted programs

2001 - 2003

Entropia: Software Engineer
Creating and maintaining low-level (NT Native API) code to extend Windows kernel functionalities, to provide safe and secure execution environment for applications. Extensive experience in Windows file system. Knowledge of grid computing platform and applications.

  • Intercepting and modifying behavior of various file / registry / memory / winsock / GUI API functions.
    • Provide transparent file encryption / isolation.
    • Registry isolation / hide existing keys / emulate missing keys.
    • Swap file isolation / pagefault management.
    • GUI hiding / capturing.
    • Blocking network access.
    • Making all product features configurable.
  • Debug and modify application behavior at binary level, without source code.
    • Trace / capture program behavior.
    • Modify program execution paths.
    • Dynamically control application environment.
  • Compensate for functional and behavioral differences between different versions and releases of Windows.
    • Address space / handle management differences.
    • Error handling / recovery.
    • Undocumented APIs such as CreateProcessInternalW.
  • Windows / Linux intergration
    • Created NFS server for file sharing.
    • Customizing VMware GSX server / Connectix VirtualServer for automated management.
  • Create customized development tools to automate testing and build process.

2000 - 2001

Professor Kube (UCSD CS department): Proctor for CSE 11 / 12 / 100
Answer students' questions about assignments, courses, and often the curriculum in general. Also responsible for grading exams and assignments.

  • Grade exams / assignments.
  • Resolve ambiguities in course assignments.
  • Guide students to proper engineering practices.

2000

Professor Nelson (3D ultrasound imaging group): Software Engineer
Creating tools to examine and visualize animated 3D volume data in real time, for high-end PCs with OpenGL and specialized hardware.

  • Load / save standardized volume formats.
  • Implement / optimize 3D filters.
  • Organize interface widgets for functional use.
  • Optimize for responsiveness and memory usage.

1998 - 2001

IST Diving Equipment: Webmaster
Maintaining online catalog for a multi-national sport equipments company, creating automated management tools.

    Skills    

 

Experienced in creating and implementing clean, elegant programs and solutions in an efficient manner. Work well under time and resource constraints, and able to learn the latest technologies and protocols in minimum amount of time. Also capable of maintaining poorly written code.

Languages
  • Production: C / C++ / Assembly (x86, ARM)
  • Scripting: Perl / Python
  • Functional: OCaml / Scheme
  • Special purpose: PostScript / VIM / BF
  • Constantly learning new languages
Platforms
  • Unix / Linux
  • Windows
    • MFC / Win32 API / NT Native API
    • OpenGL / DirectDraw
  • DOS Real Mode
  • PlayStation (Net Yaroze)
Debugging Tools
Development Tools

Fluent in English, Mandarin Chinese, and Japanese.

    Programming Contests    

2001-2016 ICFP Programming Contest
2000-2015 International Obfuscated C Coding Contest - best layout (2000), best utility (2004), best of show (2011), most surreptitious (2012), most catty (2013), best choice of optimization (2014), most pointed reaction (2015)
2015 Transcendental Ruby Imbroglio Contest for rubyKaigi - most illusionistic (2015)
2001 ACM International Collegiate Programming Contest (World Finals)
1999-2000 ACM Regional Programming Contest - 16th place (1999), 2nd place (2000)
1999-2000 UCSD Programming Contest - 1st place (1999), 8th place (2000)
1997 ENIX Game Contest II

    Education    

  University of California at San Diego
Degree: Bachelor of Science
Honors: Cum Laude graduate, Provost's Honors (all quarters)

           /
2016-11-24