Typo and structure fixes

This commit is contained in:
Valentin Brandl 2017-04-07 14:07:15 +02:00
parent b7d0384c10
commit cd8489e221
Signed by: vbrandl
GPG Key ID: CAD4DA1A789125F9
3 changed files with 44 additions and 29 deletions

View File

@ -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/

View File

@ -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/

View File

@ -15,8 +15,8 @@ I created this website to give an overview about my person and the projects I'm
<!--more-->
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.