# How The Human Brain Stores Data

Evolution is one clever fellow. Next time you’re strolling about outdoors, pick up a pine cone and take a look at the layout of the bract scales. You’ll find an unmistakable geometric structure. In fact, this same structure can be seen in the petals of a rose, the seeds of a sunflower and even the cochlea bone in your inner ear. Look closely enough, and you’ll find this spiraling structure everywhere. It’s based on a series of integers called the Fibonacci sequence. Leonardo Bonacci discovered the sequence while trying to figure out how many rabbits he could make starting with just two. It’s quite simple — add the right most integer to the previous one to get the next one in the sequence. Starting from zero, this would give you 0-1-1-2-3-5-8-13-21 and so on. If one was to look at this sequence in the form of geometric shapes, they can create square tiles whose sides are the length of the value in the sequence. If you connect the diagonal corners of these tiles with an infinite curve, you end up with the spiral that you saw in the pine cone and other natural objects.

So how did mother nature discover this geometric structure? Surely it does not know math. How then can it come up with intricate and sophisticated structures? It turns out that this Fibonacci spiral is the most efficient way of squeezing the most amount of stuff in the least amount of space. And if one takes natural selection seriously, this makes perfect sense. Eons of trial and error to make the most copies of itself has stumbled upon a mathematical principle that permeates life on earth.

The homo sapiens brain is the product of this same evolutionary process, and has been evolving for an estimated 7 million years. It would be foolish to think that this same type of efficiency natural selection has stumbled across would not be present in the current homo sapiens brain. I want to impress upon you this idea of efficiency. Natural selection discovered the Fibonacci sequence solely because it is the most efficient way to do a particular task. If the brain has a task of storing information, it is perfectly reasonable that millions of years of evolution has honed it so that it does this in the most efficient way possible as well. In this article, we shall explore this idea of efficiency in data storage, and leave you to ponder its applications in the computer sciences.

# How I²C EEPROM Talks To The Bus

You will probably be familiar with I²C, a serial bus typically used for not-very-fast communication with microcontroller peripherals. It’s likely though that unless you are an I²C wizard you won’t be intimately familiar with the intricacies of its operation, and each new device will bring a lengthy spell of studying data sheets and head-scratching.

If the previous paragraph describes you, read on. [Clint Stevenson] wrote a library for interfacing I²C EEPROMs to Arduino platforms, and when a user found a bug when using it on an ATtiny85, he wrote up his solution. The resulting piece is a clear explanation of how I²C EEPROMs talk to the bus, the various operations you can perform on them, and the overhead each places on the bus. He then goes on to explain EEPROM timing, and how since it takes the device a while to perform each task, the microcontroller must be sure it has completed before moving to the next one.

In the case of [Clint]’s library, the problem turned out to be a minor incompatibility with the Arduino Wire library over handling I²C start conditions. I²C has a clock and a data line, both of which are high when no tasks are being performed. A start condition indicates to the devices on the bus that something is about to happen, and is indicated by the data line going low while the clock line stays high for a while before the clock line starts up and the data line carries the I²C command. He’s posted samples of code on the page linked above, and you can find his library in his GitHub repository.

If you want to know more about I²C, take a look at Hackaday Editor [Elliot Williams’] masterclasses on the subject: What could go wrong, I²C edition, and Embed With Elliot, I²C bus scanning.

Serial EEPROM die picture, By Epop (Own work) [CC0], via Wikimedia Commons.

# Inventables Releases Improved X-Carve CNC Router

Introduced last year as an improvement on the very popular Shapeoko CNC router, the X-Carve by Inventables has grown to be a very well-respected machine in the community. It’s even better if you throw a DeWalt spindle on there, allowing you to cut almost everything that’s not steel. With a recent upgrade to the X-Carve, it’s even more capable, featuring the best mods and suggestions from the community that has grown up around this machine.

The newest iteration of the X-Carve features higher power drivers, better rigidity, and a heat sink for the spindle. That last item is an interesting bit of kit – routing takes time, and a 1¼HP motor will turn electricity into heat very effectively.

In addition to the 500mm square and 1000mmm square routers previously available, there’s a new, 750mm square machine available. All machines feature a new electronics box for the X-Carve, the X-Controller. This ‘brain box’ is a combined power supply, stepper driver, and motion controller built into a single box. The stepper drivers are able to supply 4A to a motor, is capable of 1/16 microstepping, and has connections for limit switches, spindle control speed, a Z probe, and outputs for vacuums or coolant systems. The underlying controller is based on grbl, making this brain box a very solid foundation for any 3-axis CNC build. The ‘brain box’ format seems to be the way the hobbyist CNC market is going, considering the whispers and rumors concerning Lulzbot selling their Taz6 brainbox independently from a 3D printer.

The new X-Carve is available now, with a fully-loaded 1000mm wide machine coming in at about \$1400. That’s comparable to many other machines with the same volume, unlike the Chinese 3040 CNC machines, you don’t need to find an old laptop with a parallel port.