Hi! I'm Tim, a Software QA Engineer at Apple and CS graduate student based in Los Angeles, California. I'm actively looking for opportunities in San Jose, Cupertino, Mountain View, Palo Alto, and the Santa Clara Valley in engineering. I'm most interested in roles where I can utilize my quality engineering, user experience testing, and software development background to contribute to innovative products and improve product quality.
One thing you may notice from this page is that I'm always learning. I earned my Bachelor's degree in Sociology from UCLA in 2009. From there, I've been steadily pursuing a career in the tech sector, learning through a combination of formal education, independent study, and on-the-job experience. The opportunities in online education have allowed me to build a strong foundation in computer science, gaining certificates in Ruby on Rails, Python programming, frontend development, and machine learning from accredited universities. I'm also in my second year of a CS Master's program at Georgia Tech through their OMSCS program, specializing in Interactive Intelligence, and currently studying human-computer interaction.
Want to get in touch? Email me or reach out using any of the social buttons in the footer. Hope to hear from you soon!
I'm currently working on this application, and I'm excited to release version 1.0 early in 2018. It's a Ruby on Rails app for home brewers to record, share, and discover beer recipes. I brewed my first batch earlier this year and look forward to brewing more; I just want to have clean and more interactive way of recording my recipes first. Version 1.0 will feature an intuitive frontend design for recording beer recipes, with additional features focused on collaboration and sharing to be released soon after.
Technologies used: Ruby on Rails, JavaScript, jQuery, HTML/CSS, RSpec, Factory Girl, Devise, Guard, Shoulda-Matchers
My team and I created this Android app for course 6300 Software Development Process in the Georgia Tech CS Masters Program. The actual implementation of the app was just the final week of a four-week process of requirements engineering, architecture design, interface design, and data structure modeling. The requirements for the project were that our app needed to be able to run a single-elimination tournament, keeping track of who wins, what the prizes are, and who receives each prize.
Technologies used: Android Studio/SDK, Java, JUnit
Unfortunately, I can't share code for any Georgia Tech assignments.
In 6400 Database Systems Concepts and Design at Georgia Tech, my team and I created this MAMP (Mac/Apache/MySQL/PHP) application for our final project. The web app supports the administrative duties of staff and volunteers at soup kitchens, shelters, and food banks, enabling easier meal inventory/transfer and bunk availability tracking, client check-ins, and many other features.
Technologies used: MySQL, Apache, PHP, PHPMyAdmin, HTML/CSS
Unfortunately, I can't share code for any Georgia Tech assignments.
In this project from Udacity's Frontend Nanodegree program, I utilized the HTML5 canvas, a looping engine, and object-oriented JavaScript to create a Frogger-like game. Use the arrow keys to move the player from the bottom of the map to the water, without getting hit by any of the bugs!
This was a project I did for the Udacity Frontend Nanodegree. The requirements were to utilize the Google Maps API, KnockoutJS (a JavaScript implementation of the Model-View-ViewModel pattern), and a third party API of our choosing, and show a few of our favorite restaurants.
Technologies used: Google Maps API, KnockoutJS, FourSquare API, JS/HTML/CSS
Username-checker is an app I started working on to help with a personal need. I wanted to have one tool that could help me choose one username for all the various online profiles I have (GitHub, StackOverflow, etc.). It was also a good opportunity to brush up on my RegEx skills to validate usernames according to each site's rules, and was also good practice in handling various HTTP response codes.
My teammate and I created this Rails application for the final project of the Ruby 310 course in University of Washington's Ruby Development program. PackTracker enables groups to consolidate supplies before starting a camping, hiking, or really any kind of trip together.
Technologies used: Ruby on Rails, Bootstrap, Devise, JS/HTML/CSS
As an online student, I wanted to find the most efficient and effective way to watch lectures and take notes. When I realized I was spending a lot of time manually typing the words of the instructor, I thought there had to be a better way. For this reason, I put together a quick Python script that takes as input all transcript files from a Udacity course, parses them, reformats them, and outputs HTML files which can then be batch-imported into the Mac Notes app (or any app that allows HTML imports). I then use these notes as a starting point while I watch lectures, and I make changes to the format whenever it makes sense. The script also outputs transcripts as CSV files so that students can batch upload them to Brainscape to automatically generate flashcards, which can later be edited, added to, or deleted. More details and instructions can be found at the GitHub link below.
Technologies used: Python, PySRT, CSV, OS
A simple React app I created, following the tutorial provided by Facebook, in an effort to familiarize myself with ReactJS.
This site (the one you're on right now) uses a Bootstrap template with some customization. I wanted to develop my own portfolio site to learn a new build tool called Nunjucks, which I had read about for the first time recently, and to use NodeJS. Nunjucks enabled me to separate content from views, keeping all of my data in a separate JSON file, and using Nunjucks to populate my HTML templates dynamically.
Technologies used: HTML/CSS, Nunjucks, Bootstrap
One year in, Georgia Tech's OMSCS program has proven to be as great an opportunity as I imagined. It has helped strengthen my software engineering foundation while also diving into advanced topics that I can apply in everyday work situations. My chosen specialization is Interactive Intelligence, which covers Machine Learning and Artificial Intelligence with an emphasis on human-computer interaction. I'm on track to finish the program at the end of 2019 while working full time, and am excited for the remainder of my coursework.
Final Grade: In progress
Instructor: David Joyner (bio)
This course is an introductory course on human-computer interaction. It covers three broad categories of topics within human-computer interaction: (a) the principles and characteristics of the interaction between humans and computers; (b) the techniques for designing and evaluating user-centered systems; and (c) current areas of cutting-edge research and development in human-computer interaction.
Final Grade: A
Instructor: Maria Konte (bio)
This project-based course explores research topics in computer networking, primarily at the IP layer and above. Students gain exposure to burgeoning areas of computer networking and learn how to use the tools commonly used today for networking research, such as BGP routing techniques, network security, and software-defined networking.
Topics: internet architecture and principles, switching, protocols such as TCP/IP, UDP, and BGP, autonomous systems, internet exchange points (IXP's), routing, DNS, congestion control, content distribution, routing algorithsm such as spanning tree and shortest path, software-defined networking (SDN), traffic engineering, network security, and worms/spam/DoS attacks
Final Grade: A
Instructor: Jay Summet (bio)
This course teaches students the key concepts and practices of the database application development methodology through the creation of a major real-world project. All the database concepts, techniques and tools that are needed to develop a database application from scratch are covered along the way. In addition to the development methodology, techniques and tools learned in this course include the Extended Entity Relationship Model, the Relational Model, Relational algebra, calculus and SQL, database normalization, efficiency, indexing, and techniques and tools for metadata management and archival.
Topics: database fundamentals, DB application development process, extended entity-relationship model, relational model, EER/relational mapping, normalization, relational algebra and calculus, SQL, efficiency, implementation, and metadata
Final Grade: A
Instructor: Alessandro (Alex) Orso (bio)
This course provides an in-depth study of the process of developing software systems, including the use of software processes in actual product development, techniques used to ensure quality of the software products and maintenance tasks performed as software evolves. By the end of the course, students will understand the role of software processes in the development of software and will have experienced several types of processes, from rigid to agile. Students will also become familiar with a variety of modern technologies and development techniques and understand their connection to software processes, and also gain hands-on experience in white-box and black-box testing.
Topics: software lifecycle, project management, design activities and products, IDEs and version control, requirements engineering, object-oriented engineering/UML, Android application development, software architecture, software design, design patterns, Unified Software Process, software testing (black box, white box, test coverage, tools & techniques), Agile development, refactoring
The Frontend Nanodegree program from Udacity, in partnership with Google and AT&T, gives students in-demand tools needed across every industry. Students will be prepared for roles at a wide array of companies, from startups to global organizations.
This course provides a broad introduction to machine learning, data mining, and statistical pattern recognition. Topics include: (i) Supervised learning (parametric/non-parametric algorithms, support vector machines, kernels, neural networks). (ii) Unsupervised learning (clustering, dimensionality reduction, recommender systems, deep learning). (iii) Best practices in machine learning (bias/variance theory; innovation process in machine learning and AI). The course will also draw from numerous case studies and applications, so that you'll also learn how to apply learning algorithms to building smart robots (perception, control), text understanding (web search, anti-spam), computer vision, medical informatics, audio, database mining, and other areas.
The Certified Quality Engineer (CQE) is a professional who understands the principles of product and service quality evaluation and control. This body of knowledge and applied technologies include, but are not limited to, development and operation of quality control systems, application and analysis of testing and inspection procedures, the ability to use metrology and statistical methods to diagnose and correct improper quality control practices, an understanding of human factors and motivation, familiarity with quality cost concepts and techniques, and the knowledge and ability to develop and administer management information systems and to audit quality systems for deficiency identification and correction.
This 9-month, 3-course program teaches students everything they need to build reliable, scalable, user-friendly Ruby on Rails applications from design to deployment and beyond. HTML, JS, and CSS knowledge are required at the start, and these skills are reinforced along the way. Upon completion, students will be able to rapidly prototype web applications using Ruby on Rails, while understanding the principles of the field to be able to adapt to any number of alternative frameworks. Lectures in the UW program were broadcast live via Adobe Connect web conference where around 10 students viewed and actively participated in discussions.
Ruby 310 covered a wide range of advanced topics in Ruby on Rails development. For the group project, I worked with a classmate on a Rails app called PackTracker, which is listed in the Projects section of my site. The course concluded with an individual project and presentation, where I researched and reported on how to optimize a website's mobile-friendliness using responsive design in order to improve UX and boost its ranking in Google's search algorithm.
Topics: OAuth, third party integration, building APIs, background jobs, performance and optimization, advanced JavaScript, deployment and maintenance, alternative frameworks
Ruby 210 was where we began to apply what we learned about the Ruby language in Ruby 110 to create Ruby on Rails applications. Throughout the course we created several Rails applications from single-page joke generators to medical records data trackers.
Topics: Rake, gems, environments, Git, routes, namespacing, models/views/controllers, partials, pair programming, workflows, scaffolding, JavaScript, JQuery, ActiveRecord and SQL, authentication/sessions, mailers, job queues, REST APIs, test-driven development using Rspec, deployment/hosting strategies
The first course in the UW Ruby on Rails Certificate program focused on the Ruby language, object-oriented design, test-driven development, and a brief intro to the Rails framework.
Topics: data types (String, Hash, Array, etc.), control flow statements and iteration, object-oriented design, methods and blocks, classes and objects, recursion, and dynamic types. With these tools, we also explored more advanced subjects such as test-driven development, web scraping, meta-programming, DSLs, regular expressions, ActiveRecord ORM
Understanding client-relational database design is vital to system design and implementation. This course teaches relational database technology, data modeling, SQL, data normalization, and the translation of logical designs to physical storage structures. Additional topics include indexes, storage management, transactions, database integrity, concurrency control, recovery, client/server relational database management, and introduction to query optimization.
This course covers the basics of computer programming in Python and the fundamentals of computation. Taught by Eric Grimson, former Chancellor of the Massachusetts Institute of Technology, this class provided me with an incredible opportunity to build a strong foundation in computing and computer science from a world class institution, and inspired me to search for similar opportunities in the years that followed.
Founded in 1948, the UCLA Sociology department has been on the cutting-edge of sociological research in a rich array of subfields. U.S. News and World Report consistently ranks UCLA among the top sociology departments in the nation. The faculty occupy national and international leadership positions and have earned the highest recognition from professional associations, including the American Sociological Association, the National Academy of Sciences, and the American Academy of Arts and Sciences. Students go on to apply their sociological training in a broad range of careers, while making amazing contributions to their communities