Top 3D Printing Problems (Check For Them Before Starting a Print Job)

When 3D printing, it is NOT going to be easy. It's not as simple as loading the 3D model, slicing the 3D model, and printing the sliced model. There are many things you have to look for before starting a 3D print, such as ambient and bed temperatures, or Z Calibration. Here are a list of the top <some amount here> problems!

  • Heat bed is too cold: When the heat bed is cold (or at least not hot) 3D prints tend to warp. Warping occurs when the bottom of the print cools faster then the top, and expands. A hot heat bed keeps the print on it warm on the bottom, where it would typically get cold from the ambient temperature of the environment.
  • Heat bed is not level: This is a rare problem, and shouldn't normally occur. However, sometimes you may notice that the nozzle is printing too high above the bed and at other places it is scraping the bed. This usually means that the bed is bent in such a way that on end of it is bent upwards while the other end is bent downwards.
  • Ambient room temperature is low: When the room temperature is too low, it will cool the heat bed. Heat beds are usually very weak anyway, and won't stand up to a cold room.
  • Not enough adhesion: When your prints are coming off of the bed during printing, it probably indicates that you do not have enough adhesion for the print to stick to the (heat) bed. When adding adhesion, you will need to use some sort of tape (so as not to dirty up the actual metal bed).
  • Z Calibration is wrong: You will notice this when either the nozzle is scraping into the bed or it is too high above it and the plastic is not touching the bed enough. You have to calibrate it every few weeks, to get perfect prints. Usually, you have to get this correct within 0.05 of a millimeter.
  • Bigger 3D Prints Are Warping: This is common, and mostly happens because the middle of the heat bed is where the heater is, and is a lot hotter then the outer edges of the heat bed. Also, it has a lot more space that can be hit by a cold draft.
  • Under or Over Extrusion: You will notice this when the 3D prints have bits of plastic sticking up above the current print layer, or plastic wrapping around the nozzle. This means it is printing too much plastic at a time. For under extrusion, you will see very thin wallsthat aren't even very solid.

Pragmatically Programming

Programming and life are two very different things, right? When you do programming, it's either yes it works or no it doesn't. If it doesn't, you go and fix it. You program something, and there is always one way to do it.

As it turns out, this is not actually the case. Programming and life are actually very similar. When you do programming, there might be two ways to do something. And, when having a team of programmers, it is even more important that you code things CORRECTLY. Sometimes, you might get the end result you wished for, but your code is incredibly messy that anyone trying to edit it would be completely lost in it all, and even you yourself might find it difficult to fix problems. One good example of correct programming is going by the DRY principle. DRY stands for Don't Repeat Yourself. While this may seem like a hard principle to get wrong, you may be finding yourself copy-and-pasting code or writing similar methods. The opposite of DRY code is WET code, which stands for We Enjoy Typing. Don't write WET code. Whenever possible, write methods and use variables.

For example, when writing a Minecraft plugin, you would probably want the text "[CoolPlugin]" (or whatever the name of your plugin is) before each message it sends to the server, like "[CoolPlugin] ScarabCoder left the game". You could make it do something like:

server.sendMessage("[CoolPlugin] Player left the game")

However, you will find you are repeating yourself if you write this way. For every server message you want to send, you will be writing "[CoolPlugin] ". Sure, it might do what you want, but it'd be really, really messy. Imagine the horror you would have to go through when you wanted to change your plugin name from "CoolPlugin" to "AwesomePlugin". Search-and-replace? You would probably still miss something, or probably replace the wrong text. Instead, use the obvious answer; variables. That way, if you wanted to change the plugin name, you could just make a global variable (a variable that is accessible from any part of the program. Languages like Java use this) that would equal to "[CoolPlugin]":

pName = "[CoolPlugin] "
server.sendMessage(pName + "Player left the server")
server.sendMessage(pName + "Player joined the server")

See how much simpler that is? But wait, you are still repeating yourself! You are writing "pName + " before each server message. It's time to create a method. Methods allow you to do things like "sendServerMessage(message)". You can accept inputs, and it is really easy. Not only that, but you could also do something like "logAlert(message)" or "logError(message)", which would send a server message in different colors (red for error, orange for alert, etc). Example:

method logError(message){
  server.sendMessage( + pName + message)
logError("server crashed!")

Woooaah! You just cut down the amount of characters you are using by a ton, and made it so much easier to configure your plugin. If, for example, you ever wanted to add another prefix to your errors, you can add that simply in the method.


This also means you shouldn't be writing "hacky" code anymore. Hacky code is code that you are using shortcuts or code that might be a bit sketchy and may break with newer versions. You shouldn't be writing this kind of code, and make sure you keep it far away. The temptation to take small shortcuts like this without even checking for another way gets strong, believe me.


Many servers actually run off of player donations, and some people are even able to live off the extra money that doesn't go into to the server! But how does this process work?

You may have seen shop pages for servers. If you haven't they typically look like this (EcoCityCraft's Shop). If that seems familiar, it should. In fact, almost every server webstore will look similar to this, this, or this (HiveMC, ClownerCraft, and The Chunk store pages). They are all powered using a service called BuyCraft. BuyCraft allows you to setup a webstore, and then send custom commands to the server when you buy a rank. For example, I could create a "package" (or virtual product) that, when bought, would send multiple server commands to set a player's rank, give him ingame money, and broadcast to the server.

It has many, many features, and extremely customizable. Not only can you edit the default CSS of multiple themes, but you can even edit the HTML too! This means that you can have a completely custom store that makes easy updates every time you add a package. Another cool feature is that you can have subscription packages which can charge the buyer after a custom time, and can send commands each time. This could work for temporary ranks that you would have to pay a monthly subscription to, and, when the subscription expires, would demote the player back to the previous rank.

Buycraft is free, though with many limitations unless you upgrade to a different plan. For example, the free plan only allows one payment gateway (the method through which you receive payments) and five packages. The next plan costs ~$6 a month, and allows you to have unlimited packages, categories, and gateways, but only allows you to earn $2500 or less per month. The final plan has many more features for huge servers, and costs ~$30 a month.

I setup a quick webstore, partly for the idea of Mine Monthly Events that I had, and partly to test some of the Buycraft features. Currently, the packages actually do send commands to the server, but the server itself is a local one (you can't join it). You can visit it here.

Mine Monthly Events Idea

I haven't been using my server subscription with CubedHost, and I had to cancel it. However, I recently had the idea of doing events similar to the StarWars event on May 4th. I had quite a lot of people signing up for it (nearly forty people), and it was lots of fun. I enjoyed doing it, and would do it more if I could get the money to pay for the server. And, due to the fairly large amount of players on the server and probably because there would be lots of explosions and mods, I would have to get a server with a large amount of memory to keep down the lag. For the Star Wars event I used 6GBs of RAM, and it cost $40 a month. There was no lag at all on the server, so I could probably have done with 4GBs.

I had an idea that would both let me hosts events, and take care of the cost for paying for the server. I could host two events every month (or, if I couldn't get enough people, just once a month) and only allow people to play every other time. If they wanted to play every time, they could buy a "ticket" for just $2 USD and use that. That way, probably at least half of the cost of the server would be payed for. If I could set up a subscription service, I could be hosting the server for free (of course, I would still have to set up the events, but I enjoy that).

There are also many events I could host, all of them would probably be about some famous (family friendly) movie, such as Lord of the Rings or Star Wars. I could repeat certain themes but at different places, and maybe even follow some of the battles in these movies.

PiPad - A Raspberry Pi Tablet

Recently, the Raspberry Pi company released the long awaited Raspberry Pi Official 7" touchscreen. Almost as soon as I saw it, I knew I wanted it. I already had the Adafruit Powerboost 500, and I immediately had the idea of creating a Raspberry Pi tablet.

I have a 3D Printer, so I was able to find a nice 3D model on Thingiverse and quickly printed all of the pieces. When putting them together, I had to use ABS glue to glue some of the pieces together, and then used several screws to put together the rest. It isn't perfect, but it is solid enough. I used the Adafruit Powerboost 500 and a battery, and also a short micro USB cord.

I haven't done anything software wise yet, but I definitely plan to. Probably I'll be using Kivy, because it is perfect for touchscreens (though PyGame would probably be easier to code). Several of the Python games that came with the Pi work with the touchscreen (the memory puzzle and slide puzzle), and my 4-year-old sister loves to play both. It can also play Youtube videos at a nice ~45fps, so it would do well as a media player. I'm looking in to some sort of Youtube downloader so that I can watch videos wirelessly.

Here is a video I took (sorry for bad quality, was using a phone at the time :D):

Learning To Program, Some Problems that People Have

Recently, I have seen different problems that people have had when starting to learn programming. 

It isn't that programming is very difficult, it is just that people assume too much. The main problem that kids have when learning to program, is that they do it expecting to make a simple game within a few days. Unfortunately, though, it's not about programming visually. They don't fully realize the fact that 'programming' is to write code similar to mathematics in a simple text editor, and not dragging and dropping objects onto a 2D or 3D plane. I found this problem when looking through a few Youtube (yes, I know, usually a bad idea) comments on indie game development or showcase videos. 

The way they see it, it is really easy. For example, this person implemented a variety of different attacks in a few hours. It may sound easy, but you have to really know all of these things. You can't expect half of the code (collisions, health, movement, etc) to be already written for you, so that all you have to code are the attacks and armor. My point is, you CANNOT start your programming with complicated 3D Java and Unity stuff. You have to start with things like Python, and get used to programming and it's methods. I've seen tons of people disappointed because they realize that they have to do a lot of things before they can create their game. It takes time, dedication, and work. 

Some people have the idea that creating game-making programs that are more like what kids would expect would help; however, I don't think that is what you need to do. This is why I dislike Scratch. Scratch is a popular animation and game maker, with things like logic. While there is no code written, you can drag and drop things like if/else statements, create variable, and so on. However, I find this a bit misleading. It is NOT programming, and one should not try teaching using a game or animation environment.

Most of these things I found out when trying to teach my (then) 8-year-old brother to program. I got him started with Learn To Program by Chris Pine, on how to start programming for beginners with Ruby. It was the same book I learned from, and even where I had gotten interested into programming in the first place. The book was not originally for me, it had been for my oldest brother. However, he was not very interested in it after a while, and eventually gave up. I picked it up, and started reading it. It was very interesting to me, especially creating text interactive games with input and if/else conditions. This was before I even played video games (three years ago, though, there was still Minecraft and other popular games), so I didn't have any big idea of what to make. 

When I gave it to my brother, he got about as far as printing text and if/else conditions before he had a problem. In a way, I expected it to happen. He was used to seeing me make Minecraft mods, walk around in a self-coded environment, and do many things with Minecraft Pi. I don't really know what he expected coding to be like, and there was no way I would have him get started with Java. He asked me when he could start doing things like what I was doing. Stuff like making games, and modding Minecraft. I tried to explain to him that it required lots of learning and work and memorization and practice to get as far as I was in programming (3 years of programming in total). 

For some people, programming can be interesting and fun. For others, it is a chore, like learning Algebra. You have to program not for the end result, but because you like doing it. If, for example, I only programmed to make a 3D game, I would lose interest fast. Doing all that 'work' of learning Java and it's methods wouldn't be worth it. However, I don't do it for the finished game. I do it because I like doing it, because it is fun for me. This doesn't mean that I'd lose interest in programming if I had to do it for work and the end result was the most important thing. In my mind, programming is what I like best, not the end result.

EcoCityCraft Minecraft Server

Recently I was looking for a Minecraft server to play on, and I wanted to play on a some fair, economic city server. Going through a few, I found some problems. The first had really bad staff (improper spelling and grammar is usually the first sign, not doing anything about people not following the rules is another), another was endless city that was really hard to play on unless you donated. This pretty much needs you need to travel hundreds of thousands of blocks to get to the end of the city (little or no warps), then travel much farther to find some wood or a material you could sell or use. Then, if you wanted to sell it (in order to buy a plot), you needed to find a person willing to buy. Most of the people one the server didn't bother with newcomers, so it was really difficult to get started. Finally, however, a few server listings down, I found a server called EcoCityCraft. I joined, went through a short tutorial (tutorials are a good sign that the server will cater to newcomers), then got started.

First of all, they had multiple worlds. One was the city world, and another was the 'wild' world. They set it up nicely, where the wild world got reset monthly. Griefing was frowned upon, but allowed, in this world (to prevent people from settling and getting mad when the world reset). PvP was disabled in all worlds except the Nether and PvP world.  I got lucky and when I joined, the wild world had been reset only a week before. Surprisingly, however, there was very little marks of people being there (aside from tons of marks of mining), so it wasn't hard to get wood. It was also awesome that you could use a command "/wild" that would teleport you to a random place in the world, meaning that there weren't any resources around spawn, you wouldn't have to waste hunger and travel far. 

The way the server is setup, you can rankup. The first beginning rank is Builder, then you can rankup to Resident when you earn enough money and read the rules and tutorials. After that, you can rankup to Mayor, which allows you to make a town/city, meaning you could rent/sell out plots or houses (called pre-builts) to players. Then, you could become a President, which meant that you could own two cities/towns. 

The players on the server were all very nice, and welcoming to newcomers. Right away, I was able to get a free apartment (usually fairly expensive, or at least not free) that was only available to newcomers and permission to use that city's farm. The reason farming is a great way to earn cash is because you can sell the produce to the server (instead of a player). This meant that one 'career' (or method of farming) would always sustain you at the same rate. That is opposed to selling to players. If you were trying to sell carrots, for instance, people wouldn't always want to buy from you. They also may as well make their own farms instead of repeatedly buying from you. However, when selling to the server (using a command), it would always give you the same amount per item. Then, you could really have a stable method of farming, and this also gives a stable economy to the rest of the server (prices for plots, for example, wouldn't sell depending on how much much money the average player has). 

The best method of farming (farming gave the most money, wood sold for very little and mining wasn't always dependable) was to farm cocoa beans, as they sold for a fair amount and were quick and easy to do with the proper tool. After about 15 minutes of farming cocoa beans in the town I lived in, I earned $1,000 Eco Dollars (the currency on the server). This was enough to buy a small 10x10 plot of land in the same town my apartment was in (prices change per town, but 1k for 10x10 was regular) right next to my apartment. However, I found out that once you buy a plot, you lose the apartment (probably because newcomers wouldn't be needing the apartment anymore if they have another place to stay. This was a rule for the specific town, however). I built a small business building (that I have only used as a small storage for now), complete with four stories and cyan-light blue glass windows. However, I did forget that the town had a max building limit (15 blocks) and mine went over it (17 blocks high), so I just had to lower it a bit. After some more more farming, I saw in chat (where people advertise houses, plots, jobs, etc) that someone was selling a lakeside house, and that it was the last one left in a row. I saw the house (donaters can use /tpa for teleportation), and immediately wanted to buy ,it. It cost $5,000 ED, and I only had $2k ED.  I was able to buy it for $2k, then pay back the $3k when I earned it (the amount people trust each other is nice, though if I hadn't paid it back the house would have been taken away. 

The last great feature about this server was the donation balance. There were tons of things you could donate for (including fly and teleportation), but while those seemed like big cheating things, it did not impede gameplay at all or even make it worse for non-donors. Most donators, in fact, helped other people who wanted to use the features (like helping teleport to each other). So though the donation rewards seemed huge, they did not seem to impede on gameplay much.

The Many Different 3D Printing Settings

To 3D print a model file, it must first be sliced. This process is where a model will get all of it's settings.

3D printing a 3D model isn't as easy as drag-and-drop. First of all, a 3D model file usually only contains mesh data (and sometimes textures). Where would you change the speed, quality, size, etc? For a 3D printer to print a model, the model must be converted into a different file that is a list of commands telling where the printer should go, at what speed, etc. The kind of programming that a printer understands is called gCode. 

When I slice a file, I use a program called Cura. You can most 3D model file types (like obj and stl), and then export to a gCode file. Of course, you should not consider the gCode file as a 3D model, or Cura as a model converter. When you import a model, you can choose many different settings. Some of them have to be specific to the filament or printer you are using, like the diameter of the plastic and the flow of how fast it goes into the extruder. Others, however, can be decided upon depending on the print itself (things like quality or whether or not to add supports). This allows you to get the right ratio of speed to quality, and sometimes you can print a high quality print in a short amount of times by choosing the right settings. 

The first setting in the list is the layer height. During the printing process, models are printed by laying one layer on top of another.  The layer height decides how many layers to fit into a space. The more layers, the higher quality, since the lines that you usually see on prints wouldn't be there. However, it takes longer since there are more layers to print. If you do less, then there would be visible lines on the print, though it does go faster since there are less layers to print. To little layers, however, and it won't bond with the layer underneath it. 

The next setting is shell thickness. This is how thick (or strong) the layer on the outside will be. The reason this is a setting is because sometimes you would want to print hollow models but don't want a weak shell, or even semi-hollow models. Usually, though, you wouldn't change this. Another setting is the bottom and top thickness. When printing with 50% infill, it creates a grid pattern on the inside without fully filling inside. The bottom and top thickness is how many layers to print before it starts the grid pattern and how many before the surface of the print is done. The fill density settings is next. The less you fill it, the more hollow it will be. When it becomes hollow, it creates a sort of honeycomb grid pattern inside. Less infill will drastically speed up the print, but make it feel cheaper due to light weight. The more infill, the longer the print will take. However, it is worth it for that strong plastic feel. This is where you could change the speed to a high amount, and fill the inside completely. 

The next setting is speed. This setting will change the time it takes to print the most. The value of this setting will most likely be specific to the piece you are doing. The higher speed, the lower quality, and it may be that the print could fail if this setting is too high. A lower speed helps the print hold together, and make it much stronger during and after printing. Sometimes, for large prints without delicate parts, I will make the speed very high. Usually, however, (especially for overnight prints), I will make the speed lower. Usually when quality matters or time doesn't. The next two settings are the nozzle and bed temperature. These are specific to the plastic you are using, and once you can find a nice temperature (or use the default) you usually wouldn't change it again.

A really nice option is an option to add supports. Due to the way printer do their printing (layer on top of layer), overhangs do not print well (if at all. Floating pieces don't print).  However, when you add the supports option, it adds a weak and easy to remove support underneath overhangs and floating pieces. This wastes a tiny (very tiny) bit of plastic, though the main problem is that it takes longer to print. However, for overhangs, it is necessary. Probably one of the big satisfying things of life is digging into a print with pliers and removing the supports. The collapse when pressed, making them come off in chunks. Normally, though, you wouldn't use supports.

Another option is the platform adhesion option. You would use this when dealing with warping and/or prints not sticking to the bed. The raft adhesion option prints a raft (hence the name) underneath the model, meaning that it warps instead of the print. It also means more of the print is touching the bed. Like the supports, it comes off of the print fairly easily. The next option is the brim option. It is similar to the raft, except instead of adding itself under the model it wraps around the model, sort of like a skirt. It prevents warping better, but not so much with adhesion problems. Both options take a lot longer to print, so it is better to get a heated bed or use a better adhesion solution (like ABS slurry).

There are some other more specific options, like the speed at which parts of the model print at, but almost all of the others have values specific to the printer.


Usually, to control your 3D printer and start prints, people use their computers or an SD card. However, they both have their limitations

The problem with 3D printing with a computer is that the computer has to stay connected to the printer. This means you can't really move the computer, and there are tons of situations in which you wouldn't want to be working next to a 3D printer. One of them is the slightly toxic smell of ABS plastic or Acetone. 

The problem with 3D printing from an SD card (you can plug an SD card into the printer, that has a file that the printer can print with) is that you have very little control over the printer. You can't view the temperature, the progress, you can't (properly) cancel prints or pause them. In fact, if your print does fail, the only way to stop the printer is by unplugging it. This is never advised, and usually means you have to power cycle the printer to get it to work again. 

Obviously, the majority of the people who own 3D printer don't use the above two options. But what do they use, then? The answer is a simple, $35 programmable board. Namely, the Raspberry Pi. There is a program that you can install on the Raspberry Pi called OctoPi (the project name is OctoPrint, but the version for Raspberry Pi is called OctoPi). All you need is a power cord for the Pi, an Ethernet or WiFi dongle, and another cord for connecting the Pi to the 3D printer. You can also get a camera module to view your current print (live!) and record timelapses.

What does it do? Well, it creates a whole online UI from which you can control your 3D printer. Normally, you can only access the UI when connected to the same network as the Pi, but you can set up a port forwarding system, allowing you to control and view your 3D printer from anywhere in the world, as long as you have internet connection. In some cases, for example, you would want to print a 70-hour object (things like helmets and exoskeleton pieces, mostly). You could have the 3D printer running while you go on a small trip to your grandparent's house, but if you used a computer and the print didn't go correctly, you could come home to a big mess. However, with OctoPi, you could view your prints (even on the road) and make sure everything is going correctly. The only thing that is missing that would make things really automated is a way to remove prints without actually being there.

There are many other things you can do with OctoPi, too. For one, you could upload your "slicing" (things like the speed and temperature of the printer) settings to OctoPi, and then it would turn your 3D model files into 3D printer files. This way, if you used a different computer, you wouldn't have to worry about copying all your settings over. OctoPi also has a gCode viewer, meaning you can view what the print will look like by viewing each layer individually. It also syncs with the printer progress, so you can see what it is supposed to be printing. Not only that, but it has a plugin system. There are currently about 20 different plugins you can get (things like model viewers), but the plugin API is very new so there could be many more coming. 

It also has a login system, so you don't have to worry about showing other people your 3D printer UI page. They can view the status of prints, view the print going live, even download timelapses, but they cannot control the printer or it's settings. This means that if you have a fairly large following, you can let other people see your 3D printer working! Also, with the plugin API, you could code a plugin that automatically shares timelapses to your social media. The timelapse feature on OctoPi is very nice, and timelapse settings are very configurable. Currently, I have my settings so that every time it goes up a layer it takes a picture. The effect is that the print seems to "grow" upwards. When you think about it, it used to just be a picture on a computer, and it has now grown into a real life object. Here is an example of a timelapse:

Installing the new Ubis 13 Hotend

Printrbot recently released a new hot end for their 3D printers, and can print with a lot more detail.

The hotend is the nozzle of the printer, the part that contains the extruder and the part that melts the plastic. Some nozzles are more detailed, some of them can handle more heat. This nozzle is way more precise, and even cheaper to make too! I ordered the new Ubis 13 hotend from Printrbot about a week after it came out. Looking at the instructions online, it seemed only mildly difficult to put together.

Normally, I would have my older brother put it together (he put together the heat bed). That is because every time I have ever tried installing or soldering any kind of hardware, something gets fried. However, it looked like there was little risk of things going wrong. After all, I only had to plug four things in; what could possibly go wrong? At first, nothing did go wrong. This hotend requires a fan to function correctly (if not, it jams), so I had a little extra work to do. I plugged both cords of the fan into the Printrboard (the PCB in the printer). Then, I removed the hotend I used previously (when I got a good look at it, it seemed really beat up and dirty). I screwed in the new hotend easily, then after a little bit of trouble I connected the hotend cords to the new hotend.

Finally, the moment of truth. However, it was not to be. I wasn't able to connect to the printer (it was spotty before anyway) using OctoPi, or any other computer. Then, I tried reflashing the firmware of the Printrboard (the software built into the printer), but even then I wasn't able to connect to it (which is supposedly impossible if it was functioning). I tried printing from an SD card (in case the micro USB input on the printer was broken), but that didn't do anything either. I thought that maybe my horrible luck when it came to putting things together had come back, and I had fried my 3D printer. 

Finally, I disconnected the fan and hotend cords from the printer that I had installed, and suddenly I was able to connect to the printer again. It crashed immediately, though, saying there was no extruder. I plugged the hotend back in, and the printer was functional. I was able to do everything like heating up the bed, extruder, moving the head, etc. However, it would melt the hotend if I tried using it without the fan, so my problems still weren't solved. 

After connecting the fan again, I was able to connect to it again but the fan wasn't functioning. Whenever the printer is on, the fan is supposed to turn on. I have a feeling that either the fan was broken before I got it, or I broke it when trying to connect it. Strangely, though, no one else had my problem.

3D Printing a Minecraft World

I recently had the idea of 3D printing Minecraft worlds, and even though I didn't expect much, it turned out really nice.

I never really tried 3D printing a Minecraft world before, but I realized I never had a reason why not to. I had the idea that it wouldn't work, and it was probably on account of the warping. But now that I had a heat bed and was using a really good adhesive method, I was getting almost no warping at all anymore. Out of curiosity, I 3D printed a portion of a world. The result was much better then I expected:

In this print, I included a lot of the underground to give it a good base. I made it 75% hollow, and I was able to actually see the caves (which were hollow, too) inside the print. If you cut this print in half, you could see the caves. Even on the side, where it cut into a cave, it is hollow and it goes down a bit. Then, I thought about selling 3D prints like these, of people's own worlds. I asked on a 3D printing community on Google Plus if anyone would be interested in buying a 3D print of their Minecraft world for about $4. Obviously, everyone there had a 3D printer so I didn't expect any offers. However, one person asked to get a print of two separate parts of their world (two different prints), and also two other prints for his sons. However, it was from a Pocket Edition world, which posed a big problem

The way I get the 3D models is using a program called Mineways, which allows  you to select a part of the world and export it as a 3D model. However, Minecraft: Pocket Edition was written in an entirely different language then the normal PC version, which meant that the worlds were coded in a whole different way. Not only that, but getting them off of the iOS/Android device is fairly hard, too. It may as well have been a completely different game. However, the latest development versions of MCEdit (a Minecraft world editing program) allows you to open these worlds (after you get them off the device, which wasn't as hard as imagined). From there, you should hypothetically be able to save/export it as a Minecraft PC world. Hypothetically. However, due to using a development version of MCEdit, it gives me an error when trying to save almost any world. This meant that I had to export it first as a schematic file (kind of like selecting an area and putting it on your clipboard), then import it into an empty PC world. This worked (thankfully), and I was able to open it in PC edition. It looked pretty cool, and this meant that I can switch worlds between PC and iOS fairly easily (probably, though, inventory contents wouldn't be saved).

From there, I was able to open the world in Mineways and export it as a model, and print it. You can see the result:

Calibrating a 3D printer

When building a 3D printer, calibrating it is the first thing you should do (after assembling, of course).

When you calibrate a 3D printer, you are making sure that the extruder (the part that squirts out the plastic) starts at exactly the right position. The horizontal and depth axis, X and Y, are easy. To calibrate the printer, one way is to move the head and bed manually (physically moving it with your hands, how horrible) to a corner position, and set that as 0 on both axis. Then, it knows that 6 inches (or whatever the max size is for your 3D printer) to the side on the X and Y axis is the limit it can go. If you moved the head and bed so that the extruder is in the middle, and set that to 0 for both axis, it will try to move six inches to both sides. Since it cannot move off of the board, it will grind horribly (it doesn't do much damage, if any, but it sounds really bad).

The X and Y axis don't really need much calibrating, and it's incredibly simple. However, the Z axis requires much more attention. The First Layer (pronounced "Thee" First Layer) is the most important part of a successful 3D print. When you think about it, what is even keeping the plastic 3D print onto the board? Really, it's just the pressure (commonly known as the "squish") of the first layer, which, when dried is still slightly bonded to the bed. However, you need a fair amount of squish for it not to come off. Too much, though, and the first lines will be flattened and the rest of the print will not go correctly. You have to get the distance between the hot end (the tip of the extruder) and the bed exactly right to 1/50 of a millimeter. Thankfully, however, you don't have to rely on your physical skills for this part. You can run commands that set the Z offset, and you can get very precise. Usually, you have to do quite a bit of test prints to try and get the right distance, and each time tweaking it slightly.

However, it is worth it in the end. Seeing the plastic squirt out in nice, straight, perfect lines is like getting a huge chunk of cookie dough in your cookie dough ice cream.

3D Printing Basics

I will explain how a 3D printer works, and problems that arise for people just starting.

3D printing can be explained as basically a motorized glue gun that is squirting out plastic instead of glue. It is also similar to a motorized pencil drawing in 2D. After it fills in an area, it moves up a little and starts laying plastic on top. It seems simple, and at first it is.

However, there are different kinds of things you can print in. There are different kinds of plastic, for example. There is PLA plastic, the cheaper kind, and ABS plastic, the slightly more expensive but drastically different kind. 

PLA plastic is simple, and when printing with it it will print a bit rougher. It has a more plasticy feel. However, due to it's slightly lower printing temperature, it's nice (some even say candy like) and non-toxic smell, and lower amounts of warping, it is a preferred options for those using their 3D printer for printing small fun things.

ABS plastic is the same plastic as the kind used in Legos, and rounds nicer, and has a more solid feel. You can get much higher detail with this plastic, but it is a lot harder. First, unlike PLA, it has a toxic-like smell. However, while it is not poisonous, it has given a few people headaches before. The biggest problem is that it warps heavily. When warping happens, the edges start to curl up. This isn't the main problem with warping, the main problem is that less and less of the print stays is on the board. This means that it will almost always pop off and make a mess. 

The solution to warping (which happens with both PLA and ABS, though not so much with PLA) is to get a heat bed. A heat bed pretty much means that the plate which prints are printed on can be heated. When it becomes hot, the bottom of the print touching the heat bed melts just a little, but enough that it stays put. Warping happens when it "dries" too fast, but with a heat bed it isn't a problem. This also means that it will stay on the bed without coming off.

7-Inch Touchscreen For Raspberry Pi

I teach an 8-year-old, and he got got a 7-inch touchscreen for his Raspberry Pi a few days ago.

The reason he wanted it, was because he had a small screen-case, similar to the ones for iPad. When he got the keyboard, he had also gotten a tablet. However, the tablet didn't work, so he sent it back but kept the keyboard. Then, he saw that he could get a screen compatible with the Raspberry Pi that would fit into the keyboard case, so he ordered it.

It came with drivers on a disc, but it was shipped from China. This meant that the disc was scratched so much that the drivers were corrupted. The company that sold the screen wasn't very big or popular, with only a few reviews on the screen itself. It was fairly hard to track down the original product page on the company website, then find the drivers online. However, it did have an installer, which made it a lot easier. After I installed it on the Raspberry Pi, it (very surprisingly) worked immediately. And another great thing about the screen is that it doesn't need much power to work or even a separate power supply, it just plugs into the Pi via HDMI and USB (HDMI for the screen, USB for power and touchscreen).

This touchscreen is capacitive, meaning it responds from the small amount of electricity in the finger and body. This is the same kind used in iPads and most touchscreen devices.

The other kind, resistive, creates two thin layers of material, one on top of the other. When you press on the top on, the part that you pressed down touches the bottom pad. Then, it detects when and where that happens and responds correctly. This means that any kind of pressure works, but it is more accurate.

Unreal Engine 4

Unreal Engine 4 is similar to Unity, but concentrates more on graphics, optimization, lighting, etc.

It is fairly new (about two years old), and as of now there has only been one actual game created, called Ark: Survival Evolved. However, it has a ton of potential, and unlike other games with really nice graphics, this engine is optimized enough so that there is little or no lag! One of the biggest features over Unity, however, is the landscape designer. This is a feature sorely lacking in Unity. You can easily design landscapes and "paint" them for different areas, like mountains, paths, fields, etc. Not only that, but you can also "paint" on foliage! You can choose what kind of foliage will go into a paintbrush (models/materials are produced by the developer) and just paint where you want it to go. This makes grass, trees, bushes, etc a lot easier to place, without having to worry about placing hundreds of models.

Beside the engine itself, however, Unreal Engine heavily supports game development and student learning. It is completely free (no "Pro" version, though you can buy assets in the store made by other people), and you don't even have to pay Unreal Engine to use your game commercially! You just have to give them 5% royalty of your game, and you get the 95% rest.

And if you have a game you are working on, and you have a first working beta version ready, you can get a grant (Unreal has 5,000,000 USD to give away in grants) that will help you with developing your game, and eventually releasing it the public. Most would assume that there is some catch; why would someone give you money for free? To quote them:

Why Would We Give Away Free Money?

Simply put, we succeed when you succeed. Unreal Dev Grants can give you the boost you need to take your project beyond working prototype. Epic wants to help you focus more on creation and worry less about keeping the lights on.

Unreal is focused on helping developers make better games, and not on making money.

Not enough for you to download it right now? Check out some of these videos of the engine in use:

Unity 5

Recently, I found out about a 3D (and 2D) game creator called Unity.

When using Unity, you will actually be concentrating as much (if not more) on the 3D modeling and level creating as you would on the programming (known as scripting to Unity). When you first open it, it seems a lot like a 3D modeler, minus the modeling. You can import tons of different kinds of 3D files, even .blend (Blender) files! Nearly any device works with it too, without having to change much. So if you developed a game for PC, then you would just have to add touchscreen controls and change the screen size if you wanted it for tablets/smartphones. Normally, you would have to program the whole game over again in a different language that is supported on smartphones!

There are also a ton of different options for models and even animation. For example, you could just check a tick box and you would have collision prevention implemented for that model. And for animation, you could animate in Blender, then in Unity segment off certain parts of the animation that would run when you wanted it to in a script. It is really easy to make custom animations for a player like running and jumping, too! Many games use Unity now, especially on the auto-optimization that comes with it.

Flappy Brain

Winkleink created a Flappy Bird clone called Flappy Brain, and it's pretty cool.

When you first hear that, you think, "Oh, it's another one of those Flappy Bird clones." But it is far from that. Controlled by the Raspberry Pi, Winkleink (pen name) used PyGame and his brainwave reader create   a brain controlled Flappy Bird game. The brainwave reader is a device you strap around your head, and it feels your pulse. When you think hard, it detects. While it cannot tell what you are thinking, it is useful for making games.

In this game, the bird goes up when you aren't thinking very hard, and down when you start thinking. You have to avoid obstacles, and it really quite hard. For example, when you have to go up, you have to try not to think of anything, and the closer it gets to an obstacle you have to make sure you don't get too excited. When going down, you have to think hard. Winkleink's method is to do simple arithmetic, and when he wants to go up he blinks a few times to stop his thoughts.

Space Engineers Game

I recently came across a new (relatively new, came out 6 months ago) game on Steam called Space Engineers. It had some pretty good reviews (4.9 out of 5), and I watched a few trailers. A few people described it as "Minecraft For the advanced". I would describe it more as "Minecraft with advanced physics in space". While it is not very blocky, you do build a lot. 

The game is in early access, which means that you can buy it for less ($25), but it will probably be unstable. The reason a developer would release a game before it is fully done is to get feedback so that a full release will appeal to the general public, and to get bugs fixed before (again) releasing to the general public. I have played it, and have not really come across any big (or even small) bugs.

The game has two modes, survival (not quite finished developing, but playable) and creative. In both modes, you can choose what kind of world you want. You can start on a plain platform, with a bit of fuel powering the oxygen and gravity generators. Or you can start on a platform with a large ship at your disposal, and a few small fighters and maintenance vehicles. The game, like Minecraft, has no end goal. In fact, you cannot even win the game, as you could in Minecraft (killing the Enderdragon). You build giant ships, small ships, station, and expand your space world with awesome creations. It has tons of features, like rotating pistons, hangar doors, motors, buttons, and more. You can build a space station, and have it send out mining drones that would find an asteroid, mine a bit, then come back and deposit the ores. You can also mass produce small ships, which can be sent out to explore the (optionally) infinite world. 

Of course, all games will get boring if everything is left to you. However, not everything that happens depends on what you do. Random ships will spawn in the world and be sent in a random direction. Each ship has guns that will shoot you down if you get too near, but some have less guns then others. Sometimes, it will be a few ships, like a mining transport and a military escort. There isn't really a story behind the game, though some people like to roleplay. Each ship has some loot or other, and a few even have traps that will blow up the whole ship if you aren't careful. In survival, these ships are very useful as that can be broken down for their materials. In creative, it really fun to build a small ship and try blowing up as much as possible, while dodging the shots. The game is also multiplayer, which means you can do battles between you and your friends! 

And if the game is to easy for you, or even if you want more of a challenge to your buildings, then you can turn on meteor showers. Depending on the setting, every few minutes randomly sized meteors will rain down causing considerable  damage to you and your buildings. Unfortunately, they always come from the same direction, meaning that you can just build your space station on the other side of an asteroid and be safe. 

And if it still isn't challenging or doesn't have enough features, it has a whole modding API! Some mods can add things like planets, or blocks, or just aesthetic features. Probably two of my favorite mods is one that makes the random ships that appear head towards you and attack you, and the other will spawn small ships at a random distance from you that have a small AI, which will try to do as much damage as possible to you. This means that adding guns to your base, even in creative mode, will actually become something you have to do to protect your buildings.

Overall, it is a really fun game, and I suggest you get it!

Windows 10

Microsoft will be releasing a new version of Windows, called Windows 10. Now, if you are currently running the latest Windows version, you should be running Windows 8. The question is, why skip Windows 9? There isn't really any official reason, but I'm guessing that 7 ate 9 (get it?).

One of the big things Microsoft is concentrating on are easier touchscreen controls. This means that the Windows menu will be looking a lot different, and a lot easier when you have a touchscreen computer. They are also upgrading the Windows 10 store, and announced that they are releasing a new version of Minecraft for Windows 10, called Minecraft: Windows 10 Edition Beta. What they basically did is port Minecraft: Pocket Edition (for iOS/Android/etc) to Windows 10, complete with long awaited touchscreen controls for touchscreen computers! It's not exactly the same, however. For one, they added normal keyboard/mouse controls, and it is supposed to be smoother. Not only that, but it is written in C++, which means a lot faster running. Currently, the Minecraft PC version is written in Java, which is easier to write in but harder on the performance. And since Windows 10 Edition Beta and Pocket Edition are so similar, they can finally join each other on worlds. Not only that, but you can join Xbox 360 worlds too!

For a while, there was some Windows to Xbox integration, but in Windows 10 not only can you play all Xbox (downloadable games only I assume) games, but you can stream them from your Xbox to your PC screen too! And when you play on the computer, you can record gameplay without any extra software. 

They are also taking a hint from Apple and Google, and will be adding a voice control AI called "Cortana". Cortana pretty much does everything that Siri does on iOS. They are also adding easier window switching when using Alt+Tab, making it easier to switch windows when you are a programmer and have a clutter of programs you need open.

Cortana isn't the only thing that they are copying from Apple. Windows 10 will feature it's own browser, called Spartan. It has pretty much everything that Safari has, including reader mode and a PDF viewer. 

Windows 10 is also coming to phones (there has been Windows 8 phones, and only those will get the upgrade), and the Windows 10 PC version will have better integration with the phones. Most (if not all) Windows 10 apps will share data across phones via Microsoft accounts.

Windows 10 will also feature a Tablet mode, which provides easier mobility when using a tablet/computer hybrid. This can be activated manually in settings, or used when a keyboard is disconnected from the tablet computer. Finally, they are merging the Control Panel into the PC Setting introduced in Windows 8, which means that you no longer need two windows for simple tasks.

I think that this will be a nice update, but my biggest hopes isn't for the features. I am hoping that it will be less RAM intensive, meaning that the whole system will use less RAM and become faster. This has been a big problem with Windows, because computer with 4GB of RAM or less cannot load Windows 8 Start Screen very fast, and sometimes only has 2GB of RAM free after the system has claimed it. 

Overall, I like what Microsoft is doing, and is finally heading in the right direction.

Teaching Programming To an 8 Year Old

My Dad has a website where he teaches parents how to develop talents in their children, and one of the people who bought his curriculum were some people who lived about a mile from our house.

Their 8-year-old son had an interest in general computer technology, and had the hardware and software to become good at programming. His parents asked me to come over to their house and teach him about computers and some general programming, and I showed them my 3D printer and Raspberry Pi projects (especially the wearable Raspberry Pi I'm calling WristPi), and basics on how they work. The son had a Minecraft account on the PC, and had just started installing mods.

I helped him out with installing a few mods, and how to switch versions of Minecraft depending on the mod version. I played a little with him on my server, and taught him how to use some of the more advanced mods. I listed a few sites where you could get mods, and where to buy the Raspberry Pi. I will be coming back in about a week to teach him some programming, and bringing a Raspberry Pi, too.