" itemprop="description"/>

JSE's Blog

Jonah's blog is here

So someday I'd like to write more about NTFS and Linux support of the Microsoft designed file system overall, however too much to do now -- like redesign this blog, so perhaps I'll do this some other day.

What I wanted to write about today is simply a quick tweak I do on many linux distros that helps improve NTFS performance, and make mounting filesystems instant like windows. This makes, for example, having multiple disks easy to work with without having to muck around with /etc/fstab if you have a disk you want to work out of instantly upon boot without having to manually mount them -- something I occasionally do.

Anyhow, to do this, I use a daemon called "udevil" (a play on udev). "udevil" will automatically mount filesystems as soon as they're connected, and it has the added bonus of you being able to specify which mount options you want as well.

Because one thing you might realise about NTFS support (using ntfs-3g, the FUSE ntfs driver that pretty much every distro currently uses) is it is crazy slow. Thankfully, there is a mount option called "big_writes" which you can apply to NTFS-3G which speeds up write operations. There's discussions on the internet about what this does but the tl;dr of it is: 1. It makes NTFS write operations faster on linux 2. It's safe to use (so why isn't it default!?!?)

Now of course, you can always just mount ntfs manually with big_writes and not use udevil. In my cause this isn't convenient so the rest of this post is about automating this task.

So first, install udevil on your distro: Debian/Ubuntu: sudo apt install udevil Arch/Manjaro: sudo pacman -Syu udevil

Next, go to /etc/udevil and edit the file udevil.conf

Scroll down to the "default_options" section and find the line default_options_ntfs. You will see a number of options there which udevil will use when it automounts ntfs drives, with each option separated by a comma. At the end of the line, add the option big_writes after a comma.

Next, scroll down a bit more and you'll see allowed_options. Add big_writes to allowed_options as well. You will likely notice there is no allowed_options_ntfs section on most distros. You are free to add this if you like, however there is no harm in my opinion to just add it to allowed_options.

Save and exit the file.

Now, I'm going to presume you use systemd. You must enable a service called "devmon" to make everything work. Devmon requires a username specified, in my cause, my user on my system is jse, so simply running: sudo systemctl enable [email protected] Will enable the service.

To avoid rebooting and use devmon now, you can then run sudo systemctl start [email protected]

And of course, if you change the config, go ahead and restart the service. Don't forget if you misconfigure it (such as forget to add the mount option to allowed_options which is what I initially did lol), log files are your saviour ;)

Hope this helps. Enjoy the automounting and better NTFS performance! :)

So OVH has it's pros and cons. Ok... well... lots of cons, but the main pro is that they're cheap for dedicated hardware.

So anyway, I have this problem with SSH dying ALL THE TIME if you leave the prompt idle, and it's super annoying. Thankfully, this is easy to fix with your client alone. Here are the settings for each of the work environments I use:


On windows, you probably use putty. If you don't, well, I don't judge. Maybe you judge me, I use putty.

Anyway, all you need to do is go to the "Connection" category, and set the keepalive interval to something like 30 seconds. If you use profiles, just save the profile too.

Putty keep alive interval screenshot


On linux, just go to your ssh_config file. Not to be confused with sshd_config, which is for the ssh server, this config file is for the openssh client that is pretty much included with every distro.

Generally, this is located in /etc/ssh/ssh_config on every distro I use, but if not, look for it.

Just add to the config: ServerAliveInterval 30 Or whatever interval you want, again, this is in seconds.

Ok thanks have a good day! o/

So a while back I posted this video on getting osu! working on linux. It was incredibly low effort (like so low effort I cringe just watching it) so I thought it was hilarious it even has gained the views it has, but whatever. There has always been numerous guides on the internet regarding osu! Linux support, but I've found the best, tried and true method for getting it to just work is to use the Lutris installer. It's not perfect, but it doesn't require any of the tedious tinkering many of the other guides suggest.

Now thankfully, osu!lazer is becoming more and more feature complete as the days go by, so soon we will see it eventually support online play, which has full Linux support, but in the mean time wine is where it's at.

Wine is to the point that, with the easy tweak scripts provided by Lutris, the ability to run osu! (and many other Windows only games) on Linux is pretty much flawless. Even the bugs I encountered in the video I made don't seem to happen anymore, at least for me, so it seems things have improved even in the last year or so.

One thing that has changed though is Discord-RPC. You might notice, if you check the Lutris install script, that it fetches a discord-rpc.dll to override the one osu! (used to) provide. Why?

Well the reason goes back to the differences in Windows vs Linux IPC (Inter-process communication). Discord RPC on Linux uses UNIX sockets for games to communicate with the discord client, but not for Windows of course. The modified discord-rpc.dll file was designed to translate the Windows Named pipe (how discord and games communicate on wind0ws) to something Linux can understand, and thus worked with the Linux client. Unfortunately, due to some changes, discord-rpc.dll is no longer in use by osu! it seems, so the file gets instantly deleted from the install, regardless if you copy the modified dll or dll that was originally included discord-rpc.dll file.

Anyhow, back to wine. Since wine implements Windows functionality, including named pipes, I wondered why can't we just get the Windows version of Discord working. This actually worked, to my surprise, as I know Chromium (which Discord uses in the background) has traditionally not played well with Wine. Seems wine has improved immensely in that regard.

The new ("easy") solution I use now for getting Discord RPC working with osu! on linux is to merely run Discord's windows client itself on the same wine prefix as osu! is running on.

What's a wine prefix? Think of it like a "virtual" install of Windows, only, it's wine. Given how wine is finnicky at best sometimes, the general practice is to install each application, or game, in a unique prefix. This is because depending on the app, sometimes an app requires dependencies that are incompatible with another app. This isn't always because the app itself would behave this way in Windows, but because some libraries may not work for wine unless it's appearing as a different version of windows.

Anyhow, we can't follow the general "each app in it's own prefix" philosophy in this case, since each instance of wine cannot communicate with each other. Instead, you need discord to run in the same prefix as osu!

Thankfully, it appears Discord will generally install nicely on wine of any recent version. You do seem to need .net installed for it to work, but after that the installer, and client will load up correctly. osu! requires .net anyway (lutris installs 4.5.2) so since we're going to be installing discord in the same prefix, we don't need to worry about any winetricks.

There are a couple key changes you will need to make in winecfg first however. First, you need to change Wine's windows version from "Windows 2003" to "Windows 7". In case you're wondering why it's Windows 2003 to begin with: Lutris calls on winetricks to install .net 4.5.2 (as is necessary). Part of this "winetrick" is to set the Windows version to Windows 2003 to work around some bugs that it would otherwise encounter. Now, I'm not certain if those bugs are just related to installing .net itself, or with certain functions that are incompatible otherwise in .net (perhaps there are bug reports on winehq or with winetricks that discuss this), but I've not encounted any bugs doing this regarding discord + osu!

I did, however, try setting it to Windows 10 as well, but setting this causes super amounts of lag to the osu! client when you attempt to search your beatmaps, so if you feel Windows 10 might be a better choice, I advise you don't. Still, your milage may vary. Consider yourself warned if you decide to play with this.

Next, and this is important otherwise the discord client would eat my mouse due to this bug, you need to disable your Window manager from decorating Wine Windows, which is on the graphics tab of winecfg.

Once you've made these two tweaks, installing and using discord seems to work fine, and as long as osu! is running after you've opened the windows version of Discord, RPC will work. If this is all you're after then problem solved! Enjoy your discord RPC integration in osu!. Just remember to launch discord in the same prefix before osu! to get RPC integration.

Okay now for some additional ramblings not really related to Discord RPC + osu! on Linux.

You may now find yourself being tempted to switch to the Windows discord client and dumping the linux client. It appears to work at first glance, right? So why have a notorious electron app running twice in the background anyway?

First off: I was pleasantly surprised at just how much of the client is functional. However, as soon as you make a call or join a voice channel, you'll probably notice the problem. Discord will crash, reload, then reattempt to join again, only to crash again since joining is what caused this issue in the first place. Rinse, repeat. If you happen to have the debug info, you'll probably notice the console output say:

wine: Call from 0x7b031dbf to unimplemented function qwave.dll.QOSAddSocketToFlow, aborting
wine: Unimplemented function qwave.dll.QOSAddSocketToFlow called at address 7B031DBF (thread 00f0), starting debugger...

It seems qwave.dll in Wine is just a stub library, which discord makes a call to for an unimplemented function that doesn't exist in the dll, causing the app to crash. Thankfully, this library isn't too special in that you can easily trade in this DLL for one from Windows and wine will work with this just fine.

Now just to be clear, swapping out dlls in wine for windows ones probably violates some Microsoft license, not to mention it can result in catastrophic behavior from wine, but that's up to you to deal with. Let's just say though, that there are a number of websites on the internet that allow you to download this DLL. Just make sure you get one from something like Windows 7, since I read somewhere there are API calls in newer versions of this said library that Wine doesn't support yet. I went with a version 6.0.6001.18000 of the DLL, which I think is from Windows Vista since NT 6.0 was Vista.

You will need to get the 32bit version of this dll and paste it into your system32 directory of the wine prefix. If you happen to be using a 64bit prefix, then you will need to paste it into your syswow64 directory instead. In my case, syswow64 doesn't exist as Lutris just makes a 32bit prefix for osu!, so mine was located at /home/jsebean/Games/osu/drive_c/windows/system32/.

Once I did this, I went to winecfg, went to the DLL Overrides section and changed qwave to native since this is a native DLL, not a wine dll, then just restart discord. Now, connecting to voice channels works perfectly in wine. Hooray!

Now all that's left is to make an easy to use shortcut to launch discord. I did this in Lutris by just hitting the + button in the top left, click "Add Game", enter in the name Discord and pick wine as the runner. Finally, and this is important, you need to clone all of the settings you have from osu! as this runs in the same prefix except for the executable. Be sure to toggle "Show advanced options" at the bottom to see them all. For me, the options are setting the executable (For me, I just set /home/jsebean/Games/osu/drive_c/users/jsebean/Desktop/Discord.lnk). Fore prefix, it's /home/jsebean/Games/osu, set 32bit for the prefix, set the wine version to be identical, and whatever other options are set. Typically "reduce pulseaudio latency" is also set, but I turned this off.

After all that Discord should get it's own launcher in Lutris and you can easily create a shortcut. Everything seems to work now :)

Now here's to hoping we might see this API become available in wine so all this hackery wont be needed in the future.

UPDATE: It appears this bug has been fixed and everything should work fine in wine 5.4. It has also been backported to 5.0.1.

So it turns out the OBS Studio build available in the Ubuntu/Pop!_OS repositories doesn't support anything other than X264. This sucks for people who don't have crazy good CPUs like me.

However life shouldn't be that hard when it comes to live encoding h264 video, since OBS supports the ASIC encoder built into my nvidia GPU, yet the option is not available?

Turns out, you need an ffmpeg build specifically with NVENC support. There are tutorials online that show you how to do this, but my goal of using desktop linux is to not have to be a l33t h4x0r just to get things to work.

Thankfully, getting OBS with nvenc (and supposedly Intel vaapi) doesn't involve having to follow tutorials on how to compile something. Instead, this is from the power of containerization: Canonical's snapd.

On Pop!_OS, be sure to run sudo apt install snapd. Also, feel free to remove OBS which you may have installed from the repos with sudo apt remove --purge obs-studio.

Finally, run snap install obs-studio. Vioila! You've got a fully nvenc supported build of OBS! Congrats.

Just one note, if you go to the snapcraft page here regarding this package, appearently there are a couple commands you should be aware of for getting cameras or removable storage to be accessable to OBS. sudo snap connect obs-studio:removable-media sudo snap connect obs-studio:camera

The snapcraft page also mentions some workarounds if you run into known bugs at the time of writing this blog post which might be worth paying attention to if you notice weird behaviour.

WARNING: Back up your data before doing things I suggest here. Odds are you will break something so don't blame me as this may not work for you... do it at your own risk ;)

So I got a new 275GB Crucial SATA SSD for Christmas for my budget i3 desktop rig that I wanted to move my windows install over from a 500GB HDD. The last time I used clonezilla was a number of years ago (like 2007!), but I had a relatively clean install of Windows with only a few games and programs installed on the hard drive that I wanted to move over preferably without reinstalling Windows all over again since it is still effort. Why make extra work if you can help it?

Clonezilla isn't really made for moving data from a larger drive over to a smaller one like this using d2d cloning, which I guess makes sense, but that doesn't mean we can't make it work. Of course, you can't have more data on the source drive than what the SSD can hold, and who knows what other unknown issues might come up, but I only had the HDD 75GB full and it worked for me. Here's the step by step on how I made it work. Note I'm running Windows 10 Home on UEFI.

  1. In windows I first opened Disk Management (right click This PC in start and click manage) and shrink the partition down on the source drive to something less than the SSD so nothing funky happens.
  2. Create a bootable USB for clonezilla. I simply downloaded the clonezilla ZIP archive, and copied the files over to a blank USB drive formatted as FAT32. Then the F11 menu on my MSI motherboard detected it perfectly on reboot.
  3. Boot to clonezilla (I boot to RAM and remove the USB drive as soon as the blue screen comes up just because I think I recall clonezilla listing the USB drive back in 2007 when I last used it and I wanted to avoid any potential confusion as I'm simple minded. If it's not plugged in, it wont be listed as a disk, right? ;) ).
  4. Choose local disk to local disk cloning (or however it's worded) and then when asked to use Beginner or Expert mode, choose expert mode. You'll have to pick your source and destintion disk but this was pretty easy to understand minus the standard sda/sdb linux disk naming, it shows the disk drive size too so pretty easy to identify!
  5. In expert mode options, I left the flags that are already selected default but I turned on -icds which skips checking disk sizes.
  6. After that I chose k1 option on the next screen and watch it go.

THE LAST TWO OPTIONS ARE NECESSARY for this to work. If you forget the icds flag or the k1 option afterwards it will fail if not destroy your data if you screw something else up.

It moved all the data over and then resized the partition perfectly so that on reboot, the PC booted to the SSD perfectly (even though windows wanted to initially run chkdsk which I let it do and it was fine!). You can (and should) confirm this through disk management just in case, just make sure you boot to the SSD in case your motherboard defaults to the hard drive.

From there, I want to use the HDD as a regular storage drive. So I opened cmd as administrator, ran command diskpart, listed disks (using list disk) and selected the Hard drive disk with select disk 1 in my case (yours may be different!), then ran the command clean.

Then I went back to Disk Management, made sure the C drive partition was using all available space on the ssd (it was, clonezilla did it's job) and reformatted the HDD. Perfect. The whole process only took a few minutes.

Now I should say while this worked for me it may not necessarily work for everyone, of course, BACKUP YOUR DATA JUST IN CASE. Worst case scenario for me was I'd just have to reinstall Windows anyway since it was a fairly clean install and I had nothing important on it so I was willing to just dive in head first and try it. Your case may be different, so keep your data backed up before messing around in case you need to start from scratch!

Lighttpd in Ubuntu repos does not start

- Posted in Linux by with comments

Clean install of Ubuntu 17.10. Wanted to work with lighttpd. Could not get lighttpd to start? What gives? It seems to return this error: undefined symbol: FAMNoExists

So the solution posted here is to install the package gamin with apt. Should be a dependency.

Why is this an issue? I don't know, but hopefully 18.04 doesn't have this issue down the road ;)

See this bug here.

So mempler (join our discord server if you don't know him!) is working on a currently undisclosed project on one of my servers and wanted to do some rewriting to a php file.

I never have done much with rewrites ever with anything. I never really cared about ugly URLs anyway with anything I ran in PHP so I just didn't care. On the occasion I needed to run something that did, someone always provided it to me in a .htaccess with it, but I want to use lighttpd. It's just more efficient for what we want. Fight me.

Anyway he wanted something like example.com/path/here to rewrite to example.com/index.php?path=WhateverCameAfterSlashHere as long as no ? appears in the URL (more on that later).

So that is pretty easy. Just do something like "([^?]*)" => "index.php?path=$1"

So what does this do? Well. I used this place and the lighttpd documentation to figure this out. Basically, a * will match anything. Quoting autohotkey.com:

An asterisk matches zero or more of the preceding character, class, or subpattern. For example, a* matches ab and aaab. It also matches at the very beginning of any string that contains no "a" at all.

Anything in the parentheses are a regex group for lighttpd, so anything it matches is provided to $1. Quoting the lighttpd documentation:

If the matched regex contains groups in parentheses, $1..$9 in the replacement refer to the captured text in the matching group "$1" meaning the first group, "$2" the second, and so on.

More on that later when we want to have a second group.

I also wanted it to stop at a ?, which eventually will be used to look like you're really accessing an index.php on the path in the URL and you're going to specify the first parameter that of course is passed to $_GET, even though the path is one too but unsuspecting people won't know that.

With the [^?] before the * we're telling regex to match everything EXCEPT for a ?.

Again, to quote autohotkey.com:

Matches any single character that is not in the class. For example, [^/]* matches zero or more occurrences of any character that is not a forward-slash, such as http://. Similarly, [^0-9xyz] matches any single character that isn't a digit and isn't the letter x, y, or z.

Now we also want to handle other parameters. This is where our second group comes in. Of course, we already included the ? for the path parameter in the rewrite rule where $1 is passed. When people supply a ? it should actually be after an & and the ? shouldn't actually be passed to the requested php file. I did this:

url.rewrite = (
                "([^?|&]*)\?(.*)" => "index.php?path=$1&$2"

As you see, since the ? in regex actually means something (A question mark matches zero or one of the preceding character[...]) I need to escape it with a backslash which isn't a foreign concept to anyone who has dabbled in scripting and programming even a little bit. So this means expect an actual ? character in the URL and then I made a second group that will match *literally *everything with the .*. That's fine though, he can handle it in the PHP code for whatever he wants to do. This means that any other parameters in the URL will be followed with an actual & character in the URL and not something else of course, but that's fine, nothing for lighttpd to handle.

You'll also notice that in my first group where I told it to not match a ? that I specified a | (which means OR, also not a foreign concept for most) followed by an & symbol, so people can't specify additional parameters after an & sign before the ?.

This means we're now resulted with: url.rewrite = ( "([^?|&]*)\?(.*)" => "index.php?path=$1&$2" )

Now the problem is that sometimes he doesn't want to specify other parameters after the ? in the URL, but if you try the rewrite example I provided you'll notice if no ? character is specified in the URL you get a 404 thrown at you as the rule has no match.

I initially then decided to do

url.rewrite = (
                "([^?|&]*)" => "index.php?path=$1"
                "([^?|&]*)\?(.*)" => "index.php?path=$1&$2"

Now as you might expect if you're not crazy like me that won't work. Now parameters are never provided to the PHP file when they are in the URL because the first rule I specified always applies (and of course, doesn't match anything with a? character or an & character)!

The fix is simple. Just reverse them like so:

url.rewrite = (
                "([^?|&]*)\?(.*)" => "index.php?path=$1&$2",
                "([^?|&]*)" => "index.php?path=$1"

This way if a ? exists in the URL then of course, the first rewrite rule applies since it's the first that appears. Otherwise, the second will.

Thanks for going along with me on my regex learning journey. I know this is probably simple for most people but took me a while to figure out as I've never done it before (aside from fixing my htmly rewrites for lighttpd a while ago which doesn't count!)

So Kong from the DD-WRT forums used to provide builds for DD-WRT that I used for my MVEBU Linksys 1900acv2 router. He apparently doesn't anymore, which is fine, brainslayer builds are fine for me, but I wanted to keep the bins he had uploaded for reverting to stock.

I figured I'd post them here in case someone else is looking.

While you shouldn't need these for your 1900ac router if you followed the "FAQ" thread response I wrote, there may come a time you do need it. I tested it before on my acv2 from Kong but I actually got these from a different mirror (since kong deleted them) so they are not tested. I may test them someday. Until then, use at your own risk.

This is a single zip archive with all of the factory firmwares for 1200ac, 1900acv2 and 1900acs, which in theory the acs one should also work with the 1900acv2. Sorry, I don't have them for any other router, but you can check out this thread for details if yours isn't listed here which I can confirm works for the later 3200acm unlike testing these which I haven't done yet. Been busy working but perhaps someday I will. If you can comment below your results though that would be appreciated!

Of course.... if you completely brick your router, you can always go the route of a usb-to-ttl cable.

Anyhow, here is the download link.

TL;DR: Download links in this blog post are broken, not to mention I've made a bit of a collection of drivers since posting it.
A new download page has been added to jsebean.com/blackweb where you can find all the download links in an easy place (and feel free to bookmark it!). Click here to check it out. It's the condensed version of this blog post. Additionally, as new drivers are submitted, I will post them there, not to this blog post, so for the latest updates please check there!

UPDATE August 10th, 2017 Much thanks to Jared Trotter for submitting the Blackweb BWA17 drivers. Download links updated below.

UPDATE June 11, 2017

This should help clarify things for people who have issues with this driver for their mouse and perhaps could help solve future issues for people down the road if they want to contribute to hosting their mouse driver.

While I initially thought there was only one model of a Blackweb gaming mouse it's been brought to my attention though comments (here and on youtube), discord, and emails that people can't get this to work. Apparently Walmart has several models (figures) of this mouse and some (if not all of them lol) use a different drive. Additionally, turns out the particular gaming mouse my brother got was one like this, not the older BWG66 model, so I cannot say if the BWG66 will work or not with this driver.

Anyhow if you have a different model and this driver does not work, but you have the ability to upload the particular driver for your model from the CD you got, along with a link or description (or a walmart store link) of the particular model you have please email it to me at [email protected] and we can talk about hosting it here for others with a similar model (if you're trustworthy of course ;) ) Screenshot of the walmart store link I provided above if they decide to remove it down the road: https://jseb.ca/blackwebmousepage.png

The one we have essentially has two buttons on the side in addition to the standard mouse buttons along with a "DPI" button that also changes colours with the mouse DPI. It has a black top, all one piece on the top (unlike the pictures I saw in the original BWG66 post I linked).

So I hate optical drives, and in both the PC I built for myself and the one my brother uses doesn't even have one inside it. Seriously, I want optical discs to just die.

But recently for my brothers birthday he got a "Blackweb Gaming Mouse", it has 5 buttons not counting the DPI button and is supposedly RGB, which changes colour when you change the DPI if the driver is not installed and configured otherwise. It was purchased at Walmart. A CD came with the mouse, supposedly with the driver/utility, but generally we just head online to find the driver and download it from there.

Well not this time. People have asked on Reddit, and YouTube, and on Walmart.ca itself, nobody knowing an answer on where to get the drivers for Blackweb.

So I'm not sure if they just didn't get the CD, they just refuse to insert one into their PC, or they don't have an optical drive, but I took the time to fetch the setup file (It's literally the only file on the CD) and upload it here. It's only ~5MB, and to be honest it's way more clunky than Logitech/corsair software I've used, but it gets the job done. It definitely does have "cheap" written all over it but hey... if it works, at least you got the full functionality that was advertised on the box.

The driver lets you change the colour profiles, change button functions (including changing the function of the "DPI" button) and DPI itself from a graphical interface among other things.

If you have this mouse... then look no further than here. EDIT: Additionally, I have provided a download link for other Blackweb models (namely, BWA17 at least). If you have drivers to submit if your model is not supported, please email them to me ([email protected]) to share here.

Download links:

Click here

Screenshot: screenshot screenshotbwa17

If any nerds out there want to mirror this that would be great just so I don't lose it down the road if I decide to make server changes, but hopefully I won't ;)

In addition, this reverse engineered python utility is available for the Blackweb AYA(?) mouse (looks similar to the mouse my brother has?) for linux! If you're using debian/ubuntu run sudo apt install python2.4 python-qt4 pyusb and then run sudo ./ayatool_qt.py (remember to chmod it!) to launch the graphical configuration tool (have not tested so if you need help post back especially if I'm wrong about dependencies!). If you can install all that stuff on a Mac it should also work for Mac users. Kudos to commenter Jigoku for writing this!

Screenshot: linux blackweb utility

Just posting this quickly (excuse any typos or brainfarts, going for dinner soon ;) ) to say ExtraVM goes above and beyond to be awesome. Been using them to host a teamspeak server since last August (2016). We decided to get a dedicated server for ECMB since you need a good chunk of memory to start an Ark server, even though we're small (only ~50 members on discord last I checked eg).

Kimsufi has great deals on dedicated servers. I got my hands on one with an i5-3570S.

[email protected]:~$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 58
model name      : Intel(R) Core(TM) i5-3570S CPU @ 3.10GHz

Sure, it's not great, but handles Ark server perfectly for us and should be able to run a couple CSGO and Minecraft servers too. If it grows to the point we start getting lag, then of course we'll move things around and upgrade to a better server (from SYS or OVH directly eg).

However one of the issues we experiences in the past is the dreaded DDoS of script kiddies getting a kick of null routing me drawn in from the teamspeak server. We publicly list teamspeak as this is one of the ways we've found some cool people, but it seems to draw in the "cancer" too from time to time. To protect it, I've been a fan of ExtraVM after it being recommended on forums like r4p3.net.

It is great, but there comes a point that Kimsufi is still more affordable for certain projects, aside from not having the DDoS Game protection OVH seems to famously (or infamously when it doesn't work) offer.

Luckily, the awesome Mike A who owns ExtraVM goes above and beyond and gave me, at no extra cost a free IP I can use to setup a GRE Tunnel to the Kimsufi. I opened a ticket asking ExtraVM and he's quick to respond as always... unlike pretty much any other host I've been with (SYS was notoriously slow to respond to tickets eg). He did say that despite GRE kernel module existing on all nodes, some people have trouble setting up GRE tunnels on his VPSes (suggesting others have had trouble with it but if it works then he has no issue with it) so my mileage may vary. Only took a couple minutes and it worked without any issues! WOOT!

Given that ExtraVM's OpenVZ plans are hosted by OVH just like Kimsufi the pings are ~0.5ms, so it's not noticeable to any players. Even if I have to buy an extra TB or so of bandwidth it's still cheaper than buying SYS/OVH Game servers, and if we grow the point that I end up using too much bandwidth hopefully by then we'll be able to easily upgrade to a real game server anyway.

Anyhow, just thought I'd give a shout out to ExtraVM as it's an awesome company for anyone looking for an OVH reseller. I've seen some people criticize r4p3.net's reputation on zero day exploits, and I'll hold out my opinion on that too, but they do know their stuff when picking a good affordable host :) There's been a lot of hit and run hosts that resell OVH but it seems ExtraVM certainly is the exception as I've had no issues with them.