Lights Out

Two months ago, I got to use D3 to help visualize the steps for getting something approved and interact with these steps. I affectionally call my code Roadmap.

roadmap-screenshot
An everyday example.

I had a great time because (1) the way we draw things in D3 reminded me of Matlab, whom I will always love; (2) I got to re-learn graph theory (fun fact: all digraphs have a topological sort—being able to sort is always nice and being able to in linear time even more so); and (3) I got to play with Post-it notes to make up an algorithm for drawing graphs on desktop and mobile.

roadmap-planning.jpg
Office supplies to the rescue.

I also had a hard time finding out how to use D3 in Ember. Because Ember is rather a rare species, there was only 1 tutorial that helped me understand what I needed to do. Thanks to that tutorial, I was able to create a prototype of Roadmap over a weekend, use Ember’s mixin feature effectively, and write extensive tests to show that Roadmap really works. In case you want to learn Ember and D3, let me show you what I learned.

We will create a game from the 90s called Lights Out. The game consists of a 5 x 5 grid of lights, which you can press like buttons. When the game starts, some of the lights are on. When you press a light, that light and its adjacent ones—top, right, bottom, and left, if they exist—are switched from on to off, or off to on. The goal of the game is for you to turn off all lights, preferably in as few moves as possible.

Continue reading “Lights Out”

Advertisements

Infinite You

For my tenth speech in Toastmasters, I wanted to tackle a difficult technical idea and turn it into something personal and inspiring to everyone. That idea is none other than the many-worlds interpretation.

Continue reading “Infinite You”

p@55w0rd$: Part 2

Last time, we looked at how passwords work. To confirm your identity, companies salt your password, they hash the salted password, and they check your hash. (For brevity, I won’t mention salts anymore. Assume that salts are used.)

We left out 3 important questions.

1. Can a hacker find out our passwords from hashes?

Yes and no. We will see that a hash function that is designed well acts like a trapdoor. We can change passwords to hashes, but there is no way to change hashes back to passwords. However, the hacker can still make guesses at our passwords and check which ones result in the stolen hashes. We call this an attack. I will cover 2 ways to make an attack.

2. Can the hash function stop attacks?

Yes, a hash function that is designed well makes attacks difficult. I will explain what I mean by a good design.

3. What can we do to protect ourselves?

We can’t completely rely on the hash function to protect us. We have to be vigilant, too. I will show you how to create good passwords and keep your accounts safe.

Continue reading “p@55w0rd$: Part 2”

p@55w0rd$: Part 1

There are many things we need to function every day: love, family and friends, good health, puppies, Toastmasters. There is one more: passwords. Think about it. We use passwords every day, when we check our computer, phone, email, Facebook, Twitter, bank account—basically, anything that represents us. Passwords are valuable.

Continue reading “p@55w0rd$: Part 1”

Braille in Modern World

You may have seen braille in elevators and on ATMs and door signs, but brushed it off as something that’s for blind people and not for you. As a student, you may have seen braille in a math problem involving patterns and binary choices. As a puzzle enthusiast, you may have seen braille in a decryption challenge. But is that all there is to braille?

For an upcoming Toastmasters speech, I decided to get to know braille, by researching and interviewing locals who professionally work with people who are blind and visually impaired. Surprisingly, the more I looked into braille, the more I realized its diminishing role in the modern world. I want to address the problem today.

Continue reading “Braille in Modern World”