<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on bytebang</title><link>https://bytebang.at/blog/</link><description>Recent content in Blog on bytebang</description><generator>Hugo</generator><language>de-AT</language><atom:link href="https://bytebang.at/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Fish-o-mat: An Aquaponics Greenhouse Controlled by ESPHome and Home Assistant</title><link>https://bytebang.at/blog/aquaponics-controller-with-esphome-and-home-assistant/</link><pubDate>Wed, 28 Oct 2026 00:00:00 +0000</pubDate><guid>https://bytebang.at/blog/aquaponics-controller-with-esphome-and-home-assistant/</guid><description>&lt;h2 id="the-problem"&gt;The Problem&lt;/h2&gt;&#10;&lt;p&gt;Aquaponics combines fish farming and plant cultivation in one water cycle: the fish produce nutrients, bacteria convert them, and the plants clean the water that flows back to the fish. In my greenhouse two separate systems – a left and a right side – are running, each with its own fish tank, grow bed and vertical pipe towers for lettuce. The fish are catfish.&lt;/p&gt;&#10;&lt;p&gt;Such a system only works if a handful of things run reliably, day and night, all year round:&lt;/p&gt;</description></item><item><title>Streaming wireless weatherstationdata via MQTT</title><link>https://bytebang.at/blog/streaming-wireless-weatherstationdata-via-mqtt/</link><pubDate>Tue, 29 Dec 2020 09:43:56 +0100</pubDate><guid>https://bytebang.at/blog/streaming-wireless-weatherstationdata-via-mqtt/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;A lot of 433 MHz based weather stations are sending their data to their paired receiver. But how would you receive all the stations within your vincity and stream the data into the internet ?&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;rtl_433 is a tool which takes samples from an attached RTL-SDR stick and decodes them. The name already suggests that it will operate in the 433 MHz frequency area where a lot of weatherstations are boradcasting their values.&lt;/p&gt;</description></item><item><title>Stream your web/surveillance cam to YouTube</title><link>https://bytebang.at/blog/stream-your-web-surveillance-cam-to-youtube/</link><pubDate>Thu, 26 Nov 2020 12:01:10 +0100</pubDate><guid>https://bytebang.at/blog/stream-your-web-surveillance-cam-to-youtube/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;If you have a cool webcam which should be streamed to youtube then you have a lot of options how to reach this goal. This article shows how to stream a webcam (or any other cam which offers a RTSP Stream) directly to youtube.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;First: &lt;a href="https://support.google.com/youtube/answer/2474026?co=GENIE.Platform%3DDesktop&amp;amp;hl=en&amp;amp;oco=0" rel="__blank"&gt;Enable streaming in youtube&lt;/a&gt;. This will take up to 24 hours ! After this period you will be able to send a network stream to youtube which boradcasts it for you. Youtube offers a lot of help to get you started.&lt;/p&gt;</description></item><item><title>Manage your passwords with pass</title><link>https://bytebang.at/blog/manage-your-passwords-with-pass/</link><pubDate>Wed, 14 Oct 2020 18:01:03 +0200</pubDate><guid>https://bytebang.at/blog/manage-your-passwords-with-pass/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Everybody knows that passwords should have a certain amount of characters, numbers and special signs in it - which makes them hard to remember.&lt;/p&gt;&#10;&lt;p&gt;If you have a lot of different accounts then it is a good idea to store your passwords somewhere. People are coming up with different solutions to this problem&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Sticky note under the keyboard -&amp;gt; not a really good idea&lt;/li&gt;&#10;&lt;li&gt;Excel Files -&amp;gt; Also not good, because these can be scanned by the windows search routine&lt;/li&gt;&#10;&lt;li&gt;Password managers -&amp;gt; GOOD IDEA&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Within the Windows world, I would recomment KeePass as &lt;a href="https://digital.com/password-managers/" rel="__blank"&gt;password manager&lt;/a&gt;. It is secure, fast and easy to use &amp;hellip; but what tool should the plain linux user use ?&lt;/p&gt;</description></item><item><title>Reverse backup your Linux machine with a Synology NAS</title><link>https://bytebang.at/blog/reverse-backup-your-linux-machine-with-a-synology-nas/</link><pubDate>Fri, 11 Sep 2020 21:05:52 +0200</pubDate><guid>https://bytebang.at/blog/reverse-backup-your-linux-machine-with-a-synology-nas/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I think we don&amp;rsquo;t need to discuss that backups are a very convenient mechanism to restore accidentally deleted files or to recover your business from a malware / hacking attack.&lt;/p&gt;&#10;&lt;p&gt;A lot of companies (and also unaware sysadmins) are doing their backups with some kind of &amp;ldquo;&lt;em&gt;Use some local rsync / robocopy script to copy all data to another drive / location&lt;/em&gt;&amp;rdquo; strategy.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Is this bad ? -&amp;gt; No! &amp;hellip; you have a backup if you need one.&lt;/li&gt;&#10;&lt;li&gt;Is it good ? -&amp;gt; Well &amp;hellip; it depends of how you do your backup in detail.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Imagine the following situation: You have a PC which is backed up by the previous mentioned strategy. All your backups are running regularly and then suddenly a ransomware comes along which tries to encrypt all your data. You might end up with an fully encrypted machine and also an encrypted backup - which renders it completely useless.&lt;/p&gt;</description></item><item><title>Stream public IPTV channels with TvHeadend</title><link>https://bytebang.at/blog/stream-public-iptv-channels-with-tvheadend/</link><pubDate>Wed, 05 Aug 2020 15:22:31 +0200</pubDate><guid>https://bytebang.at/blog/stream-public-iptv-channels-with-tvheadend/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I love to watch IP TV channels - and so do all my other flat mates. If only one person is streaming at a time then everything is fine, if multiple persons want to watch the same channel at the same time then the internet connection can suffer a bit.&lt;/p&gt;&#10;&lt;p&gt;Since I have a working Setup with &lt;a href="https://bytebang.at/blog/iptv-with-a-synology-ds713/"&gt;TvHeadend on a Synology &lt;/a&gt;I wanted to integrate public available IPTV Channels into this solution. So every client can connect once to my TvHeadend Box, and the box connects one to the requested server(s).&lt;/p&gt;</description></item><item><title>Simple webservices with Java - SOAP and REST</title><link>https://bytebang.at/blog/simple-webservices-with-java-soap-and-rest/</link><pubDate>Wed, 01 Jul 2020 23:11:43 +0200</pubDate><guid>https://bytebang.at/blog/simple-webservices-with-java-soap-and-rest/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I wanted to try out if it is possible to create a SOAP Webservice without an dependencies to third party libraries. Well &amp;hellip; it is (at least with Java 8)&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;The solution can be found on my github repository: &lt;a href="https://github.com/bytebang/simpleSoapWebservice"&gt;https://github.com/bytebang/simpleSoapWebservice&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;It contains two classes, where the &lt;a href="https://github.com/bytebang/simpleSoapWebservice/blob/master/simpleSoapWebservice/src/at/bytebang/server/Server.java"&gt;Server.java&lt;/a&gt; creates a so called Endpoint that publishes the Functions of the &lt;a href="https://github.com/bytebang/simpleSoapWebservice/blob/master/simpleSoapWebservice/src/at/bytebang/webservice/CalculatorService.java"&gt;Calculator.java&lt;/a&gt; via SOAP.&lt;/p&gt;&#10;&lt;p&gt;Happy Coding !&lt;/p&gt;</description></item><item><title>Super simple REST API with Restlet</title><link>https://bytebang.at/blog/super-simple-rest-api-with-restlet/</link><pubDate>Sat, 06 Jun 2020 12:19:08 +0200</pubDate><guid>https://bytebang.at/blog/super-simple-rest-api-with-restlet/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;In one of our projects we needed a small &lt;a href="https://en.wikipedia.org/wiki/Representational_state_transfer"&gt;REST&lt;/a&gt; API for communication purposes.&lt;/p&gt;&#10;&lt;p&gt;In Java there are multiple ways how to achieve this. I did not want to set up an application server or something with a lot of dependencies - i just want it to work. So I searched for a simpler method to get it up and running &amp;hellip;&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;I stumbled upon a framework named &lt;a href="https://restlet.talend.com/"&gt;Restlet&lt;/a&gt;.The webpage describes exactly what it is and what it does:&lt;/p&gt;</description></item><item><title>Delete all emails in mutt</title><link>https://bytebang.at/blog/delete-all-emails-in-mutt/</link><pubDate>Sat, 02 May 2020 10:56:10 +0200</pubDate><guid>https://bytebang.at/blog/delete-all-emails-in-mutt/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I am running several Linux servers and thereon are a few &lt;a href="https://wiki.ubuntuusers.de/Cron/"&gt;cron&lt;/a&gt; jobs. I like to configure these cornjobs to send me an email with the result as soon as they are finished. (Which can be done by prepending a &lt;code&gt;MAILTO=“recipient@adress.tld“&lt;/code&gt; in the crontab)&lt;/p&gt;&#10;&lt;p&gt;However, if there are jobs which are running frequently then you may get a lot of emails in your local inbox. Since i am using &lt;a href="http://www.mutt.org/"&gt;mutt&lt;/a&gt; (a local command line email client) for checking my mails.&lt;/p&gt;</description></item><item><title>Forward RDP Connections through a Linux firewall</title><link>https://bytebang.at/blog/forward-rdp-connections-through-a-linux-firewall/</link><pubDate>Tue, 07 Apr 2020 09:59:19 +0200</pubDate><guid>https://bytebang.at/blog/forward-rdp-connections-through-a-linux-firewall/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;When it comes to online learning some companies have it easier than others.While some can do this via plain PowerPoint Karaoke, others have to provide a complete infrastructure with different servers, services, specialized/expensive software packages and so on. Usually this is done via a separated learning environment (like a training-room within the companies facilities)&lt;/p&gt;&#10;&lt;p&gt;But if the trainees can not come to the training-labs (eg. because of COVID-19 isolation) then you have to bring this environment to them. voice and slides (or the screen of the presenter) can easily be achieved via&lt;/p&gt;</description></item><item><title>Getting Mikrotik winbox fonts right when emulated in wine</title><link>https://bytebang.at/blog/getting-mikrotik-winbox-fonts-right-when-emulated-in-wine/</link><pubDate>Tue, 24 Mar 2020 11:34:37 +0100</pubDate><guid>https://bytebang.at/blog/getting-mikrotik-winbox-fonts-right-when-emulated-in-wine/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;&lt;a href="https://mikrotik.com/"&gt;Mikrotik&lt;/a&gt; sells very powerful &lt;a href="https://mikrotik.com/products"&gt;hardware&lt;/a&gt; for really low prices. In order to configure the hardware you can either use &lt;a href="https://wiki.mikrotik.com/wiki/Manual:Webfig"&gt;NetFig&lt;/a&gt; (the web based configuration utility) or you can run &lt;a href="https://mikrotik.com/download"&gt;winbox&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Winbox runs fine under MS-Windows environments, and for Linux geeks as me it can also be run within the &lt;a href="https://www.winehq.org/"&gt;wine environment&lt;/a&gt; (which is &amp;hellip; as the name says &amp;hellip; not an emulator).&lt;/p&gt;&#10;&lt;p&gt;Depending on what wine packages you have installed on your machine, you will encounter an imperfection if you are using the Terminal within winbox: The font is a &lt;a href="https://en.wikipedia.org/wiki/Monospaced_font"&gt;proportional font&lt;/a&gt; - which is impractical if you want to render ASCII art tables.&lt;/p&gt;</description></item><item><title>Connect to Hamnet with a Ubiquity Bullet2HP</title><link>https://bytebang.at/blog/connect-to-hamnet-with-a-ubiquity-bullet2hp/</link><pubDate>Wed, 26 Feb 2020 10:36:43 +0100</pubDate><guid>https://bytebang.at/blog/connect-to-hamnet-with-a-ubiquity-bullet2hp/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;As licensed &lt;a href="https://bytebang.at/blog/portable-ham-radio-station/"&gt;Ham radio operator&lt;/a&gt; I wanted to try something new. So I climbed up the roof and mounted a TP-Link 2.4 GHz Grid antenna with &lt;a href="https://bytebang.at/blog/splashproof-hf-connections/"&gt;splashproof connections&lt;/a&gt; to the inside of my house.&lt;/p&gt;&#10;&lt;img src="https://bytebang.at/blog/connect-to-hamnet-with-a-ubiquity-bullet2hp/GridAntenna.jpg" style="display: block; margin-left: auto; margin-right: auto;;width:66.0%" alt="Grid Antenna" /&gt;&#10;&lt;img src="https://bytebang.at/blog/connect-to-hamnet-with-a-ubiquity-bullet2hp/BulletInBox.jpg" style="display: block; margin-left: auto; margin-right: auto;;width:66.0%" alt="Bullet In Box" /&gt;&#10;&lt;p&gt;Now I had to configure the Bullet2HP to be able to connect to my nearest HAMNET, which is located approximately 22km away:&lt;/p&gt;</description></item><item><title>Mounting a dd image</title><link>https://bytebang.at/blog/mounting-a-dd-image/</link><pubDate>Thu, 30 Jan 2020 21:19:03 +0100</pubDate><guid>https://bytebang.at/blog/mounting-a-dd-image/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Recently I had to re-setup my laptop because of *reasons*. However, I am used to backup it regularly by creating a &lt;a href="https://www.cyberciti.biz/faq/unix-linux-dd-create-make-disk-image-commands/"&gt;full-disk image with dd&lt;/a&gt; which is stored on a separate hard disk.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;dd is a tool which allows you to create bit-wise copies of disks or partitions into files and vice versa. The first few hundred bytes of a full-disk image contain information about the partitions contained on the disk.&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Scriptable Java stream() filter</title><link>https://bytebang.at/blog/scriptable-java-stream-filter/</link><pubDate>Tue, 31 Dec 2019 10:13:52 +0100</pubDate><guid>https://bytebang.at/blog/scriptable-java-stream-filter/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Java 8 introduces the &lt;code&gt;java.util.stream.Stream&amp;lt;T&amp;gt;&lt;/code&gt; interface which enables users to perform very efficient operations on arrays and collections. This is a very convenient way how to things very effective and also very elegant.&lt;/p&gt;&#10;&lt;p&gt;However - I wondered if it is possible to create a filter which is able to filter objects based on a javascript snippet. Since I could not find an appropriate solution I came up with my own.&lt;/p&gt;</description></item><item><title>How to connect your Davis Vantage 2 to the Internet</title><link>https://bytebang.at/blog/how-to-connect-your-davis-vantage-2-to-the-internet/</link><pubDate>Sat, 30 Nov 2019 14:03:54 +0100</pubDate><guid>https://bytebang.at/blog/how-to-connect-your-davis-vantage-2-to-the-internet/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I want to connect a &lt;a href="https://www.amazon.de/Davis-Vantage-Pro-2-Basic/dp/B00CI412NK"&gt;&lt;em&gt;Davis Vintage 2&lt;/em&gt; weatherstation&lt;/a&gt; to the internet. The problem is, that the software that is usually available is pretty pricy - so i went for my own solution.&lt;/p&gt;&#10;&lt;p&gt;→ &lt;a href="https://images-na.ssl-images-amazon.com/images/I/51rOtyfDWBL.jpg"&gt;Photo of the Davis Vantage Pro 2 (external image, amazon.com)&lt;/a&gt;&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;I was already using the &lt;a href="https://wiki.meteohub.de/Main_Page"&gt;Meteohub&lt;/a&gt; software package. I put a lot of effort to create all the graphs that i wanted and so I wanted to stick with it - so I had to find a way to make this software thing that it somehow has a RS232 connection to the station.&lt;/p&gt;</description></item><item><title>How to display values in ThingWorx in a 2d mashup</title><link>https://bytebang.at/blog/how-to-display-values-in-thingworx-in-a-2d-mashup/</link><pubDate>Thu, 31 Oct 2019 11:21:50 +0100</pubDate><guid>https://bytebang.at/blog/how-to-display-values-in-thingworx-in-a-2d-mashup/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;In my &lt;a href="https://bytebang.at/blog/connect-your-mqtt-device-to-thingworx/"&gt;last article&lt;/a&gt; i have given you some tips &amp;amp; tricks how to get your data into ThingWorx. Since I assume that somebody wants to see the sensors data in action I am going to give you a shot primer here.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;ThingWorx has a very powerful rendering engine, which allows you to generate simple 2D dashboards (shown in this article), but also to markup 3D models of your things with live data. So - lets get started:&lt;/p&gt;</description></item><item><title>Connect your MQTT device to ThingWorx</title><link>https://bytebang.at/blog/connect-your-mqtt-device-to-thingworx/</link><pubDate>Mon, 30 Sep 2019 16:53:15 +0200</pubDate><guid>https://bytebang.at/blog/connect-your-mqtt-device-to-thingworx/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;In the last few articles I have shown how to &lt;a href="https://bytebang.at/blog/iot-parking-sensor-mqtt-version/"&gt;transmit data from an IoT device directly to a MQTT broker&lt;/a&gt; or via &lt;a href="https://bytebang.at/blog/iot-parking-sensor-lorawan-version/"&gt;LoRaWAN to TheThingsNetwork&lt;/a&gt;. If you want your solution to scale, and if you are not a big fan of hosting your own infrastructure, then one possibility is to to use a full blown IoT Framework like &lt;a href="https://www.ptc.com/de/products/iiot"&gt;ThingWorx&lt;/a&gt;. Since it is difficult to get things started (especially when new technology comes into the mix), I will show you some tricks with this powerful platform.&lt;/p&gt;</description></item><item><title>Processing data from TheThingNetworks with Apache Camel</title><link>https://bytebang.at/blog/processing-data-from-thethingnetworks-with-apache-camel/</link><pubDate>Sat, 31 Aug 2019 20:21:43 +0200</pubDate><guid>https://bytebang.at/blog/processing-data-from-thethingnetworks-with-apache-camel/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;In the last few articles I have shown how to &lt;a href="https://bytebang.at/blog/iot-parking-sensor-mqtt-version/"&gt;transmit data from an IoT device directly to a MQTT broker&lt;/a&gt; or via &lt;a href="https://bytebang.at/blog/iot-parking-sensor-lorawan-version/"&gt;LoRaWAN to TheThingsNetwork&lt;/a&gt; (also called TTN). This time I will show you how to build a simple mail service with &lt;a href="https://camel.apache.org/"&gt;Apache Camel&lt;/a&gt; which sends you a mail whenever your parking place is occupied.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;The solution is simple. So lets start with pointing out the facts&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;The sensor transmits data to &lt;a href="https://www.thethingsnetwork.org/"&gt;TheThingsNetwork&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;TTN has an mqtt API which allows you to be updated as soon as data is transmitted&lt;/li&gt;&#10;&lt;li&gt;Apache Camel has a &lt;a href="https://camel.apache.org/components/latest/mqtt-component.html"&gt;MQTT component &lt;/a&gt;and a &lt;a href="https://camel.apache.org/components/latest/mail-component.html"&gt;Mail component&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;So all we have to do is to fire up apache camel and to look if the datafield &amp;ldquo;distance&amp;rdquo; (if you have no idea where this is coming about: read my older &lt;a href="https://bytebang.at/blog/iot-parking-sensor-lorawan-version/"&gt;article about TTN and decoders&lt;/a&gt;) is above or below a certain threshold.&lt;/p&gt;</description></item><item><title>IoT parking sensor - LoRaWAN version</title><link>https://bytebang.at/blog/iot-parking-sensor-lorawan-version/</link><pubDate>Mon, 29 Jul 2019 17:57:02 +0200</pubDate><guid>https://bytebang.at/blog/iot-parking-sensor-lorawan-version/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;The &lt;a href="https://bytebang.at/blog/howto-build-your-own-iot-parking-sensor/" rel="__blank"&gt;parking sensor which was built in part one&lt;/a&gt; of this series was able to &lt;a href="https://bytebang.at/blog/iot-parking-sensor-mqtt-version/" rel="__blank"&gt;connect to a WiFi and transmit the data via MQTT&lt;/a&gt; with the software shown in part two of this series.&lt;/p&gt;&#10;&lt;p&gt;This is a very good approach if you want to test something in an early prototyping phase. If you want to roll out your devices then it is very unlikely that you will have a WiFi deployed wherever you sensor will be. So you have to look for another transmission technology for the last mile.&lt;/p&gt;</description></item><item><title>IoT parking sensor - MQTT version</title><link>https://bytebang.at/blog/iot-parking-sensor-mqtt-version/</link><pubDate>Mon, 24 Jun 2019 16:45:35 +0200</pubDate><guid>https://bytebang.at/blog/iot-parking-sensor-mqtt-version/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;In part 1 of this series we have covered the &lt;a href="https://bytebang.at/blog/howto-build-your-own-iot-parking-sensor/" rel="__blank"&gt;schematics and hardware for a IoT parking sensor&lt;/a&gt;. Now we are gonna have a look into the software which is able to transmit the state of the device to an arbitrary MQTT broker.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;The software is  straight forward:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Set up the display&lt;/li&gt;&#10;&lt;li&gt;Connect to the WiFi&lt;/li&gt;&#10;&lt;li&gt;Connect to the MQTT broker&lt;/li&gt;&#10;&lt;li&gt;Read and transmit the sensor reading continuously&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Here is my implementation:&lt;/p&gt;</description></item><item><title>Howto build your own IoT parking sensor</title><link>https://bytebang.at/blog/howto-build-your-own-iot-parking-sensor/</link><pubDate>Wed, 22 May 2019 16:45:16 +0200</pubDate><guid>https://bytebang.at/blog/howto-build-your-own-iot-parking-sensor/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Recently I had to build a prototype for a parking sensor application. The goal was to detect if a parking place is occupied or not.&lt;/p&gt;&#10;&lt;p&gt;Since there are multiple approaches to this, I decided to build a cheap module which can be mounted inside a garage (or any other dry place) and which can be powered either by a plain USB charger or by a 9V-Block.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;For the hardware I decided to go with my &lt;a href="https://bytebang.at/blog/porting-luartos-to-the-ttgo-lora-v20-board/" rel="__blank"&gt;TTGOv2 board and LuaRTOS &lt;/a&gt;as operating system on it. It has a small display and it enables me to send the data either via MQTT or via LoraWan.&lt;/p&gt;</description></item><item><title>Turn Mikrotik CAP interfaces on and off by script</title><link>https://bytebang.at/blog/turn-mikrotik-cap-interfaces-on-and-off-by-script/</link><pubDate>Mon, 29 Apr 2019 16:04:17 +0200</pubDate><guid>https://bytebang.at/blog/turn-mikrotik-cap-interfaces-on-and-off-by-script/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I am running a big Mikrotik based WiFi installation where the Guest-Wifi should not always be accessible. One way how to do this is, is to create sub interfaces and to turn them on and of at the controller as you need them.&lt;/p&gt;&#10;&lt;img src="https://bytebang.at/blog/turn-mikrotik-cap-interfaces-on-and-off-by-script/CAPsMAN.png" style="display: block; margin-left: auto; margin-right: auto;;width:100.0%" alt="CAPs MAN" /&gt;&#10;&lt;p&gt;In the image above, we see some of the interfaces which are managed by CAPsMAN. The gues wifi is bound to the interfaces ending with the suffix &lt;code&gt;_gast&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Porting LUARTOS to the TTGO LORA v2.0 Board</title><link>https://bytebang.at/blog/porting-luartos-to-the-ttgo-lora-v20-board/</link><pubDate>Fri, 29 Mar 2019 07:52:39 +0100</pubDate><guid>https://bytebang.at/blog/porting-luartos-to-the-ttgo-lora-v20-board/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I ordered for a parking sensor project some &lt;a href="https://de.aliexpress.com/item/TTGO-LORA32-V2-0-433-868-915-mhz-ESP32-LoRa-OLED-0-96-zoll-SD-Karte/32846302183.html"&gt;TTGO v2 Board&lt;/a&gt;s. Since I am a big fan of the &lt;a href="https://github.com/whitecatboard/Lua-RTOS-ESP32"&gt;LuaRTOS&lt;/a&gt; project i had to port it to this Hardware architecture.&lt;/p&gt;&#10;&lt;img src="https://bytebang.at/blog/porting-luartos-to-the-ttgo-lora-v20-board/TTGOv2.png" style="display: block; margin-left: auto; margin-right: auto;" alt="TTGOv2 - Pinout" /&gt;&#10;&lt;p&gt;The schematic:&lt;/p&gt;&#10;&lt;img src="https://bytebang.at/blog/porting-luartos-to-the-ttgo-lora-v20-board/WIFI_LoRa_32_868_Schema.png" style="display: block; margin-left: auto; margin-right: auto;;width:100.0%" alt="WIFI Lo Ra 32 868 Schema" /&gt;&#10;&lt;p&gt;For all of you who do not want to build your own firmware: Here is a &lt;a href="https://bytebang.at/blog/porting-luartos-to-the-ttgo-lora-v20-board/LuaRTOS_TTGOv20.zip"&gt;precompiled version&lt;/a&gt; with all the features from below. Just extract it to a folder and flash it with the &lt;a href="https://github.com/espressif/esptool/blob/master/esptool.py"&gt;esptool.py&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Painless VPN with sshuttle</title><link>https://bytebang.at/blog/painless-vpn-with-sshuttle/</link><pubDate>Thu, 28 Feb 2019 06:23:04 +0100</pubDate><guid>https://bytebang.at/blog/painless-vpn-with-sshuttle/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;If you are in a not very trustworthy network environment (e.g. free internet at the airport) then you may consider to send all your traffic (encrypted) through a VPN to a trusted site.&lt;br&gt;&#10;This usually requires some kind of VPN solution - but setting up a complete VPN can be a time consuming task. Here is a short solution how to redirect all your traffic with one simple command.&lt;/p&gt;</description></item><item><title>Connect to HAMNET with OpenWRT and a VPN</title><link>https://bytebang.at/blog/connect-to-hamnet-with-openwrt-and-a-vpn/</link><pubDate>Sat, 26 Jan 2019 10:43:49 +0100</pubDate><guid>https://bytebang.at/blog/connect-to-hamnet-with-openwrt-and-a-vpn/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I am a fan of ham radio operators &lt;a href="http://wiki.oevsv.at/index.php?title=Kategorie:Digitaler_Backbone"&gt;digital backbone&lt;/a&gt; - the &lt;a href="https://hamnetdb.net/map.cgi"&gt;HamNet&lt;/a&gt;.&lt;/p&gt;&#10;&lt;img src="https://bytebang.at/blog/connect-to-hamnet-with-openwrt-and-a-vpn/hamnet.png" style="display: block; margin-left: auto; margin-right: auto;;width:65.0%" alt="Hamnet" /&gt;&#10;&lt;p&gt;I wanted to be able to use it from my &amp;rsquo;normal&amp;rsquo; WiFi, with every device in my network. One way would be to set up a user access with a transceiver (e.g. a &lt;a href="https://www.ui.com/airmax/bulletm/"&gt;Ubuquity Bullet&lt;/a&gt; M2 HP) which is able to connect to the network and a decent antenna - but mine is currently used in another project. So i had to find another way how to do it.&lt;/p&gt;</description></item><item><title>TFTP boot with OpenWRT and a Synology NAS as storage</title><link>https://bytebang.at/blog/tftp-boot-with-openwrt-and-a-synology-nas-as-storage/</link><pubDate>Sat, 29 Dec 2018 20:58:57 +0100</pubDate><guid>https://bytebang.at/blog/tftp-boot-with-openwrt-and-a-synology-nas-as-storage/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;From time to time I have to troubleshoot computers for friends or customers. Therefore I am using a lot of different live systems which can be booted via USB or from a DVD drive. I do not want to burn a DVD for every new release, and I also think that it is unhandy to &lt;a href="https://www.howtogeek.com/191054/how-to-create-bootable-usb-drives-and-sd-cards-for-every-operating-system/"&gt;create a bootable USB stick&lt;/a&gt; with every software I need.&lt;/p&gt;&#10;&lt;p&gt;Life would be so much easier if I could just save the image of a DVD onto my NAS and then be able to boot it via the network.&lt;/p&gt;</description></item><item><title>Removing a uniform background from an image with Java</title><link>https://bytebang.at/blog/removing-a-uniform-background-from-an-image-with-java/</link><pubDate>Tue, 20 Nov 2018 13:13:42 +0100</pubDate><guid>https://bytebang.at/blog/removing-a-uniform-background-from-an-image-with-java/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;&lt;a href="http://www.siemensnx.com/133/what-data-does-qaf-files-contain?show=190&amp;amp;utm_source=dlvr.it&amp;amp;utm_medium=twitter#a190"&gt;QAF files&lt;/a&gt; are often used in PLM Systems (like &lt;a href="https://www.plm.automation.siemens.com/global/de/products/teamcenter/"&gt;Siemens Teamcenter&lt;/a&gt;) to give a preview of the stored CAD dataset. Under the hood they are plain TIFF or BMP images which are just renamed. This means that you can edit them with any common image manipulation software like &lt;a href="https://www.gimp.org/"&gt;GIMP&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Unfortunately some Teamcenter CAD integrations are producing quiet &amp;lsquo;ugly&amp;rsquo; previews - like this one:&lt;/p&gt;&#10;&lt;img src="https://bytebang.at/blog/removing-a-uniform-background-from-an-image-with-java/SheetMetal.jpg" style="display: block; margin-left: auto; margin-right: auto;" alt="Sheet Metal" /&gt;&#10;&lt;p&gt;If you want to have (for obvious reasons) a transparent background instead of the violet one, and it is not possible to change the default background color in the Teamcenter integration then you have to remove the background progamatically.&lt;/p&gt;</description></item><item><title>Porting LuaRTOS to the TTGO LoRa32 Board</title><link>https://bytebang.at/blog/porting-luartos-to-the-ttgo-lora32-board/</link><pubDate>Sun, 14 Oct 2018 18:34:27 +0200</pubDate><guid>https://bytebang.at/blog/porting-luartos-to-the-ttgo-lora32-board/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I have bought two cheap &lt;a href="https://www.banggood.com/2Pcs-Wemos-TTGO-LORA32-868915Mhz-ESP32-LoRa-OLED-0_96-Inch-Blue-Display-p-1239769.html"&gt;ESP32 based IoT development boards&lt;/a&gt; for around 30$, because the specs looked interesting:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;ESP32 based with 3D- wifi antenna&lt;/li&gt;&#10;&lt;li&gt;128x64 pixel OLED display&lt;/li&gt;&#10;&lt;li&gt;LoRa Modem&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This hardware has the potential to be a very versatile IoT prototyping (and even production) platform, but there was one drawback: You have to program it in the Arduino IDE. This means: You can do almost anything with it, but whenever you want to change something in the software then you have to recompile and upload everything.&lt;/p&gt;</description></item><item><title>Get rid of selfsigned certificate warnings in Ubuntu</title><link>https://bytebang.at/blog/get-rid-of-selfsigned-certificate-warnings-in-ubuntu/</link><pubDate>Fri, 14 Sep 2018 12:34:27 +0200</pubDate><guid>https://bytebang.at/blog/get-rid-of-selfsigned-certificate-warnings-in-ubuntu/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;If I do some tele-work then have to access my files via a WebDAV server. This approach works pretty well - but there is one thing that annoys me: Whenever I am connecting to the server then this message appears:&lt;/p&gt;&#10;&lt;img src="https://bytebang.at/blog/get-rid-of-selfsigned-certificate-warnings-in-ubuntu/certificate_warning.png" style="display: block; margin-left: auto; margin-right: auto;" alt="Certificate warning" /&gt;&#10;&lt;p&gt;The cause of this is that the (web-)server which sends the data towards me uses a self-signed certificate to secure the https connection. Since I do not control this server I had to find another solution than &lt;a href="https://bytebang.at/blog/free-ssl-certificate-for-lighttpd-with-letsencrypt/"&gt;populating a letsencrypt certificate&lt;/a&gt; on it.&lt;/p&gt;</description></item><item><title>Use your smartphone as IoT enabled QR Scanner</title><link>https://bytebang.at/blog/use-your-smartphone-as-iot-enabled-qr-scanner/</link><pubDate>Wed, 29 Aug 2018 19:30:15 +0200</pubDate><guid>https://bytebang.at/blog/use-your-smartphone-as-iot-enabled-qr-scanner/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;In one of my latest IoT projects I needed a &lt;a href="https://en.wikipedia.org/wiki/QR_code"&gt;QR code&lt;/a&gt; scanner which is able to scan continuously and which is able to send the information of the tags via &lt;a href="https://en.wikipedia.org/wiki/MQTT"&gt;MQTT&lt;/a&gt; to a specific broker.&lt;/p&gt;&#10;&lt;p&gt;Even after a long googling session I was not able to find one that fits my needs. Either they were too expensive, too big or they where not able to send the results via MQTT.&lt;/p&gt;</description></item><item><title>Auto-colored labels for bootstrap</title><link>https://bytebang.at/blog/auto-colored-labels-for-bootstrap/</link><pubDate>Fri, 13 Jul 2018 20:36:12 +0200</pubDate><guid>https://bytebang.at/blog/auto-colored-labels-for-bootstrap/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I wanted to use bootstrap labels for visual grouping. That means that labels with the same content should have the same color.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://bytebang.at/blog/auto-colored-labels-for-bootstrap/labels.png" alt="labels.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;This can be done manually, but it is a boring task to come up with new colors every time you &amp;lsquo;invent&amp;rsquo; a new label.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;My approach is that the content of the label is somehow hashed and afterward transformed into a color.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;pre&gt;&lt;code&gt;// Converts a String to a color. The more similar strings are,&#10;// the more similar will be the color.&#10;function stringToColour(str) &#10;{&#10;    var hash = 0;&#10;    for (var i = 0; i &amp;lt; str.length; i++) &#10;    {&#10;        hash = str.charCodeAt(i) + ((hash &amp;lt;&amp;lt; 5) - hash);&#10;    }&#10;    var colour = '#';&#10;    for (var i = 0; i &amp;lt; 3; i++) &#10;    {&#10;        var value = (hash &amp;gt;&amp;gt; (i * 8)) &amp;amp; 0xFF;&#10;        colour += ('00' + value.toString(16)).substr(-2);&#10;    }&#10;    return colour;&#10;}&#10;&#10;// colorize the labels after tha page has laoded&#10;$( window ).load(function() &#10;{&#10;  $('.label-autocolor').each(function (index, value) &#10;  { &#10;   var color = stringToColour($(value).text());&#10;   $(value).css('background-color', color);&#10; });&#10;  &#10;});&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;This works pretty well. Try it out on &lt;a href="https://jsfiddle.net/bytebang/355f7acm/"&gt;jsfiddle&lt;/a&gt;. Just insert in the upper left box a new label (e.g: &lt;code&gt;&amp;lt;span class=&amp;quot;label label-autocolor&amp;quot;&amp;gt;Message three&amp;lt;/span&amp;gt;&lt;/code&gt;) and press the run button. It should appear in a new different colour.&lt;/p&gt;</description></item><item><title>Find public IP address for OpenWRT via Script</title><link>https://bytebang.at/blog/find-public-ip-address-for-openwrt-via-script/</link><pubDate>Fri, 01 Jun 2018 23:23:33 +0200</pubDate><guid>https://bytebang.at/blog/find-public-ip-address-for-openwrt-via-script/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I was running a public server running behind my OpwnWRT firewall which was directly connected to the Internet via an LTE modem. The public IP Address of the OpenWRT Box was periodically announced via NOIP.com and so I was able to connect to it from wherever i wanted.&lt;/p&gt;&#10;&lt;p&gt;&amp;mdash;&amp;ndash;LTE&amp;mdash;-&amp;gt; OpenWRT(Public IP: 123.45.12.34) &amp;mdash;-&amp;gt; DMZ&lt;/p&gt;&#10;&lt;p&gt;Recently I switched my Internet provider and i got a new modem. This modem is now connected to the OpenWRT Box and acts as gateway to the Internet. It assigns a private IP Address to the WAN Port of the OpenWrt. &lt;/p&gt;</description></item><item><title>Engrave things with a 3.5W Eleksmaker and LaserWeb</title><link>https://bytebang.at/blog/engrave-things-with-a-35w-eleksmaker-and-laserweb/</link><pubDate>Tue, 01 May 2018 18:48:44 +0200</pubDate><guid>https://bytebang.at/blog/engrave-things-with-a-35w-eleksmaker-and-laserweb/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;In summer 2015 I ordered the predecessor of this &lt;a href="https://www.banggood.com/450nm-3500mW-3_5W-Blue-Laser-Module-With-TTL-Modulation-for-DIY-Laser-Cutter-Engraver-p-1103261.html"&gt;3.5W laser diode&lt;/a&gt; with TTL modulation. My initial plan was to mount it onto my 3d printer - but we all know: plans are patient.&lt;/p&gt;&#10;&lt;p&gt;Lately I stumbled upon this diode in my junk box. I decided to finish the project and I ordered an &lt;a href="https://www.banggood.com/A3-30x40cm-Desktop-DIY-Laser-Engraver-Cutter-Engraving-Machine-Assemble-Kit-p-1027611.html"&gt;Eleksmaker A3 frame (without Laser).&lt;/a&gt; It is big enough to engrave / cut things with a size of 300 x 400 mm.&lt;/p&gt;</description></item><item><title>Add display fonts to custom built NodeMCU firmwares</title><link>https://bytebang.at/blog/add-display-fonts-to-custom-built-nodemcu-firmwares/</link><pubDate>Sun, 01 Apr 2018 14:23:02 +0200</pubDate><guid>https://bytebang.at/blog/add-display-fonts-to-custom-built-nodemcu-firmwares/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;In my &lt;a href="https://bytebang.at/blog/compile-nodemcu-for-wemos-lolin-esp32-with-oled/"&gt;previous article&lt;/a&gt; I showed how to compile a custom firmware for the WeMos Lolin board and how to get the display up and running.&lt;/p&gt;&#10;&lt;p&gt;Since then I have played around with it and i wondered how to switch between different fonts for this display and where these magic constants within the LUA code are coming from.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;I figured out that fonts have to be &amp;rsquo;enabled&amp;rsquo; within the firmware. It ts quiet simple to do this:&lt;/p&gt;</description></item><item><title>Compile NodeMCU for WeMos Lolin ESP32 with OLED</title><link>https://bytebang.at/blog/compile-nodemcu-for-wemos-lolin-esp32-with-oled/</link><pubDate>Mon, 19 Mar 2018 12:46:58 +0100</pubDate><guid>https://bytebang.at/blog/compile-nodemcu-for-wemos-lolin-esp32-with-oled/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Recently I bought a &lt;a href="https://www.banggood.com/Wemos-ESP32-OLED-Module-For-Arduino-ESP32-OLED-WiFi-Bluetooth-Dual-ESP-32-ESP-32S-ESP8266-p-1148119.html"&gt;Wemos Lolin ESP32 module&lt;/a&gt;. This prototyping board consists of a powerful &lt;a href="https://www.espressif.com/en/products/hardware/esp32/overview"&gt;ESP32&lt;/a&gt; processor and a small  &lt;a href="https://en.wikipedia.org/wiki/OLED"&gt;OLED&lt;/a&gt; display which are mounted on a breadboard friendly PCB board.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://bytebang.at/blog/compile-nodemcu-for-wemos-lolin-esp32-with-oled/WeMos_Lolin_ESP32.jpg" style="display: block; margin-left: auto; margin-right: auto;;width:66.0%" alt="We Mos Lolin ESP32" /&gt;&lt;br&gt;&#10;Unfortunately, the reseller shows only examples how to program the controller and the display which are working in the Arduino IDE. This means that if you change your program, then you will have to recompile the whole code.&lt;/p&gt;</description></item><item><title>Flash a hex file into an Arduino without IDE</title><link>https://bytebang.at/blog/flash-a-hex-file-into-an-arduino-without-ide/</link><pubDate>Sun, 25 Feb 2018 11:01:27 +0100</pubDate><guid>https://bytebang.at/blog/flash-a-hex-file-into-an-arduino-without-ide/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I wanted to update my laser cutter. Therefore i choose to use the newest version of &lt;a href="https://github.com/gnea/grbl/releases"&gt;GRBL (version 1.1f)&lt;/a&gt; into the controller. Since I did not want to recompile the whole thing from scratch, I decided to download the lates version and just flash it into a new &lt;a href="https://www.banggood.com/de/ATmega328P-Arduino-Compatible-Nano-V3-Improved-Version-No-Cable-p-959231.html"&gt;Arduino nano clone&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;The big question was: How to do it ?&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;The simplest solution was to download the hex file to my desktop and to utilize &lt;a href="https://linux.die.net/man/1/avrdude"&gt;avrdude&lt;/a&gt; (which is also used from within the arduino ide to upload compiled code to the controller).&lt;/p&gt;</description></item><item><title>Find all manually installed packages within ubuntu</title><link>https://bytebang.at/blog/find-all-manually-installed-packages-within-ubuntu/</link><pubDate>Tue, 20 Feb 2018 08:13:03 +0100</pubDate><guid>https://bytebang.at/blog/find-all-manually-installed-packages-within-ubuntu/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;If you plan to migrate your Ubuntu machine from one hardware to another then you can follow the following approach:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Perform a complete backup your home directory&lt;/li&gt;&#10;&lt;li&gt;Extract the list of manually installed packages&lt;/li&gt;&#10;&lt;li&gt;Set up a new vanilla Ubuntu on the same or another hardware&lt;/li&gt;&#10;&lt;li&gt;Restore the contents of your home directory&lt;/li&gt;&#10;&lt;li&gt;Re-install all missing packages&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Now - where is the problem ? &amp;hellip; If you don&amp;rsquo;t have a list of your previously installed packages, then it is not possible to use the new box as you have used the old ones - just because some of the programs that you are used to are missing.&lt;/p&gt;</description></item><item><title>How to migrate a vServer from netcup to another instance</title><link>https://bytebang.at/blog/how-to-migrate-a-vserver-from-netcup-to-another-instance/</link><pubDate>Tue, 02 Jan 2018 14:24:14 +0100</pubDate><guid>https://bytebang.at/blog/how-to-migrate-a-vserver-from-netcup-to-another-instance/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Well - I am a huge fan of visualization. This is the reason why several web presences (like &lt;a href="https://simpledashboard.io"&gt;simpledashboard.io&lt;/a&gt; and a few others) are running at virtual hosts at my favorite provider &lt;a href="http://www.netcup.de"&gt;netcup.de&lt;/a&gt;&lt;br&gt;&#10;&lt;br&gt;&#10;I like it to set up and customize my own web hosting solution - because then there are (except hardware limitations) nearly no other restrictions. But even with all this beauty, things tend to become complicated if your server reaches its limits - or just gets old. Then you have to upgrade to a new hosting plan with more powerful hardware.&lt;br&gt;&#10;&lt;br&gt;&#10;Since I have not found any manuals how to do this I decided to write my own - here it is!&lt;br&gt;&#10;&lt;br&gt;&#10;In the next few paragraphs, I will describe how I transferred my vServer from one hosting plan to another within 3 hours.&lt;/p&gt;</description></item><item><title>Recover your GPG profile from a GnuPG card</title><link>https://bytebang.at/blog/recover-your-gpg-profile-from-a-gnupg-card/</link><pubDate>Wed, 13 Dec 2017 16:50:09 +0100</pubDate><guid>https://bytebang.at/blog/recover-your-gpg-profile-from-a-gnupg-card/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Due to a crash I had to setup my computer from scratch. Usually this is with Linux not a big deal:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Do a plain setup of any linux favour you like&lt;/li&gt;&#10;&lt;li&gt;Install thunderbird and copy the old profille from backup into the new home&lt;/li&gt;&#10;&lt;li&gt;Install firefox and copy the old profille from backup into the new home&lt;/li&gt;&#10;&lt;li&gt;Install &lt;a href="https://www.passwordstore.org/"&gt;pass&lt;/a&gt; (a super cool passoword manager) and copy the password store from backup&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&amp;hellip; but wait - pass uses my GPG keys which are stored on my GnuPG card. How can i restore this to get pass working again to decrypt my credentials ?&lt;/p&gt;</description></item><item><title>Convert audio files with ffmpeg</title><link>https://bytebang.at/blog/convert-audio-files-with-ffmpeg/</link><pubDate>Wed, 15 Nov 2017 09:55:13 +0100</pubDate><guid>https://bytebang.at/blog/convert-audio-files-with-ffmpeg/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I have downloaded a youtube play list and wanted to listen to all the files on my mobile phone. Unfortunately my phone is not capable to play &lt;em&gt;*.opus&lt;/em&gt; files. So i had to convert them.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;It is fairly easy to convert the files with &lt;a href="https://www.ffmpeg.org/documentation.html"&gt;ffmpeg&lt;/a&gt;.If you have only a few files then you can do this one by one at the commandline with the following statement:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;pre&gt;&lt;code&gt;$ ffmpeg -i myDownloadedFile.opus -f mp3 targetfilename.mp3&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;It converts the &lt;em&gt;myDownloadedFile.opus&lt;/em&gt; into &lt;em&gt;targetfilename.mp3&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Recover files from an encrypted home partition</title><link>https://bytebang.at/blog/recover-files-from-an-encrypted-home-partition/</link><pubDate>Tue, 07 Nov 2017 17:08:03 +0100</pubDate><guid>https://bytebang.at/blog/recover-files-from-an-encrypted-home-partition/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Assume that your computer does not want to start any more (e.g. because of a kernel panic during boot or a corrupted file system), and you want to make a last backup of your /home directory &amp;hellip; well - this us usually not a big deal if your home directory is not encrypted.&lt;/p&gt;&#10;&lt;p&gt;BUT: If it is encrypted, then things tend to get complicated, because you can not easily access the files within the encrypted directory.&lt;/p&gt;</description></item><item><title>Enable https downloads with wget on OpenWRT</title><link>https://bytebang.at/blog/enable-https-downloads-with-wget-on-openwrt/</link><pubDate>Sat, 14 Oct 2017 10:21:58 +0200</pubDate><guid>https://bytebang.at/blog/enable-https-downloads-with-wget-on-openwrt/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I wanted to install a &lt;a href="https://blog.doenselmann.com/werbung-direkt-auf-openwrt-router-blocken/"&gt;dns based adblocker&lt;/a&gt; on my OpenWRT 15.05.1 firewall. As I was trying to download the &lt;a href="https://gist.github.com/teffalump/7227752#file-adblock-sh"&gt;&lt;code&gt;https://gist.github.com/teffalump/7227752#file-adblock-sh&lt;/code&gt;&lt;/a&gt; file my firewall denied to do so:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;pre&gt;&lt;code&gt;root@firewall:~# wget https://gist.github.com/teffalump/7227752#file-adblock-sh&#10;Connecting to gist.github.com (192.30.253.118:443)&#10;wget: can't execute 'openssl': No such file or directory&#10;wget: error getting response: Connection reset by peer&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;The problem there is, that wget wants to decrypt the https traffic, by utilizing the openssl command - which is simply not available. So the solution is to install the followng package: &lt;strong&gt;openssl-util&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>How to set up OpenWRT on a ALIX 2d13 board</title><link>https://bytebang.at/blog/how-to-set-up-openwrt-on-a-alix-2d13-board/</link><pubDate>Tue, 12 Sep 2017 23:07:14 +0200</pubDate><guid>https://bytebang.at/blog/how-to-set-up-openwrt-on-a-alix-2d13-board/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;A friend gave me an old (but working) &lt;a href="https://www.pcengines.ch/alix2d13.htm"&gt;ALIX 2d13 board&lt;/a&gt;. Since my SOHO router was about to die (wifi keeps disconnecting and unstable throughput on the LTE band)  I decided to give it a second life as router.&lt;/p&gt;&#10;&lt;p&gt;I wanted to have the following features as my old router:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;LAN connection&lt;/li&gt;&#10;&lt;li&gt;Internetconnection via LTE&lt;/li&gt;&#10;&lt;li&gt;Wifi connection&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;After a short internet research it was clear that the board itself is not the newest any more and it also does not have LTE or WIFI by default. So searched around a little and I found that I have an old broadcom wifi card with a &lt;a href="http://www.alldatasheet.com/datasheet-pdf/pdf/175973/BOARDCOM/BCM94318.html"&gt;bcm94318 chipset&lt;/a&gt; from an old laptop and an unbranded &lt;a href="https://www.hofer.at/de/infos-und-services/services/serviceportal/detailansicht/sis/si/8826102743041/"&gt;ZTE MF831 LTE Stick&lt;/a&gt; which can be used as LTE modem.&lt;/p&gt;</description></item><item><title>Splashproof HF connections</title><link>https://bytebang.at/blog/splashproof-hf-connections/</link><pubDate>Wed, 23 Aug 2017 22:31:02 +0200</pubDate><guid>https://bytebang.at/blog/splashproof-hf-connections/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Lets assume that you want to deploy your new antenna onto your roof, and the antenna (or the HF cable) has some connectors which are exposed to rain. The only type of connectors you have is something like this:&lt;/p&gt;&#10;&lt;img src="https://bytebang.at/blog/splashproof-hf-connections/n_connectors.jpg" style="display: block; margin-left: auto; margin-right: auto;;width:66.0%" alt="N connectors" /&gt;&#10;&lt;p&gt;Well - if you put it into environment without protection then it is not really waterproof. And even if it would work for some time without protection, the rain will stream along the connection and finally there will be water within it.&lt;/p&gt;</description></item><item><title>Implement cryptocoin payments with Java</title><link>https://bytebang.at/blog/implement-cryptocoin-payments-with-java/</link><pubDate>Tue, 25 Jul 2017 15:33:35 +0200</pubDate><guid>https://bytebang.at/blog/implement-cryptocoin-payments-with-java/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;If you run a web shop or any other service where your users have to pay for services or goods the you will be confronted with the fact that you need a billing system. Of course you could use PayPal or other services but usually these services will cost you something.&lt;/p&gt;&#10;&lt;p&gt;If your goods or services are very cheap, then it is often the case that the payment provider fees make up a huge fraction of the overall price. Such small payments can also be fulfilled with crypto currencies like &lt;a href="https://www.bitcoin.com/" rel="__blank"&gt;Bitcoin&lt;/a&gt;, &lt;a href="https://decred.org/" rel="__blank"&gt;Decred&lt;/a&gt;, &lt;a href="https://www.ethereum.org/" rel="__blank"&gt;Ethereum&lt;/a&gt; and so on. (If you have no idea what crypto currencies are all about then take a look at this &lt;a href="https://www.moneymunk.com/bitcoin-101/"&gt;introduction to bitcoin&lt;/a&gt;)&lt;/p&gt;</description></item><item><title>Content based message routing with apache camel</title><link>https://bytebang.at/blog/content-based-message-routing-with-apache-camel/</link><pubDate>Sun, 18 Jun 2017 15:15:37 +0200</pubDate><guid>https://bytebang.at/blog/content-based-message-routing-with-apache-camel/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Lets say you run a web shop where the orders are processed automatically by apache camel. The items which are selled are assembled from make and buy items.&lt;br&gt;&#10;Make items have to be produced in your shop-floor and buy items have to be bought at one of your suppliers.&lt;br&gt;&#10;&lt;br&gt;&#10;Ideally you would like to have a mechanism which splits up your order into two lists:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;One list of items which have to be produced and&lt;/li&gt;&#10;&lt;li&gt;another list which with items which should be purchased.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Every list should then be forwarded to a different route within apache camel (where either manufacturing instructions or purchases are created and forwarded to the supplier).&lt;/p&gt;</description></item><item><title>SCM progress visualization with gource</title><link>https://bytebang.at/blog/scm-progress-visualization-with-gource/</link><pubDate>Wed, 03 May 2017 23:14:21 +0200</pubDate><guid>https://bytebang.at/blog/scm-progress-visualization-with-gource/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I wanted to document the progress throughout a software development project in a more compelling way than just by printed out commit logs. I was searching for something &amp;lsquo;cool&amp;rsquo; and also something that shows how much effort and manpower really goes into a piece of software. Something that is also easy to understand by the management.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;After a few hours of googling I discovered &lt;a href="http://gource.io/"&gt;gource&lt;/a&gt; which is able to display software projects as an animated tree with the root directory of the project at its centre. Directories appear as branches with files as leaves. Developers can be seen working on the tree at the times they contributed to the project.&lt;/p&gt;</description></item><item><title>How to make static webpage snapshots with wget</title><link>https://bytebang.at/blog/how-to-make-static-webpage-snapshots-with-wget/</link><pubDate>Wed, 19 Apr 2017 22:23:54 +0200</pubDate><guid>https://bytebang.at/blog/how-to-make-static-webpage-snapshots-with-wget/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;For some reasons I needed an offline copy of a certain homepage. Well, everybody knows that your browser can save a single page with a few mouse clicks - but what if you wanted to have a copy of the whole homepage ?&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;I don&amp;rsquo;t know how the &lt;a href="https://web.archive.org/"&gt;wayback machine&lt;/a&gt; (internet archive) does it but I came up with the following solution:&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.gnu.org/software/wget/"&gt;wget&lt;/a&gt; is a very powerful tool, which enables you to download arbitrary files from the internet. Beside that is has also the capability to download web pages recursively.&lt;/p&gt;</description></item><item><title>Read /etc/passwd with Java8 streams</title><link>https://bytebang.at/blog/read-etc-passwd-with-java8-streams/</link><pubDate>Mon, 13 Mar 2017 21:58:30 +0100</pubDate><guid>https://bytebang.at/blog/read-etc-passwd-with-java8-streams/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;As a programmer I am always searching for elegant ways how to accomplish certain things. One of the last tasks was to parse the /etc/passwd file of a linux box. Of course there are multiple ways how to do this, but the Java8 way seems to be a cool solution.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;The Program consists of two classes. The first one is the &amp;lsquo;PwdUser&amp;rsquo; class which represents one single entry in the passwd file:&lt;/p&gt;</description></item><item><title>How to install node-red in Ubuntu</title><link>https://bytebang.at/blog/how-to-install-node-red-in-ubuntu/</link><pubDate>Mon, 20 Feb 2017 22:38:05 +0100</pubDate><guid>https://bytebang.at/blog/how-to-install-node-red-in-ubuntu/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I have an old laptop which runs Ubuntu 16.04, and I want to install &lt;a href="https://nodered.org/"&gt;node-red&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;This time the solution is really simple:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;pre&gt;&lt;code&gt;$ sudo apt-get install nodejs-legacy&#10;$ sudo apt-get install npm&#10;$ sudo npm install -g --unsafe-perm node-red&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;The first command instructs the operating system to install node-js (which is the base for node-red).&lt;/p&gt;&#10;&lt;p&gt;The second one installs a packagemanager for node-js (which does the same as apt-get, yast, yum, &amp;hellip; for Linux, but for node-js)&lt;/p&gt;</description></item><item><title>Uninstall dpkg packages in Ubuntu</title><link>https://bytebang.at/blog/uninstall-dpkg-packages-in-ubuntu/</link><pubDate>Sat, 21 Jan 2017 20:30:29 +0100</pubDate><guid>https://bytebang.at/blog/uninstall-dpkg-packages-in-ubuntu/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I am running a Ubuntu box, and from time to tome I install trusted *.&lt;a href="https://www.debian.org/distrib/packages"&gt;deb packages&lt;/a&gt; from the Internet. Since &lt;a href="https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg"&gt;Ubunu is a Debian derivate&lt;/a&gt; this works without any problem.&lt;/p&gt;&#10;&lt;img src="https://bytebang.at/blog/uninstall-dpkg-packages-in-ubuntu/install_dpkg_via_softwarecenter.png" style="width:100.0%" alt="Install dpkg via softwarecenter" /&gt;&#10;&lt;p&gt;Have you ever tried to uninstall these packages via the software center ? &amp;hellip; Well: It turned out that this is sometimes not possible through the software center. This article shows you how to do this via commandline.&lt;/p&gt;</description></item><item><title>How to replace a failed disk of a degraded linux software raid</title><link>https://bytebang.at/blog/how-to-replace-a-failed-disk-of-a-degraded-linux-software-raid/</link><pubDate>Fri, 30 Dec 2016 15:00:55 +0100</pubDate><guid>https://bytebang.at/blog/how-to-replace-a-failed-disk-of-a-degraded-linux-software-raid/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;One of my customers is running a 24/7 server with a &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-create-raid-arrays-with-mdadm-on-ubuntu-16-04"&gt;mdadm based software raid&lt;/a&gt; that mirrors all operations between two disks (a so called RAID 1 configuration). Unfortunately one of the disks started to fail.&lt;/p&gt;&#10;&lt;img src="https://bytebang.at/blog/how-to-replace-a-failed-disk-of-a-degraded-linux-software-raid/failed_raid1.png" style="display: block; margin-left: auto; margin-right: auto;;width:100.0%" alt="Failed raid1" /&gt;&#10;&lt;p&gt;While the system was still running on the other (still working) disk I needed to replace the failing disk with a new one. Here is how you do it under Ubuntu and &lt;a href="https://linux.die.net/man/8/mdadm"&gt;mdadm&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Select files with a dialog witin a BASH script</title><link>https://bytebang.at/blog/select-files-with-a-dialog-witin-a-bash-script/</link><pubDate>Fri, 18 Nov 2016 22:22:59 +0100</pubDate><guid>https://bytebang.at/blog/select-files-with-a-dialog-witin-a-bash-script/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;From time to time you want a user to pick a few files out of a directory (e.g. because you want to process them afterwards). The first approach might be to force the user to enter the filenames which should be processed - but this is (a) unhandy and (b) it does not scale very well.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;A lot of Linux distributions know a tool called &lt;a href="https://linux.die.net/man/1/dialog"&gt;dialog&lt;/a&gt;. It enables the user to create simple commandline dialogs within shellscripts.&lt;/p&gt;</description></item><item><title>How to push data into a new gitblit repository</title><link>https://bytebang.at/blog/how-to-push-data-into-a-new-gitblit-repository/</link><pubDate>Fri, 28 Oct 2016 21:50:25 +0200</pubDate><guid>https://bytebang.at/blog/how-to-push-data-into-a-new-gitblit-repository/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;If you create a new repository in &lt;a href="http://gitblit.com"&gt;gitblit&lt;/a&gt; then you are not able to choose the master branch. Therefore you cannot check out anything.&lt;/p&gt;&#10;&lt;img src="https://bytebang.at/blog/how-to-push-data-into-a-new-gitblit-repository/gitblit_newrepo.png" style="width:100.0%" alt="Gitblit newrepo" /&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;The answer to this behaviour is simple: You can not select a default branch because there is no default branch. The solution is &amp;hellip;&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Create the repositpry in gitblit (without choosing a default branch)&lt;/li&gt;&#10;&lt;li&gt;Create a local repository&lt;/li&gt;&#10;&lt;li&gt;Connect the repositories by telling the local repo where his remote friend is&lt;/li&gt;&#10;&lt;li&gt;Push the local master to the remote repo&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;For all of you who prefer to see the pure commands - here they are:&lt;/p&gt;</description></item><item><title>Renewal of a letsencrypt certificate for lighttpd</title><link>https://bytebang.at/blog/renewal-of-a-letsencrypt-certificate-for-lighttpd/</link><pubDate>Tue, 20 Sep 2016 13:54:01 +0200</pubDate><guid>https://bytebang.at/blog/renewal-of-a-letsencrypt-certificate-for-lighttpd/</guid><description>&lt;h1 id="the-problem"&gt;The problem&lt;/h1&gt;&#10;&lt;p&gt;You have detected that your letsencrypt certificate expired, and now you want to renew it. This article shows how to do this on a machine called &amp;ldquo;support&amp;rdquo; which runs on Ubuntu 16.04 and lighttpd as webserver.&lt;/p&gt;&#10;&lt;h2 id="the-solution"&gt;The Solution&lt;/h2&gt;&#10;&lt;p&gt;The solution is simple. Just follow the steps below.&lt;/p&gt;&#10;&lt;h4 id="1-stop-lighttpd"&gt;1.) Stop lighttpd&lt;/h4&gt;&#10;&lt;p&gt;The first thing you have to do is to stop lighttpd (or any other service which binds to your webservers port 80).&lt;/p&gt;</description></item><item><title>Free SSL certificate for lighttpd with letsencrypt</title><link>https://bytebang.at/blog/free-ssl-certificate-for-lighttpd-with-letsencrypt/</link><pubDate>Sun, 28 Aug 2016 13:57:03 +0200</pubDate><guid>https://bytebang.at/blog/free-ssl-certificate-for-lighttpd-with-letsencrypt/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;While it is very simple to install &lt;a href="https://letsencrypt.org/"&gt;letsencrypt&lt;/a&gt; certificates on an apache webserver, it might be tricky on a &lt;a href="https://www.lighttpd.net/"&gt;lighttpd&lt;/a&gt; server. There are various &lt;a href="https://nwgat.ninja/setting-up-letsencrypt-with-lighttpd/"&gt;tutorials&lt;/a&gt; on the internet, but I found no step by step tutorial. So here is my attempt to create one.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;I assume that you know what a &lt;a href="https://en.wikipedia.org/wiki/Web_server"&gt;webserver&lt;/a&gt; is, what it does and why it is a good idea to have &lt;a href="http://info.ssl.com/article.aspx?id=10241"&gt;SSL secured connections&lt;/a&gt;. This tutorial assumes that&lt;/p&gt;</description></item><item><title>How to publish weatherdata via MQTT</title><link>https://bytebang.at/blog/how-to-publish-weatherdata-via-mqtt/</link><pubDate>Sat, 20 Aug 2016 08:17:55 +0200</pubDate><guid>https://bytebang.at/blog/how-to-publish-weatherdata-via-mqtt/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I am running an off-site weather station which is connected to &lt;a href="http://wiki.meteohub.de/Introduction/en"&gt;meteohub&lt;/a&gt;. This enables me to create beautiful graphs and charts, but i wanted to display the the data on my arduino yun at home. So i had to find a way how to transmit this data via the Internet,&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;Since it did not want to create a &lt;a href="https://bytebang.at/blog/bypass-restrictive-firewalls-with-a-ssh-tunnel/"&gt;VPN tunnel&lt;/a&gt; I choose a solution where the weatherstation (to be more precise meteohub) is actively pushing the data to the Internet using &lt;a href="http://mqtt.org/"&gt;MQTT&lt;/a&gt;. From there on everybody can fetch it and use it for his/her own purpose.&lt;/p&gt;</description></item><item><title>Helloworld with Apache Camel using Ivy and Ant</title><link>https://bytebang.at/blog/helloworld-with-apache-camel-using-ivy-and-ant/</link><pubDate>Mon, 18 Jul 2016 21:27:12 +0200</pubDate><guid>https://bytebang.at/blog/helloworld-with-apache-camel-using-ivy-and-ant/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;&lt;a href="http://camel.apache.org/"&gt;Apache camel&lt;/a&gt; is a prefect approach to build any kind of interfaces between two distinct software packages - like an PLM and an ERP system. It can act as glue-code between these systems in order to transfer data between them.&lt;/p&gt;&#10;&lt;p&gt;However, if you have never heard of it, then you want most probably to get this thing up and running with as little effort as possible. This article shows you how to avoid maven by using &lt;a href="http://ant.apache.org/ivy/"&gt;Apache Ivy&lt;/a&gt; for the dependency management and how to build the project with &lt;a href="http://ant.apache.org/"&gt;Apache ant&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Better notes with pandoc</title><link>https://bytebang.at/blog/better-notes-with-pandoc/</link><pubDate>Tue, 14 Jun 2016 13:05:48 +0200</pubDate><guid>https://bytebang.at/blog/better-notes-with-pandoc/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I am constantly sitting in some meetings, taking notes about the things that are bespoken. While I am pretty fast in writing with the keyboard, I am not that fast in creating beautiful minutes of meeting - until now !&lt;/p&gt;&#10;&lt;p&gt;In opposite to my colleagues I prefer to write my notes in a plain editor like &lt;a href="http://www.vim.org/"&gt;vim&lt;/a&gt; or &lt;a href="https://wiki.gnome.org/Apps/Gedit"&gt;gedit&lt;/a&gt;. Both are pretty powerful editors, but all that they can give you is a plain text file, without any nice formatting. Since my colleagues prefer as result to have beautiful PDF documents with table of contents and beautiful formulas, I had to find a way how to transform these notes into such a beautiful document.&lt;/p&gt;</description></item><item><title>How a keysigning party builds a web of trust</title><link>https://bytebang.at/blog/how-a-keysigning-party-builds-a-web-of-trust/</link><pubDate>Tue, 17 May 2016 12:30:11 +0200</pubDate><guid>https://bytebang.at/blog/how-a-keysigning-party-builds-a-web-of-trust/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Last month I attended a key-signing party at the &lt;a href="https://www.linuxtage.at/"&gt;Linuxtage in Graz&lt;/a&gt;. While I was pretty aware that key-signing is a great tool to prove your own identity against unknown third parties, I was not prepared what comes after the party. Here is a short write up, of what to expect from such an event and what has to be done after it. I try to keep it in a simple language, without too many technical details to give everybody the chance to understand what this is all about.&lt;/p&gt;</description></item><item><title>Create snapshots via commandline in ESXi 5.5</title><link>https://bytebang.at/blog/create-snapshots-via-commandline-in-esxi-55/</link><pubDate>Sun, 10 Apr 2016 11:21:46 +0200</pubDate><guid>https://bytebang.at/blog/create-snapshots-via-commandline-in-esxi-55/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;I wanted to play around with automation of things inside my ESXi server. Automated snapshots are one of these things that can be useful if you can automate them - so I started researching how to do it. Here is the result !&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;The solution is simple: &lt;code&gt;esxcli&lt;/code&gt; is a tool which is built exactly for such a purpose. It can be accessed from within the command line of the hypervisor (so don&amp;rsquo;t forget to enable SSH to be able to log into the machine).&lt;/p&gt;</description></item><item><title>Optimizing the MQTT topic structure of the KEPServerEx</title><link>https://bytebang.at/blog/optimizing-the-mqtt-topic-structure-of-the-kepserverex/</link><pubDate>Tue, 15 Mar 2016 17:24:50 +0100</pubDate><guid>https://bytebang.at/blog/optimizing-the-mqtt-topic-structure-of-the-kepserverex/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Kepware has a wonderful program named &lt;a href="https://www.kepware.com/products/kepserverex/"&gt;KEPServerEx&lt;/a&gt;. For those of you who dont know what this is: The KEPServerEx can be seen as a kind of modular data aggregation server which is able to collect data from various machines / devices, and which is able to process / analyse / store it afterwards. This approach takes a huge burden from every company who wants to connect to PLCs CNC machines and so on, because the drivers which can be purchased at their site are able to  understand these devices and bring the information into a standardized format like DDE, OPC or &lt;a href="https://en.wikipedia.org/wiki/OPC_Unified_Architecture"&gt;OPC/UA&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Attach a NFS datastore to ESXi 5.5</title><link>https://bytebang.at/blog/attach-a-nfs-datastore-to-esxi-55/</link><pubDate>Wed, 24 Feb 2016 17:52:52 +0100</pubDate><guid>https://bytebang.at/blog/attach-a-nfs-datastore-to-esxi-55/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Virtualization is a wonderful thing - but what if your virtualization server is running low on disk space and you have to provide additional harddisk space. The anser is simple: Conenct additional harddisks via &lt;a href="https://en.wikipedia.org/wiki/Network_File_System"&gt;NFS &lt;/a&gt;!&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;As mentioned befoer - you have to ceonnect additional harddisk space to your vitualization box. In my example i am doing this with a &lt;a href="https://bytebang.at/blog/attach-a-nfs-datastore-to-esxi-55/ds-CELVIN-NAS-Server-Q902.pdf"&gt;Fujitsu CELVIN NAS Server Q902 &lt;/a&gt;which is basically a QNAP clone. To understand the provided screenshos you have to know that my NAS has the IP 192.168.0.13 and my both virtualization boxes have 192.168.0.2 and 192.168.0.10&lt;/p&gt;</description></item><item><title>How to rename an application within IIS7</title><link>https://bytebang.at/blog/how-to-rename-an-application-within-iis7/</link><pubDate>Tue, 09 Feb 2016 19:16:47 +0100</pubDate><guid>https://bytebang.at/blog/how-to-rename-an-application-within-iis7/</guid><description>&lt;h1 id="the-problem"&gt;The problem&lt;/h1&gt;&#10;&lt;p&gt;Our customer runs a reverse proxy server that connects to an in-house helpdesk system. This setup suddenly stopped working after an upgrade of th helpdesk system to a new version. It turned out that the problem is that the webapplication has changed its name and was therefore not reachable for the reverse proxy any more.&lt;/p&gt;&#10;&lt;p&gt;The upgrade of the web application changed the name &lt;code&gt;/helpdesk&lt;/code&gt; to &lt;code&gt;/Helpdesk&lt;/code&gt; (notice the upper case letter H).&lt;/p&gt;</description></item><item><title>OpenLDAP authentication for vTiger 6.0</title><link>https://bytebang.at/blog/openldap-authentication-for-vtiger-60/</link><pubDate>Fri, 05 Feb 2016 22:44:41 +0100</pubDate><guid>https://bytebang.at/blog/openldap-authentication-for-vtiger-60/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;&lt;a href="https://www.vtiger.com/"&gt;vTiger&lt;/a&gt; is a wonderful open source CRM system which has a very &lt;a href="https://www.vtiger.com/vtiger-public-license/"&gt;friendly license&lt;/a&gt; and offers a lot of features. It comes with a ton of preconfigured settings, but unfortunately a LDAP authentification is not in the box. If you crawl the internet then you will find &lt;a href="http://stackoverflow.com/questions/26444284/vtiger-crm-6-ldap-authentication"&gt;answers on stackoverflow&lt;/a&gt; or this excellent &lt;a href="http://adminberlin.de/vtiger-crm-6-active-directory-authentication/"&gt;article how to setup AD-auth for vTiger&lt;/a&gt; but these answers are tailored towards a Microsoft Active Directory structure. Since the Microsoft Active Directory is technically related to OpenLDAP we can use this approach to access our own LDAP directory. Lets go &amp;hellip;&lt;/p&gt;</description></item><item><title>Add social buttons to XWiki</title><link>https://bytebang.at/blog/add-social-buttons-to-xwiki/</link><pubDate>Sun, 17 Jan 2016 18:42:19 +0100</pubDate><guid>https://bytebang.at/blog/add-social-buttons-to-xwiki/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Social interaction is getting more and more a part of our daily business. If you write a good article in your blog then you (most probably) want it to be shared and read by other people. A lot of blogging systems offer this as a built in feature, but with XWiki this is unfortunately not the case. This article describes how to embed social share buttons into panels which can be placed within your XWiki application and how to optimize your meta information for these buttons to get the most out of them.&lt;/p&gt;</description></item><item><title>How to create a RAM disk</title><link>https://bytebang.at/blog/how-to-create-a-ram-disk/</link><pubDate>Sun, 03 Jan 2016 21:24:05 +0100</pubDate><guid>https://bytebang.at/blog/how-to-create-a-ram-disk/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Sometimes data has to be written and read ultimately fast. The &lt;a href="https://en.wikipedia.org/wiki/Random-access_memory"&gt;random access memory&lt;/a&gt; is one of the fastest memories within a computer - it is not big, but fast. A cheap and handy solution is to create a &lt;a href="https://en.wikipedia.org/wiki/Tmpfs"&gt;tmpfs&lt;/a&gt; filesystem with a command like &lt;code&gt;#mount -t tmpfs -o size=20% none /tmp/ramdisk&lt;/code&gt; - but this has a major drawback: As soon as the RAM get full data is beeing swapped out to the disk - which may be counterproductive.&lt;/p&gt;</description></item><item><title>Download multiple files with similar names within bash</title><link>https://bytebang.at/blog/download-multiple-files-with-similar-names-within-bash/</link><pubDate>Tue, 15 Dec 2015 21:20:54 +0100</pubDate><guid>https://bytebang.at/blog/download-multiple-files-with-similar-names-within-bash/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Assume you have a web server with interesting *.pdf files on it and all files are stored in the same directory. If you want to download them you would have to fire up firefox (or whatever browser you are using) and enter the URL  for the document once.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;a href="http://my.server.tld/some/directory/Document"&gt;http://my.server.tld/some/directory/Document&lt;/a&gt;_&lt;strong&gt;01&lt;/strong&gt;.pdf&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://my.server.tld/some/directory/Document"&gt;http://my.server.tld/some/directory/Document&lt;/a&gt;_&lt;strong&gt;02&lt;/strong&gt;.pdf&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://my.server.tld/some/directory/Document"&gt;http://my.server.tld/some/directory/Document&lt;/a&gt;_&lt;strong&gt;03&lt;/strong&gt;.pdf&lt;/li&gt;&#10;&lt;li&gt;&amp;hellip;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;This is annoying and time consuming. Fortunately there is a tool called &lt;a href="https://www.gnu.org/software/wget/"&gt;wget&lt;/a&gt; that can be used together with &lt;a href="https://www.gnu.org/software/bash/"&gt;bash&lt;/a&gt; to automate this task:&lt;/p&gt;</description></item><item><title>APRS with mobilinkd and YAAC</title><link>https://bytebang.at/blog/aprs-with-mobilinkd-and-yaac/</link><pubDate>Wed, 02 Dec 2015 11:44:40 +0100</pubDate><guid>https://bytebang.at/blog/aprs-with-mobilinkd-and-yaac/</guid><description>&lt;h1 id="the-problem"&gt;The problem&lt;/h1&gt;&#10;&lt;p&gt;In one of my recent articles I wrote about how to &lt;a href="https://bytebang.at/blog/receive-aprs-stations-with-rtl-str-and-display-them-with-xastir/"&gt;connect a simple RTL-SDR stick to xastir&lt;/a&gt;. Later on i decided to buy myself new shiny TNC modem which can be connected via bluetooth to various phones and tablets: The TNC2 from &lt;a href="http://www.mobilinkd.com/"&gt;mobilinkd.&lt;/a&gt; While I stumbled upon a lot of instructions &lt;a href="https://www.youtube.com/watch?v=IYv9PYx8pLI"&gt;how to connect it to APRSdroid&lt;/a&gt; and how to &lt;a href="http://xastir.org/index.php/HowTo:BluetoothTNC"&gt;receive messages with xastir&lt;/a&gt; in the internet, I could not find a manual how to connect it with YAAC (which is Yet Another APRS Client - written in Java).&lt;/p&gt;</description></item><item><title>Auto reconnect on dropped VPN connection</title><link>https://bytebang.at/blog/auto-reconnect-on-dropped-vpn-connection/</link><pubDate>Sat, 21 Nov 2015 21:03:26 +0100</pubDate><guid>https://bytebang.at/blog/auto-reconnect-on-dropped-vpn-connection/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;One of my customers runs an external server which is connected to the main network via a simple &lt;a href="https://help.ubuntu.com/community/VPNClient"&gt;PPTP connection&lt;/a&gt;. This works fine but from time to time the firewall decides to drop the connection (for whatever reason). From this moment on, the external server can not access the resources within the internal network any more. Until now we had to restart the connection by hand, but this is not very comfortable.&lt;/p&gt;</description></item><item><title>Automotive 2-channel PWM dimmer</title><link>https://bytebang.at/blog/automotive-2-channel-pwm-dimmer/</link><pubDate>Sat, 07 Nov 2015 12:57:39 +0100</pubDate><guid>https://bytebang.at/blog/automotive-2-channel-pwm-dimmer/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;A colleague who is restoring an old-timer bus asked me if I know where to get an electronic circuit that is able to dim two different lights - but with just one knob. The reason behind this is that the old-timer bus has only one mounting hole left in its dashboard. He reported that they tried to build such a circuit wit a potentiometer (out of an old radio), but without success. So it became my task to design such a circuit.&lt;/p&gt;</description></item><item><title>IPTV with a Synology DS713+</title><link>https://bytebang.at/blog/iptv-with-a-synology-ds713/</link><pubDate>Mon, 19 Oct 2015 16:31:01 +0200</pubDate><guid>https://bytebang.at/blog/iptv-with-a-synology-ds713/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Recently i purchased an &lt;a href="http://www.amazon.de/Amazon-W87CUN-Fire-TV-Stick/dp/B00KAKPZYG"&gt;Amazon FireTv Stick&lt;/a&gt; - which is a great device for video streaming. But I wanted more than this stick offers out-of-the-box: I wanted to be able to stream DVB-T  and DVB-S (digital terrestrial and digital satellite) signals through my IP network. Somewhere in the internet I stumbled across a few articles which components are needed for this purpose, but in the end I had no idea if and how it would work. I wanted the setup to look like this:&lt;/p&gt;</description></item><item><title>Monitoring WiFi signal strength / quality with ubuntu</title><link>https://bytebang.at/blog/monitoring-wifi-signal-strength-quality-with-ubuntu/</link><pubDate>Sun, 11 Oct 2015 13:28:30 +0200</pubDate><guid>https://bytebang.at/blog/monitoring-wifi-signal-strength-quality-with-ubuntu/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;My wireless network adapter dropped the connection from time to time. In order to find out if it is a hardware problem or just a weak signal which is just above the noise floor i decided to investigate in the signal strength and link quality of my adapter.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;I decided to go with &lt;a href="http://manpages.ubuntu.com/manpages/maverick/man1/wavemon.1.html"&gt;wavemon&lt;/a&gt; - a small n-curses based utility which monitors network devices. The installation is straight forward:&lt;/p&gt;</description></item><item><title>Lexmark CX410 scan to network (on a SME Server)</title><link>https://bytebang.at/blog/lexmark-cx410-scan-to-network-on-a-sme-server/</link><pubDate>Wed, 12 Aug 2015 21:09:43 +0200</pubDate><guid>https://bytebang.at/blog/lexmark-cx410-scan-to-network-on-a-sme-server/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;My local glider club bought a new scanner / printer combination from Lexmark. The &lt;a href="http://www.lexmark.com/DE/de/catalog/product.jsp?catId=cat310005&amp;amp;prodId=DE7939"&gt;CX410de&lt;/a&gt; is a good office device which is able to print and also to scan documents. While printing was no problem at all, the scann-to-network function bugged me (and my colleague) a lot. Scans to a normal windows box worked like a charm (exactly as described in the manual) but scans to a share on our &lt;a href="http://wiki.contribs.org/Main_Page"&gt;SME server&lt;/a&gt; (which is basically a Linux box that emulates a Windows domain controller and some shares) failed constantly (&amp;ldquo;Verbindung konnte nicht hergestellt werden. Kontaktieren Sie Ihren Administrator&amp;rdquo; - which translates to &amp;ldquo;Network connection could not be established. Contact your administrator&amp;rdquo;).&lt;/p&gt;</description></item><item><title>Bypass restrictive firewalls with a SSH tunnel</title><link>https://bytebang.at/blog/bypass-restrictive-firewalls-with-a-ssh-tunnel/</link><pubDate>Mon, 06 Jul 2015 19:46:48 +0200</pubDate><guid>https://bytebang.at/blog/bypass-restrictive-firewalls-with-a-ssh-tunnel/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Free wireless LAN is offered in every bigger building or company. The problem with these wireless LANs is that the internet can be they can be (and often is) somehow restricted. Sites could be blocked, services can be disabled and traffic can be sniffed easily with a simple off-the-shelf firewall. Fortunately there is a simple solution to this problem: Encrypt your traffic, route it to a secure destination and surf the web from there on. &lt;/p&gt;</description></item><item><title>Reset GLPI passwords in the database</title><link>https://bytebang.at/blog/reset-glpi-passwords-in-the-database/</link><pubDate>Sun, 28 Jun 2015 09:15:16 +0200</pubDate><guid>https://bytebang.at/blog/reset-glpi-passwords-in-the-database/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Recently i had to login into an abandoned instance of &lt;a href="http://www.glpi-project.org"&gt;GLPI&lt;/a&gt;. GLPI is an Information Resource-Manager with an additional Administration- Interface. You can use it to build up a database with an inventory for your company (computer, software, printers&amp;hellip;). It has enhanced functions to make the daily life for the administrators easier, like a job-tracking-system with mail-notification and methods to build a database with basic information about your network-topology. Unfortunately the administrator who set up the instance had quit his job without writing down the passwords to log into the system. So i had to find a way how to reset the password.&lt;/p&gt;</description></item><item><title>Autostart a program on the Raspberry Pi</title><link>https://bytebang.at/blog/autostart-a-program-on-the-raspberry-pi/</link><pubDate>Tue, 23 Jun 2015 11:42:32 +0200</pubDate><guid>https://bytebang.at/blog/autostart-a-program-on-the-raspberry-pi/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;When you run a server then the server process has to be started. If you are installing a webserver like &lt;a href="http://httpd.apache.org/"&gt;apache2&lt;/a&gt; or &lt;a href="http://www.lighttpd.net/"&gt;lighttpd&lt;/a&gt; via the &lt;a href="https://help.ubuntu.com/community/AptGet/Howto"&gt;package manager&lt;/a&gt; then an autostart script will be installed as well. This is not the case if you want to run your self-compiled server like the &lt;a href="https://github.com/MalcolmRobb/dump1090"&gt;dump1090&lt;/a&gt; ADS-B receiver. In this case you have to provide the start (and also probably a stop-) script by yourself.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;The solution is simple. In the first step you have to provide a small script which starts and stops your server. In the second step you have to register it against the operating system. The exact procedure is described below.&lt;/p&gt;</description></item><item><title>Raspberry PI as kiosk display</title><link>https://bytebang.at/blog/raspberry-pi-as-kiosk-display/</link><pubDate>Tue, 09 Jun 2015 20:55:30 +0200</pubDate><guid>https://bytebang.at/blog/raspberry-pi-as-kiosk-display/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;My local glider club wanted to increase the weather awareness of our pilots. Therefore they decided to display the current weather and some forecasts on a television. I wrote a script that fetches the important weather data and compiles it into a HTML slideset. This webpage is hosted on our internal server and can be accessed from everywhere on the airfield.&lt;/p&gt;&#10;&lt;p&gt;We also managed it to find  a small (but old) tablet which had a HDMI output that was connected to the TV. We configured this thing that it starts a web browser after the boot and this web browser displays exactly that one HTML slideshow page with the weather information. It worked very well for 3 years, but now the tablet is dead. A cheap alternative to this is to replace it with a Raspberry pi (which also has a HDMI output).&lt;/p&gt;</description></item><item><title>Performance of the Hutchinson / Drei LTE bundle: HUI 30</title><link>https://bytebang.at/blog/performance-of-the-hutchinson-drei-lte-bundle-hui-30/</link><pubDate>Thu, 04 Jun 2015 09:19:52 +0200</pubDate><guid>https://bytebang.at/blog/performance-of-the-hutchinson-drei-lte-bundle-hui-30/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Rural live has its beauty. You hear the nature, the birds may awake you in the morning, there is no traffic - and no internet traffic. In Austria the rural areas are connected with telephone lines (POTS). These telephone lines are often mounted on the surface and therefore vulnerable to atmospheric disturbances like thunderstorms and so on. As you might thing this influences the quality of an internet connection via ADSL. The performance is poor and with bad weather the internet is often not available. The photo below shows the test scenario. A house in the middle of nature, but ~5 miles away from the next DSL DSLAM box. The best result we can get out of the ADSL connection is about 3MBit download and 0.2 MBit upload:&lt;/p&gt;</description></item><item><title>SqlServer CPU utilization</title><link>https://bytebang.at/blog/sqlserver-cpu-utilization/</link><pubDate>Wed, 03 Jun 2015 13:49:28 +0200</pubDate><guid>https://bytebang.at/blog/sqlserver-cpu-utilization/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Sometimes it is interesting how much CPU time your SQL Server is consuming. Well - you can look it up in the Taskmanager, but there is another solution for this: A simple query tells you the CPU time the SQL Server uses. The trick is that you query the &lt;a href="https://msdn.microsoft.com/de-at/library/ms175048.aspx"&gt;sys.dm_os_sys_info&lt;/a&gt; table for it. For those who are interested: There are a lot of other tables with information about the SQL Server like memory, cache and other statistics. Have a look at the &lt;a href="https://msdn.microsoft.com/en-US/en-en/library/ms176083.aspx"&gt;MSDN Article about the SQLServer Operating System&lt;/a&gt; !&lt;/p&gt;</description></item><item><title>Building a cheap FLARM basestation antenna</title><link>https://bytebang.at/blog/building-a-cheap-flarm-basestation-antenna/</link><pubDate>Tue, 26 May 2015 13:13:24 +0200</pubDate><guid>https://bytebang.at/blog/building-a-cheap-flarm-basestation-antenna/</guid><description>&lt;h1 id="the-problem"&gt;The problem&lt;/h1&gt;&#10;&lt;p&gt;This spring I decided to build a FLARM base station with my old Raspberry Pi. The &lt;a href="http://wiki.glidernet.org/"&gt;Open Glider Network&lt;/a&gt; is a good starting point for this purpose. The OGN is a community project. It is based on software, hardware, receivers and other contributions from individuals and the open source community.  The objective of the Open Glider Network is to create and maintain a unified tracking platform for gliders and other GA aircraft. Currently OGN focuses on tracking aircraft equipped with FLARM, FLARM-compatible devices or OGN tracker. &lt;a href="https://flarm.com/"&gt;FLARM&lt;/a&gt; is mainly utilized in gliders, however other small aircraft (planes, helicopters, deltas or even para-gliders) are also often equipped with it, especially if operating in the areas intensively used by gliders, such as the Alps.&lt;/p&gt;</description></item><item><title>Running SkyDemon under Linux with wine</title><link>https://bytebang.at/blog/running-skydemon-under-linux-with-wine/</link><pubDate>Mon, 11 May 2015 21:21:13 +0200</pubDate><guid>https://bytebang.at/blog/running-skydemon-under-linux-with-wine/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Last week I performed a check-flight with a flight instructor. He showed me a nice tool that helps a lot with the flight-planning. It is called &lt;a href="http://www.skydemon.aero"&gt;SkyDemon&lt;/a&gt; and it works on iPad, Android, iPhone, PC and Web. After you have registered yourself for a 30 day&lt;a href="http://www.skydemon.aero/start/default.aspx"&gt; trail version&lt;/a&gt; the installation you can install the software. While the installation on my android tabled worked without any issues (download from the play store and install it) the installation on my laptop was a bit tricky. The reason behind this issues was that i run Ubuntu 14.04 which is not supported by SkyDemon. Here is how to get it running:&lt;/p&gt;</description></item><item><title>Locking down a Baofeng UV5R+ to disable unintentional TX</title><link>https://bytebang.at/blog/locking-down-a-baofeng-uv5r-to-disable-unintentional-tx/</link><pubDate>Sun, 12 Apr 2015 13:32:22 +0200</pubDate><guid>https://bytebang.at/blog/locking-down-a-baofeng-uv5r-to-disable-unintentional-tx/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;In Austria a licensed HAM radio operator has to ensure that nobody (except other licensed HAMs) can make transmissions from their equipment. This may be a simple task if you put away your radios from your family all the time, but the &lt;a href="http://www.miklor.com/uv5r/"&gt;Baofeng UV5R+&lt;/a&gt; has a bunch of interesting features like a torch lamp (OK its just a LED on the top, but in the most cases this my be sufficient) or a built in FM-radio that can be useful in your house.&lt;/p&gt;</description></item><item><title>Fix the no-mic problem with the Baofeng UV5R+</title><link>https://bytebang.at/blog/fix-the-no-mic-problem-with-the-baofeng-uv5r/</link><pubDate>Wed, 25 Mar 2015 13:08:56 +0100</pubDate><guid>https://bytebang.at/blog/fix-the-no-mic-problem-with-the-baofeng-uv5r/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;In general I am very satisfied with my &lt;a href="http://www.eham.net/reviews/detail/10755"&gt;Baofeng UV5R+&lt;/a&gt;. The performance is reasonably well (for the price) and if you are proud owner of a programming cable then you can configure it to fit your needs. However - last summer I discovered that my device suddenly stopped working. The carrier wave was there, but there was no modulation.&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;After googling around I found an youtube video that shows how to fix the problem.&lt;/p&gt;</description></item><item><title>Fetching google calendar events with python</title><link>https://bytebang.at/blog/fetching-google-calendar-events-with-python/</link><pubDate>Sun, 08 Mar 2015 09:49:09 +0100</pubDate><guid>https://bytebang.at/blog/fetching-google-calendar-events-with-python/</guid><description>&lt;h1 id="the-problem"&gt;The problem&lt;/h1&gt;&#10;&lt;p&gt;Google calendar is a wonderful tool. In the last year my &lt;a href="http://www.segelflug.at"&gt;glider club&lt;/a&gt; managed it to switch away from our old paper based calentar towards a google calendar which is also integrated into our homepage. While this setup is working very well we discovered that we need a prinout of todays events for the daily briefing of our pilots and for daily event management. The previous version of this daily summary was printed automatically via a reciept printer in the morning and looked like this:&lt;/p&gt;</description></item><item><title>Eclipse is not able to install plugins</title><link>https://bytebang.at/blog/eclipse-is-not-able-to-install-plugins/</link><pubDate>Tue, 24 Feb 2015 09:32:59 +0100</pubDate><guid>https://bytebang.at/blog/eclipse-is-not-able-to-install-plugins/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;&lt;a href="https://eclipse.org/downloads/"&gt;Eclipse &lt;/a&gt;has a wonderful plugin and extension mechanism. If you want to add new software to your installation then you can (at least in the newer &lt;a href="https://wiki.eclipse.org/Older_Versions_Of_Eclipse"&gt;versions &lt;/a&gt;of Eclipse) just drag &amp;amp; drop the sotware from the &lt;a href="http://marketplace.eclipse.org/"&gt;markteplace &lt;/a&gt;onto the IDE. In my case this did no work very well. Eclipse stuck during the calculation of the dependencies. (Error: &lt;a href="http://vaadin.com/eclipse/content.xml"&gt;http://vaadin.com/eclipse/content.xml&lt;/a&gt; )For me it seemed that the network connection broke during the download, but this was not the case.&lt;/p&gt;</description></item><item><title>Crack (ZIP) passwords with John the Ripper</title><link>https://bytebang.at/blog/crack-zip-passwords-with-john-the-ripper/</link><pubDate>Wed, 18 Feb 2015 21:01:34 +0100</pubDate><guid>https://bytebang.at/blog/crack-zip-passwords-with-john-the-ripper/</guid><description>&lt;p&gt;Humans tend to forget. This is especially true for passswords! Forgetting zip passwords renders the zip file unuseable because it is not possible to recover the content of the zip file without the right password. So once in a while i have to crach my own passwords. I use the tool &lt;a href="http://www.openwall.com/john/"&gt;John the Ripper&lt;/a&gt; to recover the lost passwords. John the Ripper is a fast password cracker, currently available for many flavors of Unix, Windows, DOS, BeOS, and OpenVMS. Its primary purpose is to detect weak Unix passwords.&lt;/p&gt;</description></item><item><title>Changing the frequency of a HM-TRP 3DR Radio</title><link>https://bytebang.at/blog/changing-the-frequency-of-a-hm-trp-3dr-radio/</link><pubDate>Fri, 06 Feb 2015 14:05:28 +0100</pubDate><guid>https://bytebang.at/blog/changing-the-frequency-of-a-hm-trp-3dr-radio/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;table&gt;&#10;&lt;colgroup&gt;&#10;&lt;col style="width: 50%" /&gt;&#10;&lt;col style="width: 50%" /&gt;&#10;&lt;/colgroup&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td&gt;&lt;img src="https://bytebang.at/blog/changing-the-frequency-of-a-hm-trp-3dr-radio/3dr_radio_telemtry_kit.jpg" width="142" height="142" alt="3dr radio telemtry kit" /&gt;&lt;/td&gt;&#10;&lt;td&gt;I recently bought a &lt;a href="http://www.rctimer.com/product-817.html"&gt;radio telemtry kit&lt;/a&gt; from a friend who wanted to use it for his do-it-yourself drone project. One side is connected to the computer and shows up as a serial USB port. The other side has a TTL serial interface. The main purpose of the HM-TRP from 3D Robotics is to provide a transparent serial link over the air. My buddy sold it because the plugs did not fit into the &lt;a href="http://copter.ardupilot.com/wiki/3dradio/"&gt;ardupilot&lt;/a&gt; board.&lt;br /&gt;&#10;&lt;br /&gt;&#10;As it turned out it is a 915 MHz telemtry kit hich was bought in US and which is forbidden in the european union because it viloates the frequency regulation. In &lt;a href="http://www.bmvit.gv.at/telekommunikation/funk/frequenzverw/begruenden.html"&gt;Austria the 915 MHz frequency is assigned&lt;/a&gt; to the GMS opertors, and it is not allowed to transmit on these frequencies. By law there would be a &lt;a href="https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&amp;amp;Gesetzesnummer=10012870"&gt;penalty up to a few thousand euros&lt;/a&gt; is somebody catches me operating this thing.&lt;br /&gt;&#10;&lt;br /&gt;&#10;As a licensed HAM radio operator i was searching for a way how to modify this TRX to be able to operate it in the 70 cm Band.&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;As it turned out both sides of the telemetry kit are using a &lt;a href="https://bytebang.at/blog/changing-the-frequency-of-a-hm-trp-3dr-radio/HM-TRP.pdf"&gt;HM-TRP 100 mW transceiver module&lt;/a&gt; to transmit data over the air. After an hour of analyzing the board an googling around i stumbled upon a forum post that describes how to &lt;a href="http://diydrones.com/forum/topics/changing-main-frequency-of-hm-trp-3dr-radio-for-telemetry-using"&gt;change the operting frequency of HM-TRP 3DR Radio for Telemetry using AT Commands&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Windows Explorer: Search by filename</title><link>https://bytebang.at/blog/windows-explorer-search-by-filename/</link><pubDate>Sun, 18 Jan 2015 14:31:38 +0100</pubDate><guid>https://bytebang.at/blog/windows-explorer-search-by-filename/</guid><description>&lt;h1 id="problem"&gt;Problem&lt;/h1&gt;&#10;&lt;p&gt;From time to time i am wondering why the MS Windows Explorer does not find files within my directories - even if i am absolutely sure that they have to be somwhere beneath a certain folder. It seems that the filesearch is nowadays working different from the old DOS style search. In the good old times we could search for files (in our exampe pom.xml) like this:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;pre&gt;&lt;code&gt;D:\test&amp;gt;dir /s pom.xml&#10; Datenträger in Laufwerk D: ist 123GB SSD&#10; Volumeseriennummer: 6825-B74D&#10;&#10; Verzeichnis von D:\test\solidask&#10;&#10;07.11.2012  13:28             8.266 pom.xml&#10;               1 Datei(en),          8.266 Bytes&#10;&#10; Verzeichnis von D:\test\solidask_OK&#10;&#10;07.11.2012  13:28             8.266 pom.xml&#10;               1 Datei(en),          8.266 Bytes&#10;&#10;     Anzahl der angezeigten Dateien:&#10;               2 Datei(en),         16.532 Bytes&#10;               0 Verzeichnis(se), 32.125.673.472 Bytes frei&#10;&#10;D:\test&amp;gt;&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;The command &lt;code&gt;dir /s &amp;lt;FILENAME&amp;gt;&lt;/code&gt; searches below the current directory for the file called &amp;lt;FILENAME&amp;gt;. If you do the same search in the Windows Explorer then a search my (or may not) reveal the same results:&lt;/p&gt;</description></item><item><title>Meshed HAM Radio - High Speed Multimedia Network</title><link>https://bytebang.at/blog/meshed-ham-radio-high-speed-multimedia-network/</link><pubDate>Thu, 01 Jan 2015 18:19:33 +0100</pubDate><guid>https://bytebang.at/blog/meshed-ham-radio-high-speed-multimedia-network/</guid><description>&lt;p&gt;Meshed networks are nothing inherently new, but i know only very few pepole that have played around with it The theory states that a meshed network uses a network topology in which each node (called a mesh node) is able to relay data for the network. In the wild there are big wireless mesh networks utilized to build up a network which is not dependent on the internet and which is used to connect multiple clients in a town - or even across towns. These networks (In Austria:&lt;a href="http://funkfeuer.at/index.php?id=42&amp;amp;L=1"&gt; funkfeuer.at&lt;/a&gt; and in Germany: &lt;a href="http://www.freifunk.net"&gt;freifunk.net&lt;/a&gt;) are open for everybody who is interested and willing to contribute. The only thing you have to do is to register yourself an to set up a network node.&lt;/p&gt;</description></item><item><title>Truncate a MSSQL Server Database Logfile</title><link>https://bytebang.at/blog/truncate-a-mssql-server-database-logfile/</link><pubDate>Fri, 26 Dec 2014 17:14:17 +0100</pubDate><guid>https://bytebang.at/blog/truncate-a-mssql-server-database-logfile/</guid><description>&lt;h1 id="mssql-server-101"&gt;MSSQL Server 101&lt;/h1&gt;&#10;&lt;p&gt;In the world of the Microsoft Sql Server a database consists (in the simplest setup) of two &lt;a href="http://msdn.microsoft.com/en-us/library/ms179316.aspx"&gt;kind of files&lt;/a&gt;. The &lt;a href="http://msdn.microsoft.com/en-us/library/ms189563.aspx"&gt;database files&lt;/a&gt; (*.mdf) and the logfiles (*.ldf). Without going into the details of the server one can say that the database file holds the information of the database and the logfiless tores the transactions that made up the data in the dabase. Whenever a transaction is started then the server starts to write the modifications into the logfile. As soon as the transaction is commited then the content is copied into the database file.&lt;/p&gt;</description></item><item><title>Aviation Headset to USB Adapter</title><link>https://bytebang.at/blog/aviation-headset-to-usb-adapter/</link><pubDate>Sun, 14 Dec 2014 10:14:01 +0100</pubDate><guid>https://bytebang.at/blog/aviation-headset-to-usb-adapter/</guid><description>&lt;h1 id="the-problem"&gt;The problem&lt;/h1&gt;&#10;&lt;p&gt;As a part time motor pilot in our aviation club &lt;a href="http://web.segelflug.at"&gt;ASFC Leoben&lt;/a&gt; I decided on a hot summer day where i had to wear the sweat soaked one-for-all headset in our DR48  to buy my own headset. It had to be one with &lt;a href="http://en.wikipedia.org/wiki/Active_noise_control"&gt;active noise reduction&lt;/a&gt; that is comfortable to wear and it had to have a bluetooth interface for accepting calls during long flights. After reading some reviews and after trying some of them I went with the &lt;a href="https://bytebang.at/blog/aviation-headset-to-usb-adapter/owg_en_a20.pdf"&gt;BOSE A20 Aviation headset&lt;/a&gt;. Even after hours of wearing this headphones i did not have headache or any other complaints and so the choice was perfectly right.&lt;/p&gt;</description></item><item><title>Portable HAM radio station</title><link>https://bytebang.at/blog/portable-ham-radio-station/</link><pubDate>Tue, 09 Dec 2014 20:16:27 +0100</pubDate><guid>https://bytebang.at/blog/portable-ham-radio-station/</guid><description>&lt;h1 id="my-way-to-ham-radio"&gt;My way to HAM radio&lt;/h1&gt;&#10;&lt;p&gt;Since the age of 15 i wanted to to be a licensed HAM radio operator because radio fascinated me all the time. Unfortunately the motivation to do the exam to get the needed license was moderate because I &lt;em&gt;thought&lt;/em&gt; had to visit a boring course and I had to learn Morse (CW) code to pass the exam. One day I stumbled across the&lt;a href="http://www.oevsv.at"&gt; OEVSV&lt;/a&gt; homepage page (= austrians ham radio association) and discovered that there was neither the need to learn cw code nor the need to visit a course to be approved to the A-class examination any more. Well at this point in time I ran out of arguments against myself and I decided to do this exam.&lt;/p&gt;</description></item><item><title>Remove all Windows recycle bins</title><link>https://bytebang.at/blog/remove-all-windows-recycle-bins/</link><pubDate>Sun, 02 Nov 2014 11:41:47 +0100</pubDate><guid>https://bytebang.at/blog/remove-all-windows-recycle-bins/</guid><description>&lt;p&gt;Whenever the free space on one of your windows drives gets low then one option is to empty your recycle bin. Well, this works fine - but Windwos stores an recycle bin for every user on the system who has deleted something. To delete the all recycle bins of all users on the c:\ drive with one simple command do it like that:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;pre&gt;&lt;code&gt;c:\&amp;gt;rd /s c:\$Recycle.Bin&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Since windows stores recycle bins for every user on on every local disk you have to repeat this command for all local drives on your harddisk to get rid of all deleted data.&lt;/p&gt;</description></item><item><title>Receive APRS stations with rtl-str and display them with Xastir</title><link>https://bytebang.at/blog/receive-aprs-stations-with-rtl-str-and-display-them-with-xastir/</link><pubDate>Sun, 26 Oct 2014 13:24:53 +0100</pubDate><guid>https://bytebang.at/blog/receive-aprs-stations-with-rtl-str-and-display-them-with-xastir/</guid><description>&lt;p&gt;The Automated Packet Reporting System is an ham radio based system for real time tactical digital communications of information of immediate value in the local area. This means in other words that along with messages, alerts, announcements, and bulletins, the most visible aspect of APRS is its ability to be display weather stations, alerts and objects and other map-related amateur radio volunteer activities on a map.&lt;/p&gt;&#10;&lt;p&gt;Well - there are services like &lt;a href="http://aprs.fi/#!lat=47.23310&amp;amp;lng=9.60000"&gt;aprs.fi&lt;/a&gt; which are able to display such a map within your browser, but once the internet goes down this map will also dissapear. So what are the alternatives ? &amp;hellip; The answer is simple: Receive the aprs traffic on your own and draw them onto a offline available map. This article shows how to recieve the messages with a cheap dvbt stick, how to decode them into aprs messages and finally how to display them within Xastir (which is a program for visualizing APRS packets).&lt;/p&gt;</description></item><item><title>Transfer a virtual machine between two ESXi Hosts</title><link>https://bytebang.at/blog/transfer-a-virtual-machine-between-two-esxi-hosts/</link><pubDate>Wed, 22 Oct 2014 19:17:37 +0200</pubDate><guid>https://bytebang.at/blog/transfer-a-virtual-machine-between-two-esxi-hosts/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Recently i had to migrate a bunch of files from one VmWare Hypervisor to another one. It turned out that there are multiple ways how to do this. The setup is as follows: 2 Computers - both of them are running VmWare ESXi vSphere Hypervisor. The are connected to the same LAN  via a 1 Gigabit connenction.&lt;/p&gt;&#10;&lt;h1 id="solutions"&gt;Solutions&lt;/h1&gt;&#10;&lt;p&gt;As stated before - there are multiple ways how to copy data between those two machines. In this article i am focusing on techniques that do not require thrid party software to perform this task. The following sections are describing my attempts to copy an ISO image from one Host (192.168.30.3) to another host (192.168.30.79). All of these attempts are solving the problem - but the performance is different. All tests where performed on two similar machines with no additional load on them.&lt;/p&gt;</description></item><item><title>RTTY File transmission via soundcard</title><link>https://bytebang.at/blog/rtty-file-transmission-via-soundcard/</link><pubDate>Sat, 11 Oct 2014 18:42:23 +0200</pubDate><guid>https://bytebang.at/blog/rtty-file-transmission-via-soundcard/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;If you have to transmit a file from A to B then the most common methods are to use any kind of network (wired or wireless) or a shared storage medium like an USB stick. What if everything fails and you have to transmit data from computer A to computer B then you still have an option: Transmit the data via the soundcard !&lt;/p&gt;&#10;&lt;h1 id="the-solution"&gt;The Solution&lt;/h1&gt;&#10;&lt;p&gt;Under Linux it is very simple to transmit data via the soundcard. The program &lt;a href="http://www.whence.com/minimodem/"&gt;minimodem &lt;/a&gt;can do exactly that: On the senders computer it converts data to a sound which is played back via the default soundcard and on the receivers computer this sound is converted back to the initial text. Here is a quick example:&lt;/p&gt;</description></item><item><title>Automatically kill hung windows applications</title><link>https://bytebang.at/blog/automatically-kill-hung-windows-applications/</link><pubDate>Wed, 24 Sep 2014 11:21:44 +0200</pubDate><guid>https://bytebang.at/blog/automatically-kill-hung-windows-applications/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;&#10;&lt;p&gt;Whenever a windows process doesnt respond to operatingsystem calls then the OS grays out the window and comes up with a message like this:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://bytebang.at/blog/automatically-kill-hung-windows-applications/Explorer_not_responding.png" alt="Explorer_not_responding.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;This can occur because of bad programming styles (no multithreading) but also as a consequence of bugs. However - in general this is no a big deal: Kille the process and you are done. The problem is more severe on servers that are running unattended and executing some kind of batchjobs under the currently logged in user.&lt;/p&gt;</description></item><item><title>Using vim editor as integrated development environment</title><link>https://bytebang.at/blog/using-vim-editor-as-integrated-development-environment/</link><pubDate>Mon, 22 Sep 2014 13:47:21 +0200</pubDate><guid>https://bytebang.at/blog/using-vim-editor-as-integrated-development-environment/</guid><description>&lt;p&gt;The &lt;a href="http://www.vim.org/"&gt;vim editor&lt;/a&gt; is one of the most powerful ediors i am aware of. It is available in nearly every OS i am aware of and therefore it made sense for me to learn how to use one editor in detail and to use it in every OS.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;If you try the editor for the first time then you will see that it ist not a &amp;rsquo;typical&amp;rsquo; editor like notepad. This origins from the fact that it ist not designed for a point and click interface. It is designed for plain keyboard useage.&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Removing old Linux kernels from ubuntu</title><link>https://bytebang.at/blog/removing-old-linux-kernels-from-ubuntu/</link><pubDate>Sun, 14 Sep 2014 19:15:14 +0200</pubDate><guid>https://bytebang.at/blog/removing-old-linux-kernels-from-ubuntu/</guid><description>&lt;h1 id="the-problem"&gt;The problem&lt;/h1&gt;&#10;&lt;p&gt;Have you ever logged into your linux box and noticed this warning :&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;/boot is using 89.9% of 109MB&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Well then it is time to remove all your old linux kernels because they are filling up your /boot directory. What is the content of this mysterious directory ?&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;pre&gt;&lt;code&gt;$ mount | grep boot&#10;/dev/vda1 on /boot type ext4 (rw)&#10;&#10;$ ls /boot&#10;abi-3.2.0-64-generic  config-3.2.0-64-generic  grub                         initrd.img-3.2.0-68-generic  System.map-3.2.0-64-generic  vmlinuz-3.2.0-64-generic&#10;abi-3.2.0-65-generic  config-3.2.0-65-generic  initrd.img-3.2.0-64-generic  lost+found                   System.map-3.2.0-65-generic  vmlinuz-3.2.0-65-generic&#10;abi-3.2.0-67-generic  config-3.2.0-67-generic  initrd.img-3.2.0-65-generic  memtest86+.bin               System.map-3.2.0-67-generic  vmlinuz-3.2.0-67-generic&#10;abi-3.2.0-68-generic  config-3.2.0-68-generic  initrd.img-3.2.0-67-generic  memtest86+_multiboot.bin     System.map-3.2.0-68-generic  vmlinuz-3.2.0-68-generic&#10;&#10;$ df -h&#10;Filesystem      Size  Used Avail Use% Mounted on&#10;/dev/vda1       110M   98M  6.0M  95% /boot&#10;.&#10;.&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;As you can see there is a lot of stuff in this directory: namely the linux kernels that you can choose from in the grub bootscreen. While simply deleting the old and unused kernelfiles will free up memory on the boot partition the old kernels will be still shown in the boot menu of &lt;a href="http://wiki.ubuntuusers.de/grub"&gt;grub&lt;/a&gt;. The correct way to ged rid of them is to uninstall them via the packet manager. So lets have a look which kernel we are currently running:&lt;/p&gt;</description></item><item><title>Creating an animated gif from a bunch of jpg files</title><link>https://bytebang.at/blog/creating-an-animated-gif-from-a-bunch-of-jpg-files/</link><pubDate>Tue, 09 Sep 2014 19:07:33 +0200</pubDate><guid>https://bytebang.at/blog/creating-an-animated-gif-from-a-bunch-of-jpg-files/</guid><description>&lt;p&gt;The benefit of an &lt;a href="http://en.wikipedia.org/wiki/Graphics_Interchange_Format"&gt;animated gif&lt;/a&gt; in opposite to a &lt;a href="http://en.wikipedia.org/wiki/Flash_Video"&gt;flash (flv) video&lt;/a&gt; is that you dont have to utilize a player to view it. This means that most modern webbrowsers are able to display any animated gif out of the box. The creation of such gifs is again rather simple. A clear drawback is that animated gifs do not support sound (gif is actually an image format). The following examples assumes that there is a directory that contains images captured by a webcam:&lt;/p&gt;</description></item><item><title>Rendering timelapse videos from daylight webcam images</title><link>https://bytebang.at/blog/rendering-timelapse-videos-from-daylight-webcam-images/</link><pubDate>Sun, 07 Sep 2014 13:00:00 +0200</pubDate><guid>https://bytebang.at/blog/rendering-timelapse-videos-from-daylight-webcam-images/</guid><description>&lt;p&gt;In my last article i described how to setup a &lt;a href="https://bytebang.at/blog/quick-and-dirty-high-resolution-webcam/"&gt;webcam with a raspberry pi&lt;/a&gt;. This time i am showing you how to create timelapse videos from those images: &lt;a href="http://www.mplayerhq.hu/DOCS/HTML/de/mencoder.html"&gt;MEncoder&lt;/a&gt; is a free command line video decoding, encoding and filtering tool released under the GNU General Public License. I am using it to generate a flv file from a sequence of images. So if you have a list of images stored in a file then you can easily create a video from it. The images are shown one after anothe - exactly as they appear in the file &lt;code&gt;/tmp/webcam_imagelist.txt&lt;/code&gt;&lt;br&gt;&#10;&lt;br&gt;&#10;&lt;code&gt;$ mencoder mf:///tmp/webcam_imagelist.txt -mf type=jpg -of lavf -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -o /tmp/timelapse.flv&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Quick and dirty high-resolution webcam</title><link>https://bytebang.at/blog/quick-and-dirty-high-resolution-webcam/</link><pubDate>Mon, 01 Sep 2014 18:36:28 +0200</pubDate><guid>https://bytebang.at/blog/quick-and-dirty-high-resolution-webcam/</guid><description>&lt;p&gt;Recently i had the idea to build a(nother) webcam for my club to enable the gliderpilots to observe the weather in the alps. It should be cheap, easy to build and it should have a high resolution - A perfect field of application for my underemployed &lt;a href="http://www.raspberrypi.org/"&gt;raspberry pi&lt;/a&gt; and its &lt;a href="http://www.raspberrypi.org/product/camera-module/"&gt;camera module&lt;/a&gt;. Both can be orderet at RS-Components for under 50 € (excluding a housing and a power supply).&lt;/p&gt;&#10;&lt;p&gt;The first step was to enable the camer module on the pi, which is rather simple: Open the &lt;code&gt;raspi-config&lt;/code&gt;  tool from the Terminal&lt;/p&gt;</description></item><item><title>ASCII - Art youtube player</title><link>https://bytebang.at/blog/ascii-art-youtube-player/</link><pubDate>Thu, 28 Aug 2014 19:48:43 +0200</pubDate><guid>https://bytebang.at/blog/ascii-art-youtube-player/</guid><description>&lt;p&gt;I was sitting in front of my &lt;a href="http://www.raspberrypi.org/"&gt;raspberry pi&lt;/a&gt; and asked myself: &amp;ldquo;&lt;em&gt;What if X Servers, Windowmanagers and all the other graphical stuff would heve never been invented ? .. How would pepole watch youtube videos&lt;/em&gt;.&amp;rdquo;. Beside the fact that the possibility of having youtube in this very special case is really small, this type of question reveals that it was not one of my brightest moments &amp;hellip; but it lead me to a really cool attempt how to watch videos in ascii art.&lt;/p&gt;</description></item><item><title>How to backup OTRS 3.0</title><link>https://bytebang.at/blog/how-to-backup-otrs-30/</link><pubDate>Wed, 20 Aug 2014 14:50:13 +0200</pubDate><guid>https://bytebang.at/blog/how-to-backup-otrs-30/</guid><description>&lt;p&gt;Instead of writing my own script for backing up my &lt;a href="https://www.otrs.com"&gt;OTRS &lt;/a&gt;installation i found a neat solution in the &lt;a href="http://otrs.github.io/doc/manual/admin/3.0/en/html/backup-and-restore.html"&gt;manual&lt;/a&gt;:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;pre&gt;&lt;code&gt;admin@support:~$ mkdir ~/otrsbackup&#10;&#10;admin@support:~$ /opt/otrs/script/backup.pl -d ~/otrsbackup&#10;Backup /home/entw/otrsbackup/2014-08-20_16-51/Config.tar.gz ... done&#10;Backup /home/entw/otrsbackup/2014-08-20_16-51/Application.tar.gz ... done&#10;Dump MySQL rdbms ... done&#10;Compress SQL-file... done&#10;&#10;admin@support:~/otrsbackup$ tree -A .&#10;.&#10;+-- 2014-08-20_16-51&#10;    +-- Application.tar.gz&#10;    +-- Config.tar.gz&#10;    +-- DatabaseBackup.sql.gz&#10;&#10;1 directory, 3 files&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>MSSQL 2012 - Database in Recovery Pending State</title><link>https://bytebang.at/blog/mssql-2012-database-in-recovery-pending-state/</link><pubDate>Tue, 19 Aug 2014 09:36:55 +0200</pubDate><guid>https://bytebang.at/blog/mssql-2012-database-in-recovery-pending-state/</guid><description>&lt;p&gt;Recently after a VMware recovery of a database server i found my database in the &amp;ldquo;Recovery Pending&amp;rdquo; state. In this state nobody could connect to the db - which renders it pretty useless. After some googling i found &lt;a href="http://social.msdn.microsoft.com/Forums/sqlserver/en-US/835dee9b-0993-433f-baf7-a646dfa7f8f7/how-to-resolve-the-issue-of-a-database-that-was-in-recovery-pending-mode?forum=sqldatabaseengine"&gt;here &lt;/a&gt;the simple and working solution.&lt;/p&gt;&#10;&lt;p&gt;Start the MSSQL Server Management Studio, connect to the server and run the following statements&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;pre&gt;&lt;code&gt;ALTER DATABASE [DB_Name] SET  SINGLE_USER WITH NO_WAIT;&#10;ALTER DATABASE [DB_Name] SET EMERGENCY;&#10;DBCC checkdb ([DB_Name], REPAIR_ALLOW_DATA_LOSS);&#10;ALTER DATABASE [DB_Name] SET online;&#10;ALTER DATABASE [DB_Name] SET  Multi_USER WITH NO_WAIT;&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;After that it was possible to bring the database online again and it worked like a charm.&lt;/p&gt;</description></item><item><title>Bluelog - the fast bluetooth scanner</title><link>https://bytebang.at/blog/bluelog-the-fast-bluetooth-scanner/</link><pubDate>Mon, 18 Aug 2014 20:07:34 +0200</pubDate><guid>https://bytebang.at/blog/bluelog-the-fast-bluetooth-scanner/</guid><description>&lt;p&gt;&lt;a href="https://github.com/MS3FGX/Bluelog"&gt;Bluelog&lt;/a&gt; is a wonderful piece of software - it is able to detect all bluetooth devices (that are in the discoverable state) very quickly and without the need of an interface. In opposite to OpwnWRT or some other Linux distributions it is not installable via the package manager in Ubuntu 14.04, but it can easily be compiled by yourself.&lt;/p&gt;&#10;&lt;h1 id="installation-on-unubtu-1404"&gt;Installation on Unubtu 14.04&lt;/h1&gt;&#10;&lt;p&gt;Well - this time you have to get your hands dirty. Make sure that you have installed the following packages: &lt;em&gt;git&lt;/em&gt;, &lt;em&gt;build-essentials&lt;/em&gt; (available in the main repository) and &lt;em&gt;libbluetooth-dev&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>X Forwarding with the Rasperry Pi</title><link>https://bytebang.at/blog/x-forwarding-with-the-rasperry-pi/</link><pubDate>Mon, 18 Aug 2014 08:18:17 +0200</pubDate><guid>https://bytebang.at/blog/x-forwarding-with-the-rasperry-pi/</guid><description>&lt;p&gt;You can use the installed applications on your Rasperry Pi without the need of installing a VNC server or another Remote Desktop tool. Everything is already there - right out of the box.&lt;/p&gt;&#10;&lt;p&gt;The name of the game: X-Screen forwarding&lt;/p&gt;&#10;&lt;h1 id="prequisites"&gt;Prequisites&lt;/h1&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Installed Raspiban&lt;/li&gt;&#10;&lt;li&gt;Enabled SSH Server on the Raspberry&lt;/li&gt;&#10;&lt;li&gt;A SSH Client that is able to display a forwarded X-Window.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h1 id="howto"&gt;Howto&lt;/h1&gt;&#10;&lt;p&gt;The first step is to conenct to your rasperry via SSH. The important option is the &amp;lsquo;-X&amp;rsquo;. This requests X forwarding to the client (which is enabled by default at the raspiban ssh server).&lt;/p&gt;</description></item><item><title>Reattatch an existing VM to ESXi 5.5</title><link>https://bytebang.at/blog/reattatch-an-existing-vm-to-esxi-55/</link><pubDate>Wed, 13 Aug 2014 15:53:55 +0200</pubDate><guid>https://bytebang.at/blog/reattatch-an-existing-vm-to-esxi-55/</guid><description>&lt;p&gt;The free &lt;a href="http://www.vmware.com/at/products/vsphere-hypervisor"&gt;VMware Hypervisor&lt;/a&gt; is able to attatch NAS drives in order to use it as storage for virtual machines. Lets assume you have a running ESXi 5.5 server and ou want to attatch existing VMs to it that are stored on a NAS that exposes a &lt;a href="http://de.wikipedia.org/wiki/Network_File_System"&gt;NFS share&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="step-1-tell-the-esxi-that-there-is-an-additional-storage"&gt;Step 1: Tell the ESXi that there is an additional Storage&lt;/h2&gt;&#10;&lt;p&gt;This step is simple. Open the vSphereClient and attatch the exposed NFS share as new datastorage. This works pretty straight forward: Enter the servername, the name of the share and a local identifier.&lt;/p&gt;</description></item><item><title>Efficient CSV analysis with H2</title><link>https://bytebang.at/blog/efficient-csv-analysis-with-h2/</link><pubDate>Mon, 04 Aug 2014 09:04:11 +0200</pubDate><guid>https://bytebang.at/blog/efficient-csv-analysis-with-h2/</guid><description>&lt;h1 id="installation-of-h2"&gt;Installation of H2&lt;/h1&gt;&#10;&lt;p&gt;If you try to analyze a huge amount of &lt;a href="http://en.wikipedia.org/wiki/Comma-separated_values"&gt;CSV &lt;/a&gt;data then Excel becomes pretty slow in some scenarios. This article shows how to import a csv file into a &lt;a href="http://www.h2database.com"&gt;H2&lt;/a&gt; in-memory database in order to perform analysis with database-power!&lt;/p&gt;&#10;&lt;p&gt;The installation is straight forward. Got to &lt;a href="https://www.h2database.com"&gt;www.h2database.com&lt;/a&gt; and download the right installer for your operating system. I personally prefer the &amp;ldquo;All Platforms&amp;rdquo; zipfile because i often switch the operatingsystem. Once you have downloaded the files you have to start the database and point a webbrowser to the &amp;ldquo;Management Console&amp;rdquo; of the h2 database by entering the url http://localhost:8082&lt;/p&gt;</description></item><item><title>406 MHz ELT Testing with rtl-sdr and Multipsk</title><link>https://bytebang.at/blog/elt-testing-with-rtl-sdr/</link><pubDate>Sun, 20 Jul 2014 19:11:51 +0200</pubDate><guid>https://bytebang.at/blog/elt-testing-with-rtl-sdr/</guid><description>&lt;p&gt;I was asked our local glider club (&lt;a href="http://www.segelflug.at"&gt;ASFC Leoben&lt;/a&gt;) if it is possible to ensure the proper function of  the new  406 MHz ELT transmitters- without the need to buy an expensive elt test device which are priced in the range of a few hundred up to a few thousand euros.&lt;/p&gt;&#10;&lt;h2 id="elt-types"&gt;ELT Types&lt;/h2&gt;&#10;&lt;p&gt;The old ones (121.5 MHz) could be tested by just turning on the airband radio and tuning to 121.5 MHz. Within the first 5 minutes of a full hour (xx:00 - xx:05) you can trigger the old ELTs and see if it transmits. The newer ones (406 MHz) are not as simple to test, because they consist of 2 devices in one box.&lt;/p&gt;</description></item><item><title>Lazy mans oracle update guide (10g -&gt; 11g)</title><link>https://bytebang.at/blog/lazy-mans-oracle-update-guide-10g-11g/</link><pubDate>Mon, 14 Jul 2014 09:36:07 +0200</pubDate><guid>https://bytebang.at/blog/lazy-mans-oracle-update-guide-10g-11g/</guid><description>&lt;p&gt;For compatibility reasons we had to upgrade the oracle database from one of our customers. They where running a oracle 10g on an old Windows 2003R2 server and have to migrate to 11g on an windows 2012 Server.&lt;/p&gt;&#10;&lt;p&gt;Possible attempts:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Upgrade the OS of the old server and afterwards upgrade the batabse version &amp;hellip; Wenn seems to be possible but since the machines are not virtualized this is somehow risky. Rolling back is difficult.&lt;/li&gt;&#10;&lt;li&gt;Setup another machine with Win2012, install Oracle there and import the data from the oter instance &amp;hellip; Well that sounds good. If something fails then the original system is not tainted. Lets go with this one.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The next few sections are describing what we have done to git it running (and where we failed).&lt;/p&gt;</description></item><item><title>Oracle 10g - Certificate error in IE</title><link>https://bytebang.at/blog/oracle-10g-certificate-error/</link><pubDate>Mon, 14 Jul 2014 08:49:18 +0200</pubDate><guid>https://bytebang.at/blog/oracle-10g-certificate-error/</guid><description>&lt;p&gt;The reason behind this is that IE wont accept 512 Bit Keys. So you have (according to &lt;a href="http://joze-senegacnik.blogspot.co.at/2012/11/internet-expoler-can-not-access.html"&gt;http://joze-senegacnik.blogspot.co.at/2012/11/internet-expoler-can-not-access.html&lt;/a&gt;) only one option: Reconfigure the whole thing to use more than 512 bits.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;pre&gt;&lt;code&gt;emctl secure dbconsole -key_strength 1024 -reset&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;This seems to be rather straight forward, but in fact, at my installation it didnt work. A possible reason is that i have not applied the &lt;a href="https://support.oracle.com/epmos/faces/ui/patch/PatchDetail.jspx?patchId=14503114"&gt;Patch 14503114&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;So i went with another solution: Use Firefox&lt;/p&gt;</description></item></channel></rss>