Fourth Inquiry: Rough Idea

Here’s the rough idea for my fourth inquiry: I’m gonna draw.

 

My overall goal is to produce 5 well-made drawings, and complete a drawing course from Udemy. (This one)

I’m consulting multiple resources in pursuit of my goal, not just Udemy’s drawing course. There’s a reddit community called /r/ArtFundamentals and its associated website, people whom I’ve previously met that have helped me to draw, as well as a large sample of artistically-inclined students at our very own school; These are all resources which I intend to make full use of as I continue with this project.

There is the question of what constitutes a “well-made drawing,” and I feel that my criteria for such a thing are pretty straightforward:  a full-page drawing preceded by at least a couple of sketches (that is, more than one sketch,) of the same subject.

Simple short summary: drawwwwwww.

Inquiry Project Update

Hi! This is an update detailing what I’ve done so far in regards to my inquiry project. (Couldn’t have guessed from the title, huh?)
Over the past two weeks, (they felt like four days) I’ve done a lot of stuff. 14 days ago, my project had nothing, but now it has something.

The first step in executing the wonderful plan that I’d laid out for myself was transporting my computer there… unfortunately this was going to take a little while on account of the fact that I couldn’t get a ride to school until the next Wednesday, and had to take the bus. (Can’t really bring my computer on the bus, can I.) So, 5 whole days that I had to work on the project at home.

Not a lot of things got done in this period of time, but I did manage to pack up all of the components neatly, and install some necessary packages on the system. I researched some tools that I could use to render out the uploaded files automatically, and came upon “fsniper,” a tool that does EXACTLY THAT. (using inotify, which is great!)
So that was nice. I couldn’t get it to work on my laptop, but I had high hopes for the system in school.

When I did finally get the PC into the computer lab, I set it up within the first day of it being there. There was a persistent issue with the system’s Bonjour hostname not showing up on the network, which mean that I had to scan the local network to find the machine manually… which was quite the annoyance. ssh, the software I used to connect to the computer, refused to work for some time until I reconfigured it, but that was resolved rather easily.

I had some issues setting up FTP, because the pure-ftp daemon couldn’t be configured to use its virtual users instead of the system’s real ones. I ended up just making an actual user account to use with FTP, and that was basically the end of any problems there.

pure-ftpd was easy to install, but had some more issues with file permissions. It seems that it didn’t correctly support read-only directories for some reason… great. This is still a bit of an issue, and I think that I’ll have to come up with a system of shell scripts to deal with it.

Right now… everything works. It’s not completely pain-free and it doesn’t have all of the bells and whistles that I wished it would, but everything works. I’ll need to make sure that rendered files can’t overwrite each other, and I really want to support rendering animations (especially packaging the rendered frames into an archive and putting that in the download directory instead of all the frames.)

Overall, most of the things I set out to do, I did do. I didn’t have a lot of trouble, and truth be told, I don’t know if this is a good size for the first inquiry. I knew most of what I needed to do, and the details I found out through a lot of Googling. (sometimes duckduckgoing)

If you want to know more about how the system works, in more detail… You should be on the lookout for more of my stupid blog posts! Coming soonish.

Inquiry Details (Also a plan)

Hoi!

I’d like to write for a little bit about the kind of thing I want to do for my first inquiry of the year. Let’s start with a problem.

I like using Blender. It’s a pretty popular 3D modelling/video editing/node-based compositing/sculpting/animating software package with a killer feature: all of it is free and open source. My computer, however, doesn’t like using Blender. Rendering out projects takes an embarrassingly long amount of time. (I should point out that this is true of any 3D renderer on most computers)

So the solution seems pretty obvious to me – find/salvage/summon from the void/make a computer that can render out Blender projects like there’s no tomorrow. Now, I also want to do a public service to the school and make this computer’s frankly silly amount of power consumption massive rendering power available to the students that may be interested in it.

Let’s get our thinking caps on and figure out how we’re going to design this machine!

First of all, let’s quickly cover the hardware the we have to work with, and then get started on the software side. I happen to own an ethereum-mining computer, meant to generate the best cryptocurrency. It doesn’t work as well as it used to, and doesn’t really make a profit anymore, so it’s (financially speaking,) okay for me to use it in this project. The computer is kitted out with a basic 7th-generation i3 processor(I’ll update this later when I remember or find out what it actually is,) 4 AMD GPUs, 8GB of DDR3 RAM, and two (count ’em!) power supplies, one attached to the motherboard and two graphics cards, the other attached to a paperclip and two graphics cards. The GPUs are the real meat of this machine, we have one R390X available to us, two Sapphire(upd8 later) cards, and another (whose name will also be updated later.)

OpenCL support in both of Blender’s render engines is pretty experimental, so I think that the performance of this rig could be better with nVidia cards… but you work with what you’ve got. On the software side of things, I considered a couple of options for giving students access to the rig, and I’ll list two of the options that didn’t make the cut here:

  • Setting up a web e-mail address and checking it for messages with attachments every once in a while

I think that this is a bad idea because it requires writing custom software, for which I have absolutely no time given the close deadline of the project, and because it would be horrifically easy to screw up writing it and give random people on the internet the ability to run arbitrary code on the school network. So, not a good time.

  • Setting up a local web server that accepts file uploads

This would be fine if it didn’t require me to write more software… which, you guessed it, I’m not very fond of at all. Most of the problems with the previous idea are averted though, due to the local network restriction. I wrote up some code for this idea, but it kinda failed due to my lack of experience with writing any kind of web server applications.

Let’s move on to the winner:

  • Setting up a local [S]FTP server that requires a login and password to access.

Guess what, it’s absolutely perfect! Most of the files I’ll be writing to make this plan work are config files, [S]FTP is easy to set up on a Linux machine, and I’ll mostly be able to know exactly who is uploading what files. Plus, there are many friendly SFTP web-interfaces out there, and most everything that has a filesystem, has [S]FTP support.

So that’s the file transfer mechanism down, let’s see what we can do about actually rendering all of the files we’ll receive.

I think that, again, simple is best in this scenario, and that rolling my own software to deal with this is not at all perfect. So, I feel that a simple cron system would be quite easy to write up, and even easier to maintain. A cronjob would run every couple of minutes, checking for any new files, and rendering them out. Fortunately enough, blender itself comes with a command-line mode, which means that it should be very easy to do this. Once rendered, the files are removed, and the resulting image file should be rendered out to some public download-only [S]FTP directory. That can be done using blender’s command-line options.

Maybe I’ll draw a nice graph to describe this whole process later, but it’s quite simple, isn’t it?

To summarize:

  • I’d like to make a server on the school network that can render .blend files.
  • It should accept files from registered/authorized/whatever students via [S]FTP and maybe a web client
  • Every few minutes, a cronjob should render any new files in the “uploads” directory, delete them, and put the image file in a “downloads” directory

To be frank, I think that the most difficult part of this project will be setting up the drivers for the AMD graphics cards on Linux, and getting them to work with Blender.

Well, it’s been nice writing and I’ll see ya later.
-Stan