Browsing: Random Parc

My Combat Robot, Will Turner

My 1LB Combat Robot, Will Turner

I built a 1LB Combat Robot over the course of the past few months. It has been a lot more fun, and stressful than I ever thought it would end up being. I even managed to compete down in Texas on June 2, this year. The process to get there has been fun, and also a lot longer than I expected it to be.

It all started about eight months ago when I bought myself a 3D Printer, the Ender 3. 3D printing as a technology has always fascinated me, and when I say always, I mean for at least ten years now. It was only recently that strides have been made in the technology to allow it be much cheaper, as well as reliable enough to be used by the masses. I have also managed to find steady employment and time enough to work on my printer.

I was originally inspired to make my own combat robot by the /r/battlebots subreddit. It’s a mix of a TV show fan-base, as well as a community for amateur builders. I followed it because I am a fan of big robots destroying the crap out of each other, and was introduced to the hobby side of it.

This hobby side is what I am happy to talk about today. Battlebots as a genre is generally limited only by weight, and un-fun weapons. Things like nets and radio jamming aren’t fun to watch or fight, and so they are disallowed. The only other real limit to what can be built is your imagination. The battlebots TV show usually has robots that weigh between 60 pounds and 340 pounds. Its an awesome amount of destruction, and totally worth watching.

However, these huge bots are hard to start making, and expensive to maintain. Going all the way down to one and three pound robots is a lot easier, and also a lot less expensive. This is where my 3D printer comes in. It is not only viable, it is actually often done where a robot uses 3D printed materials as their robot body / base. And thus; the seed of my idea was planted. I have a 3D printer, why not make my own tiny robot to fight with?

Parts for my robot ended up being well, not cheap. I had no RC equipment when I started, and had to buy everything from scratch. I also had no real tools to work with besides the very basics, so I had to buy that as well. However, for the robot internals alone, with spares, it cost me about $200. I also had to buy a radio, and the aforementioned tools.

Plastic for my robot is actually really cheap, which is a good thing. I ended up making a LOT of prototypes. A roll of 1000g of plastic costs about 18$, and each body I made ended up weighing about 80g. So, doing the math, about a dollar each. I switched materials from PLA to PETG (easier to print and cheaper vs more impact resistant) when the prints changed color.

Printed protypes, left to right, oldest to newest. I switched materials once I was fairly confident that it would be put to use.

Far left, I was testing mounting sizes for the internals, as well as various layout options. Next left weight too much, and the gears I had set up for it would not be stable enough to work. Middle bot had support for two drills, but that one would never make weight limits. I have vague plans of two drills in the 3lb category. Far right where minor revisions and fitting adjustments.

I also broke my weapon motor in the middle of testing and fitting, about a week before the combat event started. Luckily, the local hobby shop had a replacement, even if it wasn’t cheap.

As for the design, well, someone on the internet told me that drills were a bad idea. I wanted to do something original badly enough that I decided to take that as a challenge, rather than a discouragement. So far, the guy has been right, but I’m not done exploring this concept yet.

My original idea was an underminder style bot, that would go around poking holes in the other robot. This idea had a lot flaws, so my goal was to mitigate or outright remove them as I found them. Ideas for shovels to push other bots into my drills where added then discarded for weight reasons, dual drill setups where added, then removed for weight reasons. Different wood drills where added, then removed last minute, for weight reasons.

The final design literally wasn’t finalized until I left for the competition, the morning of. Despite all this, I managed to tie for fourth place with my bot at the competition. Okay, due to the way the tournament operated, I lost before I could compete for third place. Regardless, I was very surprised with how well my robot ended up doing.

My brother, and totally awesome person, helped me with the whole process the weekend before, and I could not have done this without him. He also filmed the fights.

The first fight I did was vs another new builder, who had a saw on a moving hand. Since I had never been in a bot fight before, (much less practiced driving my bot) I was basically going in blind, and hoping for the best.

It turned out about as well as a grinder vs plastic could have gone. I also had issues moving, due to me not thinking about castors at all, and issues with the drill being, well, useless. I tapped out when all the power wires were cut. I spent a good half hour resoldering them all with my brother. If someone else hadn’t dropped out, this also would have been the end of my robot, because I didn’t have it all put together in time.

However, I did end up having enough time to resolder all the wires, (barely) and was able to continue fighting. I was still having issues with the movement at this point, and I also didn’t change the battery out, because it would take too long to do. A guy who was there suggested I tape over the screws I was using as castors, and that ended up working way better.

Strategy for this fight was honestly to try to make some scratches on the other bot, and maybe push them into the hazards. The lip on the edge discouraged the last half of my plan, but I think i might’ve succeeded on the first half of my plan.

The second fight went to a judges decision, and I ended up winning that fight, so the judges figured I did enough to get a win. I switched the batteries, and since I sustained no damage that round, I waited for the next fight.

This fight was actually rather sad to watch, as both of our weapons were having issues. Mine kept getting caught on the inside of my bot, and his, well, he just got completely destroyed by one of the top three bots in his previous match. I ended up winning because his bot stopped working, for whatever reason.

It was around this time that my brother noticed that I was continually switching my weapon on and off, with a knob. He was awesome enough to change that particular control to a switch, which made turning it on and off a lot easier. Since I didn’t sustain any damage from that fight, I charged my batteries and waited for the next fight.

My plan was to poke my drill in the hole left by previous fights in the other bot, then turn it on and wreak havoc.

Unfortunately, my drill got actually caught on the inside, and I wasn’t able to turn it on. Howe3ver, the other bot lost power to its wheels, and so I won anyways.

I spent some time playing with the drill after the fight, and it turned out that the inside of the bot was slightly too small, and the set screws were catching on the body of my bot. I turned the drill some, and hoped for the best in the next fight. I did also take a hit from the other bots spinner, but it didn’t stop my bot at all.

Next fight, my bot was running on hopes and prayers. The drill bit would catch regularly when it was turned on, and i had a lot of holes in my bot that I didn’t make for weight reasons.

And that was the end of my winning streak. It turns out, survivability is king when it comes to battle bots. If your bot can’t last the whole two minute round, then you have lost by default. My bot had a terrible weapon, but it was able to survive much longer than a lot of the other bots, and ended up placing much better because of it. However, as soon as I went up against a bot that had weapons that broke my survivability, I ended up losing.

Since my bot lasted acceptably long, my focus for the next competition will be to make the drill much more durable on the inside, as well as much more free spinning. I plan on competing July 6-7, so expect a new post around then.

{ Comments are closed }

I Switched Webhost and Domains

So, there i was, happily browsing the internet and not actually caring about what was going on at my website. For almost a year, maybe two, or three. Then! Suddenly 000webhost, my old host, decided it was time to overhaul their old cpanel. They claimed it hadn’t changed in almost ten years. Forever in internet time. So they sent me an email about it. I didn’t actually care too much about it; at least not until i read their email completely and found out the process involved backing up my website and then restoring it to the new control panel.

It wasn’t actually that big of a deal, it just meant i needed to spend some time on my website and make sure it was all working as it should. Problems arose when i was never able to access the new control panel (they claimed the new and the old would run seamlessly together, but it didn’t). Also, as a free webhost, stuff like ftp backups and php scripts had strict file size limits and time limits too. So, i switched to an inexpensive webhost, paid for four years, and got a real domain while I was at it.

I also spent a week trying to find a good migration plugin, that worked within my old hosts limits and also did all the things i needed it to do. (Half of them don’t even support restoring from backups they create!) I felt really stupid when I noticed the built-in export function that wordpress has.

It should all be here now, if you notice something off send me an email at admin@dageek247.com or post a comment. They all go straight to my personal email and i check that hourly.

Shout out to dot.tk, they’ve hosted my old domain since february 2011, and did a fantastic job of it. I’m using their new paid domains and have high hopes for the next four years with them.

{ Comments are closed }

I commissioned an art piece

It was by Amirai of amarai.net. The theme I asked for was Avatar bending, with a focus on how powerful bending is compared to the actual people doing it. And also blue. I like blue.

Amirai - commission - downscaled

 

Quite frankly, I absolutely love the result and wholly recommend the artist to anyone interested in paying for some quality art.

{ Comments are closed }

WPA Password Verification Tool

I was going through my computer projects and realised that I never shared this one on my website. It’s a tool, coded in C++ that checks a text file for WPA/WPA2 password compatibility. It is most helpful in network security applications / pentesting when you have a password list and aren’t sure just how much of the list is actually a legitimate password.

For example, we have a text file with these contents:

Good Password
good password

Good Password 1234567890
good password 1234567890

GoodPassword
goodpassword

BadPass
badpass
badpa55

badpas™
BadPas™
B3dPas™

This is a bad password because the character length is way above the maximum limit of 63 characters, and WPA won’t allow such horrible things to exist in the first place anyways.

If we run the tool on it, we get these results:

A picture of the tool in action

 

Finally, here is the source code of the project. It should be able to be compiled with just about any compiler on any operating system.

#include <iostream>
#include <fstream>
#include <string>

int help(char *argv[]) {
std::cout << “Usage: ” << argv[0] << ” <PasswordFile> [Options]” << std::endl;
std::cout << ”  Options:” << std::endl;
std::cout << ”    -wpa  Verify password list using WPA Rules (WPA uses same rules as WPA2)” << std::endl;
//std::cout << ”    -clean    Automatically delete invalid passwords from file” << std::endl;
std::cout << ”    -goodlist Print all valid passwords” << std::endl;
std::cout << ”    -badlist  Print all invalid passwords” << std::endl;
std::cout << ”  Example:” << std::endl;
std::cout << ”    ” << argv[0] << ” passwordlist.txt -wpa -badlist” << std::endl;

return(1);
}

int does_exist(char *filetouse) {
//first check to see if the cfg file exists
FILE * pFile;
if(pFile = fopen (filetouse,”r”)) {
//the file exists
return(1);
} else {
//the file doesnt exist
return(0);
}
}

int verify(int argc, char *argv[]) {
//variables for later usage
//booleans for user options
bool wpa = false;
//bool clean = false;
bool goodlist = false;
bool badlist = false;
//strings for file reading
std::string password;
std::ifstream infile;
//strings for password statistics
int numberoflines = 0;
int numberoftolong = 0;
int numberoftoshort = 0;
int numberofbadchar = 0;
int numberofgood = 0;
int numberofempty = 0;

const char *filetouse = argv[1];

//check all the options
for (int i = 0; i < argc; i++) {
//options are -wpa -clean -goodlist -badlist
std::string options[4] = {“-wpa”,”-clean”,”-goodlist”,”-badlist”};
if(argv[i] == options[0]) {
wpa = true;
}
/*if(argv[i] == options[1]) {
clean = true;
}*/
if(argv[i] == options[2]) {
goodlist = true;
}
if(argv[i] == options[3]) {
badlist = true;
}
}

//read the file line by line and check to see if the passwords are right
infile.open(filetouse); //open the user file
while(getline(infile, password)) { //while not the end of the file
//getline(infile,password); //read the current line to std::string password

//count the lines in the password field
numberoflines += 1;

//check password
if(wpa == true) { //if checking WPA Rules
if(password == “”) { //empty line
//skip empty lines
numberofempty += 1;
} else if(password.size() > 63) {
//password is to big to be used
if(badlist == true) {
std::cout << password << std::endl;
}
numberoftolong += 1;
} else if(password.size() < 8) {
//password is to small to be used
if(badlist == true) {
std::cout << password << std::endl;
}
numberoftoshort += 1;
} else if (password.find_first_not_of(“!\”#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ “) != std::string::npos) {
//password contains a bad character
if(badlist == true) {
std::cout << password << std::endl;
}
numberofbadchar += 1;
} else {
if(goodlist == true) {
std::cout << password << std::endl;
}
numberofgood += 1;
}
}
}
infile.close();

std::cout << “Checked ” << numberoflines << ” passwords.” << std::endl;
std::cout << ”  ” << numberofempty << ” lines contained no text” << std::endl;
std::cout << ”  ” << numberoftoshort << ” lines were to short” << std::endl;
std::cout << ”  ” << numberoftolong << ” lines were to long” << std::endl;
std::cout << ”  ” << numberofbadchar << ” lines contained illegal characters” << std::endl;
std::cout << ”  ” << numberofgood << ” lines contained good passwords” << std::endl;

return(0);
}

int main(int argc, char *argv[]) {
if(argc <= 1){ //not enough options so help is shown
if(help(argv)) {
std::cout << “Fatal error. Quitting program.” << std::endl;
return(1);
} //else program is working fine
} else { //plenty of options, better check to see if they are the right ones
if(argv[1] == std::string(“help”)) {//display help
if(!help(argv)) {
std::cout << “Fatal error. Quitting program.” << std::endl;
return(1);
} //else program is working fine
} else {
if(does_exist(argv[1])){
verify(argc, argv);
} else {
std::cout << “Invalid file” << std::endl;
}
}
}
}

 

{ Comments are closed }

How I Explain Bitcoin

On a group of tropical island there are three native tribes each with their own chief and tribesmen. The first island tribe produces fruit and other agricultural foods. The second tribe is able to provide animals as well as meat. The third tribe provides cloth and small kitchen appliances.

Rather than fight and war over these essentials, the three tribe leaders have a meeting to decide the best way to trade their products. One tribe leader says that the best way is to trade in equal measures of weight. This would not work because the cloth and small kitchen appliances tribe would not be able to provide enough weight to get enough things of value.

The second tribe leader suggested they have a monthly trade of equal use between each other. One tribe supplies enough of their item to the other two tribes to last the month. While this would work between the hunters and the farmers, it would not work between the cloth and kitchen appliance tribe because kitchen appliances tend to last longer than meat and corn.

The third tribe leader suggests they use a form of currency. Thus far this is the most agreeable method, but they have a hard time picking a good item to use as money. Gold is too rare, and it was hard for them to make something easy to trade but hard to duplicate.

Then one of them has another idea. Why not go to the mainland and mine large stones to use as money? They would be hard to get, and everyone would agree to use them as trade items. The other two agree on this and the tribes finish their meeting.

The three tribes are happy to spare a few tribesmen to go and mine large stones to use as currency from the mainland, and since they are hard to get, nobody has any issue with gaining to many stones to quickly. However, moving these stones between the islands is a huge pain and a hassle to do. So rather than moving them every time someone buys a a cow or small kitchen appliance, they just decide to say that the stone in a certain spot belongs to this one guy.
This works out well for them. The tribes all agree that each stone has it’s own owner, and that the stone can change hands just by telling the other chief about the exchange. The stone never actually moves, but the trade is easily made, and all the tribes know about it.

On one particular mining trip, the boat carrying the stone and the tribesman gets caught in a storm. The tribesmen survive, but they are forced to drop the stone in the ocean. When they come back and tell the other tribes, they all agree that even though the stone is at the bottom of the ocean, the tribesmen still earned it, and it can still be used as currency. Bitcoins are like the stones. They have no real value, other than what we agree on. There is no real benefit from mining them alone, but they are usable nonetheless. Everyone has a record of who owns what bitcoin, and this record is called the block chain, or history of transfers. There are people who can mine more bitcoins, but it is a huge effort, and not always worth it.

{ Comments are closed }

SMBC Comic Challenge

So, on one of my favorite web comics I read this. The comic is about a an application a person created. The application, dubbed “Conception Connection” takes your birthday, and tells you what events may have aroused you parents when they conceived you. It makes for a great little joke at the end.

Now here is where I come in. At the end of the comic there is a red dot. If you mouse over this dot you will see the text “50 internet points to whoever makes it!”. Being challenged thus, I could not refuse and I created this. It is one of the things I am more proud of, because not only does it work, it looks good doing it. Needless to say, I am very happy with the way it turned out.

You can see the source code for the main script over here, highlighted and looking pretty. Once it has your birthday, it goes over to On This Day and takes the events they have so wonderfully made available for us. It then parses the correct html and makes it available similar to the way shown in the comic. However, the script has to go through about forty different pages looking for events that mach the date correctly, so it takes a lot of bandwidth.

That is why I emailed the owners of On This Day, and asked permission to leave it up and make available for everyone else. To my utter delight, they replied and said it was perfectly fine as long as I put a link to their website on it. Here’s the proof.

I hope you guys enjoy messing with my new toy, I know it was a lot of fun making it. I also know it’s been a little while since I posted anything worthwhile, but I do have other project ideas percolating in my head, one of which I have already started on.  Until then, I wish you all a good morning.

{ Comments are closed }

Interesting Recent Doings

Hey guys, sorry it has taken me so long to make another post or update anything, but its getting close to the end of the school year so I have been fairly busy. Anyways, I figured I needed to give you guys some info on what I’ve been doing lately, or some of the stuff that I have been involved in.

Recently (for a while actually), I have been working with a company called ‘Kanyon‘, and they do (mostly) java software development. I found them through their (java) autotyper, and we hit it off. The java autotyper isn’t open source, but it is free  and it has an almost completely different feature set from my autotyper. We are also working three other projects at Kanyon. If just for the autotyper that can run on any pc with java, you should go check them out.

I have also been working on a project with another guy online (we started it ourselves) called IntrepidZ. Basically it is a Open Source zombie survival game based on the project OctaForge. We have been getting our story for it all set up and have been working on some basic map work for it. If you are any sort of game designer (mapping, graphics design, audiophile, etc) then we would love to have you.

So that’s it. go check out Kanyon and see what you think of the autotyper, and if you can come and help us out with IntrepidZ.

{ Comments are closed }

WordPress Update

Today, I decided to update to the newest WordPress installation. Thank goodness for backups.

Basically, I clicked “Update Now”, and it didn’t work. I had to download the new installation of WordPress, and restore all my changed settings, and do the backup. That’s why my site was down for the most part of an afternoon.

I also was notified about my not having proper instructions on setting up my Linux autotyper. Oops! I will have that fixed fairly soon. Until then, go backup your site! 🙂

{ Comments are closed }

Extensions Every Chrome User Should Have

I find more often than not that those who have the chrome (chromium or google chrome) browser have no idea how to even use extensions, much less see what they can do. This is upsetting because i cant stand when people want it to ‘just work’ and are content when its not.

Anyways, I have compiled a list of extensions that every chrome user needs, or should definitely have.

First off, is Chrome Ad Block. Ever been to a site that has great content, but has so many ads that it kills whatever is there? This nifty extension removes those ads, and makes it look the ad was never supposed to be there anyways. This extension, out of all the other extensions is my favorite. It doesnt download the ads, then remove them from the page, it removes them from the page and then downloads the page. for you non-techie people it means faster load times, and better all-around performance upgrade. If you get nothing else, this one is the one to get.

Next, is Vanilla Cookie Manager. I love this one because i love to hate tracking cookies. You know, the things that are used to let others see your browsing history. It works by deleting cookies off ALL the sites you haven’t allowed. This way, you don’t have cookies that are from unknown sites. If you set it to delete unwanted cookies every thirty minutes, and have the chrome ad blocker i mentioned, it keeps the super cookies in check too.

That’s it! With these extensions, you can be assured that you wont be tracked by anyone, and your browser will be all-around faster.

{ Comments are closed }