Saturday, April 23, 2016

Approaching a New Technology

Approaching new technology can be quite intimidating to people.  I have been asked a few times lately what my approach is since I always seem to be working with something new.  What I do is not really anything complex.  I simply dive in the deep end and start working at it.

A good example of this is when I decided to learn x86 Assembly.  Rather than taking a class (not that I would be able to find one at the local community college or anything), or reading a book (surprisingly hard to find).  I simply chose a project and started learning on the run.

The project I chose was to port Richard Garriott's DnD #1 into x86 Assembly.  I thought it would be cool since it was written just before the introduction of the x86 processor family.  I also decided I would do it bare metal (no existing operating system) so I could get really embedded into how it works.

Starting the project I new nothing but a plan, but I took the time to read the code and analyze it.  I figured out the first basic things I would need and decided to build them from the ground up.  The first of course being the ability to get something displayed on the screen, and the second something to handle strings.  So I went and dug around until I found the basic info I needed to get started with that and spent a good couple days simply building string manipulation and graphics libraries.

From there the project went pretty well and I learned things including hard drive access, memory addressing, and some nifty tricks with binary math.  It was definitely an investment of time.  If I had simply stuck to reading a book on the topic I would have probably learned a lot more theory (and forgotten about as much), but would have had very little practical knowledge to use in the real world.

Basically my trick is simply to get hands on with my learning.  I am not saying that learning from a book is bad, I learned a lot from different forums and blogs during the process of porting that game which is a similar concept.  The big difference is that I immediately put that knew knowledge to use which helps to ingrain it into memory.  When learning something from a book there is a reason they put chapter exercises.  Without them, the amount you will retain is significantly less than if you simply read the book.

I suppose in all of this, it does not hurt that I have a passion for learning.  I am constantly reading a new book or testing out a new technology, it is something I enjoy.  If you are just going through the motions, you will likely not have the attention to learn a new technology.