Let there be light!

This commit is contained in:
Benson Chu 2024-06-18 12:06:05 -05:00
commit 8ecb916e68
13 changed files with 463 additions and 0 deletions

1
.gitattributes vendored Normal file
View file

@ -0,0 +1 @@
*.odt filter=lfs diff=lfs merge=lfs -text

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
*.html
*.pdf
*.tex

85
example.org Executable file
View file

@ -0,0 +1,85 @@
#+OPTIONS: toc:nil H:10 tex:t
#+STARTUP: hidestars indent
#+INCLUDE: personal-info.org
#+LaTeX_HEADER: \usepackage{mycv}
#+LaTeX_HEADER: \hypersetup{colorlinks=true, urlcolor={url-gray}}
#+LaTeX_CLASS_OPTIONS: [letterpaper]
#+LaTeX_HEADER: \usepackage{enumitem}
#+LaTeX_HEADER: \setlist{leftmargin=0.25in,nosep}
{{{HEADER}}}
* Experience
** GSoC Mentor for [[https://summerofcode.withgoogle.com/projects/#4973810873270272][Zulip]]
*** May 2018 - Present (ends Aug 2018)
Mentoring a student to help build a terminal client for Zulip using it's API.
** Software Developer at [[http://akvo.org][Akvo]]
*** Sep 2016 - Present
Full-stack developer for RSR --- a Django based reporting framework for
organizations doing developmental work
- Contributed quite a few of performance improvements to make the site snappier
- General code quality improvements with better testing, apart from adding
features and fixing bugs.
** Machine Learning Engineer at [[http://infilect.com][Infilect]]
*** Jul 2015 - Mar 2016
Worked on a fashion assistant leveraging deep neural networks for image based
search and retrieval
- Learnt about CNNs and became comfortable training models using Torch and
Caffe
- Built a visual similarity based search system
- Improved the data collection platform for the product database
** Recurser at the [[https://recurse.com][Recurse Center]]
*** Jun - Aug, 2014
Spent 12-weeks in a collaborative, self-directed, programming retreat. Here's a
[[https://punchagan.muse-amuse.in/recurse-center/][daily journal]] of what I did there.
- Learnt about the internals of Python and built an inspection tool for CPython
code
- Worked with hardware and helped build a LED spectrum analyzer among other
things
** Software Developer at [[http://www.enthought.com][Enthought]]
*** Sep 2011 - May 2014
Primarily worked on [[https://www.enthought.com/products/canopy/][Canopy]] -- a Qt based development environment for
Scientists/Engineers.
- Helped design and build the first cut of an application platform for Python
based apps
- Acquired some taste for good software design
** Research Associate at [[http://fossee.in][FOSSEE]], IIT Bombay
*** Jul 2009 - Jul 2011
Helped increase the adoption of Python in college through training.
- Designed and developed material for a course on [[https://github.com/FOSSEE/sees][Software Engineering for
Engineers and Scientists]]
- Helped organize, design and conduct workshops spread across India
* Projects
I contribute to a number of FOSS projects in varying degrees. [[https://github.com/punchagan][GitHub]] provides a
fairly comprehensive overview.
** [[https://github.com/punchagan/cinspect][cinspect]]
*** Python
~cinspect~ attempts to extend Python's built-in inspect module to add
"inspection" for Python's builtins and other objects not written in Python. It
uses ~libclang~ to parse C-code and indexes it to allow looking up the source
of the required objects, using an ~inspect~-like API.
** [[https://github.com/recursecenter/blaggregator][Blaggregator]]
*** Python, Django, Javascript, CSS
A Django powered site that aggregates blog posts of Recursers from all over the
web. I've added a bunch of features to it, and am the current maintainer.
** [[https://github.com/org2blog/org2blog][org2blog]]
*** Emacs-Lisp
An ~Emacs~ minor mode for blogging to Wordpress that's loved by many users for it's ease of use.
** [[https://github.com/punchagan/crumb][crumb]]
*** Javascript, CSS
An experimental Disqus-like commenting system that (ab)uses GitHub issues as the "database".
** [[https://github.com/getnikola/nikola][Nikola]]
*** Python
A static site & blog generator that I use for my blog -- contributed a handful
of features and bug fixes over time.
* Education
** BITS Pilani, Goa Campus, India
*** Aug 2005 - Jun 2009
/B.E.(Hons.), Electrical and Electronics/, GPA: 8.31/10
* Skills
- Most comfortable with :: Python, Javascript, Emacs Lisp, HTML/CSS, Qt, Git, Linux
- Have worked with :: Lua, Torch, Caffe, PySpark, R, Octave, Clojure, Go, C, Elm, Bash, LaTeX

74
mycv.sty Executable file
View file

@ -0,0 +1,74 @@
% This work is licensed under the Creative Commons
% Attribution-NonCommercial-ShareAlike License. To view a copy of this license,
% visit http://creativecommons.org/licenses/by-nc-sa/1.0/ or send a letter to
% Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
% This file is adapted from Jesse Luehrs resume at
% https://github.com/doy/resume/blob/master/resume.tex
% <<< packages
\RequirePackage{latexsym,amsmath,amssymb,charter,color,calc,hyperref,titlesec}
\RequirePackage[empty]{fullpage}
% >>>
% <<< dimensions/margins
\raggedbottom
\raggedright
\setlength{\tabcolsep}{0in}
\addtolength{\oddsidemargin}{-0.4in}
\addtolength{\evensidemargin}{-0.4in}
\addtolength{\textwidth}{0.8in}
\addtolength{\topmargin}{-0.6in}
\addtolength{\textheight}{10in}
% >>>
% <<< other definitions
\definecolor{my-gray}{gray}{0.90}
\definecolor{url-gray}{gray}{0.25}
% >>>
%% Document header
\newcommand{\resheader}[6]{
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}cr}
#3 & \textbf{\LARGE #1} & #5\\
#4 & \url{#2} & #6\\
\end{tabular*}
\\
\vspace{0.1in}
}
%% Enumerations
\def\labelitemi{--}
%% Section Headings, etc.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\renewcommand{\section}[1]{
\@startsection{section}{1}{0pt}{0pt}{0pt}{\normalfont}*{}
{
\large \colorbox{my-gray}{
\begin{minipage}
{\textwidth-0.175in}
{\textbf{#1 \vphantom{p\^{E}}}}
\end{minipage}
}
}
}
\titleformat{\subsection} %command
[block] %shape
{\bfseries} %format
{} %label
{0pt} %sep
{} %before-code
[] %after-code
\titlespacing{\subsection}{0pt}{5pt}{0pt}[{0pt}]
\titleformat{\subsubsection} %command
[block] %shape
{\vspace{-2.4ex}\small\it\raggedleft} %format
{} %label
{0pt} %sep
{} %before-code
[] %after-code
\titlespacing{\subsubsection}{0pt}{0pt}{0pt}[{0pt}]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

6
old.org Executable file
View file

@ -0,0 +1,6 @@
** [[https://www.github.com/codertilldeath/quadgrav][Quadgrav]]
*** Clojure
A quil sketch that implements the approximation algorithm for an N-Body simulation
known as the Barnes-Hut simulation. The algorithm uses a quadtree to query nearby
particles, and treating far away particles as a single particle. Used tufte to profile
the app when pushing for optimization.

11
personal-info.org Executable file
View file

@ -0,0 +1,11 @@
#+MACRO: FIRST Benson
#+MACRO: LAST Chu
#+MACRO: FULL {{{FIRST}}} {{{LAST}}}
#+MACRO: BLOG
#+MACRO: EMAIL
#+MACRO: PHONE
#+MACRO: CODE https://github.com/pestctrl
#+MACRO: ADDRESS1 me@mail.pestctrl.io
#+MACRO: ADDRESS2 281-256-5781
#+MACRO: HEADER \resheader{ {{{FULL}}} }{ {{{CODE}}} }{ {{{EMAIL}}} }{ {{{PHONE}}} }{ {{{ADDRESS1}}} }{ {{{ADDRESS2}}} }

46
questions.org Executable file
View file

@ -0,0 +1,46 @@
* Interview Grid
|-------------------------+--------------------------+-----------------------------------+-------------------------------+--------------------------+---------------------------------------|
| | pAIng | ILOC Compiler | Delivery | ExamBuilder | Quadgrav |
|-------------------------+--------------------------+-----------------------------------+-------------------------------+--------------------------+---------------------------------------|
| Challenges | Reading the papers | Understand schedule locks | Composition and integration | Learning about databases | Working with the language to optimize |
| | Visualizing the network | Module design, new language | | | |
|-------------------------+--------------------------+-----------------------------------+-------------------------------+--------------------------+---------------------------------------|
| Mistakes/Failures | Design was terrible | Decided to use symbols | | | |
|-------------------------+--------------------------+-----------------------------------+-------------------------------+--------------------------+---------------------------------------|
| Enjoyed | Loved learning internals | LOVED learning about compilers | Designing such a large system | Working in dotnet core | Working in Clojure |
| | Wish the world had git | Lisp background | | | Implementing physics |
|-------------------------+--------------------------+-----------------------------------+-------------------------------+--------------------------+---------------------------------------|
| Leadership | | | Tons of pair programming | | |
|-------------------------+--------------------------+-----------------------------------+-------------------------------+--------------------------+---------------------------------------|
| Conflicts | | | When it came time to make | | |
| | | | decisions, we had one team | | |
| | | | member question everything we | | |
| | | | did | | |
|-------------------------+--------------------------+-----------------------------------+-------------------------------+--------------------------+---------------------------------------|
| What I'd do differently | Design was wrong | Slow down, hammock time is needed | | | Language Choice |
|-------------------------+--------------------------+-----------------------------------+-------------------------------+--------------------------+---------------------------------------|
* What are my weaknesses?
Too in the details, very detail oriented, can sometimes get in the
way of deadlines.
Also, I used to think that skill was all that was
necessary. I think everyone has had that period.
* Tell me about yourself
I am a student at the University of Houston, studying computer
science. I grew up in a poverty stricken family, and my parents had
been out of a job for about 3 years before I entered University. Me
entering university should've been a net negative for my family, but
UH had offered me a very attractive financial package, which
would've given me a net gain, so I attended there. During my time
here, I have spent time learning a plethora of tools, programming
languages, attempted to build a startup. I also work at the
university as a part time web developer, helping out the school's
assessment center with their website for administering online tests
to students. Outside of work, I like to participate in hackathons,
and read up on open source projects, as well as refining my own set
of software tools. I'm looking for new challenges ahead of me, and
an opportunity to be able to focus more on a smaller number of
projects. My life at school for the past few years have been a
constant juggling act, with forces pulling from both work, school,
and my own desires to learn. I'd like to be able to narrow my focus
more.

BIN
resume.odt (Stored with Git LFS) Executable file

Binary file not shown.

82
resume.org Executable file
View file

@ -0,0 +1,82 @@
#+OPTIONS: toc:nil H:10 tex:t
#+STARTUP: hidestars indent
#+INCLUDE: personal-info.org
#+LaTeX_HEADER: \usepackage{mycv}
#+LaTeX_HEADER: \hypersetup{colorlinks=true, urlcolor={url-gray}}
#+LaTeX_CLASS_OPTIONS: [letterpaper]
#+LaTeX_HEADER: \usepackage{enumitem}
#+LaTeX_HEADER: \setlist{leftmargin=0.25in,nosep}
{{{HEADER}}}
* Education
** University of Houston, Houston, Texas
*** Aug 2015 - Jun 2019
/Bachelor of Science, Computer Science/, GPA: 3.5/4
* Skills
- Programming Languages :: Scala, Java, C#, Clojure, Common Lisp, Python, C++, C
- Tools and Environments :: Emacs, GDB, .NET Core, Git, Linux
- Have worked with :: Javascript, AutoLISP, TDD
* Experience
** Compiler Engineer at texas Instruments
*** Feb 2020 - Now
Maintained compiler for
- Fixed bugs with linker
- Added new functionality to machine outliner
- Upstreamed work
- Peephole optimizations
** Web Developer Intern at University of Houston
*** May 2018 - Aug 2018
Wrote a web application for university professors to create and
administer online exams for their students to take at our testing
center. Application was in .NET Core MVC with SignalR. Previously, we
had a small team in charge of creating exams, who would have to write
out an XML file specifying the test details and questions. The
application allowed the professors themselves to create the exams,
reducing the workload of the test maintainers.
** Software Engineer Intern at Pi Integrated Systems
*** Jun 2017 - Aug 2017
Primarily worked in AutoLISP for an AutoCAD plugin for designing piping plants
- Rewrote matrix multiplication functions to remove dependency on
AutoCAD's proprietary libraries. As a result, company's plugins
became compatible with other CAD engines
- Implemented breadth-first search, to allow users of the plugin to
determine where piping failures would occur
** Networking Engineer Intern at University of Houston
*** May 2016 - Aug 2016
Assisted in upgrading the math department's network to accomodate for
new testing center. Setup new VLANs for new computers, deployed STP
in some sections to increase redundancy, setup EtherChannel and 802.1Q
Trunks.
* Projects
I have built and contributed to a few projects, all of which can be viewed on my
[[https://github.com/codertilldeath][GitHub]] page.
** ILOC Compiler
*** Common Lisp
A compiler for the ILOC abstract machine, written in Common Lisp. The
compiler reads in the ILOC code with a hand-written scanner and
parser, schedules the instructions to reduce latency, and then
allocates the registers based on some number of available physical
registers.
** Virtual Memory Manager
*** C++
Implements a cache manager for paged segments of virtual memory. Pages
are swapped into memory when they are referenced, and swapping is
implemented using several page replacement algorithms such as LRUX,
FIFO, OPTIX, etc. The program is forked into n+2 processes: two
processes for the page handling, and n more processes to serve as
actors accessing memory. Processes communicate with each other
through pipes, and are synchronized via semaphores.
** Delivery Company Blockchain Stack
*** C# (ASP.NET Core, Xamarin), Hyperledger Composer, Python (Flask), Angular
A blockchain powered asset tracker, built for a school project on Software Design.
Uses a full stack from a blockchain in the backend to a mobile app in the front end.
A website was also built for certain users to monitor the activity on the blockchain.
Built with TDD, with 90% test coverage.
** pAIng
*** Java
Built a vanilla neural network from scratch, as well as an implementation of the old
pong arcade game. The goal was to breed neural networks that would slowly improve at
playing the game. Selection was done through a fitness function, and networks were
bred by randomly choosing one of the edge weights for each network, or by averaging.

6
text/answers_to_questions.org Executable file
View file

@ -0,0 +1,6 @@
* What is your perfect job?
+One that doesn't get in my way of learning new things.+
One that pushes me to improve my understanding of my job in ways that
benefit both myself and my employer
* What makes me a good software engineer

31
text/code_samples_compiler.org Executable file
View file

@ -0,0 +1,31 @@
* The Metacircular Interpretter in Clojure
#+BEGIN_SRC clojure
(ns interpreter.core
(:gen-class))
(require '[farg.pmatch :refer [pmatch]])
(def base-env
(fn [x]
(pmatch x
inc inc
dec dec
x 1)))
(def eval-expr
(fn [expr env]
(pmatch expr
~x (guard (number? x)) x
~x (guard (symbol? x)) (env x)
(lambda (~arg) ~body)
(fn [x]
(eval-expr body
(fn [sym]
(if (= sym arg)
x
(env sym)))))
(~rator ~rand)
((eval-expr rator env)
(eval-expr rand env)))))
#+END_SRC

108
text/negotiate_salary.org Executable file
View file

@ -0,0 +1,108 @@
#+ -*- mode:org; -*-
* Salary
| | $79K a year | 90K | 100K |
|---+------------------+------------------+------------------|
| | $5124 a month | $5768 a month | $6342 a month |
| | $4124 w/o rent | $4768 w/o rent | $5342 w/o rent |
| | $3724 w/o luxury | $4368 w/o luxury | $4942 w/o luxury |
| | $45K a year | $52K a year | $60K a year |
| | $90K 2 years | $104K 2 year | $120K 2 year |
| Yearly | Bimonthly | Monthly | w/o rent | 1 year | 2 years | Expendable | Monthly |
|--------+-----------+---------+----------+--------+---------+------------+---------|
| 79000 | 2562 | 5124 | 3924 | 47088 | 94176 | 19176 | 799 |
| 85000 | 2737 | 5474 | 4274 | 51288 | 102576 | 27576 | 1149 |
| 86000 | 2767 | 5534 | 4334 | 52008 | 104016 | 29016 | 1209 |
| 87000 | 2796 | 5592 | 4392 | 52704 | 105408 | 30408 | 1267 |
| 88000 | 2825 | 5650 | 4450 | 53400 | 106800 | 31800 | 1325 |
| 89000 | 2855 | 5710 | 4510 | 54120 | 108240 | 33240 | 1385 |
| 90000 | 2884 | 5768 | 4568 | 54816 | 109632 | 34632 | 1443 |
| 100000 | 3171 | 6342 | 5142 | 61704 | 123408 | 48408 | 2017 |
#+TBLFM: $3='(* $2 2);N::$4='(- $3 1200);N::$5='(* $4 12);N::$6='(* $5 2);N::$7='(- $6 $save);N::$8='(/ $7 24);N
#+CONSTANTS: save=75000
* What do I want to accomplish during these 2 years?
- Complete my developer backpack
- Get to know my coworkers really well
- Put $75K into savings NET.
- Gain team playing skills, try to overcome soft skill limitations
- Improve my experience with compilers, and C++ skills
- In my spare time, start working my way into MLIR, or Rigetti, or
Google, as well as become an Emacs contributor, or an SBCL
contributor, or Mezzano contributor
* Negotiation letter
Hello Deonca,
I have received my offer letter, and I am thrilled to be joining Texas
Instruments! When I got to speak to the team during my onsite, I found
the work they were doing to be both challenging and rewarding, and it
lines up with what I am passionate about. I hope to be an asset to
Texas Instruments.
I did want to discuss the base salary before I formally accepted the
offer. Based on my conversations during my on-site interview, I was
told I would be spending most, if not all, of my time working with the
compiler team. The salaries for those working on compilers can range
from $80K-$140K based on job postings and data I can find on LinkedIn,
GlassDoor, and other job sites.
I do not feel like I possess all the skills to be paid the average for
this field of work, which would be around $100K. However, the skills
that I do possess should warrant a compensation closer to $90K. I feel
that my grasp on the fundamentals of compiler design is very
strong. My personal projects reflect a fair understanding of the
structure and concepts of all the major components of a
compiler. Thus, I would be able to start providing value to the Texas
Instruments compiler group at a much faster rate.
I would love to hear your thoughts, and I am open to discuss them
anytime this week. Would you be interested in scheduling a call later
today? Thank you again for the offer letter, I hope to hear back soon!
Best,
Benson C.
** Short version
Premises:
1. I am hired as a rotation engineer.
2. Despite premise #1, I would be primarily be working on compilers.
3. Compiler engineers average about $100K a year, with the minimum
being $80K
4. I am not average, but I do possess more fundamentals than an entry
level, as well as personal projects.
What is my argument?
- I want $90K
- I was brought on the rotation program due to my lack of experience
- I have a personal project which demonstrates a knowledge of fundamentals
- I would be working on the compilers team.
- I feel that I should be compensated with reference to the work that
I am doing, and the value I am providing to TI.
* Monthly expenses
|------------+-----|
| Groceries | 300 |
| Eating Out | 400 |
| | |
* Questions
- What is the structure of these calls?
- What's wrong with the whole "too fast" movement?
- There was some ambiguity that wasn't worked out with the manager who
interviewed me. Should I re-contact him? He said I would be hired
directly into their team.
- Would they extend the deadline for my acceptance due to this?
* Notes
- I don't want to be underpaid for the value for compiler work
- I'm not sure I will be walking away.
* Message to Cody
Hey Cody, this is Benson. I had a question, but I realized I was never
put into email contact with you, so I hope you don't mind me messaging
you.
I got my offer letter last Friday, and I'm super excited to join! But,
I noticed again, that the offer was for a rotation engineer. Does that
mean I will have to be rotating between teams? Or would I still be
working with the compiler team for the majority of the time?
* Damn, give time frame when receive offer

7
text/questions.org Executable file
View file

@ -0,0 +1,7 @@
* Best programmer joke
10 types hexadecimal
* What is the one thing you'd build if you had unlimited resources?
A means of life extension. More time = more time to spend unlimited resources.
* Cool prize
Motorized Height Adjustable desk
* Why are you passionate about computer science?