I was recently approached by a friend of mine to join forces and create a DIY 3D printer. For those who don't know, a 3D printer is a machine that can fabricate 3D objects that are rendered in a computer using a medium such as plastic, rubber, or sugar. Much of the design is similar to a regular desktop printer, except that instead of using ink it uses a building material, and instead of just printing in 2 directions, it has a moving platform that lowers to allow for the 3rd dimension. It really just prints the material in several 2D layers that build up to slowly create a physical object. Useful in prototyping and art.
My main desire for having a 3D printer is to build housing and components for an arduino. It would be much easier to custom create components from a 3D model for me than to hand make them out of wood or metal, especially since I lack in a decent work shop with power tools. Commercial 3D printers run from $15k up, but DIY kits can be had for under a grand. I'm not sure when my resources will allow me that indulgence, but it's something to look forward to in the future.
However, my recent fascination in the Arduino, physical computing, and robotics in general have made me wonder if I shouldn't have also gotten a degree in Electrical Engineering. The college I graduated from did not offer that degree, however the field has begun to interest me increasingly so. I might try to look up some electronics courses at a local community college to expand my horizons.
In the meantime, one of the best ways of learning is not through an institution but through research and experimentation. For experimentation I have to wait for my arduino to arrive (it should be here on friday), but as for research, there are more possibilities in that area. I'm looking at some books on the subject, but I'm not quite sure where is the best place to start. I could focus on some of the physics and basic text books on the subject, or focus more on the experimentation and practical usages. If anyone out there has a good learning road map to a non-colligate learning curriculum on hobbyest electrical engineering, let me know. :)
In a slightly different ramble, I'm discovering that my leanings seem to be towards the lower level and possibly abstract areas of programming and engineering. I've been focusing my code on creating libraries rather than single use programs. Code reuse has always been an interesting topic in computer science I feel. It's greatly expounded upon as one of the benefits of object oriented and modular code, the ability for reuse. However I've noticed that many developers, and entire teams of developers, rarely write any code that is reused in another project. They will use code from existing libraries such as the Java Standard Library, but will not often create them. However, I feel drawn to making base items that can be reused in multiple projects and by other people.
I think this is why electronic engineering fascinates me so much right now. It's one of those areas where lower level library code is very much in need. If I can design and create a device that can interface with a microcontroller to perform some interesting action, I would then need to write a driver or library to make that interaction more abstract and easier for a basic user. I haven't done much C/C++/Assembly programming so I've never written a driver, and that's where my knowledge of theory and experience deviate.
Gaining some practical experience for basic theory is that area of excitement that I feel I can achieve by wiring up components to a microcontroller and building devices that have not yet been built. An exciting prospect that, in the end, I feel will help to improve myself as a developer.