db4free.net Relaunch

Finally! The new db4free.net Website has launched and along with it comes a new (slightly stronger) server and some simplifications with the service itself.

So what is new? Of course the new website which now is up to modern standards again, using a responsive design. While the old site was only designed for desktop (no surprise if you consider it was created in 2005 and remained more or less unchanged since), the new site adopts to small screen devices like mobile phones and tablets as well. Also the look is totally different:

db4free.net old

db4free.net old

db4free.net new

db4free.net new

The service now has a few simplifications. It is no longer allowed, or necessary, to set a collation and define IP addresses or hosts from which db4free.net can be accessed. Most users didn’t change the default anyway and many who did locked themselves out. As for character set and collation, UTF8 should work fine in all languages. If you really need to change it, you can do so from your MySQL client.

Now to the biggest new feature (Woohoo!). You can now easily help us translate the db4free.net website. The old website had the texts spread across many files in various places so there was no easy way to share them so to allow users to contribute in ways like fixing mistakes (I hope there aren’t any, but who can be sure?), improving linguistic style or even add an entirely new language. The new website fixes that and allows me to publish all website texts in a GitHub repository at:

https://github.com/mpopp75/db4free-net-l10n

You can fork this repository, fix texts and/or add translations and send a pull request back, so your updates can be integrated into the website. Find instructions how to do that in the new Translation page and if you need further assistance, please open a ticket at GitHub. I will be happy to guide you through the process as good as I can.

Also still quite new is that db4free.net is now on Twitter. Please consider following the account so you can easily stay up-to-date.

Where is your data which you had already stored in a db4free.net database? As like the last time when db4free.net moved to a new server, the old server and service will remain available at db4free.org until August 15, 2014. Since the migration process is exactly the same as last time, please reuse the good old and still valid instructions.

If you have any questions, please use the Comments section below or drop me a line on Twitter. Enjoy!

Time for a new look

How time flies! It’s almost 4 years (July 19, 2010) that this blog went online. Ever since that, this site had the same look.

Four years are a long time for the World Wide Web and the site’s look became quite a bit dated. Even worse, it didn’t respond to small screen sizes like those of smart phones or tablets which four years ago were not as common as they are today. So it was time for a new (responsive) theme and voilà … here it is!

Please enjoy this site not only on your desktop, but also on your mobile devices.

mpopp.net on mobile device

(Psst, there’s a rumor going around that db4free.net is up for something new as well.)

Another InnoDB crash

It happened twice in May, and now again: another InnoDB crash. db4free.net is now up again with a fresh server instance, meaning that no databases have been transferred from the old server to the new one.

However, the old server is still accessible. It’s running in recovery mode which is good enough to allow you to create a backup of your data (and transfer it to a new account on the new MySQL server instance, if you wish). Here is how to do it.

Make sure you have mysql and mysqldump available on your system. Linux users can usually install the mysql-client package by the distribution’s package manager. OS X users can get it at http://dev.mysql.com/downloads/mysql/5.6.html. For Windows users I am providing mysql.exe and mysqldump.exe for your convenience. Put them somewhere where you can access them by the command prompt.

Here are the commands to first create a dump file (from the old server), and then to import it in the new server instance:

mysqldump -h db4free.net -P 3307 -u [username] -p[password] --databases [database_name] --opt > dump.sql
mysql -h db4free.net -u [username] -p[password] [database_name] < dump.sql

Of course you need to use the correct username/password/database name; with mysqldump those from the old server (now running on port 3307), and with the mysql command from the new server.

Please understand that I can’t give individual support. But this should get you started and there is a lot of information out there in the World Wide Web.

So why didn’t I transfer the data? Well, I tried. But the amount of data was so huge that I ran into all kinds of limits and timeouts that I gave up. One reason was that there are some individual users who host a huge amount of data on db4free.net, in fact only a few users accounted for the majority of data. Which is why I am introducing a new rule on the new server: only a maximum of 100 MB is allowed per database, and databases which exceed 100 MB will be cleared at irregular intervals, with no warning! Remember: db4free.net is a testing service, no hosting service. If you need safety you should get an account with a commercial provider that can give you the kinds of guarantees which db4free.net can’t give you.

I am also asking you to delete data which you no longer need, or even delete the account. When another crash occurs (which is not so unlikely, as it happened 3 times in slightly more than 6 months) chances that I can migrate the data to a new server instance are much better if the data load is smaller. So please help and don’t leave unnecessary data laying around.

Please don’t waste time to get a dump of your data (if you need it). My plan is to leave the old server instance running until end of October. But as always, data corruption can happen, even on this server instance. So make sure you get what you need (even though you shouldn’t … remember why?).

How to remove (hide) annoying sections on web pages

Every now and then it happens that there is something on a web page which I visit frequently that I don’t want to see. Things that are simply just annoying. Sure I could try to ignore it, live with it, try to convince myself it’s not worth bothering. But why should I? There are easy solutions to get rid of it.

Most people probably know Adblock Plus and many use it, myself included. It is now available for almost every modern browser, like Firefox, Google Chrome, Opera 15+, and even Internet Explorer. It is obvious what it does, it blocks ads. But it can do more, like blocking things which aren’t ads, but still annoying.

I’d like to demo how to do it with this little example: YouTube allows to post comments (unless the person publishing a video disables it), but sadly a huge amount of comments are racist, xenophobic, sexist and so on and so forth. Few comments have any value. Maybe you are the kind of person who ends up reading that stuff even though you’d rather not and you know you just end up being disgusted. So lets assume you want to get rid of it, to kill that nasty temptation.

I will show how to do this with Firefox. But I assume it will work very similarly with other browsers and their Adblock Plus addons. Don’t be scared, it should be easy enough for the average internet user, not much technical background needed.

Everything starts with a fresh Firefox 23 and the latest Adblock Plus installed:

Firefox 23 with Adblock Plus

I opened a random YouTube page with comments:

YouTube page with comments

Now comes what’s probably the most challenging part. We need to find the area which we want to remove. Therefor we right click somewhere on top of the area which should go away, like on the text “All Comments”, and select “Inspect Element” from the context menu. In the left bottom area there is an HTML view. Click on the HTML tags (the things like <…>) and see the dotted border on the web page. Try to find the HTML tag which covers the area which you want to remove, and try to find one which has an id element (id=”…”) assigned. What we want is the line

<div id="comments-view" class="" data-type="highlights" >

Here is what it looks like:

Firefox Inspect Element

The relevant information is that it is a <div> tag, and that the id element’s value is “comments-view”. If there was no id element, we could also use the class element (provided there is a value assigned), however class is more risky because unlike id values, class values don’t have to be unique (you may block more than you intend to).

So here is how to form the filter string for Adblock Plus:

  • note the domain, here: youtube.com,
  • two # signs,
  • the tag name, here: div,
  • if you picked an id element, another # sign, if you picked a class element, a dot (.),
  • the id or class value, here: comments-view

So what we have is:

youtube.com##div#comments-view

Now right click on the red Adblock Plus icon (the one which looks like a stop sign) and select “Filter Preferences”. Select the Custom Filters tab:

Adblock Plus Custom Filters

Now click “Add filter group” and name it anything you like (I named it “My filters”):

Adblock Plus Filtergroup

Click the “Actions” button and select “Show/hide filters” from the menu. Then click “Add filter” and enter the filter rule:

Adblock Plus Filter

Voilà, the comments are gone:

Final result - no more comments

InnoDB crash recovery

You may have noticed that the db4free.net server is currently down.

Reason is that an InnoDB crash has occurred and efforts to recover have failed. However, I was able to create a dump file of the entire server, which I’m currently importing into a fresh server instance.

As things look now, the server will be back up with almost all data intact (except maybe updates from April 19th, 2013). But the data volume is large and it will take time. So please be patient while the new server instance is put in place.

Update 2013-04-21 19:45 UTC: Server is back.
Update 2013-04-28 01:25 UTC: same crash happened again. db4free.net will stay down until further notice.
Update 2013-05-02 22:00 UTC: db4free.net is back. But I can’t guarantee for how long. What happened twice recently can happen again any time.

db4free.net server migration

db4free.net‘s server has reached its limits, and it was time for a new one. Now here it is, a shiny new server, with 8 times as much memory than the previous one, and also more disk space. Time for a reboot.

Only recently, MySQL 5.6 has become GA with much better performance than 5.5 and earlier, so the combination of a faster MySQL server and a faster machine should result in a very significant performance boost for db4free.net.

I have not migrated any user databases, but they are still available on the previous/old server. The old server is available at db4free.org, the new server at db4free.net. I will leave the old server running until end of March to allow users to transfer their data to the new server. After that, the server will be shut down and db4free.org will point to the new server as well. This way the server will not have to carry the load of thousands of databases and user accounts which have been created over time and are no longer used.

This means that all users have to register a new account. And here are instructions how to migrate your database from the old to the new server:

On Linux, make sure you have the mysql-client package installed. This should give you everything you need. For Windows users I am providing the 2 client programs you need for download: mysql.exe and mysqldump.exe. Download and copy them into your Windows directory (C:\WINDOWS usually).

To create a backup (dump file) of your database from the old server, run:

mysqldump -h db4free.org -u [myuser] -p[mypass] --database [mydatabase] --opt > dump.sql

[myuser] is of course your user name, [mypass] your password (note that there is no space between -p and your password) and [mydatabase] your database name, as used on the old server.

To import this backup into the new server (after you created the account) run:

mysql -h db4free.net -u [myuser] -p[mypass] [mydatabase] < dump.sql

Note that while mysqldump used db4free.org as host name, you need db4free.net for the mysql command. User name, password and database are those from the new server, in case you used different ones when registering for an account on the new server.

If you prefer phpMyAdmin, you can still access the old server at http://www.db4free.org/phpMyAdmin/.

Should be easy enough, I hope. And when it’s all done: enjoy!

Ideen zu Wehrpflicht/Zivildienst Reform

Nun ist die Volksabstimmung am 20. Jänner 2013 leider für Wehrpflicht und Zivildienst und gegen Berufsheer und freiwilliges Sozialjahr ausgegangen. Was leider zur Folge hat, dass man sich nun mit der Lösung von Problemen beschäftigen muss, welche die bessere Alternative größtenteils gelöst hätte. Aber da die Tatsachen nun einmal so sind, sollte man versuchen, das beste daraus zu machen, und zwar in erster Linie für die unmittelbar Betroffenen, den Wehrpflichtigen selbst.

Einige Vorschläge, die ich unterstütze, sind schon gekommen. Die Zivildienstdauer sollte an die Präsenzdienstdauer angeglichen werden, 6 Monate. Es ist nicht zu rechtfertigen, dass die Arbeit von Zivildienern weniger wert ist (und damit länger dauern muss) als jene von Präsenzdienern. Zumal laut Abstimmungs-Analysen gerade der Zivildienst der ausschlaggebende Grund für viele war, für Wehrpflicht zu stimmen.

Natürlich sind 6 Monate sehr kurz, um vernünftig auszubilden und Sinnvolles damit zu machen. Daher ist eine parallele Einführung des freiwilligen Sozialjahres mit kollektivvertraglicher Entlohnung, mit Zugang für Männer und Frauen, weiterhin überlegenswert. Für Wehrpflichtige sollte solch ein freiwilliges Sozialjahr selbstverständlich als Absolvierung der Wehrpflicht gelten. Hierzu gibt es bereits vernünftige Vorschläge. Dazu gehört auch bessere Bezahlung für Präsenzdienst-Leistende und Zivildiener. Zwar hat sich das Volk auch für die billigere Lösung entschieden (Argument gegen Berufsheer war schließlich, dass es zu teuer ist, und solch ein Berufsheer dürfte nicht mehr kosten als eine Wehrpflicht-Armee), aber es gibt sicher genug Einsparungspotenzial, womit Geldmittel für bessere Bezahlung der Wehrpflichtigen frei werden.

Was mir als Mobbing-Opfer während meines Präsenzdienstes jedoch besonders am Herzen liegt ist, dass es gesicherte Möglichkeiten geben muss, als Betroffener diesem Mobbing entfliehen zu können. Derzeit ist es so, dass man bis zum Ende des Präsenzdienstes (oder auch des Zivildienstes) dem Mobbing hilflos ausgeliefert ist, weil es keine legale Möglichkeit gibt, den Ort des Mobbings zu verlassen. Meine persönlichen Erfahrungen beziehen sich auf den Präsenzdienst, daher werde ich mich im Folgenden darauf konzentrieren. Sinngemäß soll dies für den Zivildienst (bzw. dem umgekehrten Fall) ebenso gelten.

Sadistische Ausbildner beim Bundesheer haben es derzeit sehr leicht. Sie wissen genau, dass Grundwehrdiener (GWDs) 6 Monate lang (zu meiner Zeit noch 8 Monate) in ihren Fängen sind. Alles findet abseits der Öffentlichkeit statt, und Kameraden von Mobbingopfern sind zumeist gut beraten, sich nicht auf die Seite der Mobbingopfer zu stellen, um nicht selbst zum nächsten Opfer zu werden. Ich erlebte selbst, dass die vorherrschende Einstellung ist: “besser der andere, als ich”.

Dadurch werden auch diverse Meldestellen recht wirkungslos. Die einzigen Zeugen, die ein Mobbingopfer hervorbringen kann, sind die Mobber selbst, sowie die Kameraden, die nicht selbst Opfer werden möchten. Letztendlich steht Aussage gegen Aussage, und nachdem meistens nicht nur ein sadistischer Ausbildner in einer Kaserne ist (zumindest nicht in meiner), stehen am Ende die Aussagen mehrerer Ausbildner gegen eine Aussage eines Mobbingopfers. Wie solch eine Geschichte ausgeht, sollte sich jeder denken können.

Mir selbst wurde ins Gesicht geschrien: “waunst es net durch druckst, daun drah di hoit ham” (auf Hochdeutsch übersetzt: “wenn Du das nicht aushältst, dann begeh halt Selbstmord”). Ein Kamerad von mir wurde von einem Ausbildner, weil er nicht schnell genug war, in eine mannhohe Stellung getreten. Er hatte das Glück, nur leicht verletzt geworden zu sein, und der Ausbildner musste sogar ein (ihm sicher nicht leicht fallendes) “Entschuldigung” heraus drücken. Aber das war’s dann schon, richtige Konsequenzen gab es keine. Diese zwei Beispiele geben einen Eindruck, wie der Umgang mit uns GWDs war. Nicht alles war so extrem wie diese beiden Fälle, aber angeschrien zu werden oft mit obszönen Beschimpfungen war an der Tagesordnung. Verstärkt durch das zusätzliche Druckmittel “befohlener Rapport” und der Aussicht, mehrere Tage (meistens 7 Tage) Ausgangsverbot auszufassen (ich schaffte es auf insgesamt 17 Tage).

Beliebt waren auch Kollektivstrafen, oder auch nicht den Schuldigen, sondern alle anderen zu bestrafen (gemäß dem Vorbild des Filmes “Full Metal Jacket”, welchen viele meiner Ausbildner als Grundlage heranzogen, wie man “unwillige” GWDs biegt). Letzteres hatte natürlich den von den Ausbildnern gewünschten Effekt, dass ein ohnehin schon gemobbter GWD zusätzlichen Druck von seinen Kameraden bekam, weil die natürlich nicht ausbaden wollten, was der andere GWD verbrochen (oder auch nicht) hat. Die Folge waren Rache-Aktionen wie Spind auf den Kopf stellen, was von Ausbildnern nicht nur geduldet, sondern sogar gefördert wurde. Wer einmal in diesen Teufelskreis reingeraten ist, hatte auch praktisch keine Chance mehr, da irgendwie herauszukommen.

Der meiner Meinung nach allerwichtigste Aspekt einer Wehrpflicht-Reform (nachdem Abschaffung der Wehrpflicht leider nicht geschafft wurde) muss sein, solche Fälle in Zukunft zu verhindern.

Zuerst einmal gehören Straf-Maßnahmen wie Ausgangsverbot abgeschafft. 6 Monate Freiheitsentzug gepaart mit Zwangsarbeit (ohne irgendetwas verbrochen zu haben) müssen genug sein. Dass man zusätzlich noch mehr Freiheit entzieht, ist durch nichts zu rechtfertigen. Meistens wird Ausgangsverbot ohnehin angewandt, um bereits gemobbte GWDs zusätzlich zu mobben.

Noch wichtiger finde ich, dass GWDs eine Möglichkeit bekommen, diesem Mobbing entfliehen zu können. Zum einen sollte die Möglichkeit geschaffen werden, auch nachträglich von Präsenzdienst zum Zivildienst (auch umgekehrt) wechseln zu können, oder in eine andere Kaserne oder Dienststelle versetzt zu werden. Hierbei sollten Wünsche des Wehrpflichtigen so weit wie möglich berücksichtigt werden. Eigentlich sollten Wünsche des Wehrpflichtigen von vornherein weitmöglich berücksichtigt werden, damit nicht gelernte Köche in Werkstätten landen, und gelernte Mechaniker in der Küche. Auch solche Fehlbesetzungen sind ja nicht unüblich.

Alleine die Schaffung der Möglichkeit, den Dienstort zu wechseln, kann sehr viel dazu beitragen, Terror-Kasernen einen Riegel vorzuschieben. Wenn Kasernen fürchten müssen, zu viele GWDs zu verlieren, weil sich eine beträchtliche Zahl versetzen lässt, bringt das erhebliche Nachteile für die Kaserne, von schlechtem Ruf bis zu möglicher Schließung. Somit wären Garnisonen gut beraten, ihre GWDs vernünftig zu behandeln, und Ausbildner die ihren Job dazu verwenden, ihre sadistischen Lüste auszuleben, zu entfernen.

Weitreichende Wahlmöglichkeiten für Wehrpflichtige hätte auch einen gesunden Wettbewerb zur Folge, diesen ein Angebot zu machen, welches Wehrpflichtige als sinnvoll erachten. Dadurch löst sich das Problem, dass manche Kasernen bzw. Dienststellen den Wehrpflichtigen nur sinnlos Lebenszeit stehlen, auf natürliche Weise. Die guten Kasernen und Dienststellen mit vernünftigem Angebot werden genug Leute bekommen, die schlechten ohne vernünftigem Angebot zu wenige. Somit werden sich die schlechten etwas einfallen lassen müssen, vernünftige Angebote zu erstellen. Die Gesetze freier Marktwirtschaft haben sich großteils bewährt, warum also nicht auch mehr Marktwirtschaft für die Wehrpflicht?

Natürlich ist es problematisch, wenn Wehrpflichtige alle paar Wochen die Kaserne oder Dienststelle wechseln wollen, weil sie mit nichts zufrieden sind. Um unüberlegte Wechsel zu verhindern, könnte man die Dienstzeit einen weiteren Monat verlängern. Wer also einmal wechselt, macht 7 Monate Präsenz- oder Zivildienst, wer 2 mal wechselt 8 Monate usw. Das sollte ausreichen, um nicht zu unnötigen Wechsel zu motivieren. Wer aber zum Mobbing-Opfer geworden ist, der nimmt gerne einen Monat längere Dienstzeit in Kauf, um dem Mobbing entfliehen zu können. Ich hätte solch ein Angebot seinerzeit sehr gerne in Anspruch genommen.

Dass solch ein Mobbing, wie ich und viele andere Grundwehrdiener (und sicher auch manche Zivildiener) es erlebt haben, einem demokratischen Rechtsstaat des 21. Jahrhunderts unwürdig ist, war mein stärkster Beweggrund, mich für ein Berufsheer einzusetzen. Da diese Option leider auf längere Zeit nicht mehr zur Verfügung steht, muss das Bestreben dahin gehen, Mobbing im Zuge der Wehrpflicht zu unterbinden. Meine Vorschläge würden dazu beitragen.

mp121102a

is the working title of my first entirely self written song, consisting of 2 guitars (lead & rhythm), bass and drums. As of now, it doesn’t have a (real) title, vocals or even lyrics yet.

Watch and listen to me, as I’m playing the song:

Rhythm guitar, bass and drums which you hear in the video are exported from the original Guitar Pro 6 file. Guitar Pro is the awesome piece of software which I used for composing the song.

For audio recording I used Audacity, another great software. To combine video and audio, I used FFmpeg.

Hopefully this is only the first of many more songs. I have a few other songs started which only wait to be finished. My goal for 2013 is to get quite a few ready, so that maybe in 2014 I can plan to record an album, a dream that I’ve been having for at least the last 15 years. Looks like I am now one step closer.

mysql.com goes HTML5 video

In my role as Web Developer for mysql.com I have always tried to advocate open web standards, and to adopt good new web technologies as early as possible. And I believe that an open source product like MySQL owes the World Wide Web open web technologies, rather than content which requires proprietary plugins. Which is why it’s a pleasure for me to tell you that demo videos which used to require Flash have been replaced by new demo videos which work with HTML5 video (and using Flash only as fallback for old browsers).

Take a look:

… or even better, take a look at the real thing at http://www.mysql.com/products/enterprise/demo.html.

Needless to say, not only the fact that these videos are delivered as HTML5 video is interesting, but of course also what the MySQL Enterprise Monitor can do for you, like analyzing your queries, or monitoring your replication and alert you when things go wrong.

And stay tuned, there is more to come in the future!