3D Printing The Future

I’ve read Scott Hanselman’s blog for a while now and he’s written a few articles on 3D printing, but I mostly skimmed over these because, although reasonably interesting, they were quite abstract for me having never done any 3D printing and not owning a working 2D printer, let alone a 3D one. However, after a factory reset of my phone, leaving me with many a free megabyte of drive space, I decided to get into listening to podcasts and Hanselminutes was one of the ones I decided to start listening to. In his podcast, Scott talks about many things to do with technology with some rather interesting guests; but the passion and interest with which he talked about 3D printing really came across and it piqued my interest. I was in. I had to 3D print something. But what?

As part of my podcast initiation I was also introduced by fellow nerds Alex (of alex-spencer.co.uk) and Mike (of The Boarding Kennel) to a couple of Netrunner podcasts (namely Terminal 7 and Run Last Click). Netrunner is an extremely elegant, and most importantly fun, two player card game set in a Cyberpunk future where hackers called the runners try to steal secrets from morally dubious corporations’ servers. One of the mechanics of Netrunner is the spending and earning of credits. These are represented by little cardboard discs but I felt that these could do with an upgrade. After not a huge amount of thought, I came up with a design for a new, nicely stackable, credit token for playing Netrunner with. The challenge was now to visualise this.

I’ve had a reasonable amount of second-hand experience with 3D design as my father makes his living from it, but the tools he uses are a little out of my price range so I thought I’d try (the free) Google SketchUp. Creating basic shapes in SketchUp is pretty simple – you just select the shape you want from the menus and then click and drag, then extrude to your desired topology. If a bit more accuracy is needed, you can type in values for each tool. This works for simple shapes, but when trying to make more complex structures or trying to position two different models for unioning, it becomes extremely cumbersome. It’s too easy to create artefacts (inverted faces, random polygons in bizarre places) and too hard to correct them. I was about ready to give up, when I was perusing Google and a (previously skimmed-over) article of Hanselman’s came up and it mentioned something which sounded perfect: Open JS CAD.

Hard to fix SketchUp errors

Open JS CAD is a web-based application which allows you to create 3D models by writing JavaScript code. As a software developer, this is a particularly appealing idea. Aside the obvious advantage that every action you make is precisely defined, the most powerful thing is that you lose the need for an undo button. In SketchUp and other 3D modelling applications, actions you make are destructive – if you made a mistake 20 clicks back, you have to undo to that point in time, fix the mistake, and then redo everything manually again. But when you’re writing code to create your models, the set of commands you’re using to create the shape are being replayed in the exact order every time you make a change. Meaning you can go back a million steps ago, make a change, and you won’t need to manually redo the next 999,999 steps. It also allows you to easily duplicate models – just stick them in a for-loop. You can even make Object-Oriented models! In the end, making the model worked out a lot easier in Open JS CAD – the same shape took me a quarter of the time with it verses SketchUp and I was also confident of the dimensions of the model and whether it is closed, which I could not be with Google’s tool.

Open JS CAD makes things much easier

I had my model but I didn’t have a 3D printer. Although they’ve come down in price significantly in the past few years (and improved in quality (yay – Moore’s law)) they’re still a bit out of my price range. After extremely limited Googling I came across 3DPRINTUK. Their detailed website with lots of hints and tips gave me the confidence that these were the people to handle my model. I sent them an STL file of the credit and, after a extremely quick response and a few emails back-and-forth, my model was in the print queue (64 times)!

8-10 anxious business days later, I get a package in the post!

It’s really amazing holding something physical that I wrote in JavaScript. It went from my mind, to code, to being an actual real-world object, which you can touch, feel and eat (not suitable for children under three years of age), with very little effort on my part in between.

Real-world JavaScript

I’m proper chuffed with the outcome so will certainly be coding some more objects soon and will of course post the outcome of any further adventures in the future.

Finally, you can print your own by downloading the file from Thingiverse.