OT: How do I become a hardware expert/geek?

This may sound strange, but Im actually asking this because Im a programmer. I can program using a lot of programming languages and libraries (OpenGL, DirectX, etc) but I know Im an illiterate about how graphic cards, hardware in general works. For example, I have managed to program some little demos and games using OpenGL, but I get lost when I try pixel shaders and the like. Maybe my lack of assembler programming knowledge is not helping, but I really want to understand how a graphic card/CPU/hardware/etc works. What do you recommend me, should I start programming using assembler? Maybe some books?
Thx in advance for your help!!!

How do you become an expert? erm, not by posting such questions in here! If you want to learn then go ahead and do so - But don’t expect all your question’s to be answered. You are on your own now pal, GOOD LUCK!

I asked a question about GetAsyncKeyState vs DirectInput - I’m still none the wiser …

Perhaps looking into video drivers might help? I mean, there’s your hardware/software interface.

Also taking a peek at the mesa sources might be enlightening. http://mesa3d.sourceforge.net/

Then there’s sgi’s open source opengl sample implementation to look at: http://oss.sgi.com/projects/ogl-sample/

You will not become an expert by reading the replies to this qustion but you could be pointed to some good resourses. there are some good texts out there, read up on Boolean algebra and discrete math in general. “Discrete Mathemetics and its applications” by Kenneth h. Rosen is a good intro text. it dose not have much about HW it self but it is a good start… I have seen several good books that are more spicific to the qustiuon asked.

Disclamer, I am by on means an experet but I have had a few Electral Computer Enger class

  1. Never buy a complete pc, but buy components, build your pc out of them and fix all problems you get without a hotline.

  2. Learn at least as much assembler as necessary to code a simple graphics application for dos.

  3. Learn enough about electronics that you can at least build things like a 2-bit-addition (AND understand what you built).

  4. Buy a book about pc hardware (and read it until you understand everything).

  5. Browse the source code of the linux kernel (when you understand it completely you are already an expert).

  6. Never work with windows/plug&play, use linux (not the newest redhat, but the self-compiled download from the internet).

  7. Study computer science and/or microelectronics at university.

  8. Best you start with these points at the age of eight.

At least this is what I did (point 7 is still pending, I am about half a year from my final exam of an informatics school), and I am still only able to write assembler up to 486 protected mode and access only the simplest hardware (hdd, floppy, vga graphics, …).

Seriously, without university or a special school you have little chance to become a hardware expert. You also need at least 10 years of practical expirience with repairing computers, configuring operating systems (without plug&play, wizards, …) and low level programming.

If you still want to become a hardware expert I wish you good luck, but I would recommend you sticking to high level programming. If you want to do something low level, try writing a graphics engine that uses only the PutPixel system call, or write a ray traceing engine.

Greetings
Overmind

My previous replies were a bit harsh.

The point is though, are you prepared to break your hardware learning these skills? I’ve built around 200 machines, and it’s cost me a fortune! The only way learn is by breaking what you’ve got, and understanding why it broke. Now, I’m happy to overclick AMD XP chips, but I except that it may go wrong. You can read loads on the net about harware, or go to Uni, but there is no substitute for practical experience. If you really want to do this, then build machines for people - and learn the hard way. Like I said - you are very much on your own here - no one will pay for the parts you screw up! …

And again … Good Luck!

Ok, let me point out that I know how to build a PC, and I always do so (yeah, I have broken a lot of devices ). What I don’t know is the low level stuff (like writing drivers and the like)…
Thx for your answers guys!

Buy a few good books and practice. Push yourself to implement the effects you download in demos. I wouldn’t recommend assembler.

Familiarize yourself with lighting equations, get a serious graphics book like Alan Watt or Foley or Glassner. Read Siggraph proceedings. Maybe take a math course.

If you want to know it all from soup to nuts you probably need the intensity of a CS course. I don’t think that’s required to learn what you need about graphics software & hardware. Go to siggraph and take some classes.

I would respectfully disagre with dorbie, asm may not be need much for opengl programing. but knowing asmbly and hardware organization will help in all your programing. You get a feel for how data it moved and stored what will be a bottleneck ect. Try to learn about HW organization (not an easy task even with a CS class) it will have you relly good fealing for how a computer works.

Well that’s a better answer than build a PC from spare parts.

I was thinking in terms of bang for the buck really, what would you gain the most from in a fixed period of time. It depends on what you ultimately want to do.

[This message has been edited by dorbie (edited 12-08-2001).]

dorbie do not get me wrong I agree with all most everything that you said. And you are right in terms of bang for your buck you will get more quicker if you put your energy in to grphics programing. But I also think that learning the low level stuff is really inportant. I know that after I had classes in HW designe theory it really helped my programing at all levels.