I recently rediscovered an article my father sent to me from a radiology journal that emphasizes the importance of individual creativity and perseverance when it comes to scientific and technological discoveries. The author's primary point is as relevant to computer science and engineering as it is to radiology:
Advances may come from a single individual -- often young, often working alone, often with limited resources, often not at what's considered a premier institution -- who perseveres in the face of the conventional wisdom. It's the idea that counts. (Meyers, M. A.; American Journal of Roentgenology, March 2008, pp. 561-564.)
The author gives lots of humorous examples from medicine in which the establishment initially rejected history-changing breakthroughs such as the discovery of X-rays and the bacterium that causes peptic ulcers.
To me, the article was a reminder that what companies and universities can best do to foster innovation is to provide us with the time and space in which to explore new ideas. SRT does this by giving all of its employees time each week for learning and exploration. They make it a part of the job description and review process, to make sure that we take our RECESS time (as one of my colleagues calls it) seriously. We don't always need a big budget to come up with something new and cool (as the computer industry has proven time and time again), but an environment that encourages discovery and learning definitely does help.
Awhile back I solved
Euler problem 13, and then today I took a look at problem 16 and noticed that it's very similar.
Problem 13 asks us to find the first 10 digits of the sum of 100 50-digit numbers. The first thing one notes immediately is that you can't store a 50 digit number with a long int in MATLAB; it needs to be stored as a string. So, provided that I've stored the specific 100 numbers that Project Euler wants me to add in a string array called bigNumbers, I can solve the problem with the following line of code:
sum(str2num(bigNumbers))
The str2num MATLAB built-in function converts a string to a numerical value. The sum function takes care of the rest.
Problem 16 challenges us to sum the digits in the number 2^1000. Once again, one line of MATALB does the trick:
sum(str2num(num2str(2^1000)'))
In this case I convert the large number (2^1000) to a character array (using num2str), transpose the array so I can treat each digit individually, then convert back to a numerical value and compute the sum.