diff options
Merge commit 'dffe5e060399eea7d8a6985664786cc2a5d933ff' as 'source/00_content'
Diffstat (limited to 'source/00_content/pages')
-rw-r--r-- | source/00_content/pages/about.md | 17 | ||||
-rw-r--r-- | source/00_content/pages/contact.md | 20 | ||||
-rw-r--r-- | source/00_content/pages/impressum.md | 11 | ||||
-rw-r--r-- | source/00_content/pages/projects/binary_mapping.md | 24 | ||||
-rw-r--r-- | source/00_content/pages/projects/codepoint_iterator.md | 15 | ||||
-rw-r--r-- | source/00_content/pages/projects/dotfiles.md | 28 | ||||
-rw-r--r-- | source/00_content/pages/projects/graph_storage.md | 12 | ||||
-rw-r--r-- | source/00_content/pages/projects/input_xslt.md | 30 | ||||
-rw-r--r-- | source/00_content/pages/projects/scribble.md | 8 | ||||
-rw-r--r-- | source/00_content/pages/projects/simple_parser.md | 18 | ||||
-rw-r--r-- | source/00_content/pages/projects/spam_question_filter.md | 12 | ||||
-rw-r--r-- | source/00_content/pages/projects/trie.md | 15 |
12 files changed, 210 insertions, 0 deletions
diff --git a/source/00_content/pages/about.md b/source/00_content/pages/about.md new file mode 100644 index 0000000..fe25cd3 --- /dev/null +++ b/source/00_content/pages/about.md @@ -0,0 +1,17 @@ +# About me + +<img src="/media/me_header.jpg" alt="picture of me in Scotland" class="full clear"/> + +Hi, my name is Adrian Kummerländer. I am a Software Developer located in southern Germany. + +I taught myself programming at the age of 10 and spent the first few years developing software in _Delphi_ and _C#_. After my switch to _Linux_ as my primary operating system I started developing primarily in _JavaScript_, _XSLT_ and _C++_ altough I very much enjoy trying out other languages such as _Scala_ and _Python_. + +My professional education in software development started with my apprenticeship as a _"computer science expert with subject area software development"_[^1] at [_Sybit_](http://sybit.de) in 2010 which I concluded with distinction in 2013. + +While my primary activity nowadays is studiying for my A levels at the _Technische Oberschule_ I still work as a part-time developer at _Sybit_ in the _SAP CRM_ area where I mainly develop business printout processes using _ABAP_, _JavaScript_ and _XSLT_ in addition to _SAP WebUI_ development. + +Although software development and tickering with my computer systems definitely is a primary occupation of mine both professionally and recreationally, I also enjoy reading _hard science fiction_ books and attending concerts and festivals of _orchestral_ and _Metal_ music. If you are interested, a overview of my musical interests is available as a [blog article](/article/musikalischer_jahresruekblick_2013/) in German. + +I use this website to document some of my [thoughts and experiences](/archive) concerning software development and various other topics in addition to summarizing some of my [projects](/category/projects). + +[^1]: This really is the official translation of my recognized trade but I for one prefer referring to myself simply as Software Developer diff --git a/source/00_content/pages/contact.md b/source/00_content/pages/contact.md new file mode 100644 index 0000000..15a34df --- /dev/null +++ b/source/00_content/pages/contact.md @@ -0,0 +1,20 @@ +# Contact + +**eMail:** adrian[at]kummerlaender[dot]eu +**Public Key:** [key.kummerlaender.eu](http://key.kummerlaender.eu) +**Jabber:** adrian[underscore]kummerlaender[at]jabber[dot]ccc[dot]de +**Twitter:** [KnairdA](https://twitter.com/KnairdA) +**Github:** [KnairdA](https://github.com/KnairdA) +**cgit:** [code.kummerlaender.eu](http://code.kummerlaender.eu) + +Further information about myself may be found on the [about page](/page/about). + +## Legal + +Responsible for all contents: Adrian Kummerländer + +My address is easily found by entering _kummerlaender_ into the _WHOIS_ search on [eurid.eu](http://www.eurid.eu/en/whois-search). + +All contents of this website that are created by me are freely available under the terms of the Creative Commons [CC-BY-SA](http://creativecommons.org/licenses/by-sa/3.0/) license. This of course only applies in the absence of further license information. + +Further legal information is also available in [German](/page/impressum). diff --git a/source/00_content/pages/impressum.md b/source/00_content/pages/impressum.md new file mode 100644 index 0000000..ecd0b64 --- /dev/null +++ b/source/00_content/pages/impressum.md @@ -0,0 +1,11 @@ +# Rechtliches + +Verantwortlich für die Inhalte: Adrian Kummerländer + +Diese Webpräsenz ist eine private Webseite ohne kommerzielle Gewinne / Gewinnabsichten. Wer meine Adresse wissen möchte, kann diese über eine _WHOIS_ Abfrage bei der [Eurid](http://www.eurid.eu/en/whois-search) erfahren. + +Sollten sich nicht von mir erstellte Inhalte auf diesen Seiten finden, eine entsprechende Kennzeichnung jedoch fehlen, bitte ich um einen kurzen Hinweis per Mail. Ich werde die betroffenen Inhalte dann umgehend kennzeichnen bzw. entfernen. + +Die Inhalte dieses Webauftritts erstelle, aktualisiere und prüfe ich sorgfältig und nach bestem Wissen. Trotzdem kann ich für die Informationen keine Haftung übernehmen. Insbesondere übernehme ich keine Verantwortung für etwaige Schäden, die aufgrund der Inhalte dieser Domain entstehen könnten. + +Alle eigenen Inhalte stehen - soweit nicht anders gekennzeichnet - unter einer Creative Commons [CC-BY-SA](http://creativecommons.org/licenses/by-sa/3.0/de/) Lizenz. diff --git a/source/00_content/pages/projects/binary_mapping.md b/source/00_content/pages/projects/binary_mapping.md new file mode 100644 index 0000000..c178236 --- /dev/null +++ b/source/00_content/pages/projects/binary_mapping.md @@ -0,0 +1,24 @@ +# BinaryMapping + +…is a collection of C++ templates which may be used to map binary structures into tuples and various other structures. + +These structures can then be traversed using integrated containers and iterators. This is useful for many kinds of data serialization tasks. + +A explanation of an earlier version of this template library can be found on this [blog]. The source code is available via both [Github] and [cgit]. + +## Current features + +* Support for any kind of flat structure that can be expressed using integral types and arbitrarily sized byte-arrays +* Support for serialization in either big or little endianess +* Offers Container and Iterator templates for fast traversal of collections of tuples or other structures +* Support for developing custom types to be used in the Container and Iterator templates +* Support for nesting structures inside each other +* BitField template offers bit-level access to ByteField byte-arrays +* Doesn't require any external libraries besides the GNU libraries `endian.h` +* Header only library because of heavy usage of template metaprogramming +* Unit Tests based on GoogleTest +* MIT license + +[blog]: /article/mapping-binary-structures-as-tuples-using-template-metaprogramming +[Github]: https://github.com/KnairdA/BinaryMapping +[cgit]: http://code.kummerlaender.eu/BinaryMapping/ diff --git a/source/00_content/pages/projects/codepoint_iterator.md b/source/00_content/pages/projects/codepoint_iterator.md new file mode 100644 index 0000000..e202571 --- /dev/null +++ b/source/00_content/pages/projects/codepoint_iterator.md @@ -0,0 +1,15 @@ +# CodepointIterator + +…is a `std::iterator` derived class implementing the `std::bidirectional_iterator_tag` which iterates through unicode codepoints in a UTF8-encoded string. + +The source code is available on both my [Github] profile and [cgit]. + +## Current features + +* Bidirectional iteration through unicode codepoints +* The class itself does not rely on any external libraries +* Dereferencing an instance of the iterator yields the codepoint as `char32_t` +* Unit Tests based on GoogleTest + +[Github]: https://github.com/KnairdA/CodepointIterator +[cgit]: http://code.kummerlaender.eu/CodepointIterator/ diff --git a/source/00_content/pages/projects/dotfiles.md b/source/00_content/pages/projects/dotfiles.md new file mode 100644 index 0000000..b34f0d0 --- /dev/null +++ b/source/00_content/pages/projects/dotfiles.md @@ -0,0 +1,28 @@ +# Dotfiles + +…is a collection of the configuration files for my essential toolset. + +I manage my dotfiles using git and symlink them to their appropriate directories using [GNU stow]. The repository itself is available via [Github] or [cgit]. + +My toolset currently consists of the following applications: + +* fully encrypted [ArchLinux] installation with the [grsec] kernel +* [i3wm] for window management +* [vim] as my text editor of choice +* [pentadactyl] for turning Firefox into a fully keyboard driven browser +* [fish] as my default shell +* [urxvt] as terminal emulator +* [conky] for displaying system information in [i3bar] + +[GNU stow]: https://www.gnu.org/software/stow/ +[Github]: https://github.com/KnairdA/dotfiles +[cgit]: http://code.kummerlaender.eu/Dotfiles/ +[ArchLinux]: https://archlinux.org +[grsec]: https://grsecurity.net +[i3wm]: http://i3wm.org +[vim]: http://vim.org +[pentadactyl]: http://5digits.org/pentadactyl/ +[fish]: http://fishshell.com/ +[urxvt]: http://software.schmorp.de/pkg/rxvt-unicode.html +[conky]: http://conky.sourceforge.net/ +[i3bar]: http://i3wm.org/docs/i3bar-protocol.html diff --git a/source/00_content/pages/projects/graph_storage.md b/source/00_content/pages/projects/graph_storage.md new file mode 100644 index 0000000..b7beef8 --- /dev/null +++ b/source/00_content/pages/projects/graph_storage.md @@ -0,0 +1,12 @@ +# GraphStorage + +…is a Graph storage and query library based on LevelDB. + +It currently supports integer indexed nodes with properties and directed edges with types. The integer IDs are serialized _by hand_, values are serialized using protocol buffers. Everything is stored in a single sorted LevelDB database. + +Queries are possible trough a iterator like interface that handles single level queries quite fast. Additionally changes to edges can be monitored using a subscription mechanism. + +The library is in development and while not intended for any kind of production usage the source code is available via both [Github] and [cgit]. + +[Github]: https://github.com/KnairdA/GraphStorage +[cgit]: http://code.kummerlaender.eu/GraphStorage/ diff --git a/source/00_content/pages/projects/input_xslt.md b/source/00_content/pages/projects/input_xslt.md new file mode 100644 index 0000000..70d733e --- /dev/null +++ b/source/00_content/pages/projects/input_xslt.md @@ -0,0 +1,30 @@ +# InputXSLT + +…is a Apache Xalan based XSLT extension enabling access to external commands, the filesystem and calling further transformations from inside a transformation. + +It is used as the base for the static site generation system used to generate the whole website you are currently viewing and is available via [Github] or [cgit]. + +## Why? + +Contrary to popular opinion I actually like XSLT as a content transformation language and have built - amongst other things - most of my website projects on top of it. While I used the XSLT based [Symphony CMS] for most of these endeavours, the intention behind InputXSLT was to develop XSLT extensions enabling the development of static site generators using XSLT as both a template and application language. The fact that you are currently reading this page proves that this is indeed possible. + +## Overview + +The following table summarizes all the external functions provided by InputXSLT. They are available under the `InputXSLT` namespace after including `function.inputxslt.application` into the stylesheet element. + +|Function |Description | +|`read-file` |Reading plain text files as text and XML files as node trees | +|`read-directory` |Traversing filesystem directories | +|`external-command` |Executing external commands including support for providing the input stream and capturing the output stream | +|`write-file` |Committing plain text or node trees to the filesystem | +|`generate` |Calling transformations including support for capturing the result or committing it directly to the filesystem| + +The `ixslt` XSLT frontent provided by InputXSLT also implements a custom include entity resolver alongside to an easy to use interface for implementing further custom extension functions. + +## Tradeoffs and compromises + +All external functions offered by InputXSLT can be accessed using the XPath expression evaluation subsystems of the XSLT language. While in some cases XSL extension elements would have been the primary choice limitations in the C++ implementation of the Apache Xalan XSLT library made the usage of external functions the path of least resistance. In practice external functions like the one used to call other transformations are wrapped inside utility templates and as such may be used as if they where implemented as extension elements. All other functions like the ones used to access the filesystem fit better within a XPath-expression context and are as such implemented in the most fitting way. + +[Github]: https://github.com/KnairdA/InputXSLT +[cgit]: http://code.kummerlaender.eu/InputXSLT +[Symphony CMS]: http://getsymphony.com diff --git a/source/00_content/pages/projects/scribble.md b/source/00_content/pages/projects/scribble.md new file mode 100644 index 0000000..7657a0d --- /dev/null +++ b/source/00_content/pages/projects/scribble.md @@ -0,0 +1,8 @@ +# Scribble + +…is a multi-client scribble board using HTML5-Canvas as drawing and socket.io as communication technology. + +I developed this application together with [gnuheidix] and as such the source code is available on his [Github] profile. + +[gnuheidix]: http://gnuheidix.de/ +[Github]: https://github.com/gnuheidix/pubsub-scribble diff --git a/source/00_content/pages/projects/simple_parser.md b/source/00_content/pages/projects/simple_parser.md new file mode 100644 index 0000000..ea4df53 --- /dev/null +++ b/source/00_content/pages/projects/simple_parser.md @@ -0,0 +1,18 @@ +# SimpleParser + +…is a simple parser for resolving mathematical terms. + +The term is parsed by generating a binary expression tree using the Shunting-Yard algorithm. The implementation itself does not use any external libraries and relies fully on the features provided by the C++ language and the standard library. + +This application marks the first steps in C++ I took a couple of years back and is available on [Github] or [cgit]. + +## Current features + +* Calculating terms with basic operators while respecting the priority of each operator +* Support for parentheses +* Support for alphabetic constants +* Export of the expression tree as [Graphviz] dot for visualization + +[Graphviz]: http://www.graphviz.org/ +[Github]: https://github.com/KnairdA/SimpleParser +[cgit]: http://code.kummerlaender.eu/SimpleParser/ diff --git a/source/00_content/pages/projects/spam_question_filter.md b/source/00_content/pages/projects/spam_question_filter.md new file mode 100644 index 0000000..45ddd46 --- /dev/null +++ b/source/00_content/pages/projects/spam_question_filter.md @@ -0,0 +1,12 @@ +# Spam Question Filter + +…is simple event filter for Symphony CMS to prevent spam by asking the user to calculate a easy math question. + +I wrote this [Symphony CMS] extension during the development of a new website for a [local musical society] as I was not satisfied with the solutions available for spam prevention in the [Symphony CMS] context. + +The source code is available via [Github] or [cgit] for your convenience. + +[Symphony CMS]: http://www.getsymphony.com/ +[Github]: https://github.com/KnairdA/spamquestionfilter +[cgit]: http://code.kummerlaender.eu/spamquestionfilter/ +[local musical society]: http://mv-mahlspueren.de diff --git a/source/00_content/pages/projects/trie.md b/source/00_content/pages/projects/trie.md new file mode 100644 index 0000000..7b30a3a --- /dev/null +++ b/source/00_content/pages/projects/trie.md @@ -0,0 +1,15 @@ +# Trie + +…is a basic template based implementation of a prefix tree data structure. + +The implementation may be found on [Github] or [cgit]. + +## Current features + +* Specializable tree element type +* Adding, removing and resolving paths in the prefix tree +* Builds on the standard library +* Unit tests based on GoogleTest + +[Github]: https://github.com/KnairdA/Trie +[cgit]: http://code.kummerlaender.eu/Trie/ |