Saturday night update

It has been a pretty constructive weekend so far, which usually means that I won’t get anything done Sunday.

The main accomplishment was setting up a new Proxmox 3.2 server for my labrack. I am working on a VPN setup between two SRX units and I needed some end point devices. After some thought it occurred to me that the best way to do this was to use desktop VMs on proxmox. This way I could set the proxmox server up on the main network, but connect the other NICs to isolated networks off the SRXs. The desktops can be interacted with on the main network with proxmox’s excellent java console.

That worked pretty well but it did use up my last server so if I have any new project ideas that require hardware I’ll have to build another server. The server I used is from my previous generation of designs and was missing a lot of the features of the current generation that I really enjoy, like solid state drives, hot swap drive bays, fast Xeon E3 processors, etc..  I’m starting to source parts for a new server from ebay, but I am going slow and shooting for good deals for budget reasons.


[Pigeon Patrol]

The new proxmox server is my first one using the new 3.2 version. My two main servers are running 3.1 in a cluster. Proxmox 3.2 is still running the 2.x linux kernel so I will probably wait until a version running 3.x is released before I will upgrade my cluster.

I’ve been having a problem with the blog occasionally going offline. It looks like sql is running out of memory. I’ve been getting a lot of chinese spam recently, so the blog might be getting hit with a heavier load than normal, or it may just be a bug. If it keeps happening I will have to consider paying for more ram, or going back to hosting the site myself.

I started taking the practice exam for the JNCIA certification yesterday but immediately got hit with questions on a couple commands that I wasn’t familiar with. I want to get some practice in with Juniper routing to help me learn, but both of my spare SRXs are tied up in a VPN lab that I am working on. The VPN lab keeps getting more complicated with no end in site. The proxmox server that I was talking about earlier was built for it, and I also ended up setting up a layer 3 switch to simulate the internet between the two endpoints.



TWE programming update

Progress has been slow but steady on my java project: TWE. TWE (To Whatever End) is a java remake of a WW2 tactical combat game that I was working on in  college. I’m switching to 2d from 3d because I think all the modeling, texturing, and animation work ended up being too much of a distraction from what I enjoyed working on, which was mostly AI and world design code.

TWE_classesSo far I have mostly been working on the framework code for the game engine.

I don’t have any pretty pictures to show yet, but I am getting pretty close to finishing the basic rendering framework, so i will have to start working on textures for some test objects soon.

Getting the framework built is pretty much the worst part of the project for me. I want to jump into AI, and bullet physics, and complicated damage models, and moral modeling, but I need to press on and finish the framework code or I won’t be able to display anything on the screen.

This is my first big project with Eclipse and I am really happy with it so far. I had always shied away from it in the past because of all the buttons and menus, but it was actually really easy to get a project setup and it hasn’t forced me to use any of its gazillion little tools yet. I’m so used to doing everything in simple text editors these days that it takes a little adjustment to hop into a full featured IDE.

I’m working on TWE very casually–basically when I feel like it, but if the project takes off I will probably dedicate a tab on the blog to it. I always feel really inspired by reading the Dwarf Fortress devlogs, and I hope to eventually produce something that is similar (ie: free, massively complicated, and supported by a big community).


surge protection upgrade

I’m celebrating the start of monsoon season by upgrading the surge protection equipment for my racks.


Tripp-Lite Ultrablok Isobar. Aprox. $23 on Amazon.

My racks are protected by horizontal PDUs with surge protection, and UPS (which also have built in surge protection) but ideally I want to stop a serious surge at the power outlet before it comes anywhere near my equipment. The PDUs and UPS are not exactly cheap and although I would rather lose them than lose a server I would prefer to sacrifice a cheaper part. Enter the outlet surge protector. I bought the heaviest duty ones that I could find on Amazon, they were only $23 which seemed like a really good price.

Mounting them was really easy. They slide onto a small tab that you attach with the middle screw of the outlet cover and then you plug your equipment directly into them. Green LEDs indicate whether the unit is functioning or if it needs to be replaced.


Mounted on the wall

I can rest a little easier now knowing that there is another layer of protection between the storms and my electronics.

Centos 7 KDE Desktop is friggin cool


Centos 7 (KDE Desktop) VM running on Proxmox @ 1280×1024 Resolution with the Proxmox console

Wow the Redhat and Centos teams did a really nice job here. I’ve never had a desktop run so smoothly in a VM. The high resolution is also a huge plus. Every other distro I’ve tried out either maxes out at 800×600 or can’t run at all in a VM.

This is one area where Linux has always really lagged behind Microsoft. Microsoft VMs can be accessed at full screen resolution via RDP, whereas VNC seems to really struggle and often only offers low resolutions. I’m really happy with how well Centos 7 KDE runs in the Proxmox java console. I haven’t even tried VNC yet because performance is so good from the java console. By comparison the Gnome version barely ran. I think it is more GPU dependent, and the VM hosts don’t have any real kind of GPU capability.

I’m also happy to see that filemanager behavior has been changed from Centos 6. In Centos 6 it would open up a new window for every folder, which would end up filling my desktop with hundreds of windows. Centos opens the folder in the existing window–which is how “sane” people work.

I might try Centos 7 out on my laptop seeing  as how a recent Fedora update slowed down the trackpad so much that it takes 5 minutes to move the mouse from one edge of the screen to another. That’s the price for being bleeding edge :)

SSD storage

Here’s a screen shot from my main (Samba SMB/CIFS)  storage server:


Yup thats 5.1 GB used. Jealous?

I like to read /r/homelab when I have a little down time. For some reason there are a lot of people out there who feel the need to have massive 24 disk arrays in their basement. I always wonder what exactly they are storing. I’m using a 256 GB SSD in each of my Proxmox VM hosts and I run out of ram on the servers well before I run out of hard drive space. As the screenshot shows I only have about 5.1 GB of personal data, and most of that is really large HD photos that I haven’t looked at in years.

I get that some people have large movie and music collections, but lately I’ve been relying on Pandora and Amazon Instant Video, so that isn’t a problem that I have.

Having all of your storage on SSD is really awesome. I highly recommend it. I don’t permanently store anything on my desktop/laptop anymore. Everything thing is stored in a network share. That way I know that Proxmox is taking care of backups, and transfer rates are lightening fast from Xeon backed SSD. The only spinning disk I still have are two WD Red 2TB drives in my NAS. They get used for VM backups only. Backup is the only function where it still makes sense to use spinning disk.


saving Juniper configs

Just a quick post to highlight how to save Juniper configs to a linux box with ssh enabled.

I spent way too much time googling how to do this. I love Juniper, but they really need to work on making sure basic info can be found on the internet easily.  Of course Junos also saves 49 of your last configs locally, but it is always good to have a backup in another location.

note: this only works in ‘edit’ mode.


# save scp://andrew@


You can use the same syntax to load a config (don’t forget to commit afterwards)


# load override scp://andrew@




You can also setup the device to save a copy of the config on every commit, but its not something that I am using at the moment.


return of the standing desk

I moved my work room around a while ago and decided to move my main computer from my standing desk to a standard desk.

I started having back pain almost immediately. No matter how I position my monitors I always end up slumping forward in my chair and curving my spine.

I bought my standing desk on Amazon for about 160. It is currently available, but there are a lot of similar models (just search “standing desk”).


standingDesk[sorry for the weird angle. it looks a lot straighter in real life]

In order to make this work you really need to have a traditional desk or a couch nearby. That way you can sit down to read books and take a break from standing. The middle shelf comes in handy for holding books open while I’m trying to reference them for something I am working on. It is also a handy cell phone/stuff holder. I had my desktop on the bottom shelf for awhile but I kept banging my knee into it. It makes a better bookshelf anyways.

Just for fun here’s what I’m currently running for hardware

HP Z400 Workstation (quad core xeon, 8GB of ECC Ram, Nvidia graphics card, 128 GB SSD) [bought cheap off ebay. yay ebay]

I’m running Fedora 20 with the KDE desktop GUI. It is currently my favorite desktop OS.


I got started on building my Java 2d game engine today. It is going to take a long time to get it to the point that my C# 3D engine was at (years?) but that is ok; I’m happy to be making progress. Java is close enough to C# that I was able to jump in and start coding without having to crack a book open. Pretty cool :)

I am using a library called LWJGL. It helps me render things with OpenGL, and I am getting way better frame rates than I was with Java2D as a result. YAY


I am also making good progress with the JNCIA (Juniper Networks Certified Internet Associate). So far studying has consisted of taking notes from two massive PDFs. I’ve also been doing a lot of work with SRX gateways at work and at home, which has helped familiarize myself with the platform.

It is hard to compare the Juniper certifications to the Cisco certifications. I guess you could say that the JNCIA is like the CCENT, but the JNCIA is really Juniper specific. I think the Juniper certs assume you already have a basic networking knowledge and are therefore more focused on Juniper specific configs.

I will be scheduling the JNCIA exam soon, probably late July or early August.



I wrote a blog post about some frustrating things that are happening at my company, but I ended up reconsidering.

Suffice to say the next year will be interesting.


In other news I got my Juniper EX2200 up and running as my layer 3 “core” at home. Pretty cool. I might write up a post on the config, it went a lot smoother than I was expecting.

I also got started on building a Java 2D game engine. The performance of the Java 2d API in Linux was disappointing so I am looking into using a OpenGL library instead. Getting graphics rendering at a reasonable speed is always the hardest part. After that it is just game logic, and that is the fun part.


My cat has her own water glass, but I think she likes the challenge of poaching mine when I’m not looking.



The day backups changed my life


My world was pretty different in 2010. I had been working for about four years on a 3d real time tactical WWII sim/game.

The game was the most complicated thing that I have ever made, and it had some interesting features that I have not seen in any other games.

There were pages and pages of AI code that allowed the bots to do things like ride-share, shoot ahead of running targets, and work effectively in groups. They even had emotions and elected leaders.

I was hoping to teach them to fly, but I had to fix the aviation physics first.

I was hooked on Microsoft’s Visual Studio and C#, and I was pretty decent at game programming.


A Fieseler Fi156 “Storch” in my game engine

At the time I was doing all of my game programming on a desktop and backing the files up to a NAS (freenas based) with one disk. The NAS was being backed up with automatic online backup software that was installed on the desktop.

I had recently re-installed Windows on my desktop, but had not copied over my programming folder yet because I was focused on other projects.

I was working on building a new NAS and had pulled the usb stick with FreeNas on it out and updated it to use with the new project. When I put the usb stick back into the original NAS it didn’t recognize the original volume and a volume import failed.

I wasn’t worried at this point because I thought I had everything backed up online. However when I went online I found out that nothing was backed up. As far as I can tell the backup software wiped the data when the NAS went down thinking that I had deleted it.

I had just lost all of the software that I had written in my entire life up until that point including:

pigsim2 (java guinea pig game)

LOTR game from highschool (java LOTR game, never finished. but I made a lot of great 2d art for it)

TWE (my WWII game, about 4 years of work)

An economics game that I wrote for a city council

A ton of python and c# utilities.

It was so devastating that I basically stopped programming entirely for three years. I also made the switch to Linux because the main thing holding me back was all of the time I had spent on Windows software.

These days my backup strategy is a little better:

My programming folder is still on my desktop because I have not figured out a way around that. Every time I update the files in it I back it up to a share on a VM on my Proxmox cluster.

Proxmox backs all of the virtual machines up to a NAS (synology. raid1 with 2 TB drives). Proxmox keeps 14 days worth of backups for every vm. About once a month I manually back up the data to cloud storage.

I also keep my “production” gear separate from my test gear so I am not tinkering with my backup equipment. :)