A quick (one evening) port of my old Duck Hunt VR game to the Oculus (a.k.a. Meta) Quest 2. Mainly to check what kind of performance I can expect from this device.
The build is still a little rough especially on the light and shading side. Also the mapping of the Zapper (gun) to the Quest 2 controllers needs some polishing, as the trigger is off-center on the physical controllers.
I needed a quick (DIY) solution to create a hot plate (a.k.a. Screen Repair Separator Machine Heating Plate) for repairing the screen of my wifes mobile phone. It is a cheap phone so I needed a cheap solution to create hot plate alternative.
After staring at the kitchen oven (too hot, even on the lowest setting), I got this brief mental lapse… What about a take-out (Dutch Chinees food) container filled to the top with hot water.
It is easy to control the temperature, by mixing 100 degrees kettle water with tap water (assumed to be ambient temperature): 1 part 100 degrees + 1 parts 20 degrees: (100+20) / 2 = 60 degrees 2 parts 100 degrees + 1 part 20 degrees: (100+100+20) / 3 = 73 degrees
My sister is still rocking a Intel Core 2 Duo E6750 for all her graphical design activities. This beast of a CPU has been working hard since 2007 (bundled with 4GB of DDR2). But lately it is struggling a little with modern life… And by extension so is my sister…
Knowing my sister, I had to make sure it would be a clean and pretty system. But on a budget. (Keep in mind that GPU’s are crazy expensive at this moment!)
My sister does not like cables, so I put some extra effort in my cable management 😎
It’s final destination, really showing off my cable management skills to the world 😋
Shucking a hard drive is the practice of removing a hard drive from it’s (external) USB exclose. This may sound like a stupid thing to do, but this can save you some money (150 euro vs 220 euro) 🤑
The scary side of shucking is that you never really know what you will get, it is a little like a surprise egg for nerds. This time we got lucky, the WD80EMAZ is actually a helium filled HGST Ultrastar, modified to run at 5400 RPM (instead of 7200 RPM).
The shucked drive ( WD80EMAZ ) runs 5-6 degrees cooler than my original 8TB WD Red drives (WD80EFAX) 😎
Hard drive temperatures WD80EFAX (8TB WD Red) vs WD80EMAZ (Shunked 8TB WD Elements).
Update: I have multiple shucked drives in use WD80EMAZ (WD Elements with the blue text on the box) and WD80EDAZ (WD Elements with the orange text on the box). All drives have 256MB cache and are running without issues in a Synology NAS. The WD80EDAZ drives will run a lot hotter 😐
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.
Update: Currently I’m running the NAS with 2x8TB WD80EMAZ (WD Red) drives and 1x8TB WD80EMAZ ( shucked WD Elements) drive, with 2x250GB WD Black NVMe SSD’s as (read/write) cache.
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
{
classProgram
{
staticvoid Main(string[] args)
{
XBoxController controller = newXBoxController();
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();
}
}
}
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.
My first little Unity 3D Virtual Reality project, inspired by my old friend the Nintendo Entertainment System. Please keep in mind the I have never used Unity 3D before, so this is my first sandbox application…