Friday, December 30, 2011
Blizzard auctioned off old World of Warcraft servers a few months ago http://us.battle.net/wow/en/blog/3710218. The server I have was Rexxar, according to it's plaque it was in service from February 10th, 2006 to June 9th, 2010. I leveled up my main on it a few years ago before transferring it off to join some of my guild migrating from a different MMO, Guild Wars. The servers they auctioned off were all pretty old HP Blade servers, I don't know much about them but it sounds like they were powerful servers in their time, power hogs and very noisy. Unfortunately, I haven't found any good sources of information about Blade servers yet, I tried contacting HP support but they haven't gotten back to me yet.
My blade server has three main ports I've found. One on the front, which I assume is for plugging in a terminal. Two in the back, one looks very much like a power port and the other is probably for data. I assume when the server lives in a rack, the power would plug into 48v DC and the data port would plug into some sort of very fast ethernet (I found at least one thing claiming this model used gigabit). I imagine I could hack power together to boot up the server, but I have no idea how I'd interface with it or connect it to the internet yet. Also, I don't know how well the server tolerates variances in voltage. Ideally I'll be able to find a small Blade server rack, but it doesn't look like any small ones exist. Maybe I'll get lucky and I'll run into someone with a space server rack. I'd love to be able to host stuff on an old WoW server.
Thursday, December 29, 2011
Recently, I decided I wanted to work on my RTS engine more. Fortunately I was using git at the time and found an old backup. I hooked up my old repository to GitHub and started working on it about a week ago. Fortunately my coding was neat enough so I didn't have to spend a while figuring out what it all meant.
Over the last week, I focused on implementing pathing. In most RTS's, units automatically find paths around obstacles. I don't know how other RTS engines deal with it, but I decided to break the map up into a grid of rectangular nodes, each of which has a flag for occupied or not. When a unit is ordered to move, it runs the A* search algorithm using euclidean distance as a heuristic to find the optimal path. The current version is a little glitchy, but it seems to work. At the moment it is very crudely coded and would break if multiple units existed on the game or if the pathing blockers moved. I need to clean it up a little, but it's a good proof of concept right now.
Friday, December 16, 2011
One of my current pet projects is about terminal emulators. In just about every terminal emulator I've tried (such as gnome-terminal, terminator, and many others) text does not get auto reformatted. That is, when I resize the window the text does not get reformatted to fit the new window size. Mac OS X terminals actually do auto reformat text nicely, as well as the GUI-est terminal I've ever seen. I wish I could get my hands on Mac's terminal's source, but it looks like it's closed source. The other editor is too GUI for me, although I might fish through it's source some day.
I discovered that screen partially does what I want. The output of programs like cat, less, and tail all get correctly auto reformatted. However, ls does not get auto reformatted. I haven't tested it much beyond that yet.
As an experiment, I decided to make have gnome-terminal run screen by default when I run it and do all of my work inside of screen. So far I've noticed almost no differences, other than the auto reformatting I described. The main difference is screen eats my normal ctrl-a for it's own commands. Ctrl-a a does work as a normal ctrl-a. I'm considering seeing if I can change the main screen key to something other than a, although I need to find a safe character first. Maybe I'll try to change it to Mod4-a instead.
In the meantime, I've learned a little more about screen. I learned about .screenrc, which as it sounds gets run when screen is started. Right now, this is my .screenrc:
Pretty simple, it suppresses the startup message that screen normally displays and switches off the visual bell. The visual bell is similar to the system beep, except instead of making a noise it flashes the entire terminal for a second. Useful, but I prefer the beep.
For anyone interested in screen who hasn't used it much, one of the most important things about screen is how to use screen commands. Ctrl-a by default is the prefix to most or all screen commands (I'm not sure if there are others). Ctrl-a ? will give you the help menu.
Thursday, December 15, 2011
Wednesday, November 2, 2011
Monday, August 8, 2011
Among other reasons (mainly procrastination), I've been avoiding posting because I've wanted to switch my blog over to running on my webserver. I finally built up enough interest in starting a build log for another project (a huge fish tank that suddenly became a challenge instead of a tedious bunch of gluing and waterjetting) and decided it was time to switch my blog over. I've imported my old posts and comments, although comments don't seem to be attached to the posts yet. All my posts currently say they are posted by anonymous, that's another thing I'll be working on.
I'm going to start learning how drupal works better and possibly finding some useful modules. There's a few things I want to add, the least of which is a simple way for people to follow this blog.
I'd prefer to use Google Plus as a backend somehow for it's circles system. I'd love to be able to easily select between groups of people to send posts to, especially if it was linked to the work I already put into G+ to sort everyone. I'm thinking about poking the G+ API (I believe there are some unofficial ones, I don't know of any official ones) to use drupal as a way to display posts written on G+ with the same view permissions as would be on G+.
Anyway, my blog's url is now http://alex.willisson.org/blog/ Please change your links accordingly. Shoot me an email at firstname.lastname@example.org if you have any suggestions/feedback/complaints. You can try leaving comments here, I haven't really tested anything yet so I don't know what'll happen.
I'm copying this post to my blogspot blog so people I don't catch will be forwarded along to my new blog.
I have an rss feed set up now, unfortunately right now the only link is a tiny annoying button at the bottom of the page. To compensate, here it is: http://alex.willisson.org/blog/rss.xml
Sunday, June 19, 2011
Sunday, June 12, 2011
Wednesday, June 8, 2011
Sunday, June 5, 2011
Saturday, June 4, 2011
Wednesday, May 25, 2011
import randomalpha_left = ['r', 'q', 'w', 'e', 'r', 't', 'a', 's', 'd', 'f', 'g', 'z', 'x', 'c', 'v', 'b']num_left = ['1', '2', '3', '4', '5', '6']symbols_left = ['`']alpha_right = ['j', 'k', 'l', 'n', 'm', 'h', 'y', 'u', 'o', 'i', 'p']num_right = ['7', '8', '9', '0']symbols_right = [';', "'", '[', ']', '.', ',', '/', '-', '=', '\\']left = [alpha_left, num_left, symbols_left]right = [alpha_right, num_right, symbols_right]def gen_pw ():passwd = ""for i in range (8):if i % 2:cata = left[random.randrange (3)]else:cata = right[random.randrange (3)]passwd += cata[random.randrange (len (cata))]return passwddef check_pw (p):has = [False, False, False]for c in alpha_left:if c in p:has = Truefor c in num_left:if c in p:has = Truefor c in symbols_left:if c in p:has = Truefor c in alpha_right:if c in p:has = Truefor c in num_right:if c in p:has = Truefor c in sym1ols_right:if c in p:has = Trueif False in has:return Noneelse:return ppwlist = while len (pwlist) < 25:tmp_pw = check_pw (gen_pw ())if tmp_pw:pwlist.append (tmp_pw)print pwlist