Moved from a Linux server to a NAS…

One of my disk in my RAID6 array of my Linux server dropped from the disk array, so it was time to decide the future of my old and trusty server. I have been running a Linux server as my home storage for +15 years. But the family life is limiting my tinker time… So I decided to try an off-the-shelf storage solution (Synolog DiskStation DS918+), to see if this can serve my server needs, without the additional hassle of building and maintaining a Linux server.

Currently I’m running the NAS with 2x8TB WD Red in RAID1, and WD Black NVMe SSD 250GB as (read) cache.

Synolog DiskStation DS918+

Allseas ‚Äď The Holiday Spirit

Toying (some more) with an industrial robot at the office ūüėČ

Merry Christmas and a Happy 2019 from the Allseas R&D Eindhoven (a.k.a. Inspection & Robotics) office.

Allseas – R&D Eindhoven – The Holiday Spirit

R&D Eindhoven is part of the Innovation Department of Allseas Engineering B.V.

Website down due to a glasfiber modem upgrade…

Website was down for a few hours, deu to a glasfiber modem upgrade. Server seems happy after his first reboot in 2.5 years ūüôā

KPN routers force their users to use 192.168.2.xxx IP range (with a 255.255.255.0 subnet mask). So it took me some time to get all my 192.168.0.xxx devices to the new enforced 192.168.2.xxx range.

C# – XBox 360 Controller library with a sample application

Created an easy to use XBox 360 Controller library in C# (with a sample application) using the SharpDX.XInput managed .NET wrapper of the DirectX API.

 https://github.com/okmer/XBoxController

Screenshot of the sample application.
Screenshot of the sample application.

A BUG in SharpDX.XInput ci-ci217, resulting in issues with the  left Thumb Stick, Left Trigger, and Right Trigger! Please stick to SharpDX.XInput v4.1.0-ci184 for now.

using System;
 
using Com.Okmer.GameController;
 
namespace XBoxSampleConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            XBoxController controller = new XBoxController();
 
            Console.WriteLine("XBox 360 Controller (Press ENTER to exit...)");
 
            //Connection
            controller.Connection.ValueChanged += (s, e) => Console.WriteLine($"Connection state: {e.Value}");
 
            //Battery
            controller.Battery.ValueChanged += (s, e) => Console.WriteLine($"Battery level: {e.Value}");
 
            //Buttons A, B, X, Y
            controller.A.ValueChanged += (s, e) => Console.WriteLine($"A state: {e.Value}");
            controller.B.ValueChanged += (s, e) => Console.WriteLine($"B state: {e.Value}");
            controller.X.ValueChanged += (s, e) => Console.WriteLine($"X state: {e.Value}");
            controller.Y.ValueChanged += (s, e) => Console.WriteLine($"Y state: {e.Value}");
 
            //Buttons Start, Back
            controller.Start.ValueChanged += (s, e) => Console.WriteLine($"Start state: {e.Value}");
            controller.Back.ValueChanged += (s, e) => Console.WriteLine($"Back state: {e.Value}");
 
            //Buttons D-Pad Up, Down, Left, Right
            controller.Up.ValueChanged += (s, e) => Console.WriteLine($"Up state: {e.Value}");
            controller.Down.ValueChanged += (s, e) => Console.WriteLine($"Down state: {e.Value}");
            controller.Left.ValueChanged += (s, e) => Console.WriteLine($"Left state: {e.Value}");
            controller.Right.ValueChanged += (s, e) => Console.WriteLine($"Right state: {e.Value}");
 
            //Buttons Shoulder Left, Right
            controller.LeftShoulder.ValueChanged += (s, e) => Console.WriteLine($"Left shoulder state: {e.Value}");
            controller.RightShoulder.ValueChanged += (s, e) => Console.WriteLine($"Right shoulder state: {e.Value}");
 
            //Buttons Thumb Left, Right
            controller.LeftThumbclick.ValueChanged += (s, e) => Console.WriteLine($"Left thumb state: {e.Value}");
            controller.RightThumbclick.ValueChanged += (s, e) => Console.WriteLine($"Right thumb state: {e.Value}");
 
            //Trigger Position Left, Right 
            controller.LeftTrigger.ValueChanged += (s, e) => Console.WriteLine($"Left trigger position: {e.Value}");
            controller.RightTrigger.ValueChanged += (s, e) => Console.WriteLine($"Right trigger position: {e.Value}");
 
            //Thumb Positions Left, Right
            controller.LeftThumbstick.ValueChanged += (s, e) => Console.WriteLine($"Left thumb X: {e.Value.X}, Y: {e.Value.Y}");
            controller.RightThumbstick.ValueChanged += (s, e) => Console.WriteLine($"Right thumb X: {e.Value.X}, Y: {e.Value.Y}");
 
            //Rumble Left, Right
            controller.LeftRumble.ValueChanged += (s, e) => Console.WriteLine($"Left rumble speed: {e.Value}");
            controller.RightRumble.ValueChanged += (s, e) => Console.WriteLine($"Right rumble speed: {e.Value}");
 
            //Rumble 0.25f speed for 500 milliseconds when the A or B button is pushed
            controller.A.ValueChanged += (s, e) => controller.LeftRumble.Rumble(0.25f, 500);
            controller.B.ValueChanged += (s, e) => controller.RightRumble.Rumble(0.25f, 500);
 
            //Rumble at 1.0f speed for 1000 milliseconds when the X or Y button is pushed
            controller.X.ValueChanged += (s, e) => controller.LeftRumble.Rumble(1.0f, 1000);
            controller.Y.ValueChanged += (s, e) => controller.RightRumble.Rumble(1.0f, 1000);
 
            //Rumble at the speed of the trigger position
            controller.LeftTrigger.ValueChanged += (s, e) => controller.LeftRumble.Rumble(e.Value);
            controller.RightTrigger.ValueChanged += (s, e) => controller.RightRumble.Rumble(e.Value);
 
            //Wait on ENTER to exit...
            Console.ReadLine();
        }
    }
}

Allseas – Innovation opens beers

Toying with an industrial robot at the office ūüėČ

R&D Eindhoven (a.k.a. Inspection & Robotics) opens the Friday “borrel” beers with their new Fanuc M-710iC/45M Robot in combination with a Cognex In-Sight 2000 Vision Sensor.

R&D Eindhoven is part of the Innovation Department of Allseas Engineering B.V.

Around the world in 90 days

Traveling around the¬†world in 90 days with my pregnant wife ūüôā See you later alligator!

AMS-LHR, LHR-YVR, YVR-LAX, LAX-HNL, HNL-NRT, NRT-TPE, TPE-HKG, HKG-PNH, REP-KUL, KUL-SYD, SYD-CNS, ASP-CNS, CNS-HKG, HKG-AMS
AMS-LHR, LHR-YVR, YVR-LAX, LAX-HNL, HNL-NRT, NRT-TPE, TPE-HKG, HKG-PNH, REP-KUL, KUL-SYD, SYD-CNS, ASP-CNS, CNS-HKG, HKG-AMS

Canada, Hawaii, Japan, Taiwan, Cambodia,¬†Malaysia, and Australia…

AMS LHR 258¬į (W) 256¬į (W) 371 km
LHR YVR 324¬į (NW) 324¬į (NW) 7,601 km
YVR LAX 165¬į (S) 149¬į (SE) 1,739 km
LAX HNL 261¬į (W) 249¬į (W) 4,113 km
HNL NRT 299¬į (NW) 290¬į (W) 6,146 km
NRT TPE 242¬į (SW) 250¬į (W) 2,182 km
TPE HKG 249¬į (W) 254¬į (W) 807 km
HKG PNH 220¬į (SW) 223¬į (SW) 1,533 km
REP KUL 191¬į (S) 192¬į (S) 1,202 km
KUL SYD 133¬į (SE) 133¬į (SE) 6,579 km
SYD CNS 343¬į (N) 330¬į (NW) 1,966 km
ASP CNS 060¬į (NE) 056¬į (NE) 1,454 km
CNS HKG 320¬į (NW) 314¬į (NW) 5,553 km
HKG AMS 324¬į (NW) 327¬į (NW) 9,290 km

Total: 50,537 km