Monday, March 25, 2013

The Importance of Assembly

There's a commonly held belief among programmers: if you want to be a great coder, write something new everyday for a few years. While this may be true, I find that it tends to settle a programmer into a particular language. Doing so, almost closes the mind to what one is actually doing, entering in line after line of code. I feel that it makes a coder lazy. Sure laziness can be a good thing; who knows what the world would be like if someone hadn't invented the methods copy and paste. But laziness can make programs inefficient and heavy. I believe that if developers encouraged more efficient means of coding, computers of today wouldn't need to be anywhere as powerful. The problem with higher level languages is that they use higher level commands, copying and pasting snippits of lower level code that have a general use, and a general efficiency. Most programmers will never know the complexities of a command as simply as print.

I am someone who can program in assembly. Not for any big processors, like x86 or x64, but I know my way around ARM, AVR, and Zilog. Writing a small amount of code completely changes how you look at other projects. In assembly, you have to be cognizant of every line of code, because you want to squeeze every ounce of power out of what you're writing. It encourages writing specific bits of code in specific ways, for specific purposes. Every piece of code is purpose specific. Every problem requires a creative solution. If you want to be a great programmer, learn a little bit of assembly. It goes a long way.

Wednesday, March 20, 2013

Learning from Datasheets

As a computer engineer, one of the most important things to learn is how to read a datasheet for every piece of information it can offer. Everything in a datasheet outlines, quite literally, every detail of its subject. By now you've probably gone through quite a few datasheets for various ICs to pull out some quick information like the pin-out or basic circuit configurations. But there's more information there. Take the 555 chip for example. In its datasheet, not only does it have several basic circuit configurations examining different modes of operation, it also has example values, timing formulas and waveform outputs for each of them. There are also notes detailing what you should be cognizant of, and general suggestions.

The real skill of reading a datasheet is being able to sift through something as dense as a controller datasheet. The sort of thing that details the operation of microcontrollers,  processors, LCD devices and sensors. A lot of information about how to get started with, or how to implement is contained within these documents. Microcontrollers and processors will often have example code, or something close to, specific to various components of the device. LCD controllers will have timing information for how to communicate with the device and what output that will result in. Sensor datasheets will often have formulas for calculating real life units from data, and what will produce certain output.

Datasheets are a powerful tool, but it takes patience to realize their true potential.

Saturday, March 16, 2013

The State of Things So Far

I realize that it has been several months since my last post. I fear that what this blog is going to devolve into is just a series of posts apologizing for not having more to write. So here's a general update. With school, lack of equipment, and general laziness, my posts to the YouTube channel have been some what sporadic. I recently past 60 uploads and over 2,000 subscribers! I hope that over the coming week off, I can upload some more videos and begin chipping away at the list of suggestions I have accumulated. 

One of the great things about having this blog and the YouTube channel is the people that I  come into contact with. Recently I've been in contact with a student studying astrophysics, requesting help for an Arduino controlled light spectrum analyzer; here's hoping that his experiment goes well. I have also been in contact with two missionaries, looking to use microcontrollers to aid in their field work. Helping people is one of the biggest reasons I started my channel and this blog, and it's a great feeling to know that I am actually accomplishing that.

Thanks to all of my subscribers and readers.