Saturday, February 27, 2016

Korean language status

For basically my whole life, I wished I could speak Korean better.

I want to speak Korean because most of my extended family, except for some cousins who grew up in America, only speak Korean. Also, I often meet friends of friends who only speak Korean. I think things would be a lot more interesting and easier if I only spoke Korean better.

Furthermore, changes in my immediate family are providing even more motivation to get better at Korean. My retired mom is now spending more and more time in Korea. It would be great to visit her there. I've only ever seen her in America, so I'd love to see her totally comfortable in her mother-land.

My wife has also expressed interest in spending long periods of time going to Korea. As a child, she would spend her summers in Korea - which is why her Korean skills vastly outpaces mine. If we have kids, she's always said that she would like to expose them to both Korean and American culture, and for them to be bilingual.

I've always resisted the idea of spending more time in Korea, in part, because of my weak Korean skills. I think it would be lame of me to deprive my unborn children of a great multi-cultural experience because of my lack of skills. So, it's about time for me to get better at Korean.

In the past, I've done the following things:

  • I listened to Talk to Me in Korean podcasts.
  • I wrote flashcards and studied them with the Anki android app.
  • I tried to watch some Korean movies and dramas on Netflix. Some recent ones were New World and You're all surrounded.
  • Years ago, I also took a class an beginner/intermediate Korean class in college.

but all of these things haven't really gotten me to the fluency level that I'd like.

I think the gigantic ingredient that I am missing from my studies is real conversation practice. To get that practice, I will try out lessons from iTalki. I've signed up for my first lesson with a native Korean speaker. My plan is for my teacher and I to role play (he'll pretend to be my uncle or cousin in law or friend's wife ...), so that I can be exposed to lots of different kinds of situations. I'm really hopeful that this will immensely improve my skills.

iTalki also has a platform where you can write stuff in Korean, and others will comment and correct your writing. I posted something yesterday, and I got a correction in less than a day. It was pretty awesome to get good quick feedback from a native Korean speaker. I think I will take advantage of this more in the future, but I'll have to work on my Hangul (korean alphabet) typing skills. I guess that's just one more thing I have to work to improve on ...

Shameless request time ...

If you do plan on using iTalki it would be awesome if you signed up via this iTalki referral link. Each referral gives me some iTalki points which I can use for lessons. Thank you for your consideration.

Week 5 of algorithms part 1. Red Black Trees

The fifth week of my coursera algorithms course is done.

This was the most interesting week of study for me. We studied balanced binary search trees. I have read about red black trees trees before, but it never really clicked for me. However, the lecture did a great job explaining red black trees by first presenting the related 2-3 tree. This made understanding the red black tree much easier. I am very happy to know this material now.

The exercises were again helpful in pushing me to really understand red black trees. Can you identify if a node should be red or black? Can you make insertions into such a tree? It was a bit painful to write these trees out on paper and trace through the changes, but it's the best way to really show you know it. The exercises had some true/false questions as always, and I got tricked up on them as always. I feel like they are there just to trip you up a few times and make you repeat the exercises a few times before moving on.

This week's programming assignment was my favorite one so far. We actually implemented a KdTree. In some previous assignments we used existing data structures that were presented in class to do something. In this lecture, we were asked to implement the KdTree, which I thought was more interesting and instructive.

I just realized that this is the last programming assignment we will have. This upcoming week, we will have lectures on Hash tables, exercises and then the Final Exam. Hopefully, the exam pushes me to re-think all of the past material and review it so that it really gets engrained in my mind. I have to fight the instinct of trying to just get a good grade, and instead make my goal be getting a good working knowledge of these data structures and algorithms.

Hopefully, I meet that goal.

Saturday, February 20, 2016

Week 4 of algorithms part 1

The fourth week of my coursera algorithms course is done.

We learned about heap sort, binary search trees and priority queues. This is the first week when I feel like I am learning something that I am unfamiliar with. In previous weeks, I had a lot of experience studying and using all of the concepts already.

When I hear a problem, my mind visualizes the data using a few common data structures (maybe a stack/queue/sorted array or list/or a tree). For some reason, I don't immediately think about priority queues. This week's lectures reminded me of the importance and power of them. I think I should go back and review the material one more time to further engrain the concepts.

Because I had a day off this week, I was able to finish all of the material this week with a lot of time to spare.

I look forward to the upcoming week's lessons. In it, we will learn about red/black trees and other balanced search trees. This is one of the holes in my computer science knowledge that I'd really like to eliminate.

Saturday, February 13, 2016

Review

Some good things, some not so good things about me:

Work

Based on feedback from managers and my interactions with colleagues, I think I have been doing good work. Taking a step back, I feel like I have been living scared. I haven't gone on any interviews since I got my job years ago. I should be more active, and less scared of rejection.

Health

I am very pleased with my daily kettlebell training. I feel more fit, but I'm not sure how much. I need to keep better track of what I am doing (ie. how many 1 arm swings/push ups/pull ups/ etc ... per day), so that I can know if I am making progress.

Mental Health

I have pretty much given up meditation. It's boring. I have substituted it with early morning stretching. I am considering waking up about 30 minutes earlier so that I am less rushed in the morning, which may give me more time to meditate.

My dog

I have been trying to find the optimal walking schedule for my dog so that she never has to go in the house. We have cut down her need to use the wee-wee pad from every day and every night to almost never using it at all.

Writing

I have been writing in my private daily journal consistently, but the quality of my writing still feels pretty poor. I'm not sure how I can improve or track my progress.

Learning

I have been keeping up with my coursera course. I am on track to finish the course. This'll be the first one I finished.

Family

Family life has been good. I think I have been better at listening to my wife. I have been communicating more with my brother. My mom is coming back with my brother soon.

Eating

I have some good and bad weeks with respect to cooking and eating. For 90% of my life, I haven't been much of a cook. Recently, I've started making chicken soup from scratch and kim chi jigae (the chicken soup for koreans). I'm eating more salads for lunch. So things are improving.

Korean

I have made little progress. I'm still pretty diligent in doing Anki flash cards. I add four new sentences per day. And, I have been watching a few Korean movies and shows on Netflix. I signed up for an iTalki account so that I can practice speaking. I think this would be the best way to improve, but I haven't committed to doing any sessions.

Other projects

I have pretty much stopped working on any other outside projects. I have used all of my time working on other things like coursera, journaling, etc ..., which I mentioned above.

Week 3 of algorithms part 1

The third week of my coursera algorithms course has just gone by, but I didn't have enough time to finish all of the work.

I started the week OK by completing the lectures and exercises during the weekend. But during the week, I had to go into work early a few times, and I fell behind. I finally submitted the programming assignment this morning. I got a 98.something, with some deductions on performance in one of the test cases. I'd like to get all 100s, but oh well.

This week, we learned about merge sort and quick sort. Even though I was familiar with both of these sorting algorithms before, I think the lectures and exercises really helped me solidify my understanding of both of them.

For me, the most challenging part of the programming assignment was figuring out how to use a "Comparator". That's due to me not being a Java developer. Once again, the programming assignment had very little to do with the lectures or helping me understand sorting algorithms. I don't understand the point of these programming assignments.

This upcoming week, I have an extra day off (President's day) so hopefully, I can go over the previous week's job interview questions and still finish the week's assignments on time.

Sunday, February 7, 2016

Week 2 of algorithms part 1

I have finished the second week of my coursera algorithms course.

Last week, I felt a little bit short on time, so I shifted things around a bit. On the weekend, I completed all lectures and exercises. During the week, I was able to finish the programming assignment in a couple of days and then comfortably go through the job interview questions. Getting the lectures and exercises done on the weekend is the key to me doing the work carefully instead of rushing to the end.

The exercises can be a bit annoying. I often had to do them multiple times because I kept getting one of the true or false questions wrong. On the plus side, it forces you to go through the algorithms carefully a bunch of times.

This week, we learned about stacks, queues and some elementary sorts. As a real programmer, we use these so often without thinking about how they are implemented. It's good to dig into the details every once in a while. Hopefully more complex topics are on the way.

The programming assignment was a little bit more interesting this week. We built data structures that were modified versions of the stacks and queues that we learned about in class. This was better than the previous week where we just used API's that used the data structures discussed in class.

The other thought I had while working through things this week was how nice Java + the eclipse IDE is compared to my normal C++ + vim working environment. On the IDE side of things, the autocomplete is so nice. On the language side, a feature like "Implements" seems much cleaner than in C++. In C++, we'd have to inherit a pure virtual interface class. While logically equivalent, it seems a little bit cleaner in Java. However, that might be a biased opinion, as I am a C++ programmer who is learning Java.

Daily Workouts

I can't remember exactly when, but a while ago, I started doing daily workouts at home. I started with the 7 minute workout and used this app to help me along. I loved the idea of getting in shape at home, for free, and (most importantly) quickly.

After a while, I wanted to increase the intensity, so I started following more intense body weight workouts from youtube. I used youtube videos for a while, but there were some things I didn't like about it. A lot of workouts had me jumping up and down, which I can't really do inside my apartment early each morning. I also wanted to increase the resistance of some movements. So I decided to buy a kettlebell.

After some research, I ordered a beautiful 35 pound kettlebell from Rogue Fitness. With it, I have been doing a daily workout that I have grown to love. Here's my daily workout:

  • 1 Turkish Get Up / side. I use this as my warm up.
  • 30 2 handed swings. I use this to get my heart rate up and to concentrate on getting perfect swinging form.
  • 10 1 handed swings / side. These are still pretty challenging for me, so I try to just do a small number to get my form right.
  • 6 clean + squat + press / side. This combines a bunch of the essential kettlebell movements into one.
  • 6 pull ups.
  • 20 push ups.
  • 15 V ups.
  • 5 single legged sqauts. I can't quite complete these yet without hitting the ground.

This workout gets my heart rate up without me having to jump around in my apartment, and I feel like I'm getting stronger. It takes me about 10 minutes to complete. It would take me longer to commute to any gym than it does for me to finish my entire workout. My wife runs alot, and that takes so much longer (although I do plan on running a bit more on weekends once the weather gets a bit nicer).

As I get used to this workout, I think it will be straightforward for me to make things harder. More reps, new moves, and eventually another (heavier) kettlebell are in my future. Hopefully, this is all working.