Leopold FC750R PD Review

Tech

After a long time of research I ordered my first Leopold mechanical keyboard last week and it arrived this afternoon! The keyboard model is the FC750R PD with Cherry MX Brown switches. The box isn’t flashy or anything. It is simple and elegant.

The included accessories are USB to PS/2 adapter, a keycap puller (sadly, not a wire one, shouldn’t really use this one on the keyboard), replacement keys for CTRL and caps lock keys for switching them and the detachable USB cable for the keyboard. Even a dust cover is included for keeping the keyboard all clean!

Build Quality:

This is a very solid keyboard and unlike anything I’ve tried before. The keys feel much more “stable” than Das Keyboard. The keyboard has a somewhat industrial feel to it and it seems very durable.

The keyboard is quite heavy, even though it is a tenkeyless version. It doesn’t flinch when I try to push it as much as a Das Keyboard would thanks to the heavy duty rubber under the keyboard. The keyboard doesn’t flex at all when I try to bend it.

The finish of the case feels much better than Das Keyboard for me, because of the rougher texture. It doesn’t have the media keys but it’s not so hard to map some keys to act as media keys using some software like AutoHotkey.

Features:
This keyboard has the Cherry MX Brown switches. For some reason the switches feel much better when typing when compared to Das Keyboard with MX Brown switches. And the stabilizers are very solid. The spacebar has a heavy “thock” sound to it and the stabilizers don’t feel mushy at all.

The keyboard has a detachable USB cable and three cable routing channels, so you can route the cable to come out from three different directions.

The keyboard even has full N-Key Rollover support.

Keycaps:
For me, this was the deciding factor for buying this keyboard. Leopold has stock PBT keycaps on the FC750R. They are 1.5mm thick and more durable than ABS plastics. The thickness of the keycaps make the typing experience feel more solid and the type of the plastic makes it harder for the keyboard to get “shiny”.

The keycaps are doubleshot which means that they are made from two different colors and layers of PBT. One layer for the legend (white) and the other one for the outer casing (black). Which means the legends will never fade off and that the surface of the keycap won’t be uneven due to legends.

Sound-Absorbing Pad:
The FC750R has a sound absorbing pad in the case which makes the keyboard a bit quieter. This will even mostly dampen the metallic ping sound that some mechanical keyboards have.

I feel that I’ve chosen the correct keyboard for myself. The stock keycaps and the build quality are amazing. Elegant design and no unnecessary bells and whistles. And better ergonomics because of the smaller size of the keyboard (tenkeyless).

Last.fm – Delete all scrobbles from a day

Programming
  • Open Library tab in Last.fm (https://www.last.fm/user/{username}/library)
  • Open browser console using F12
  • Copy the following into the console and press enter:
    jQuery('button.dropdown-menu-clickable-item[data-ajax-form-sets-state=deleted]').each(function(_, x) {
        x.click();
    });
    location.reload();
    

    This will delete all scrobbles visible on the page. Refresh the page and run again as necessary.

How to Setup Unity 5.1.3 to Work with Visual Studio 2015

Uncategorized

I recently started working on an Unity game again and I needed to configure the project structure. I wanted Visual Studio as my main environment since I’m used to the ReSharper goodness it offers and working in Unity is much slower, not to mention the clamped project structure (Assembly-CSharp-vs.proj) – there are many benefits to having many smaller projects.

I use git as my version control system and I followed the instructions on Unity’s website for my first commit and to decide which files to ignore in git. I created some game objects in Unity until I needed some backend classes.

I wanted to work with every class except the ones deriving from MonoBehavior in Visual Studio. So I created a folder named Source beside the Assets folder of the Unity project. Then I created a separate Visual Studio solution in this new folder. The projects in this purely Visual Studio solution will be named similar to the following fashion: GameName.Map, GameName.Randomization, etc. These new projects in the Visual Studio solution need to use .NET 3.5 as target framework so change it in Project Settings -> Application -> Target framework.

The classes in the Visual Studio solution do not need to refer to the classes in the Unity solution and thus will be independent of Unity making them easier to be tested.

The classes in the Unity solution need to be able to use the classes in the Visual Studio solution though. Since the new Visual Studio projects are not inside Unity’s Asset folder, they will not be visible in Unity. Which is a good thing since Unity created meta files for each and every file and folder inside Asset folder in order to track connections between different classes and properties made inside Unity.

To solve this issue, change the build path of the Visual Studio projects that need to be referenced from Unity to a folder inside Unity’s Asset folder, for example “..\..\Assets\Build\Debug\” for Debug configuration (done via Project Settings -> Build -> Output -> Output path). You only need to change the projects that need to be referenced from Unity, so the build path of your utility projects and test projects can be set to outside Assets folder.

After configuring the Visual Studio projects, we need to edit the .gitconfig file so that sln and csproj files for the Visual Studio solution are included in the source control. Here is my latest .gitignore file:


# Created by https://www.gitignore.io

### Unity ###
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
[Bb]uild/

# Autogenerated VS/MD solution and project files
/*.csproj
*.unityproj
/*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj

# Unity3D generated meta files
*.pidb.meta

# Unity3D Generated File On Crash Reports
sysinfo.txt

.vs
bin
obj
/Assets/Build.meta

Evolving 2D Cars By Using Genetic Algorithms

Tech

Genetic algorithms mimic the process of natural selection and they are mostly used to generate solutions to optimization problems. Such as the problem of building two-dimensional cars to navigate a bumpy race track.

Here you can see an example car that I generated with 3 wheels jumping across the race track. To the top is the current generation, which is 12. It means that our car belongs to the 12th generation and that there were over 200 cars tested before it (since a generation consists of 20 cars).

Go BoxCar Go!

Cars with an extra wheel to the front tend to perform better after hitting a bump and getting airborne.

After the program tests a generation consisting of 20 cars, it considers the cars that belonged to that generation for selections, crossovers and mutations; which is another way of saying that it selects them by considering their scores, it does some crossovers between them and it does a degree of mutation to them. These result in a new generation of cars that may perform better in the racing track.

The cars aren’t perfect to begin with. At the start, they may not even have wheels (reinventing the wheel anyone?) and they roll over in seconds. However as generations pass, the better performing cars are found and the program goes ahead to use them more often since they score a lot more than the other weirdly shaped cars. The race track also gets trickier and bumpier after a while, which helps the further evolution of cars. In the following image you can see the same car slowing down to a stop while trying to ascend a steep slope.

Argh, almost

BoxCar crawling down to a stop, it was a good ride

You can also share a car that performs great with others or see other people’s cars. The algorithm is also explained to a degree for those interested. One problem is that after a while the generations tend to take a longer time since the cars perform better and longer. A solution is to get a bumpier road, by changing the track while keeping your generation.

The name of the program is BoxCar2D, check it out yourself. It’s pretty fun in the beginning, then you can make it run in the background for a while and check it later to see a better generation. Rinse and repeat to find the ultimate car.