From 8ecb916e682f132c1a1cf2c0c3c7ed59d9141f8d Mon Sep 17 00:00:00 2001 From: Benson Chu Date: Tue, 18 Jun 2024 12:06:05 -0500 Subject: [PATCH] Let there be light! --- .gitattributes | 1 + .gitignore | 3 + example.org | 85 ++++++++++++++++++++++++++ mycv.sty | 74 ++++++++++++++++++++++ old.org | 6 ++ personal-info.org | 11 ++++ questions.org | 46 ++++++++++++++ resume.odt | 3 + resume.org | 82 +++++++++++++++++++++++++ text/answers_to_questions.org | 6 ++ text/code_samples_compiler.org | 31 ++++++++++ text/negotiate_salary.org | 108 +++++++++++++++++++++++++++++++++ text/questions.org | 7 +++ 13 files changed, 463 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100755 example.org create mode 100755 mycv.sty create mode 100755 old.org create mode 100755 personal-info.org create mode 100755 questions.org create mode 100755 resume.odt create mode 100755 resume.org create mode 100755 text/answers_to_questions.org create mode 100755 text/code_samples_compiler.org create mode 100755 text/negotiate_salary.org create mode 100755 text/questions.org diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..aa391c6 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.odt filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5dca028 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.html +*.pdf +*.tex \ No newline at end of file diff --git a/example.org b/example.org new file mode 100755 index 0000000..a9e1a6a --- /dev/null +++ b/example.org @@ -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 diff --git a/mycv.sty b/mycv.sty new file mode 100755 index 0000000..2270a93 --- /dev/null +++ b/mycv.sty @@ -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}] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/old.org b/old.org new file mode 100755 index 0000000..211dae8 --- /dev/null +++ b/old.org @@ -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. diff --git a/personal-info.org b/personal-info.org new file mode 100755 index 0000000..f5552a2 --- /dev/null +++ b/personal-info.org @@ -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}}} } diff --git a/questions.org b/questions.org new file mode 100755 index 0000000..981f2c5 --- /dev/null +++ b/questions.org @@ -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. diff --git a/resume.odt b/resume.odt new file mode 100755 index 0000000..cf707c7 --- /dev/null +++ b/resume.odt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3469ba016e370cdbd9273c27d8ab46675d1c968568dfc447d1f826efdf1f8fa +size 12542 diff --git a/resume.org b/resume.org new file mode 100755 index 0000000..84a675b --- /dev/null +++ b/resume.org @@ -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. diff --git a/text/answers_to_questions.org b/text/answers_to_questions.org new file mode 100755 index 0000000..369d7a1 --- /dev/null +++ b/text/answers_to_questions.org @@ -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 diff --git a/text/code_samples_compiler.org b/text/code_samples_compiler.org new file mode 100755 index 0000000..1b76691 --- /dev/null +++ b/text/code_samples_compiler.org @@ -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 + diff --git a/text/negotiate_salary.org b/text/negotiate_salary.org new file mode 100755 index 0000000..742e7dd --- /dev/null +++ b/text/negotiate_salary.org @@ -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 diff --git a/text/questions.org b/text/questions.org new file mode 100755 index 0000000..5c0ae47 --- /dev/null +++ b/text/questions.org @@ -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?