Hundred Days of Code Week One – Summary and Thoughts

​This is a post on the hundred days of code week one.

And this is also officially my first post on something personal.

For those who are not aware, I recently took up the hundred days of code challenge.

By nature, I am a risk-averse person. But for some reason, after seeing a series of posts on the free code camp earth Facebook Page, I felt drawn in to take a leap of faith.

If you have read the rules for the 100 days of code challenge, you will notice that some of the rules are quite specific. 

Therefore, I made my own set of tailored rule, which I am committed to follow throughout the next 100 days.

Where I live (Seoul, South Korea), the working hours are demanding to say the least.

On an average week, I will be working around 50-55 hours. 

Sometimes, to be honest, I lack the willpower or motivation to spend time coding outside of work hours.

This is why I blog so often haha. Because it is an outlet for me to not only give back to the developer community, but also to relieve some stress.

This is just me being honest and slightly emotional. ​

Continue reading

Heap Data Structure – Simple Introduction to a Complex Topic – Part 1

The heap data structure is a very useful data structure.

In this post, we will be going through a brief introduction on the heap data structure.

In the following tutorials, we will be looking at the different types of heaps, how it is implemented and zoom into its key features.

Like most data structures, the heap data structure is often labelled as an advanced topic. One that only the computer science majors, and the brave dare to learn and understand.

As we unravel the contents, you will hopefully begin to realize that it is not as difficult as you once thought.

This tutorial will not be tied down to a specific language. In another words, regardless of what programming language you use, you will be able to follow, understand and benefit from this tutorial.

Understanding the heap data structure will make you more complete as a programmer.Continue reading

Big O Notation Simplified to the Max

Big O Notation? Big O Time Complexity?  Big O Space Complexity?

Do these terms send a Big Oh My Goodness signal to your brain? Pun intended by the way.

After you read through this article, hopefully those thoughts will all be a thing of the past!

One day, while I was lost in thoughts, I began to ask myself:

How would I explain the Big O Notation to a seven year old child?

What is going on inside of the mind of an seven year old?

Probably food, drinks, their favorite TV show or toy right?

The beauty of being a child is that you often absorb knowledge like a sponge and accept it for what it is without over complicating things. Sometime for the good, sometimes for the bad.

Have you ever seen a seven year old scrutinize and critically assess whether Santa Claus exists?

In this post, we will be examining the time complexity of an algorithm. Depending on demand, I may cover space complexity in a future post.

In this post, I will be

  • providing explanations as though I were explaining to a seven year old child
  • providing a contextual “in a nutshell” summary
  • writing code that fits the Big O Notation specified.

Continue reading

Level up your Problem Solving Skills

If you have been following this blog, you probably know by now that I love playing around with algorithms and data structures.

Recently, I was sick, so I took a break from blogging. 

While I was resting, maybe because I don't have much to do, I began to think a lot.

One of the things that popped into my mind was the following question

How does a programmer effectively improve their problem solving skills?

Click to Tweet

The most immediate answers that popped into mind head are the following actionable items.

  • Solve as many problems as possible.
  • Work on a side-project.
  • Solve problems with somebody else and bounce your thoughts off them.
  • Take a class.
  • Watch a video on problem solving.

Don't get me wrong. These answers are not wrong.

However, I felt that the root cause of a majority of the pain points in problem solving remains largely unanswered, leaving much to be desired.

Below, is what I think is the root cause.

Continue reading

Learn the Merge Sort Algorithm with Clarity and Detail

In this tutorial, we will be breaking down the merge sort algorithm. We will scrutinize it until you are sick of even hearing the word merge sort. Give you dreams, visions and even possibly nightmares about merge sort. Hahaha kidding.

With this single tutorial, I hope that crying about how difficult it is to implement merge sort becomes a thing of the past.

The merge sort algorithm is a divide and conquer sorting algorithm that has a time complexity of O (n log n). Therefore, it is an extremely versatile and reliable sorting algorithm. Surprisingly enough, it is also not that difficult to implement and understand. Don’t worry if you don’t know what kind of technique divide and conquer is. We will be going through that very soon.

By the end of this tutorial, you will feel like you can take on the whole world. Algorithms will seem like a piece of cake. Okay, maybe not all algorithms. But you will definitely gain some knowledge and we will make it stick to your brain. Like glue, or that stalker in high school who wouldn’t stop following you.

The source code is available in the following languages

  • JavaScript,
  • Java
  • C++
  • Python

Okay, enough chit chat, lets dive into the tutorial.Continue reading

Best Books for Learning Java Effectively

In this post, I will be listing books that I recommend Java developers to read. 

I have personally purchased and read through each of the books in this list. And I have also read other books related to Java that are not on this list. Please note that these are simply a list of books that I felt had the greatest impact for me personally. I am sure that there are other books out there that are great.

I read countless number of articles, a fair share of books, watched many videos on Java. In this post, I am putting up the books that impacted me the most in journey of learning and discovery.

Please bear in mind that the​ listing order does not bear weight on any of the qualities and/or traits of each individual book.

Continue reading