Teaching Yourself Programming – Behind the Scenes

Last year I’ve decided to learn how to program in order to change my career path, and by this I don’t mean going to school to get a degree, but learning by myself, at home. With only basic programming knowledge, which I’ve learned in high school (close to zero, now that I look back), I’ve started the long and difficult road towards success.

Because the beginning of anything is very difficult, and you might get mixed feelings about your decision, not knowing what to do and who to turn to, I want to share a few thoughts on this, with examples from my own journey, hoping that I will provide guidance to those of you who find themselves in the same situation.

truestoryAnd I will start with a friendly advice / warning: If you don’t have the passion for this, DON’T DO IT! If you plan to get yourself into programming only for the material benefits, you’re going to have a hard time. After learning intensively for a while now, I can tell you it’s not just a job, it’s a lifestyle, and it takes a lot of dedication, study and self-discipline. It might look easy at a first glance, but in order to become really good at what you do (where the real money come from), you need more than this. You need passion! And if you think the beginning is hard, wait until you pass the beginner’s level. This is only the start, and it will only get worse, before it will get better. If you don’t have the drive to learn, you will simply quit, as you can’t make any more progress. There are enough programmers out there who don’t really understand the concepts, and spend their whole careers copy-pasting code from different resources, bringing entire companies to the ground, when things start picking up, and the websites they built can’t support the traffic anymore. Don’t become one of them!

Beginner – Set. Goal. Wings to fly!

Like any one of you who decide to start walking down this path, I went online looking for sources and advice.With a positive attitude, and a goal in mind, I went through the information provided by a few websites like Codeacademy, W3schools, and a few more, starting with the basics HTML and CSS notions, combining them with a bit of Javascript, and later on, some basic PHP and MYSQL, as my dream was to become a web developer. And it worked beautifully. The knowledge clicked, and I felt like I can get down to business: ‘Wow, now I can build a website!’ And by website, I don’t mean the easy practice ones I did while learning, with: ‘Hello World’, ‘Here’s a picture’, ‘Thank you for visiting’, ‘Goodbye’. I mean a website with a complex menu, a sign-up form, login, database (you can probably see where this is going). Positive attitude? Maybe, or maybe lack of experience and knowledge. Obviously, if you try to run before you walk, you won’t make it! But sure, me being me, I thought I can do it, I have what it takes. Well, sorry to disappoint but, after learning this the hard way, I can tell you for sure, that it just doesn’t work like this. Oops … 🙂

while codingStill, not being aware of those, I wrote the pretty HTML and CSS code and after threatening my PC a few times with flying lessons, it all looked gorgeous, but … yeah, things were missing, others were working without me actually understanding why, and others were working but not doing what I wanted them to do, but what I told them to do (Yes, computers have this annoying habit to do what you tell them to, and not what you actually have in mind 🙂 ). Those links and tabs did nothing! Hmm …No magical leprechaun took on the responsibility to make them work after I wrote the code. Darn! Someone is going to get fired… Someone, anyone?

After realizing I’m the only man on the ship and I can’t fire myself, I went back to the drawing board. How do you code the sign up and log in? And, how does the website know who you are in order to show your profile page? And … how do you show a profile page, when it pops in the menu bar only when the user is logged in? How do I hash the password? How do I connect files? Where do I insert a chunk of code in another programming language? And how do I …? And where … ? Oh wait … Oh no … Oh my … And that’s how getting lost in the programming world starts…

Medium Level Knowledge – What … ? Where from … ? Panic!

The more you look for answers, the more you realize how much you DON’T KNOW, and you start to doubt even the knowledge you have. Random code and notions pop from every website you click on, in your quest for guidance. You want to get it, you think you did, but you have no idea what to do with the information. Where do you even start when there are so many things that don’t work, and you don’t know what to do first?

Well, first of all, don’t panic. I know, too late. Still, don’t do it. It’s normal to not know everything from the beginning. Also, there’s no way you can ever build something of the size an online community, when you have only basic knowledge of programming. We all went through the ‘going up really fast’ faze, feeling like we just got our cool set of wings to fly, when you think you can get to the moon and back with them, and then hit the ‘brick wall of reality’. And, it hurts badly, but it’s a good wake up call, making you realize what your level really is.

Going through online sources you will find information mainly for beginners or advanced programmers. Nothing for you, past beginner’s level knowledge person, but without enough experience to keep at it. Once you pass the beginner’s faze, and you do have some knowledge here and there, you will be clueless about what to do next. And you search desperately for answers, and the more you read, the harder it gets, and the more confused you become.

Ok, I did learn a lot. I did some reading, I know more stuff. But what do I do with the information? Where do I put the PHP / Javascipt code now? How … what do I do with the Database? How should I structure the website? What goes in which folder? What file should have what extension? Very hard to figure out, on your own.

This is the point where you have to keep at it, and don’t quit! Also, this is also the point where most beginners who got themselves into this only for the money, or for the wrong reasons, will quit. It’s a good faze of learning programming, even if it looks like the worse you’ve been through, so far.

The Solution To Your Problems

Sorry, no easy way out, no shortcuts. If there were such an option, I would have found it by now, as I looked for any possible way to learn faster, skip steps as I can clue in by myself as I go, get better with less reading and more practice with the code. If you are looking for the secret of getting there, I can’t give you the recipe, as there is none, but I can give you the method: WORK. Yes, a lot of work. Again, it doesn’t come easy, but when it finally clicks, it’s very much worth it!

From my own experience, here are a few steps I followed, which actually helped though the journey, by keeping me on the right track. They might not work for everyone, as we all learn in a different way and at a different rhythm, but they sure worked for me:

1. Don’t give up! So, it doesn’t work. So, what? No room for ‘Lie down. Try not to cry. Cry a lot‘ type of attitude! If you feel like this is your passion, and you have a call for it, remind yourself daily, as many times as needed, that you made it so far, you know a lot, even if it doesn’t feel like it, so it pays to focus a bit longer. I know you must go though a ‘I can’t do it‘ faze, but, with a lot of work and dedication, you can do it.

2. Get organized (after you get out from the previous panic moment 🙂 ). If you decide on a specific field / programming language, work on finding a structure, a content of the information you should know, and you want to / have to learn. You can find it in a book, or from a ‘learn how to program’ website. Regardless of your source, keep building on top every single point of the list, going from simple notions to the most complex ones.

3. Read from multiple sources. Websites like Codeacademy are great, but once you passed the rookie faze, you can’t rely only on the information you got from one source, as that will never be enough for you to reach your goal. I combined the structure previously created (see point 2) and built on top of it, by reading from beginner’s websites, one book (whichever one works better for you – find it and use it – start with ONE only, then move to a new one) and video tutorials on how to whatever you are currently learning. From everything, what I’ve found most useful were the video tutorials, as they gave me the visual and audio part of learning, which I was missing by focusing only on the reading. This also clarified a few questions I had related to the structure of a website.

4. Go small! Take you goal, break it into as many pieces as possible, and work only with those pieces until they work. When one piece doesn’t work, tackle one issue at a time. When you figure it out, then you can move to the next one. One by one, you will get them done, and you will put the puzzle pieces back together, to form the desired result. Don’t ever bite more than you can chew, or you will end up disappointed and discouraged, which slows down or puts an end to the progress made so far.

5. Practice, practice, practice. Once you read something, make sure you take the knowledge and apply it. This is the only way in which it will stick. You can’t memorize programming, you have to feel it and understand it. No other way. What really worked for me, was using a programming language to solve small programming challenges. Project Euler was probably my best teacher in the past few months, when it came to solidifying and testing my knowledge.

99 bugs6. Don’t be afraid to make mistakes! I know it might sound weird but mistakes are good, actually they are great! It took me sooooo long to figure this out, but every time you make a mistake, you learn. I know it must be hard to see, but believe me, you do. Fixing your own mistakes, will make the knowledge stick. Debugging has its advantages! Remember that the only people who make no mistakes are the ones who don’t try to do anything. If you want to learn, make as many mistakes as possible. You will get there!

7. Don’t expect immediate results. Yep, I am one of those persons who study for a while and then wants to move mountains. If I don’t see things happening, I feel down, and doubtful. If this is how you are as well, and you want to see the work pay off NOW, you can forget about it. When it comes to programming, there are only baby steps. If you set your mind on ‘going big or going home’, in the first months of learning, you will go home. You fill fail, repetitively, but it’s all about how you train yourself to keep on moving. Get up, and try again.

8. Trust in yourself, stay motivated! This is the hardest part, once things get hairy, but you are the only one who can decide to stay motivated or quit. Nothing can stop a motivated person with a positive attitude. It’s your choice entirely, which type of person you will be. With every new piece of information, and every new day of study, you can make a choice. Choose right!

Once it gets worse, it will also get better, as long as you hang in there, stick to your goal and don’t give up. No one said it will be easy, but if programming is what you really feel like you want to do in life, for sure you can get there! With the right amount of work and dedication, you can become a very skilled programmer. No overnight success though, but only a lot of dedication, reading, practicing, debugging, all for that moment when your code works perfectly, in one go.

Remember, it pays to be patient. Get busy coding!

Remembering Why … Circle of Concern vs Circle of Control

I’m pretty sure not many are aware of this, but All Right Choices isn’t the first website I’ve administrated. Some of you might not even be aware of the fact that I’ve been an animal and environmental activist, for pretty much all my life.

When I was only 16 years old, I was quite active on ASPCA online community, signing petitions, getting involved in online adoptions, fighting against animal cruelty in any way possible.

Going fast from creating only a group against animal cruelty, to opening my own online community for animal lovers in Romania, a full time job started, which lasted for more than 2 years. That’s the moment when Romanian SPCA Online Community was born (September 10, 2008).

With almost 500 animal lovers actively involved, we really got it going. We became the voice of the voiceless  and did what we could to get animals adopted worldwide, send petitions all around the world to gather signatures, create petitions and forward them to the responsible authorities, write articles, inform people, start competitions, games and share our love for animals.

That community became my online family, bringing into my life a lot of wonderful people, which are up to this day, part of my family.

What went wrong?

The online platform which used to host the community went from free to … expensive. For a high school student, with no income, that translates into the end. I had no other option but to shut it down, and it was probably the hardest thing I ever had to do, up to that day.

This year is spring I managed to find the ruins of my community, on web archive, and I can’t even begin to describe what went through my heart when I saw the page. I went from happy to sad… That community meant the world to me at one point, and to take just another quick look at it, was a complete miracle to me.

Take Two

As I was working on becoming a programmer, I decided to bring it back to life, just as an exercise, to see if I can do it. Not being provided with the infrastructure of the online platform which used to host the original community, I had to start from scratch, with only a mental image of how it should look like.

Soon enough, I realized I don’t really have the knowledge to finish the job. A lot more learning was needed. So, I took it slow: learning how to create the database, then making the database interact with the website, building the homepage, working on the sign up form.

Little by little, it all started to fall into place, and made me wonder if I should finish it and put it back live again.

The Decision 

Even if the community is long gone, I never actually let go. You can’t really give in to animals being abused. Sometimes, however, it becomes a bit too much to handle. I have problems understanding why people like to project so much hurt around them. And even more, why would you hurt a defenseless soul?

I’ve decided to do a bit of reading, on the page of an animal protection group, and see how I feel about doing it all over again. In just a few seconds I came across an article about a guy who decided to kill a dog by splitting the animal’s head into half, with an ax. The answer: I can’t.

It hurts way to much to put myself in the middle of all of this, once again. I can’t go on a larger scale anymore. It’s bad for my sanity. Instead, keeping in mind the circle of concern and the circle of control, I’ve decided to help at a smaller scale, one animal at a time.

circle-concern-control

I can’t help all the animals in the world, but I can completely change the world of a few animals, so I better focus on that. The alternative is way to painful, and I just don’t have anymore what it takes to keep it up.

That being said, project RomanianSPCA Online Community will remain at project level. Good exercise for my coding skills, and a wonderful way to bring back great memories.

Through this post I want to thank the absolutely incredible people who came into my life, through the community. I am very happy to call you part of my family, and I hope this post will bring back some good memories for you as well!

Project Euler – Challenge Accepted – Back to the basics

Someone told me we need more real programmers around, who actually understand what’s going on under the hood, and not the type who have no idea what they are building. The IT world doesn’t need more programmers who write a code patched around from different ‘Googleing missions’, only to break down when a website receives more traffic, and to put the business owners in the situation when they have to call a really skilled person to fix the bugs.

I don’t want to be part of the problem. I don’t want to just scratch the surface, I want to know it all. The way I went, so far, about teaching myself to code made me the painter, in the whole process of building a house. Yes, you do get the applause at the end of the job, but you have no idea about how to build the foundation. Actually, your work would be nothing without the guy who does the foundation.

Looking for a way to train my brain to understand how a computer works behinds the scene, I had to go back to the basics. Yes, no more attempts to build fancy website, only boring numbers until I get so good at it, that I can do it with my eyes closed.

That being said, I took the Project Euler Challenge and I’ve decided to share my Knowledge with everyone, while I complete a few problems.

Back to the basics, using Javascript to solve the following:

Problem 1 – Multiples of 3 and 5

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.

var sum = 0;
for (i=0; i<1000; i++) {
          if (i%3 === 0 || i%5 === 0) {
                             sum += i;
           }
}
console.log(sum);

Correct Answer: 233168

Problem 2 – Even Fibonacci numbers

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

var sum = 0;
var x = 0;
var y = 1;

while (y<4000000) {
              if (y%2 === 0) {
                      sum = sum + y;
              }
z = x + y;
x = y;
y = z;
}
console.log(sum);

Correct Answer: 4613732

Problem 3 – Largest prime factor

The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 600851475143 ?

function isaprime(p) {
         var k = p / 2;
         for (i=2; i<k; i++) {
                        if (p % i === 0) {
                                      return false;
                        }
          }
          return true;
}

n = 13195;

for (i=3; i<=n; i++) {
                if (n % i === 0) {
                            if (isaprime(i)) {
                                     console.log(i + ” ” + n);
                           }
               if ( n != i ) {
                        n = n / i;
                        i = 3;
                     }
            }
}

Correct Answer: 6857

Problem 4 – Largest palindrome product

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

Find the largest palindrome made from the product of two 3-digit numbers.

function reverse (n) {
             var r = ‘ ‘;
             while (n.length>0) {
                           r += n.substring(n.length-1,n.length);
                           n = n.substring(0, n.length-1);
             }
             return r;
}

function ispalindrome(n) {
                    return reverse(n) == n;
}

m = 0;

for (i=100; i<=999; i++) {
                   for (j=100; j<=999; j++) {
                                    n = i * j;
                                    if (ispalindrome(n.toString())) {
                                                           if ( n > m ) {
                                                                         m = n;
                                                          }
                                       }
                     }
}
console.log(m);

Correct Answer: 906609

Problem 5 – Smallest multiple

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

var i = 20;
while ( i % 2 !== 0 || i % 3 !== 0 || i % 4 !== 0 || i % 5 !== 0 || i % 6 !== 0 || i % 7 !== 0 || i % 8 !== 0 || i % 9 !== 0 || i % 10 !== 0 || i % 11 !== 0 || i % 12 !== 0 || i % 13 !== 0 || i % 14 !== 0 || i % 15 !== 0 || i % 16 !== 0 || i % 17 !== 0 || i % 18 !== 0 || i % 19 !== 0 || i % 20 !== 0 ) {
       i += 20;
}
console.log(i);

Correct Answer: 232792560

Problem 6 – Sum square difference

The sum of the squares of the first ten natural numbers is, 12 + 22 + … + 102 = 385

The square of the sum of the first ten natural numbers is, (1 + 2 + … + 10)2 = 552 = 3025

Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025 − 385 = 2640.

Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.

function sumsq(n){
               sum = 0;
               for (i=1; i<n; i++) {
                            sum += Math.pow(i,2);
                } return sum;
}

function sqsum(n) {
                sum = 0;
                for (i=1; i<n; i++) {
                           sum += Math.pow(sum,2);
                }
}
console.log(sumsq(100)-sqsum(100));

Correct Answer: 25164150

Problem 7 – 10001st prime

By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.

What is the 10 001st prime number?

function isaprime(p) {
              if ( n<2 ) {
                     return false;
             }

             var n = Math.sqrt(p);

             for (i=2; i<=n; i++) {
                       if (p % i === 0) {
                              return false;
                     }
            }
           return true;
}

var a = 0;
var primes = 0;

while (primes <= 10001) {
          a++;
          if (isaprime(a)) {
                          primes++;
          }
}
console.log(a);

Correct Answer: 104743

Problem 8 – Largest product in a series

The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × 8 × 9 = 5832.

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450

Find the thirteen adjacent digits in the 1000-digit number that have the greatest product. What is the value of this product?

var n = “7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450”;

m = 0;

for (j=0; j<=n.length – 13; j++) {
           var p = n[j] * n[j+1] * n[j+2] * n[j+3] * n[j+4] * n[j+5] * n[j+6] * n[j+7] * n[j+8] * n[j+9] * n[j+10] * n[j+11] * n[j+12];

            if ( p>m ) {
                        m = p;
             }
}
console.log(Math.max(m));

Correct Answer: 23514624000

Problem 9 – Special Pythagorean triplet

A Pythagorean triplet is a set of three natural numbers, a < b < c, for which, a2 + b2 = c2

For example, 32 + 42 = 9 + 16 = 25 = 52.

There exists exactly one Pythagorean triplet for which a + b + c = 1000.
Find the product abc.

var a = 0;
var b = 0;
var c = 0;
var sum = 1000;

for (a=1; a<1000; a++) {
             for (b=a+1; b<1000; b++) {
                           c = 1000 – a – b;
                           if (a*a + b*b == c*c) {
                                             console.log(a, b , c);
                                             console.log(a*b*c);
                           }
              }
}

Correct Answer: 31875000

Problem 10 – Summation of primes

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.

function isaprime(p) {
               if ( n<2 ) {
                        return false;
              }
              var n = Math.sqrt(p);
              for (i=2; i<=n; i++) {
                             if (p % i === 0) {
                                            return false;
                            }
              }
              return true;
}

var sum = 0;
var x = 2000000;

for (j=2; j<x; j++) {
             if (isaprime(j) == true) {
                            sum = sum + j;
            }
}
console.log(sum);

Correct Answer: 142913828922

Problem 11 – Largest product in a grid

In the 20×20 grid below, four numbers along a diagonal line have been marked in red.

08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
The product of these numbers is 26 × 63 × 78 × 14 = 1788696.

What is the greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 20×20 grid?

var num = [
[8,2,22,97,38,15,0,40,0,75,4,5,7,78,52,12,50,77,91,8],
[49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,4,56,62,0],
[81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,3,49,13,36,65],
[52,70,95,23,4,60,11,42,69,24,68,56,1,32,56,71,37,2,36,91],
[22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80],
[24,47,32,60,99,3,45,2,44,75,33,53,78,36,84,20,35,17,12,50],
[32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70],
[67,26,20,68,2,62,12,20,95,63,94,39,63,8,40,91,66,49,94,21],
[24,55,58,5,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72],
[21,36,23,9,75,0,76,44,20,45,35,14,0,61,33,97,34,31,33,95],
[78,17,53,28,22,75,31,67,15,94,3,80,4,62,16,14,9,53,56,92],
[16,39,5,42,96,35,31,47,55,58,88,24,0,17,54,24,36,29,85,57],
[86,56,0,48,35,71,89,7,5,44,44,37,44,60,21,58,51,54,17,58],
[19,80,81,68,5,94,47,69,28,73,92,13,86,52,17,77,4,89,55,40],
[4,52,8,83,97,35,99,16,7,97,57,32,16,26,26,79,33,27,98,66],
[88,36,68,87,57,62,20,72,3,46,33,67,46,55,12,32,63,93,53,69],
[4,42,16,73,38,25,39,11,24,94,72,18,8,46,29,32,40,62,76,36],
[20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,4,36,16],
[20,73,35,29,78,31,90,01,74,31,49,71,48,86,81,16,23,57,5,54],
[1,70,54,71,83,51,54,69,16,92,33,48,61,43,52,1,89,19,67,48]
];
var m = 0;

for (i = 0; i < num.length; i++) {
      for (j = 0; j < num[i].length – 3; j++){
              m = Math.max(num[i][j] * num[i][j+1] * num[i][j+2] * num[i][j+3],m);
      }
}
for (i = 0; i < num.length – 3; i++) {
           for (j = 0; j < num[i].length; j++){
                      m = Math.max(num[i][j] * num[i+1][j] * num[i+2][j] * num[i+3][j],m);
           }
          for (j = 0; j < num[i].length – 3; j++){
                   m = Math.max( num[i][j] * num[i+1][j+1] * num[i+2][j+2] * num[i+3][j+3],m);
          }
          for (j = 3; j < num.length; j++) {
                 m = Math.max(num[i][j] * num[i+1][j-1] * num[i+2][j-2] * num[i+3][j-3],m);
         }
}
console.log(m);

Correct Answer: 70600674

 


If you enjoyed this post, you should Follow Me On Twitter twitter-follow-button and Like My Page on Facebook Like_Me_Facebook_buttonfor more updates.

 

When it doesn’t float your boat…

dreamss

Maybe I was a different type of teenager, but to be honest, when I finished high school I had no idea what to do next. What made the choice even harder is that with the right amount of work and dedication, I could be good at pretty much anything. Putting so much passion into what I do, got me from one field to another, in just a few years, confusing me even further about what I really want to do in life.

After getting my first paid office job (previously I worked as a volunteer for almost 1 year), I was extremely excited to finally earn my own money, learn new things and meet new people. I was lucky enough to start working in a multicultural company, which gave me the opportunity to improve my language skills, interact with people from different backgrounds and cultures, and broaden my horizon. Even if I was a bit disappointed with myself for not getting a job in the fields for which I studied for (I first started learning programming-since 5th grade, then I went to Law School and got my degree which offered me the amazing opportunity to work for an NGO and finally UNHCR), I was very happy, and didn’t doubt my choice.

The problem with working in such a company is that while increasing the number of employees(which more than doubled since I got hired) the company turned from friendly, to ‘Romanian’. When you put the power to run the company into the hands of locals, the company’s culture goes very fast from foreigner to national, which means a dramatic change in vision(the change happened in approximately 1 year after I got hired). Different managers, different teams, different rules. For me, this meant not enjoying the same rights as other colleagues did, and being constantly brought down about my work performance.

Working in such an stressful environment for about 1 year, brings your spirit down and kills your enthusiasm and motivation. The question is…. What do you do?

The solution I’ve found

Being intellectually active since as long as I can remember, I really constantly feel the need of a challenge, of gaining other skills and applying my knowledge. After thinking about what I can do to keep this up, I turned back to computer programming, my first passion. For months, I’ve studied after work, on my own, but without any concrete results. The high level of stress, combined with lack of time, didn’t get me that far, but I never gave up. In the end, even a bit of progress is better than no progress!

The questions which were always on my mind: When do you take the plunge? When is the right moment to switch jobs? When are you ready?
The answer: You are never ready, and you will never be ready if you keep on waiting for things to happen.

So, about 2 weeks ago, I’ve decided to go after life, instead of waiting for life to come to me.

The decision making

At the beginning of the company, this would have been a very hard decision for me: to quit the job I’ve worked so hard to get. Even when it got difficult and stressful, I’ve postponed this moment for as much as I could, thinking about what will the company do without me, how will my colleagues manage without me(silly thinking process). Also, I had no idea how to do it, even if it sounds stupid. I felt like I was putting the company into a difficult position and also showing them that I am not loyal. One day though, my boss made it easier for me, saying ‘no one is irreplaceable’. A mix of these words and the constant stress factor made me realize I am doing it wrong. Being 25 and wasting time on a consuming job, isn’t the right way to go about life. I am loyal, but I shouldn’t allow someone to constantly take advantage of this. Loyalty is great, as long as it’s directed towards the right persons, which wasn’t the case anymore.

The right moment for anything is NOW!

But what if NOW is the moment in which you are left without an income, and a fat chance that you won’t make it into the field you want to switch to? Well….what other better moment to find out, if not now? Investing more time into something which doesn’t bring out the best in you, which doesn’t help you grow, and evolve and become someone better than you are today, it’s simply just time wasted. You might lose an income, but you might gain something bigger than that: peace, balance, time, yourself. Once you are at peace, you can focus on your real passions, and improving your skills will become so much easier than it was when being in a stressful environment. This will get you to the point where you grow, improve and, most likely, earn more than you did before. In the end, our most precious possession is our TIME. This is something we won’t ever have more of, only less, and you can’t buy it, at any cost.

Even if the new career won’t earn you more money than the previous one, I wonder if it’s all about the money. Stress is such a huge factor in your mental and physical health, that we end up working to earn more money, to get loans, to live a lifestyle we can’t really afford, to get even more stressed because of the financial issues, to alter our health, and to work more or get more loans to fix out health.

I’m sure it has to be a better way to manage my time. So, keeping this in mind, I went ahead and quit my job. Don’t get me wrong, I’m still very happy I had this job. This experience taught me so much, much about what I shouldn’t do if I ever have so much power in my hands. Also I’ve learned a lot about myself. Being in an office 8 hours/day or more, with the same people, all with different worldviews, with different problems and mentalities, for months and months, gives you a chance to see them at the highest and at the lowest moments of their life. For some persons, the lowest moments, bring out the ‘best’ in them, and this got me to realize a lot of times, that’s not how I want to be like. Many times, such experiences were like a mirror, in which I got to see all my faults, and realize where I go wrong in the relations with my friends and family. This helped me very much with changing things about myself, which I’m very thankful for, and also proud.

Getting ready for the career

With a whole new way of seeing things, a new set of skills(still work in progress), and a brand new attitude, I get ready for the future. Before quitting my job, I was full of doubts and fear. Now I am confident, positive and excited! In my head, sky is not the limit. Not even close. I can conquer the sky and more, through programming…This is what I really want! I want to be able to not only tell the computer what to do for me, but also to show it how to do it.

After going through the basics of HTML, CSS, JAVASCRIPT, JQUERY, PHP, MYSQL, I’ve realized I want to do big things. Being so creative, I want to do more than just programming. I want to combine all my skills, passion and creativity and turn them into a new career. For now, the possibilities are endless. With the support of my friends and family, I will start something new, something amazing.

If I will succeed or not…I guess it’s just a matter of time until we’ll find out. All I can hope for, is to not waste my most precious resource: TIME, on anything else, but what really makes me happy. With a lot of work, dedication and a lot enthusiasm, there’s no room for failure.

Keep your fingers cross for me!