3D Printing: Perspectives from the hardware and software sides