Learn Python with Talk Python's Python courses

#23: 3D Printing with Python at Authentise Transcript

Recorded on Wednesday, Aug 5, 2015.

00:00 heard of the full-stack developer and full-stack Python, but this week Authentise is taking it to a new level with Python all the way from the cloud to the client to the printer. It's all about 3D printing with Python on show 23 with Eli Ribble, recorded Wednesday, August 5th 2015.

00:00 ERROR: [music]

00:00 to Talk Python to Me- a weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities. This is your host, Michael Kennedy, follow me on twitter where I'm @mkennedy. Keep up with the show and listen to past episodes at talkpython.fm and follow the show on twitter via @talkpython.

00:00 episode is brought to you by Hired and Codeship. Thank them on Twitter for supporting the show on twitter via @hired_hq and @codeship.

00:00 news this week, so let's get right to the interview with Eli

00:00 me introduce Eli.

00:00 Ribble has been hacking since he was little and discovered BASIC, Nethack and debuggers. He’s enchanted by magic as implemented via technology and holds a MSc in CS from the University of Utah. He’s developed driving simulator engines, mobile device management on windows CE, websites and various cloud streaming applications. Recently he’s been building 3D printing technology in the cloud to help start the digital manufacturing age as the CTO of Authentise. He’s been doing professional Python development for the past 7 years.

01:49 Eli, welcome to the show.

01:49 Thanks, it's great to be here.

01:52 Yeah, I'm really excited to talk to you guys about 3D printing in Python, it sounds like you are doing some amazing stuff over there.

01:59 Yeah, thanks. We're actually really enjoying it. I feel like 3D printing really changes a lot of things in the world of how manufacturing is done, and it's a lot of fun to get to be a part of that.

02:12 Yeah. I'm sure it is, it's definitely cutting edge. All right, so you work in a place called "Authentise" and you are using Python there, what's the story with that place?

02:20 We actually long ago started the company with mostly contractors, and they basically brought whatever tool they wanted to the table. We had a little bit of Perl, some C, bits of pieces of Python, and a bunch of other languages. And part of my job here was to bring all of them together time it up build an engineering team around. Ideally, some reasonable common decisions. I tend to agree with Netflix's attitude about allowing developers to have some freedom, but in our space in 3D printing, Python is extremely common and it's also very good for building web APIs and that sort of thing.

03:00 And so we use Python all up and down the stack, we have a desktop client, it's also sort of an agent that manages the printer, sends commands circuit responses back and streams data up to a streaming server that lives in the cloud, and the data center, that's written in Python as well. And we have various APIs where people can send commands to printers control prints to slicing things like that, all of those APIs are written in Python, they interface with databases using Python. We manage our deployments even all with Python, we are essentially a full Python shop, everything here. Our all cloud, everything...

03:38 That's awesome. Yeah there is the term full stack Python and things like that which is awesome but this is like taking it to a new level like physical objects come out of your full stack Python system, it's great.

03:38 before we get into that, maybe we could just sort of start at the beginning, and talk about how you got into programming and kind of tell your story, then we'll talk about how you guys are using Python.

04:00 Gosh, first time I got into programming- it was forever ago. My parents bought an old 486; my older brother-

04:12 SX or DX?

04:14 Oh Gosh, I couldn't even tell you, I was not old enough to really care, it was just magic to me, that was good enough. I watched older brother use it a little bit and got kind of curious and here in Utah we have year round school, so you are on again off again every nine weeks or so, and during the off times it was basically me and the computer. And so I started learning Basic, doing that sort of thing. When I got into middle school they had a class where you would learn the 12 key calculator, you would learn basic typing skills, Microsoft and that sort of thing, and if you finished everything in time there was a little programming module the end based on whatever time was left over. And I sped through everything like you wouldn't believe, so I could get that programming module and then I would actually stay late at school just so I could like do more, it was really ridiculous.

05:00 It's awesome.

05:00 So yeah, it's an old, old thing for me, I mean I was back 12 years old doing these stuff.

05:06 That's cool, so it really resonated with you when you figured it out and learned it right?

05:10 Yeah, yeah absolutely.

05:12 Ok, so let's talk about what you guys are doing with 3D printing in Python, there is all sorts of moving parts, it sounds to me like looking over your website and looking through some of the notes you had sent me about what you guys are up to- that there is just all sorts of varied hooks and stuff that you are putting together, like web APIs or Json HTTP APIs that you are connecting together with Python, is that right?

05:39 Yeah, so 3D printing is kind of complicated, it's funny in that regard because it's very much in the maker community now so there is always people tinkering in their spare time doing it but even still, usually that simplifies things but even still, it is quite complicated and there is a lot to actually produce a physical object with it. So, we started that and created a system where somebody who owns a website and runs a marketplace and just wants to sell designs, can have this website, sell the designs and our technology is embedded in the website and allows someone to directly from the website stream the print to their printer.

06:17 Now obviously I have to install little piece of software on their local computer at the top so the serial interface, but the idea was to try to simplify a lot of this; there is intellectual property controls that that come into place, while obviously if you are running a website you don't want someone to buy a design then steal it and turn around and sell it as their own. And so, part of my technology is to sort of separate that the model which is the intellectual property from the instructions to the printer which is what the end user is really buying so they can end up with a physical object that looks like the model. So we built the system to simplify printing, and we realized we've build all these parts of pieces that are interesting just to makers and people who do 3D printing as a whole, let's separate each of them out so people can then build applications against them. So we ended up building web APIs that do the various parts involved in 3D printing, so that people can mix and match and use them as they want.

07:12 Yeah, that's cool. On your website you have a really cool a statement that you guys are building the middleware for 3D printing?

07:22 Yeah, I mean, again, it kind of goes back to this whole maker movement of people just putting stuff together and it's funny when you start looking at say putting firmware on your printer. There is a couple of fairly well supported firmware but for many years a lot of it was oh download this from this form post because some guy was tinkering with it last weekend and he fixed these bugs and it's got some really great updates and this was like I mean this was not ancient history, right, like this is 3, 4 years ago, GitHub existed but it was still this sort of ethos of like just you know, rip modify push like stick it places you know, to your friends, and which isn't bad, it's really cool and I like that feel that the community has but at the same time it makes it very hard for somebody new to come in and to kind of get their bearings and get going.

08:14 Yeah, grabbing firmware from some random user off of the internet is kind of different than you know, actually installing trusted software I guess, right?

08:24 Right. Interesting. So, in a high level you guys are using you said Flask, and Micro WSGY and Python 3 sort of put all of this together. Do you want to talk a little bit about why you choose that?

08:40 Sure. So, I've been doing Python for quite a while now and it's really hard for anyone to do Python and to not run into sort of Django, MySql kind of environment especially if you are doing this, you know, six years ago which I was and so I've used Django for it and it's great, it's really great piece of software. But for this particular company I felt like we had a real opportunity to start fresh, the company is relatively young, and I kind of looked around and looked to the tooling and thought "you know, I'd love to go with something that is really modern and a little more 9:17 piece together".

09:18 Flask was very simple and direct and I've really enjoyed it, it's at the time it was kind of best, there is constantly new thing popping up in that space in Python. Micro WSGI I have used before in company, I really trust it, it does a really good job. Same thing with engine x, I mean several years ago it was a little bit more of a bleeding edge but now it's just like- yeah you go Apache, and something else, I haven't used Apache forever, or you go engine x and micro WSGI if you are in Python. Those are a couple of alternatives but it's just- it's very reliable, and I feel like you only get so many sort of innovation points that you can spend in a new company, and I really wanted to spend them on Python 3 and I tried to make everything else really just stable.

10:03 Right. I've been using micro WSGI and engine x to deliver all the episodes in my podcast, you know, actually the download server and stuff, and it's been super amazing, so yeah, I really like it. You said that you chose Python 3, and was that just because you wanted there was this opportunity to pick the latest and sort of reset everything as you came into this company, or was there more to it than that?

10:28 That was certainly there, and that was definitely a component of it. Part of it is that I feel like Python 3 has finally come into its own; I've been watching Python 3 for- it feels like forever, from the initial drafts, I was looking at some of the changes they wanted to make, I was like "Oh this is really exciting, it's really great, it's going to be really hard to deal with this whole break in the community", I think everybody just started to do their share and that is kind of we'll make Python 3 a reality. So some of that is just a sense of wanting to be a part of moving things forward, right, like you have to reach its critical mass with Python 3 in order to get it drawing new projects to it, and I wanted to do my part.

11:08 Part of it is also that it's finally got some features that just cannot be reasonably backported, for a while, some stuff was backported there were ways that you could work around it, but now like especially Asyncio and in our company we do a fair amount of actual streaming, and Asyncio is beautiful and I really like it. And, looking through and then looking it over I was like, "Ok, we're going to do the streaming server, let's use something that we want to stick with, that we will be really happy with." And I've use Gevent before, and it's fine, and some things like Tornado and stuff like that, but I just really like Asyncio and I want to help build it up, and it fits our need really well. And so we are able to put something together and base on Asyncio really fast. We were through together streaming several prototype within like 2 days, and then we started flashing it out with more of the features that we needed, and after a couple weeks it was essentially stable.

12:04 Yeah, that's really cool. I think Asyncio is definitely one of those major features that like you said- it's a legitimate reason to say look we are going to choose Python 3 over Python 2, because you know, that's relevant to you it really does to you more, in some great ways.

12:04 what are you guys doing for deployment?

12:22 Deployment, yeah. That's always the question, right. So, we use Salt, it's not just because we are based in Utah and Salt stack is a Utah company, though we do send some love to our neighbors down there. But yeah, Salt is fantastic, it's written in Python, which means when it comes down to debugging what is going on with deployment we can bring all the same knowledge, we run essentially dev ops shop- I'm a little hesitant to throw that out there, because we don't really have a choice, my team is small and all my developers have to be able to handle everything, and so everyone figures out how stuff gets deployed and they debug. And so, being in the same kind of stack that way helps a lot.

13:11 Beyond Salt, for like our sort of coordination of commands and our configuration management, we actually use Pip, so when we push a new update to some service, and we have a lot of services, we try to run essentially a microservice architecture, we push the updating to get Jenkins grabs that, builds it, runs the test, insures that it's good, all that stuff; if it's accepted and we need to deploy it, the developer will put it in the 13:42 test to make sure it's fine and functions as specified. And then they tag the built, send it to Jenkins again, it will then package it up just using setup tools, right, like any package you would stick, and zips that up and sticks it into an 14:01 just is a pretend Pip mirror, I guess you could say.

14:05 It's really simple, we have this really tiny app that basically responds the way pip expects things to respond, and then on all of our machines we put a special config for pip saying, "hey, also hit this other mirror if you are looking for anything" and it's our internal mirror, it's on our internal network and protecting all of our code, and we just say pip install whatever it was, and we have some projects that depend on one another, and they just go through setup tools, they are just part of the dependencies and our deployment system just says, "hey I want you to pip install upgrade the system for managing 3D models" and it will look, find the newest update, install that update, download any dependencies internal or external, get them all installed via pip, and then just tells micro wsgi to bounce the process if need be so that it updates all of its logic.

15:01 That's a really interesting way to do it.

15:01 ERROR: [music]

15:01 episode is brought to you by Hired. Hired is a two-sided, curated marketplace that connects the world's knowledge workers to the best opportunities.

15:01 offer you receive has salary and equity presented right up front and you can view the offers to accept or reject them before you even talk to the company. Typically, candidates receive 5 or more offers in just the first week and there are no obligations, ever.

15:01 awesome, doesn't it? Well did I mention the signing bonus? Everyone who accepts a job from Hired gets a $2,000 signing bonus. And, as Talk Python listeners, it get's way sweeter! Use the link hired.com/talkpythontome and Hired will double the signing bonus to $4,000!

15:01 is knocking, visit hired.com/talkpythontome and answer the call.

15:01 ERROR: [music]

16:10 You know, it's little crazy but it's really cool actually. Especially the dependency part.

16:16 Yeah. That one was actually kind of tricky, and it's funny because I first developed a system like this at a previous company, and at the time it was kind of painful because we were going through some of the growing pains of setup tools and distribute, and the different packaging methods, pip was relatively new, but it was growing fast and we just decided what if we try this, like what if we try doing our own internal dependencies in setup tools, and just let pip figure it out. Some of our deployment people at the time were like, "16:46 " all that stuff. We gave it a shot and we're done, it's actually much better like pip has been growing a lot recently, especially if you are in the Python 3 world, and it's quite powerful.

16:59 I mean, there is a few things that are a little bit difficult, we struggled with version numbers actually, since our version numbers in Git- our version numbers are all the way through from Git tags all that stuff all the way through Jenkin,s and Python 3 pip the latest stuff is all very exact in how it treats your version numbers, so we'll occasionally get internal conflict or we accidentally push something to production, it's not a production build, because it turns out that the way our Git tag translated into a pip version and that making it more recent than our last one on accident... But overall it's really good, and I kind of encourage other small businesses that are doing this like check this app, because I've used it in 2 different companies and we're pretty happy with it.

17:45 Yeah, it actually sounds really pretty effective I think, that's cool. Is Docker in this world anywhere, are you considering Docker?

17:53 Like most modern companies, we are always considering Docker, but we are not actually using it at this point. Right now, feeling is that it won't buy us any advantages, part of that is because of the position that we are in, we have credits with some Cloud providers and so it's essentially free for us to spin up enormous servers and really over provision. So like Docker can be kind of effective at eking out more bang for your buck on your resources, we don't really need that, and it adds a layer of complexity on top of the rest of our config management that we don't really need right now, but we keep an eye on it because it is interesting and it's an exciting project that we expect to some day we probably will need but first we have to get through the growth phase.

18:37 Yeah, I kind of feel the same way. You know, some of the stuff I was doing recently, I'm like, "I should probably do this with Docker it would be really great", but in the end I realize, "You know, this is it's really a dedicated VM and it's doing one thing, and I could just configure the VM or I could configure the Dicker image and have that be the only Docker thing running, the only Docker container running...". So in the end I just change it directly. I think you are right, in the future it's definitely going to make a huge difference in what we do, I don't think Docker is going to be a major part or what the world has for deployment, but maybe not today, for everyone.

19:13 Yeah, I had a very trusted sort of IT systems management fellow that I worked with. He has done this for many, many years, and I talked to him about Docker and he said the key with Docker is it does not get rid of the fact you have to manage a server, like whatever it does, it will be on top of having a server. Now that's not strictly true, there is some services out there now from different client providers that gets rid of that constraint, but if you keep that in mind it kind of reminds you it's not like "magic sauce" that solves all of my configuration management server management needs, right? It's an additional tool, a very useful for what it does.

19:48 Yeah, exactly, it doesn't save you from everything, but it is a very cool tool. At PyCon 2014 into a lesser degree this year of Python Guido Van Rossum got up during the keynote and basically said, I know you guys still many of you are still in Python 2 and some guys are moving to Python 3 like your project, but there will be no python 2.8. There was a great giant slide that had like Python 2.8 and a huge like cross through it or something. What are your thoughts on that?

19:48 really hard. I agree with him, I think you have to make the hard break. If anyone was going to be pushing for Python 2.8, they should have been doing this 5 years ago, right. And I get that a lot of people are like well, it's been 5 years, that's how long they expected it to take, and not everybody has moved over. So, obviously something was wrong, we should have a Python 2.8. I see it kind of the other way, which is we should have been arguing about this 5 years ago and since that's not the argument that was made, like ok, it's either Python 3 is dead or it's not dead. And it's very much not dead, if there were dead, ok, let's go back to maintaining Python 2, but it doesn't make a lot of sense to me to continue the bifurcation longer.

21:09 Which is all you would do, like the more major revisions you release at Python 2, all you are doing is extending that timeline before there is this critical mass that pulls people into Python 3. And so, like, my attitude now is, ok- if we are talking about Python 2.8 like what you really need to be doing is let's enumerate the constraints you have about needing to be on Python 2, and figure out how to solve those constraints, because there is so much compelling about Python 3, and in so many things it moved over and support it that to me you really have to give me strong reasons why not to switch over, rather than trying to give good reasons to backport stuff.

21:50 Yeah. I tend to agree with you on that. I think there is a lot of interesting technical debates and conversations, you know- I've got a million lines of Python 2 code, and we just moved to Python 2.6 or who knows what, you know, some strange things like that, right, and there is totally 22:07 that conversation, but on a larger level, on a more philosophical level, it seems wrong to me to have this great community some of which is focused doing their best work on Python 3 on the interpreter and these new features like Asyncio, and then a whole another big trunk of people working professionally on this older version that's kind of disconnected in some sense, like it just seems not like a good use of the community's energy and stuff to have these two things where people are focused, and I think you are right, going forward would be great, to use Python 3.

22:42 Yeah, I think we are making the right decision by basically saying we are just going to keep adding great things to Python 3 to make you want to be here, it's like rather than having 2 separate parties and being like we should try to split food between them and music; instead of like, we pick a party, let's make that party the best party it can possibly be and whatever happens to this other party, will happen, we're not going to worry too much about it. I think that's kind of where Python 3 is right now, it's like let's put the focus on the new stuff and people will see how awesome it is.

23:12 That's right. They will just keep adding stuff, like you said, like hey now a party has a hot tub, hey now a party has the ski jump, hey it has a cool water slide, now we have to go there. Some day that's probably how it's going to play.

23:12 So, let's go back to sort of your overall architecture because it sounds like you are doing a tone of stuff with Python, could you maybe walk us through kind of like the flow through your whole environment and all the stuff that happens there? And how Python fits into that story?

23:43 Ok. So, first off our baseline is essentially Amazon service, is when you have some other cloud providers that play in, but we're very Amazon centric, AWS centric as far as like kind of our main mind goes.

23:56 So you are running Linux servers in ET2 and things like that?

24:00 Yeah. Yeah, exactly. Ubuntu to be specific, for the most part. So yeah, we've got all these servers, so let's say you want to print a model: so you've got a new iPhone case that you want to print out, maybe that has your initials on it. Pretty exciting. So, first thing is to get that into our system, we have a system that will take in models from partners, that have market places, from individuals, anybody essentially, you could build an account, you send us a model. That's going to come in through a Python API, Flask, really standard, like a wsgi engine x Flask, and then SQLAlchemy, of course, Postgress... And it's going to store that record in there and we are going to stick your model- actually we're going to hand you back your URL that says, "hey I uploaded your model this URL and you don't have to go through your Python, you just send the model up there", that way we don't have to brake all of this data that's coming in, Amazon will do that for us.

24:54 So, that then initiates a job on the back of the queue that says, "hey process this model"- there is the Python application that's pulling messages off of a queue; it pulls down your model analyses to check to see if it is printable, gets some essential statistics about it, things like that, and then eventually it will update the resource in the database so that you can see, "ok, now it's been adjusted, it's been analyzed, it's good to go, it's good to print", all of that stuff. We then have a couple of different APIs that you could use to modify the model, say you want to put your initial on it, change the scale, things like that, there is different operations you want to do, to improve the print quality that sort of things that will actually cascade through the same system, re- analyze after operations and that sort of thing.

25:34 That's all done, you can actually just stop there if you want. But, let's say we want to go on to actual printing. There is another service that you would say, "Ok, hey I have this printer, it's Makerbot", no let's not do Makerbot-- let's say it's an Ultimaker. You say, "I have this Ultimaker printer I bought, It's lovely, I've got some PLA it's a type of plastic I want to print this with, here is the model that I want to use it's already in your service, here is a bunch of parameters about the print like the wall thickness, the layer and that sort of things, the temperature that the plastic is going to come out...", there is a bunch of essentially mechanical engineering material science stuff that goes into those parameters.

26:17 And, the nice thing is that you could also pick very high level parameters and say "I want quality over speed, figure it out", and we'll figure it out based on your printer and the model and things like that. So then, that also goes through again a Python API to handle all that sticks it in another Postgress database there is another job that we are going another queue, there is a Python process on the backend, pulls the Java of the queue, pulls the model down, it's going to load up software from different slicing engines depending on their approach and that sort of thing, run those processes then push updates into a database so you could pull constantly for information about your slices; slices can take a while, very complex geometry with really difficult settings, we could be talking about tens of minutes-

27:00 What's the standard time?

27:02 Most people for most prints will be on the order of like couple of minutes, really, it's really just like the big or the really complicated stuff that will get the tens of minutes. So, we'll finish the slicing job we actually have the callback APIs so you can tell us hey url end point when it's done, so you can integrate a service with us, we'll tell you hey slicing is done, we have instructions to your printer. That will then be handed over to a streaming service, again Python 3 using Asyncio that is handling hundreds of thousands of connections of any given time for a particular server, you will assuming you are working on like a webpage, you could do all this with a command line, but most people do it on some sort of webpage often with one of our partners.

27:44 And you'll be seeing you know, Javascript that's interacting with these APIs pulling down updates and displaying the statuses you go along and you'll get to this point where it's like ok, let's print, you need to download our software on your printer some printers have our software built in, anybody who has like a laptop or desktop with the printer plugged in can download the application and run it; That application is mostly written in Python, there are of course some platform specifics as well as some encryption and stuff like that that isn't for various reasons-

28:15 Yeah, so for the client side stuff, I was wondering, so you send them an application, and that's Python, are you like compiling that or composing that into an application like .app, or .exe file? Or something like cx freeze, or how does that work?

28:33 For Windows, we are actually sending them an msi, for Mac we are sending- I can't remember what it is for Mac, but either-

28:45 The pkg or whatever?

28:46 Yeah, yeah, pkg thank you. For any given platform it's a real installer so it'll be properly signed and all of that sort of thing and it will walk you through a wizard and install. And the thing that it installs will end up being a binary, binary actually has a bootstrapping process where it unpacks itself as a bunch of pyc files and then can use those files with the interpreter and interpreter has all of our dependencies, it's got a version of python that is like we know what it is so that we don't end up using whatever their installed version of Python is, and basically comes that everything, so run it, it unpacks itself, executes Python, it's got again, some other languages, but mostly Python, even do all the UI stuff and because we have a little tray icon that shows you the status of your printer and that sort of thing.

28:46 ERROR: [music]

28:46 episode is brought to you by Codeship. Codeship has launched organizations, create teams, set permissions for specific team members and improve collaboration in your continuous delivery workflow. Maintains centralized control over your organization's projects and teams with Codeship's new organizations plan.

28:46 as Talk Python listeners you can save 20% off any premium plan for the next 3 months. Just use the code TALKPYTHON.

28:46 them out at codeship.com and tell them "thanks" for supporting the show on Twitter where they are at @codeship.

28:46 ERROR: [music]

30:26 Oh that's awesome, what UI framework you are using?

30:28 So, for Mac, sorry I laughed, because I think for Mac it's called something like Rump something, it's this tiny little thing that we found, it basically gives you- you define a class and it figures out all of the Cocoa Bindings, and stuff so that it can do a message pumping loop for you and it will just like the class defines some menu items, some call backs from those menu items get fired and that's it, it's very small very simple but it does exactly what we need which is fantastic. On Windows, I think we have something similar, but yeah, ultimately we are using just a couple of very small level toolkits that are designed only to do like a system tray icon kind of application, there is no windows application aside from the little like help like tell me about the version of this software, that's all, it's just a very minimal so we kept the framework very light.

31:29 Yeah, that's really cool. I think that's one of the somewhat untouched frontiers of Python, proper neat fill in applications.

31:41 Yeah, and it's been a bit difficult to be honest, it took us a while to sort out exactly how to do Mac just because we needed the Cocoa bindings and those are built into the latest version, but they are kind of different across different versions and you can't really properly virtually environment one when you are doing development not easily anyways. There is always little complexities but I agree it's somewhat untouched area and it's really interesting because there is no reason you can't use Python as much as you would say like C sharp on Windows as a high level language just tie UI logic together.

32:11 Yeah, definitely. By the way I found the at least one of the rumps repositories on GitHub, Jaredks/rumps, and the sort of tagline of the repository is ridiculously uncomplicated os10 Python status bar apps, perfect, right?

32:28 Yeah, that's exactly why we used it. And it does exactly what we need, I mean, that's the Python way, right?

32:33 That's right. Very cool. Ok I kind of short- circuit you, talking about this architecture thing. Will we get into the client side and what's the story there?

32:44 Yeah yeah, ok, so, the client side. You download this application all it does is mediate between the streaming server and the connection to your printer. However we are making that connection, there's various ways it could be made, but it's, it does some of the UI stuff, it does some of the streaming stuff and it's the Python is all kind of the high level application logic which is really nice, we are able to take some C code that did all of this that was probably close to five to seven times as many of lines of code and compared to that it is much slower and much more easily debugged in Python which is awesome. One of the other fun things that the client does it will stream logging events up to our server, so if you are trying to do a port right now, I can actually log in, you can give me essentially little toolkit that we correspond your installation I could watch the information coming from your printer over the wire into our data center so that I could actively debug with you stuff that's going on, that's necessary because printing is just hard.

33:38 And 3D printing is a whole other level, right?

33:42 Yeah it's a whole other dimension as we love to say.

33:45 Of course.

33:47 So, anyway, that's the client application. The last component I think that's interesting as far as Python goes is that while your printing is going on, people can opt in to a computer vision component, which is the camera on the printer and the camera will watch the printer as it's printing, and we're using open CV on both the front end and the back end, so on both the client side application as well as the backend server, and awesomely thank you open CV project for supporting Python 3 relatively recently because we actually started on the open cv 3 beta when we first did this product, trust it would come out of beta in time for us to run it into production.

34:25 Yeah, I know, not too long ago it did, right?

34:27 Yeah, it was a matter of months it was this year so, but it's really cool piece of technology anyways, we use that so that we can capture these images of the printer, we send some data that those images up to the cloud we use machine learning and computer vision on it to assess whether or not your printer is going well. So that you could have these 10 and 20 hour long prints and it will actually text you if it looks to us like I don't know so your cat jumped on the platform to get warm next to the hot plastic, and we are trying to print on your cat, that's not good so we text you and let you know.

35:03 It's got to be a low cat reference in there somewhere.

35:06 I'm sure there is but I always miss it.

35:07 That sounds really, really cool. What's the craziest thing you've seen printed?

35:19 So, I tried to filter through all the things that are actually ok to talk about... Probably the craziest thing- we've gotten a surprise number of nude models. So for whatever reason, naked people.

35:34 Interesting.

35:34 People printing naked people.

35:37 Are these like little toy size ones or like-

35:41 Yeah, mostly the printers that we work with can't build much more aside of I'd say maybe 20 centimeters, so most people are in those sizes.

35:53 Oh boy, ok what else?

35:54 One of my favorites is people who print stuff with actual joins and this is a say crazy but I think it's really interesting to people who aren't into 3D printing. One of the first prints that I did when I joined the company was I printed out a bracelet for my wife, and this is of course printed in plastic and it's all one object, right. So you literally print this objects, and it's rigid and hard when you take it off of the build platform and then you bend it, and you hear all of this breaking, all along just like it just completely snapped it apart, but all you've done is broken these really tiny bonds to keep the print as one object, and then there are these various sorts of joints and they work. And so we have this completely flexible fluid thing made out of rigid plastic you printed all at once, all in one object, that cannot come apart unless you break it, but it works like jewelry. And I just every time I see those I think they are amazing and I just love them.

36:45 Yeah. That's really cool. I have seen certain things that have been printed, where like you couldn't ever put together because the way it could be 3D printed but it couldn't be assembled from parts, basically. Which I think is a really cool idea.

36:58 Yeah, that application into some modern industrial stuff that we have been doing lately like aerospace, they have need for parts that you literally cannot machine or manufacture and 3D printing can produce these things with extremely complex internal geometry, that's used for like jet engine injection type stuff where you get improvements of say 20% in fuel economy or something like that. Just because you have this highly advanced structure that you can analyze really in depth.

37:27 That's really cool. You could make big dent in sort of the gas consumption of the world which you know, can make a big difference, that's awesome.

37:27 do you think where 3D printing is going? These are early days...

37:39 Yeah, my expectation is that 3D printing will follow trajectory somewhat similar to personal computer say 30 years ago, where right now, we are at the very beginning, it feels like we have essentially invented the transistor right, and it's going to be a little bit of time, there is a lot of big industries getting in, department of defense aerospace also very big because enables to do things that never done before, kind of similar to personal computer obviously. And I think what will happen is a lot of these technologies will get cheaper and cheaper and become more and more ubiquitous, but there will be kind of this inflection point where people realize that you don't have to manufacture things in giant warehouses and then distribute them all over the globe via a massive logistics network. Instead, what you will do is you will create the objects you need at the point of use.

38:26 Now, I don't necessarily follow some people in thinking that every person will have their personal 3D printer to make them everything they ever dreamed, that would be pretty far. But I think it's very reasonable to have sort of the kinko's model where every neighborhood has a 3D printing bureau nearby where you know, every couple several weeks when you have a need to produce something that's personalized or that comes to the sort digital manufacturing environment, you'll send them a command, they'll print it, and they will say "hey your thing is ready come pick it up and you'll go pick it up" and you'll go pick it up. And I think we'll see that by a large all over the world because it's so much cheaper to just acquire the raw materials in place that you need and then assemble them intelligently, rather than to drag raw materials all across the planet to a few focused manufacturing centers build the object and then redistribute them back in the opposite direction.

39:16 Yeah, that's a really cool vision. I think you are right, that sounds pretty amazing. You know, I've been reading some books lately, and I was talking to the authors something like early not quite yet released books, and like "do you have an electronic version that I can get", and of course they sent me something that I can put on my kindle or whatever, and it was just really nice that a tree didn't have to be cut down, turned into paper, printed somewhere, and put on a truck and driven to my house, it was just like here it is, and now it's on my kindle. But this is like that for everything, right, it's amazing. It seems realistic though.

39:53 Yeah, one of the other things that's kind of curious about this, is most of us are familiar with mass produced objects because right now that's one of the most efficient things that we have, is this mass production that we had for a hundred years, everybody has exactly the same parts to their car because there is only so many manufacturers of these parts, they are just mixed matched in slightly different ways. But, with this whole digital manufacturing thing, like we have a print shop that we maintain here so we can test our software for various reasons but one of my interns will be looking at the printer and go oh we are having somewhere inefficient cooling on this printer because of these various reasons and could we fix the ducting on this?

40:33 And, we'll pull the ducting, I've kind of looked at it bring up the model, in 3D modeler, manipulated some parameters open the gap a little bit, shorten some of the lengths something like that, print it and like in 3 or 4 hours we had a completely new piece of ductwork that's more efficient at cooling and whatever, and it was like we just naturally want to highly customize everything we have to deal with the particular environment that we are in. And I think we'll see this interesting inversion where instead of having everything as mass produced and we try to make everything the same so that it can deal with all of these mass produced items, we'll instead go the opposite end where we have very intelligent tooling that can hyper customize everything that we have.

41:11 Yeah, that's really cool and I think there is going to be whole new set of sort of craftsman that can do that customization for people, rather than giant factories, right?

41:22 Exactly.

41:24 Awesome, so, people who want to get started with working with you guys for 3D printing maybe they want to set up the website sell some models what do they do?

41:33 Actually just reach out to us. We keep an email address info at authentise.com, reach out- we have all kinds of people from graduate students who are just doing studies in 3D printing, that need some data to help them in their studies, to businesses, companies that want information on how they can use 3D printing to essentially in mum and pop shops we have a few shops that specialize like highly specialize like 3D printing sex toys and they will reach out and say can you help us out? And that's what we do, we help people get 3D printing working for them.

42:09 Yeah, that's cool. I saw you just recently have done some kind of partnership with autodesk and those guys are obviously natural so what you guys are doing.

42:19 Yeah, we are working with autodesk part of the difficulty in 3D printing is the tooling, right, you talk to a new professionals that will do this design work, ideally we need to push all of this interesting professional tooling out to as many people as possible make it smarter, make it easier, and autodesk has some great tooling it's a little work together with them to try to bring more of those tools to the masses so people can do better designs and make better stuff for everyone that print.

42:43 Excellent. Yeah, the autodesk guys are great. I've been to their place, very cool.

42:43 about your favorite editor? So if you are writing code, what do you write it in?

42:53 I'm writing it in Vim.

42:54 Vim, ok. Right on. There is a tone of packages out on Python package index what one do you think maybe people to know about, that you would like to say hey, be sure you check out this cool thing that's out there...?

43:04 This is going to sound so boring. There is a tool for sorting your Python imports, I am really super weird, in that long long ago, I think that scared me in some way and so I actually harp on coding style a lot of my organization because in my mind, you read the thing ten times more then you are going to write it maybe even more than that if your company survives and so you should like optimize for readability in your code, and so I actually like all of the imports to be sorted out like parameters to be sorted, I like to build little tables out of white space and code. Like anything that will make it more readable more approachable, is a good thing to me. So like little tools like that that will sort your imports so that they are alphabetical, awesome.

43:52 Awesome, so what's the tool?

43:53 Oh gosh, iPySort something like that. It's one of those things that it's like you install it and you stick it in your GitHub and you never think about it.

44:02 Yeah, of course. Very nice, ok, That's awesome. Anything else that we haven't talked about you want to let people know about or some sort of call to action?

44:12 If you have not given Python 3 a try, try it. Like, I keep going back to a lot of us will remember original experience with Python and it feels a lot of like that xkcd comic where it's like import antigravity and you just like come join us up here, it's amazing. My feeling for Python 3 now, is that it has that same sort of gap of join the program to Python 3 as Python 2 did to everything else back then. So, Like if you have not tried it, try it. Especially like Asyncio, or any of some of the newer language like 3.3, 3.4 look it over, try it out, it will be very hard for you to let go- and that's part of my point.

44:57 That's awesome. Yeah, and then the whole type initation thing is coming that's going to be pretty interesting conversation in the community I think.

45:03 Oh yeah, I agree, I'm watching that whole thing and I'm really excited for what it will mean. I don't even know which is part of what makes it so exciting.

45:12 Yeah, that's awesome. And just the follow up on you xkcd if anybody is not familiar with this cartoon, open up a Python repl and type repl import antigravity.

45:12 thanks for being on the show, it's been really interesting.

45:28 Yeah, thanks for having me.

45:30 Yeah, you bet. Talk to you later.

45:30 has been another episode of Talk Python To Me.

45:30 guest was Eli Ribble and this episode has been sponsored by Hired and Codeship. Thank you guys for supporting the show!

45:30 wants to help you find your next big thing. Visit hired.com/talkpythontome to get 5 or more offers with salary and equity right up front and a special listener signing bonus of $4,000 USD.

45:30 out Codeship at codeship.com and thank them on twitter via @codeship. Don't forget the discount code for listeners, it's easy: TALKPYTHON

45:30 can find the links from the show at talkpython.fm/episodes/show/23

45:30 sure to subscribe to the show. Open your favorite podcatcher and search for Python. We should be right at the top. You can also find the iTunes and direct RSS feeds in the footer on the website.

45:30 theme music is Developers Developers Developers by Cory Smith, who goes by Smixx. You can hear the entire song on our website.

45:30 is your host, Michael Kennedy. Thanks for listening!

45:30 take us out of here.

45:30 ERROR: [music]

Back to show page