/####/ ################# /####/ #####/ ###### /####/ ###/ ###### /####/ #/ /####/ /####/ / /####/ /####/ /####/ /####/ /####/ /####/ /####/ / /####/ /####/ /# ##################### ###### /### ##################### ###### /##### ##################### ################# ###### ###### ###### # _ # # # #== # # #==\ #==, *==* #\\ # #\\ # |c| mhahnFr # #==# #= # # #==< #=* # # # \\ # # \\ # '-' # # # #== # #== #==/ # \\ *==* # \\# # \\# #
As of now, I speak these languages:
Among others, I use these tools:
Currently, I am studying at the 42 Heilbronn.
The 42 Heilbronn is a coding school with a completely new educational design:
Everyone is learning from everyone - without teachers. This peer learning principle
challenges the traditional education system very successfully.
More information can be found on their
website: 42heilbronn.de.
My 42 intra profile can be found here.
I started my journey in the world of coding back when I was 12 years old using the Java Programming language. Later on, I added another language to my portfolio, the Swift Programming language. At the 42 Heilbronn, I learned the C and the C++ Programming languages.
Read the full story here.
How to break Swifts type checker (Click to expand)
let data: [UInt8] = [ 128, 128, 128, 128 ]
let i: Int = data[0] & 0xff << 24
| data[1] & 0xff << 16
| data[2] & 0xff << 8
| data[3] & 0xff << 0
Correct solution (Click to expand)
let i: Int = Int(data[0]) & 0xff << 24
| Int(data[1]) & 0xff << 16
| Int(data[2]) & 0xff << 8
| Int(data[3]) & 0xff << 0
Crash the JVM (Click to expand)
import java.lang.reflect.Field;
import sun.misc.Unsafe;
class Breaker {
private final Unsafe unsafe;
public Breaker() throws Exception {
final var field = Unsafe.class.getDeclaredField("theUnsafe");
field.setAccessible(true);
unsafe = (Unsafe) field.get(null);
segfault();
freeError();
}
private void freeError() { unsafe.freeMemory(Integer.MAX_VALUE); }
private void segfault() { unsafe.putByte(Integer.MAX_VALUE, (byte) 0); }
public static void main(String[] args) throws Exception { new Breaker(); }
}