diff --git a/content/about.md b/content/about.md index d3128b9..cfded15 100644 --- a/content/about.md +++ b/content/about.md @@ -7,9 +7,9 @@ menu = "main" +++ -About Me -= -I'm Valentin, an computer science student from Regensburg, Germany. Currently I'm studying at [OTH Regensburg][1]. +## About Me + +I'm Valentin, a computer science student from Regensburg, Germany. Currently I'm studying at [OTH Regensburg][1]. My interests are mainly in IT security and open source software but also practical cryptography and blockchain based technologies. I also like administrating Linux machines and planing network infrastructures. In my free time I like to play around with binary analysis and exploiting techniques by solving wargames. @@ -18,19 +18,19 @@ I'm coding since ~2010. Currently working at [EBSnet][2]. -Skills -= +## Skills + * Linux - * Java SE and EE + * Java EE and SE * C * Perl 5 - * Little Rust and Python + * Getting better in Rust and little Python * Bash * MySQL * Oracle SQL -System/Tools -= +## System/Tools + * OS: [Arch Linux][3] * WM: [i3wm][4] * Editor: [Vim][5] @@ -38,8 +38,8 @@ System/Tools Also refer to my [dotfiles][10] -GitHub -= +## GitHub + Visit [my GitHub profile][11]. [1]: https://www.oth-regensburg.de/ diff --git a/content/post/a-rusty-weekend.md b/content/post/a-rusty-weekend.md index dcb7a47..bedf69e 100644 --- a/content/post/a-rusty-weekend.md +++ b/content/post/a-rusty-weekend.md @@ -1,6 +1,6 @@ +++ -date = "2017-04-07T12:19:43+02:00" -publishdate = "2017-04-07T12:19:43+02:00" +date = "2017-04-07T14:05:00+02:00" +publishdate = "2017-04-07T14:05:00+02:00" title = "A Rusty Weekend" categories = ["programming", "rust"] draft = true @@ -10,35 +10,50 @@ tags = ["rust","skeleton"] +++ ## The Rust Language -Since reading about Mozilla's new programming language [Rust](https://www.rust-lang.org/) I was eager to give it a try. Rust is a really new language and the first stable version was released in 2015. +Since reading about Mozilla's new programming language [Rust][0] I was eager to give it a try. Rust is a really new language and the first stable version was released in 2015. Almost C like performance without memory corruption vulnerabilities, no race conditions and so forth thanks to a number of very interesting design concepts and no garbage collector or any other kind of runtime overhead made that language sound really awesome. -In Rust all safety checks are done in compile time. The compiler translates into the [LLVM](https://en.wikipedia.org/wiki/LLVM) meta language which then takes care -of the optimization and compilation into machine code for the target architecture. Rust libraries provide a [FFI](https://en.wikipedia.org/wiki/Foreign_function_interface) +In Rust all safety checks are done in compile time. The compiler translates into the [LLVM][1] meta language which then takes care +of the optimization and compilation into machine code for the target architecture. Rust libraries provide a [FFI][2] so they can be used from almost every other language. Due to it's safety features and the lack of performance overhead, Rust also aims to be a system programming language and there are -some really awesome projects, e.g. the [Redox operating system](https://www.redox-os.org/) which implements a microkernel architecture and has some really great design ideas (have a look at it!). -Also Mozilla started implementing a new, parallel browser engine called [Servo](https://servo.org/) which is more than 3 times faster than Gecko, the current engine used in Firefox[^servo]. -The MP4 parser in Firefox is already implemented in Rust an there is more to come. [Here](https://www.rust-lang.org/en-US/friends.html) is a more complete list of Rust code that runs on production systems. +some really awesome projects, e.g. the [Redox operating system][3] which implements a microkernel architecture and has some really great design ideas (have a look at it!). +Also Mozilla started implementing a new, parallel browser engine called [Servo][4] which is more than 3 times faster than Gecko, the current engine used in Firefox[^servo]. +The MP4 parser in Firefox is already implemented in Rust and there is more to come. [Here][5] is a more complete list of Rust code that runs on production systems. -Rust also has a own package manager/build management tool called [cargo](https://github.com/rust-lang/cargo) that makes working with libraries really easy. -Libraries in the Rust ecosystem are hosted on [crates.io](https://crates.io/) and you just need to reference them in the cargo configuration and they will be downloaded and included in the build. +Rust also has its own package manager/build management tool called [cargo][6] that makes working with libraries really easy. +Libraries in the Rust ecosystem are hosted on [crates.io][7] and you just need to reference them in the cargo configuration and they will be downloaded and included in the build. ## New Projects -Last weekend i started my first project to get in contact with Rust, called [skeleton](https://github.com/ntzwrk/skeleton/), which aims to be a language independent project management tool. When starting a new project, e.g. using +Last weekend I started my first project to get in contact with Rust, called [skeleton][8], which aims to be a language independent project management tool. When starting a new project, e.g. using Gradle for build management, one initializes the structure using `gradle init` but in most cases that's not the only thing to do. You might want to initialize a git repository for the project, maybe copy a license file and download a gitignore file. Skeleton aims to automate these steps using some simple configuration files which allow the user to execute commands, create folders, touch files, include other skeleton configurations -or download a gitignore file from [gitignore.io](https://gitignore.io) by a given list of languages, IDEs, ... to ignore. So `skeleton --lang=java init` might initialize a Gradle project, copy your license file, touch your -README.md, initialize a git repository and download a gitignore file for [Java, Gradle and IntelliJ](https://www.gitignore.io/api/java%2Cgradle%2Cintellij). +or download a gitignore file from [gitignore.io][9] by a given list of languages, IDEs, ... to ignore. So `skeleton --lang=java init` might initialize a Gradle project, copy your license file, touch your +README.md, initialize a git repository and download a gitignore file for [Java, Gradle and IntelliJ][10]. ## Conclusion The design of Rust makes you think different about your code, e.g. by default every variable in Rust is immutable. If you want a mutable variable you have to explicitly mark it as such. When passing a variable as a parameter to -a function you can't simply reuse after the function returns as long as you don't explicitly borrow the variable for the time of the function call. All these features can also make you think different when writing C code -and probably producing better code. I really think Rust is worth looking at when implementing performance critical parts of a project. Also when looking for a new language to learn it is a good idea. +a function you can't simply reuse it after the function returns, as long as you don't explicitly borrow the variable for the time of the function call. All these features can also make you think different when writing C code +and probably help producing better code. I really think Rust is worth looking at especially when implementing performance critical parts of a project. Also when looking for a new language to learn it is a good idea. Even for people coming from scripting languages who aren't familiar with the edit-compile-run cycle of compiled languages it is really easy thanks to cargo. -Write your code, maybe add some dependencies and simply run `cargo test` for your tests or `cargo run` to execute the program. +Write your code, maybe add some dependencies and simply run `cargo test` for your tests or `cargo run` to execute the program. To get started I can recommend the official documentation [The Book][11] or have a look at some +examples on [Rust by Example][12]. [^servo]: http://events.linuxfoundation.org/sites/events/files/slides/LinuxConEU2014.pdf + +[0]: https://www.rust-lang.org/ +[1]: https://en.wikipedia.org/wiki/LLVM +[2]: https://en.wikipedia.org/wiki/Foreign_function_interface +[3]: https://www.redox-os.org/ +[4]: https://servo.org/ +[5]: https://www.rust-lang.org/en-US/friends.html +[6]: https://github.com/rust-lang/cargo +[7]: https://crates.io/ +[8]: https://github.com/ntzwrk/skeleton/ +[9]: https://gitignore.io +[10]: https://www.gitignore.io/api/java%2Cgradle%2Cintellij +[11]: https://doc.rust-lang.org/book/ +[12]: http://rustbyexample.com/ diff --git a/content/post/hello-world.md b/content/post/hello-world.md index 7440ca3..c7903ef 100644 --- a/content/post/hello-world.md +++ b/content/post/hello-world.md @@ -15,8 +15,8 @@ I created this website to give an overview about my person and the projects I'm -Setup -= +## Setup + This website is generated by the static website generator [Hugo][1] using the awesome [After Dark theme][2]. I track the source files of the website in a [GitHub repository][3]. The web server is a [nginx server][5] running on my own dedicated server from [Kimsufi][6] and does not log the visitors IP address (I **do** write access logs but I will never log IP addresses). I chose a static site generator over a CMS like WordPress because plain markdown files are easier to manage e.g. using git in contrast to WordPress posts being stored somewhere deep in a database. Also have a look at the amount of security releases in the [WordPress release notes][7]. Hugo generates static HTML files which are served through nginx, so there are no security risks.