|
Programming Experience
|
|
In my experience, software engineers are often slave to muscle memory, both metaphorical and literal. Programming is a powerful skill, but it does not replace an understanding of customer need, a solid product design, or a high level plan for system architecture.
Before writing a line of code, I prefer to focus on communication, design, and architecture. With a strong plan, programming becomes a simple implementation detail.
That is not to say that I haven't gotten my hands dirty coding. I have a fair amount of programming experience, yielding some strengths:
Before writing a line of code, I prefer to focus on communication, design, and architecture. With a strong plan, programming becomes a simple implementation detail.
That is not to say that I haven't gotten my hands dirty coding. I have a fair amount of programming experience, yielding some strengths:
- I learn very quickly and adapt to new dev environments, code bases and projects.
- I write extremely clean, organized and well documented code. I aim for legibility over cryptic optimizations.
- I excel in technical documentation and communication.
- I have a broad knowledge of many aspects of software engineering, hardware and computer science topics, and understand how they interrelate.
Languages
- Python, C#, Javascript, Java, Matlab, C++, C, R, SAS, Go
- Tensorflow, PyTorch
- HTML, PHP, SQL
- LaTex
- MEL
- Zero-MQ
Software Engineering
- CI/CD: Github, Subversion, Jenkins, Travis, Azure, Argo, Github Actions
- Microservice system design: Rest, GRPC, Docker, Helm, Kubernetes, Istio
- Familiar and practiced in Agile software engineering methodologies
Computer Vision
- Feature Detection, Description and Matching
- Estimating Homography w/ RANSAC
- Estimating Fundmanetal Matrix w/ RANSAC
- Triangulation
- Blob Detector
- Image Warping, Alignment, Stitching and Blending (Panorama Generation)
- Principal Component Analysis, and Singular Value Decomposition
- Photometric Stereo (Shape from Shading), modelling faces from images
- EigenFaces, Face Detection, Identification and Recognition
- Optical Character Recognition with OpenCV and Deep Learning
- Fiducial Marker Tracking for Augmented Reality
Artificial Intelligence, Machine Learning & Data Visualization
- Path Finding Algorithms
- Constraint Satisfaction
- Adversarial Search
- Blob Analysis of High Dimensional Data
- PCA
- Gradient Descent
- Implementing Classifiers:
- Naive Bayes
- SVM
- Perceptrons
- Neural Network Classifiers
- Nearest Neighbors
- Random Forests
- K-Means
- Probabilistic Classifiers
- Expectation Maximization (EM algorithm)
- Probabilisitc Document Classification
- Image Segmentation
- Reinforcement (Q) Learning
- Solving Markov Decision Processes
- Regression
- Multinomial Regression
- Regularized Regression
- Regression on wide datasets
- Neural Networks
- MatConvNet and Tensorflow
- Convolutional Neural Networks for image classification
- Digit Classification using MNIST dataset
- Optical Character Recognition using SD-19 dataset
- Image Classification using Cifar-10 and Cifar-100
- Convolutional Neural Networks for Time Series classification of multi-sensor data
- Recurrent Neural Networks for text generation
Systems & Computational Modeling
- Solving Discrete and Continuous Time Systems with Matlab
- Extensive experience modeling Physiological Control Systems with Matlab
- Designing and Programming Computational Models to Represent and Analyze Physiological, Fluid, Robotic or Electrical Systems
Robotics
- Implementation of identification and control algorithms
- Input-output and state-space techniques
- Identification of nonlinear models
- Energy-based techniques
- Model Validation and Simulation
- Construction of Hybrid Controllers
- Stabilization using linear and non-linear control techniques
- Implementing Computer Vision in Controlling Robots
Algorithms & Data Structures
- Implemented many basic algorithms including sorting, searching, path-finding, constraint satisfaction, adversarial searching, maximization, minimization, gradient descent, terrain generation etc.
Game Development
- C++ for UE4, C# for Unity
- Useful understanding of concepts for game development
- Quaternions
- Linear Algebra
- Hardware
- PhysX and Apex Destruction in Ue4
- Debugging integration of PhysX Vehicle SDK in Ue4 (Nvidia Summer Internship)
- Generating a demo project to highlight capabilties of SDK (Nvidia Summer Internship)
- Hobbyist gameplay programming
- Hobbyist implementations of finite state machines, behavior trees, animation graphs etc.
Graphics
- Useful understanding of concepts for graphics
- Quaternions
- Linear Algebra
- Hardware
- Vertex and Fragment Shading
- Cohen Sutherland and Serial Clipping
- Rasterization Techniques
- Color Spaces
- WebGL
- Minor experience writing shaders in GLSL
- Implementing Gouraud and Phong Shading, Reflectance Models (Phong, Blinn-Phong)
- Computing and Transforming Surface Normals
- Generating Tesselated Quads and Heightmaps (Diamond Square Algorithm)
- Generating MipMaps
- Implementing Cube Maps
- Implementing Environmental Reflection Mapping
- Basic Animation with WebGL
- Particle Systems
Networking & Concurrency
- Zero-MQ and messaging patterns
- Open MP
- Advanced I/O, Threading, Thread Safety and Deadlock Prevention
- Basic Synchronous and Asynchronous Parallel Programming
- Synchronization, Split Locks, Guarded Blocks, Reader/Writer Locks
- Sockets, Servers, Streams
- Basic Networking Protocols
- Implemented a Networked Multiplayer Card Game
Web Development
- Amazon Web Services (Creating and Configuring EC2 Instances)
- Apache
- jQuery, Node.js, Socket.IO, AngularJS, Express, MongoDB, CSS, Bootstrap
- Web Application Security: FIEO,Formatted String Injection, Server Configurations, Password Encryption, Cross Site Request Forgery (tokens), SQL Injection, Cross Site Scripting, Session Hijacking, Packet Sniffing
- mySQL Schema and State
- Html + Javascript: Event Handling, Document Object Models (DOMs), AJAX and JSON
- Static File Servers
- MEAN Stack
Computer Architecture Familiarity
- Number Representations
- Memory Management and Usage
- ISAs
- Assembly Languages (MIPS and x86)
- CALL
- Memory Hierarchies, Cache Performance Analysis
- Synchronous Digital Systems, Boolean Algebra, Finite State Machines
- CPU datapath,control and pipelining
- Virtual Memory
- Raid, Parity and ECC
Other
- Regular Expressions: Implemented in various use cases
- CUDA Development: Minor experience with Kernel Design for Basic Functions (lab work for Computer Architecture course)
- Warehouse Scale Computing: Minor experience w/ Hadoop & MapReduce (course homeworks)