dangermaus is currently certified at Journeyer level.

Name: dangermouse zenovka
Member since: 2003-08-14 09:12:50
Last Login: 2017-04-20 12:53:44

FOAF RDF Share This


My first toaster was a C64, I learned BASIC by programming with my father and by copying programs from magazines in the period 1986-1993. Then, I wrote some Turbo Pascal programs on DOS and Windows 3.1 and 95 between 1990-1998.

In 2002, I had a small 80486 running with Mandrake Linux in my bathroom, but then I took a shower, the keyboard broke and killed the server with a flood of nonsense :-).. My laptop is called andromeda (the only deep sky object one can see with a binocular in a dark clear sky) and runs Gentoo Linux. My server was mainly built by Ninja and runs Gentoo as well.

I earned a master in CS with focus on computational sciences, astronomy and cryptography from ETH Zuerich in 2004. My ham radio call is HB9TVM. I do lot of things in parallel; although most of them fail (99.99999%), I do not worry too much :-). I learn by mistakes, and sometimes I repeat them, too.

My favourite programming languages are Lazarus/Freepascal (Delphi), C, C++, PHP and Java.

The three Open Source projects I am involved with:

I also have a ohloh profile listing my Open Source contributions, a Khan Academy profile and a Hacker.org profile. Latest on Twitter.


Recent blog entries by dangermaus

Syndication: RSS 2.0
15 Feb 2015 (updated 16 Feb 2015 at 08:28 UTC) »
There is a hidden and invisible world that passes through us at crazy speed in any moment, it is the world of radio waves. At midnight, the radio silence is broken only by whistles and by electrical discharges of a distant storm...

An ear to listen to the weather birds
I read in Internet about the Quadrifilar Helix antenna (QFH) built by Chris van Lint with coaxial cable RG6. G4ILO did a version with RG58 coax cable and having plenty of this cable around (which was earlier used to power the first Ethernet networks at 10Mbit/s), I decided to build my own.
I started to cut old PVC tubes. My first mistake was to misinterpret the symmetry of the antenna. It is important to understand that the big loop (B) uses supports of 38cm and that the small loop (S) uses supports of 34cm and therefore the mast tube of 57cm supports 3 tubes of 38cm and three tubes of 34cm.
It was easy to soldier braid and signal part of the cable together as described by Chris, but it was very difficult for me to soldier only on the braid. Each time I checked the integrity of the cable with a voltmeter, I still had an unwanted resistance of 3 to 20 MOhm, instead of reading infinite MOhm on the voltmeter.
To solve this problem, I used a BNC connector with the needle carrying the signal removed and only the shield connected in combination with a T-BNC connector to avoid soldering on the braid.
I then checked with my antenna analyzer (the Mini VNA BT Pro) that the antenna was resonant as expected on 137 MHz, measuring a SWR of about 1.4, which meant that the circularly polarized QFH was ready to be mounted on the roof (after some simple impermeabilization for the top part of it).
Satellites transmit with circular polarization because waves travel better through rain, snow and clouds (due to the interference effect of rain and water drops) and also because the antenna orientation also changes in respect to ground, if the satellite is not stabilized.
Once on the roof, the antenna was connected to a Funcube Pro Plus Dongle. My current setup uses HDSDR and Wxtoimg with VB Audio Cable to relay the output signal of HDSDR to WxToImg. Also APT Decoder works well, but it needs to load Keplerian elements in text format (it assumes a .tlx extensions which needs to be overriden to .txt).
In the beginning, it is important to tune HDSDR with a shift between the tuned frequency of 27kHz and the Upper Spectrum Center Frequency (e.g. tuned on 137.100 with USCF on 137.137) and setting a large receiver bandwidth to 68KHz, because of whistles and artifacts created by the cheap Funcube receiver.
It is much easier to receive good signals when the satellite passes close to the Zenit (in the meanwhile I learnt to read the ephemerids). Weather conditions are not so important thanks to the circularized polarization of the antenna. Only if it is a windy day, I have some white noise lines in between of the pictures. Even with my cheap setup, I receive weather images without problems with a signal to noise ratio (SNR) of 25 dB and less.
In the beginning, we looked several times at black images of APT decoder, until once hacker Vir asked me if the monitor was dirty. She then realized that the image was not only black, as the dirt moved with the APT Decoder window. After proper denoising we had our first satellite image which you can see on the bottom of our QRZ page. By the way, the satellite NOAA 19 has an interesting story on Wikipedia, as it had an accident during manufacturing.
Writing for The Encyclopedia

Ilario of Wikimedia Foundation was so kind to travel until my small village in the mountains at the end of the world to introduce me and a good friend of mine to Wikipedia. I use Wikipedia a lot for work and fun, but never seriously thought I could contribute. Well, I will keep an eye if my contributions manage to survive there :-) Maybe at least in modified form...

Recently, Toni El Suizo, the bridge builder of the poor, held a conference here in my village, and when I visited his page on Wikipedia I was a bit disappointed because it was quite empty. In my eyes, he is a true modern hero. I therefore decided that my first contribution for Wikipedia will be about improving his pages in as many languages as I can. I did an essay in Italian for Toni and did my best to translate it in English. However, I would be glad if someone with native English could look at the Wikipedia pages of Toni and perform the necessary corrections.

Building an Ear to listen on the Magic Band

Following advices from Internet and from some QSOs with informed people like Marco, HB9YBQ, I built a 6m delta loop at the end of May with some PVC tubes, about 6m 11cm of earth wire, 1m 12cm of very old RG59 75 Ohm coax for television as matching part (velocity factor 0.79, measured with the miniVNA), old RG58 coax used in the first Ethernets about 25 years ago as transmission line and plenty of BNC connectors also used to connect computers in the very first Ethernet networks. It is fed on top as I think I need a high radiation angle because of the mountains. The antenna is directional and can rotate... I took instructions from this youtube video and looking at web pages around the web.

These are the antenna characteristics straight from the MiniVNA BT Pro which I used to cut the wire at the correct length: It is resonant at 50.422Mhz with a SWR of 1.24. On 50.125Mhz the meeting frequency for QSOs it has a slightly higher SWR of 1.3. Thanks to Gerry, EI9JU, QTH in Ireland, for the first QSO with this antenna :-)

Another little success: with Fun Cube Pro Plus dongle I could download telemetry data from the Fun Cube satellite, this only worked when the satellite was very high on the horizon (due to the mountains, of course).

Versioning any Database Type

While releasing deltasql 1.7.0, I did quite an effort to smash bugs. I believe 1.7.0 is a good release both for people who would like to upgrade and for people who would like to try it out. A test data set is installed by default, this should simplify the learning process to get deltasql working well.
22 Mar 2014 (updated 16 Apr 2014 at 07:31 UTC) »
They escaped from their cells by crawling through holes in the cell walls which they had dug with spoons over a year's time,
from Wikipedia

A Bitcoin story

It started with 300$, modifying perol's bitcoin bot. The bot was soonly attached to a mySQL database, and I learnt how Python can return several outputs from a function, unlike most languages. The bot kept polling the exchange each two minutes and was buying and selling with simple strategies. In the beginning the bitcoin was trading around 100$, so the bot was happy owner of three bitcoins from time to time. The bot had a short, mid and longterm strategy, too. At its height, the wallet contained 380$. The exchange fees were curtailing gains, too.
Then, the Silkroad affair came, where bitcoins were used to illegally trade drugs and weapons. Unfortunately, it was very windy and I missed the news of Silkroad also because the strong wind blew up three windows of my house and misplaced the satellite dish of my father. Nonetheless, we were fortunate, during the night the wind threw down the chimney of my neighbour on the street!
The Jack of all trades (and master of none?) lost about 180$ in one night. The strategy was to buy when the price was the lowest in the last three hours, and to sell when it was highest in the same timewindow (this was true for short term, for mid term and longterm the interval was simply higher). So, the bot bought and bought until it did not have money anymore. And the bitcoin lost half of its value in the meanwhile. This was an important lesson, which ended in implementing the stop loss mechanism on the bot. Some R code was added to estimate the value at risk of the portfolio.
The sourcecode can be found at src/playground/bots/bitcoin in the GPU git repository.
Well, the rest is history, I never bothered moving out bitcoins or money from the exchange, until mtgox declared bankrupcy. At beginning of February, I had about half a bitcoin. The coolness of Bitcoin is that it is anonymous, so nobody knows where my half bitcoin is now :-) (Update: I wonder if they used the Heartbleed exploit to steal my 1/2 bitcoin...)

Side note, a must read book to implement bots is Webbots, screenscrapers and spider.


Last year was fruitful for deltasql, I learnt dealing with Ajax to have dynamical forms. The navigation with frames makes it also easier to use. There are also two tools to create SQL from .csv files. deltasql 1.6.4 is fairly stable and seems to be used by the community.


For GPU, I mainly read books "CUDA by example" by Sanders and Kandbrot, and "Computer Algebra Handbook" by Grabmeier et al. Part of the client in Freepascal and lot of the server was implemented using a techique involving a simple XSLT transformation using the SQL to XML transformation by Darko Bunic.

I read also some more books including "The Higgs Boson" by Jim Baggot, "Excel VBA Programming for Dummies" and a book on the language R used in statistics.

Ham Radio

My ham radio activities boosted after HB3YGE was so kind to help me in setting up antennas and a radio shak (some pictures on QRZ). Best experiences to date where communicating with whole Europa in digital (using PSK31), learning to differentiate digital modes (RTTY, JT-65, PSK31 and PSK63) and decoding CW with the computer. I also did some phone in SSB, although I am still a bit embarassed with the Ham Jargon. I need more practice! I also found interesting signals like the Czech pendulum and the Buzzer. I happily listened to the Squeaky Wheel and the Pip. And I found info on the Russian Woodpecker, a cold war radar close to Tschernobyl. Goals for this year are to communicate with islands in the Atlantic, use JT65 in HF to come as far as possible, and buying a Funcube dongle to experiment with a usual satellit dish and hopefully to learn something in signal analysis.
23 Aug 2013 (updated 25 Aug 2013 at 05:52 UTC) »
"Nothing weaker than water. Nothing stronger than rock. Still, a slow flow of water can cut through mountains." ~Zen Proverb

Save the life of Zlata

Zlata is a 3 years old girl diagnosed with neuroblastoma cancer. If you want to help her, visit her crowdfunding campaign.

Crowdfunding campaign for the GPU project

The GPU project launched a crowdfunding campaign on Indiegogo. Help us to create an an Internet Supercomputer which offers computational resources for free to anyone including yourself!

The GPU II client, unlike version I, will be truly cross platform and based on severs running PHP/mySQL and clients compiled with Freepascal.
31 Dec 2012 (updated 31 Dec 2012 at 22:52 UTC) »
"You just keep pushing. You just keep pushing. I made every possible mistake that could be made. But I just kept pushing!" René Descartes 1596-1650

This is a report for the last months spent at the Open Source front and marked by several failures including the loss of the last server for the Global Processing Unit project. Hidden around the corner there was some success, too.


deltasql was essentially improved in two ways: copy&paste support via browser was added using the ZeroClipboard library. It is not necessary anymore to manually select the SQL script before copying it. With another library called OpenFlashChart (by John Glazebrook), we added graphs and pie charts to show how the complexity of a deltasql server increases over time. The number of scripts and of synchronizations are shown in a line chart, the size of modules and projects in pie charts. The latter improvement was picked up by Linux Magazine and deltasql 1.5.0 did a short headline also in the printed edition of the magazine.

Global Processing Unit

The change which gave me most pleasure was adding variable daylength duration depending on the day of the year and latitude to the Simclimate frontend. The effect is given by the inclination of the Earth rotation axis in respect to the ecliptic plane (the plane which contains both Earth and Sun). Earth inclination is called declination, too. Declination gives the typical bell shape to the sunlight projected onto the 360x180 degree matrix of the world's surface. I documented for the first time Simclimate here.

I finally documented the Orbit Reconstrunction and Analysis extension as well. The discovery of the likely cause for the Pioneer Anomaly puts an end to the development of this extension. The cause of the tiny anomalous acceleration toward the Sun experienced by the Pioneer space probes is probably due to the radioactive heat of the power source reflected by the parabolic antenna dish of the space probe, and not due to new Physics. For the rest, the domain www.gpu-grid.net is down, GPU clients do not autoupdate nor connect automatically to each other anymore.

Adventures on hacker.org

Our soliders fought epic battles totalling 229 challenges solved. Solving some of them gave me a kind of Zen flash. Some ROT13 hints on my favourite challenges follow:

Sbe 'Nalobql Bhg Gurer', V erprvirq na vzcbegnag gjrrg sebz rsr. Qvwxfgen urycrq zr jvgu 'Pnyphyngbe'. Urephyrf vf qrsvavgryl abg gur evtug rzhyngbe sbe 'Znvasenzr' orpnhfr vg vf gbb qvssvphyg gb frg hc. N oyhrvfu tybj ba lbhe snpr jvyy yrnq gb gur fbyhgvba bs 'Cbxr Zr'. Fbyivat 'Vafpehgnoyr' erdhverq zr gb tb onpx gb gur svefg punyyratr bs gur frevrf gb ercrng gur onfvpf. Va 'Wrhk qh Fbeg' V vzcyrzragrq gur gurbergvpnyyl snfgrfg nytbevguz, nygubhtu vg ghearq bhg gb or pbzcyrgryl birexvyy. Sbe 'Pnir Znfgre', qba'g ehfu ohg nqwhfg lbhe fcrrq. Naq fghqlvat Znqber'f fvgr urycrq zr jvgu 'Dhvar'.

I also wrote a Bash tool named discochal to compare challenge solvers. You can compare any two players and see which challenges where solved only by one player. Sometimes, this information is useful to infer additional information on difficult challenges (if you study a bit strengths and weaknesses of other players). The tool can be checked out from the GPU git repository following the instructions on the forum.

One of the challenges brought me to study the maths behind stereograms. The article "Bewegte Autostereogramme" in c't Programmieren 3/2012 has an interesting explanation on how to create stereograms using the Kinect sensor!


Tapeworm is the fourth puzzle on hacker.org I am attacking (Runaway Robot, Crossflip and OneOfus being the first three), and here I miserably bit the dust. My automatic solver uses simple Depth First Search using hashes to detect already known boards and computing weighted shortest paths as simple heuristics, and barely solves level 40 because this puzzle is crazy deep. My beloved Virus managed to manually solve levels up to level 104. I had at least one good idea: to debug the code I inject into a html level template of Tapeworm my current board as javascript variable, and then look at the result in a browser as it would be a level on hacker.org. This probably works with other puzzles as well, but i never tried it before.

Firewall Analysis

I kindly received a configuration file of a midsize company to analyze. I discovered some interesting things, especially looking at the routing table. Many invalid IP subranges are all rerouted to the same server. Maybe a Nagios server (or one of its sensors) which is able to detect local port scans? On the DMZ there is a suspect IP address (with a SMTP rerouting for email notification), which might be a honeypot? An external security company reserved 20 IPs, specifying them one by one and called it HyperVM. Probably, they are monitoring the network from outside with 20 virtual machines! Amazing :-)

The LISP way

The challenge 'Cons Car' first, the book '7 languages in 7 weeks' later with Clojure, brought me to LISP and the LISP way of thinking. Although I am still looking for my own project to be developed in LISP, I experimented with the online book Practical Common LISP. I also read through the series on LISP by Douglas Hofstadter on old Scientific American issues. Looking at ways to replace the computational engine of the GPU project, I developed an interest in Computer Algebra Systems and looked at both Maxima and REDUCE which have a core in LISP. LISP was intentionally developed with the manipulation of algebraic equations in mind. One of the first conferences on LISP of its creator John McCarthy was about symbolic differentiation. The file sin.lisp of Maxima source package implements symbolic integration and references in the source code the original typewritten PhD Thesis of Joel Moses. LISP was the first language which introduced recursion and garbage collection, ideas later picked up by other programming languages.
The most powerful idea, which was never introduced in other languages, because if they would, they would look like LISP and simply become a LISP dialect, is that data and code are both expressed as lists and this gives to the language a particular plasticity. By using so called LISP macros (C/C++ macros express a different less powerful concept) it is very easy to extend the language; for example, try in any other language to implement a change that causes the programming language itself to be parsed in reverse order. In LISP, simply write

(defmacro backwards (expr) (reverse expr))

Now, you can sum two numbers with (+ 1 1) or more originally with (backwards (1 1 +))

And speaking of numbers: Common LISP natively supports big numbers, complex numbers (!) and conversion between numbers in an unrivalled way!
Another thing discovered by McCarthy is that in LISP, it is very easy to write an interpreter of LISP, no more than thirty lines are required to do it.

Other parallellization ideas

With LISP, I am looking to improve my understanding of (semi) functional languages. Stateless functions are easy to parallelize. One idea that popped up was running the Global Processing Unit on clients which would run MultiLisp and on top of them some Computer Algebra system. A Microsoft research paper, Gordon et al, Uniqueness and Reference Immutability for Safe Parallelism, points into another direction: variable qualifiers gives important hints to the compiler to compile code on parallel architectures. By the way, it is time to check the specifications of your graphics card: your dual core laptop might hide up to 100 CUDA cores which can run fragment shaders or vertex shaders in parallel! The magazine c't Programmieren 3/2012 has lot of source code to leverage this CUDA power!

Online book about Cryptography

The Codebreakers book features a comprehensive and interesting history of Cryptography, it just misses the developments at Bletchley Park because it was published before the documents were declassified. By the way, some more papers on Enigma by Alan Turing were declassified.

Broken Tire Story

When trying to reach the parent's house of Virus, the overloaded car hit a little stone. In the cockpit, I heard a loud bump and four minutes later we were at the house, greeted by the 'pffff' of the broken tire loosing air. I replaced the tire with a reserve one and then dedicated my attention to the sharp little stone down the street in the forest. Using shovel and pickaxe to remove the earth round it, I discovered that it was a big one, like the iceberg is just the tip of a huge block of ice. I thought I will never remove it, but being in holiday and not knowing how to use TNT, and where to buy it, I decided to give it a try. All of a sudden, I was able to move the stone a tiny bit, carefully leveraging with the pickaxe. Then another bit, I filled holes first with sand, then with stones of increasing size. About one hour later, I managed to remove the big stone and learned my daily lesson, namely that things which look impossible might turn manageable if worked out without pressure.

Wasp War and their Revenge

We found two yellowjacket nests hidden on the curtain of our balcony. Armed with a special spray (Gesal Protect), we decided to kill them all. I carefully read instructions on the spray can, but unfortunately missed to read the last sentence.
I dressed myself with jacket, scarf around my neck and gokart helmet to avoid wasp stings. It was a calm evening with no wind.
Then with an amazing jet coming from the spray at high pressure, I killed many wasps (counted the next day in daylight, they were 27). Doing the operation in the evening on the bare light coming from the apartment, I completely missed the tiny drops of insecticide which were in suspension at mid air. I breathed them, unaware that they were existing.
I felt like in Kafka's short story (the Metamorphosis) when I discovered with horror that the last sentence on the instructions was about avoiding to breath the insecticide (kind of obviuos, but you know... ehm)! Through the night, my lungs burned (the Prallethrin which stops air holes of the wasp?). The next day I almost had to stop working, I had dizziness and glows swirling in front of my eyes(the Cyphenothrin burning the yellowjacket brain?). Fortunately, the latter effect lasted only for twenty minutes, and the dizziness disappeared at midday and since then I am back human. The daily lesson thaught me this time that insecticides are really something to leave hands off, to be used with _extreme_ care, and I wonder how role they play in the scaring pollinator population decline.

Casino Adventure

I had the chance to visit a Casino: they gave us first a drink and then an introduction to the Russian Roulette and the Black Jack game. As premise let me mention that I never was lucky at games.
They gave us fifteen coins to test our understanding of Roulette rules. So, I put them all on Black, but the ball finished its trajectory to a Red cell. I lost all coins in one shot! The croupier and someone in our group laughed at me; oh man, someone who is so stupid, why not carefully playing complex combinations on corners! After three rounds with test coins on which I could not play because I already lost everything at the first, they gave us three real coins, each one worth five Swiss Francs.
Again, I put all three coins on colour (I think it was Red, honestly I do not remember) and won doubling them to six. I then put all them on Even and won again. I had now twelve coins and decided it was time to play Black Jack. Believe it or not, simply by playing Black Jack golden rule which was even written on the green table and saying 'Dealer must draw on 16 or less and stand on all 17s', I was able to increase my capital up to 27 coins. Fortunately, my group was now leaving for dinner and therefore I was forced to stop. I went to the bank to exchange the coins. They gave me 120 Swiss Francs but said, they can't turn the first three coins into cash because they are a gift from the Casino anyway. So, I have to play them or keep them as souvenir. I then looked myself around and found an old woman and gave the three coins to her. She looked wise to me and did not look them like a gift of destiny. So many people ruin their life and loose their wealth in Casino games because they do not understand that the randomness of the game is constrained by the rules with the ruler as ultimate winner (the Casino is the ruler).

Sal is my Khan

Peter Collingbridge published a tool to see personal statistics on Khan Academy. Freaks will like the feature to see how many minutes are needed to get the next Listener badge. I bought the book of Sal "The One World Schoolhouse" and found some interesting ideas. The first was kind of obvious for people actively using the academy, and it is about filling holes in education with videos. Then, there is the idea of mixed ages classes where older children can teach younger, and younger can have their superheros. Finally, I did not know that Sal managed to get three MIT degrees in parallel, avoiding lessons and just learning with peers on a bet on whom could do more courses at once!

Two incredible landings

We were all astonished, looking at the landing of Mars Rover Curiosity with sky crane and at the jump of Felix Baumgartner from almost outer space. After Space Shuttle's retirement there is new hope for advancements in space technology! Instead of expensive Soyuz vessels to return from the International Space Station, we could simply step out and jump from there :-) An incredible jump for a man, a huge leap for mankind!

Happy New Year, and many apologies for my English :-)

65 older entries...


dangermaus certified others as follows:

  • dangermaus certified gnutizen as Master
  • dangermaus certified mpr as Master
  • dangermaus certified pfh as Master
  • dangermaus certified brouhaha as Master
  • dangermaus certified Zaitcev as Master
  • dangermaus certified micahjd as Master
  • dangermaus certified tampe as Master
  • dangermaus certified elwell as Master
  • dangermaus certified fzort as Master
  • dangermaus certified cananian as Master
  • dangermaus certified gesslein as Master
  • dangermaus certified audriusa as Master
  • dangermaus certified stan as Journeyer
  • dangermaus certified StevenRainwater as Master
  • dangermaus certified MichaelCrawford as Master
  • dangermaus certified LaForge as Master
  • dangermaus certified joey as Master
  • dangermaus certified danstowell as Master
  • dangermaus certified DeepNorth as Master
  • dangermaus certified titus as Master
  • dangermaus certified Skud as Master
  • dangermaus certified sjanes71 as Master
  • dangermaus certified rkrishnan as Master
  • dangermaus certified joolean as Master
  • dangermaus certified Pizza as Master
  • dangermaus certified oubiwann as Master
  • dangermaus certified wingo as Master
  • dangermaus certified dan as Master
  • dangermaus certified wlach as Master
  • dangermaus certified Rich as Master
  • dangermaus certified vicious as Master

Others have certified dangermaus as follows:

  • mpr certified dangermaus as Journeyer
  • ebf certified dangermaus as Apprentice
  • jooon certified dangermaus as Apprentice
  • Liedra certified dangermaus as Apprentice
  • brouhaha certified dangermaus as Journeyer
  • hereticmessiah certified dangermaus as Journeyer
  • michael383 certified dangermaus as Journeyer
  • murajov certified dangermaus as Journeyer
  • fzort certified dangermaus as Journeyer
  • badvogato certified dangermaus as Journeyer

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page