 All right this working can you hear me all easily in the back so give one moment did not want to start early technically here we go so welcome this is what the heck is good though and what have I been missing out on and first thing up we're going to cover well who the heck am I because when you receive information it's helpful to understand the viewpoint of the person who's given it to you so you know what they've looked for what they've maybe not and you know where their experience brings things to them so this is me um early on I did some freelance with a major game publisher getting into 3d before any home computers had 3d hardware when everything was pre-rendered saved to sets of floppies and distributed in a big block as a game if you were lucky then um I did uh as a contractor I did the animation and 3d modeling for one of their early decent games they were highlighting at ces then I went on to work full time at a multimedia startup led the engineering one person myself I was the engineer who could do art then we had an artist who could also engineer and then the boss and a sales guy that was it by the time I left we built it up into a larger art department I was in charge of 10 people and we were cranking out multimedia Hollywood pictorials um you know there's a uh unfortunate link to certain individuals now but just in the industry is like oh I'm embarrassed for them as an actor but beyond that um and then I also got stuck over and over at several companies including after this doing karaoke children's karaoke pc karaoke online if I wasn't if the entire Asian economy hadn't collapsed at once I was going to help the company go IPO on it since then I've been aside from my day job stuff involved in open source I've heavy developer with inkscape I was on the board for 10 years helped get that going so I continued to be involved in that even though I was doing other things and then open clip art library which is back and doing decent now and I was going to pull a lot of assets from but pulled back on this time just I gave a hand getting that started not I don't want to claim and this by the way this is the game I worked on it's pertinent see I don't know has anyone ever seen this in the stores in the past it's on it had gone on to good old games and a couple people yeah and it's on steam now too and I think it's even on sale so I might actually pick it up more I threw it in my wish list just in case but pertinent thing that was a physical box in the store with a holographic insert and the holograph the the skeleton was not but all the rest the dungeon that was holographic that's that's my dungeon and that is why it's pertinent and we'll come back to that later but just want to show that as a reference so now next what the heck is this well it's not it's good to know what it's not because then you also know you know what it is and your expectations are better so this is not a tutorial I'm not going to walk through the steps we need an hour and a half easily to do a nice tutorial for you to be comfortable with it and a lot of equipment not academic research it's not that detail also it's not pretty that is on purpose and I'll mention that in a moment it's not official I am not a good developer or associated with the project or project and so you know this is not a skewed bias view but it's also not an insider view an in-depth view from that view also if you have caught from what I'm saying it's not probably not going to be slow so at least hopefully we will finish on time so the idea though is what this is is going to be fast subjective my viewpoint on all this check it for yourself see if it matches with your desires your goals your needs but no this is my view and that's what it is it's not I'm not trying to be objective here I'm trying to give you my feelings on this and hopefully inspiring you in a way that you can go something to play with something explore how I would say not just if you should check this out and try some things but what you should try it with because I feel anyone should at least give it a try there is no monetary cost the time cost maybe a weekend and you can see oh yeah I like this or yeah that isn't for me but you'll know that and so basically a crash course introduction I'm going to go back one second one of the things here officially not pretty have um has anyone here ever worked in film animation or game development at all a couple people yeah you are you are you familiar with good storyboards thing I did when I was in college I made a mistake for my animation class one of them I did storyboards on the computer because at the time not many other people were doing that and I made them really fancy with all these that distracts from the content your I don't want you to be looking at my styling my slides my content I want you to think of it as a blank slate for your ideas your style and what you want to do so that's that's one of the things so I actually pulled I had a lot more graphics in here that I pulled out because I did not want to skew it incorrectly so that's where we are so now let us move into the inner an overview of everything first of all the players happy mr. Goddow now part of an introduction how do you pronounce it multiple ways officially this is actually the name was inspired by the Samuel Beckett play so it is waiting for Goddow but it was originally written in French and presented in France by an Irish man who spoke English also so and then the project was started by people in Argentina who do did not speak English as their native language so there are different ways and most say it Goddow officially it's kind of recommended but even in some of the plays production some of the actors especially with the uh not an American actors uh you British have different accents and some of them like sir Ian McKellen actually slipped into saying Goddow a lot and which is how I used to say it purely so I'm going to slip back and forth a little in that there the other players the big gorilla is on the block unreal engine and unity and does unity ring a bell with anyone of the late uh okay good uh at least a third of you out there so we'll touch on that and actually with the players established we now get into the drama well especially Samuel Beckett play okay so the play reference the drama is does anyone recognize this raise a hand raise a hand so I get an idea how many uh a third half okay this is The Lone Ranger established in a 1933 radio show then books a TV show that ran through 49 through 57 comic books cartoons and The Green Hornet was actually a spin-off from The Lone Ranger in case anyone had heard of that recent movie even with that okay so but that's not pertinent so we'll move on and then films films of The Lone Ranger does anyone here remember 1981 even in some of the older people don't remember that was that all right the movie called The Legend of The Lone Ranger what happened is the people who were producing the movie did not want the TV image especially because at the time the 60s Batman was thought of as cheesy and funny and not serious so they did not want to bring that onto their movie project so they sued TV's Lone Ranger so he could no longer appear in costume in a mask could not go to conventions could not do go to openings which he had been doing a lot because that's what you do when you finish a very popular show I mean just look at the Star Trek circuit for conventions and actors then they gave a cameo to the guy who replaced him on the TV show for the last reason when season maybe when there were contract disputes so that was just rubbing salt in the moon it ended up a critical and commercial failure critics hated it that's fine you can still make money Michael Bay is proof of that commercial failure because of the backlash it wasn't a great movie and then they did not have their beloved ranger Clayton Moore in their boom it's over now brings us the next connection I'll jump up to Dungeons and Dragons has anyone ever heard of this thing a couple of people okay okay so why is that related to what I'm going to be talking about well in November of just a few years a couple years ago they were updating their open gaming license which all sorts of other people and companies were playing Dungeons and Dragons producing modules compatible with and all sorts of other stuff then they got in that November they decided to change their licensing and lock it down really bad where you could not even go on YouTube and broadcast your game of playing it which so many streamers I mean anyone ever heard a critical role they would not be allowed to continue without paying the company lots of money things like that and it was like oh no this can't be then in January the full text got leaked and yeah it was that bad or worse and so they tried to back backpedal I didn't work because first of all who were the target customers who plays Dungeons and Dragons rules nerds who love to argue about fine details of the law and the rules you think these people are just going to let you change a license on them and tell them they can't yeah that's not going to work so they gave up and they finally relented and said okay we're good we're not doing that anymore we're going to use a Creative Commons license how many people are familiar with those most of you good but there are several levels if you're aware with different degrees of freedom and limitation like oh you can't make money with this one well it turns out no no they went which which one did they go with they went with CC by 40 which is just as long as you acknowledge their source you're fine you can make money you can do which is basically from where they're locked down position from November that they started out they had to actually let go and release it even further to keep the customers happy so why would they not go forward with their money grab but actually back up well I think the biggest one of the big reasons was I guess is why would they have given up their rights in this regard because they were about to release a big budget movie and somebody reminded them of what happened with the Lone Ranger you do not piss off the fan base before you put your really expensive movie out there otherwise they will lead boycotts and scare people away even if the people don't buy into it so that is I think why they backed up there so why am I doing this I'm establishing a pattern that companies kind of do this over and over until we come to unity does anyone here know about the unity drama okay a good good portion of you so basically what happened in September 12th last year they announced that they were going to do a change basically they were going to charge per install when before it was free and so people saying demos if someone installs my game to run a demo am I going to get charged is someone returns it do I get charged if someone's playing on the web does every time they hit the website and it downloads to the web browser is that an install yeah they didn't think the company didn't think that through at all and then it got and it was going to apply to games that were already out there so even if you already released a game two years ago this would could kick in for you so this was going to be bad bad bad bad company realized it was a miscalculation they tried to recover they fired the CEO they reigned in the changes but still it's did they just slow wait so they can put these out one at a time or they're going to do something next quarter you can't trust them anymore they tried once they are going to try again and then I'm going to mention a brief thing about the CEO who was fired was his idea to do all this he's a former EA executive okay people know EA reputation in the game industry not good to begin with former how bad do you have to be to be a former executive from EA I and at least one report said this was the executive who wanted to charge players per real world money per in-game ammo reload said look they reload ammo all the time we charge him a few pennies every time we'll make lots of money no you'll have people who stop playing your game no wonder he was an ex executive so moving on can you get these yes you and you can use them without paying money but there is a cost so be aware of that so Unreal Engine if you go the website this is what it looks like and the background cycles between different games that have been made with Unreal okay I mean Unity okay Unreal is very similar except for this one thing that's on their website now most trusted game engine they Unreal Engine earlier in the year had done their own licensing tightening and got people a little upset but then Unity pulled what they did and now makes Unreal looks look good by comparison that's only by comparison by the way so keep that keep that in mind that again this is all my opinion if I have reasons backing up my opinions if you want to talk sometime but yeah so then that finally brings us to the main question and if you're familiar at all with the subject of this talk you're going to you know you know what's coming and I but I have to say it have you been waiting for God oh okay and well well I have impression and my strong opinion on this from having worked early in the game industry then in multimedia and then staying in touch with everyone for over the years Godot for wait no more see this would be a movie style poster with wait no more as the tagline splashed on it but I don't want to influence your impression of what you can do so we saw the Unreal and Unity websites a moment ago this is Godot looks a little cleaner a little simpler but the same thing every time you hit the website you might have a different game show up in the background and importantly down here in the bottom they show you what game by whom which is nice because then you go oh I might want to check that out you have the info right there so go ahead so where is Godot now I think it is um good blender is to 3d animation what Godot is to the game world so blender if people are not aware the 3d modeler in animation software open source free free as in cost and free as in rights Libre and you have the same thing with Godot you have they hit with 2014 song of the sea which if you like animation and you haven't seen it you must go see that dig it up find it watch it it's amazing then one of the more recent things was I in an interview about the huge hit unexpected hit everything everywhere all at once they were using that for the move some of the movie effects it was one of their tools among other things I think maybe six artists working remotely did the effects for that movie that's it what that among other things if you're dedicated and you have open source supporting you you can do that you can pull off Hollywood competing things maybe it didn't look quite the same but that was good they leaned into that they intentionally didn't want it to look like a Marvel movie and it worked and the bagel yeah the bagel was from blender and it was it's just another tool in the toolbox and a professional can switch to whatever's needed for the task at hand and Godot seems to be hitting that tipping point there are plenty of games on steam and that are done with Godot if you want to go and pay for some play some for free they are both you can hit it's it's your whichever however you pronounce it all great source for indie games and it's all over there and even in an article from a top gaming magazine I just pulled up because I was looking for a few more games to play this weekend I pulled up or no not this weekend just two days ago I pulled up this article oh steam spring sale I start going through the list best ones under ten dollars oh wait a minute that was Godot that was Godot oh best in a fight that was Godot and then I went to another site that lists ranked by popularity all the games on steam that were done with Godot it's like wait a minute my wife played that one that was a fun game that's a great game so now we get to the other thing what can it do Godot has a 2d engine and a 3d engine if you're going to do a 2d or 2 and a half d or something they have an engine dedicated for that they have a 3d engine which is fairly capable now really nice and the platform support mac linux windows and yeah windows too I guess you have to have that web you can deploy to web games you can do mobile phones tablets all that you can do consoles and I have an asterisk there because that does involve some third-party publisher support to get on to switch or playstation or whatever you want to do but there are services for that and in fact the Godot the Godot developers formed a separate commercial entity so that they can raise money and focus on that work because the game consoles aren't really that compatible with open source you have to sign their agreements and other things so so there's an in-between that goes between there but if you do want to you can do that and VR support with Apple now AR but I'm not sure I don't know how AR the apple stuff is but yeah so VR AR you can go through on Godot now also you can do apps and tools and the Godot game editor the editor the the GUI that you bring up is a Godot project written in C++ so then that also brings us to the language support it's native it has gd script which is a domain specific language they worked out for it because other languages weren't working well and with a domain specific language you can either be locked in or you can be enabled for the abilities of the platform I I mean macro mind director macro mind 3d those um those were a few not not any of the others but macro yeah early I I've been around a while but oh I so I've been exposed to all sorts of different languages I've done commercial professional work in pearl python um little java script jsp you know but gd script I think as a professional coder who does c++ or java and c mostly that's it's a great language for what it does and they supported well c++ support is in there now you can get csharp versions if you're a csharp developer who has to use csharp you can bring your code over personally I think it's worth it to look at gd script and take that approach because it brings you more efficient coding for a game you know csharp's a great general language but if you want to gain language for doing these games and these nodes and everything else gd script is great now we're going to touch a little on what games you can do if you were in earlier before the talk started I had a video running up there that was the 2002 showcase if you go to gado's website you can play that video and see what it was that they was done with gado last year and that just came out like a month or so ago or then you can look at steamdb.info this is the place I went to find all the games on steam done with gado that ranked by whatever you want by default ranked game rating and then youtube oh go search on youtube add gado engine and boom you'll find people playing it people making it tutorials all over it is crazy and so if you go to the gado website this is where you go they'll showcase individual games they have that demo reel at the very first the oh 2023 because it was released this year actually they have a 2022 showcase reel too then these individual games so I just went and grabbed a few you know the thumbnails the previews to give you an idea so that we don't have to try to hit a website live in the middle of a presentation because that always works doesn't it no it does not okay so here's one the first one is like a sweet very japanese feel um bunny island thing where you decorate you make your island nice and then bunnies start to move in and live there and this is just nice then there's this 3d angle you know top down isometric ish shooter game with a cute little dragon dude I think I'm not sure I haven't read the details on the lower on that game but yeah you can go go the webs go to that showcase link go here click on these see these um a very top down oh I forget it there was a Kickstarter game actually that looked very much like this with some of the same things the man of the health in the bottles and yeah if you're in the mood for a game like that yeah this can do it um this one this gnome game looks like paper cutouts I mean has anyone ever seen the movie mike made a maze it's weird indie kind of maybe whore maybe comedy but it's very much in that vein I think although the gnome is not that hardcore and scary the game um oh apparently dome keeper where you go through defending your dome against alien attacks and then mining for resources in the ground this is a very popular one this last year and you can get and rotato chewed out the enemies then this beautiful one coming up on the left and then this game until then very interesting it's a 2d kind of retro looking gamer except it's done in 3d but it's 2d ass it's very interesting check it out yeah multiple 3d planes for 2d assets is basically what's okay and it's it's just beautifully done so take a breath well let's pause and see where we are we're gonna go through real quick try to finish up gado itself first question can gado do this what is this this is the dungeon that in 1990 I did for interplay for stone keep and then took them five years to finish the game and there's whole big stories about that and the race between that and my daughter but we won't talk about that now but the main thing is can you do this answer is yes so this fall I was playing with this took me three wiggins to model column set up lights do the lanterns the same um that's it uh I don't have the demo with me now because last month or so my laptop got fried the power supply went bad and fried it and it's I couldn't just pull out the hard drive and plug it into some way hardware to recover it directly because it's a um envy ram you know a solid state drive so I have to get there was like okay but then again it's not about what game can I make I'm not showcasing my game I'm trying to tell you this engine can do this so yeah and then the it had a limitation the lighting and the shadows wouldn't work in the compatibility engine by the way doing 3d you can pick different engines targeting what you want to do full pc only or full desktop mobile only or the compatibility one that can run on both so you can make one game to work anywhere that can be handy but um oh yeah then it was already in the next release I went I said oh it can't do these shadows the way I'm doing this in this horrible wetro 1990s approach to it this is not how you do it but I'm going to try oh yeah next release oh and yeah they're already at beta 3 for the next release it's going to be out next month okay I'll wait for that put aside and then last month you know it's 4.2 I can do this now I go into my computer died oh well horrible so is it demo time sure we got a couple minutes and let's see if we can break their setup here let's see so by the way that's the showcase web page there at Godot duplicate these displays does it work I hope the recording catches this and then here is Mr. Happy Godot the robot so open this up it says please confirm you don't have any projects now we can open asset library and go and pull down demos tutorials are sorts of things I'll go get to those in a second say cancel okay new project by the way because the technical difficulties I am having to run the presentation windows usually I'm into Linux I have not put any proprietary drivers on this in yet because it's a brand new computer so I had to fall back for this so there is nothing on here so let me pick a project oh and here I go I can pick between one of three renderers and as you go between them they will give you the options and I like the compatibility because I like options but you'll have more and it even knows about git built in support all that okay so let's call foo create folder now it will let me create an edit boom that's it that's all you have to do to start your project and here we go I can look at the 2d I can do 2d or 3d and then I can add a node and that's the thing you build it up out of tree of nodes and then add child node oh and look at all this all these different nodes it's like oh node 3d animation player animation tree multiplayer spawner multiplayer synchronizer anyone want to do multiplayer games it's right there I mean go through the documentation this is what I have to see and then node 3d what do we have camera collision grid map marker path shape skeleton 3d and now normally you can build up through shapes and nodes and other things in here but a probably more preferred way would be to create or get your assets in blender now you could use my or anything else but blender you want that so that you have freedom and of rights usage and it won't disappear on you it's another reason to use Godot they can't take it away from you unreal next quarter they might change their mind unity might go back on their their word who knows Godo if they do something stupid like that somebody else will fork it for like build systems how many people use Hudson oracle bot son and said oh we are going to lock this down because everyone use it and we will make lots of money and all the developer says no open source boop Jenkins everybody uses Jenkins now same thing so the people who do Godo know if they get stupid the users will just leave so you go in here you set this up you go in you can add nodes do scripting add scripts on different to your scene to your nodes individual things and as I said personally I think it's a really nice language the handlers are good and you name them with like on whatever but not on button clicked you do something else you give it the name of what you're going to do when the button clicks in case you want to add a keyboard to do it also you know it's little things like and the tutorial covers that that is what I really liked so let's see showcase I had shown that and how you can go through and click on these different games like the rabbit game or sagishima tail quest was that cute oh it's little fox guy not a dragon my mistake you know and all these different games you can just go and check out but more importantly let's see tutorials and resources so this is the important point this is where you get going next you search for the Godot it's in docs.godotengine.org or you hit help in the program introduction go through this they have a whole thing with including your first 2d game and your first 3d so your first 2d game content setting up your project organizing it finishing up let's see if they have yeah and so here's a 2d game they they walk you through creating this this took me a couple hours sitting at the kitchen table with my in-laws to do beautiful this and the 3d game and then they introduce how you do this same thing in 3d let me see if they have a yeah so in 3d that's what you get from just an hour to a poking at gd script and this walks you through all that and by the time you're done working through the tutorial you'll get an appreciation of what the language is and how it works and then if you want to use c-sharp you can bring in your c-sharp version if not you can or c++ if you're hardcore you can use that if you want to if you hey but i think gd script is probably the best case so let me see if i can find my settings again quit don't save because i didn't do anything in there so that's how you get started i'm not going to actually do something because that will color your what you try to do you do your thing and this can do anything so whatever it is you're thinking of it can do so now let me just display how to get started in specific slides so we'll just go through the whole presentation again real quick i'll say everything no i won't say everything really fast because they'll get confusing so going through the steps i just did i i had recorded the key points on slides just in case it crashed or whatever but then here's the other thing you can go through that other tab when you open up you can get all these demo and resources just go to pull this up and it's a live page so you can try all sorts of things first before you try to create your own project but work through those two demo projects first so you're gonna feel so this is the link for those the tutorials i was just showing how to get at them i'll leave that up for a second for people who are making notes because your cameras are so helpful and then i was able to show the tutorials live because this is scale they have great wi-fi here this is the sublink to getting started so for you you should be able to find them easily but if not it's there and then i showed them so now we have a couple minutes hopefully for any questions out there anyone anyone or should i say first one to ask a question gets a muffin i've got a speaker oh this is a special speakers muffin don't tell them i gave this to you you can give it to someone else i don't care but use the mic so everyone can hear history i know that a lot of times they're talking about using unity and good and like unreal engine how like gotto expand into like bigger triple a like industry and stuff okay i'm wondering if that was working or not yeah so he was wondering how gotto enters into the industry using unreal and unity it's changing and the big thing with all the unity drama that just happened what you're going to see i think is smaller and indie studios first are going to be wary of putting all their eggs in the unity or unreal basket because they just saw how likely the company is to just kick them over at any moment and just like with blender where oh you can't afford mya anymore okay just use this suddenly their sales drop and then there was other things earlier where the workstation software where we can get in the whole thing happening there use wave wavefront i think or alias and you don't hear about these companies anymore because they tried to do that and everyone just said no i'm just going to use my pcs instead of the sun workstations they're good enough so so i think where it's because of what happened last fall they're doing this you won't hear about it for another six months maybe but then the stories will start to come out in other questions yes i'm not sure if this is work again it's on it's on somewhat so um with all the questions about licensing i'm wondering does godot impose any kind of copy left terms or anything like that um i worry about that from both sides oh yes very good question so he says does godot impose any licensing any copy left anything like that i forgot to include that that is a key thing godot is under the mit license mit license says basically take it mention that you're using it that's it that's all you're under restriction to so it is for a game development group that's what you want someone saying here use this if you want to give us changes we'll take it if not just say you used it that's it that i think that's pretty simple and non-verdism but very good yes i i definitely needed to mention that anyone else couple down there still working and you passed the mic down have we seen any triple a games developing being developed with godot yet or not okay have we seen any triple a games being developed with it i'm not sure i think uh like dome keeper was a couple months ago i think hit a million and a half in sales so you're looking at that for the moment but you know how long does game development take it's not the five years plus it took on the game that i worked on but it's still you've got a big lead time so bigger games might be coming out and as more small developers realize they can get into this for no i mean unity unreal engine you pay thousands of dollars per year per developer if you have five people using it you have to pay five times that five thousand dollars things like that so for basically what i'm waiting for is the triple a game equivalent of everything everywhere all at once it's all there it's tools easy for creative people to use it's affordable and unity just made people notice it so i'm sure one of the big factors for unity backing off their claims is how many big studio how many indie studios announced they were switching to godot and how many big studios privately told them change this or we are switching because godot is good enough it will do the job so i think i think we're about to see more and more until sometime while there but you're looking at a good godot game can net you know over a million dollars a couple million probably easily nowadays anyone else good or doesn't really support uh concurrent gen console so uh how can you try godot to perform on the consoles now that takes third party publishing things and money that i personally don't have just to spend on the weekend but i think it was either summer or fall that is where the godot developers formed the separate company so that they can pursue that because of those questions so i forget the name of it right now but just do a search for that online and they are the group trying to make this happen trying to make it easier and they'll they'll have those details i think so that's that's where to look for it but yeah they they are trying to answer that question and that need so real quick any last question well i'll get to you real quick yeah what's the asset ecosystem like if i'm a developer who doesn't want to learn any blender how easily will i be able to find assets for my game oh how easy can you find assets check that online source that is in godot itself hio i think has a lot of assets and just google godot 3d assets and you'll find free ones ones you can buy one license or buy depending on the terms there are a lot of resources out there are there any good resources you know of uh where you can find a list of like platforms and hardware and it'll tell you like what constraints to work within like for instance i've been trying to make things for the quest devices and i'm finding can't use depth maps don't use anti-aliasing don't use like volumetric fog is there somewhere i can find what's like reasonable okay question is is there somewhere you can find details on limitations on specific platforms what features not to use so that it can work on quest or some of these other pieces of hardware well i would say um from what i've seen godot the website the front the group godot itself has forums that they just revamped so that they could scale up to better support um so that's uh one of the two places to check the other is reddit there are so many resources a few uh few different subreddits do cover those kind of questions if you might so there might be godot subreddits and quest subreddits and other subreddits and they are discussing those type of issues constantly i just browsed a few to see what was going on i don't have anything memorized but that's where you can go and get a lot of answers and then for tutorials or okay how was it a couple weeks ago then you can go to youtube and search for videos and because indie indie people love putting youtube videos of their work up there so you will find out quick now hopefully i haven't oh wow on time thank you very well a little over the break but thank you for coming and hopefully you can look at this and have some fun maybe really talking to it oh yeah all right well i'll just just eat the mic then that's fine i can do that here we go that's probably a lot better all right i'm gonna start in a couple minutes just wanted to do a mic check is my mic close enough to my face hello is this going through the speaker at all people near uh yeah all right beautiful beautiful because i will get a little animated talking about fiber arts but not so animated that should blow out the speaker all right so we are one minute past i think we'll go ahead and get started uh thank you everybody for coming to a talk about fiber arts i really appreciate that and also some electronics in linux and open source too uh but mostly fiber arts so uh my name is kyle ranken um hello uh i am a tech author uh i used to write for linux journal magazine written and i've published a number of tech books most recently i was uh chief security officer and president for purism who made uh free software running phone in a laptop and things like that since i'm no longer with them and right now i'm just sort of looking around looking for the next job uh so if you have an idea you can want to talk to me after that's great um let's see what's my plugging i wrote a book in my my time off uh about how to write a tech book so it's very meta so uh yes oh well thank you fan section uh so uh so yeah if you want to if there's a lot of people who are like no tech really well and maybe have thought about writing a book and but they're not sure whether they're you know what what what it would take so i kind of like did a brain dump of everything my experience in that okay enough about all of that let's uh get into the talk so brief introduction um i have a lot of hobbies uh and and i mean a lot of hobbies and and every now and then when i talk about this i'm trying to in people kind of wonder why and i think about why is it that i have so many hobbies and i think really what it is is i like i like the process of learning new things i like the process of getting new skills whatever that is and you get to this at least to the certain plateau of like yes i feel like i have this down and then you sort of main at least maintain that and then every now and then a hobby you get you dive even deeper into but i tend to dive pretty deep into the hobbies that i get into um so for example some past hobbies um i got really into barbecuing and then curing meat so like made my own bacon um you know made some um i got as far as curing a holiday ham one time uh from scratch which was actually the best ham i ever had got really into i've been into 3d printing for like a 12 13 years or something like that i did a scale talk about that a number years back um i got into really i got into playing the banjo um i do a lot of home improvement and got really kind of enthused into plumbing most recently i got into uh historical mechanical calculators and started collecting those that was like a deep dive where now if you were to do a zoom call with me you would see behind me this wall it's kind of like an anti calculator museum with like uh like a lot of you know that kind of stuff in fact one of them i was rewatching it's a wonderful life and we had a pause so i'm like wait i have that one uh so but the thing is is that like i got really into um that and that goes down a rabbit hole of understanding the history of computing right and we start going into the history of computing uh you'll realize there's a lot of crossover with other things you start you eventually land on people like Charles Babbage and Ada Lovelace uh and when you start looking into their history about programmable computers you learn about a man named Jakard who invented a loom about a century before that was programmable with punch cards and when you're someone like me who reads that then it plants a little seed in the back of your mind like okay looms weaving punch cards that's kind of interesting okay we'll get back to that so i didn't do sourdough bread during COVID but i did get into weaving that was sort of my COVID hobby that i dove into for this reason i it's sort of like one hobby led to the other one so a couple of examples of this i got really into it so i spent you know i have a a vast library now of mostly out-of-print weaving books that i've gone through and get really into the history of it um i actually this last year entered a couple entered a competition for the first time so there's an example of a double weave cotton reversible towel that i submitted to a competition actually won uh so yeah towels um thank you very much uh but yeah so like it got really into that sort of technique um most recently i woke i i wove a stole made out of silk for my wife by surprise for like valentine's day this is using like an undulating twill for those of you who are weavers um pretty complicated the most complicated pattern i've ever woven and probably the fastest i've ever had to weave because she was gone for a short amount of time and so i had to really like spend like hours and hours and hours like getting this done before she she got back for a surprise all right um but enough about that so basically that getting into weaving sort of like opened up a world generally into fiber arts as a pursuit um and as i mentioned before there's a lot of intersections with technology and fiber arts in particular with weaving and the automation with weaving but also with knitting um a lot of the automated machines that uh that started like the industrial revolution were around automating fabric production uh which spawned a revolt by people knows the luddites who were revolting against that technology in particular how that technology was taking control out of the um the more skilled hands and making and commoditizing it without any alternatives and there's actually a really good book that just came out this year called blood in the machine that documents the history of that whole thing because traditionally these days when you hear about luddites you think of someone who doesn't like technology and that actually wasn't the case the people who were who were around the luddite movement in the uk were actually not afraid of technology at all they embraced technology generally speaking but they didn't embrace how technology took control out of the um out of the craftsman's hands and put it into just the owners of the factories so recommend that read if you're interested in that um that's another diversion but that's okay we'll get back into it okay so um briefly I was like man I really oh yeah there's there's like all these other automated there's these intersections with technology and fiber arts and I and I was like you know I saw someone on like online and social media post about a computer controlled knitting machine I'm like I want a computer controlled knitting machine that would be really cool so I kind of start searching for that like man well they're kind of expensive oh well there's kind of one or two that you can find um there's some flatbed ones that used to be programmed with floppies but you can then like uh uh the uh craft magazine uh in combination with may came up with some interfaces for that but anyway that led me to searching on craigslist like you do and I found a free flatbed knitting machine now it was an electronic one it was the previous generation so it was programmable only with punch cards uh but that's still okay so now I have this flatbed knitting machine to where like we have some people in the middle row doing it the hard way where it takes some time and focus to knit whereas with me it's sort of like one row is and then the next row is you kind of go like that it's about the size of a casio keyboard right well that kind of made me interested in the process of mechanical knitting uh and I was like that's kind of cool uh and again another seed planted just to sprout later on and ultimately ultimately that led me to building a knitting machine clock from scratch uh so this is a story all about how uh I did that so um I named it tempus nectite which is the closest latin I could find to time knits uh and so that's the name of the project and let's go into it so this talk in particular I'm going to talk about the inspiration of the project I didn't conceive of this idea myself uh the design uh there's a lot of design elements into this that I that was the heaviest part of this project for me uh the assembly uh which wasn't so bad um set up an installation so after it was built how do how do I set it up and get it ready to go I'm going to talk about the 2023 scarf so this machine knits a scarf every year uh it takes a whole year um it's a pretty long scarf and I'm going to talk about uh some particular highlights of the 2023 scarf um and then talk about some future plans for this machine and for the things that it produces uh and then some closing thoughts so let's get going with that so the inspiration uh was this this was a hackaday post that I saw in january of 2023 uh an artist by the name of siren elise will help some designed a project clock so this is like an art project that you'd put in an installation and the way that it worked is it would knit a stitch every half an hour um and every day it would knit a row so there was 48 hooks around this circular knitting machine every hour every half an hour do a stitch which means 48 of those is a row so that's a full day after a year it would drop a completed scarf onto the ground okay and it's sort of like talking it was a commentary on the passage of time and there's probably some references to um some some Nordic tradition as far as like the uh valkyrie not the valkyries but the furies and they're um using of loons to stitch people's lives kind of like the greek fates there's a lot of this stuff probably tied into that um regardless of that I wanted one um but there's no build plans uh the thing is is you could commission the artist but whenever you go to a site whether it's an enterprise vendor um who says ask us for pricing or like artists is like you can commission me like oh okay never mind I can't afford that uh but that's okay so I just I was like chatting with my wife about it sent her a link I'm like I want one of these and she's like well you should make one I'm like oh okay um that sounds like a good idea sure I got I got approval and everything so let's let's go so the thing is um there's no there were no documents on how to make one of these things right like there was no guide there's so I had to figure it out but the thing is when you think about what this clock was doing you can break the design down into a couple of components so the artist clock was a 48 had a 48 hook circular knitting machine I'm sorry if that font's kind of small but you can just hear what I'm saying uh so it's a 48 hook circular knitting machine there's a stepper it had some sort of stepper motor that was attached to what otherwise the circular knitting machine usually operates by hand crank or you can get an attachment to hook a drill up to it which is kind of sweet um but instead of a drill uh you could also just hook up a stepper motor so clearly there's some sort of stepper motor that controlled that uh some sort of electronics to control the stepper motor um some software that then told the stepper motor to turn one stitch every 30 minutes right um so I took that as those are probably how it was made and so my personal project ended up breaking into a couple of sections so electronics so I needed some way to control a stepper motor with some kind of electronics I needed some kind of software so that I could rotate a stepper a certain amount of steps every period of time based on the schedule I needed a knitting machine um I was I wasn't going to make one of those from scratch I was going to pick something off the shelf and there's a couple of uh examples out there that aren't that expensive and I needed a case I needed something to put everything in so that's sort of like the the breakdown of the project so it's talking more detail about each of these so for the electronics um my first proof of concept is can I control steppers from a raspberry pi um whenever my you know yes you can probably do with arduino's for sure um that's not really my strength I have but I also have tons of raspberry pies lying around because you eventually get a newer model to do a thing in your house and then you have the older model kind of sitting on the shelf and I'm pretty sure like this didn't need a whole lot of horsepower to do what it was doing and raspberry pies for arduino people are already way overkill uh so but I was like hey I bet there's some way to control a stepper motor from a raspberry pie and of course there certainly is um and if I could do that then I didn't have to get into arduino programming uh I could just use my raspberry pie and I could also easily SSH into it was just kind of cool SSHing into your clock so um I used an Adafruit motor hat Adafruit makes this really nice little hat that sits on top of the raspberry pie and is designed for controlling both a stepper and and regular electric motors um so I combined that with I mean most of this there's some purchased things here but a lot of this was like stuff that I had lying around my house because I'm a geek and you collect things so you have the drawer of power supplies where you're like I'm going to use one of those someday and everyone's like you're never going to use one of those well I proved you wrong because I did use one of those uh for this project but I so I had a spare raspberry pie lying around I also had a spare stepper motor because I had some spare through old 3d printers lying around right um that were no longer like fancy I have like a fancier one kind of and I have these old old school ones so like okay well I can just take the stepper motor out of there and it'll probably work um so I just basically followed the motor hat docs oh I didn't mention I've never worked with stepper motors before I mean technically yes I use a 3d printer so that uses I've never programmatically managed stepper motors I just had a vague sense of some ideas about it and read some docs so that was like a brief crash course the motor hat needs something between a 5 volt and a 12 volt power supply um so I went through that drawer that has all those old bricks that you have and I found both a 9 volt and a 12 volt um there's some things that if you've worked with stepper motors in particular 3d printing that there is a relationship between the voltage and how much power you're going to get out of the stepper motor but there's also a relationship to the sound so the more voltage you're going to get more power but it's also going to be louder the separate motor is going to make more noise typically I mean they sell quiet stepper motors and things that are compensate but I knew that relationship just because I read it one time and it was stuck back here somewhere and so I was like well I have a 9 volt and a 12 volt let's see if I can get away with a 9 volt also the brick is smaller um I went with the 9 volt mostly for that reason because the 12 volt power bricks that I had in my in my drawer were the gigantic ones um so I went with like a 9 volts a little bit smaller I can make the case a little bit smaller so after that I had okay I could control a stepper motor it was spinning I would type a command and it would spin um SS agent to my Raspberry Pi like you do and it would spin but the thing is is I kind of realized as I was doing this I wanted hardware buttons on this thing and uh because it would be really useful to be able to control the steppers manually but in particular control them manually without saying well all you have to do is SSH into the the clock and run this python script and then you could you know I didn't want to have to do that so I was like it would be kind of nice if I had two little buttons on the bottom one would go forward and one would go backward uh there's I'm sure I know that Raspberry Pi's can do that um not that I've ever done it before but I know they can do it so I went through my my stash of conference badge like electronic badges you know if you've gone to enough conferences you'll see these kits that like make your own badge that kind of stuff well I have like a stack of those and so I went through the stack and and found one and like oh yeah there's all these great little push buttons in there I'm sure that would probably work fine so got that um followed the GPIO guide and learned how to like wire those and all of that stuff would you get in crash course and that but that again not too challenging the docs are there so you read the docs you hook all that wire that stuff up and then you have hardware buttons I settled on just two buttons one would advance forward um some amount like about a stitch and one would go backward about a stitch and this was also kind of useful for test testing other things all right so that's the electronics now on the software side um basically it's a Raspberry Pi running Raspbian I want to do that for a couple of reasons one Adafruit's examples were all based on that so I didn't want to veer from that and also it's just like the simplest approach I didn't I'm not trying I don't need it to be like super lightweight whatever that would mean for a clock um so it didn't really matter so I just went with the basics I'm glad I did I needed to write custom software though because I needed to control the knitting machine with very precise steps I'm trying to move it just a certain amount and this actually becomes more important halfway through the design process when I get thrown this giant curveball so I have to control it precisely um all the examples are in Python I do I did a little bit of Python before that but just like here and there because um mostly like and this is also a connection to fiber arts I learned in Perl uh first uh so that's a knitting joke sorry everybody uh so uh but then but you know because like Perl and Bash so but this was in Python so let's learn some Python so this in Python the key though is figuring out exactly how many steps to tell the stepper to move to go forward one stitch um there's not and it's based on the machine that's hooked up to in a couple of other things in the gear ratios and things like that so it's not like a that's not documented so you basically have to do trial and error um so that's what I did I found a 3D printed part online for someone who wanted to hook a drill up to their circular sitting knitting machine and I just printed that out and hooked it up to my stepper motor uh there's this nice little trick if you take an aquarium tube and put it over stepper motor and then kind of squeeze that into the drill hole um it provides enough friction and grip that you can control the the gear that way so did that hooked it up uh sort of like in this really hacky way first because there's no case so kind of hook it up to the kind of have it suspended hanging from the knitting machine um and do some trial and error run some scripts and figure out exactly how much I have to move to go a stitch um then I wrote a couple sample scripts as I was doing this because I wanted to try out a couple different ways to advance things so for example here's a script that would advance one stitch all right most of this is relatively straightforward you're half of its importing libraries um and the other half is a single for loop uh you'll see a couple a lot of commented out examples here and this is me iterating I kept this on purpose this is me iterating through there's a couple different ways to control stepper motors uh with this motor hat as a couple different types of steps and so in this case I'm experimenting with a lot of the different ones and some of them require sleeps in between some of them don't require sleeps and I'm experimenting with a couple of things one how much power is that step providing because the the knitting machine this isn't a high precision knitting machine it's like a very cheap plastic knitting machine and so it has a tendency to bind because there's not like high precision between the parts and so you you kind of have to overpower that with like a little bit of extra open when your hand cranking it doesn't really matter you just kind of like crank a little bit harder but for a stepper you don't want it to be just sort of stuck um so I experimented with a couple of things there um and so for example it took a lot of experimentation to find the right type of step to do the right speed of step um and any sleeps in between uh there are what's known as micro steps which are way quieter it just makes a slight kind of noise which is really kind of sweet although it's also kind of weird um it's it's more precise um in terms of compared to some of the other stepper types but it's also way weaker and so I ultimately ended up going with well there's also a single type of step it's called a single step which is way stronger louder um but again more powerful dub and there's a double step which is um even stronger and also even louder I ended up uh noticing when I was doing this I would it would skip sometimes when actually with just the knitting machine by itself with no yarn in it I could use some of the weaker skipping some of the weaker stepping types and it would go through and it would go through fine I could like knit hope go through whole uh circles uh cycles through it but when I started putting yarn in that added just enough tension especially at the very beginning when you're first casting on that it would start binding so I realized I'm going to need more powerful steps and at first you could kind of get around that by sort of forcing it through and then once it it was a little bit better but I found I needed to get one thing I needed to do the most powerful step I could I also ended up buying a more powerful stepper so I just went online and found like a equivalent stepper like with 3D printers nowadays you can find these steppers very easily online I found one that was rated to be stronger and I have links later for this I settled on the double step which is the strongest but also loudest step um with a short sleep in between and that combination you can kind of control the volume a little bit by how long you sleep in between each time it tries to move the the motor so then I needed to somehow programmatically control this so I first I considered a cron job this seems like the perfect use for a cron job because I want to do a thing every half an hour or every hour or whatever well that's what cron was made for but I also added those hardware buttons and so that means I needed some sort of demon already that was sitting there in a loop listening for a button events so I could trigger actions based on that so since I already had a demon that was always going to be running I decided to combine that demon for button control with my with my clock essentially everything that controlled the clock I ultimately wrote this demon that runs in an infinite loop I sent a link here it's actually longer than it'll fit on the page and you can just click on it if you're interested and it runs to this infinite loop at first when it very at the very beginning of the loop it uh it checks the time if it's at the very top of the hour then it moves the stepper forward one increment whatever that ends up meaning what I ended up doing is not just move forward but I also started I noticed it was well it got louder here I also noticed I needed to move backwards a little bit first to kind of sometimes help it unstick because again this isn't a high precision machine so every now and then it would kind of bind and I noticed if I went backward a little bit first before I went forward again it kind of would loosen things up and so that helped and so I added that in the other thing I decided to do was instead of doing the entire step for one for one hour together so instead of just going like I what I did was I slid it up to chime the hour so what I mean by that is yes one o'clock would go but like three o'clock would go and so the idea was you could be well it's kind of loud you could literally be in another part of the house and you would just sort of hear you would hear it start and like oh wait oh it's six o'clock already okay um so you could actually hear the chime uh based on how how I did that and I was back and forth about doing that but I'm kind of I like that I did it now so I we kept it um after it chimes um it advances the stepper it sleeps for 61 seconds that's on purpose so that it there's no there's no possibility that it could go back into the beginning of the loop and chime again at the top of the hour because it will have at least be one minute after the top of the hour at that point um otherwise if it didn't chime at the top of the hour then it then it looks into text button presses and acts based on those um I also added a very simple system to unifile uh that runs this automatically a boot so there's no I don't have to deal with this at all I can just sort of plug it in um and it starts up and it gets the time from the internet and then gets going all right so now I have electronics I have software uh I need a knitting machine of some kind uh here's here you go here's a prototype um I started with the Centro 48 hook knitting machine this is a pretty inexpensive clone of uh some more expensive circular knitting machines that are out there that are plastic like um adi I want to say uh makes one that is very popular it's it's about three times as two or three times as expensive but there's you get what you pay for um this is pretty cheap so I this is a fun project so uh I went with that uh the other thing I wanted was I wanted the machine hook count uh to match the machine hook count in the original project now why does that matter uh it makes sense as a clock so if you think about it uh if you have 48 hooks then that means in a in you want a row a day then it makes sense to chime every half an hour then that way you get 48 chimes or 48 stitches every day so it's easiest to calculate that with 48 hooks you know that every half an hour it advances one hook and then keeps going um I might just set that slide so uh my my original plan was to basically use a back and mount everything to the back some sort of backer board and then build a wooden frame around it kind of like a birdhouse design and the reason that that made sense one the original project did that but the other reason it made sense is you have the circular knitting machine and there's a stepper motor sticking out of it at some place and so it makes sense that they have like mostly a box around the the round object and then wherever the stepper motor sticks out to build a little roof over it to so you can obscure and hide that stepper motor um so I copied that design and went with that originally was just going to get out the woodworking tools and start making that so I mean uh things progress pretty quickly here uh you start diving deep into one of these projects and with you know two-day shipping on most of the things that I didn't have uh from the start I had everything completed in about two weeks from like conception like seeing the hackaday pose getting approval um to like going through buying every buying this knitting machine and prototyping and writing the software and I had like a finished project and you can actually see that stage of that project right there in that picture but I put it on the board I put it on a kitchen table and both my wife and I look at like look what I did and so we both kind of look at it and we both you know walk around and look at it and like this is giant I mean this it the knitting machine itself a 48 hook knitting machine is about this big um and by itself it seems like well that's kind of big but if it's on the wall it's not going to be you know there's clocks that big you've seen the big face clocks but that's one thing it's another thing when you imagine the big wooden birdhouse that you're about to build around this thing and you're like that's that's too big uh that's that's crazy so that's not going to work and we both realized that I'm like uh because I was going to have this really sweet thing where like look I finished this I've from start to finish like three weeks and I built this crazy project so not going to happen all right back to the drawing board so take two what do we do turns out central also makes a 22 hook machine that's a lot cheaper it's a lot smaller um the the mate the bigger knitting machine was kind of is designed to automate the making of things like hats or you can make like big panels to stitch into blankets and things the smaller one is more aimed for like socks or small scarfs I guess you would say um it's much smaller it's like half the price you can get one if you shop around for about $35 which is even more within budget of I'm doing this project with no practical use of my house kind of thing um but 22 hooks messed up the whole 30 minute stitch plan and 22 hooks is not you know well divisible into anything related to like a base 12 system thanks Samarians but that's just how it how it goes uh so what I did instead of a half an hour chime is I went with an hourly chime uh and the cool and I went through a couple design questions with that like okay if I do an hourly chime do I just divide an entire row um an entire row of a stitch like a tire circumference around with uh a day so every day does it do one knit a knit one row or does it or do I make it match the hour I decided to have it match the hour and I'm glad I did so what I basically what I mean by that is so on this knitting machine there's a bunch of hooks and there's these little hook covers and they're all like the same color I took some foil tape and marked one with a shiny piece of foil to mark the hour hand all right so every hour like if it's straight up and down it's midnight or noon at one o'clock it advances to the one o'clock position like at three o'clock it's you know on the side on I guess what facing you it would be east um so anyway it does that just like a clock would well to do that means it has to do two rows in a day so but it also meant I could go look at the clock and know what what time it was within an hour of it being accurate um but which doesn't sound that useful uh but well and plus I already have the chime so I kind of can hear it from literally anywhere in the house because the the resonance of this thing is kind of crazy but but the other thing that was useful was I could also know if I'm losing time like for example if I lose if I if it bound at some point in the middle of the night or when I was away or whatever I could see just sort of like if you have a clock and you haven't perfectly tuned the pendulum in the olden days when you have mechanical clocks that you would have to tune them from time to time I guess based on listening to the church bell ring and then you would like line it up right uh so in this case I could I do the same thing like I walk around it's like wait it's six o'clock um but it doesn't say six o'clock so then I could like adjust the time so it's kind of useful to do that hour hand with foil tape so yeah two full rotations per day as a result uh another problem was the central 22 so the central 48 knitting machine basically sits on these four little plastic feet this sort of sits above everything and all I really had to do and they were removable so all I had to do was remove those feet and replace them with posts and I can mount it to whatever board I wanted to very easy uh to deal with I didn't really even have to take the machine apart other than removing these little removable plastic feet no problem because what I I like the idea of this being reversible if I wanted wanted it to be um but the central 22 has a completely different case design um one that doesn't allow you to do that so the only way I could mount it to something was to take it apart um and when I took it apart I couldn't just easily there's a lot of the outer case makes certain assumptions that the inner case makes some assumptions that the outer case is there to hold things in place and so you can't just take the the mechanism out and have it work uh which I found pretty quickly um so I disassembled it to mount it to to the wood what I realized because of that is I would need to add some structural elements underneath this mechanism so I can mount it to something and have it be uh up high enough that you know the the scarf could come out of the bottom and all of that uh and so I'd have to design something and maybe 3d print it or something to kind of do this in the process of doing that um I realized well I have to think about the case well what I realized is when I took this machine apart out of its case it actually fit on the bed of my 3d printer uh where the previous one did not it was way bigger I'm like huh so this fits on my 3d printer bed you say uh I wonder if I could just forego this whole woodworking project and maybe uh 3d print a case for this uh so yeah totally an option uh the only problem was I didn't really have any 3d modeling experience now for sure I had been 3d printing for like I said 12 plus years now I've had 3d printers for a long time but I've never actually made my own stuff I always use somebody else's design for things um but I decided well let's just do what you do uh the solution was a three to four week crash course in 3d modeling uh using TickerCAD would like you do um and you can see here there's a picture of one stage of the case the bottom part of the case here um so what it's an iterative process I got a pair of calipers and started measuring things I started prototyping sections at a time so for example the orange piece in that picture is the part that the main knitting machine mounts to that was one of the most critical parts to get right and had the the most need for precision uh for how it was fitted so what I would do is basically design everything but designed it that separately first printed that out a few times and got the fit just right because ultimately what you're seeing there is one giant part um I didn't want to start fastening a bunch of individual parts together if I didn't have to um just let the printer fuse it all together like I said the most critical part was the machine mount everything else would sort of fit around that but if the obviously if the machine didn't fit well then you're kind of lost it's that's the key to this design so like the other one I decided to mimic a birdhouse uh the way it was designed is that the the back part or the bottom part is the part that is against the wall everything would mount against that and then I would put some sort of cover on the front and a roof on top kind of like a birdhouse for the same reason I said uh the top itself would split into three sections so I made this little design channel so it would slide down um in place and then the the top would sort of slide into place and so it would cover the front um but it was in three sections whereas the bottom case was one big piece uh the reason I did it this way is it allowed me this design let me take every all the top part out and mess with the electronics without disturbing the knitting in progress because I figured I knew for the most if I didn't design this in I promise you like sometime in June and halfway through a year there would be some sort of problem with some electronics somewhere I would need to take it apart and I would have to this is take the whole scarf out so this allowed me I can put the scarf kind of back into the knitting machine and or the yarn into the knitting machine to take the whole surface off and get access to everything if I need to to make a fix so 3d printing uh here's a picture of my uh my bottom case in progress uh it took two days to print uh pretty big print it completely filled the print bed like to the point that the skirt that you normally would print around I didn't print around because it would it exceeded the size of the print bed so it like literally filled up the print as big as it could be um but fit barely um it took three prototypes to perfect uh because 3d printing and it was the kind of thing and this is after doing other iterations so this means it took a two-day process that you would then get and you'd put everything together like oh great that's man this is looking really sharp and you start putting things together like oh uh that hole is supposed to be here like there's a two millimeter difference where this hole is supposed to be and I measured everything but it's not right okay we'll take two um but that's okay because what you would do is there's certain bugs you would find in the design that you're like well it doesn't really matter um I can live with that but then you'd find some massive mistake and like okay cool then I can bring in all the other mistakes a lot like with software releases uh and you can like squeeze it all together and and ship it all out so in addition to the bottom case I designed a couple of extra parts so I had to design plastic button covers because you have these little electronic buttons push buttons while I wanted to have basically a little tube uh that wasn't just a tube but that would sit inside the case the bottom of the case and protrude so you could push it and it would ultimately push the button underneath I had to design some clips there's a ring gear inside of this knitting machine that actually does all the magic um and you needed I needed some clips that would hold that to the case because it wants to float and it's expecting its old case I took it out of is it has these little channels in place so I had to replicate that with some clips um some standoffs to mount the raspberry pi uh to the case um I needed a spool to hold the yarn and figure out where I wanted that to be um and all of this I have a project printables page so if you wanted to make one of your own you can just download all of those designs and print it yourself all right so assembly the full installation steps are on my project page you can totally make one of these uh this like the hard work's already done so all you all you have to do is follow steps and I'm a technical writer on the side and so I wrote like a 4000 word fully detailed step by step professional to my opinion uh document documenting the whole process all the codes there all the design files are there everything's there so you can just follow step by step and have one of these in your house um full bill of materials is right there many of these things you might already have except for maybe the knitting machine but if you do that's sweet too um the rest of it is pretty easily accessible I didn't want to get anything that was too hard to find for the project and again most of this I found around my house all right so the bottom case assembly looks kind of like this uh fully assembled so basically everything attaches to the bottom case like I said and then the lid slides on so I started with the raspberry pi first a lot of this has to do with access to screws to get things in and everything so the raspberry pi gets mounted first then the knitting machine then the motor what's the knitting machines in place then I can slide the stepper motor in and get that uh attached and then the motor hat goes in uh and then uh the push buttons go in next and I designed this I think it's kind of neat a way to slide the buttons in so that they would slide in not pop out and if you looked at the design you'd see like well Kyle like nicely done nicely done I'm like yeah I know it's my first time designing anything so thank you for your yeah but um then I mounted the ac outlet uh did a lot of zip ties because that's what you do uh fasten those in fact the design features like little slots in the back where the zip ties go through so it can bind everything nicely tidied up the cable management because I'm a sys admin and that's very important um all right so bottom case done and and actually you you would think you could test it with that but you can't really because the top wants the top uh pink piece on here wants to float you need to actually push it down the top case keeps it in place so the top case uh looks like this separate you can see there's three different parts um the uh I just said that's split into three parts I had to do it this way because the full thing would not fit on the three printer bed again the bottom case fills up the bed so I had to split it up into three parts just to be able to print it that's one reason but there's another reason um well I'd split it for the easier access to electronics as part of it but the other thing is the bottom cover has a different print orientation than the roof just so if I even if I could fit it all in the same print bed the printed all as one piece would mean I something would have to have crazy support material underneath it and that's a huge waste I didn't want to do that there's already a little bit of support material for the roof um but for the most part this print was designed with either built-in support material for the bottom case there's this little arch that the scarf comes out of that I did add I I added support material in the design for and everything else um like I said you can mostly print it without that said that all right so now we we printed out the top case uh so to put this into place uh at first it would seem like and I designed it so that it would just slide in uh and it could accept that this knitting machine always has one hook sticking straight up in the air and so there was no really good way when you're sliding this down there's always a hook that's way in the way all the other hooks are down but there's at least one hook that's really high in the air so the only way to get this on was at an angle so basically you would um have to slide this sort of in at an angle and then you could sort of flex the plastic a little bit and kind of get it in the next channel and it would sort of lock in place and you could slide it back down into place um like I said the hooks were I didn't think about that part when I was first designing this like oh yeah that guess that makes sense there's always going to be a hook sticking up but I found a workaround and that was all right um this particular part of the case is important because the plastic hook covers just float with gravity and gravity's not going to be its friend when it's mounted on the wall and so it kind of has to hold in place if you don't have that in place you start doing test prints or test runs with yarn uh it'll it'll start flopping over the place and it'll start dropping stitches which is like the worst so um after that there's the B and C part of the case so uh let's talk about B first uh this is has the name of the project on it which I thought was kind of cool and I also tried to do like a like an ancient Greek kind of thing like the U is a V and all of that right because it kind of it had this sense of of like a of uh like a call like a stone project right um plus it's in latin so what are you like it's roman but anyway um so the other thing I did was I was able to use two two colors to make the text more visible it was visible kind of if you just did a single color but I liked having the the black on the background and the switch to the white um because it made the text pop and so I'm pleased with that result um and also the middle piece covers up the join between the two other pieces if I only had a a main piece and then the roof you would see this line across it um where the two joined regardless of how nice the join was there would be some sort of visible line and I didn't it's like aesthetically I didn't like that so the fact that I have a name plate um intentionally kind of covers up the join between the other two pieces and it makes it look cleaner um the C part is basically you can see here that there's a stepper sticking out of the top right and so I wanted to do something to cover that up and so that's the roof part um it's sort of basically just slides over and covers the stepper motors is the main purpose and it actually makes it look like I said like a lot of some like cuckoo clocks and things that look like a birdhouse so here's what this looks like a symbol I also have it up here for those of you physically here um in the front you can check it out later um and you can see here it is assembled and set to midnight slash noon because you can kind of see the little shiny foil there all right so now it's built now I need to actually install this thing so you start by casting on waste yarn which this basically you want to get some sort of yarn that you're not going to use for your final scarf there's a number of reasons for that I won't get into here but basically the knitting machine instructions go through all of that if you like even the sparsis instructions explain how to add some waste yarn a number of rows to kind of get this the scarf started and then after that you switch over to your your real yarn you want to use for your scarf after about 10 rows or so I had that all set up and I had then I added about 10 more rows of my regular yarn and then I ran a script because here's the thing is I was inspired by this project in January of the year of 2023 and at first I thought well cool I'll get it done before the beginning of the month but again it took a couple extra weeks to learn 3d printing 3d modeling and do all that stuff so it was in the end of being sometime around March early March when I finally got this ready to go well I just missed like three months so I needed to advance I wanted to document the year so I had to had to basically add that to the year but I also wanted to document events I'll get into that but so what I did was I ran a script that simulated a day so I would just run that so I could I made sure I didn't like have it be incorrect and it was so here's the script in python to to simulate a full day it's basically just like doing an hour chime kind of except it just does it all at once and it's really cool I have a like I have a video on my side of it going when I was doing this and it's just like you know it's pretty awesome to see it all and work and I mean honestly even if you didn't want to make a clock if you're just a super lazy knitter you could do this project and just like do a scarf automatically using this in like I don't know like 10 minutes maybe at most you cast on and then just run scarf script dot py and it would just like and you'd have a scarf at the end which is pretty sweet all right so my idea behind this wasn't simply that oh this is kind of cool I also wanted to document our life I really got into this idea of having an individual scarf not just be this thing that talks about the year but actually document our year and so here's here it is on the wall and here it is with the majority of 2023 hanging from the bottom up and I noticed I had to add a hook because I started the hook around the time it got to cat height in my in my house and then would constantly adjust it as it got longer and got down back into the cat danger zone I would just bring it back up but if the here's the problem though if it's not free hanging what's going to happen is you're getting twist in it right like every day it adds like two twists to it and that's fine I found I could survive about a week's worth of that before it got so twisted it was a problem so you ended up having to take the whole scarf off the hooks and untwist it and what I ended up doing is like twist it the other way a little bit so I'd have a little bit of a buffer so I didn't have to do it as much so I decided we would mark notable events good and bad with colored stripes in the scarf so the base background of the scarf would be black and then anything notable that would happen like think birthdays anniversaries things like that or or holidays we would mark with colored stripes in it so you can look over the scarf and see your year well it turns out it was a pretty eventful year for me 2023 so for example the scarf documented major holidays so birthdays anniversaries like valentine's day st patrick's day things like that awards and residencies that like my wife won a couple of notable things and we documented that with these cool little stripes to kind of mark the event my layoff for my job seemed like a notable event so that had a stripe related we took like a three a three plus week a road trip around the country about 9000 miles uh starting from california went up to main as far up as main and then went down to georgia then went back so it sort of lapped the country and so if you see in that picture there's a really long yellow section and that's what about three plus weeks looks like um in the scarf a lot of pre-twist so like I heavily pre-twisted um and then like then it was it was enough that it was all right um also documented a stroke of member of my family got ahead of so my mother uh got a had a stroke that year uh which was interesting um related uh also documented a giant road trip to move my mother across the country uh to live closer with family uh also documented a death in the family so this is like you don't know this when you're making a scarf but that's documenting the year and I don't know whether you're talking about like um again Icelandic fates that control your life with with threat but it's kind of interesting to see your life uh documented in a physical tangible fabric form here's what it looks like um all set up I split it in I split in the quarters uh so you can kind of get a sense of where it was it starts at the top the the little brown stretch is like a short road trip that we took I'm not going to go through all of these we actually plan to we have we meant to do it earlier to get like little tags and tag all this because we're already starting to forget some of them we're going to have to go through our calendar and and see what things were uh but yeah and you can see the giant road trip um in the second half there um and then a lot of like I said a lot of other little colored stripes and all of that was just from my yarn stash if you are into knitting or weaving or anything you end up collecting a lot of yarn uh over time and so when an event was upcoming we would basically I just bring in a couple of the giant bins of yarn and go through and like okay well what color really signifies this particular event like like Christmas was I I found some red and green yarn and kind of twisted it together and then had that and I started figuring out around how much yarn I needed for a day's worth of a stripe um it ended up being about like a meter a meter and a half of yarn for for that it's surprising because it's looping so much and so I would figure that out wrap it around my finger put it on put it on the little mechanism and go we're doing okay on time so so the question is how do you join it so there's documentation on like the the circular knitting machines and how you do how you change yarn out basically you don't you overlap it now some people this is controversial you kind of waited into like a v i e max thing so there are some uh you didn't know it and it's okay it's okay it's okay I I don't take sides on the debate I'm just gonna explain both sides uh so there are certain there are certain people who believe you should never have a knot in your knitting um and there are other people that believe it doesn't matter whether you have a knot in your knitting and so the people who are fine with having knots in knitting would say that you would tie a knot between those two to secure them other people who are not a fan of having knots in your knitting would say that you don't you you lay them over the top of each other perhaps and then you can weave them in there's other techniques that you can use to secure them but frankly speaking they're not going to really come loose um so it's not that big of a concern you might crochet them introduce there's other things you can do to secure them if you're worried about it so depending on which side of that holy war you fall on you might uh add a stripe in a different way right and so yeah so if you don't want to do it the right way that's your choice um it's your scarf right um all right so that was oh that's right that's right yeah just yeah you yeah you yeah you just planned you you always have to plan for emergencies so you yeah yeah come on yep yeah yeah all right so that was 2023 now it's 2024 I have a year's worth of learning uh and using this this machine and documenting my year so uh where's some of my plans for it uh one thing I did part of the way through the years I tweaked how much it's slept in between each step to make it a little bit quieter uh so both pro and con I put this in my living room uh because it's a great conversation piece people come over to visit and they're like what in the world is that and then you 10 minutes later they understand and some slide deck they understand like uh like what that is they're like oh well that's that's cool Kyle nice nicely done Kyle um yeah oh yeah right um so but so that's really cool but the the one slight slight downside to having it in the living room is that it does chime on the hour and um the box makes a pretty good resonator and it's not that stepper motors are quiet anyway the stepper motors actually not exactly the problem the problem is the mechanism because it's not a precision device it's like plastic that's kind of floating around in negative space and kind of can move a wiggle a little bit so when you use this especially quickly it's loud it's kind of loud and then the box kind of like it amplifies that sound a little bit so the first couple of weeks we would be watching tv and then it would strike eight o'clock and everyone kind of jump um by like you know April or May we we didn't really notice it as much anymore we mostly just sort of like and then back you know go back if we miss something important or otherwise just like whatever um but it was still kind of cool it's still going to live in the living room but it is a little loud but then again if you have like clocks that chime that's the thing you have to do with anyways they're going to chime on the hour anyway so but I did make it a little bit quieter by changing the sleep amount and that did change the vibration enough that it was actually markedly quieter um I also noticed and this is not fixed yet uh the ring gear that came with the the actual knitting machine wore down in a place basically as there was a little bit of bounce up and down the 3d printed gear was like nice um but the ring gear was cheaper plastic I think and not as hard and so when I took off the scarf and started examining things um at at the end of the year I noticed like a lot of little white plastic in the bottom of the machine I'm like huh and that explains why I would get it stuck at a certain time of day like I would notice like huh sometime between eight and nine o'clock um it always just sort of stick and bind like there's a in your troubleshooting this without thinking without looking at the machine but there's a couple things that are that probably isn't it's probably a worn ring gear and it was so I need to replace that um ultimately I will probably 3d print one but for the first step what I plan to do is just get another machine this one this is wasteful kind of I don't like this but get another machine get the ring gear out replace it and then use the broken ring gear to template my 3d printed ring gear for the future because then I can just take my time because what I don't want is this to be off the wall for like a month while I'm trying to figure that out and losing time so I'll probably do that uh sometime this year uh in the meantime uh what I do is and you can tell this is happening because of the hour marker right so I can look and like oh it's stuck somewhere between seven and eight o'clock again and it's 11 o'clock now so uh what I do is I basically just grab the ring with my hand like a combination lock and just sort of go you know and you just twist it and it works fine you just sort of twist it in place and you twist it to the right time just again a slightly more violent version of what you would do with a mechanical clock that's out of time right we just sort of gently moved a little hour or the minute hand over into place I just do that with my hand um and that works for now it's a little annoying uh but it works for now um I've noticed I never actually used the buttons I think mostly because I noticed I could just grab the machine and just sort of move it where I wanted to go uh that I never I never used those little buttons at the bottom uh which did complicate the design quite a bit I mean it's neat um but I never actually used them so if I were to do this again I probably wouldn't add the buttons to the design because it's I mean if I were if I were going to sell this as a product to all four people who want one to want to pay good money for one um then I would probably add the buttons uh but but otherwise I probably wouldn't all right also there's a 2024 scarf in progress if you come up here you can see see it we already have some interesting stripes like our whole family got covid that was pretty cool to put in um so that's documented and you'll have to check with me next year to see what other fun things happened in 2024 that we have in the scarf ultimately one of our plans for this is we might when we have enough years we might stitch all of these into a blanket I really like the idea of like if it was a round number like a like a decade or something be kind of cool or something like that where at the end we have this blank all right so uh let me see where was I before all right so yeah I'm going to make the blanket if you didn't see that on the you didn't hear me say that um all right closing thoughts so this was inspired by hackaday it actually got featured on hackaday which is like this really cool full circle thing I was like super excited about that um they also like clocks a lot on hackaday if you if you follow that it's kind of a fun thing uh so it was featured on hackaday which is neat um here's the thing is my clock you could say my clock was made from scratch but they're not really if you look at it um like I made it but not I didn't really make it exactly because the thing is is like open source tools made this entire thing possible like this wasn't anything I invented at all like this was me taking this and this and this and this from the open source store um and gluing it all together uh with other open source glue and then having a thing uh so everything from like the raspberry pi to the art ate a fruit hat to the open source scripts and the prototypes that I used that copied and pasted in and modified and all that is all like other people's work and it's all open sourcing available for everybody to use um because of that because I didn't have to learn how to um design a circuit board to control the stepper motor from scratch and fabricated I didn't have to learn all these other nuances I was able to go from like hey I kind of want one of those oh you should make one okay cool I'm gonna make one uh to like having an actual functioning prototype in two to three weeks right and the only reason I was able to do that was because there's all of these projects out there where people have already done the work and are willing to share their knowledge share their code um share all these examples so that someone like me who only knows a little bit about a lot of different things can learn more about one of those things um by following their examples so it's true I had to learn new skills but those but all that was possible because the community is willing to share their knowledge so I didn't again I didn't have to learn all this stuff from scratch everyone was willing to tell me oh you want to control a stepper motor will a billion of us have done this already just do these things and you can do that and it wasn't so bad because again I had great examples and plenty of guides so in the end what I want to sort of leave you with the thought of is that open source software makes hard almost impossible tasks accessible to non-experts I'm certainly not an expert in pretty much any of the things that I that I do I guess um but I'm pretty competent at those things in particular because there's really good documentation for things I'm I like learning things so I'm I have I have what I bring to the table is a motivation to learn the thing um and what the world provides in return is like all of this knowledge that people are willing to share and examples and everything else um and that's true for all of you too I mean I I'm sure that you felt that when you wanted to do something new and you look around and you realize okay well other people have at least gone 90% of the way there and I just need to add that little extra bit and then hopefully you're sharing that extra 10% with the rest of the world so the next person needs to take your idea and move it a little bit can uh thank you very much and I'll take some questions and since I'm doing the secondary the failover mic here what I'm gonna do is you you can talk to me and then I will repeat your question uh so go ahead yeah so the question is it's a leap year so that means there's gonna be an extra day is there any appreciable difference the appreciable difference is going to be there's going to be two extra rows in the scarf now I don't pretend that this is so precise that my current scarf if you were to count it it would have probably documented every single day because there's a thing here and there where something messed up or whatever and went on a trip maybe a bound and sometimes when it binds you're like I think I caught this in time to just rotate um 12 hours of it sometimes you know so in the end if I make a blanket out of it if we take this scarf and the 2024 and 2023 scarves they're gonna probably be more than just two rows different anyway so yeah thank you had another question yes have I the question is have I thought about automating weaving um I love the idea of doing that I've seen one there's one or two projects out there where someone has done that where what they did was they took kind of a production a production loom that had a fly shuttle so a fly shuttle uh for those of you don't weave if you've seen people weaving they they throw a thing black back and forth and that's called a shuttle and like the space shuttles named after that like basically everything that you do in life is probably comes from the fiber arts or one of these other ancient crafts right you don't realize or or sailing right you don't realize how all of this terminology for example in this front row this is the heckling row right well so the reason that we call it heckling is that if you are producing linen the way that you do that is you grow flax and then you let that rot for a little bit and then you take the outer shell out and you take this tool that has all these little needles sticking out of it and you scrape the inside of the flax and it separates the inner fibers from the outer and use those inner fibers you twist those into linen thread well that tool is called either a hackle or a heckle so when you are heckling somebody that term means that you are needling them with this tool that's stuck with needles anyway that's a whole other talk but yeah so there's there's a couple of there's a couple of projects that took a fly shuttle that goes back and forth by pulling a string and this person actually worked in a production on a production loom for a while that just was fully automated and they added like servos and a couple of other electronics to programmatically have it go back and forth and advance things and it's really advanced if you look on YouTube for like an automated fly shuttle loom you'll probably find it the best examples are sadly like twenty thousand dollars plus because they're actual production looms you can every now and then like you can some of them are even like from the turn of the turn of the 20th century you know like they're relatively old used to make denim some of those are still in production used today to make like it's in particular in Japan there's this whole group of weavers they're there I mean that's their companies but they make like really expensive denim for really expensive denim jeans and they maintain these old looms from like the heyday of denim that automate the whole process and when the part breaks they either fabricate the part to get it from a one of the spare antique looms they're doing same thing kind of goes for an antique French lace weaving where they have the same sort of thing where they maintain all these old cast iron Victorian era looms that are automated but in particular I would love to automate weaving kind of and I kind of really like the separation like one of the reasons I got into weaving was because it was completely manual like I don't even have an electronic bobbin winder I got one of those Swedish hand cranked ones because I like to have at least one thing I could do with no electricity right and so I can when I sit and weave I'm sort of like unplugging from all of that stuff and it's very meditative to kind of just like throw the shuttle back and forth and make fabric so if I did that it would be like a separate thing that's kind of why I was excited on the machine knitting part because I'm like that's that's the knitting world over there like I'm a kind of partially a weaver so I will you know stick over here with the manual stuff all right any other question yeah so so the question had to do about yarn thickness because the circular knitting machines have a range of yarns that they are optimal in and then a range of yarns that they're not and so for example the larger knitting machine is sort of the optimal hit largest you could go is about worsted weight for knitters is and then because I'll like you go to a store now it's all sort of aimed at knitters so it's all named after that like I'm used to like numbers because I'm a weaver but uh-oh it died wake up all right oh no oh well you saw the slides it doesn't it's not the end of the world um so anyway uh yeah so the bigger one would be worsted weight I think the worsted weight for this one would be a little bit too much but it would it would kind of work but the the key is for it to be relatively consistent thickness so for this the 22 hook one's more designed for socks so I would go I wouldn't go any thicker than DK um I have most of my most of my stash is DK or smaller for some I have some worsted but like I wouldn't I wouldn't go any thicker for for my scarf I have a lot of thinner than that yarn though so I have like a lot of what they would call lace weight um and in those cases sometimes I would I would have to double it up uh so that it would be thick enough because it really for this I defaulted the kind of sock weight uh for this because it's kind of made for socks and so the other thing is um this knitting machine like I had to add this to this uh design but the circular knitting machines also have a tensioner that sticks out that has a couple of different holes and yeah you you can adapt you can adjust for different yarn thicknesses by which and how many of those holes you use and some of that's a trial and error and some of it's also a function of the yarn so some yarn is just uh grabbier I guess um it has to do with it has to do a twist it has to do with what it's made out of is it super wash or not things like that that can cause it to be slicker um and sometimes if it binds a little bit you can have problems too so it just it's a trial and error yeah so the question was was there still trial and error on my case with the tension even knowing that about that and so I mean in my case I knew I was going to sit somewhere in the middle uh to be safe uh and I I did test I tested it first with a couple I just wanted to find the upper end so I put some worsted weight in there to see what would happen and of course it was like hard to turn and it would like strain the stepper motor right and I knew lace weight was too small you would get this like really spindly little tiny scarf and so yeah somewhere between DK and sock for me like had the best result um but yeah it definitely took trial and error with the tensioner I ended up running it through all the tensioners on mine uh because the way I designed it because I kind of I like the angle it entered into the hooks the way it grabbed um but I also designed it in such a way that you didn't have to if you dealt with us a thicker a thicker yarn you could skip a couple of those and get away with it any other questions yeah yes so the the question is when I'm making the scarf over time it gets a twist in it and why does it get a twist in it it gets a twist when I hang up the bottom of the scarf on a hook so the cats don't get it um and so when it's hung the the circular knitting machine is doing a full a two full rotations in a day and the scarf that's coming out of it is rotating because the the thing that's coming out of is rotating so if you were to look up front here you see this big circular like a clock hand and so if you imagine if you imagine a clock that you would attach a string to right and kind of hold the string like out from the clock so well from your perspective there's a clock here and I'm holding a string out this way and you just hold it and you put it on the minute hand every time that minute hand goes around it's going to add one single twist to that yarn um and every day it's going to add or every hour it's going to add 60 or every hour it's going to have one twist to that yarn and every day it's going to add 24 twists to that particular piece of yarn if you're holding it out in this case instead of it being out it's in so the scarf is being formed on the inside of the machine it's coming out the bottom that's being formed behind this circle so it just it adds it just naturally adds two full twists to that scarf and in 24 hours yeah yeah any other questions any I can do knitting questions I can do weaving questions too um yeah oh so the question is have I considered adding a a sensor to sense the binding um I haven't uh that's that'd be kind of an interesting addition honestly if I were going to modify it too much I would probably also want to just put like a higher quality knitting machine that had higher tolerances so I didn't have to worry as much about binding because even I've like I added lubrication in different parts and things like that to try to improve it and it kind of did but ultimately just comes down to you have non-precision parts that are kind of floating back and forth and just every now and then they just get in the right sweet spot to kind of bind a little bit it's just low tolerances so um any other questions all right well if you have other questions we can I'd love to talk about basically everything in this uh so we can talk outside thank you very much fair enough to see how many people are here today that's the whole point that's how one does is supposed to be we'll give it a few more minutes before we start that's sure in only six months to me security updates that require a reboot oh there's some major I mean cloud CA is all based off of cloud stack uh Canadian cloud provider yeah they're all running cloud uh no quite a few more servers than that um there's also some bigger ones in Europe yeah there's now even some uh now time to start I think so this is talking about cloud stack building your own cluster for $500 you can build on the cheap I'm sure there's quite a few people in here that have their own home servers that are running or have run in the past this is something very very doable uh first some about me uh I am the IT for my house as I'm guessing there's a few other people here uh I generally program I've been using doing software development for well over 20 years now so I am the one that fixes the servers or the computers or the internet or whatever breaks at home there was a time I worked on implementing an MLS trusted operating system and also implementing a system that run ran on trusted operating systems for those of you who have done that you know that that sort of screws up your view of security from there on but that's not what this talk is about this talk is about cloud stack and what I did to build a small useful set of cluster a small useful cluster uh for less than $500 I did this quite a few years ago this is actually a updated talk that I gave at Apache con a few years ago about this exact subject same talk um so now why would you want to do this first of all I just wanted to see if it was possible if it was possible to actually now it doesn't work at all if it was possible to build a cluster that would be useful for $500 could you get it would it be able to do any useful work could you keep it that cheap I'd been using AWS private clouds for quite a few years before this uh before this and uh wanted to have some other uh some other can people hear me still okay I can't tell from back here whether you can hear it or not um so I wanted to see some other clouds to see what actually underlaid the underlaid the cloud kind of those old hardware architecture classes that I was required to take in comps I because to really understand how it works to see how it works under the hood is really really helpful so that was one of the reasons um it matched up with a proposal at work so because of that um I think cloud stack was one of the reasons I looked into that um of course just it seems fun because running your own server whether it's Plex at home or Squeezebox or or your own DNS or whatever maybe sometimes for a lot of us that's something that's really fun to do and to have have enjoyment doing that so that was another deciding factor on why I wanted to try to do this uh and then when I actually got it running it turned out to actually really be useful for some of those side projects you're doing at home or maybe that learning of a specific distribution to take a look at so you can have a more informed opinion about it so why exactly did I choose cloud stack it's open source which is definitely something I think a lot of us would be a key deciding factor um it's probably one of the simpler full clouds you can deploy um open stack seems to have approved that recently there are other solutions like proxmox that aren't quite a full cloud cloud stack is a full cloud is used in production um for some pretty large numbers especially in Europe so that's one of the reasons I picked it um as I was mentioning earlier it matched up with the proposal I was doing for work and I figured might as well just get an early start on it and as I was mentioning before I really wanted to use a different cloud because all the clouds are slightly different and having a wider range especially as we were moving into a multi cloud deployments is really helpful so one of my requirements requirements are obviously as cheap as possible the cpu must support 64 bit with vm extensions that's required as part of as part of cloud stacks requirements I figured a minimum two nodes before it would be really useful so I'd need at least some storage something to manage it and then a compute even though there are quite a few options for cloud stack for storage I chose to do nfs figuring that that would be the easiest most straightforward to do it but there are a lot of other options you can pretty much any storage you can you can run under under class stack if you want to I was targeting to be able to run about three to five instances the more would be nice and figured a reasonable amount of memory for doing that was 16 gigs and so that's where I started so what am I not counting for that cost in here a big one is the network switch I just done an upgrade at home and I have plenty of ports I still have plenty of ports so I did not count that but you can reasonably get a two or three port switch for this to dedicate without too much trouble I also did not buy cases as you can see as an example of what I built it's just going to sit in the closet it can look ugly I took as you can see quite a bit of inspiration from the some of the minimalistic crypto rigs that you see out there and I had lots of scrap wood so I just stuck it together attached stuff as needed and that has actually worked out really well it's held up fine I've been a move of those servers a couple of times to reinstall os's or to upgrade hardware because hard drives failed or whatever it has been no problem so what is the process about doing this first I started with the cpu what was the minimal cpu that I could find that would meet the requirements find the cheapest memory without too many doa's if you look on whether you're looking on amazon or new cloud or whatever your preferred places usually you can see the reviews there and have some idea how many are being returned I chose yeah I could have gone cheaper with memory but it just wasn't worth the hassle of doa's so then I just found a cheap power supply looked at this is this reasonable a couple times I looked at I'm like yeah I don't think this is reasonable it's not either not gonna have enough power or it was gonna be too noisy or any number of other reasons so then I started over so I found something I thought was reasonable and then I just picked the biggest hard drives that fit within the budget so that ended up with 250 gig hard drives is what I started with that's not what it is on now it's now an SSD is about the same size cheap hard drives fail even more than other hard drives do so this was originally ordered in the fall of 2017 so it came to 487 dollars and 52 cents and I've looked a few weeks ago and you can get something pretty close to this or a little bit more powerful for a very similar price without any any issues at all I'll cover how some ways to maybe even do this cheaper as I mentioned I'll cover how some ways to maybe even do this cheaper as I mentioned this did not include cases or network if you want to do cases you're probably gonna add on 10 to 20 dollars if you're buying this cheaper cases you can find more if you want a nicer case um and that was including I got some rebates on top of that 400 so it was even less so what have I upgraded since then um the 250 gig hard drives died um and I buy replacement ones and then they died so I said no um and I that by the time that I replaced them it wasn't really that much more to just buy 250 gig SSDs and I'm only using storage on one of the nodes so I was like eh it's cheap enough I just did it it didn't really make much of the difference if you look at current prices now on smaller hard drives you can't really save much money at money on them SSDs sometimes tend to be cheaper um until you get into reasonably larger hard drives in 250 gigs now I've also split up my or changed my management storage server to a Raspberry Pi uh that was inspired by after attending a class at collaboration conference a few years ago um as they were talking about that and there's actually one of the community members that builds packages specifically for Raspberry Pi so you could do a whole cluster with a Raspberry Pi I just chose to do the storage and management and then make two compute nodes um so that was another 170 but realistically we probably have some hardware around the house which brings me to the next way where you can save money on this you could do all Raspberry Pies it's doable there are people who are actually doing that now and making useful getting useful clusters out of that and they take up a lot less space and they take up a lot less power uh for some of this power can be a consideration in California so you can also realistically do you have extra hard drives how many people here have extra hard drives yeah exactly you can skip the cost of the hard drives you can probably end up with a bigger hard drive than I did um for less money um there's also probably a few of you that have extra CPUs laying around from upgrading previous servers yeah I see someone there someone else um or extra memory that you may have sitting around a few more hands go up again so those are some ways that you can you you can take what hardware you may already have maybe you only have to buy a motherboard for it or another CPU for it and make it for a lot less than 500 you can pick refurbish hardware I tended to stay away from that just because of the difficulty of making sure the hardware is actually reasonable whether that's a refurbish CPU where you'd have to then get a cooler for it and make sure it matches the motherboard you want make sure it isn't failed in some way you earn more risk but you can get them much cheaper than you can in new hardware same with motherboards um another way you can end up saving money depending on how current hardware prices are is sometimes it's more advantageous to pick the memory first and start there say what is the cheapest memory I can get for the amount that I want and base all your hardware in that I picked CPU in this case but with how memory prices fluctuate in hardware you just kind of have to look but you can definitely save more money there um you can also get really cheap rack mount hardware especially if you're willing to buy some refurbish stuff um I did find some significantly more powerful hardware than what I ended up building that was rack mount hardware the problem with that hardware is it's loud I don't I'm sure we've all had experience with that and at the time I didn't have my own office it was the wife my wife's office and putting that lot of hardware was not conducive to to keeping keeping people happy in the house so even though I did find it find ways to do it um it it can be more expensive you can you also then need to get a rack for that and there is why you can buy racks that are expensive there is a whole group and I'll have a link to this later building a rack out of lack tables from IKEA that worked pretty well um I haven't done that yet I'm considering it since I have my own office now um whether I want to put it with that much noise in my office is to be decided so now a little bit over you about cloud stack so how to go about installation uh I started with Ubuntu 1804 just had ssh server sudo and basic networking setup one compute node one management node management storage node uh later switched to the raspberry pi as I mentioned I manually set up the net networking on those compute nodes you could do it with ansible if that's what you prefer I used ansible for most of my place it's just if they're sitting in a closet without a display it can be really hard not to disconnect yourself so you can't fix it so sometimes it's easier just to do some that stuff on the console by hand um all their packaging needed for class act I installed with some custom ansible roles that I did I didn't pick anything out of galaxy or roles that plays or roles that were already written because I kind of wanted to dig in to figure out how it all worked how it all went together so to force myself to do that I chose to write my own roles and plays and I'll have a link to those at the end as well um then I just pulled that all together with some static inventory for ansible as I'm sure there's quite a few people here familiar with ansible some people mentioned that before the talk started um and then I automated purging of the nfs setup clutton compute and management so it was easier than instead of going and poking at the database that underlies and fixing that I figured it was easier just to purge everything and start over and that ended up being a big time saver um I just mean if you have the database knowledge go for it but I don't I'm more of a developer on the developer side um system and stuff is kind of incidental to my development and so I just didn't to get all the networking done I took the easy route to get all the database and I figured it was easier to purge instead of to try to dig through the database because I just I don't do it enough I do have some automated source installation and building in those ansible roles but I haven't really done it that way that is definitely the way a lot of bigger installs of classic work is they're not using the community provided packages they're actually taking the source and building it from scratch to make sure that it meets exactly what they're trying to do and then I went through the manual uh configuration in the web interface which has gotten a lot better from when I first started on this the current 418 or actually 419 now just released last month um is much much better so some of the few of the gotchas that I got with working on this um system VMs definitely have been an issue with the class act they've now moved that into the management package so the class management when you either build that manually or you download the community edition it includes the system VM template for all um hypervisors that are supported which means that package is 1.3 gigs now which for some of us maybe we're installing at the end of a relatively slow network interface um that can be noticeable uh if you can find a way to cache that locally there is a way to do that with the ansible play so it's not well documented you have to look at the source just something to be aware of on that one networking issues um or I'm sorry custom template creation so one of the things I found really helpful to do was to customize the template those of you who've worked in the cloud before will know that making an AMI the custom AMI is can be really helpful for having like a base to start from what you're generally doing but there's a few gotchas so some of these are going to be repeats for those of you who've worked in the cloud making your own own images in class like they call them templates instead of AMIs or images and some of the other ones um it's pretty standard use cloud init for all of this uh cloud init supports cloud stack without any problems supports open stack supports adbs that's how they do a lot of the initialization when you start up your instance to get set is done with cloud init um I've used CentOS and Rocky um but I prefer Debian and that's usually what I started with in some cases I started from an ISO install for the template and just did a real minimal install with just the bare minimum SSH with a key that I knew or a password and that's it and then I have some of the I've captured in again that ansible that I'll hold into at the end um of how I prep some of those templates into actually becoming templates but one of the things that caught me is slash and grow and there were two different reasons for this initially I didn't put the last slash partition as the last partition which those of you who've done this before will know that just doesn't work um once I put it the last partition that worked for Debian and Ubuntu it didn't work for Rocky and what turned out to be the case is for whatever reason Rocky cloud init at the time that I did this did not depend on cloud init utils and without cloud init utils it won't grow so those of you who are new to this will realize that those of you who've done it before okay I'm stopping back a second because I skipped a slide on networking issues I took the simple basic networking for clausack they changed the name of it and I think it's called a simple networking instead of basic like it was this does not include any vlands this doesn't this is just security groups so just basic firewall for isolation of guests um clausack does support vlan it does support vxlan it does support some sdn solutions as well but I'm not an apricot engineer I'm just without that experience undoing the networking it can be quite hard to get that all configured if you're more of a networking engineer go for it go buy yourself a Cisco switch and you can you can get vlan isolation and all that stuff working um I took all of the 10 slash 8 because I wasn't using it on my home network just dedicated the whole thing to clausack um I don't use anywhere near that number of uh ips obviously because I don't have enough instances but it has been useful to keep it separate from the rest separate from the rest of my networking um the first problem I had is getting the bridge networking setup correctly the compute node needs to have a bridge networking for all networking that your vms may connect to which includes the management network which is how clausack talks to all the different instances includes any storage networking so that it can talk so that the it has a system vm that comes up that manages the access of instances to all the secondary storage and primary storage that needs to have a bridge so that works um and then the guest network in my case I just stuck everything on what's effectively a public IP address which is just an IP address that's accessible from the rest of my network there are ways to do guest isolation with vpcs just like you do in adbus google zur open stack I just chose not to do that for my home networking um the second thing that keeps catching me I keep forgetting about is that the pod networking the ip space that you set aside for the pod during setup is the networking space that all of the networks need to fall under the management and the storage and all that because otherwise it it doesn't get set up correctly I keep forgetting to set it that way I'm sure someone else will will do that um one way you can tell once you have it running and you've gone through your first step of configuration is clausack at as of 419 it still does this there's talk of changing that um it downloads a sentos template that is ancient but once that template downloads and you can see it on your network and you can see it in your cloud you know that you've gotten everything set up correctly the most common issue I ran into is that I typode the storage network and then it wouldn't successfully download and it will tell you when you go in there I don't have examples of that today talked about customer okay so now to talk about what did I use my cloud for a big one was ansible testing as some people mentioned before starting up that they've used ansible I don't know how many people here have a few um it has been very useful having instances that I can just spin up and spin down that generally better match actual installed servers that I've been running since in some cases long before ansible was around in other cases I just didn't configure them with ansible to begin with um having ones that I instances I can spin up to test roles or to go back and say you know I really want to capture my DNS configuration to make sure that I can push it out to other servers has been really useful much more useful than I expected it was going to be um I've also tested quite a few different distros um whether that's different versions of Ubuntu or Debian or Rocky or Alma or CentOS or they even stood up and Nick's template at one point to mess with our Nick's there's there's another one that I've set up a few times um and then I also did some testing for potentially building a custom NAS for home and it was actually useful granted the storage is a little bit limited so I didn't have quite as much storage to do a full test but it was enough to get an idea that hey do I want to do true NAS I want to do open media vault I want to do something else um it was surprising useful even on something like that um I've also generally started testing most of my services that get put on the home server in the cloud first so before I actually set up Plex for real on an actual server in my network I ran it in cloud stack and that worked perfectly fine it was not perfect mostly because um again storage space because there's only a limited amount of storage I have but also because I picked cheap processors and if there's any sort of transcoding not gonna work but that's plenty to get testing done it's plenty to get an idea of what's going on with Plex it's plenty for direct play um setting up WireGuard for VPN setup that was really useful to do that before I put it on my main server because I don't really want to disrupt my main server because that breaks stuff for the rest of the network for the rest of my house and when I break stuff like that people do notice in my house it's unpopular um sometimes it's nice to have uh somewhere you can set up like QMK building or some other development maybe Rust or something else before you put it on your main development box because you may not want to disrupt whatever you're doing on that development box or make sure that it's not going to disrupt what you're doing and that is that's turned out to be pretty helpful um there's also been some instances where having a dev node I can just spin up and throw away it's surprisingly useful besides the services like why is my particular version not building correctly I can put on a specific version of GCC I can put on specific versions of make I can do whatever debugging I may need to do that of my build environment itself without disrupting other stuff that is working on my main dev node and that's saved me in valuable in invaluable amount of time learning from what I did so my biggest lesson I think is that the CPU's mattered much more to my use cases than memory like I haven't had any real problems with memory other than I don't think I really have it's really a matter of the CPU and not having enough cores most of the stuff I'm testing isn't isn't really memory bound it's usually CPU or disk bound and that said the Raspberry Pi is for the hardware I have it was comparable once I put the put the storage in a denadicated actual USB 3 hanging off of the Raspberry Pi not trying to serve off of the SD card those just aren't fast enough once it was in its own once it was off a uh off the USB 3 the performance between when I had the storage on like one of the nodes I started with to Raspberry Pi is almost unnoticeable I really didn't make much difference at all especially with the new Raspberry 4s Raspberry 5s I expect to be even better as I was mentioning memory just hasn't been as critical for what I'm doing I'm not doing really memory intensive testing in there now if you are doing something different that is something to consider maybe you do want to do GPU sharing which Colossack does support in some instances to do LM AI development or something like that or you're doing large databases or you're trying to do memory caching or something like that where you do need more memory for doing some of that stuff it's perfectly reasonable spend the money then on getting more memory instead of more CPU I just found that for most of what I do 90 99 percent of what I what I've done it's really been limited by the CPU course not the memory something else like your mind which is going to be kind of repetitive because I'm sure all of us have heard this before is back up your stuff whether that's your template that you spent all that effort building in the cloud back that up somewhere outside the cloud so that if that way you can treat your cluster as what you can reinstall it you don't care you just reload the templates it's not a big deal also keeping any like isos or additional templates that you're not actually using outside your cloud somewhere else we have more storage especially when you're limited with the storage space it's like if you're building this in as cheap as you can and you don't have that two terabyte drive sitting extra unused keep those out of the cloud too once you once you build your base template with from an iso don't keep the iso on your cloud once you build a template and then you update it to the newest release of that version don't keep the old versions around it just it just waste space you're not going to go back unless you have a specific reason you're just not going to go back as many of you are going to be familiar with this if you worked with the cloud at all keeping your templates your machine images your images as small as possible helps a lot and it's not just in how much storage space it takes up it speeds up your instance launching a lot the bigger your template you're starting from that has to be copied and that slows stuff down and the smaller the cluster you're running on the more noticeable that will be there any questions so far comments sure here he's that one first then i'll get to you so cloud stack seems to be like us so i use proxmox at home yes so i kind of do the same workflows with the proxmox i just whip up a virtual machine install bunch of server on it and do that testing that i do in there proxmox can do a lot of the same stuff clausack does the the advantage of cloud stack over proxmox is that clausack can scale bigger than proxmox can so i can have a full cloud like it's not like it's not just vm's like there's image management there's auto scaling of some sort you can do there's migration between hosts there's um there's now kubernetes managed kubernetes clusters since 418 i haven't run it i haven't run that particular stuff because i haven't had a need for it yet though that's what i'm gonna look into next okay but it's a full cloud so proxmox can meet a lot of these got a lot of these things especially with some of the nice um i think they have some more base interfaces now yeah yeah no there's there's definitely overlap with some of these is just i don't think you're gonna run a thousand instances on yeah no proxmox and you're not gonna do migration between zones you might not because you can set up multiple zones kind of yeah the clausack uses some different terminology but you basically have different regions and different zones and you can migrate between them and there's a bunch of that kind of stuff does that answer the question yeah um we'll actually have a second part here um so i assume so the the raspberry pi is i assume are running containers and then your x86 machine that can run vm's so it depends so on the raspberry pi management storage node it's just running the os it's not running containers i'm not running any virtualization or anything on that it's just running java most of clausack's actually in java so that um that's pretty easy to deal with it's just the compute knows that do stuff uh cpu definitely matters and a ton of applications but there are some applications that are extremely memory intensive i encountered while i was building a uh self-hosted map and routing server oh yeah oh routing 100 lives in the ram so oh yeah especially perform it if you want to map for all of north america you need like a hundred gigs of ram and there's no two ways about it so uh some applications read the docs guys i'm curious is how you hooked up the storage to the raspberry pi is are using like a usb hard drive interface okay yeah i can talk some more about the storage on the raspberry pi um so what i did is i have an ssd that's sitting in um the most performant external device i could find for raspberry for a 3o usb 3o uh you're not going to get the best performance but for the hardware i was using to begin with it really isn't any different it's it's it's been more limited because the hardware i started with i mean you saw that i spent less than 500 dollars shipped and that hardware compared to the raspberry pi is not much performance difference now if you're optimizing your hardware for storage more you can get better performance than the raspberry pi can provide but for if you're doing this on the cheap for as cheap as you can it may not be as big of a difference that you think it was it sure turned out to be the case once i started doing it i expected to be a problem and it was a problem when i ran the storage off of the sd card but once i moved it to its own usb 3 it wasn't really a problem which kind of surprised me um and someone was mentioning about the networking yes depending on the type of stuff you're doing it will make a big difference memory may be a much more limiting factor than anything else uh particularly with routing or if you're doing some uh software defined networking which cost act totally supports but i would expect that those routers you'd need to have configured and running are gonna take quite a bit more memory than what i may have set up but you have to take that in consideration when you're what you want to optimize your quad for and if you're billing a cheap you can always start with the last five dollars or much less if you have the hardware laying around and upgrade later get started try it see what happens um so one question is did i spend less than eight of us um at the time i did this uh definitely after about five months i was definitely way less than i would have spent for a similar set of instances it's a little harder to tell now because um some of the stuff i did in clausack you can now do cheaper in adbs without actually having instances so that changes some of the calculations but a rough idea was with what i did on average is probably about 50 to 70 dollars a month um so it takes around 10 months for my investment assuming like i'm actually spending 50 dollars in instances um advantages you don't have to worry about shutdown termination to save money you don't have to worry about any extra costs for storing amis they're effectively free i already bought the storage so i could have any custom eyes for as long as i wanted it didn't really make any difference in my cost we're in almost all the clouds there's some costs for storage um and after it's been running for so long really the main cost on my stuff is electricity especially being sdg and ease region i can see some of you shaking your head some assuming you know what that means um but yeah electricity is by far the biggest driver cost right now for me and also to be aware there's there's some testing you just i couldn't do in the cloud like if i was going to try to test plex for one example um the smallest dvd i have is 3.4 gigs to move enough of those into the cloud to be useful it's just yeah it's just not going to happen which isn't and the cost for that kind of storage is just way too high where i could reasonably test it yeah i didn't have maybe two or three dvds in a blu-ray but it was enough to test and say yes this is something i want to put on my network yes i want to start managing it so it was it was useful and ended up saving me money um some final thoughts one thing that will take a surprising amount of bandwidth especially if you're installing multiple different linux distributions is packaging i would strongly suggest something to limit your bandwidth or you will notice some issues um i don't know how many of you are running any sort of package caching like uh apcash or ng that's what i've used since i'm mostly a debby and ubuntu guy um but that is that makes a really big difference on how fast turnaround you can have on spinning up your templates and getting into a reasonably recent set of whatever the recent security updates have been um rpms have similar solutions you can configure apcash or ng to the cache rpms but yeah i would strongly suggest that you uh you have some sort of package caching it'll make a big difference it makes installing instances even vm is probably like your your proxmox having something there that you like i baked it into my template that it points at my local apcash so that when i spin it up i can run an update and it's going to update in maybe a minute or two instead of like however long it takes to download all those updates um as i mentioned before keep templates and isos and whatnot um outside your cloud you don't need once you build up a template from your iso doing a maybe a base install because you can get to the console in clausac there is support for that um you don't really need to keep the iso around just keep the template depending on what you're doing if you're finding storage is becoming a problem first of all don't use the cheapest hardware you can whether it's a raspberry pi or what i did um that will definitely make a big improvement also dedicating a storage for a switch for some of that storage can make a big improvement if you if you think you're gonna need a lot of like you're gonna move a lot of data you're gonna be doing something that's very disc intensive for your type of use case start looking at what some of the other options are other than nfs or maybe splitting up your secondary and primary server your primary storage so that your primary storage is on the fastest possible way or maybe you use local storage which will make it harder to migrate instances but you can you can specify clausac to use local storage for vms it just slows down your migrations a lot um the vlan tagging and trunking uh i'm now looking into that not for my home cluster but for a different one um definitely takes a lot more more advanced networking knowledge than i have but having at least some idea on that can make it much easier to talk to your network engineer who's configuring your switch if you have that ability um but it's also not unreasonable to buy sysco or whatever i don't know what people are buying that are full day or three that can do vlan vlands because there's a lot of power to be had there um and as mentioned previously is that clausac does support some sdn some software defined networking um that seems to be somewhat in flux not that clausac isn't gonna support it but there seems to be some talk of resurrecting some dead sdn projects now that vmware has been bought by broadcom and has changed licensing models there's some doubt for some of the sdn stuff that they've surprised previously to be continue to be available um so i just kind of if if you're interested in that kind of stuff keep your eyes open because there's definitely there's been some discussion on the list at least one or two mess one or two threads about um people talking about that they're trying to get a group together to resurrect i can't remember what the sdn tool was they're talking about but they're talking about resurrecting that so that would be useful if you're looking for that um it can also be really helpful to have an ssl cert for your clausac on my home networking it's my own network but i still try to keep everything encrypted because if someone gets in it makes it that much easier for them to get elsewhere and if it's encrypted it makes it much less likely um and more likely that i will see something that looks wrong if it's harder i did that by pulling uh let's encrypt cert and generally you can't pull certs for privately routed dns but there's no reason if you have your own dns name or your own domain there's no reason you can't set up either uh a wildcard cert of some sort that you can get from let's encrypt you do have to do some dns authentication but it's you can automate that with answell if you spend enough time or salt stack or whatever a chef or whatever you want to um but i did that and that that definitely helped um there are some addition or maybe even setting up uh an acme server for testing maybe you want to try doing this acme server with ssl sign certs and automate pushing certs on to instances that's definitely something doable with this um as i mentioned i think in passing earlier as a 418 clausac has added a managed kubernetes cluster that also supports the cluster api and i've seen someone live demo this out of presentation i was very impressed that they were able to do that where you basically just have your your base kubernetes cluster somewhere you tell it where you want to deploy and it'll just deploy and and automatically set up the whole cluster in clausac i have not looked at that yet because i just haven't had enough need need but in 419 there's some additional improvements with that just came out the end of february um that looks pretty good it's a fully managed cluster it supports capi it supports one of the other apis i think that's common in kubernetes i i haven't looked at kubernetes enough to speak to it but yeah it's there um and as promised here's some of the links you can reach me at that email either one of those um the presentation will live at that google docs address if you want take a picture as many of you already are the clausac roles um those are the ones i'm currently using for my own private cloud and for what i'm doing for work it is not you don't take it as a really good example of ansible some of that ansible i wrote in there is very early from what i've learned now and i just haven't gone back and rewritten it um there's also been some changes with how you should be doing some stuff in there namely your modules should boot fully the full name of the module some of you know the ansible there's stuff like that that's still in there um but yeah you're welcome to look at that um and then as promised the lack rack page if you're thinking about rack hardware and you're trying to figure out how you're going to put it mounted somewhere you want to do it in cheap those lack tables look really good for that and unless people have more questions i think that's it hello hello perfect hello everybody can you hear me perfect so let's get started um today i'm going to talk about a journey of a home-based personal cloud project because this is a very personal project so i would like to start from the start uh it was in 2007 when i was in high school and we were on a weekend with my dad and we were bored and we were looking for something to do and i've heard about this little thing called ubuntu and i decided to there were an event at paris that was called ubuntu party so we decided to go and it was a full day of conference around free software and it changed my mind i to this day i knew what i wanted to do then later later that year i'm the dream of the of the moment was to um i became true we went road tripping to the united states and um this was my very first trip overseas as you can see this is me we can change in 17 years and 17 years later here we are here um at the same place in las angeles um i would like to share my experience about um running a project entirely on free and opposite software without based on the idea that we don't need to depend on cloud provider to hold our own data from the bottom of my heart i would like to thanks the organizer for selecting my talk because this means a lot to me so who am i now my name is julien rio and i'm an open source dba you can find my previous talks on this website and if you want to see the slide and click on the links you can already open it they are available and you can follow me on mastodon today we are going to talk about why the context of the project and the history the timeline we will talk about infrastructure data management uh alerting observability automation and what's next and i will give you a little takeaway so why why running a home-based personal cloud storage why on earth because i want i never i've lost data in the past and i want it to never occur again uh and i also want to control my data uh as you can uh heard i'm french so i don't want to provide my data uh anywhere in the world i want to keep it with me and i also wanted to learn new stuff so a lot of solutions have um implemented maybe are already solved by uh one tool or something i just wanted to try some tools one by one and have some fun a little bit about the history it was in 2013 2013 uh i was living in an apartment and my data was stored on usb drives classic but the usb drives are uh hard to find maybe they are lying around somewhere and we used ntfs because at the time we had some microsoft windows uh laptops uh that were unable to open like xt 304 uh file systems we had to physically plug and unplug the disk and eject uh the disk before uh um before the end or something bad happened so i decided to look for some nas the network storage like this type of nas i didn't bought this this one but for the illustration so i used my desktop uh pc to create a nas uh it was on my home office with some some basher's because of windows and but there is a big problem every time i upgraded this the server uh the client were unable to to reach the shares it was a big problem for me and in 2015 i got a new job at a major cloud provider in europe ironic huh but this gives me the um advantage to have a discount price on disks which is not the case anymore they don't provide us disks anymore because you know safety reasons but at the time it was um available so i decided at work we also use open gfs so i discovered at that time open gfs more on that later that were was uh able to create nfs and cifs shares and i use gnu linux and uh on servers and desktop at work so it brings me back to 2007 when i discovered the open source world so i decided to create a small storage with all this hardware i could buy at this discount price so it must be silent and small because i live in an apartment at the time it has to to have the same design as the nas i've shown before so very small like a synology you know this this brand i bought three uh hard drive of 40 rubites it was well pretty cheap at the time used drive so they were four years old when i i plugged them but it's okay they work and i decided to buy new stuff new hardware like intel nut motherboard and pc i read card because there were not enough sata port on the motherboard and i decided to try free bsd because on free bsd open gfs is support is built in but i made a mistake when i bought the motherboard it wasn't on the right format i um there was mini etx and micro itx they are supposed to be small but they are not the same so it ended up like this i had the motherboard outside of the case the monitor is my uh my tv and it sees on um where we watch tv it's not on my office so it can give you the vibe at the time of what i was able to do anyway i've set up some things on frankenstein pc and uh okay let's start to copy some data and a big sound noise started to ring inside the room later i found out that it was because of the temperature temperature when it was higher enough there is a buzzer inside the case that were uh causing this this sound so anyway uh i have something i can't use so let's buy new hardware i decided to buy something i know so a classic atx tower with new hard drive smaller ones to reduce the price because i don't need that much of storage so i decided to and i've already bought some parts before and still use free bsd and in 2018 i had a baby so i had to put the computer away of my home office to create a room for the baby and i didn't have any time more to do this stuff and one year later i got a house a new house my house with more more space noise is not an issue anymore because we have a basement and a secure basement behind like a regular house and i have a third pc an old storage um because i reused my main computer as a storage it was my very first pc i've mounted in 2028 uh 2008 it only had three uh hard drives of one terabyte three is a good number you will see later away but i already had them somewhere but this one had some issues um for the installation the usb stick didn't work so i had to burn a cd rom on the latest version of free bsd at that time that could and whereas causing um a lua er you can click on the link the bug uh was open i tried free bsd 11 same error uh after two two or three cds been burned i decided to fall back to dbm and it worked but after that uh and running for some time the pc uh freeze 3d so i had to hard reboot it from time to time so i decided to fully replace that later on and upgrade it too with more hard drive a few years later so quick recap today i have three servers um they are not named uh chronologically because uh of all this history uh they are pretty much the same capacity except the first one that is a very big one but it's enough and i decided to use dbm only because at the end of the presentation you will see that i use automation and it was hard for me to manage two operating systems at the same time i had to choose and dbm has a pretty nice support of uh open zfs but i had computers everywhere what should i do with them um i need to find somewhere to put them and to be useful because i don't need free pc uh to run uh storage so the idea is to put one computer at my dad house and my parents in law house and at my house i have a distributed storage system as you can see we have one server in France and two servers in Belgium all in different houses all in the basement a little word about the clients because now i'm not the only one using this um this uh solution this infrastructure there are my parents so i decided to convert the windows uh uh clients the windows uh computers they had with something very similar uh i decided to use kubuntu which is ubuntu with kde interface because it looks like windows and so they are not very lost and in the end they only use the browser so it doesn't matter for them but it was better for me to do the maintenance and i decided to use uh nfs network file system it's easy to set up with a full uh linux environment or even bsd environment it's easy to maintain and it doesn't break when you upgrade um so the idea is to mount a remote directory but locally on your client so you can copy file without worrying about local storage but it's not that user friendly especially for the parents so i decided to and my dad in in reality has a new uh pc with linux he kept the old windows pc and he kind of have both system at the same time to make the switch eventually one day so i had to find a solution even for windows that's why i use i choose c file just i just picked this one because it's written in python uh not in php and at the time i was installing um directly on the host without docker uh system or something like that but right now i use docker so i could use any solution out there but it turns out c file is pretty it's okay it works uh it's user friendly there is a drive client you can mount uh as a drive uh there is a web UI so you can even share links on uh on a UI on a web link if you are not uh inside your house you can share something to the family for example and it keeps filing things there are different levels of caching but uh you can read the docs because i'm not an expert in different modes sorry one big issue is connectivity how can we connect all three hosts together because i want in the end to copy the data from one host to another first the static ip address you should know that in belgium to have a static ip address on a major isp it costs 30 per month only for one static ip address it's horribly expensive i don't want to spend 30 euros per month so that's not an option and isp modem settings uh i have three houses with different isp settings if we can take only mine uh it allows only few protocols by default you have to do port mapping and you even have to do to request the isp to lower the security level and it work at my apartment but not at my house so not an option what can we do i decided to use open vpn uh it's a virtual private network solution a vpn with a client server model uh it can authenticate with certificates using encryption like tls and it allows clients to communicate with with each other and it can even assign static ip address to the clients or the storage server and here is the settings you have the topology which you declare a subnet uh you allow client to client you can define the static ip address and the the pool okay but i can't rely to you i had to use something external to configure this vpn so i have to rent uh a vps somewhere uh in that case it's at my own company but i don't have any uh discount on that but i could use no uh every vps uh uh in the world uh the cheapest one could work you only need a network and a static ip address of course and the the network is encrypted so you don't care the account sniff or something and the certificate authority is at my house so it's pretty secure and it goes like this um all the network flows uh transit via the vps so you should uh select a location that is close to your client that's why i use a vps in France because it's the closest location i could choose so it it was working now the servers can communicate with each other and for that we can configure ssh to remote uh control them so from my house i can control everything now let's talk about data management as i said multiple time before i choose open dfs for zetabyte file system uh zetabyte is sent for uh the number of grain of sand on earth but this file system can handle more bytes than that so it gives you the idea of the powerful system of dfs it can manage your disk create some redundancy with red you can create multiple file systems um you can create snapshots for uh implementing a backup solution and the snapshots are basically free it's a copy on the right system so there is no impact as i can have seen with lvm for example when you take your snapshot with lvm there are back in the days there were a lot of io operation with dfs there is no basic little to no impact and with those snapshots you can do replication cloning and even rollback on the data there are built-in feature with uh the fs like compression uh it's transparent and encryption and it's production really even on linux uh at my work every backups are on open dfs it's like 600 terabytes of data and it's for databases so yeah production really even on linux but here we are at home no so it could be easily okay so red in the fs it's more like a red z uh there are multiple levels of red you can uh do the standard red but i choose the red z with three disks you have a parity disk and you can lose up to one disk so if you lose one disk you can replace it and re re silver the data it's the fs can handle that for you and then uh you can list uh the pool here i have like six terabytes of data available on uh on three disks and a little less fire and a half thanks to the parity and i use pretty much 50 percent snapshot included and i care i keep 10 years of snapshot and this project is less than 10 years but i won't reach the maximum maybe in a few years but uh right now and i can enable the compression so for uh binary data it's not that important but if you have documents for example like uh text files or uh um tesis or something like this the it can be compressed uh very well and you can create file systems so you can create for example for my example i've created one file system per person so everybody has its own uh space but you can do whatever you want i even have one file system for uh one software for example and you can mount this file system directly using the fs itself and you can create snapshots so the data for example if i need to access the data in the middle i can clone the snapshot on a main point and directly access and even modify the data without touching the snapshot it's pretty magical and you can replicate the snapshot you can replicate the first snapshot by piping through ssh and you can do incremental uh send uh with the previous snapshot as a base uh snapshot but as you can see it could be a little bit complicated at the end so i used the snapshot management um system called sanoid which is open source uh it can take snapshot for you run pre and post snapshot scripts if you for example run a database and you have to do some more pre operation before uh the fun fact about this feature is uh i contributed myself to implement this feature because when i discover this uh solution this sanoid solution i decided to use on in um on my home lab and it was so better than what we used before at my company that we decided to use it at our company and it can prune uh so remove uh older snapshot all based on policies and you have monitoring capacity you can check if your zfs pools are okay or the lc or if you run out of capacity the configuration is like a nini file uh you have here two templates you can say the number of snapshots based on the howl the the the frequency like howly snapshots daily monthly yearsly and if you want to create snapshots and prune snapshots based on on that and i use this uh i keep 10 years of snapshot with um one years uh in in monthly snapshot and one 31 so one month every for every day snapshot and i have a template archive for managing the replicated snapshot so they can't create other snapshots where they shouldn't so you have two templates and uh i deploy the one i want where i want and the policies you use the template defined before so you can use one template or another with that and by default sanoid comes under debian with um system d services service that is called with a timer and this timer is like a crown job um and the service is like a one shot uh command so here is by default it's it by default it's cheaper like this and there is a timer that runs every 15 minutes it doesn't mean that a snapshot will be created in uh 15 minutes only the configuration will be evaluated at 15 minutes so it can run all the times only needed snapshot will be created based on the the date and time and if we play with some timers we can see the next time the command will be executed and um sanoid comes with another tool that is useful it's syncoid so there are two binaries in sanoid uh repository syncoid is like r sync but for uh cfs snapshots you can see like this uh it can resume on interruption because you know uh network can fail and it can control the bandwidth uh i have a pretty small a pretty low bandwidth at home and i don't want to uh make some noise uh and um interact the work when i'm working or uh slow down the tv for the kids or something even if it's bad but you can control the bandwidth especially the upload bandwidth so the usage it's like r sync pretty much the same same option not not the same option but the same principle i've added some a list of command to this script and with the same um idea as seeing a sanoid i've created a system to service and a timer so every configuration is available here if you want to on my website if you want to check this out later and one nice feature here is the um randomized delay a second for example i don't want my house to overlap with some other house so i prefer to delay the starting and with a random value so if the timer are uh capable of this can do this so it goes like this uh the local client clients connect to the local storage and the storage overnight send the snapshot to the two other storage be aware you should not do multi master or multi primaries replication um it's only to the two nodes there is no circle here um the colors don't overlap it's like a circle if you take the big picture but if you zoom only one host will send to the two others and sanoid is able to to check the health of your system and the capacity so now i need to be aware when something goes wrong so let's implement some other thing i decided to use the good old magios it can be old and ugly but it's light and it works it um it can be configured with a simple configuration file we have a simple infrastructure it's okay uh it has a web UI if we want to for example uh put some down times because we are doing some stuff we don't want to be alerted like a real uh enterprise um or or not if you don't want to use the web UI it's okay and there are lots of plugins and welcome to pilot it's like a pilot but in french um it's a raspberry pi uh a small host i had some raspberry pi uh somewhere so i decided to take one to take one and to install it to have my own magios at home magios has multiple components uh it can declare host host groups to regroup multiple hosts and services to link services to host groups and notifications so the pilot is now about able to run check commands to different hosts and for that um there are here multiple host groups and there are monitoring servers for the the monitoring server itself there are storage servers for the old group and one host here with the name so we can declare our host it's a host name and IP address simple we can define the host groups comma separated list of hosts and we can define multiple service commands the one i use there are three commands i use one is checking to ensure the host is alive the check an nrp which uh remote uh plugin executor for magios and check htgp for the web services uh there are multiple services states okay warning critical and non you can define um you can based on the services uh level you you can define the alerting uh later if you want to be alerted for a warning for example or only critical and the service configuration goes like this we have a host group name so we attach the service to host groups and we name the service of course and we have one command check an rpu with some argument here check the fs snapshot to tell the nrp uh local agent on the host okay execute me this command and uh send me back your result and the nrp agent is deployed on every storage server and it runs the command um on the host and for the notifications um a big fan of telegram i use it every day so i decided to implement a notification system for magios it's open source you you can click you you will uh go on a repo and it can be configured you can uh have it you it's written in python and it uses ginga for the template so you can basically put whatever you want into the template and you have notifications like this so here i i have problems on my snapshot one snapshot is too old so it means that the the overnight transfer has failed so i can check it out but i'm not on call i will check it out later when i have time it's home base project i don't want to to be uh a slave or my infrastructure i'm already one at work i don't want to have work at home and a recovery notification same and we have the web ui but there one issue the web ui is available only locally how can we make it available to the world for example if i'm not in my house i would like to access the web ui for that i've set up nginx on the vps that run the um open vpn server and the nginx acts as a reverse proxy so it terminates the ssl uh connection and communicate via the vpn over http which is insecure but the vpn itself is secure and it's only monitoring system we uh and it's also already included so the web ui goes like this everything is green but it's not always the time that's why we have set up an i have set up an infrastructure like this okay we have the live system alerts but what if we want to know the evolution of the system what do you want if we want to put some observability in them so i want to know the disk space evolution it's good to know the network stability because i had some stability issues on my over my network and i wanted to know where is the uh the the original the issue and the most important here was the temperature like the buzzer before i want this to happen again and the power consumption because my dad want to save money and it's kind of scary to let the computer run 24 7 so he wants to know how much we cost so let's let's do this for that i use what's called the tig tig stack it may not be the most latest uh technology here but at that time that was pretty common so tig is for telegraph inflex db and grafana telegraph is a plugin that collects metrics locally and sends them to a data store uh a matrix data store so it gathers some inputs like the cpu like disk aio uh and all those stuff um and write to some outputs here the inflex db inflex db is like uh a real time uh data analytics database okay all the solutions are in the open and the last one is grafana is like a tool that allows you to create dashboards and visualize your data and my dashboard looks like looks like this i have the disk evolution i have let's say the the capacity the fragmentation all the zfs stuff here uh i have some disk temperature the age of the disk eight years i should i should uh watch them but they don't fail and the different colors is because i have reinstalled the server at the time a little overview of the infrastructure of the observer vt1 um i decided to use my monitoring server to install inflex db and order stack but at some point the sd card wasn't crashing so much so i decided to use a real server that i also use for other projects um so now i have real ssds and but i don't have so much metrics but i don't want my host to reinstall my host every year for once in a while so i have deployed a new server that runs docker image images of inflex db and grafana and i also use the same technique to access the a web interface with a reverse proxy with a nginx so we have a lot of things going through the vps unfortunately if i had static ip address and a way to to do something at home i won't require and i will be 100 free from a cloud provider so docker image are available um but in the end if i would like to start from today i would replace this uh metrics collection with a prometheus based um solution uh i will learn new things and this is also the goal of of this project and then sensors i want to know the temperature the humidity and even the noise of where the storage are are are placed of my basement and for that i decided to use arduino uh it's powered by usb so you have just to plug it on your computer do some electric stuff with pretty ship sensor it costs it's very cheap i don't know the exact cost but it's way cheaper than all the stuff that i've already bought before and it works with a breadboard and some electric cables so the architecture is like this you have a breadboard here some cables you you can plug them and it goes through they go through the sensors and you will have to put some code into the board run it and gather the data so the software there is an IDE for Arduino when you can write code and push what's called the sketch you can upload it to the board and let it run forever so here is the code you can initialize some values for humidity temperature and sound and if you want to have more um sensors you can update the code you have a setup function for example the sensor are okay after two seconds of wait before the values are not uh not okay so you can wait here wait wait here initialize some stuff then you have a main loop so the delay is more in the main loop main loop here you you define the initial initialization part the main loop is the loop that runs all the time and again gather with the module some uh matrix and format the matrix with the format you want but there is a problem with that um if you use one process it's okay but as soon as you use two or more process to access the serial in interface you will have uh access issues so for that you should use multiplexing and it kind of it's more in the you you often see the mosquito part the the broker when you have independent systems writing to one centralized system but here the the concurrency is only on Nagios from one part and telegraph on the other part so we have to use a multiplexing system so we I use the MQTT broker called Mosquito I've created a tool that's called Serial to MQTT to gather the value and send them to this little queue and I use the check that was already existing check MQTT and the telegraph plugin already has a a consumer of MQTT so diagram goes like this there is the sensor going to Serial to MQTT to Mosquito and Nagios and the matrix could read from the queue and have the same data for doing what they are supposed to do so the graph goes like this as you can see the temperature is okay the threshold is like 25 degrees I don't know how much is infinite sorry and you can search 25 degrees it's pretty warm but it's okay the buzzer sound was triggered at 29 so way over so it's pretty cool in my basement even in the summer it's one year of data and we can see the summer is here and the winter is here so we are we are okay what about humidity oh humidity is pretty high like 90 percent but we don't care it doesn't affect the system there is no the hardware looks pretty good it's pretty new and with the temperature even in summer the humidity is not a problem not at least not at home where I live and the noise what about the noise I can't even know what does that mean in reality the sensor is activated when you tap on it you have spikes only when you tap on it if you have ambient noise you won't even detect it so I was confused I decided not to look at it because the the noise is not a problem anymore in the basement and what about power consumption how much will it cost for those who don't know the Belgium price of electricity has spiked over the last years it was like four times the price we used we had before the covid but it's it's two times now but it's pretty expensive and those are the price of Belgium here it's the fourth top expensive given to this statistics and France is over here so we have not cheap electricity first I decided to want to use the wattmeter you can plug it on the wall and see how many watts do you consume but how to parse the data because they are cheap but you unless you put a camera and analyze with AI I don't know but it's pretty hard to implement so I decided to use an ups the ups is little is literally pricey more than 100 bucks 150 bucks but this is a project I want to to to be happy so I decided to buy them and to work with them with something called apc ups demon which is a demon for this kind of ups there is a telegraph plug-in of course and the graph and a dashboard is already available and the nice little things is now I can save my servers from power outage that was not the first purpose but it's nice to have now and the dashboard is here you can see the evolution of the power consumption thanks to the battery and it costs only seven dollars a year even for an expensive country as Belgium seven dollars per year not even the price of a cable so in real life there are some photos um this is the afl tower but the server is in Belgium but just because I'm from Paris but I live in Belgium now and you have this is my fridge and this is the wall so there is a little space here and it's cool it's okay it doesn't take so much space and you have this Frankenstein electricity thing over there but it works generally the kids don't go here so it doesn't fail or they can go just before on the fridge and they won't touch it so it's okay it's the basement they don't usually go to the basement and at my dad house it's the same principle and I'm my in-laws house same the fridge the wall okay now uh we'll try to go a little faster uh let's talk about automation because failure we already have saved our data it's okay but some failures can happen you can have micro sd called that fail or flood of fire in the house oh it can happen so for that my workflow of diplomats goes like this I inside the operating system install and configure the software and restore the data or for a new server it's optional and we will focus here on install and configure the data the software and for that I use uncivil which is an open source um uh simple it automation system is and by simple it's really simple it's written in yaml but not the same yaml as you have in Kubernetes it's really simple yaml and the concept you have an inventory the inventory here is a group of hosts and uh because I don't have a lot of hosts I use static file and a playbook playbook uh uses some roles uh that groups some tasks and tasks are modules plus uh arguments so the inventory example is like this you have a name and eventually an IP address because I didn't I don't have set up a DNS server uh I just put the IP address because it's static over the VPN it won't change even if I move from anywhere in the world the IP address will stay the same as soon as you have an internet connection and my playbook looks like this you have a site dot yaml which is the best practice when you have to configure an infrastructure and I have multiple playbooks to uh configure multiple parts of my infrastructure I have storage server but I also have other server that I want to cover here I decided to write my own roles like be like the the previous talk just for fun same as you so I decided to use a common role uh for storage as the fs role an open vpn role and inside the playbook you can have optional um roles for example the you can target some subhost into your inventory and in this example I deploy on easy nfs server on the storage one because I'm the only gig that use the in nfs server at home so I want it to be deployed only on this host and a role uh is like this you you have uh your default variables uh your handlers to act eventually on services like restart some services if needed like you have your task and your templates some modules I use the uh I use the built-in modules of uncivil like apt to install packages like files to manage files services and templates templates to create the files based on a ginga ginga templates with variables loops and so I use a template to manage my sync with uh destination script as I've shown before and this is the template it's a ginga template you have like brackets here for uh every data set in the main data set I do a double loop with destinations and I do a little echo for the log and I call the the same command uh as I've shown before but template it and it creates a file shortened for the the the talk but there are multiple lines and I just need to configure variables to tell the the list of data sets and the destination and uncivil will do the rest for me without any copy past issue and for upgrades I use not a role but a task I've created a task apt upgrade that calls a module apt to upgrade and I run it with a cli uh uncivil playbook you can run for the whole infrastructure sit dot email uh or the upgrade and you can use this uh as a base uh building blocks for the rest of your potential infrastructure like at work but at home so what's next I should open source my uncivil code base but right now I count because I've put some secrets in there so I don't want to share my secrets so I have to remove my secrets my variables and put that online so I will I will do that very shortly uh I promise uh because it could be a good example of what I manage uh how to so there is something that uh wanted to it's automate certificate management for renew my certificate for the VPNs uh I have monitoring on the date but I don't renew them with your automation I do it by hand uh I probably should use the FS encryption because okay your house is safe but you can be broken by some teeth so but I'm not sure they will pick my server first but but we don't we don't know so encryption is you should encrypt by default and use primitives for metrics I should probably forward some logs because it's good to have logs at one uh location instead of going on every host and the more important is to handle the mobile phones because today we take a lot of pictures for example with our mobile phones and right now the solution is not pretty well designed for that the client for C file is not very working well so I should fix uh this issue okay so the takeaways uh self-hosting is not that hard as you can see a three server or three house um even if I've done it through the years it wasn't my free time with kids so it's okay you can do this and I I'm not burnout so you can take your time but it's not that hard uh but if you really want something fast you should consider using a built-in solution like trunas there are a lot of feature uh that I've shown that probably are handled by trunas and free an episode software is awesome this is my philosophy I try to contribute as much as you can and you even have a postgres hoodie so this is in my blood and enjoy what you are doing because if you don't what's the point I would like to thank you for being here uh it's uh uh you are a lot here so it's mean a lot to me and uh thank you if you have questions maybe just a little one or two question because I've been running late so yeah yes yeah the question is uh do you have a hot swap disk and am I able to detect which disk has died um the answer is I have hot swappable hot swappable disk but uh it's easier for me to take down the the host to manage the host to see the serial and even uh list the serial identifier and uh and do it like this because we are at home not at uh at data center we can do whatever we want yeah thank you uh what's my uh you this usage this is a question I have um it wasn't uh shown it's like more or less two terabytes sorry uh for logs only logs no logs are uh rotated so I don't keep them uh I'm sorry uh I'm out of time but if you want to ask me a question I will be around I will stay here for the rest of the day so you can ask me anything thank you beautiful yes all right hold it yes no I uh I tell people the same thing all the time so I treat it like an ice cream do you mind shutting the door all right welcome everyone uh I'm here and I'm gonna talk about running an open source hacker space my name is Tracy Homer uh by day I work for the software freedom conservancy which is a non-profit uh dedicated to software advocacy and uh open source open technology and we have a booth in the uh other room if you want to come visit us after this um but in my free time I help administrate our local maker space so Knox Makers is located in Knoxville Tennessee it is the southeast's biggest and oldest maker space we have 350 members we've been in existence for about 13 years and it's like your classic hacker space model so it's all community run we are an actual non-profit organization but we're all volunteer run we are fully funded my member dues um we don't like take any like corporate sponsorships and we are also fully open source every class that we teach every uh software that we have there is uh open as open as we can and I'm gonna talk a little bit about how we make those decisions what kind of tools we have and what software we run and then like some of the challenges and some of the places where we're not we're not quite there yet so we have a set out to have some core values which is what we envision will help Knox Makers you know keep its core solid and what we use to make decisions about our organization um you can see on here that open source is not listed actually because we feel like it fits under several different of our values um I think that people get into open source technology a lot because of the non-commercialism and privacy and it certainly does fit under there but we think that it fits a lot better under opportunity because it allows people the opportunity to run the software no matter if they have a windows machine mac or linux it allows them to have not pay licensing fees because the worst would be if they came to the space they paid their dues and then they could only use the software at the space because they didn't have the money to get the licensing fees at home you're not getting ads thrown at you all the time and it also gives people the opportunity to learn very deeply about the software they're using which is an example of we have here which is our cnc router which is in process so if you've ever tried to purchase a cnc router they're quite expensive so we're home building ours which is another aspect of opportunity it's giving us the financial opportunity as an organization to save us a lot of money by not purchasing one and having it straight out of the box but it also allows for like cross disciplines so we have a lot of people that are into woodworking not necessarily into software but they see this become this getting built and they're interested and they're like well how is it run how do I get my designs onto it how is it programmed and they can learn about the software they can learn about the stuff that we're putting into it and also when you I think that when you learn an open source software you tend to learn more than just like press this button make it go so when you do go to a different software even if it is proprietary you know more about the inner workings of it and like how it runs and not just like press this press this press this magic your stuff comes out beautifully so there's a lot of opportunities for that at Knox makers and I'm going to go through all the different areas that we have so this is sort of like our how we look at different softwares and different tools when we come across something that we want in our shop right so green makes sense fully open open hardware open software great for everybody red proprietary we don't we're just going to say no we're not going to teach it we're not going to spend money on it we're going to avoid it at all costs we don't let our members teach on it I mean our members are allowed to use whatever software they want in their own time and on their own projects but what we have in the space we're going to keep it fully open but then there's the yellow part some things you just can't get open hardware for like a CNC embroidery machine which I'll talk about later there just is not any open ones but you can access it via Linux or via plug-in or like put a USB in the side of it so as long as we can find a way to access it without downloading their web app or something like that then we feel that it's it's not the best but it's okay and we'll allow it into the space we'll allow it as long as we teach the open way of doing things right but then the problem comes well not the problem but like the challenges are is like how do we make this accessible to our members so we have like I said we have 350 members of all varying levels of tech experience all varying levels of other tooling experience some of them don't have a computer at all some of them like programmed in COBOL at one point some of them don't care about open source some of them you know only have a pine phone because they don't want to like use a proprietary phone so how do we make this accessible to everybody and really that is a really difficult problem because we want the people that have the SolidWorks membership or some other proprietary CAD software to be able to come in and still use their designs so we try and have different applications we have we have a web app that you can like load software into that will like take SVGs no matter where it comes from things like that so and asking those questions and going with our members trying to make it accessible to everyone is really at the key not just open software but open to people's different experiences it's taken a lot of thought and a lot of work on how to do that and I guess I will go more into that in the specific tooling so here is a map of our shop in the different areas that we have some of our areas don't have any software involved at all like machining or blacksmithing they barely have electricity like they're not going to have any software questions but some of ours are just fully based in software and we have plenty of members that are you know programmers or computer nerds as well as there's not necessarily a zone for that but you know we have people that are into coding and network things like that so the first zone that I'm going to talk about is 3d printing so 3d printing it feels like they they're very open prusa is like pretty popular it's a very open software and hardware you can build your own if you buy a prusa you can buy a kit you can get the plans and like print out an entire machine yourself so it's accessible that way and we also have had other we've had maker bots in the past we've had different different types of 3d printers we have prusa slicer loaded on our computers there so that anyone that brings in their own designs can just load it into the computer and then all of the the slicer is like set up to with the configuration for our 3d printers so they can design it on their own we also teach classes in free CAD we have thought about teaching classes in open scad but no one has really gotten it together because it's you know it's really difficult to put a class and a talk together like that but 3d printing I feel like is a very open discipline like even if you have a closed printer there's plenty of CAD programs there's plenty of design programs and slicing programs where you can make have open software and it's available to a lot of people it's a little bit different with resin printers so this resin printer in the picture here isn't open hardware prusa does have a resin printer it's a little bit pricey so we don't have one someone donated this one to us and we were kind of iffy on it because it has like that windows web app in order to like load your design onto it but what we found was prusa also has a resin printer slicer so and a python script or some script that you can take and use the the prusa slicer and put it into their proprietary slicer and then it will put in your open design and you never have to worry about the windows app there's still some issues because resin printing is smelly and chemically so we're still working on like getting that onboarded but that is the reason that we accepted that donation because we could access it without having to download their proprietary app software we also recently got a five head prusa xl prusa xl which is just really this slide is to show that off because it's pretty impressive we want to grant to get that printer so they're not always they're not they're not very cheap but it's really cool and i'm excited to like expand our 3d printing zone with these new printers electronics we don't really have any um machines that have software attached to them we're working on building a pcb mill that uses gerbil but it's not up yet we do however teach classes in kicad we teach electronic theory classes that we post all of the class notes on github we teach a lot of arduino classes in raspberry pi so there's a lot of open areas in microelectronics as well i've actually heard a couple talks already today that mention arduinos or raspberry pies or seen them like all over here so we also have noticed that a lot of people come in and they want to learn basic soldering so we've designed some soldering kits and sell those for fundraising and also have those schematics on our github as well just to make the learning accessible even if the and the software even if there's no software attached we still have um all of those plans accessible to everyone fiber arts is an example of our as more of a yellow a yellow area like um there's no there's not a lot of open hardware um in the fiber arts section but we found ways to make it work so we have a silhouette machine which is proprietary and has their own like little app uh that we don't like to talk about but they also have an inkscape extension so all of the computers at nox makers has that inkscape extension we teach classes on how to use the inkscape extension we don't teach classes on how to use the other uh the other part of it so then that allows people to use uh the silhouette machine without ever having to download that other stuff and actually i think that silhouette is silhouette and cricket are some examples of how um we are able to evangelize fos a little bit because recently they like shut down your thing your you know you load your design into their software and then they're like okay well now you can only have it if you pay a subscription fee so what you said is a good example about why you shouldn't use why you shouldn't use these types of software because you know don't know when they're gonna turn around and uh you know change the terms on you so you own all your projects at nox makers we also have a cnc embroidery machine so again there's no open hardware embroidery machines in existence that we know of if you know of any please let me know so when we were shopping for one we wanted to find one that would take um a usb that you could load your designs in with a usb because there is another inkstip extension called ink stitch um that outputs several different formats a lot of them are usable with different embroidery machines so the fiber arts woman was tasked with find find an embroidery machine that can get these types of extensions that has a usb option and um she found one and then she also found one that had like local uh sewing machine repair support so that was obviously the one she chose but ink stitch is an excellent extension it's really easy to use i made this uh pattern in about five minutes this morning you just load in a vector you uh click go and it will make all the stitches for you and you can load that into your embroidery machine so when someone takes the class we go through how to use the ink stitch extension uh we give everyone a usb that they can keep and leave leave their designs on and show them how to load that into the machine arts and crafts we have a couple different uh machines there this is our large format vinyl cutter so if you don't want to use the silhouette at all or if you have like something bigger you can use the uh vinyl cutter the stickers i don't know if you can see the stickers on my laptop but i cut them out on the vinyl cutter um that also has an inks inks tape uh it's not you don't even need an extension for it you just use the plot function and it will print right out of the box i think that this is like an off-brand vinyl cutter it doesn't have any uh like apps with it or anything like that but you can just plug a usb into your laptop press the plot function and it will cut out your uh vinyl for you something that we thought about uh for a very long time was a poster printer we had one that was given to us and it was used it was it was not working great when it was given to us so we sort of fixed it up and we used it for a while and then it started not working really well at all but it was used enough that we thought well it'd be a good enough investment that we're going to buy a poster printer and printers are notoriously uh terrible for not being open at all so when we were searching for a poster printer uh our main thing that is that we wanted one that was already in the cups database so we know that someone else had used it and someone else had done some testing and at least it had been successful for someone else using a linux computer uh the really sad bit is that when we got it it and plugged it in and we're like setting it up and everything it didn't work right away and we're all makers so we're like trying to press the buttons and we're like trying to fix it and we ended up having to call the helpline and the helpline wouldn't help us because we hadn't registered the serial number with their organization and it was like so heartbreaking so we had to have a repair tech come and fix it for us I mean that's just really wrong it was very sad but now it finally does work and you can use it with any of the machines at the space even if you run an obscure form of linux. Laser cutting is our most open area our first laser cutter that we had was a small co2 laser that was built by our members and then we decided that we wanted to upgrade to one with a much larger cutting bed and we decided that the most economical way to do that was to buy a laser from China you can see in the background of the picture and then we ripped out the brain and put in our own guts that were all open hardware all of that is posted on our wiki all the instructions on how we did all of that and what software we used for that so we have our own custom safety on there if you open the door while the laser is running the laser will shut off if you hit the emergency stop button obviously it will shut off if you turn off the air filtration system it will shut off I'm sorry if you turn off the water cooling it will shut off but when you turn the laser on the air filtration automatically comes on so you know we're building in these safety features to make it accessible and easy for members to use even if they've never used a laser cutter before or they're not like a tool a person that uses tools very often but it uses linux cnc to with the g code to get the gco2 the laser cutter linux cnc is a pretty old and mature project it's used with lots of different cnc machines mills, lathes, robot arms basically anything that uses gcode to move something you can load into linux cnc and again with this we added our own features to it so on the right the this side of the screen you can see the bed up and bed down button so people can just like press click this button and it will move the bed up for different things we can also we also set a bounding box so if you click on the bounding box it will outline your old project so you can you can show where your project is on your material and things like that to make it easier for members to use but how do you get your design from inkscape to gcode that is a tricky bit and inkscape has a plugin called something something to gcode but it's not very intuitive so it just it's sort of you have to use certain colors you can't change the power settings we're not you know it's a little bit difficult if you're not used to like techy stuff so we have a custom web app that our tech director developed and that will you upload your svg into it and you can see that all the different colors in my svg are on the right side of the screen and i can choose which ones i want to engrave what power i want to engrave it as which ones i want to cut which order i want to do them in and actually it's been upgraded since then you can actually load in a raster it will automatically recognize that it's a png and we'll go to the raster settings so you can set different raster settings we also have a custom extension that we built for inkscape that will do a lot of the common things that people want to do with the laser so hatch fill which is these hash marks to like color something in with the laser or make boxes or make text into paths something like that so that you can it's very approachable even if you've never used inkscape before you can go in and you can output something on the laser fairly easily we recently also got a fiber laser which the difference is a co2 laser will do wood and organic materials a fiber laser will do will engrave and cut thin metals it will engrave metals and different materials like that there is not we use meerkat for that which is just now being developed for the fiber laser like i don't think that there's any other maker spaces that use it for fiber lasers i'm not sure if there's any other people that use it for makers for fiber lasers it was originally developed for for co2 lasers which is a totally different like movement system so with a co2 laser the entire gantry moves back and forth and cuts out your material with a fiber laser it has a mirror that just moves and engraves your material that way so meerkat started developing this for fiber lasers our tech director was very in contact with them when we were working on this project and trying to debug it and try and make it usable for the common person who's not like a laser expert and eventually we have gotten it to work for us and it's been really good so far he's even thinking about moving our co2 laser onto meerkat in the future or his own personal laser we've loaded materials fiber lasers are very picky about the materials like what settings you use so we have our own materials loaded in there we sell like little coins or little steel plates that you can engrave on uh so we preloaded all those materials and then we're working with our members to like if you put a new material in and you find good settings share with us and we'll share with everybody else so it's like opening up all that as well so those are our tools internally we also use a lot of uh open stuff we use um wiki media for our wiki page we use next cloud we use wordpress for our website you know these are all pretty common basic things uh we also have computers available for members to use uh that run debbie in this one we try and this is a very boring picture a screenshot of the desktop of our computers but as you can see like all the favorites are at the bottom so if you're very used to using windows or mac you've never touched a linux machine before you're afraid of linux it's so technical it's scary well it's not really you can see all the software that you want is listed at the bottom of the screen you can just click on what you need and it's right there for you we also have different scripts that will update them all when we find that uh something that um if there's like a package that's not running properly you can run a little uh script and it will update all the laptops and uh so that they're all equal and um completely ready for members to use for whatever and those just live at the space and people can come in so if they design something at home they can bring it on a usb or if they bring their own laptops in and they don't have inkscape or they haven't downloaded it yet they don't want to try it yet they can try it out on the space laptops so it works out really well they're very helpful especially if you like forget your computer at home or something there's always one there we also use pf sense for our firewall and network in the space uh we do have cameras in the space despite what we said about being having privacy as a value it was really important to us being open 24 7 uh and people potentially being there by themselves and maybe hurting themselves horribly we thought that having cameras was important uh we use zone minder with like a motion sensor on it uh we do not uh publish it to the internet we don't use like we definitely don't use proprietary software that's going to like you know sell your face to like some corporation or something like that uh we actually have really strict policies about uh who can look at the cameras and when there has to be a board vote and it has to be a good reason it can't just be like was so-and-so in the shop yesterday I want to tell them something like no it has to be like something catastrophic um and it's like sort of a pain to look so we don't really want to it's mostly because someone leaves the door unlocked which is really bad we don't we definitely don't want to leave the door unlocked but if someone does you can see it in the background we see the last person that left and then give them a tourist phone call but uh it happens really rarely I think 11 times since we put the cameras in place years ago is the how many times we've had to like log in and look at them uh and they automatically like wipe after I don't know a month or something maybe less than that so we don't store that data we don't keep it we uh uh don't give it out to anybody for uh member management we also have another custom built member management system which we keep our member data in we try not to collect any member data if we don't have to uh we don't collect people's income or gender or addresses or anything about them it's basically contact information when did you join a little bit about yourself we do collect uh we do ask people submit their photographs because 350 people is really difficult to keep track of so it's helpful to have your photograph there but we don't share that with other members um but this is uh this is the web interface to it uh which I've been told I'm the only one that uses it because I'm the membership person so I'm the only one who logs in and makes changes to that we also have a api so it like has different scripts that run that adds you to like the mailing list automatically or checks to see if you um you can run um sorry I've made some shell scripts that will like tell me different things about members uh so we can like have a count of how many people we have at a certain time or how many people are on probationary membership or something like that uh for our internal chat server we use matter most we've used that for a lot of years already um it's for members only and it interacts with our hacks db as well so there's a special channel that just run bots where you can uh have a little slash command and you can say who was that person named tracy again I don't remember her so you can type in people slash people tracy and then the all the members named tracy will pop up and you can find out their picture so you can see if you're looking at the right person how long they've been a member um a little bit about them we also have uh different slash codes for teachers of classes so we don't have to let them have access to the website and all the people that have purchased tickets and all their information they can just type slash events the number of their event and it will list the people that have signed up for their class so we can restrict that data access to them without giving them like admin privileges on the website it's really helpful this is how we mostly interact with it um it also uh will run daily and check to see if new people have joined or new people have signed up for matter most and stuff like that so it will um we also have bots that will check our machines that will ping them once an hour and tell us if something is down or if someone has submitted a trouble ticket uh it will also pop up in this uh bot channel as well um we do live streaming once a week so once a week we have a community night a public night where people can come and show off their projects show what they're working on ask for help on stuff and it's streamed to the internet so we use obs to like control the camera versus uh screen type thing and we stream to big blue button as well so we uh we enabled big blue button back in 2020 when everyone started using video conferencing software and we went and did our show and shares on big blue button for about a year um and now we just stream now for people who aren't available if they can't come out on a Tuesday night for whatever reason they can still watch it on from home using big blue button and we also still use it for our board meetings because it makes it easier for members to come if they don't have to leave their house it makes it easier for me to go if I don't have to leave my house as well so it's worked really well for us um it's I'm a big fan of big blue button especially uh so there's some of things that we uh could improve on uh it's difficult to change after three 13 years and 350 members if you set something in place in the very beginning it's really hard to change it uh so that's that's my excuse it's not that we don't care it's just that there's maybe no better option or we haven't found the time after putting out all the other fires to uh switch over to something new uh the first one is we use github for our code repository I don't know if you're familiar with uh software freedom conservancies opinion of github but it is not good don't tell the table up there that I said that uh but you can come talk to me about it I'd rather that we move to something less corporate but it's it's really difficult it's a huge social site github I mean it's like everybody knows where to go if you say you're on github everybody knows what that is so moving off there is not is not risen to the top it's not a huge priority and it's I feel like that's okay right now we also use gmail for our email again is just what we started when we started the organization it where there was a couple people it was the only option uh we were maybe not as hardcore about open source when we started this and it was free and we were broke so gmail it was uh we've been looking every once in a while on where to migrate off but we want something that has you know has available for a lot of aliases you can use uh different bots to control what who goes into what mailing list and what uh so we haven't quite found something yet we've heard a few options but uh it would be hard to transfer over like you can't transfer over overnight it would be a multi month project uh to do that so we're still using gmail for our email we did use google sheets uh and google drive at first but we have moved away from that none of the forms on our website anymore our google forms we have them all within uh they're either like custom built like by ourselves custom coded or uh through word press the biggest one that gets to me is that we use quickbooks for our treasury treasurer stuff that makes me really sad i'm not a huge fan i'm in fact not a fan at all of quickbooks and into it they have some serious issues that i won't go into but they're as far as i know there are no open source crm and treasurer and uh financial things for like small business type things there is or nonprofits i have looked the organization i work for uses a very uh old project that is incredibly technical and would not be accessible unless you're like a legit programmer uh which is fine if you're getting paid for it but if we want volunteers to work on this and they're not like super militant hardcore uh open source it's really hard to convince someone that they have to learn like terminal commands to bookkeeping so we use quickbooks right now and for real seriously if anyone knows of any open source bookkeeping software or crm software please please tell me because we've been searching uh the best we found was udu which is open core and specifically their bookkeeping software is uh subscription based which is disappointing uh they have other services so i'm not knocking them i think that they're a good organization but what we're what we need for bookkeeping they just don't have um the last thing that we don't have open software for is the keys to our building and we actually use a physical key like a normal key that you would use to get into your house we don't like have a little passcode or a little dongle that you can use to get in part of that is because we rent so like changing the door hardware would be a big deal because our you know our landlords need to get into the building part of it is the question of privacy as well so like we don't want to collect we don't want to know who's in the building when we don't want to know that information we don't even want to collect it we don't want anyone to know that uh another reason is that not all of our members have smartphones so you can't have an app on your smartphone because that will you know enable like some people won't be able to get in the building that way then uh so eventually we would really like to have like a dongle way to get into the building um if we ever own our own building we will probably enact this and then have it uh key to the membership database as well so if someone uh like quits membership removes away we can just turn off their access instead of expecting them to mail their key back in which is what we do right now uh but um if we go to a different place where we're renting again and they have a key fob system it's going to be a lot of hand ringing because we don't want to give our data away to them either so we're not really sure how this is going to play out but currently we're using the old school way and that is how uh that is how we do that at the moment no software that is our answer to that one uh this is about the end of my talk it's been really fun to um i wasn't a linux nerd when i started going to nox makers and i've since like become like fully everything that i own is uh running open software and i really love it um i'm open to questions if anyone has any uh otherwise you can talk to me at the booth or email me at nox makers thank you uh yes question no yeah uh the question was about the space how much money comes from membership versus donations versus grants uh the the long answer is is that our nine nineties are public so you can definitely look that up the short answer is is that all of our um operating costs are covered by membership dues we have enough that we have enough members that like everything we would be fine if we never had any donations or grants we mostly use we've never used a grant for operating costs we mostly use them to get cooler tools so and what was the name of your makerspace kaneho valley makerspace go visit that cvmake.org yeah i'll totally plug anyone's makerspace i love it uh did you have more questions question uh the first question was is there ever tension between linux users and non linux users uh and if we could just do this one thing proprietary would it fix everything well which is what they ask uh and the answer is yes sometimes there is tension um sometimes if someone especially in teaching classes because you get people that are super excited about the projects they're working on and that's valid i'm excited about the projects i'm working on and then they're like but i use x y z and we're like you can talk about the whole thing except don't teach people x y z and yeah sometimes it does cause a little bit of tension uh but we try and have it so that if you do bring in your project in x y z there's a way to get it into a linux or an open software so that you can at least do the same thing that way or pass it through uh an open software like uh the web app to get stuff onto the laser cutter it will take only svgs so i've never actually tried to export out of uh like a different cad program in an svg and load it into there but i'm not sure it works i think you at least have to pass it through inkscape and pass it in inkscape svg so sometimes there is but we you know this is how we are this is how we run and you can make your projects any way you want but this is how we do it here uh and your second question was how do we do outreach and uh it was a very slow burn getting going uh we did a lot of community building things we did a lot of interesting talks we had every tuesday when we did like our show and share we'd have like a talk afterward and like draw people from the community in uh we don't do that as much anymore because our show and share sometimes like will go an hour because we have so many people showing off their projects uh but sometimes we still do have talks um about different makery projects or different things that people are working on so just having a lot of public events uh and advertising into the community and uh being a friendly group that helps a lot too um so does that help i'll come i'll come to your organization if i'm ever in the area again uh yes yeah i think that if we uh the explanation was about their RFID system to get into the building and i think that another thing that we would um another challenge that we have with that is that when we have a trial period where you're allowed to be a when you're a first start to be a member you're not allowed access to the building by yourself for 30 days to make sure you're like a nice human um so if we had a pro a program like that we would want to keep it like normally locked and uh currently if you're a trial member you can just if there's someone there they will have the door unlocked and they can come in and use the shop and whatever so there would have to be some way to for some for it to tell like i'm a trial member uh let me in any way something like that but without giving them full access so but it's a good thought to think about yes uh the question was how do we balance uh privacy and and assessing people's skills so we do have safety classes that we require everyone to take if you want to work in the woodshop you have to take the woodshop class even if you've been working in a woodshop your whole life you have never worked in our woodshop so we do require that and you it's not guaranteed that you pass the class like if you're acting a fool during the class you you don't get to be authorized um we put a very high level of personal responsibility really um we tell people that we don't fault anyone ever for asking a question we are all here to learn everyone has been a first timer at some point uh if you are caught using a tool poorly like if someone comes in and there's like blood everywhere that's obviously a reason to look at the cameras right so and then we'll find out who was doing that uh and we'll have a chat with them um but for the most part everyone that's come in really wants this place to work and is willing to learn and is willing to not mostly uh not use things that they're not allowed to or things that they don't know how to and we have lots of opportunities for people to learn from each other as well yeah uh so the question is how do you balance wanting to do all the projects and making sure that they follow through yes uh sometimes things take a really long time so that's one thing uh I mean like and the other thing is that I think it we have a really good core group of volunteers the board is really committed the area heads are really committed so even if it does take a long time um it eventually someone will pick it up we'll it's not always only one person working on a project you've got a team of people that's sort of like if one person has a family emergency someone else steps in or something like that uh as far as like doing other volunteer things in the shop we have really cultivated a uh culture of like of cleanliness honestly I've been to some maker spaces that are really cluttered and it's hard to keep them clean it really is because like like you said your own shop you can do whatever you want uh but cultivating that volunteerism like if someone needs a shelf built in the welding you just like call up all the people who are newbie welders hey you want to learn you want to do some skill building you want to come out on a Saturday and like do a project um but like the big big projects like the laser cutter um we would want to make sure that it was someone who's going to follow through on something like that if it's a smaller project and we're not sure that it's going to like end up finished any day I mean maybe it just doesn't happen for a long time it's a lot of we're really casual so uh and that's an expert that's a I mean that's what we tell our members as well like there's no customer service here things are not always going to happen in the most timely manner but it's a community it's just how we it's how we go so yeah uh the board yes but also we uh we have our area ahead so each of the zones has what we call Zars and Zorino's that run them they run the budgets they decide what projects to do they decide what tools to purchase so they would sanction something like that um the a lot of our things not a lot of our things are home built anymore unless we find like a super good deal on craigslist or something and it's like something in horrible shape and we like have to clean it but we're sort of in the financial place where we can purchase things uh maybe not software but like machines we can purchase them so you had a question that's a very loaded question have we had any drama or um antisocial behaviors so the 30-day trial membership is sort of how we get around that like if people can't uh keep it together during that time then they don't get to become members and that doesn't happen very often we do have uh what we call peace officers which is like a third party that if you're having a misunderstanding or something you can go to them and they will help you like both parties work it out anonymously if there is like uh a harassment or some other like serious issue we would just kick them out like we don't tolerate um we don't tolerate any of that stuff at all so that's really our policy is uh don't be a dick is our policy sorry it's just yes uh the question is what is the division between volunteers and members and management team uh well ideally every volunteer would be a or every member would be a volunteer like that is how we talk about it like if you come and use the shop at the very very very least you have to leave it cleaner as when you came in like everybody volunteers here everything that is done here is done by us as far as um management team we have eight board members we have one person in charge of each zone and each zone has like some of them have deputy people so like the wood shop is really big it's way too big for one person so he has like small like not smaller but like people under him that like are authorized to fix the tools but honestly anyone who comes in if they see a project on our project board that needs doing go do it I mean everyone's a volunteer that's the that's the answer that I'd like to give is that everybody's a volunteer yeah the question is do we have an issue with people leaving their projects laying around um and sometimes uh we also give the area heads like their own decisions like in the wood shop that's where the bigger projects are going to be in the wood shop electronics projects are you know this big not less of a deal um and he does allow people to leave projects there for a couple weeks at a time as long as it has your name on it and the date and it's being moved forward that's totally cool um there is each of the areas has like a little corner that people might store their stuff as long as uh it's not being obnoxious and honestly as long as it has a name on it and it's moving forward you know people actually get interested in it like oh I saw that last week and now it looks cooler um we do have personal storage everybody has personal storage if they want it so it's just some shelves with some bins on it you can leave small projects or PPE or something like that the first question was do we have multiple levels of membership and the answer was no everyone has the same uh rights and responsibilities we do have different prices like we have lower prices for students or people on fixed incomes um but they still are fully members in every other way how do we keep track if people are checked out on the tools uh that is an option within HacksDB that I'm pretty sure no one uses sorry uh I know that when I was teaching authorization classes I was not using it you can keep track of tickets in um in wordpress and that I suppose if we if we thought that someone wasn't authorized they we would go back and check on that I mean I suppose we should try start trying tracking that which is honor system right a lot of things is done on the honor system um which is another reason why the door access project never really got off the ground is because we thought feature creep we thought oh we could make this not only into door access but we could make it into tool access and then we could put them on all the tools and you'd have to key card into a tool only if you have access but then there was so many questions about safety and like people walking away and like how long does that do work if you code if you like flash your key or something and then it just never got off the ground uh maybe a couple more questions one more yeah uh the question is how do we handle physical accidents or liabilities well everyone has to sign a waiver when you come into the space we have very expensive insurance and I'm happy to say that only two people ever have had to like call for help because of an injury so is that answer your question it's I mean we as we have them sign a waiver that uh you know we basically tell people like this place is dangerous and it is you know it's up to you to keep your own self safe so which is why we require the safety classes and we teach them and we encourage people to ask questions and uh if you're if you're questioning your ability or questioning the tool then back away and wait so I think that's it yes one more the question was is the 30 day policy 30 calendar days or 30 sessions that you're under observation that second one sounds horrible to administrate uh it is 30 calendar days um from the day they pay their dues to 30 days after that and we do also have like a little onboarding session where you have to come and listen to me and one other guy talk about how you know how to be a good member and stuff like that um but it is 30 calendar days and we do but we do require them and ask them to like come and show your face interact with people we've really found that it is the best way to uh you know make sure that they're good humans is to just talk to them and you know get a feel for the space and get a feel for them and like how are you going to interact with other people so um it is 30 calendar days all right I think my time's up so thank you hello can everyone hear me okay that works let's see oh um let's see if that thing works yeah okay turn it off in the meantime um okay hello everyone um I might wait just a couple more minutes to let people come in I think we start officially at 6 15 um is this is this volume okay for the the microphone yeah okay good thank you started oh sorry about that okay um so welcome everyone thank you for coming to my talk today which is creating terrain models with python blender and second life um anyone here familiar with emacs yay anyone here familiar with org mode emacs org mode at least one person that's how I did my presentation so this is actually just an org mode uh text file in emacs with a um something called org tree slide mode so um yeah hooray for open source very esoteric text editors um so who am I and why am I giving this presentation um I am all of the things that it says here uh writer visual artist vocalist musician filmmaker scholar or perpetual student I guess I should actually add a coder to that and then long time explorer virtual worlds um I am very passionate about free and open source software and um deeply appreciative of all the amazing variety of tools that are available to us um thanks to the internet of course and also the tireless efforts of open source and free software developers um there's a lot wrong with the internet with social media and AI and all these things but open source I think the open source movement in general is one of those things that the internet has really um helped to kind of you know push into the mainstream so to speak um I am currently uh my qualifications I guess uh if you want to call it that I'm currently doing an ms in media arts and technology at UC Santa Barbara um which is a very non self-explanatory program it's a very strange program but I won't talk too much about it um and I previously completed an MA in mass communication and media studies at San Diego state uh and also a very convoluted MFA at Cal Arts right up here in Valencia so I did um vocal performance and creative writing as the two sides of my MFA plus integrated media which is the sort of tech focused concentration so very convoluted completely non self-explanatory anytime anyone asks what I did there it's always a long conversation um and uh the reason I kind of started doing these training models of course I've been a resident has anyone here heard of second life raise your hands most people it's not everyone uh but I'll talk a little bit about that and then go into blender and python and what I did with this uh but I've been a resident of second life for 19 entire years which is a little scary uh I joined in March 23rd 2005 the platform actually um began or it was released officially to the public in 2003 I had beta before that so I've been there not quite since the beginning but almost um again very scary so try not to think about how old that makes me um this is just a link to my student bio on the UCSB MAT page um I'm not gonna like read this or go through all the links here but that's just sort of a little bit what I just said um and some of the other things um that I've done there uh and then what I will actually do just to start off start us off uh especially since not everyone here was familiar familiar with second life um I did a video essay a couple of years ago just a three minute video essay um in second life that I'll show and then I'll get into the main portion of the talk my avatar goes past my camera shall not follow as it turns out this divide is at the heart of a question that has driven me for decades the question is this at what point does my presence become less about who or what I am and more about where I am is there a difference for someone else in the same virtual space seeing me on their screen the answer might be more straightforward my avatar is how they know me after all is how they see that I'm there in some worlds or in some circumstances they might even see me as no more than a name the question is far more challenging when you consider that technology has given us so many new ways to know ourselves and to experience our surroundings ways that do not necessarily match our experience in and of the physical world that we're used to in second life for example there's the third person view potentially for multiple directions and a first person mode as well called mouse look while these assume that you're looking either at or from your avatar's position it doesn't end there you can focus on anything in the environment zooming and rotating and panning as desired you can also take advantage of hardware peripherals like a space mouse similar to a joystick but with more axes in order to steer the second life flycam around as I've done quite a bit while filming various videos including my mfa thesis besides the cinematographic freedom involved what I also find fascinating about second life is its mainland of contiguous virtual land masses this contiguity presumes a sense of place and perspective that is at odds with the design of most social VR platforms where smaller worlds more self-contained appear to be the order of the day now this isn't to suggest that second life residents can't simply teleport across the grid at the touch of a button we can and often do and yet the mainland continents still possess a plethora of airports marinas roads and railways even the occasional gas station all of which speak to an impulse toward a kind of realism with many people choosing to acknowledge the virtual distance and traverse it at their leisure in a manner that is paradoxically in contrast to the platform's extremely flexible camera controls is the world itself perhaps an anchor grounding our experience when our avatars and their fickle points of view do not I could talk much more here about this and other worlds worlds which I've explored for more than 25 years and counting but I should probably save that for another video for now and by saying that one of my lifelong goals is to critically and creatively explore a variety of virtual spaces asking questions about place perspective and interactivity and how those concepts come together to define our virtual lives and how we express ourselves so yeah just that's a little bit introduction to some of the concepts in second life again you kind of saw the camera controls are very flexible and as you saw sort of the maps showing there's very large land masses in second life so I will close that so what is second life quite a few of you raised your hands and said you'd heard of it at least how many people have actually used second life or been in world one person two people a little bit a little bit okay that's about what I expected actually but it's still around a lot of people think it's gone but it's still around but for those of you who haven't heard of it where we've never been there and excuse my mouse keeps sliding down here it is a shared persistent online virtual world with many many thousands of people usually there are anywhere between like 30 to 60 thousand people online at any given time of day any given day and it is made up it's persistent virtual world like I said so it's made up of thousands of different regions that are all laid out in the form of grid hence why a lot of times when you talk about the metaphor of second life's world people call it the grid a little bit like Tron's world if you've seen that or Tron legacy and each region is a square in the shape of a square 256 meters on a side and there's actually another resident who's been a long when I say resident by the way that's just the second life terminology for a regular user they're also linden lab employees linden lab is the company that runs and maintains it anyone you see in second life with the last name linden they're an employee of the company there's also a group of independent contractors called moles like the little animal linden department of public works and they do various projects for linden lab and they'll have the last name mole but everyone else is a regular resident but one of the other residents who's been around a long time and she's actually a professional statistician in real life she's run something called grid survey this database where she's gotten information about second life various statistics for including sort of this the size of it and so you can see here as of like six days ago about a week ago the grid had almost 28 000 regions totaling this you know amount of square kilometers and then you'll see that some of them are actually directly owned and run by linden lab itself and others are private estates and you can just see here the only unfortunate thing about grid survey is it takes forever to load I don't think her machine is very good but she has a lot of data so I'll forgive her for that but it will load eventually but just to talk a little bit more about this even when it says private estates those are still basically rented or leased sort of from linden lab the company itself so this is not distributed this is not decentralized there are open source alternatives to second life called open sim or open simulator that is actually an offshoot of second life originally and those can be hosted anywhere by different people you can actually get open sim like a grid of your own whatever size you want on your computer but the second life grid itself which is the most populated again is all is hosted through aws amazon web services run by linden lab so the private estates here that number it's still sort of going through linden lab but it's regions that are sort of paid for by other people oh and here's grid survey has loaded you can see just the the data that I got here and if you kind of go through this endless list you can see regions that currently exist that no longer exist and see various information and then there's also the grid survey api which has various information so and again as I just mentioned in addition to the privately owned island regions in estates they they're called island just because they're sort of separate from you know out in the grid somewhere and I'll show you a map soon there are also several contiguous land masses which are you know thousands of regions in total there's one that's 433 regions another that's like almost a thousand and they kind of vary in that sort of range and they're what's known as mainland or the mainland continents and that's kind of where I started the focus of my project for the terrain models and again mainland is is a special case in the sense that even if no one else pays for that region it'll still be there it's part of that landmass it'll continue to exist and the way that linden lab actually sort of maintains or pays for the upkeep of these regions is that they will lease individual parcels kind of you know land within these regions to regular residents that can do different things with them and again these land masses are known as mainland there are about 10 I would say official mainland continents and then there's balasari in the linden homes which is the largest continent but is kind of a special case because that's one of those areas where I said it's developed by the moles the independent contractors as a benefit for premium subscribers second life is completely free to use but if you pay a premium membership one of the benefits is that you get a free linden home in one of these regions which I'll show you in just a second this is again I'm not the only one who's apparently obsessed with this world this is another resident run project the second life geography institute that has a list of some of the mainland continents here there's a ton of information about this but so this is a list of continents not all of these are actually mainland like I said balasari is kind of a special case the lake sea is an open ocean area not really a continent and these older premium east south south south are sort of the older versions of these linden homes but it's still kind of interesting and then you can see here this is on the the second life official wiki that's one of the senior vps of linden lab going for a skate ride but so this is basically a wiki page about all these different themes and as I mentioned balasari which is currently about 2,500 regions so it's quite a lot has these different themed neighborhoods with like hundreds of houses each in these different themes and as a premium member you sort of get you know you can get a home in one of these neighborhoods and kind of do whatever you want with them so there's I think about 12 themes currently you can just kind of I'm not going to dwell too much on this but it's it's interesting and I will say that one of the recent updates some of these might look a little dated some of them look nicer than others the lab actually just who's here who here's familiar with pbr a physically based rendering so a few of you it's basically a new way to do 3d graphics that's a little bit closer to how things are actually rendered or look in real life using like the properties of the material to be like if it's metallic how rough it is so they're actually they've just done that and there'll be real mirrors and reflection probes and things like that kind of beyond the scope of this talk but again you know kind of looks nice so and then one of the continent size models that actually did last year I started off with smaller regions and then this is actually one of those mainland continents that I mentioned heterosur which is 433 regions so this is kind of how it looks on the world map 2d and then this is all made in blender rendered in blender and you get farther down and then suddenly see you can it pops out you can see that this is sort of what it would look like again the objects that are on the world map are sort of shown there now it's just the you know solid rendering mode in blender but this is how the terrain would look if you could see the entire thing at once at least and so I just did a loop around that this is also called the atoll continent kind of can probably tell why but so this is the first continent sized model that I made sometime last year and I think if I remember correctly this particular model in blender at the original level of detail with the the data that I got from Second Life to do this would have been 227 million triangles my laptop would have exploded if I tried to render the video with that but I decimated each region's mesh so that it's only 2.3 only 2.3 million triangles instead and I've actually I'll talk a little bit more about the process involved in getting this data and using it but when I did this last year and gathered the height data across all these 433 different regions it took about 32 hours to get the data for all 433 regions now it takes much less time luckily because I changed how I gathered the data a little bit so and then I do want to show just before I move on of course it would ask me for this sorry one second as everything has to be secure these days which is good of course you might have seen in the perspective in place video the video essay that I showed that there was sort of a map museum it's called the new cadath lighthouse art gallery I don't know how good the internet is in here so it might take some things a while to load but as you maybe saw in the video there's this place which is a long-running gallery again everything that's gray is basically loading in everything's online textures sort of download on the fly so you can kind of see this is that map you can see someone made there are train stations and railways so someone did sort of a live updating map of certain little automated cars there or train cars on that map and then you can see this is the new cadath lighthouse art gallery with lots and lots and lots of maps of various parts of second life the mainland continents along with other places and this is quite interesting this is from 2002 it's in the shape of a key the original 16 second life regions as they existed back then and then over time more and more regions were added to the point where it became oops sorry someone just messaged me and I'm gonna put myself on unavailable I can't log in without some I'll talk to you later but yeah so and then you can kind of see over here some of the this is some of the bellas areas it's grown and oh thank you very much I was going to actually ask if you guys could see and that probably helps quite a bit so you can see some of the mainland content collections or map collections magic map where you can see any particular region and then I was going to show on the world map you can kind of see also so this is a live updating world map which again because it's live sometimes takes a while to load but so that this continent that you see here which has a sort of an odd shape from like up here to like down here is Bellas area that linden home with all the different themes then you know premium member neighborhoods as you can tell and this is the original continent Sinsara and then you can see Heterocera and there's others over up here so there's super continents and then if you zoom all the way out I don't know how well that's going to load but there's like I said almost 28,000 regions most of them are sort of off by themselves either as individual regions or forming contiguous land masses much smaller than the mainland of course but still maybe someone owns it and wants to make a private estate for whatever reason whether it's a school or some other organization or just an individual with the deep pockets but you can kind of see it get a sense at least of the scale but the question is why did I actually start making these terrain models and as you might be able to gather there's a lot of landmass in second life and the viewer software can to a browser basically but it's what you use to you know be in second life they're very the viewer code itself is open source luckily they open sourced it some years ago so there's the official viewer from linden lab and then various third party viewers that have different features and different UI so and is available for linux as well which is a good thing for me since I'm a long time linux user but regardless of which viewer you use you can only render a small chunk of the world at a time you can't see like that entire continent at once I think the it might be different on certain viewers but you can change your draw distance from like 32 meters away from your camera position up to 1024 for anyone you know developers you'll be familiar with powers of two and you'll see that a lot in second life in various areas like every parcel individual parts on a region is like a maximum of 16 square meters or minimum rather I should say and that goes up from there so but anyway so you can only see a few regions ahead of you maybe three or four if you're lucky depending on your GPU it's a huge world it's extremely diverse and I wanted to basically for myself and for other people both people in second life and who have never been there give a different perspective in the world and be able to see more of the world or more of its land masses at least the terrain than you're ordinarily able to do also I like to tinker and explore different things through sort of project based learning so blender's fun python is fun put them together and try using the blender python api and sometimes it's not so fun because there's a lot of testing a lot of debugging and I I'm still somewhat skeptical of chat gpt and other things and of course I started this before sort of the AI wave really took off so all of this is basically just me digging into the code looking at stack overflow which of course now is probably overrun by AI anyway but but yeah it's it's been a very interesting project how am I doing the time okay I have a lot of time and so the process actually involved in this it's a multi-step process there is a built-in scripting language in second life called lsl or linden scripting language and you know you can give put a script or multiple scripts into any particular object and do lots of different things with it and so one of the functions and you'll hear see here on the just close a few of these this is the lsl portal which is sort of the on the official second life wiki showing it's kind of a c-like language I would say but so it has lots of different functions lots of things you can do related to you know camera movement collisions you know different math you know physics all of these things people make all kinds of vehicles in a cell but one of the functions that I again used for this the main function is this function called ll ground which basically tells you the height the terrain height of any particular point in a region you might notice here it says offset there are some functions that get like partial details or details about the region where you can actually say the coordinates again the coordinates are zero to 256 on the x zero to 256 on the y unfortunately ll ground is a little bit different it takes the height below the scripted object or if you're wearing that scripted object below your avatar so one of the kind of challenges I encounter is basically having to constantly check okay where am I or where's this object as I'm getting the height so that if I move a little bit you know I try to kind of keep myself relatively still but you know you're constantly checking the position but so what I did with this function is I loop across a region and I have a python script on my computer everything by the way another kind of little function here HTTP response anything any object in second life can be simultaneously or either or or both HTTP server or client with certain limitations of course but so the way I actually gather the data in the first place is to have a python script that communicates with a scripted object in SL and basically tells it I want data from this row this x value and then the script in SL will say okay it'll loop across an entire row of x or I should say yeah the y coordinate is what it's sent in and then it goes every half a meter across the region at that particular y coordinate every half a meter in the x axis basically and gets the height and then feeds that data via HTTP to my my computer as just a bunch of float values I can show you here what it looks like this is a particular region called Cormac so this is 513 lines of just tons and tons of float values again every half a meter getting the the height at that particular point and then some sort of preliminary data about that region that helps me when I want to reposition them in blender or in world so what did I just do so there's a lot but and so that was a challenge of course in itself to try to figure out how much data can I actually send by HTTP to my computer from SL on every pass through and when I said that it took 32 hours to gather the data for heterostra last year I had one scripted object that was just doing this now I have I think one object that has what's called a link set when you have multiple objects linked together each of them can have a script so now I actually have it in parallel so the Python script is sort of doing I don't who here is familiar with Python by the way or okay quite a few do you know async or async I know there's that and I think I actually looked at that and I wound up doing I think in a threaded version instead that basically is able to I think in like seven or eight threads get data from different rows which saves a lot of time by being able to communicate with multiple objects in second life and not rely on that one HTTP connection which is sort of a bottleneck after that I can make a list that of different regions that I want to gather data for that and then the script can actually the script on my computer can look at this list and then communicate with the script in SL and say okay I've gotten all the data go to this region at this set of coordinates and then the script in SL will teleport me automatically usually it runs pretty smoothly occasionally get teleport fails in second life and then I have to not restart the process but restart from where it left off for where the teleport failed but usually it works pretty well um you can also download the those map textures that you saw in world um thanks to taiki shepherd's grid survey and there's some other people who have this every texture every image most every object actually in second life has a uuid a universal unique identifier um and sort of the textures so these are all sort of publicly available um and taiki has the uuids for these map tiles on her site um so I download them generate region models using blender's python api apply the textures part of the script can also decimate and reduce the the complexity like I said it was like down from 226 million triangles to however much I said um and then export them as mesh objects as colada files that you can then upload to SL uh and then I have another lsl script that can reposition these uh and apply textures to the water terrain and the water which is a separate um it's called face in second life but it's basically a different material uh for the water height uh and profit not really I haven't made any money off this but it's a passion project for now so uh maybe at some point how am I doing okay um so um what I'm actually going to do now just since you've seen a little bit about the process that uh is involved uh and what I've done um hopefully no one's gonna come in here and wonder what's this person standing in the middle of the floor so I'll just put myself in afk mode um where I'm out of the way uh so I'll do a little demo of blender and then I'll show a few more things and if you have any questions I'll do q and a toward the end but also feel free to stop me at any point um if you have questions about anything uh and I do not have blender open yet okay so one second so here is the blender interface it's amazing and what people usually do is they open blender and then they delete the poor default cube um poor little cube um but so if has anyone here actually tried using blender's python api not really okay good that's I mean you know hopefully this inspires you to do something with it anything I find blender um there's a guy some of you might know named Andrew Price or blender grew um I've he's like talked about how with blender there is a lot of complexity there's a lot in the software but he uses what he calls the 80 20 rule that I think uh let's see if I say this right that he uses 20 percent of blender's features 80 percent of the time so again even though blender's extremely complex you're not going to use all of it I mean for most projects you'll use a tiny portion a big part of the learning curve is just getting some of the shortcuts into your brain and I'll talk about that too but so if you have not used blender's python api you can see up here on the right I hope that's maybe a little hard to see well up here um there's something called scripting tab in the default sort of layout and you click here and then here's your text editor another view uh viewer area uh and then here's the blender python console and this is extremely useful for getting started with blender's python api I'm just going to maximize that uh and then you can zoom with the control wheel so that's a little bit easier to see um but so this is where you can test out things um see if they work see what you need to put in for commands and then you can kind of write them down in the text editor and and kind of run them so one of the things I'm going to do right now just to kind of show you what you can do um even if it's is pretty simple I'm going to delete everything so I'm going to create let's say basic text objects now I don't want to have to go into edit mode and actually you know say something there I just want to be able to change it and maybe I have a script maybe I have a text file of strings or something that I want to use um I'll just like that um and what you can actually go and do um this this is where sort of the learning curve for blender's python api gets involved because um everything in blender is basically on the back end this this hierarchical series of data blocks um so there's a lot of like dots involved so for this if I type this open so oops that's the wrong the the focus follows mouse gets a little bit uh tricky sometimes but so bpi dot data dot objects that's sort of the hierarchy under which the objects live and then if I hit tab you'll see there's only one object in the scene right now it's text and so let's say I want to actually change the string like the actual text that's showing then there's another dot another data again things get somewhat long here sometimes and then body that's currently the so if I hit equals hopefully everyone can see that um and let's say um this is only a test and of course I hit I forgot no I forgot the quote um and look it's been changed just like that uh another thing that you can do is actually change uh in it oops um in addition to that you can also change something uh data dot extrude let's say right now it's uh zero there's no extrusion it's a very it's like it has no volume to it let's make that one oops uh and then suddenly you have something that's actually quite large um and then if we delete that then uh one of the other thing oh actually let's not delete that for a second um and you can go to this mouse movement is not helpful um you can actually go to the location of it so like if we go let's say it's not data now now it's just the object itself because we're not looking at the data of the text object we're looking at the object itself um and see where its location is okay that's you know it's kind of at the origin let's change it to one zero two now it's been moved up around a little bit now the other thing that you can do of course and this is sort of where um I'm getting into sort of the the way that you can make it easier on yourself how to find things is if you go let's go to the main screen here if you go to preferences in uh in the interface tab I'm sorry this isn't bigger but uh on the interface tab in blender as preferences there's a check mark here I already had it checked but it's called python tool tips if you can't see that it's right there um python tool tips and now what happens is if you hold let's uh actually bring that back text if you hold your mouse it's over here in the properties thing and you hold it over let's say location x then you're gonna see it says this is really can is that really blurry I get yeah well I'll read what it says so it says location uh location uh of the object and then ordinarily what you don't see but what is now there since I enabled that checkbox it says python object dot location and then it'll say b pi dot data dot objects text location zero because it's the the x coordinate what you can actually do there because you don't have to remember that you just right click on it and then hit copy fold data path if you do data path it's just gonna say location but you can either do shift control all see again these like massive shortcuts but uh or just right click and then now if you go to scripting and you hit then you've gotten that and that's the x coordinate uh for that so you can do that with pretty much any sorry um any property like that or anything and if it's a menu or let's say uh we wanted to add let's say that we wanted to add a new text object um usually would go out there up to add text or shift a for the same menu and text and again if you hold your mouse over that then there's a be a blender python operator called b pi dot ops dot object dot text add again we don't want to have to remember that if you right click there's no copy but you can so it's a little different when it's a menu item here you can just hold your mouse over it and hit control c and then you go to the this and now text add and now if we and we've added a new one and you can actually do if you actually remove the parentheses the ending parentheses on that and hit tab it'll give you some parameters that you can actually use so like the radius look initial location alignment rotation you know and you can do this pretty much on any function just remove the last parentheses hit tab it'll kind of autocomplete the other things that are usually optional but that you can actually um specify if you want um so that's a simple text object now let me find our presentation um so the parameters uh one other thing besides enabling python tool tips that's extremely useful in blender is if you the menu search which is either up here in edit and menu search and then you can see here or not really uh but it's f3 so if you had f3 pretty much anywhere here then you can actually search for what you need to to use and the nice thing about blender's menu search is you can actually type in the shortcut itself you don't have to know if you let's say remember a shortcut but you don't know what it does let's say I had f3 it'll say oh edit menu search so it actually knows the shortcuts you can search by shortcut or by the menu item uh and find things that way um and you can even in this menu search hold your mouse over it to again see sort of the blender the python api so the command that you would use for it uh which is extremely cool and then again control c to do that um one of the things just uh to be aware of actually is let's say we go back to this uh the default cube and let's say I wanted to change one of vertices so I'm actually gonna I don't need the text editor um so let's say I wanted to change this is um now there's several objects because I use the default one but so it's the cube um if you're gonna change the vertex there's a difference in blender between an object and the mesh the mesh is the data is data that sort of lives underneath the object so if I did this sort of cube object and then dot data and hit enter you'll see that its data is something called bpi dot data dot meshes cube which in this case the mesh has the same name as the cube that's just by default but you can change the you can change it so up in the right side if you hit the little arrow you'll see that underneath the cube is a mesh called cube but we could actually hit that and f2 and change it to whatever you want below the mesh is a material that's assigned to that so there's all sorts of data under the hood that you can find in blender it's just a matter of knowing where to look but so in this case if I wanted to change the let's say one of the um sorry the uh if I wanted to change let's say the mesh data of this cube you hit vertices um and then it's a list so you would take let's say zero and then say that we want to change the coordinates uh it's dot cove for coordinate um and then we want to change that to let's say five two three and then see what happens and that's kind of interesting now the thing is though if we if we do that one edit mode nothing's gonna happen so that's one of the kind of gotchas with blender is you know besides finding the hierarchy um if you're gonna change things about a mesh you have to make sure you're in object mode so if I try to now change that again I'm changing one of the vertices to five two three hit enter nothing happens and if I tab back out into object mode nothing actually changed so if I go now let's say again says it's one one zero I try again and change oops sorry change it to five two three if I hit that it'll it'll change it but it won't actually apply so if you get the coordinates for that vector um it'll say the new updated version but then as soon as you go back into object mode and try that again it's back to one one one so when you're changing vertices um or anything of a mesh that's something to be aware of um one of the other things actually to be aware of with blender uh and that comes into play a lot with um blender's python api is there's a difference between selected object or objects and the active object as far as I know there's always only one active object but you get a multiple object selected and just because it object is selected doesn't mean it's active just because an object is active it doesn't mean it's selected so these are one of the the weird little gotchas so like this is a command that you would type in uh in blender's python api like you the view layer in the context um again this will all be sort of on the youtube um the video hopefully later and if anyone wants these slides or this this text file actually uh let me know after and I can send this to you but so um that's how you would change the um the active object by hitting equals and you can't just put the name of the object you have to actually give it so like let's say I want to not now the light is the active object because it's that kind of deep orange um over here but if I want to make the cube the active object then I have to go like I said uh the context view layer um dot active oops oh no objects dot active again uh easy to get lost in here and if I just do cube it's gonna say expected an object type not a string so you have to actually give it the data path to that particular object which in this case was bpi dot data dot objects um cube and then if I hit enter it's hard to tell but in the properties window up here it is now the active object so that is something to kind of be aware of um also there's another thing in preferences which is quite useful if you want to actually see like if you're trying to change a particular vertex in blender and you want to specify you know you want to know let's say um you know this vertex right here what what how would I access that what number in that sort of vertex uh list with this p there's another option in preferences um kind of above in interface above python tooltips I wish this were clear um but it's called developer extras and then if you have that checked and then you go into edit mode and then up here which is again is extremely hard to see I'm sorry but this will be on the video it's called mesh edit overlays and there's now a little thing that says developer and a checkbox this is indices and if you have them enabled it's a little hard to see it's easier on my screen I think there's a setting somewhere to change the font um but I don't know where but now if you actually look at it at least on my screen you see that vertex is number six you know it goes starts counting from zero um zero to eight on this so you can see that and again if we actually let's say we created a mesh grid um where's grid that might be a little easier to see you can kind of see at least there's like a little blue number hovering above each vertex saying how you would access that particular vertex uh using uh blender's python api so uh a couple other things to be aware of um as you might have noticed my mouse keeps sliding um so in blender everything I don't know if there's a way to change this maybe in the underline code if you rebuild it um uh everything sort of follows mouse so like when I was trying to change something in the console my mouse kind of scrolled down to this like message area or if I want to do something that requires me to like have focus on the the kind of the view mode here the what do they call it the viewport um you just have to make sure that your mouse is where you need it to be that's a big big gotcha and something I've encountered a lot um there's some cool console and editor shortcuts as you might have seen if I do control and then mouse wheel you can kind of zoom if you want to see um higher and there's also some shortcuts available in the menu uh for deleting the line clearing everything going backwards in the history uh so that's extremely useful uh one of the things to notice is when you have the text editor let's say I make a new um you know thing here uh which I can also make bigger if you're testing scripts in the blender console over here you do not have to import the bpi or blender python module if you're writing a script in the text editor you do this is sort of built in um if we restarted blender it would say sort of the top that certain modules are already sort of pre-imported but if you're going to do something uh in the text editor run something you want to save and run a script for later you have to import bpi um and any other modules that you might need um and one other thing to note you can actually see like if you were to use um like print statements in python either in the console the text editor you might wonder where those go like are they going to show up here in the console they do not um on mac and linux running blender you have to run it from the terminal and then anything that you kind of get sent either to error or you know other sort of print messages and things like that will get sent to the terminal on windows I think there is an option somewhere in the menu to sort of have this kind of console or extra console show up but again if you're going to sort of if you want to print things or you want to have information then you know start blender from the terminal and then you can kind of see like certain it'll it's reading the preferences we can say print um hello scale it'll print it there oh i might be wrong oh no okay it's it will show up there if you're printing something like that but if you're doing it from a text editor uh from like a pre-written script it won't show up in the console but it will show up here in the terminal so uh that's why and then I should probably close blender the right way but I didn't um so I don't have too much time but I will just uh go um any questions so far okay so I just have a couple slides left so um I'm still here and there's me coming back from AFK mode um so as I mentioned heterostria was the video I made last year this is um Belis area that linden homes continent which as of January 20th had 2541 regions extremely large now it has more because they're adding to some of the themes this only took 18 hours to gather the data still seems like a lot but when you consider that the heterostria continent which is about a fifth of the size took 32 hours this is a big difference also changed how it generates this would have been 1.3 billion triangles at the highest resolution now it's only 13 million I recently upgraded my laptop's ram to 32 gigs of ram before I was at eight um so this is basically just another little camera moment this is in blender uh or rendered through blender but you can kind of see some of these areas are maybe not as easy to tell that it's actually a landmass and has topography unless you're up close or below but you can kind of see in the distance some of these mountainous areas uh that's the log home theme again you can kind of tell I've been in second life way too long um I know way too much about the world itself and the people and things you can do but there's a lot you can do with it and I think it is actually very cool for tinkers like historically that was kind of second life's claim to fame that it was live you could build in real time script do various things have people see in real time what you're making um it is a cool world to develop in actually in different ways so that's that video and then I will actually show so this is sort of smaller like the way I actually did things before when I've generated the models is I would actually use those numbers and those data files you saw to build a mesh vertex by vertex by vertex adding a tool list connecting faces manually between those vertices and then there's a command in blender's python api called from pie data which can generate meshes that is one way to go for a lot of projects it's a lot slower I realized so now what I actually have is I pre-created this sort of grid mesh that has 263,169 vertices I think so it's 513 513 um and so basically now instead of creating a mesh vertex by vertex I'll just duplicate this mesh and then have the python script take the data in those text files and change the z coordinate of those vertices much much faster much easier um I don't know why I did that do that last year but again it's a learning experience uh and so this is uh the wastelands this is I'm guessing them under the material showed up okay um so this is a small private like post apocalyptic themed estate you can kind of see like the flat part is um sort of the water face which is an extra set of four vertices just a simple plane um and one of the neat things so I won't actually it takes a little bit of time so I won't show it generating them because there's nothing really to see but um and then there's also um I'll just open the so this is actually the script that generates that so you know picks where the files are imports these things gets the coordinates for the region so it can figure out where to put these there each region is an individual mesh object so it um positions them according to that um tells me how much time it took um and you can see here that sort of object active uh in order to decimate so like modifiers work on the active object if you're adding a modifier or changing it you have to be the active object um but certain like for example you know if you're going to duplicate something it's the selected object or objects so that's one of those things where it gets a little bit confusing and you have to be aware of what you're actually doing selected versus active so uh but that is what that script ran created this then there's a one to uh texture the models um which is sort of uh this and again if you have any questions about anything with this I know it's kind of a lot to to look through and I'm rapidly running out of time but this is to texture the models um and then I'll just show one thing actually live in here there is a script I made um in Second Life you can actually see like if you open the world map you'll see the world map textures which are sort of the terrain with not all but some of the objects sort of kind of baked into the texture uh as you can see here and so that's sort of the standard view that people are used to with the map but um thanks to Taiki Shepherd's grid survey database uh you can also get UUIDs for the terrain only or terrain layer textures so if I open this texture change I think that's correct uh you can kind of see here so I just very simple imported BPI um for image this is sort of the the data path where the images are stored including textures um you know just replace something this is all sort of here uh I have in that folder I have the terrain layer textures with terrain only and world map so if I run this either this little play button or just alt P then suddenly this is showing the terrain but no objects um so you know you can you can do a lot on the fly with that let me see where am I in terms of time I already showed that oh and so there's actually right now it's kind of interesting I had two conferences at once because there is something called the virtual world's best practices and education conference uh which is going on this weekend as well um I'm not presenting but I do have an exhibit so this is I believe the 16th annual or 17th annual maybe um and so in addition to the various presenters it's basically different professors educators who use virtual worlds not just second life but any kind of virtual world platform including social media to teach um and do various projects so in addition to the presenters there's different panel discussions posters and then also various exhibits said in this kind of biome theme so I actually have this very simple little exhibit which you can see here um as part of this you can see I don't know if anyone else is here um it's so this is the conference area that's uh one two three well a few a few regions um and so this sort of biome area this is the parcel uh that I made an exhibit on you can see my avatar in this and so these are sort of examples of imported so like you can see here this is with the object layer or the I'll show in the terrain layer and so the I have not yet imported um or uploaded mesh of these continent size models because that would take a long time and you have to pay to upload mesh um so that would both be expensive and time consuming but I will at some point these are the original 16th second life regions I mentioned that existed back in 2003 so you know this is just a little exhibit for people who happen to uh walk by um and see the different exhibits um and then also one other thing you might notice that this um this vehicle sandbox area which is on the original continent sinceora can also be made extremely big um or larger I could have actually made this larger but everything in second life has land impact which is kind of how they calculate resources in terms of like land is has a particular amount of objects like if I look at this parcel that I own which is uh fairly sizable actually I've accumulated some land here over the past couple years uh this the capacity of this parcel is um 9283 that is not objects that's land impact more complicated objects in terms of the number of triangles or textures or if they're in physics enabled will have a higher land impact um and so this particular model this link set which is this group of models is currently a land impact of 1578 I think it was only like um oh I can actually check it was uh scaled down it was how much 23 land impact so you can see that going from 23 up to like 1500 when you make objects bigger it's basically because uh in terms of draw distance and where people are rendering from it it has a it's more taxing on people's GPUs because they'll see it from farther away the bigger an object the farther away you can see it in higher detail so that's why they raised the land impact to try to kind of um do that and there's no physics on it and right now I just have a um invisible uh platform underneath it so I can walk around on it but I could walk through the mountains or do whatever I want which is kind of cool I had a friend of mine put a little uh Godzilla avatar and walk around on here which is kind of interesting um I believe oh so yeah and the future improvements you can see down here I want to optimize the scripts a little bit further uh also in blender you can also with python um see the coordinates for the bounding box of any object so one of my plans is to actually use that in order to automatically generate these kind of little display cases that exactly fit sort of the height and and um you know all of that the shape of these are just ones that I've made in second life uh you can res things in SL like cube sphere different things and then uh change their size and shape and things like that so that's just what I did for these display cases but I want to do that uh in python um and there's some other things I want to do to improve the the process itself um these I know are probably not things you can write down immediately but like I said it will be on the uh the video live stream and also if you want um I can email you these list of links these are just links to some of the blender python api documentation uh some of the things I talk about with the gotchas tricks um you know some uh questions about working with mesh there is a module that's actually separate from b pi for working with mesh more directly it's sort of how blender handles mesh internally and that's called b mesh um I haven't gotten into that as much uh it might actually be something I want to explore further but it's basically gives access to a blender's internal mesh at an editing api there are certain functions that you can use there that you can't do things you can do with that that you can't do with b pi um but again I haven't uh dived into that as much um and then some things uh you know if you want to check if an objects exist just some uh stack exchange or stack overflow um things that have been helpful to me uh and of course Andrew Price blender grew his famous or infamous doughnut tutorial uh updated for blender for parno some blender traps the video that's useful um and then some other um blender docs about um you know the data blocks in the hierarchy and as I mentioned the command line is some things you can see in windows I believe there is um oh yeah window toggle system console but in mac and linux like I said to see the output of the text editor um you have to run it from the terminal and then this is actually for some of you might know this if you're familiar with python already this is actually one of my favorite sites for learning python um real python dot com I'm not being paid by them I wish um but they have a lot of really well written articles and especially these days sometimes it's hard to find articles that weren't written by an AI um and have like a bunch of SEO cruft um but so this is actually all curated written by humans maybe with a little help from AI who knows but um yeah real python is is really useful for um you know python of any kind um and I think that is actually it so I have about 10 minutes or if you want to stay later uh for questions or comments or suggestions or complaints um so yeah thank you very much any any questions about second life blender python meaning of life so you said um show of hands again uh a lot of people were familiar with python who had actually tried blender's python api a little bit okay so most of you hadn't so I mean hopefully you can kind of see that they're you know you can start off small you can just work like with individual objects like you know a text object let's say and just sort of experiment and and get going um there's a lot you can do with it and like I said I think that for me I never would have like this was this project had nothing to do with my school work like I was I had already started this before I got into this media arts and technology program at UC Santa Barbara this was just my love of second life of places of geography even virtual geography so if you find something that you know you want to do something you love it could be anything that you know maybe involves python and blender something you want to do in 3d um you know just dive in get started and um like I said there there is that learning curve but there's a lot of ways to find your way in and hopefully this sort of um helped with that you know so inspire you guys to experiment um any questions yes uh I have I don't know where on my hard drive for salt state drive they are right now because my my file system is very unorganized um my inventory and second life everyone has an inventory of objects mine is also very unorganized I don't know what that says about me um but I have actually yeah I've done um uh I've done some sort of not like as involved in this but it's uh it's kind of fun to play around with and do different um trying to remember where they are now every I usually use my desktop as like a working space and then when it sort of starts to fill up visually I'll just be like oh let's create a new folder called desktop files January 2024 and like shove them in there and then shove them in my home like folder and then I'm like oh when did when did I work on that is it you know was it last year was it like which you know which month and then I'm like digging through so I really need to organize it um but yeah and there's a lot of um just even just playing with modifiers like even just picking the cube object adding you know various modifiers to it playing with the cloth modifier and cloth physics and blender doing different things like there's a lot of really um fun time-wasty things to do in blender that eventually sometimes you know you're like oh this is actually kind of cool you're just playing around you're like oh maybe I'll save this and save it as a render or whatever and and use it as visual art so yeah it's um I have but I wish I could show it if I could find it um and yes that is a very very good question um I'm not sure actually let me see um I mean Andrew Price like again you he's not changing blender itself to be simpler but um it's like his tutorials are really good and he is talking about the shortcuts he he goes into things at a fairly basic level yes the rest of the UI is still there um but I mean there are you can customize blender's UI and like actually remove tabs and like um change sort of the default actually if I go into it there's something called um if you go up to file I think it's in file uh defaults save startup file so and then load factory settings is there too so if let's say I didn't want to have blender create the sort of default lighting camera cube setup I could delete that and I'm not going to now but let's say this is how I want it to look when I start a blender then I can go file defaults save startup file and there's also a little python thing bpi operator or ops you know all that um then the next time you open blender that's what it's going to look like so you could actually go through and like you know let's say delete this tab the scripting tab you know you don't need that you don't need that you don't need uh you know all these different tabs so you can actually do that and then save the startup file so that kind of helps um kind of a longer process if you kind of do it yourself there might be people who have like themes like that that you can download but um yeah that that is uh one way to make it a little bit less uh daunting I guess any other questions yes yeah yeah uh yeah yeah like a displace like a displacement texture image map like that yeah I um there is something in second life called a sculpty which is I forget when they first released it was like more than 10 years ago like initially the way you could build in second life was just resin and linking and modifying these primitive shapes um you know spheres toruses etc um at one point they added a thing where it's like a very low resolution image that sort of does this displacement map that applies to a prim and then it kind of changes the shape and world but it's extremely low resolution I don't know if it's like 64 by 64 max um in terms of the size of it or something like that um the way I actually initially thought of doing train models was that there's something on the second life marketplace um I hope this isn't going to give me something adult rated on the first page um yes it is sorry never mind I knew I should have okay sculpt studio this is something um this is not real money by the way I work it is real money but that's not in us dollars one us dollar is equivalent to about 250 linden dollars the in-world currency which is real currency that you can exchange back and forth so this is um 20 something like that but anyway so sculpt studio there's a feature to do that kind of thing where you can go to a particular region say oh I want a sculpt map of this and it'll do that similar process to what I've been doing but again it's much lower resolution um and I guess I could have made there was something cool for me about just having the list of numbers like the float values I'm sure there is a way to in python create like a high resolution texture that would make that a sort of this displacement map but for me it's just been easier I think to actually modify like the height values directly rather than applying a um plus actually I think with the displacement modifier and blender they're sort of that scale so we're like you know you say how much it'll affect the object in the mesh and I think just for my own sake to have it be as precise and as accurate to what you see in world as possible um is why I wanted to just be able to control the height of the mesh like precisely have it be exactly the height it was um in second life rather than have to kind of figure out the scaling on the modifier if that makes sense no yeah it's literally just like so for example uh too much is open um it's like here Fort Stygian so yeah like these are so like the like 67.899 that's in meters so that would be the lower let the height of the point that the lower left of that region and then again goes across and then goes up um there's no scaling applied it's just well um I see what you mean when I import them into second life there's another part of the script that will like when I generate the models it creates a sort of life size so to speak or second life size but I do have part of the script that will scale it vastly down so instead of it being like 256 meters in blender it'll scale it down to like half a meter on a side per region so that when I import it into second life you know it's it's more like um you know this size um that's yeah that's scaling the object itself down um not necessarily the height or anything so yeah exactly yeah yeah it could be I mean like I haven't experimented as much with the displacement modifier one of the things that would be interesting to try as well um to have other people be able to use this in different ways I could try to generate you know displacement images or maps from the python script um that might be something to do down the road and see what people do with that yeah that answer your question sort of okay uh any other questions anyone want to since we're here and no one's kicking me out anyone want to tour of anything in second life this is the yeah if there are no more questions I'm uh is anyone here about to kick me out does anyone here work for the convention no okay um I will actually then take you to one thing which is very cool called void they it's a store um sorry this might be loud this is a store called void ink um and when I first came here it was a little bit different now it's uh I'll just fly because it's faster um I'm gonna lower the volume because some of these are a little bit loud they have something very cool called the dreamscape simulation engine I think that's there there's also boats down here if I went um and and sat on that um it would actually take me across so yeah that that's scripted basically this is sort of like a collision thing so it detects that there's an avatar there and then you know moves the vehicle across to the other side I don't really feel like waiting for it so I'm just going to fly over but so this is let's see if I can find where they have it they again they remodel this so oh dreamscape so just to kind of show you what is possible scripting beyond just you know making train models this is actually I'm gonna make you can also change me to the UI disappear so um so this is and if I get closer to the center something will happen yeah so it's a little sci-fi cool and the read like it's not doesn't just look cool this is basically like a holodeck almost that they've made so if you click on the center object um it would help if I had the UI then you can spawn a scene of some kind let's say I wanted to I don't know all of them oh nexus is actually my favorite so all of this part is unnecessary but they just wanted to script it to I'll go into mouse looks so basically behind the scenes is it creates this particle effect um reses a scene around you which if I were in the center would be more interesting and so that's you know this is something you can actually buy from this store and res on your own land res basically means to make appear in the world it's a tron reference I think and then you see that little thing so it's it's basically a scene reser holodeck and they have one that actually called the world seed which does the same thing for I'll actually show you that just as the last part the world the world seed is basically the dreamscape simulation engine but at the size of an entire region you can see this is only one region 256 meters on a side the one below it is a ghosted region it doesn't actually exist there's no name um I don't know why they haven't fixed that yet it's on the opposite side world seed okay so this is the same principle as the dreamscape simulation engine um just a slightly larger scene and let's say um I don't know which is which here I remember I've seen some of them but let's try a kit something should be happening the egg cracks and then this one takes a little bit longer like it'll actually show in the chat bar this is launching systems and then I think it gives you like a percentage this is all very unnecessary but it's cool beginning materialization I forget how long this takes maybe like 10 percent doesn't take that long but it does take 20 percent okay so it's basically it's at this particular height I think we're currently at uh 2400 meters up you can build in any like assuming you have rights on that particular parcel or land you can build up to 4096 meters in the sky so a lot of people will build like sky boxes you know they might have something at ground level and then do something else in the sky um the most annoying thing on mainland is when someone has a sky box that's like 100 meters up in the sky and you're going by and you can like look or you're going by on the road and you look up and see all this clutter um in the air which is somewhat annoying but that too is part of the second life uh but so in this particular case they have the main store at different heights and then they have the world seat this 2500 meter elevation so that then when they res out like the entire region scene um from the world seat then uh it's not interfering with anything else at the different levels so it's 70 percent anyone have any questions while we wait come on go faster but yeah it's basically like I said it's this object contains um or maybe one of the other objects contains like sort of all of the the pieces of the scene that it's now resing out around me which is it but so like as it's waiting it's basically putting everything out there and then when you end it um it'll you know take it all back to the objects inventory so you as an avatar or as a user or resident have you know an inventory um and objects can have inventories too and again inventories and an object can be like you know the script running or not running if you want a scripted object 100 percent you might be completely underwhelming but no this is not it I'm waiting for the rest of I'm waiting for the rest of the particles to just oh there we go yay okay it was actually kind of cool um and I'm actually going to chain in um in this particular viewer can just type dd for draw distance um so I'm going to make my draw distance up to 300 just so I know that it's resing everything uh but yeah so this is kind of cool no particular point to being here but again like people a lot of people um like to do photography in second life uh flicker is absolutely like swarming with um like different photographers some of them extremely talented um a lot of machinima artists or videographers doing films um I actually have a friend who um made a kind of a blade runner esque feature length sci-fi film too now actually it has a sequel um the past couple years um and then was at film festivals um and it's entirely filmed in second life um it's it's impressive what it took him like 18 months to do the first one and again it was all filmed in a cell he had other people being the avatars and doing the voices and he had written the script he's also written and published um like several detective novels set in second life that you can find on amazon his name his name is huckleberry hacks it's one of those like typical second life names but so um you know he's an example of someone who might let's say uh come here and decide oh this would be a great film set I'm going to use this particular scene for my next movie or you know some other kind of project and then you could do that you could go here again you can kind of um as you saw in the video essay I have it actually with me if anyone's ever seen one of these like the space mouse it used to be called a space navigator but this is basically just this little six degree of freedom you know joystick which if I plugged it in uh maybe I should plug it in actually um the preferences but uh that is basically one of those things where you can control the camera completely independently of your avatar I think it's in move and view it might not be enabled um oh there we go 3d connection space navigator for notebooks so now if I use this um and here's my avatar mouse look whichever I tap a little shortcut key and now I can move my camera and my avatar can be anywhere doing anything um I can actually do a little uh this is a very weird gesture but bear with me and if you hear if if you go closer you can actually hear uh it's the most ridiculous thing a lot of I've seen people who communicate through gestures and gestures are basically an object that you can create that can combine um animations for your avatar sound um or uh text chat will replace what you say and there's a you can assign shortcuts to it but so while that's running I can actually just move the camera around um and be and you can like I said do forward and backward left right up down um pitch y'all I don't I don't have roll enabled currently you can deactivate axes um but and you can also change the scale uh value of the movement so there's keeps going um so like here you can it's what's called the fly cam so if I let's say change that to um 30 on the x axis 30 there and 30 on the z and I'll leave the other ones um then I don't usually hold it standing up moves a lot faster anyway so as you can see this is extremely useful for not only getting a sense of the space you're in the world um getting good shots for photography but also filming so you know um there have been experimental like I said the the viewer software is is open source and there's various third party viewers I'm on a third party a viewer called firestorm which is the one that most people use there was or is I think an experimental VR enabled viewer for fire for firestorm um the good and bad about second life is that everything is made by or most everything is made by individual users many of which do not have the knowledge or skills to optimize things properly um which you know is is not really a judgment like everyone kind of starts at the level or at but because it's sort of this hodgepodge and mishmash of uh user made objects and because of course the rendering engine is like what 21 22 years old at this point um the frame rate you know you have to have a good computer and even then sometimes it won't once run super well so there's the risk that if you're in VR in second life and you're in a very heavy or low frame rate laggy region or if there are a lot of avatars avatars the way they're built and like the closing clothing and the mesh that people wear that can be a big thing so like right now I'm getting an fps of 75 which is great if there were like 10 20 30 people in this uh region it might drop significantly so having said that if you know if you use the experimental VR viewer the frame rate you get might not be uh you know you might get nauseous um but but there are work they are working on improving things like I said even though this looks fairly impressive um I'm the firestorm version that I have is not pbr enabled so like I said now you can do reflection probes mirrors uh physically based rendering like textures they're switching from collada uh or you can still do collada imports but now they'll be able to do gltf or the graphics library transmission for I went underneath uh format to kind of smooth things along um so they are like constantly working on improving it but and it they they're working actually right now on a mobile viewer so um I think premium plus subscribers there's like an alpha or beta version that is available for android and ios and that's something they're hoping will bring in a lot more users um and even just you know people who are existing residents being able to go in world when they're out and about and check on things so mobile viewer first and then maybe you know a couple years down the road maybe they'll be able to improve rendering to the point that we can have um vr in the meantime vr chat if anyone's used it is is a very cool platform has its issues but it's uh has anyone used vr chat it's yeah I I know like it and removed a lot of the the mods are like the things that are made it um they do seem like in fairness the company behind vr chat to be adding a lot of the things that were sort of disabled by easy anti-cheat but um it's a cool platform but uh there I from my own in my own opinion I'm not nearly as much in vr chat as I am in second life clearly but um I do think that vr chat has incredible potential in what people can make and have made uh and the community there if you can kind of look past the sort of surface level and sort of the public world there's a lot of really cool things that people have made so um any other questions I think by the way there's it's 7 30 right now there's game night in the expo hall or the exhibit hall rather at 8 30 or I think it's now for the family game night and then at 8 30 to 11 30 there's uh no second life but there will be games I guess so any other questions any last questions before I log out and or you all just happy to see me camera around this area maybe I'll put the world seed back to where it was if I can find it so the next person can uh I mean anyone could actually come in here um and change it back to oh there it is okay change it back to how it looked before come on is it no I'm oh there okay remove let's see how long it takes to DRes that was actually quick so basically it detected that there was an avatar there and then had a little platform like the physics enabled to push me up people make elevators in second life like vehicles like elevators are kind of pointless you could just teleport but people make very realistic all kinds of things that are completely unnecessary but uh that people like to do so um anyway that's my talk sort of extended beyond the time that I had but uh thank you so much for being here and if you have any questions or want to talk afterward or you know thank you oh and yeah if you want to email me by the way if you want actually the slides my email is just my last name at ucsb.edu so if you want the links to the the stuff I had like the different links or the text file itself just feel free to contact me as well now I should probably see who is messaging me during my presentation in second life and see what they want