<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Rachel Gan]]></title><description><![CDATA[I like to design, build, code]]></description><link>https://rachelgan.com/</link><image><url>https://rachelgan.com/favicon.png</url><title>Rachel Gan</title><link>https://rachelgan.com/</link></image><generator>Ghost 2.1</generator><lastBuildDate>Tue, 21 Apr 2026 17:17:03 GMT</lastBuildDate><atom:link href="https://rachelgan.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[01.112 Machine Learning]]></title><description><![CDATA[<p>What I have learned from this ML project: Viterbi Algorithm is easier to code once you draw the flow. </p><p>Term 6 marks the official start of my business analytics track. It's the term of math, math and more math. As the prof usually says in class, "Machine learning is nothing</p>]]></description><link>https://rachelgan.com/01-112-machine-learning/</link><guid isPermaLink="false">5c172cfe2067060c5801d96d</guid><category><![CDATA[School Projects]]></category><dc:creator><![CDATA[Rachel Gan]]></dc:creator><pubDate>Wed, 26 Dec 2018 04:51:01 GMT</pubDate><media:content url="https://rachelgan.com/content/images/2018/12/Screenshot-2018-12-26-at-12.52.43-PM.png" medium="image"/><content:encoded><![CDATA[<img src="https://rachelgan.com/content/images/2018/12/Screenshot-2018-12-26-at-12.52.43-PM.png" alt="01.112 Machine Learning"><p>What I have learned from this ML project: Viterbi Algorithm is easier to code once you draw the flow. </p><p>Term 6 marks the official start of my business analytics track. It's the term of math, math and more math. As the prof usually says in class, "Machine learning is nothing but learning functions". This course was a good introduction on the models in machine learning as well as the project which gave me a greater insight on how to transform the mathematical formulas to code and to apply the code to predict. </p><p>In this project, we focused on building two simple NLP systems - a sentiment analysis system and phrase chunking system for Tweets. It was mainly designing a sequence labelling system. </p><p>We learned the Hidden Markov Model (HMM) in class which is a simple structured prediction model and we mainly used this in our project. </p><p>The HMM discussed in class is defined as the following equation: </p><p>$$p(x_1,..., x_n, y_1,...,y_n) = \prod_{i=1}^{n+1} q(y_i|y_{i-1}) • \prod_{i=1}^n e(x_i|y_i)$$</p>
<p>where $y_0$ = START , $y_{n+1}$ = STOP , $q$ are the transition probabilities and $e$ are the emission parameters.</p>
<p>To estimate the emission parameters, the number of times a tag <em>y </em>emitted a word <em>x </em>are counted and stored in emission_count_dict dictionary as a tuple (word, tag). y_count_dict stores the number of times a tag has appeared in the training file provided. For words that appear in the test set but not in the training set, they are known as unknown words and we replaced the word with #UNK# and smoothed the emission. </p><p>To estimate the transition parameters, the number of times a tag <em>y </em>appears and transition from previous tag to current tag are counted in the training set.</p><p>Using the estimated transition and emission parameters, the <strong>Viterbi Algorithm</strong> was implemented. Each node stores its parent node and the maximum probability to reach that node. </p><h3 id="second-order-hmm">Second Order HMM</h3><figure class="kg-card kg-image-card"><img src="https://rachelgan.com/content/images/2018/12/image.png" class="kg-image" alt="01.112 Machine Learning"></figure><p>In second order HMM, the transition probabilities are changed to include the previous two tags while the emission parameters remains the same (as shown in the figure above). </p><p>To train model using second order Viterbi algorithm, instead of assign maximum score to each node, we assign maximum score to each [prev_tag, curr_tag] pair. In backtracking algorithm, we iterate through each [prev_tag, curr_tag] pair, and choose the pair which gives maximum score. The time complexity of this algorithm is $O(NT^3)$ where N is the number of words and T is the number of tags.</p><p>When multiplying probabilities, it is bound to reach values close to 0 since it gets smaller and smaller with every multiplication. A way to address numerical underflow issue is to sum the log of the probabilities instead of calculating the product of the probabilities.  </p><p><strong>Design Challenge</strong></p><p>For our Design Challenge, we used Structured Perceptron to improve the accuracy of our English dataset and a better smoothing method - Good Turing Estimation for our French dataset. </p><p></p><p>Github Project Repo: <a href="https://github.com/rgan19/01.112_ML_Project">https://github.com/rgan19/01.112_ML_Project</a></p><p>Modules I took this term: Optimisation, Machine Learning, The Analytics Edge</p>]]></content:encoded></item><item><title><![CDATA[SIAM! - A multiplayer real time party game]]></title><description><![CDATA[<p>Who wants to do actual work to get recognition? Why not get someone else to do the work for you and then take all the credit? In SIAM! you are an office employee, and you have your eyes on the Employee of the Month award ‐ but you don’t want</p>]]></description><link>https://rachelgan.com/siam-a-multiplayer-real-time-party-game/</link><guid isPermaLink="false">5bab16022067060c5801d964</guid><category><![CDATA[School Projects]]></category><dc:creator><![CDATA[Rachel Gan]]></dc:creator><pubDate>Wed, 26 Sep 2018 05:39:11 GMT</pubDate><media:content url="https://rachelgan.com/content/images/2018/09/GameLandingScreen-4.png" medium="image"/><content:encoded><![CDATA[<img src="https://rachelgan.com/content/images/2018/09/GameLandingScreen-4.png" alt="SIAM! - A multiplayer real time party game"><p>Who wants to do actual work to get recognition? Why not get someone else to do the work for you and then take all the credit? In SIAM! you are an office employee, and you have your eyes on the Employee of the Month award ‐ but you don’t want to actually earn it. Dodge, sabotage and deflect work to your co‐workers as you SIAM your way to victory!</p><p><strong>Game Information</strong></p><p>SIAM is an android based party game meant for 2‐4 players that can be played over a network. Players can host and / or join game rooms to compete against each other. Our ideal user age is 13+ years old. This was created using Unity. </p><figure class="kg-card kg-image-card"><img src="https://rachelgan.com/content/images/2018/09/GameChar-1.JPG" class="kg-image" alt="SIAM! - A multiplayer real time party game"></figure><p><strong>Game UI</strong></p><figure class="kg-card kg-image-card"><img src="https://rachelgan.com/content/images/2018/09/GameLandingScreen-3.png" class="kg-image" alt="SIAM! - A multiplayer real time party game"><figcaption>Landing Screen</figcaption></figure><figure class="kg-card kg-image-card"><img src="https://rachelgan.com/content/images/2018/09/GameLobby-2.png" class="kg-image" alt="SIAM! - A multiplayer real time party game"><figcaption>Lobby Scene</figcaption></figure><figure class="kg-card kg-image-card"><img src="https://rachelgan.com/content/images/2018/09/GameTaichi-2.png" class="kg-image" alt="SIAM! - A multiplayer real time party game"><figcaption>Taichi activated</figcaption></figure><figure class="kg-card kg-image-card"><img src="https://rachelgan.com/content/images/2018/09/GameArrow.png" class="kg-image" alt="SIAM! - A multiplayer real time party game"><figcaption>Arrow fired</figcaption></figure><p><strong>Software Development Life Cycle</strong></p><p>The AGILE software development process was used. As the game assets were being produced, we used simple shapes such as cubes and spheres to represent our game objects in order to do testing. Game mechanics such as movement of characters were tested with classmates for ease of controls, so that we can find out which type of control (virtual joystick or click to point to move) suited the game best. Multiple iterations of our game core mechanics were also changed based on feedback to scale the difficulty of the game.</p><p></p><p>While coding the networking for this game, I had a number of issues which took some time to fix. I might add the reflections here or in another post soon. </p><p>Github link to the game <a href="https://github.com/rgan19/Siam">here</a>.</p><p>Introduction video can be found on YouTube <a href="https://youtu.be/DXaXZg5mVnw">here</a>.</p>]]></content:encoded></item><item><title><![CDATA[Singapore Travel App - Android]]></title><description><![CDATA[<p></p><p>Introduction to Information Systems and Programming in Term 4 had another project: Android App. We were supposed to create an app to help aid tourists who might need help getting around Singapore. The app was supposed to include some features that we learnt in Java such as - implicit intent,</p>]]></description><link>https://rachelgan.com/singapore-travel-app-android/</link><guid isPermaLink="false">5bab101a2067060c5801d960</guid><category><![CDATA[School Projects]]></category><dc:creator><![CDATA[Rachel Gan]]></dc:creator><pubDate>Wed, 26 Sep 2018 04:55:55 GMT</pubDate><media:content url="https://rachelgan.com/content/images/2018/09/travelhomeimage.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://rachelgan.com/content/images/2018/09/travelhomeimage.jpg" alt="Singapore Travel App - Android"><p></p><p>Introduction to Information Systems and Programming in Term 4 had another project: Android App. We were supposed to create an app to help aid tourists who might need help getting around Singapore. The app was supposed to include some features that we learnt in Java such as - implicit intent, preference fragment, SQLite Database, parsing JSON. We also had to include an algorithms segment where given a certain budget and places of interest, the optimised path would be shown. </p><p>I was pretty happy that I managed to make a decent main page. This was using scroll view.</p><figure class="kg-card kg-image-card"><img src="https://rachelgan.com/content/images/2018/09/travelhome.gif" class="kg-image" alt="Singapore Travel App - Android"><figcaption>Home Page</figcaption></figure><p>The places of interests were displayed using a recycler view. Clicking on the picture (of course not here but in the app) would lead to a Google page of the place and the location would lead to Google maps. </p><figure class="kg-card kg-image-card"><img src="https://rachelgan.com/content/images/2018/09/travelplaces.JPG" class="kg-image" alt="Singapore Travel App - Android"><figcaption>Places of Interest</figcaption></figure><p>This is the "Getting Around" section where we just used 5 places for the algorithm to create the shortest path within the budget. There were other features such as SQLite Database was used to track the spending of a traveler in the country. The "Events" in Singapore lead to a Singapore Tourism webpage. </p><figure class="kg-card kg-image-card"><img src="https://rachelgan.com/content/images/2018/09/travelalgo.jpg" class="kg-image" alt="Singapore Travel App - Android"><figcaption>Setting a budget and choosing the locations would calculate the optimised path to visit the places of interest.</figcaption></figure><p>It was fun to make this simple app which was to help consolidate and apply our learnings in class. </p>]]></content:encoded></item><item><title><![CDATA[Matha-Match-It: A Computational Structure Project]]></title><description><![CDATA[<p>This was another project we did in Term 4 (my first term being in ISTD) which was quite overwhelming at times. The aim of this project was to create an 8-bit ALU game using a FPGA (Field Programmable Gate Array). We used a Mojo FPGA and code written in Lucid</p>]]></description><link>https://rachelgan.com/matha-match-it/</link><guid isPermaLink="false">5bab0eac2067060c5801d95e</guid><category><![CDATA[School Projects]]></category><dc:creator><![CDATA[Rachel Gan]]></dc:creator><pubDate>Wed, 26 Sep 2018 04:49:04 GMT</pubDate><media:content url="https://rachelgan.com/content/images/2018/09/compstruct-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://rachelgan.com/content/images/2018/09/compstruct-1.png" alt="Matha-Match-It: A Computational Structure Project"><p>This was another project we did in Term 4 (my first term being in ISTD) which was quite overwhelming at times. The aim of this project was to create an 8-bit ALU game using a FPGA (Field Programmable Gate Array). We used a Mojo FPGA and code written in Lucid to describe the circuits and logic. </p><p><strong>Short Version of Game Description: </strong>Matha-Match-It relies on responsive interaction and simple operations. Involving 10 Light-Emitting Diodes to indicate ten levels, the user employs a limited number of operations to reach the end of the game. </p><p><strong>Long Version of Game Description: </strong>Matha-Match-It is a primarily a mathematics calculation game where quick thinking and reflexes are necessary. The player has to hit the target number given by choosing numbers and mathematical operations. At the start of the game, the player is given 10 lives and every mathematical operation used reduces a life. Taking too long to choose a number (more than 40 seconds) would also reduce a life. The aim of the game is to hit the target number and move to the next round where another target number will be given. Once all 10 lives are gone, the player loses the game. </p><figure class="kg-card kg-image-card"><img src="https://rachelgan.com/content/images/2018/09/compstruct.png" class="kg-image" alt="Matha-Match-It: A Computational Structure Project"><figcaption>The final product</figcaption></figure><p>We actually laser cut the acrylic for the casing at first but after all the changes to the cables, it became too small for to encase the entire circuit. </p><figure class="kg-card kg-image-card"><img src="https://rachelgan.com/content/images/2018/09/CSlaser.png" class="kg-image" alt="Matha-Match-It: A Computational Structure Project"><figcaption>Acrylic Casing</figcaption></figure><figure class="kg-card kg-image-card"><img src="https://rachelgan.com/content/images/2018/09/CS3D.png" class="kg-image" alt="Matha-Match-It: A Computational Structure Project"><figcaption>Then this is the final version where the casing is 3D printed (it takes a much longer time than laser cutting the acrylic).&nbsp;</figcaption></figure><p>I enjoyed this project as it was a change, something fresh from all the coding and software applications.</p>]]></content:encoded></item><item><title><![CDATA[FastOut - An Intro to Information Systems and Programming project]]></title><description><![CDATA[<p></p><p>Term 4 in ISTD was definitely one crazy term yet fulfilling. There were numerous projects throughout the term but this was one of my favourites. For the project, we were supposed create something related to IoT as the base as we brainstormed, we wanted to reduce the long wait time</p>]]></description><link>https://rachelgan.com/fastout/</link><guid isPermaLink="false">5ba4ca6a2067060c5801d953</guid><category><![CDATA[School Projects]]></category><dc:creator><![CDATA[Rachel Gan]]></dc:creator><pubDate>Wed, 26 Sep 2018 04:33:25 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1534497977663-a73dfabd7774?ixlib=rb-0.3.5&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ&amp;s=0881a014fb21de27f457de451b2b1cb1" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1534497977663-a73dfabd7774?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ&s=0881a014fb21de27f457de451b2b1cb1" alt="FastOut - An Intro to Information Systems and Programming project"><p></p><p>Term 4 in ISTD was definitely one crazy term yet fulfilling. There were numerous projects throughout the term but this was one of my favourites. For the project, we were supposed create something related to IoT as the base as we brainstormed, we wanted to reduce the long wait time at shops. We created an app that would make calls to Firebase which we used to store data (and hence there's no source code posted on github either). </p><p><strong>About The Project</strong><br>FastOut is an application that allows consumers to pay for items through their phone without queuing. Store owners can also audit inventory and view related data. ​Participating retailers provide QRCodes for their products and their own store; and consumers can pay for their items using their existing PayPal account or credit cards. </p><p>After logging in, customers will have to scan the shop's QR code (shown by the surfaceview) which will retrieve the database. They will be able to add items to their shopping cart by scanning the product's QR code.  </p><p>Items will be added to the shopping cart and after payment, the receipt could be sent to the email.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://rachelgan.com/content/images/2018/09/FOlogin-2.JPG" width="346" height="580" alt="FastOut - An Intro to Information Systems and Programming project"></div><div class="kg-gallery-image"><img src="https://rachelgan.com/content/images/2018/09/itemadd.JPG" width="349" height="581" alt="FastOut - An Intro to Information Systems and Programming project"></div><div class="kg-gallery-image"><img src="https://rachelgan.com/content/images/2018/09/receipt.JPG" width="347" height="581" alt="FastOut - An Intro to Information Systems and Programming project"></div></div></div><figcaption>Examples of the user interface</figcaption></figure><p></p><p>FastOut Management allows businesses to manage their products. Businesses are able to add, remove and edit items. QR codes will be generated and stored in the phone when they add new items. </p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://rachelgan.com/content/images/2018/09/FOMitems.JPG" width="362" height="662" alt="FastOut - An Intro to Information Systems and Programming project"></div><div class="kg-gallery-image"><img src="https://rachelgan.com/content/images/2018/09/FOMtop.JPG" width="366" height="654" alt="FastOut - An Intro to Information Systems and Programming project"></div></div></div></figure>]]></content:encoded></item></channel></rss>