Software engineering graduate & Java developer

## My Career Timeline

It has been
• 9 years and 8 months since… Very first scripts in VBScript
• 9 years and 4 months since… Hello World in Java
• 4 years and 5 months since… Developer at KadeL Data servis, spol. s r.o.
• 3 years and 4 months since… Bachelor's degree in Computer Science (Faculty of Applied Sciences, UWB) – with honors
• 0 years and 4 months since… Master's degree in Software Engineering (Faculty of Applied Sciences, UWB)

## Significant Works

2021
Older
Before you leave...

## Draw something nice for me

Default values:

• Default position = [0, 0] (center)
• Default step = 20
• Default angle = 0 deg (→)
• Default angle change = 45 deg
• Default stroke width = 1
• Default recursion limit = 100

Commands:

Relative plotting:

• `M` – move forward by step
• `D` – draw forward by step
• `S(n)` – set step to n
• `M(n)` – move forward by n
• `D(n)` – draw forward by n
• `+` – increment angle by 45 deg
• `-` – decrement angle by 45 deg
• `+(n)` – increment angle by n degrees
• `-(n)` – decrement angle by n degrees
• `[` – push position and angle into stack
• `]` – pop position and angle from stack

Absolute plotting:

• `M(x, y)` – move to absolute position
• `D(x, y)` – draw to absolute position
• `H` – move home (0x0)
• `A(n)` – set angle to n degrees

Graphics & paths:

• `B(r, g, b, a)` – set background color (rgb = 0-255, a = 0-1)
• `C(r, g, b, a)` – set stroke color (rgb = 0-255, a = 0-1)
• `W(n)` – set stroke width
• `Z` – close path (connects first and last point)
• `E` – end path (C, W, Z, F and B also end path)
• `F` – fill path

Program flow:

• `?(x) { ... }` – evaluates body only if x is not zero
• `R(n) { ... }` – repeat body n times
• `@xxx(\$x, \$y...) { ... }` – define procedure named xxx with arguments x, y...
• `@xxx()` – execute procedure named xxx
• `!(n)` – set stack (recursion) limit to n (max: 1000)
• `\$xxx(y)` – set global variable xxx to y

Expressions:

• Standard infix notation, support for parenthesis
• Arithmetical operators: `+-√∛²³` (unary), `+-*×/÷%^` (binary)
• Logical operators: `!` (unary), `|&=<> >= <= !=` (binary)
• Custom variables: `\$xxx` for variable named xxx
• Build-in variables: `\$\$x`, `\$\$y`, `\$\$a`, `\$\$s`, `\$\$width`, `\$\$height`, `\$\$rnd`, `\$\$it` (only in R block)

Interpreter behaviour:

• Designed to be fault tolerant (the main reason is rendering while typing)
• Case insensitive
• Argument list is also terminated by line feed or curly bracket
• Characters allowed in identifiers (variable/procedure names): A-Z, _
• The maximum number of executed commands is limited to 1,000,000 (no infinite loops)