Aorus graphics engine – LED control icon missing

If you happen to find that LED control icon disappeared in Aorus graphics engine and even reinstalling does not help – uninstall Aorus graphics engine, then manually remove its folder in Program Files, install it again.

LED icon should be back.

SanDisk Ultra Flair USB 3.0 64GB Flash drive test

Tested SanDisk Ultra Flair USB 3.0 64GB Flash drive.

SanDisk Ultra Flair USB 3.0 64GB Flash drive test
SanDisk Ultra Flair USB 3.0 64GB Flash drive test

Realy like this flash drive, good capacity, very good speed and especially super small size. It gets a bit warm when testing but that’s ok considering its size.

Super small flash drive
Super small flash drive

New PC build, and overclocking i5-8600k to 5GHz

Building my new desktop PC. You can find the part list at the end.

Monitor and video card are still on the way, but everything else is already assembled and being tested. Its long time I had a desktop PC and for some time was only laptop user so now I really had fun building it.

Purpose of this desktop was software development (VisualStudio .NET mostly), learning and experimenting with deep neural networks (participating in some courses now), some gaming (Fallout 4, Battlefield series). Also wanted to last so was building it for future, I hope.

CPU

Intel was an obvious choice, never been AMD user. Now they have 8th series with 4 cores for i3 and even 6 cores for i5 and i7.

Decided to go with Intel – Core i5-8600K 3.6GHz 6-Core Processor as it is in a nice middle and has really nice overclocking capabilities up to 5000MHz.

Cooler

While investigating current market stumbled upon Cooler Master – MasterLiquid ML240L RGB 66.7 CFM Liquid CPU Cooler. It had really positive reviews and competitive price so decided to go with it. And it even has RGB feature. And I really like AIO as I will not have to mess with it very much for the moment.

Motherboard

Had to find something for the Intel 8th gen supported  z370 chipset. Had a requirement for double M.2 slots, VGA output for old monitor support, 64GB ram support. And the winner was MSI – Z370 PC PRO ATX LGA1151 Motherboard. And it even has some RGB lightning and it will be sweet for the case I have selected.

Memory

Wanted to use single 16GB slot so after reading some reviews went for Crucial – Ballistix Sport LT 16GB (1 x 16GB) DDR4-2400 Memory. And after that I have 3 more free slots for future upgrades.

Storage

For time being was considering 500GB SSD drive. An M.2 slot was a good choice to save some space in a case. Also wanted some good brand. Was thinking for some time between m.2 PCIe vs M.2 SATA, but considering the price and minor gain decided that M.2 PCIe is just not worth it now. So at the end went for Western Digital – Blue 500GB M.2-2280 Solid State Drive.

Video Card

Oh, how do I hate this mining craze. Was not aware of current market prices and was blown away when found out that most of the cards are out of stock and those that left are sold almost with double prices. For deep learning I was looking for at least 1060 with most video ram possible, unfortunately, miners are looking for the same. Anyway, after some searching I have found some good deal (i hope) on Amazon for Gigabyte – GeForce GTX 1070 8GB G1 Gaming Video Card for 543EUR and it is on its way now.

Case

Last time I had a desktop it was a brown dull box under the table that was as much fun as looking at bubble gum stuck on your shoe. This time I wanted something different and more fun. Ant the end I decided to go with Thermaltake – View 31 TG RGB ATX Mid Tower Case. Price is good, looks is good, airflow is good, tempered glass is good, RGB fans are good.

Power Supply

Wanted something rated and with more power than most calculators show. Also, it had to be modular and good looking. And that was Cooler Master – MasterWatt 650W 80+ Bronze Certified Semi-Modular ATX Power Supply.

*UPDATE: bad luck with that PSU, read here.

Monitor

As for time being I am using mostly laptops, monitors I own were either old or very old. For this card I have selected I wanted a 144Hz monitor. Also wanted it to have some speakers, VGA, HDMI, video and some USB ports. And the only choice for the reasonable price was AOC – G2460PF 24.0″ 1920×1080 144Hz Monitor. I will not be using FreeSync but all GSync monitors were way out of a budget.

Build it

PC parts ready to be unpacked
PC parts ready to be unpacked
ThermalTake View 31 case. HD rack and vertical GPU stand will be removed.
ThermalTake View 31 case. HD rack and vertical GPU stand will be removed.
MSI - Z370 PC PRO ATX LGA1151 Motherboard and Cooler Master - MasterLiquid ML240L fans and radiator.
MSI – Z370 PC PRO ATX LGA1151 Motherboard and Cooler Master – MasterLiquid ML240L fans and radiator.
Intel - Core i5-8600K 3.6GHz CPU installed.
Intel – Core i5-8600K 3.6GHz CPU installed.
MSI - Z370 PC PRO ATX LGA1151 in PC case.
MSI – Z370 PC PRO ATX LGA1151 in PC case.
Cooler Master - MasterLiquid ML240L radiator with fans installed in Thermaltake - View 31 PC case top.
Cooler Master – MasterLiquid ML240L radiator with fans installed in Thermaltake – View 31 PC case top.
Bracket for attaching Cooler Master - MasterLiquid ML240L pump.
Bracket for attaching Cooler Master – MasterLiquid ML240L pump.
Cooler Master - MasterLiquid ML240L pump installed on Intel - Core i5-8600k in Thermaltake - View 31 case.
Cooler Master – MasterLiquid ML240L pump installed on Intel – Core i5-8600k in Thermaltake – View 31 case.
Lights, camera... First power on.
Lights, camera… First power on.
Look through the window of Thermaltake - View 31 and there is a place for a graphics card.
Look through the window of Thermaltake – View 31 and there is a place for a graphics card (glass protective plastic is still on).
Gigabyte 1070 G1 installed
Gigabyte 1070 G1 installed
Finished build with Gigabyte 1070 G1 installed
Finished build with Gigabyte 1070 G1 installed

Overclock it

After build it was working on good stable 3.6GHz without any issues but as I have i5-8600K that is unlocked and can be overclocked up to even 5000MHz I had to do that. First I tried MSI OC Genie and looked what values it was changing. Genie overclocked CPU to 4.4GHz.

Then I turned OC Genie off and changed some values manually and achieved stable 5GHz for this i5-8600k CPU. Actually, it is easy to do. To get 5000Mhz for i5-8600k all you have to do is:

In bios go to overclocking folder,

change OC Explore mode -> Expert,

set CPU Ratio Apply Mode -> All,

set CPU Ratio -> 50,

set CPU core voltage -> 1.280 (if it crashes on stress test – increase to 1.30 etc) (UPDATE: i have tested more with Prime95 and it gives some errors, so it seems that voltage should be higher than 1.280 for 5GHz even CineBench, Intel and PassMark tests are stable. Prime95 seems to stress test system quite well, you can literally hear it when it runs 🙂 ),

leave everything else as it is, mostly Auto, see screenshots below.

Intel - Core i5-8600K running on 5GHz, MSI Bios settings

Intel – Core i5-8600K running on 5GHz, MSI Bios settings

Memory settings
Cooler Master - MasterLiquid ML240L fan setting, MSI bios
Cooler Master – MasterLiquid ML240L fan setting, MSI bios
Cooler Master – MasterLiquid ML240L PUMP setting, MSI bios
Thermaltake - View 31 back fan settings
Thermaltake – View 31 back fan settings
Thermaltake - View 31 front fan settings
Thermaltake – View 31 front fan settings
MSI PC PRO i5-8600K 5GHz overclocking bios settings
MSI PC PRO i5-8600K 5GHz overclocking bios settings
MSI PC PRO i5-8600K 5GHz overclocking bios settings
MSI PC PRO i5-8600K 5GHz overclocking bios settings
MSI PC PRO i5-8600K 5GHz overclocking bios settings
MSI PC PRO i5-8600K 5GHz overclocking bios settings

Test it

CPU-Z validator results for overclocked i5-8600k 5GHz.

PassMark baseline for this overclocked i5-8600k 5Ghz

CineBench CPU test and min and max values for overclocked i5-8600K 5GHz
CineBench CPU test and min and max values for overclocked i5-8600K 5GHz
Intel CPU benchmark and min and max values for overclocked i5-8600K 5GHz
Intel CPU benchmark and min and max values for overclocked i5-8600K 5GHz
Performance test results for overclocked i5-8600K 5GHz
Performance test results for overclocked i5-8600K 5GHz
Performance test results for overclocked i5-8600K 5GHz
Performance test results for overclocked i5-8600K 5GHz
Performance test results for overclocked i5-8600K 5GHz
Performance test results for overclocked i5-8600K 5GHz

*ISSUES:

I had some issue that bios was not saving the setting for one of the fans, updated bios to latest, fan settings are saved ok now but when going to bios it takes a bit longer, something related to latest bios probably.

*UPDATE

Torture test with Prime95 with voltages 1.28 and 1.30 fails in about 10 minutes, so voltages should be higher:

Prime95 fail with 1.30 voltage on i5-8600k 5GHz
Prime95 fail with 1.30 voltage on i5-8600k 5GHz

Changed core voltage to AUTO. Prime95 went on for 20 minutes without any errors, passing previous crashing point. HW monitor sshowcore voltage fluctuating between 1.216 and 1.376 volts on heavy load. So we could increase voltage over 1.3 or just keep it AUTO that seems to work fine for now.

Prime95 works ok with AUTO voltage for i5-8600k 5GHz
Prime95 works ok with AUTO voltage for i5-8600k 5GHz

*UPDATE

One more experiment. Changed RAM XMP profile to 2800 that overclocked RAM to 1400MHz (instead of original 1200MHz) and with 50x CPU multiplier and Auto voltage tested on PassMark and CineBench:

i5-8600k 50x multiplier, Auto voltage, overclocked RAM results
i5-8600k 50x multiplier, Auto voltage, overclocked RAM results
i5-8600k 50x multiplier, Auto voltage, overclocked RAM results
i5-8600k 50x multiplier, Auto voltage, overclocked RAM results

*UPDATE

Noticed that CineBench gives best results when you have 50x multiplier and some fixed voltage like 1.350 (NOT Auto). Best CineBench result i got was 50 x multiplier, 1.350 core voltage, MSI RAM Test It Limit profile.

Best CineBench results so far
Best CineBench results so far

*Update

Vide card has arrived, build is really complete 🙂

Passmark results with overclocked CPU and stock 1070

Part list:

Component Selection Price
CPU
CPU Cooler Cooler Master – MasterLiquid ML240L RGB 66.7 CFM Liquid CPU Cooler

Motherboard
Memory
Storage
Video Card  543EUR (2018.02.09) (On its way)
Case
Power Supply
Monitor (On its way)

PowerBuilder, different DD list values for each row, another way

The Ol’ Hidden Items in the Dddw Problem Part II

Make a second copy of the Color column and have this always contain all the rows in its dddw.  This second column is never filtered.

When the row is not the current row, display the column with the unfiltered dddw and hide the filter column.  If the row is the current row, show the column with the filtered dddw, and hide the column with the dddw with all the possible rows.  To do this, add the following expression to the visibility attribute of the column with the dddw which gets filtered:

IF (CurrentRow() = GetRow(), 1, 0)

The column with the dddw which always contains all the values will have the following expression in its visibility attribute:

IF (CurrentRow() = GetRow(), 0, 1)

PowerBuilder, different DD list values for each row

Source http://www.pbdr.com/pbtips/dw/fltrdddw.htm

Step 1 – declare instance variables

boolean ib_dropdowndropped = False
boolean ib_dropdownredrawn = True

Step 2 – extend the pbm_dropdown event

ib_dropdowndropped = True
ib_dropdownredrawn = False
of_Filter(True)
ib_dropdownredrawn = True

Step 3 – extend the pbm_ncpaint event

If (ib_dropdowndropped And ib_dropdownredrawn) Then
 ib_dropdowndropped = False
 ib_dropdownredrawn = False
 of_Filter(False)
 ib_dropdownredrawn = True
End If

Step 4 – write the of_Filter (boolean ab_switch) subroutine

datawindowchild ldwc
long ll_getitemnumber
string ls_setfilter = ""

If (ab_switch) Then
 ll_getitemnumber = GetItemNumber(GetRow(), "order_status_id")
 If (ll_getitemnumber = 1) Then // cancelled -> cancelled
  ls_setfilter = "(order_status_id = 1)"
 ElseIf (ll_getitemnumber = 2) Then // confirmed -> confirmed
  ls_setfilter = "(order_status_id = 2)"
 ElseIf (ll_getitemnumber = 3) Then // new -> cancelled, new, pending
  ls_setfilter = "(order_status_id = 1) or (order_status_id = 3) or
(order_status_id = 4)"
 ElseIf (ll_getitemnumber = 4) Then // pending -> cancelled, confirmed,
pending
  ls_setfilter = "(order_status_id = 1) or (order_status_id = 2) or
(order_status_id = 4)"
 End If
End If

GetChild("order_status_id", ldwc)
ldwc.SetFilter(ls_setfilter)
ldwc.Filter()

Figure drawing resource

Good resource to learn figure drawing https://line-of-action.com/

Many good advice`s there, one could start form tutorial section.

Example for Line Of Action site
Example for Line Of Action site

Practicing pencil drawing and other lessons and tips.

Other ideas for sketching at home.

 

Bowerbuilder datawindow autosize problem

You have a datawindow. Datawindow has an Autosize Height set to Details band. You insert a row, set a long string value to some field expecting that field to be auto-sized. And it is, but you don’t see a text as Details band does not auto-size. What to do? Whan way to fix this is to call Sort() somewhere after you set v the value fro the datawindow to refresh and auto-size to take effect. But that does not work all times ( for example … you dont want to sort data now). Another way is to set:

dw.Modify ( ‘DataWindow.Header.Height.AutoSize=yes’)

This will also make datawindow to resize all the bands and auto-size will take effect then.

Ikea BILLY Bookcase and VW Passat station wagon

If You were wondering if Ikea Billy Bookcase (Article Number: 390.178.39) would fit to transport in WV Passat station wagon than answer is Yes, I would guess even maybe 2 or 3 bookcases would fit there (though you have to move front passenger seat as far as possible).

Packages: 6
Article Number Packages Width Height Length Diameter Weight
50263838 3 15 ¼ ”
39 cm
2 ½ ”
6 cm
81 ¼ ”
206 cm
47 lb 7 oz
21.53 kg
90263860 3 14 ”
35 cm
2 ¾ ”
7 cm
14 ¼ ”
36 cm
9 lb 4 oz
4.19 kg
Ikea Billly in VW Passat
Ikea Billly in VW Passat
Ikea in VW Passat
Ikea in VW Passat
Ikea Billy Bookcase
Ikea Billy Bookcase

BattleCity game using Phaser.IO, part 4 – simple collision.

In the last part we created moving player tank in our city, but it can move anywhere through the walls without any collision. So in this part we will investigate hwo to enable collision detection between our player tank and city walls. Also we will enable and outputt some debugging information to better understand what exactly happens on our map.

To enable collision between our tank and walls/city  we have to enable collision for tiles ( now we will just enable collision for all tiles of our tile set ). In  create function, after add tileset, add:

map.setCollisionBetween(1, 10000);
Also we have to enable player tank physics, in create function, after game add sprite, we add:
game.physics.enable(player_tank);
player_tank.body.collideWorldBounds = true;
In update function we add collision check of player vs layer:
game.physics.arcade.collide(player_tank, layer);
One note: after doing all this, collision still was not working. I found that it was realated to scaling. You should change layer.scale.set(2); to layer.setScale(); and it is fixed.

Debugging collision. To see collision rectangles you could add

layer.debug = true;

after layer creation and also add a render callback function (in new Phaser.Game you should add

function render() {

    //  Useful debug things you can turn on to see what's happening

    // game.debug.spriteBounds(sprite);
    // game.debug.cameraInfo(game.camera, 32, 32);
    // game.debug.body(sprite);
    game.debug.bodyInfo(player_tank, 10, 10);

    game.debug.body(player_tank);

}
Also, after enabling debugging, you can see that tank image is smaller than sprite itself but collision happens on sprite size. To deal with it we could change player tank body size on each key press like that:
    if (cursors.left.isDown)
    {
        //if left cursor is down - play left animation, add velocity
        player_tank.animations.play('left');
        player_tank.body.velocity.x = -100;
        player_tank.body.setSize(13,13,2,1);
        
    }
So after all, your index.html should look something like this:
<!doctype html> 
<html lang="en"> 
<head> 
	<meta charset="UTF-8" />
	<title>Battlecity</title>
	<script type="text/javascript" src="js/phaser.js"></script>
    <style type="text/css">
        body {
            margin: 0;
        }
    </style>
</head>
<body>

<script type="text/javascript">

var game = new Phaser.Game(512, 480, Phaser.AUTO, '', { preload: preload, create: create, update: update, render: render });


function preload() {
    game.load.tilemap('tilemap', 'assets/tilemaps/maps/battlecity_map1.json', null, Phaser.Tilemap.TILED_JSON);
    game.load.image('tiles16x16', 'assets/tilemaps/tiles/battlecity_general.png');
    // load spritesheet for our player and enemies, all of them use same spritesheet
    game.load.spritesheet('tanks', 'assets/tilemaps/tiles/battlecity_general.png', 16, 16);
}

var map;
var layer;
var player_tank;
var cursors; 

function create() {
    game.stage.backgroundColor = '#787878';

    map = game.add.tilemap('tilemap');
    map.addTilesetImage('battlecity','tiles16x16');
    map.setCollisionBetween(1, 10000);
    

    layer = map.createLayer('Ground');
    layer.setScale(2);
    layer.debug = true;
    layer.resizeWorld();

    //create cursor key handler
    cursors = game.input.keyboard.createCursorKeys();
   
    //create our player tank, position it at x,y and use sprite sheet 'tanks'
    player_tank = this.game.add.sprite(135, 448, 'tanks');
    game.physics.enable(player_tank);
    player_tank.body.collideWorldBounds = true; 
    player_tank.frame = 0;
    player_tank.scale.set(2);
    player_tank.animations.add('left', [2,3], 10, true);
    player_tank.animations.add('right', [6,7], 10, true);
    player_tank.animations.add('up', [0,1], 10, true);
    player_tank.animations.add('down', [4,5], 10, true);
    
}

function update() {
    game.physics.arcade.collide(player_tank, layer);
    
    if (cursors.left.isDown)
    {
        //if left cursor is down - play left animation, add velocity
        player_tank.animations.play('left');
        player_tank.body.velocity.x = -100;
        player_tank.body.setSize(13,13,2,1);
        
    }
    else if (cursors.right.isDown)
    {
        player_tank.animations.play('right');
        player_tank.body.velocity.x = 100;
        player_tank.body.setSize(13,13,1,1);
    }
    else if (cursors.up.isDown)
    {
        player_tank.animations.play('up');
        player_tank.body.velocity.y = -100;
        player_tank.body.setSize(13,13,1,2);
    }
    else if (cursors.down.isDown)
    {
        player_tank.animations.play('down');
        player_tank.body.velocity.y = 100;
        player_tank.body.setSize(13,13,1,1);
    } 
    else 
    {
        player_tank.animations.stop();
        player_tank.body.velocity.set(0);
    }
}

function render() {

    //  Useful debug things you can turn on to see what's happening

    // game.debug.spriteBounds(sprite);
    // game.debug.cameraInfo(game.camera, 32, 32);
    // game.debug.body(sprite);
    game.debug.bodyInfo(player_tank, 10, 10);

    game.debug.body(player_tank);

}

</script>

</body>
</html>

So, with enabled collision and moving player tank, that is what we have at this moment:

BattleCity game using Phaser.IO, part 3 – using Visual Studio Code.

This will be a little go back to setting up development environment. I have noticed that in some networks c9users.io is blocked by network providers firewall, that complicates developing using Cloud9 – you will net be able to preview your project.

Another good tool you could use is Visual Studio Code.

Download the tool, install it. As we already have our project in github, just select Clone Git repository, enter your repository url and credentials and that is it.

To have a quick way of previewing of our project without moving to server you can go to Extensions, search for Live Server Extension.

Visual Studio Code - live server install
Visual Studio Code – live server install

By pressing Go Live you will be able to quickly host your files and preview locally.

Visual Studio Code - go live
Visual Studio Code – go live

Visual Studio Code has nice source control integration so you will be able to view your changes and commit and push them from UI.

Visual Studio Code - source control
Visual Studio Code – source control