Skip to main content

Posts

Showing posts from 2016

My Custom DIY 60% Keyboard

My Custom DIY 60% Keyboard
All the parts

1x GH60 (Satan) board - $35 61x Cherry Clear switches - $35 2x Cherry Blue switches - $3 10x Cherry Red switches - $10 1x PCB Stabilizer set (6.25 space) - $6 1x Royal Oak Glam 60% case (Black Walnut) - $78 1x Aluminium 60% plate - $19 1x SA profile Choclatier keycaps - $102 (base, modifiers, and novelties)
1x Braided Nylon USB cable - $15 Solder, Tools, Risers, Labor, etc.
Total: ± $300
(Other single switch types added as needed)
Testing the board I had my helper do the work here. We needed to test the board before applying any solder.
Assembling Add the stabilizers first Add the plate (using a few switches as spacers) Then add the rest
Solder solder solder...

And test again:


The casing The casing I received did to have built-in risers:

So I added my own:



Then Assemble (using temporary spare DSA Carbon Cherry profile keycaps):


Hmm... pretty.

And finally received my Chocolatier SA-profile keycap set!


Programming the GH60 The board is controlle…
ABAP Bugs and peculiarities
Some of the design decisions in the ABAP language are a leap backwards when the intention was to leap at best sideways to thrust us into the meaningless paradigm of the now-defunct world of 4GL languages.

ABAP is a horrible language on all counts. Syntax-wise and how it is implemented, but here are just some of the succinct little tidbits I have found and ways to try and circumvent them.

1. Divide by zero is OK! sometimes... So X / 0 in my opinion is never OK. When X != 0, the result is +-Infinity and for X = 0 the result is undefined. Both should result in an error. Well, for some reason ABAP decided 0 / 0 = 0. Without blinking an eyelid. Well done.

To fix this, and create an exception in all cases of X and Y in expression X / Y, re-write it as:

X / Y -> ( X * ( 1 / Y ) )

The same problem happens with modulus, however the solution is not as elegant:

X mod Y -> ( ( 1 mod Y ) * 0 + X / Y ) )

2. float parsing on older system fail when assigned to a non-…