<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><generator uri="https://jekyllrb.com/" version="3.6.2">Jekyll</generator><link href="https://bioruebe.com/feed.xml" rel="self" type="application/atom+xml"/><link href="https://bioruebe.com/" rel="alternate" type="text/html"/><updated>2020-05-15T07:59:03+02:00</updated><id>https://bioruebe.com/</id><title type="html">Bioruebe.com</title><subtitle>Development done right.</subtitle><author><name>Bioruebe</name></author><entry><title type="html">Server Maintenance</title><link href="https://bioruebe.com/2020/04/23/server-maintenance/" rel="alternate" type="text/html" title="Server Maintenance"/><published>2020-04-23T14:59:00+02:00</published><updated>2020-04-23T14:59:00+02:00</updated><id>https://bioruebe.com/2020/04/23/server-maintenance</id><content type="html" xml:base="https://bioruebe.com/2020/04/23/server-maintenance/">&lt;p&gt;Update: server maintenance has been completed successfully.&lt;/p&gt; &lt;p&gt;Bioruebe.com will undergo a server maintenance within the next week. Basic functionality such as software updates and the blog should not be impacted. However, some functions might not be available or show error messages for short periods of time.&lt;/p&gt;</content><author><name>Bioruebe</name></author><summary type="html">Update: server maintenance has been completed successfully.</summary></entry><entry><title type="html">Release: markdown-it plugins</title><link href="https://bioruebe.com/2020/04/09/release-markdown-it-plugins/" rel="alternate" type="text/html" title="Release: markdown-it plugins"/><published>2020-04-09T05:09:00+02:00</published><updated>2020-04-09T05:09:00+02:00</updated><id>https://bioruebe.com/2020/04/09/release-markdown-it-plugins</id><content type="html" xml:base="https://bioruebe.com/2020/04/09/release-markdown-it-plugins/">&lt;p&gt;A while ago I worked on a bigger project, which is built around markdown. As it grew the limits of the language became obvious, so I decided to create my own syntax extensions to fit my use case. Today, I released the results as two separate JavaScript libraries.&lt;/p&gt; &lt;p&gt;But one thing at a time: Markdown is a markup language, basically a way to format text just like HTML, XML or Tex. Compared to its competitors, markdown is extremely easy to use, lightweight and readable. You can understand a markdown-formatted text without parsing it. A list looks like a list, a heading looks like a heading and a link… well, you can guess it is a link because there’s a URL following the text.&lt;/p&gt; &lt;p&gt;Markdown pretty much took the Internet by storm and now powers a lot of famous services: Github, many content management systems and of course this blog.&lt;/p&gt; &lt;p&gt;The functionality, however, is limited. Fancy formatting like setting the font color is not possible. That’s for a good reason though: for example the authors should not take control over the design of your website. A text highlight should appear the way the designer decided and not sparkle in all colors of the rainbow…&lt;/p&gt; &lt;p&gt;Yet some use cases could profit from an extended markdown syntax. Github for example has task lists to make tracking to-do lists easier by displaying little checkboxes next to the items. Luckily, some markdown parsers provide the possibility to enable plugins to create your own flavour of the language.&lt;/p&gt; &lt;p&gt;I did exactly that and here are the results: two plugins for the well-known parser markdown-it: &lt;a href=&quot;https://github.com/Bioruebe/markdown-it-collapsible&quot;&gt;markdown-it-collapsible&lt;/a&gt; and &lt;a href=&quot;https://github.com/Bioruebe/markdown-it-label&quot;&gt;markdown-it-label&lt;/a&gt;. You can guess from the name, which functionality they add, can’t you? Well then, check them out on Github!&lt;/p&gt;</content><author><name>Bioruebe</name></author><summary type="html">A while ago I worked on a bigger project, which is built around markdown. As it grew the limits of the language became obvious, so I decided to create my own syntax extensions to fit my use case. Today, I released the results as two separate JavaScript libraries.</summary></entry><entry><title type="html">The Sweet Hello, The Sad Goodbye</title><link href="https://bioruebe.com/2020/02/12/the-sweet-hello-the-sad-goodbye/" rel="alternate" type="text/html" title="The Sweet Hello, The Sad Goodbye"/><published>2020-02-12T20:50:00+01:00</published><updated>2020-02-12T20:50:00+01:00</updated><id>https://bioruebe.com/2020/02/12/the-sweet-hello-the-sad-goodbye</id><content type="html" xml:base="https://bioruebe.com/2020/02/12/the-sweet-hello-the-sad-goodbye/">&lt;center&gt;&lt;p style=&quot;width: 45%;border: solid 5px;padding-top: 8px;padding-bottom: 8px;text-align:center&quot;&gt; in memoriam&lt;br /&gt;&lt;br /&gt; Sir Francis&lt;br /&gt; (2016 - 2020) &lt;/p&gt;&lt;/center&gt;</content><author><name>bioruebe</name></author><summary type="html">in memoriam Sir Francis (2016 - 2020)</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://bioruebe.com/imsf.jpg"/></entry><entry><title type="html">Release: A batch of unpackers</title><link href="https://bioruebe.com/2019/01/29/release-a-batch-of-unpackers/" rel="alternate" type="text/html" title="Release: A batch of unpackers"/><published>2019-01-29T10:51:00+01:00</published><updated>2019-01-29T10:51:00+01:00</updated><id>https://bioruebe.com/2019/01/29/release-a-batch-of-unpackers</id><content type="html" xml:base="https://bioruebe.com/2019/01/29/release-a-batch-of-unpackers/">&lt;p&gt;When I started working on UniExtract I was mainly doing maintenance work: updating program files, UI changes, adding helper tools to extract new file types. With the time my interest in the structure of files rose and I began looking at the bytes that made the archives on my computer.&lt;/p&gt; &lt;p&gt;While &lt;em&gt;I never got&lt;/em&gt; into reverse engineering software, looking at at hex dumps and making assumptions about what a specific number could mean &lt;em&gt;got me&lt;/em&gt;. I began with file formats, which already have been researched by others, and wrote my own unpacker as there were none (or none suitable for usage in UniExtract).&lt;/p&gt; &lt;p&gt;Learning took effect and I started to look at files with no or not sufficient (public available) information - and succeeded. Yes, some of my research took a lot of time (I still shudder thinking about a format that took weeks, because I missed the obvious solution) but at the end it’s really rewarding.&lt;/p&gt; &lt;p&gt;Today I release 5 unpackers created 2017-2018. Note: rmvdec and spoondec were already available as part of UniExtract before, but have been updated to address some bugs.&lt;/p&gt; &lt;p&gt;I hope it can be of use for anyone. Feel free to try them and don’t forget to report any problems in the related GitHub issue tracker.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;https://github.com/Bioruebe/brunsdec&quot;&gt;Brunsdec&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://github.com/Bioruebe/godotdec&quot;&gt;Godotdec&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://github.com/Bioruebe/rmvdec&quot;&gt;Rmvdec&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://github.com/Bioruebe/spoondec&quot;&gt;Spoondec&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://github.com/Bioruebe/utagedec&quot;&gt;Utagedec&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;</content><author><name>Bioruebe</name></author><summary type="html">When I started working on UniExtract I was mainly doing maintenance work: updating program files, UI changes, adding helper tools to extract new file types. With the time my interest in the structure of files rose and I began looking at the bytes that made the archives on my computer.</summary></entry><entry><title type="html">Farewell, Wordpress! Hello new website.</title><link href="https://bioruebe.com/2018/01/01/farewell-wordpress-hello-new-website/" rel="alternate" type="text/html" title="Farewell, Wordpress! Hello new website."/><published>2018-01-01T00:00:00+01:00</published><updated>2018-01-01T00:00:00+01:00</updated><id>https://bioruebe.com/2018/01/01/farewell-wordpress-hello-new-website</id><content type="html" xml:base="https://bioruebe.com/2018/01/01/farewell-wordpress-hello-new-website/">&lt;p&gt;It has been a while since bioruebe.com went online, and since the beginning Wordpress has been a steady companion - convenient, secure (for a CMS) and with a rich ecosystem of plugins. But to be honest: I don’t need a CMS at all. I barely write enough to justify such a huge backend and over the years loading times became slower and slower.&lt;/p&gt; &lt;p&gt;Time for a change then - and here it is. A slim, fast, and completely redesigned version of this website. Loading times decreased enormously and I removed a lot of unneccessary plugins and functions. This also means no more comments or contact form, but well… there are enough other ways to reach out to me. Just write an email :)&lt;/p&gt; &lt;p&gt;Old links should still work, if something is not working correctly, feel free to send me an email. I updated most of the static pages, so this website is not completely outdated anymore. Additionally, bioruebe.com is now available via SSL.&lt;/p&gt; &lt;p&gt;And that’s it. Back to work!&lt;/p&gt;</content><author><name>bioruebe</name></author><summary type="html">It has been a while since bioruebe.com went online, and since the beginning Wordpress has been a steady companion - convenient, secure (for a CMS) and with a rich ecosystem of plugins. But to be honest: I don’t need a CMS at all. I barely write enough to justify such a huge backend and over the years loading times became slower and slower.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://bioruebe.com/oldpage.png"/></entry><entry><title type="html">Release: [Tools] BioLBM</title><link href="https://bioruebe.com/2016/09/release-tools-biolbm/" rel="alternate" type="text/html" title="Release: [Tools] BioLBM"/><published>2016-09-12T10:09:46+02:00</published><updated>2016-09-12T10:09:46+02:00</updated><id>https://bioruebe.com/2016/09/release-tools-biolbm</id><content type="html" xml:base="https://bioruebe.com/2016/09/release-tools-biolbm/">&lt;h3 id=&quot;a-small-project-in-haxe-pt-3-the-results&quot;&gt;A ’small‘ project in haxe, pt. 3: the results&lt;/h3&gt; &lt;p&gt;Finally, after a few days of programming (and several weeks of writing library documentation and these blog articles) here’s the release of my ‘small project in haxe’: BioLBM. A tool designed to search files specified in a text document in given input path(s) and move them to a destination directory. Includes recursion and fuzzy search.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/Bioruebe/ListBasedMover/releases&quot;&gt;Download&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/Bioruebe/ListBasedMover&quot;&gt;Source code&lt;/a&gt;&lt;/p&gt;</content><author><name>bioruebe</name></author><summary type="html">A ’small‘ project in haxe, pt. 3: the results</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://bioruebe.com/biolbm.png"/></entry><entry><title type="html">A ’small‘ project in haxe, pt. 2: the problems</title><link href="https://bioruebe.com/2016/09/a-small-project-in-haxe-pt-2-the-problems/" rel="alternate" type="text/html" title="A &amp;#8217;small&amp;#8216; project in haxe, pt. 2: the problems"/><published>2016-09-12T10:07:47+02:00</published><updated>2016-09-12T10:07:47+02:00</updated><id>https://bioruebe.com/2016/09/a-small-project-in-haxe-pt-2-the-problems</id><content type="html" xml:base="https://bioruebe.com/2016/09/a-small-project-in-haxe-pt-2-the-problems/">&lt;p&gt;When I sent the tool to my friend to test it, I was expecting it to crash instantly. Because that always happens to my apps on his computer, no matter how much I test them before. Ok, a missing dll, not a problem at all. At least not at that time. I can be very persistent in terms of finding solutions to problems, which seem hard enough. I might have already found a temporary solution for a problem, but most of the time I don’t actually like these kind of ‘hacky’ fixes. (I know, that’s very atypical for a programmer, but having to include an additional dll file for such a simple program just doesn’t look very nice. And as always: the time spent doing that kind of research often helps me to understand the language and programming environment better.)&lt;/p&gt; &lt;p&gt;Most haxe developers tend to express how great the haxe community is. That’s true, you can ask in a Google groups powered discussion board (which is a pain per se) and might get an answer pretty fast. The downside of this is that for big parts of the language or the libraries there is either little to no documentation or the few explaining lines that exist are outdated. Okay, this is not very surprising as the language itself changes quite fast, so the work needed to keep it updated is a lot. On the other, hand for developers this means that you cannot easily google a problem like you would with other programming languages. Instead you have to post a question and wait for answers, which results in not being able to progress for more or less long time span.&lt;/p&gt; &lt;p&gt;For my problem, compiling a statically linked executable for the C++ target, there were questions. And answers. Most of them sounding like: ‘it should be possible, but I don’t know how.’ The most helpful resource I found is &lt;a href=&quot;https://github.com/HaxeFoundation/hxcpp/blob/master/src/ExampleMain.cpp&quot;&gt;an example C++ code snippet&lt;/a&gt; which also is, apart from its helpfulness,… Well, outdated. Ok, it &lt;em&gt;was&lt;/em&gt; outdated. I wrote some lines of documentation, made a pull request and three hours later it got accepted. (Wow, the devs are really fast.) You can find the instructions following the link above.&lt;/p&gt; &lt;p&gt;With that issue fixed, we could go on. Very soon I released: his system is literally a test parcour for any developer. More than once I truly believed he just organizes his files and settings in a special way to annoy any software developer on earth! Running &lt;a href=&quot;https://github.com/adamjcalhoun/punctuation&quot;&gt;Adam J. Calhoun’s punctuation script&lt;/a&gt; on the list of all of his folder names would probably result in the full Unicode specification! The first path he tried my tool on included a dot, German umlauts, an ampersand, brackets, a minus and a sharp. Getting infected with some &lt;strong&gt;ransomware&lt;/strong&gt;, which also encrypts file names, would actually fix many software problems on his computer.&lt;/p&gt; &lt;p&gt;And this my friends was the point when I found out that haxe couldn’t handle Unicode characters when using FileIO functions. Apparently, the haxe developers prefer to add a hl target - something no one knows anything about, something no one will use for years - instead of fixing problems that are known since 2014 and should be considered crucial for any modern language. (&lt;a href=&quot;https://groups.google.com/forum/#!msg/haxelang/IV2LXHJwjqQ/t_uJ7muqAwAJ&quot;&gt;More information here&lt;/a&gt;; Unicode support is planned for the next release.)&lt;/p&gt; &lt;p&gt;A partition solution: use Utf8.decode and Utf8.encode whenever you read paths or pass them to any FileIO function. This doesn’t resolve all problems, but a majority. Creating more workarounds didn’t seem worthwhile as the program includes a fuzzy search option, which finds these non-matched Unicode files, and because it is planned to be fixed in the next version of haxe. Hopefully…&lt;/p&gt;</content><author><name>bioruebe</name></author><summary type="html">When I sent the tool to my friend to test it, I was expecting it to crash instantly. Because that always happens to my apps on his computer, no matter how much I test them before. Ok, a missing dll, not a problem at all. At least not at that time. I can be very persistent in terms of finding solutions to problems, which seem hard enough. I might have already found a temporary solution for a problem, but most of the time I don’t actually like these kind of ‘hacky’ fixes. (I know, that’s very atypical for a programmer, but having to include an additional dll file for such a simple program just doesn’t look very nice. And as always: the time spent doing that kind of research often helps me to understand the language and programming environment better.)</summary></entry><entry><title type="html">A ’small‘ project in haxe, pt. 1: the libraries</title><link href="https://bioruebe.com/2016/09/a-small-project-in-haxe-pt-1-the-libraries/" rel="alternate" type="text/html" title="A &amp;#8217;small&amp;#8216; project in haxe, pt. 1: the libraries"/><published>2016-09-12T10:07:22+02:00</published><updated>2016-09-12T10:07:22+02:00</updated><id>https://bioruebe.com/2016/09/a-small-project-in-haxe-pt-1-the-libraries</id><content type="html" xml:base="https://bioruebe.com/2016/09/a-small-project-in-haxe-pt-1-the-libraries/">&lt;p&gt;A friend once needed a small script to simplify the programmer’s daily life. Given an input path, a list containing file names and an output directory, it should only find all the files from the list in the input folder and copy them to the specified destination. Well, I didn’t have time back then (although I love to take a few minutes to create such small and helpful command line tools), so he assembled a quick ‘n’ dirty temporary solution in C#. More than a year later I needed a few sample files, so I sent him a list. Because we had ‘ListCompare’ to take care of it. (Fun fact: I came up with this extremely unfitting name and I have no idea why. It doesn’t compare lists, it compares a directory with a list. Very misleading title…) And as it is always the case with .NET: it just didn’t work. Finally, my chance had come to finish (…or better: start) this project. Shouldn’t take too long…&lt;/p&gt; &lt;p&gt;As for most of my cli applications, I used haxe. A great language, but still quite new - which means: there aren’t so many code examples or libraries around. I decided fastly that I want to create a few scripts and functions, which will be of use in future projects, but I didn’t have time to write in the past. The first thing that came to my mind was a command line parser. Doing a quick search on haxelib revealed that there already is a good one. Even better: hxargs comes in a simple single file - and uses a feature of haxe that is mostly considered black magic: Macros. As I only understand a small part of this extremely powerful language feature, I decided to take a look at it and extend its functionality to be even easier to use. (The modified version can be found in the git repository of BioLBM. I didn’t contribute the changes to the main repository. It doesn’t work well as a library because of some things I still can’t get to work. Maybe it’s not black magic, but hard to understand completely.)&lt;/p&gt; &lt;p&gt;The first library resulting of this project is related to command line interfaces, too. It is a basic port of the well-known FIGlet program (you know, these fancy ASCII art style texts, commonly used to display a command line program’s name) to haxe. I used &lt;a href=&quot;https://github.com/scottgonzalez/figlet-js&quot;&gt;a javascript version&lt;/a&gt; with a limited feature set as a template and ported it over to haxe. Nice and easy; does what it is supposed to.&lt;/p&gt; &lt;p&gt;The second one is closely connected to the idea of adding fuzzy search capabilities to the tool. When searching for files or even text, it can add a lot to usability if not only exact matches are displayed, but also similar (e.g. misspelled) items. To achieve that, it is necessary to calculate the similarity between the search word and all the strings to search, and return all matches which are below a threshold value. Doing so for thousands of files would result in minutes of processing time; with the list of search terms this can add up to a lot of waiting time for the user. The solution: index files, calculate the distance and save it in a data structure designed for similarity-based searches - the BK-tree. As haxe hasn’t been one, so bit more work was required. And so here it is: a BK-tree library for haxe.&lt;/p&gt; &lt;p&gt;During the script creation process I also made some changes to my personal haxe snippet library (Bio.hx) and used the opportunity to release it on GitHub. For installation and usage instructions, please refer to the readme files in the GitHub repositories.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/Bioruebe/hx-bktree&quot;&gt;hx-bktree&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/Bioruebe/hx-figlet&quot;&gt;hx-figlet&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/Bioruebe/Bio.hx&quot;&gt;Bio.hx&lt;/a&gt;&lt;/p&gt;</content><author><name>bioruebe</name></author><summary type="html">A friend once needed a small script to simplify the programmer’s daily life. Given an input path, a list containing file names and an output directory, it should only find all the files from the list in the input folder and copy them to the specified destination. Well, I didn’t have time back then (although I love to take a few minutes to create such small and helpful command line tools), so he assembled a quick ‘n’ dirty temporary solution in C#. More than a year later I needed a few sample files, so I sent him a list. Because we had ‘ListCompare’ to take care of it. (Fun fact: I came up with this extremely unfitting name and I have no idea why. It doesn’t compare lists, it compares a directory with a list. Very misleading title…) And as it is always the case with .NET: it just didn’t work. Finally, my chance had come to finish (…or better: start) this project. Shouldn’t take too long…</summary></entry><entry><title type="html">Release: [Tools] ImageMerge</title><link href="https://bioruebe.com/2016/04/release-tools-imagemerge/" rel="alternate" type="text/html" title="Release: [Tools] ImageMerge"/><published>2016-04-02T08:43:04+02:00</published><updated>2016-04-02T08:43:04+02:00</updated><id>https://bioruebe.com/2016/04/release-tools-imagemerge</id><content type="html" xml:base="https://bioruebe.com/2016/04/release-tools-imagemerge/">&lt;p&gt;Another simple tool I created a while ago is now available for download. As the name suggests ImageMerge was made to merge single layers into one image. I needed a software which can load multiple images, display any selection of them merged together and provide a real-time enabling/disabling and ordering functionality. Sure, there are dozends of great image manipulation softwares, but generally they take way to long to start (Yes, The GIMP, I’m speaking of you).&lt;/p&gt; &lt;p&gt;As I wanted to take a closer look at the GDI+ API for some time now (Even AutoIt isn’t perfect. While using graphics in GUIs is no problem at all and not more than a single function call, i.e. using transparent png files needs a bit of work to do. The GDI+ wrapper functions included in AutoIt normally are the way to go then.), I took the chance and developed this simple script.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/Bioruebe/ImageMerge&quot;&gt;More information, tutorial &amp;amp; source code&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/Bioruebe/ImageMerge/releases&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;</content><author><name>admin</name></author><summary type="html">Another simple tool I created a while ago is now available for download. As the name suggests ImageMerge was made to merge single layers into one image. I needed a software which can load multiple images, display any selection of them merged together and provide a real-time enabling/disabling and ordering functionality. Sure, there are dozends of great image manipulation softwares, but generally they take way to long to start (Yes, The GIMP, I’m speaking of you).</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://bioruebe.com/ImageMerge.png"/></entry><entry><title type="html">Release: [Software] Universal Extractor 2</title><link href="https://bioruebe.com/2016/01/release-software-universal-extractor-2/" rel="alternate" type="text/html" title="Release: [Software] Universal Extractor 2"/><published>2016-01-01T18:42:27+01:00</published><updated>2016-01-01T18:42:27+01:00</updated><id>https://bioruebe.com/2016/01/release-software-universal-extractor-2</id><content type="html" xml:base="https://bioruebe.com/2016/01/release-software-universal-extractor-2/">&lt;p&gt;Let’s start the new year with a new release :)&lt;/p&gt; &lt;p&gt;UniExtract is a tool I use for a long time. It is not only capable of opening all kinds of common and uncommon archives, but can also extract executables, so you don’t have to install every software. Instead, you just unpack the files inside it. Still, there were some features missing. A few years ago I decided to get the source code and include some changes for personal use. Over time more and more was added and after some positive feedback from friends I gave the modified version to, I decided to make it a public release. After some time searching through official to-do lists and making the software a bit shinier, here it is: the first beta version of UniExtract 2.&lt;/p&gt; &lt;p&gt;More information can be found on &lt;a href=&quot;/dev/uniextract/&quot;&gt;the project page&lt;/a&gt; or &lt;a href=&quot;https://github.com/Bioruebe/UniExtract2&quot;&gt;at GitHub&lt;/a&gt;.&lt;/p&gt;</content><author><name>bioruebe</name></author><summary type="html">Let’s start the new year with a new release :)</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://bioruebe.com/UniExtract_main.png"/></entry></feed>