Author: mattchung

  • Linear algebra check in

    I signed up for linear algebra online course through the University of North Iowa, where I’ll be taking my second university level math course, the first being discrete mathematics. I enrolled in this course because it’s a fundamental course that’s typically required of all aspiring computer science students. Moreover, linear algebra is essential (from what I hear) for taking upper division computer science courses such as machine learning.

    Up until now, I’ve expressed interested in machine learning. However, polled my colleagues, asking them what they consider their favorite computer science course and an overwhelming majority voted for machine learning. So with that in mind, coupled with the fact that Amazon offers a machine learning university for full time employees, I figure I should establish a foundation in the mathematics required for machine learning so that in the future, say my second or third year into my masters (at Georgia Tech OMSCS), I can enroll in the course knowing that I’ve met the underlying requirements.

    What’s funny is that a few years ago, about five or six, I had asked my uncle (who’s a rocket scientist at Boeing) what mathematics course I should take in preparation for a masters in computer science. This is long before I officially applied for a masters, when I was just toying with the idea of returning back for academia to pursue a masters in computer science. Anyways, he had recommended that I take linear algebra but to be honest, at that time, I was intimidated since I have mixed feelings when it comes to my mathematical maturity.

    Because when I was a young boy, and up until high school, I (in a sense) flourished in mathematics. I considered it one of my easiest subjects, from elementary all the way up until my senior year in high school. I would sit down at the table, quickly scribble in my answers, with relatively no effort.  But looking back, I never truly took the time to understood mathematics: not algebra, not geometry, not trigonometry, not calculus. None of it.  Did I score high on the homework and exams? Yes. But back then, I had zero desire to understand how or why I was solving the problems or learning the subject. And because math “came easy” to me, I blasted through all the homework, many times solving the problem based off of intuition only. This type of mentality handicapped me later on in my senior year of high school, in AP Calculus. This course kicked me in the butt. Like other high level courses, calculus built on top of other branches of mathematics, courses that I had taken the previous years. And because I didn’t put in the effort in those other courses, I found myself completely lost and confused and frustrated during calculus. I mean, I could mechanically solve for the derivative or integral, but I had zero clue as to why I was doing it and I had zero clue of how to apply these concepts.

    Anyways, I’m now taking linear algebra and like other areas of my life, rebuilding my relationship — with mathematics. So far, I’m about three weeks into the course, the three weeks focusing on the following topics: adding matrices, multiplying matrices, converting matrices to echelon form, converting matrices into row echelon form, and transposing matrices from one dimension to another.

  • Admitted into Georgia Tech Master’s in Computer Science

    On Tuesday, I received an e-mail notification from Georgia Tech, informing me that after 5:00 PM EST, I would be able to check the status of my OMSCS (Online Masters of Science in Computer Science) application, whether I was accepted or rejected. So during dinner, with Jess sitting next to me in the cozy booth of the ramen restaurant, I pulled up the PDF attachment that I received from Georgia Tech on my iPhone, the words “Congratulations Matt” inked across my screen. Accepted!!!

    I’m ecstatic. Because for the past 5 years, the idea of tackling a master’s in computer science has been lurking in the back of my mind. Like Jess had said, “It’s a scratch you need to itch.”  And it’s fair to say that I was never 100% committed to the idea. I think some of the hesitation stemmed from my own fear and insecurities, since I didn’t study CS during my undergraduate degree.  But after taking undergraduate computer science courses (e.g. computer organization, data structures, discrete mathematics, linear algebra), I’m convinced that learning more about my craft is something I want to dedicate myself to.

    Anyways, I’ve already started reading through the different course descriptions and decided to to take Introduction to Operating systems as my first course, assuming that I can enroll in January (i.e. Spring 2019) without being waitlisted. Oh well, only time will tell.

     

  • Friday night arguments

    My wife’s parents told us that when they first moved in together, they noticed that when they argued with one another, the arguments normally took place on Friday evenings.  And when they became aware of this pattern, the two of them agreed to shelve any important discussions for the next day. And surprisingly, this worked for them. What’s even more interesting is that my wife and I encountered a similar situation: we too would argue on Friday evenings, which made no sense to me.  But I think I may know why.

    I’m reading a book that I picked up at my library yesterday, a book titled When (by Daniel H Pink).  Although I’ve only read through the a dozen or so pages, the author explains how researchers identified that people (all over the world, different races and different genders and different religions) felt the happiest during the morning, the happiness peaking at noon and then plummeting to it’s lowest point in the evening: around 5pm. And although I’ve only read through the first few pages, this new piece of information alone leads me to believe that this steep decline in positive energy correlates to arguments that pop up what should be the happiest time of day: Friday evenings.

    Anyways, I’m going to continue reading the book (it is quite gripping) and report back. And if I’m right about the Friday evening situation, then I’ll create a habit to defer any important discussions to Saturday morning. Let’s see.

  • Libraries are love

    Earlier this evening, I neatly stacked my unbounded 200 page textbook onto the document feeder of a waist high scanner, converting a college Linear Algebra book from physical form into a 40 megabyte colored PDF — all within 3 minutes. And best of all: it was free! That’s right, I didn’t pay a single penny, thanks to my local library, which is somehow stocked with a blazing fast multi functioning scanner, a Sharp MX-4070 that sells for $15,000.  Tapping into the free resources that my library offers reminded me just how amazing libraries are. And after I scanned my book, I strolled up and down a couple aisles, running my fingers horizontally across book spines, settling on three books that caught my attention: “When” by Daniel H. Pink, String Theory by David Foster Wallace, and “Where the Past Begins” by Amy Tan. These three books are now sitting on the corner of my desk, within arm’s reach, books that I’ll cycle through over the next couple weeks.

    Anyways, today’s experience served as a reminder of how magical libraries are and how, instead of buying new books that often lay on my shelf collecting dust, I should stroll down to my local library and lap into an incredible, free resource.

  • “I’m not going to raise my kids the way my parents raised me”

    We’ve all heard people, including me, say “I’m raising my kids differently” or “I’m never going to raise my kids the way my parents raised me”. I hear that all the time. But, have you ever heard someone say “I’m going to raise my kids just like my parents raised me”.

    I doubt it.

    I’ve never heard anyone mouthed those words.

    I think it’s because we as a society often focus on all the negative ways in which our parents raised us, recalling all the drama and trauma that afflicted us. And in reaction to that trauma, we announce that we will behave differently, raise our kids differently. For example, if often goes like this: someone was abused (physically or emotionally) by their parent and then take every measure to ensure that they do not abuse their child. Or someone felt that their parents hovered over them too much, controlled every element of their life; and as a result, they create a house in which liberty exists, a sense of freedom.  In a way, that’s great — the next generation reaps those benefits. But still, it’s an act in opposition.

    But what about passing on positive life lessons that we want to pass on? The good stuff that we want to continue ?

  • My first singing (and guitar) recital

    This past Saturday, I sang and accompanied myself on the guitar, my first time singing in front of a crowd of about 20 people.  I played my arrangement of one of my favorite songs: No Regrets by Mike Love.

    Leading up to the actual performance, so many nerves and anxiety ran through my body. What if I mess up? What if I forget the lyrics? Minutes before I took the stage, my brain started playing tricks on me, suddenly unable to recall the lyrics to the chorus, despite me practicing this song probably over 100 times (bless my wife for listening to all these hours of practice). But because I’m familiar with my brain playing tricks on me — it does the same thing when I publicly speak — I simply drew in a couple deep breathes and put those thoughts to rest, trusting myself.

    All in all, I feel proud. The performance went well and my wife recorded my recital and you can watch it here:

  • Friday donut ritual

    Today is donut day! Actually, every Friday is donut day.

    I started a weekly ritual about six months ago. Every Friday, my entire team (apart from one or two people) rides the elevator from the 13th floor down to the lobby, and then we proceed to take a brisk 2 minute walk Mighty O: Seattle-based shop that serves vegan donuts.  Once we arrive, I firmly grip the handle of the glass door, swinging it wide open and rushing the counter, where donut samples lies on a silver shiny platter.  I lower my head towards the samples, my nose hovering half an inch above them, and inhale deeply, getting a sweet whiff of all sweet smells: chocolate, vanilla, french toast.

    Following scarfing down a sample (sometimes two), I saunter over to the cashier and place my order: a french toast donut and a large almond milk chai.  Occasionally, I order a different flavored donut, depending if Mighty O offers a seasonal donut that appeals to my senses. For example, a few weeks back, Mighty O concocted an ore flavored donut — it was damn nice. But normally, I stick to the french toast.

    What can I say ? I’m a creature of habit.

    This entire donut routine spawns from my affinity for donuts. It’s an emotional food.  For me, donuts sends me back to my childhood.  When I was a young boy, about seven or eight, my father would drive me to school, the little me sitting in the front seat, feet dangling off the edge, too short to reach the floor. On the way to school, my father would stop by a local donut shop with a drive through ordering; we rarely (if never) ate inside the actual store.  As we pulled up to order, a cashier would slide open the drive through window, and my father would proceed with ordering: chocolate bar for him, me the sugar glaze with a side of milk.

    At the end of the day, here it is: I love donuts.

     

  • Why I love Seattle

    I consider Seattle my new home.

    Perhaps it’s the lack of pretension.  Folks around here tend to pragmatically dress themselves: sneakers, blue jeans, puffy Patagonia down jacket. This is unlike how people dress themselves in southern California, where I lived for over 25 years, where the overall vibe is to dress to impress. I admit, I once bought into that lifestyle, setting my alarm hour an hour earlier than normal in order to iron both my pin striped business long sleeve shirts along with my cream colored khakis. But not anymore — I dress for comfort.

    Perhaps it’s the overwhelming love people have for their furry four legged babies.  On the weekends, rain or shine, you’ll find the park bustling with people walking their dogs,  winding up and launching tennis balls into the lake, their dogs galloping at full speed and diving in for the retrieve. Dogs love swimming.

    It’s beautiful.

    Or perhaps Seattle just happens to be the city in which I started feeling comfortable under own skin, shaking off years of built up anxiety and self consciousness and low self esteem. It’s here in this city that I not only found my singing voice, thanks to Liz Frazier (a top notch vocal instructor), but a voice that resonates with love and confidence and conviction.

    Seattle. Thank you.

  • The beauty of dynamic programming

    I just discovered dynamic programming and damn, I’m blown away by the concept.  The other day, hile working through a homework assignment, I compared the run times between two python functions that I wrote, one function written recursively and the other written in a dynamic programming fashion.  Starting with the recursive solution, I arrived at the following:

    def fibonacci(n):
        if n == 0:
            return 0
        if n == 1:
            return 1
        return fibonacci(n-1) + fibonacci(n-2)
    

    That’s a fairly standard implementation of Fibonacci. There are two base cases; n=0; n=1.  So when n is either of these two numbers, the function simply returns 0 or 1, respectively.  But for any other number, the function recursively calls itself until reaching the aforementioned base cases.

    So far so good, right?  And for calculating small values of n, this implementation doesn’t really present a problem. But say we want to calculate fibonacci when n equals 40. How long does this take? Alarmingly, this computation hovers around 45 seconds:

    ./fibonacci.py 40
    fibonacci(40) = 102334155 took 45.22154 seconds
    

    Now, what if we run the same calculation. But this time, we run it using a dynamic programming technique? How much time does that shave off?

    ./fibonacci.py  --dynamic-programming 40
    fibonacci(40) = 102334155 took 0.00002 seconds
    

    What ?! From 45 seconds down to under a millisecond ?! How is that possible?

    def fibonacci_dynamic_programming(n):
        fibonacci = [0,1]
        for _ in range(0, n):
            fibonacci.append(fibonacci[-1] + fibonacci[-2])
        return fibonacci[n-1] + fibonacci[n-2]

    As you can see from the code above, instead of recurisvely calling fibonacci, we iteratively calculate all the values. In other words, this implementation runs linearly (i.e. direct proportion to n), unlike the first, recursive implementation, which runs exponentially.

     

     

  • Disabling remote loading of images (in e-mails)

    On both my laptop and iPhone, I’ve configured my e-mail clients to disable a setting called “Load Remote Images.”  Although there are a number of benefits in doing so, like reducing network traffic (i.e. bandwidth), my main motivation is this: preventing senders from tracking my e-mail behavior, preventing them from identifying whether or not I’ve open their e-mails.  When loading an image, the e-mail client sends an HTTP request to URL defined for the image(s). This, coupled with the the sender’s ability to craft a unique URL for each image, enables them to check the server’s access logs. In short, it answers the question: “Did they open up my e-mail?”

    Am I paranoid? Perhaps. Is it over the top? Maybe. But allow me provide you a screenshot (below) of an e-mail that I recently received from The Everygrey, an awesome (daily) newsletter sent out to those interested in what’s going on in Seattle.

    Touch base e-mail from Everygrey
    Touch base e-mail from Everygrey

    Despite the above e-mail, I’d like to mention that actually read their e-mails. Every day. But without loading of remote images (as well as not clicking on the links embedded in the e-mail), they can only assume that I’m an inactive user, which obviously isn’t the case.  And although I’ve used them as example, I’m actually defending against more nefarious senders.