The world’s shortest IQ test

Schoolgirl Showing Algebra Test Score

Question 1:

A bat and a ball cost $1.10 in total. The bat costs $1.00 more than the ball. How much does the ball cost?

Question 2:

If it takes 5 machines 5 minutes to make 5 widgets, how long would it take 100 machines to make 100 widgets?

Question 3:

In a lake, there is a patch of lily pads. Every day, the patch doubles in size. If it takes 48 days for the patch to cover the entire lake, how long would it take for the patch to cover half of the lake?

Picture to distract you from cheating


What you probably answered:

Don’t worry, you’re not alone.

Question 1:

The ball costs $0.10

Question 2:

100 minutes

Question 3:

24 days


The correct answers

The correct answers are:

Question 1:

The ball costs $0.05

Question 2:

5 minutes

Question 3:

47 days

This test is known as the Cognitive Reflection Test (CRT). The test determines your brain’s ability to quickly realise that a problem is harder and more complex than it appears on the surface.

Here’s the great thing about this test–it has been found to correlate strongly with the best tests in the world to measure “general intelligence,” which consist of hundreds of questions and take hours to complete – so it’s known as one of the best and fastest ways to measure cognitive ability.


Scripting languages pros and cons

Scripting languages such as Python and JavaScript represent a very different style of programming than system programming languages such as C++ or Java. Scripting languages are designed for “gluing” applications; they use typeless approaches to achieve a higher level of programming and more rapid application development than system programming languages. Increases in computer speed and changes in the application mix are making scripting languages more and more important for applications of the future.

A fundamental change has been occurring in the way people write computer programs. The change is a transition from system programming languages such as C or C++ to scripting languages such as JavaScript or Ruby. Few people realize that it is occurring and even fewer people know why it is happening.

Scripting languages are designed for different tasks than system programming languages, and this leads to fundamental differences in the languages. System programming languages were designed for building data structures and algorithms from scratch, starting from the most primitive computer elements such as words of memory. In contrast, scripting languages are designed for gluing: they assume the existence of a set of powerful components and are intended primarily for connecting components together. System programming languages are strongly typed to help manage complexity, while scripting languages are typeless to simplify connections between components and provide rapid application development.

Scripting languages and system programming languages are complementary, and most major computing platforms since the 1960’s have provided both kinds of languages. The languages are typically used together in component frameworks, where components are created with system programming languages and glued together with scripting languages. However, several recent trends, such as faster machines, better scripting languages, the increasing importance of graphical user interfaces and component architectures, and the growth of the Internet, have greatly increased the applicability of scripting languages. These trends will continue over the next decade, with more and more new applications written entirely in scripting languages and system programming languages used primarily for creating components.

Scripting languages assume that there already exists a collection of useful components written in other languages. Scripting languages aren’t intended for writing applications from scratch; they are intended primarily for plugging together components. Scripting languages are often used to extend the features of components but they are rarely used for complex algorithms and data structures; features like these are usually provided by the components. Scripting languages are sometimes referred to as glue languages or system integration languages.

In order to simplify the task of connecting components, scripting languages tend to be typeless: all things look and behave the same so that they are interchangeable. For example, in Tcl or Visual Basic a variable can hold a string one moment and an integer the next. Code and data are often interchangeable, so that a program can write another program and then execute it on the fly. Scripting languages are often string-oriented, since this provides a uniform representation for many different things.

A typeless language makes it much easier to hook together components. There are no a priori restrictions on how things can be used, and all components and values are represented in a uniform fashion. Thus any component or value can be used in any situation; components designed for one purpose can be used for totally different purposes never foreseen by the designer.

John K. Ousterhout

(This article appears in IEEE Computer magazine, March 1998)

Cellular Automaton

Since that topic is very interesting I decided to implement and explore my own cellular automata which is hosted at Cellular Automata Mandala. Feel free to explore and see the code too!

Screen Shot 2016-09-01 at 9.56.11 AM

According to Wolfram Alpha:

“A cellular automaton is a collection of “colored” cells on a grid of specified shape that evolves through a number of discrete time steps according to a set of rules based on the states of neighboring cells. The rules are then applied iteratively for as many time steps as desired. von Neumann was one of the first people to consider such a model, and incorporated a cellular model into his “universal constructor.” Cellular automata were studied in the early 1950s as a possible model for biological systems. Comprehensive studies of cellular automata have been performed by S. Wolfram starting in the 1980s, and Wolfram’s fundamental research in the field culminated in the publication of his book A New Kind of Science in which Wolfram presents a gigantic collection of results concerning automata, among which are a number of groundbreaking new discoveries.
The Season 2 episode “Bettor or Worse” of the television crime drama NUMB3RS mentions one-dimensional cellular automata.
Cellular automata come in a variety of shapes and varieties. One of the most fundamental properties of a cellular automaton is the type of grid on which it is computed. The simplest such “grid” is a one-dimensional line. In two dimensions, square, triangular, and hexagonal grids may be considered. Cellular automata may also be constructed on Cartesian grids in arbitrary numbers of dimensions, with the d-dimensional integer lattice Z^d being the most common choice. Cellular automata on a d-dimensional integer lattice are implemented in the Wolfram Language as CellularAutomaton[rule, init, steps].
The number of colors (or distinct states) k a cellular automaton may assume must also be specified. This number is typically an integer, with k = 2 (binary) being the simplest choice. For a binary automaton, color 0 is commonly called “white, ” and color 1 is commonly called “black”. However, cellular automata having a continuous range of possible values may also be considered.
In addition to the grid on which a cellular automaton lives and the colors its cells may assume, the neighborhood over which cells affect one another must also be specified. The simplest choice is “nearest neighbors, ” in which only cells directly adjacent to a given cell may be affected at each time step. Two common neighborhoods in the case of a two-dimensional cellular automaton on a square grid are the so-called Moore neighborhood (a square neighborhood) and the von Neumann neighborhood (a diamond-shaped neighborhood).
The simplest type of cellular automaton is a binary, nearest-neighbor, one-dimensional automaton. Such automata were called “elementary cellular automata” by S. Wolfram, who has extensively studied their amazing properties (Wolfram 1983; 2002, p. 57). There are 256 such automata, each of which can be indexed by a unique binary number whose decimal representation is known as the “rule” for the particular automaton. An illustration of rule 30 is shown above together with the evolution it produces after 15 steps starting from a single black cell.
A slightly more complicated class of cellular automata are the nearest-neighbor, k-color, one-dimensional totalistic cellular automata. In such automata, it is the average of adjacent cells that determine the evolution, and the simplest nontrivial examples have k = 3 colors. For these automata, the set of rules describing the behavior can be encoded as a (3k-2)-digit k-ary number known as a “code.” The rules and 300 steps of the ternary (k = 3) code 912 automaton are illustrated above.

In two dimensions, the best-known cellular automaton is Conway’s game of life, discovered by J. H. Conway in 1970 and popularized in Martin Gardner’s Scientific American columns. The game of life is a binary (k = 2) totalistic cellular automaton with a Moore neighborhood of range r = 1. Although the computation of successive game of life generations was originally done by hand, the computer revolution soon arrived and allowed more extensive patterns to be studied and propagated. An animation of the game of life construction known as a puffer train is illustrated above.
WireWorld is another common two-dimensional cellular automaton.
The theory of cellular automata is immensely rich, with simple rules and structures being capable of producing a great variety of unexpected behaviors. For example, there exist universal cellular automata that are capable of simulating the behavior of any other cellular automaton or Turing machine. It has even been proved by Gacs that there exist fault-tolerant universal cellular automata, whose ability to simulate other cellular automata is not hindered by random perturbations provided that such perturbations are sufficiently sparse

Wolfram Alpha.”

Site Mapping

Screen Shot 2016-08-19 at 11.32.15 AM

Web site mapping is a very important technique. It consist of making a diagram, either using a traditional drawing application (even pen and paper will do it!) or a dedicated tool like Gliffy among several others.

Freemind is one of the most popular free mind mapping applications out there, and that’s mainly because it’s in Java and thus cross-platform. This software implements some of the major features that digital task lists have over paper task lists: retractable and expandable branches and hyperlinking between different branches make it easier to organize and easier to connect ideas. is a free web-based mind mapping application. You can sign up for an account in order to save your mind maps.

MindMeister is another web app with varying account options; there’s a free account, and several commercial options. It has a fairly nice design and interface in comparison with many other mind mapping web apps that are available.

Mindomo is another mind mapping web app with both a free account option and a commercial one. It allows you to share your mind maps with others, and also embed them into your web pages.

Mind42 is a totally free mind mapping web app. The interface has some excellent features such as easy navigation for large mind maps with zoom and birdview, and the ability to attach notes and images to branches, which isn’t always allowed in “pure” mind mapping software. You can also link branches to other sites and see a preview when you rollover the link, which I think is probably the only appropriate use of those preview rollovers anywhere on the net.

Labyrinth is a very simple and basic mind mapping application for Linux and Windows.

Vym (View Your Mind) is an application for Mac OS X and various Linux distributions. There seems to be a Windows port, but it is accompanied by bug reports.

WiseMapping is another web app for mind mapping which requires no browser plug-ins at all, which is fantastic when you don’t know which computers you’ll be using in a given day. You can share, export and publish your mind maps from the app and there is no commercial account option; everything is free and unlimited.

PersonalBrain is a cross-platform application. It’s a commercial application, but a lighter free edition is on offer. I thought the integration of a calendar with events that you can add was a particularly cool addition and means you can brainstorm in not just the conceptual realm but cross over into the earlier stages of planning as well.


Nettiquete is a word to define a set of rules for proper behavior on the internet and social media.

Is very important to follow this advices as they improves from our security to the professional image we display online, and remember: Internet never forgets…so a mistake made by a person who doesn’t follow nettiquete can cost him a lot of troubles in the future.