Generating flight vouchers with LaTex

Learning LaTex was on my todo list for many years. Like most people of my generation, I learned wysiwyg text programs in school, and used them for a long time for most stuff that ended up on paper. Actually, to be exact, the first text processing program I learned in school didn’t fall into the wysiwyg category, but was DOS based. I think it’s name was “Farsight”, but I can’t find any information about it on the internet. Since I am no friend of proprietary lock-in systems, I switched from MS Word to OpenOffice a long time ago, and more recently to LibreOffice. But even though their file format is open, it’s still binary. I know, I know, Word and ODF offer textual formats. I think they are mostly XML based. But the last time, I looked at one of them, I could not believe how overloaded with useless trash they were. The most annoying limitation of binary formats, is when you want to store the documents in a version control system, and compare different revisions. I used html for a while for documentation purposes. Although it is very good for these textual diffs between revisions, I’m not artistic enough to make it good looking. Hence, I thought for a long time that LaTex would be worth learning.

Also, for a long time I wanted to automate the vouchers for our tandem flights at paraeasy.ch. Even-though I knew that this was a perfect match, I had too many other things to do. As I’m currently reading a book about LaTex, I have my perfect hands on exercise. Hence, I prepared a template tex file for the vouchers and one for the invoices. Then I wrapped a python script around, that handles the rest.

The traditional way to keep track of which vouchers are active, and which ones were redeemed, is to keep a list. But after reading all the buzz about smart property, I figured that BitCoin is actually a perfect solution in itself. I generate a unique BitCoin address for each voucher, and load it with some coins. That way I can easily check, if the voucher is still valid. In fact, even other pilots that fly for us, can easily verify the validity of our vouchers. Now the perfect solution would be to load it with the full value, but since the BitCoin price is still quite volatile, the risk would be too high. After all, I need to be able to pay other pilots in case of a BitCoin crash. So I decided to load the voucher addresses with half the value. That way I can better tackle the risk.

As an opensource believer, I pushed my scripts to github, hoping they might be useful for somebody. I didn’t go to full lengths, in making it a configurable drop in solution. So, if you want to use it, leave me a message, and I will help you set it all up, and make it more configurable along the way.

Now, what happens if somebody orders a flight voucher on paraeasy.ch?  After the customer fills in all the required fields, and presses submit, I receive an email with a html table containing all the information. I then save the mail with evolution to a folder as an mbox file. Next, I start the python script which performs the following:

  • Generates a new unique number for the voucher.
  • Parses the information from the mbox email file.
  • Generates a BitCoin address that contains the initials of the passenger.
  • Replaces the placeholders in the tex files with the actual information.
  • Generates a qr code with the relevant information, and a gpg signature thereof.
  • Generate pdf files for the voucher and invoice.
  • Add the new entry to the list of active vouchers.
  • Add the pdf files, the updated list as well as the encrypted private key for the BitCoin address to my private git repository.

The system is not finished yet, but it already looks like a big relief. In the future, it might also generate the email to send the pdf file back to the customer.

Categories: Paragliding, Software | Tags: , | Leave a comment

sweet dreams

For my last army service, I was ordered to Eschenbach SG near Rapperswil to help in an arsenal. It’s actually a long story, how it came to that. Compared to a regular service, it was very much relaxed. I could go home every night, which is quite nice, especially if you have a young family. So, every morning when I walked from the train station to the arsenal, I passed a carpenter which had a gorgeous beam bed on display. The beams had crack, and looked really old, but perfectly restored. It didn’t have a price tag, so I assumed it was expensive. And I was not in need of a new bed anyway, so I just remembered it, for when I would need one. That was three and a half years ago.

Our bed recently broke. No, it’s not because I grew so fat. People say, that the mattress and the slatted frame should be replaced after ten years. So it was almost in time. And now I remembered the bed frame from Eschenbach. They did not respond to my eMail, so I had a look around other stores and websites. I found out that these beam beds with cracks are trendy, and that they are mostly made of swamp oak. Finally I found what I was looking for at Möbel Riesen in Brunnen.

They didn’t accept BitCoin directly, so I had to convert the funds first. At the time, the excange rate on MtGox was a steady ten percent higher than with other exchanges. This was quite tempting, even though most people suspected liquidity problems behind the long delays since last summer. So I split the risk, and traded half through BitStamp, and the other half through mtgox. BitStamp was quick and reliable as always, while I still wait for the money from MtGox. Meanwhile MtGox filed for bankruptcy, and I might have to write that money off.

The bed frame arrived earlier than expected, while we had some trouble getting the mattresses and slatted frames in time. So we had to sleep in a funny arrangement for a few days. But now finally, everything is in place. The beams are actually quite heavy, adding up to about 250kg.

As I work in the development of the PointLine CAD, naturally, I was interested in a CAD drawing for the bed frame. The guy from Sprenger Möbel was very friendly, and sent me a jpg, telling me there are no CAD files, as he draws everything by hand.

Categories: Family | Tags: , , , | Leave a comment

celebrating 2’000 flights

Last week, I didn’t even realize that I completed my two thousand’th flight. Only when I updated my flight log book, I found out. I knew that I’m close, but that day I did lots of short speed flights, and one of them was the one.
For the first one thousand flights I needed only four years. I celebrated the event with a couple of friends and a big bottle of Champaign. It was in March 2006 from the Zugerberg, and I top-landed after twenty minutes.
Since I don’t fly as much as back then, the second thousand flights took eight years. I held up the tradition with the Champaign, though. Not on the 2000th flight, which I missed. Instead, we celebrated the 2005th flight today, after I did three tandem flights for Peter from the Rigi.
So here is a small statistic:

Gliders 61
tandem flights 265
speed flights 145
flights with competition gliders 540
countries 20
flying areas 164
Categories: Paragliding | Tags: , | Leave a comment

Lauchernalp Speedflying

During our family ski holiday last week, I went one day to my favourite speedflying location: the Lauchernalp in the Lötschental.

Enjoy the footage:

Categories: Uncategorized | Leave a comment

My grandfather

Yesterday, my grandfather passed away, roughly 40 days before his 95th birthday. After he suffered a first light stroke ten years ago, his condition slowly worsened. In the end he was not able to walk or eat on his own, and didn’t recognize anyone. But up to age 85, there was no sign of slowing. I sometimes went with him to his friends to assist, when he installed satellite tv receiver or video recorders, and explained them to his retired friends. He was a big fan of technology, as such he used photo and video cameras long before the people of the next generation started to do so. We recently watched a small documentary video he filmed in 1973. But what impressed me the most, was the self built radio that he demonstrated to me when I was a kid. He must have wound those coils in the first half of the last century, when radio waves were more like magic to most people.
Categories: Family | Leave a comment

Smart Radios

For a couple of years I have been running mpd (music player daemon) on an Alix, connected to a stereo in the office. The Alix runs headless, but I have a variety of options to control it: gmpc on the notebook, Droid MPD client on the phone and fookebox in the browser. Over the years I read a multitude of articles about home built jukeboxes based on something like a RaspberryPi, a simple display and some buttons. I thought, that’s cool, but I didn’t have the requirement for this in the office.

Some time last year, I thought it would be cool, if my wife could access our full music collection from the kitchen. As her old radio started to disintegrate, I had an idea for christmas. So the first idea was to build something myself. But the kitchen is not the ideal place for something thrown together with loose wires, and I couldn’t expect her to reboot it in case something locks up. So I was looking for something pre-made and a bit more consumer friendly. I didn’t want to loose freedom though, so the ideal would be if it was also based on mpd. I didn’t find the device I was looking for, but the device that came up most in my searches was the UE Smart Radio from Logitech. It seemed to cost a lot more than a RaspberryPi with some additional components, so I looked further and went to several shops. The selection in this area is very sparse, which surprised me a lot. All the other devices in the shops, except the insanely expensive ones, sounded like through a long cardboard tunnel. But the UE (Ultimate Ears) one, although mono, sounded really good. Another feature that made it stand appart from much of the competition is, that in addition to the WIFI, it also offered connectivity through an ethernet port. This one was a must, since my Wife is very concerned about electro smog.

So I went for the UE Smart Radio from Logitech. It was received well by my wife. At first we only used it to listen to live streams of radio stations around the world. It worked perfectly for that. But connecting it to our music library didn’t work out so well. I assumed, It could just access the files over a network share. So I set up a samba share on the server that contained all the music files. After all, that’s how the media players fetch the movies as well. I just couldn’t figure out how to find the music from the radio. All it said was to install some proprietary software on the computer and the phone. I don’t particularly like such proprietary stuff, and always try to find ways around, but this time I had to bite the bullet. The android app gave some additional configuration and remote control options, but insisted on installing also something on a computer to be able to stream the private music collection. So I had a look at http://www.uesmartradio.com. It offers the download only for Windows and Mac. Now this is where I started to question the purchase. I agree that some clueless managers might be familiar with only these two options on the desktop. But do they really insist on everybody having their desktop computer running just to listen to their music in another room? No way!!! I think by now at least a NAS system if not a small server is in most households that care to have their music available electronically for devices like this radio. And what operating system do they usually run? Windows? MacOS? They must be joking!

At first, I wanted to dissect the Windows package in the hopes to being able to reverse engineer it to get something workable. But all information I found about that package on the internet, indicated that it is an unholy mess consisting of a multitude of dlls and executables. So I checked on the MacOs package. The information I found indicated something perl based and much cleaner than the Windows version, but I had no tools readily available to decompress it. Luckily I found a forum thread where other people already complained about the very same issue. One pointed out that there are unofficial nightly builds for a range of other targets, one of them being a debian package. That solved the problem for the moment. Installation was smooth, and so was setup and operation. The only soar point that remains was also confirmed by the Logitech support: The packages for the more useful platforms are not officially supported and they don’t know if they will continue to build them at all.

K810 Bluetooth Keyboard

With a keyboard also from Logitech I had a similar issue. I have always preferred standards such as Bluetooth over proprietary protocols such as Logitech’s Unifying. So I was delighted when I spotted a slim, nice looking bluetooth keyboard in a store some years ago. It was meant for the iPad, but I thought, if it’s bluetooth, it should work with my computer and phone too. Pairing was no problem, as was operation under Android. The problem arose when I wanted to use it with the Computer. The keys that were there, worked perfectly, but the problem was the missing function keys (F1 – F12).  Without them it’s very hard to operate just about any debugger in an IDE that I know of.

So, I was even more delighted, when I discovered the K810 in a store last year. It can pair with three devices, and easily switch between them. So I could for example use it with the workstation, the notebook and the phone without having to re-pair each time. The first one I bought was for the office. And I became a huge fan of this keyboard. So I bought also one for at home. I noticed in the office, that the default mapping of the function keys is awkward to say the least. By default, the alternative functions like the brightness of the key back light or the multimedia controls are activated, and to use the regular function keys, you have to press the FN key. It’s hard to guess what they smoked when they decided to make this the default. Imagine your mother wants to refresh the page in her browser by hitting F5 and instead the keys get brighter. Or imagine she wants to rename a file by hitting F2, and instead the keyboard disconnects from the computer and sends subsequent key-presses to the phone. Let alone operating a debugger. Luckily this setting is easy to change with the Logitech SetPoint software….. unless …. there is no SetPoint software for everything but Windows and MacOS.

Luckily somebody already reverse engineered the relevant information, and compiled a small utility program, that corrects this setting. Thanks Mario for sharing. Your utility saved my day.

Categories: Projects, Software | Tags: , , , , | Leave a comment

Mountain Wagas

Every season has its virtues. What I like to do during the winter season is Wagas games, and the Fronalpstock is perfectly suited for that. Wagas are usually performed by flying close to sand dunes in the constant sea breeze, but powder snow is just as soft as sand. Instead of the constant sea breeze for soaring, we have some altitude difference in the mountains. Well, to be honest, the snow didn’t look particularly soft last Sunday, hence my Wagas games ended up being even more cautious.

Here are some pictures:


And a video:

Categories: Paragliding | Tags: , | Leave a comment

vim meets VisualStudio

There are two camps of neckbeards: Those who use emacs, and those who use vi or vim. I can’t tell which is better, and most of the arguments seem to be rhetoric. Until about three years ago, I perceived both as insufferable. I was however curious to learn either of them. The question was which one to pick. During my uncertainty, vim was praised more on hacker news. So I gave it a try. At first, it was awkward to work with, but after a while I managed to get along. People often tell how blazingly fast you are editing with vim. But for a long time, I was not nearly as efficient as with other editors. At the moment I’m reading the book “Practical vim” which has a ton of good tips. It seems the flood of shortcuts is never ending. In a way memorizing more commands and shortcuts is like having more keys. That kind of reminds me of an article, I once read. It compared working with a GUI vs on the console to listening radio vs playing piano. I can’t find the article right now, but it had similar reasoning as this one.

So I’m constantly improving my vim skills. In the meantime I’m about on par with how efficient I am at using the style of editors, that I have been using for two decades. To improve further, I thought I would need to practice more. So the natural progression was to use it on the job. For work we use VisualStudio, and unless I could easily compile and debug out of vim, switching back and forth would be counter effective. So I was thrilled to find out that there is a plugin to bring vim style editing to VisualStudio. I only just started using it, but it certainly looks promising.

Categories: Software, Work | Tags: , , | Leave a comment

We have been using passwords for too long

Every time I have to register to a website using a password, I grow more annoyed. Passwords were fine when you only had one, to log in to your corporate mainframe. But these days, computers are better at cracking passwords than humans at remembering them.

It only gets worse with the more sites you maintain profiles. You shouldn’t use the same password all over. If it was hacked, your entire online identity could be compromised. And nobody can remember good strong passwords for every site he visits. Password managers are no solution. You need to have them with you all the time. They are protected by a master password. So if an attacker can get hold of your database and your master password, which is easily attainable with a trojan, then good luck. He even gets a list of sites to visit.

OpenId and OAuth are a step in the right direction. In theory, you could maintain your identity with a central entity, and use it as a proxy to authenticate you. You have to choose that central entity that manages your identity well, as is can now track your every move. Hence, It would be best, if you could host it yourself. But it is usually still only protected by a password. Since you now only have to remember one, it’s easier to choose a strong one. But again, if an attacker gets hold of your password, he can impersonate you.

So, we need hardware based two factor authentication (something you have and something you know). For about one and a half years I’ve been using a CryptoStick for said two factor authentication. It works great for email, files, ssh, package signing, full disk and disk image encryption, but I couldn’t figure out so far how to use it for web authentication. They mention a service for a SmartCard backed OpenId. That would be just what I want, but I couldn’t figure out how to make it happen. Read more »

Categories: Projects, Software | Tags: , , , | Leave a comment

an ultrabook for developers

My old netbook still runs, but it shows signs of senility. I have been thinking of a replacement for a while, but as it still worked, that was constantly postponed. When I first read about project sputnik, I thought this is great news and I want one. The device that followed looked very nice, but was a little bit over my budget. Only when the value of BitCoin rised to new hights, I ordered a Dell XPS13 developer edition. The dell representative told me that they don’t YET accept BitCoin for payment, but he was well aware of what it is. Apparently the device shipped from Asia. Since I didn’t know that, I waited eagerly and checked the status every day. After it was in delivery already three days after ordering, I didn’t understand why UPS didn’t even receive the box more than two weeks after that.

The device is really slick. I had no issues so far, not even with the graphics driver. That is also why I wanted this device that comes with ubuntu, and fully supports it. All the drivers are in the vanilla kernel. The graphics card drivers were always the culprit with my previous netbooks. They both had binary drivers when they came out, no 3D acceleration, and the situation degraded gradually. After the second OS upgrade I usually even lost 2D acceleration. Now that I have an ultrabook with a GPU that is apparently fully supported, I wanted to see how well the GPU performed. So I grabbed my very first OpenCL program to give it a try. I was glad to see, that the intel OpenCL driver was already packaged in the ubuntu repository, and that the 4400 GPU support was recently added. This situation is much better than when I started with OpenCL. But I soon realized that this GPU or it’s driver doesn’t support the kind of memory sharing that I used in the example. So, I had to slightly rewrite the host program, no big deal. On the other hand, it would support double precision floats which my geforce in the workstation doesn’t. But after that, I found out that this tiny ultrabook outperforms my five year old workstation by a big margin on CPU and GPU. And that is by using only a fraction of the power. Then I applied the same changes to my GPU accelerated ray tracer. The ultrabook ran the homework image in 15 minutes. So this one was a bit slower than the workstation.

In general, the experience with the XPS13DE is just great. Everything is so responsive, totally different than with the Atom based netbook. The only thing I would have ordered differently if I had a choice was a bigger SSD. Although I was lucky already, If I had ordered a month earlier, It would have come with 128 instead of the 256GB SSD.

The setup was about as follows:

  • OS install with smart card backed full disk encryption
  • setup smart card authentication for ssh
  • checkout of my git home repo.
  • software install with my setup script that adds ppa repositories and apt-get installs everything I need
  • Checking out all source repositores (git and hg) that I usually work with that are not already submodules of my home repo
  • integrate the plasma-desktop into unity so that I could still use the bitcoin plasmoids. But the experience with this integration was not so good, so I reverted that. I will look into writing a screenlet for gnome.
  • syncing the git repos for photos and music. They are why I would have wished for a bigger SSD.
  • syncing the BitCoin block chain

I’m grateful that the BitCoin price surge gave me the opportunity to “vote with my wallet“. Otherwise I would maybe ended up doing the same as last time: buying a cheaper model with a mediocre operating system that I don’t want. That would send the wrong signals, and reinforce the vicious circle. At least Dell has realized that people want good hardware with good linux support. Yes, people are willing to pay a premium for good hardware support for a free and open operating system.

Categories: Software, Uncategorized | Tags: , , , , | 2 Comments