Hello! I'm Kar Rui.
I am a final year undergrad in Computer Science.

I love the software engineering process and am currently exploring Android development!
Currently: G o o g l e Software Engineer Intern

About

I'm an incoming fourth year undergraduate at the National University of Singapore, with expected graduation in December 2019. I am passionate about embarking on learning projects where I dive deep into a new technology and try my best to create something I know I will be proud of.

Even though my main interest is in software engineering, I find design interaction a fascinating field, where engineering and design combines to create an efficient, beautiful, and most importantly usable product. I hope I have managed to do that with my personal website, at least! I have also dabbled in AI, data mining, and natural language processing projects!

When I'm not spending time tinkering with my projects (i.e in front a computer), I can be found playing wonderful board games like Carcassonne, Castles of Burgundy, and most recently Gloomhaven.

Skills

I'm not terrible at:
Java Javascript TypeScript ReactJS NodeJS git Bootstrap
I have dabbled in:
C C++ Python Swift expressJS PostgreSQL

Experience

  • May 2019 - Present

    Software Engineering Intern G o o g l e

    Sorry for the colours. I couldn't help it.
    • Part of the Google Pay team in Singapore
    • Responsible for implementing new features and fixing bugs! :)

    Tech stack:

    Java Android
  • May 2018 - Aug 2018

    Software Engineering Intern (Frontend) INTELLLEX

    A legal tech startup that helps lawyers search faster, keep notes and organise their research better with AI.
    • Implemented new features related to the design overhaul of our main enterprise application
    • In charge of making sure rendered components look the same as the designed prototype
    • Refactored many tightly coupled components into pure functional components, improving efficiency and testability.
    • Participate in product planning and design
    • Wrote clean, well-documented and efficient code and tests

    Tech stack:

    Javascript ReactJS git GitLab
  • Jan 2018 - May 2018

    Teaching Assistant National University of Singapore

    Conduct weekly tutorials and code reviews for CS2103, Software Engineering.
    • Review student’s weekly progress of their module project on their Github pull requests
    • Topics discussed: OO system analysis, modeling and design, implementation, testing, software engineering principles, forming test cases

    Tech stack:

    Java git Github

For a more detailed view, check out my resume

Projects

Here are some samples of my work that I think deserves to be showcased;

  • CAP Calculator A CAP Calculator for NUS students

    A TypeScript React application for NUS undergraduates to calculate their current CAP (Cumulative Average Point), helping them to visualize what grades are needed to hit their goal, or what their current grade is.
    Styles are heavily referenced by the NUSMODS website, as I am pretty much terrible at designing applications like this. The data used in the application is also obtained from NUSMODS and aggregated by me.

    React TypeScript
  • The GUI of the static program analyzer application showcasing a query being evaluated
    Privatized code due to school policy :(

    Static Program Analyzer Just like its name suggests, it does static analysis of a programming language known as SIMPLE

    A C++11 desktop static program analyser application. Worked extensively on the tokenizer and the parser for parsing the given input source code. Made sure code followed design principles such as Open-Closed Principle. Wrote unit, integration and system tests using equivalence partitioning.
    I had a lot of fun writing this program and it may have sparked my interest in compiler theory!

    C++11
  • 🍯 (Jar) A virtual money jar React Progressive Web App

    I was spending too much money on bubble tea and wondered how much I could save if I stopped. Thus began this project, where you can "deposit" money into a virtual money jar instead of spending on (unhealthy) drinks and strive towards a goal (in my case, a PS4).
    I used React for frontend and Firebase as the "backend". I also took the opportunity to write the application in TypeScript, learning as I went. Click here to visit the application and let me know if anything can be improved on!

    React TypeScript
  • Taskrr A task matching (think TaskRabbit) web application.

    The application provides templates for generic common tasks to facilitate task requesters to create new tasks. The web application supports account creation and authentication. There are also queries to do various tasks such as bidding, creating new tasks, or viewing of offers. A detailed report on this project can be found here.

    NodeJS expressJS PostgreSQL Javascript Bootstrap
  • iungo An addressbook desktop application.

    iungo aims to be an addressbook software for command-line aficionados. If you hate using the mouse for every small action, this application is for you! Documentation of what I did can be found here.

    Java
  • Portfolio Version 1 The first version of the website you are looking at now

    An old look for this website. Utilizes Bootstrap and jQuery to create a responsive website with design principles in mind. The old version can still be found at this link (but unmaintained), check it out and tell me which one you prefer!

    jQuery Bootstrap Javascript
  • Chope God iOS App; Hack & Roll 2018 Hackathon "Top 8" Winner.

    A prototype app hacked together in 24 hours to use Augmented Reality to help reserve seats at a meeting room or table, and also view which places are already taken from far away. We use a GPS location to save the pin that you drop and certain places can only be reserved for a certain amount of time to be fair to others.

    Swift
  • AI Tetris Java desktop application where an AI plays Tetris without human input.

    Wrote the Particle Swarm Optimization algorithm to find best weights for a linear function of features in order to maximize the number of rows cleared by the AI. Program averages around 1 million rows cleared after 24 iterations of the training algorithm. A summary report of the implementation of the logic can be found here.

    Java

Want to chat?

Write to me at karrui.lau@gmail.com, or fill in the contact form below!