Game modding with pen and paper

I have lots of good memories from youth camps. Some involve playing Donkey Kong and Mario Brothers while sitting on trees. Another classic video game was Asteroids. When I recently read an article in a German magazine about building an Asteroids clone with an Arduino and an OLED, lots of old memories resurfaced. The source code was provided, and the build was simple. As the control was used as digital, I didn’t use an analog joystick. When I gave it to the kids to play, they didn’t share the same enthusiasm that I had back then. But that’s probably because they grow up with lots more tiny computers than we had. So I wanted to involve them some more, and give them a sense of how this thing works. I don’t know how well they understood, when I explained them the concept of a pixel.
So I grabbed pen and paper, read the source code and drew the pixel art. Next, I told them they could modify the images to their liking, but still preserve the mechanics of the game. It was essentially the spaceship with one frame, the asteroid with three frames and the explosion with four frames. Seven year old Levin understood immediately, and painted his versions. For five year old Noah it might be a bit early, but he also participated enthusiastically.
All I had to do was transform their paintings back into source code and load it onto the AtMega chip. Now they were hooked a lot more to the game than before.

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

drive in cinema

The last time I was in a drive in cinema was about ten years ago. At the place I was in Volketswil, they no longer organize these events. So I was looking from time to time for another place. The ones I found were too far away. Then I saw an advertisement for Hinwil. It is close enough and on a TCS training area. The slope towards the screen seems to be perfect. We chose a movie that we could watch with the kids: Alvin and the Chipmunks: The Road Chip
Because we expected a ton of people, we made sure to be there early. But to our surprise only about 20 cars were lined up. So we got a really good spot in the center of the front row. They didn’t use a projector, but a huge LED wall. That was really valuable for the afternoon kids movie. We tuned the car audio to the provided frequency, and enjoyed the movie.
They had food and drinks and VIP pickups with cushions. The whole event was really well organized. I hope they had more people at the evenings so that they will also organize the event for many years to come.

Categories: Family | Tags: , | Leave a comment

Running hostile software in a container

Remember Skype, the once popular phone software? I used it a lot when we were traveling in South America, and international calls were insanely expensive. But I stopped using it when it was acquired by Microsoft, and they switched from a P2P model to centralized servers. From what I could observe, it gradually worsened from there, and I really thought I wouldn’t have to use it ever again. That was until somebody decided that we had to use Skype for Business instead of XMPP at work. There are a plethora of better alternatives. The one I use the most these days is Tox.

I use the Windows Workstation only for things that I can’t do on Linux. There is not much that falls into this category, besides VisualStudio compiling projects that involve MFC. There is Skype for Linux, but there is no official Skype for Business for Linux. So for a moment it looked like the Windows machine got a second task. But running an obfuscated malicious binary blob from Microsoft with known backdoors, that is online all the time on an operating system that can not be secured makes me uneasy. So I looked for a way to run it securely on Linux. The first thing I found was an open source implementation of the reverse engineered proprietary protocol as a plugin for Pidgin. That sounded good, but it didn’t work unfortunately. The second option was a closed source clone from tel.red. They provide their own apt repository with regular updates. That’s quite good actually, if you don’t care about closed source software, and the security of your device and data in general.

I learned about docker a while back, but only used it marginally so far. This was the first real use I had for it, so I started learning more about it. Copying and adapting a docker file is a lot easier than the articles I read so far made me believe. I found a couple of sites about packing Skype into a docker container, but none for Skype for Business. So I took one of the former ones and adapted it. To use my container, just follow these easy steps:

git clone https://github.com:ulrichard/docker-skype-business
cd docker-skype-business
sudo docker build -t skype .
sudo docker run -d -p 55555:22 --name skype_container skype
ssh-copy-id -p 55555 docker@localhost
ssh -X -p 55555 docker@localhost sky

The password for ssh-copy-id is “docker”.

Then log into sky with your credentials. You can do this every time, or you can store a configured copy of the container as follows:

docker commit skype_container skype_business

The next time, you just run it with:

sudo docker run -d -p 55555:22 skype_business
ssh -X -p 55555 docker@localhost sky

I left some pulseaudio stuff from the original container at least in the README file. I don’t intend to use it for anything but receiving chat messages. But if you want to, feel free to experiment and report back.

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

A holiday that didn’t start so well

Büssli

Our camper van suffered three ripped cooling water hoses in the last two months. Together with my brother who is the engineer in charge of maintaining our vehicles, we looked for the source of the troubles. Although not entirely sure, after a test ride I was confident that we found and fixed it. We even exchanged some hoses that looked worn as a precautionary measure.
So my wive and myself stuffed everything for our holiday on the Italian island of Elba into the van. Rather than at 11pm as initially planned, we left already at 4pm. That should give us some comfortable reserve to reach the ferry the next morning. Unfortunately, the cooling water warning light forced me to drive to a service area after only 30km. It was a ripped cooling water hose again. The guy from the breakdown service replaced it and performed a series of tests to make sure the cooling system worked properly. He told us we could move on, but we didn’t trust our Hippie Bus enough to drive all the way, after what happened.

XJS

So we returned home in order to perform another episode of How much luggage fits into a vintage grand tourer. With the Jaguar I drove trough the night. I did a few stops for drinks and toilet. After one stop in the early morning, not too far away from the port, the engine wouldn’t start. Oh shit, I had this a few years ago, and remember just too well, that the highly compressed V12 engine wouldn’t start with an ordinary bridging cable. Back then, the TCS guy had a super thick cable and I don’t know how many batteries in the trunk in order to kick start my car. So this time as a first measure, I bought a 500 Amp bridging cable at the gas station. We tried it with a couple of other cars. But through the narrow contact area of the clamps, there would just not come enough power to start the engine. So I called the breakdown service again. He came with an ordinary booster pack, and wouldn’t believe that an engine could require more energy to start than his booster pack could provide. So he brought us to his plumber shop. I asked them to install a charged battery. But they insisted that the problem must be somewhere else. So he carried us 20km to the next Jaguar repair shop. After a while they fitted a new battery, and all was well again. We could continue our journey with a six hours delay. We missed the ferry we booked, but it was no problem to take another one.

Elba

The time on Elba was great and without trouble. Water and air temperatures were very nice. It was the first time at the sea for Noah. He insisted on bringing his best shirt: “Mom told me it is only for special occasion. I’m going to see the sea for the first time. That is very special to me”. With Levin we were at the Dune du Pyla when he was 19 months old. He only remembered what we told him, and the photos we showed him. The water was super clear and flat for the most part. Only the last two days we got some small waves. To see all the beaches and caves, we went on a full day boat tour all around the island. A couple of times the boat stopped, and we could go for a swim. Another day we visited the oldest city on the island that we still remembered from the last time 8 years ago. But for the most part, we enjoyed the beach. The guys that were next to us at the camp side told us that every time we were away, people would take pictures of our hippie bus tent. Also when I was driving the Jaguar around in Italy or parking it, I often heard remarks containing words such as “belleza”. Somebody liked it so much that he wanted a souvenir, and stole all four tire valve caps.

Trip back home

The drive home was mostly smooth. Only once we had some worrying moments. That was when I climbed a small hill on the highway, and right in front of me there was a plastic gas canister on the road. It would have been too risky to perform an avoidance maneuver. So I centered on it, and hoped it would slip under the car. Instead we dragged it along. I was releaved that only one hundred meters ahead was an exit. By driving the right wheels on the sidewalk for a moment I could get rid of it.

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

The legacy banks in Switzerland

Transaction costs

I have a separate bank account for my tandem flying hobby at the local bank where I live. I didn’t want a plastic card for it, and setting up online banking turned out to be too complicated. So I pay a CHF 3.00 fee for every withdrawal at the counter. That is, if I go to the branch at my home town.
But last week I wanted to withdraw some money near where I work, less than 30km away, at a branch of the same bank. The teller told me that he would have to make a phone call to the other branch, and that the transaction would cost CHF 10.00
That was too much for me. Considering that a bitcoin transaction to Australia (16’000 km) costs CHF 0.02, the transaction cost of the retail bank per km is more than 250’000 times as expensive as that of BitCoin.

Communication

In Switzerland we usually don’t tell each other how much we earn, or how much we have on our bank account. Swiss Banks even had a reputation of secrecy up until recently. Naturally when you communicate with your bank, you expect this to be confidential. So I asked my bank representative for his public key some years ago, so that we could exchange encrypted emails. His answer was that I would have to use the messaging in the online banking platform in order to enjoy encrypted communication. I strongly dislike to have to log into different web platforms in order to communicate with different people. Some banks even communicate with their customers through centralized unencrypted social media, thus voluntarily introducing a man in the middle. I just had to accept what they offered for the time being. Hence I used this messaging system to cancel my credit card last year. He asked me if I wanted to cancel right away, or just not renew it when it ran out in a couple of months. I opted for the later. But then it was renewed nonetheless. So I asked what went wrong, and to please fix it. The answer was, that I didn’t specify when to cancel. Of course I did! Whether the message disappeared from the system because of some glitch, or was deleted intentionally to cover up incompetency doesn’t really matter. Fact is, the communication channel failed completely. Accountability is an important part of communication. This incident cost a lot of trust that I had in my bank.

Stranded funds

But the story with the cancelled credit card didn’t end there. Because it was not cancelled in time. Some company where I used a service, renewed without my consent. Thus they charged the card that should have been terminated by that time. So I had to send a printed form for the chargeback to the card operator. It took some time, but the money came back to my card account. And for another half a year, I receive a monthly letter stating the balance would be reimbursed next month. I misinterpreted this that it would be automatically sent back to my bank account. But it won’t. I have to send them another signed letter by snail mail to perform the obvious. As if it was 1995, and the electronic signature on my email was not 1’000 more secure than the ink on the paper.
Maybe I’m just spoiled with how well everything works with BitCoin. But the legacy banks really could do a better job.
Companies that deal with BitCoin usually:

  • Have competent and responsive customer care
  • Offer real two factor login with hardware tokens
  • Encrypt and sign the eMails with OpenPGP
  • Execute transactions instantly, not only once per work day
  • Have reasonable fees, even if the volume is still ramping up
  • Care about the usability of their platforms

And where they have limitations, they are usually imposed by the legacy financial institutions.

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

Why I still have no new notebook

It has been more than 14 months since my XPS 13DE notebook was stolen. Ever since, I was on the hunt for a replacement. I have just some simple requirements that seem so difficult to meet:

  • Linux pre-installed
  • Payment in BitCoin
  • Swiss German Keyboard with back light
  • Ultrabook (slim and powerful)

The natural choice would be to go with the successor of the model that I was so fond of. Dell does accept BitCoin, but only in the US, UK and Canada. Unfortunately they don’t sell Swiss keyboards in those markets, and I don’t know where to get a keyboard to retro fit.

There are a few vendors selling devices that fulfill some of the requirements, but I found only one so far that can achieve them all.

The best choice at the moment seems to be a Librem13 or Librem15 from purism. The 13inch model has only an i5 processor, and no backlit keyboard. So I would opt for the 15inch model. They have difficulties getting the display panels. And lots of the devices they shipped internationally didn’t reach their destination. This an unfortunate situation, but they seem very friendly and responsive. From what I can observe, they give their best to resolve the situation as good as they can. At the moment It looks like I have to wait two more months to get a Librem15.

Here are some devices that I considered:

Model Linux BitCoin Keyboard Ultrabook Remarks
Dell XPS13 Developer Edition yes no yes yes Very nice device
Purism Librem15 yes yes yes yes Waiting for display, and shipping problems
Tuxedo yes unknown no yes Only German Keyboards
Why yes no yes yes Out of stock

If you know of a device that fulfills my requirements, and is not listed here, please tell me.

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

A new era for eCommerce

OpenBazaar went live a short time ago. Even if it still has some rough edges, it offers the best user experience ever for buying or selling something on the internet.

I installed the earlier beta versions last year with great interest. But the developers decided that the core of it was not good enough, and started over from scratch. It still looks somewhat similar on the user interface side. But by looking at the sources and architecture, you can clearly see the difference. The old version was easy to run directly from the sources. The new one uses too much stuff that I’m not familiar with, so that I have to rely on the deb package. This in turn works flawlessly. The only thing that’s missing is a repo, so it would upgrade automatically.

Enough about the technicalities, let me describe what it’s all about. It simply is the easiest and most convenient way to buy or sell something online. No annoying insecure logins, no expensive or slow payments, no complicated shop to set up, just plain and simple.

After you installed the desktop client, you set up your profile which will take five minutes, is very simple, and has to be done only once.

Then you have the option of setting up a store. That is even easier than configuring your profile. Adding an item takes about a third of the time it would on ebay.

If you want to buy something, you can either browse through the listings, or search by tag. When you found what you want, you click on it for closer inspection. If you want to buy it, click the buy button. And that is where the real magic starts. Payments are in BitCoin (the magic internet money), that has arbitration built right into the protocol. You can either send the funds directly, or select an arbitrator from a list. Central services like ebay have only one arbiter service, and from what I read on the internet they are usually not that interested in finding a good solution. In contrast, here you can select from a list of moderators. The moderators can set their fees individually, and build a reputation. Thus a healthy competition among them should arise.

Ok, you selected a moderator, and the delivery address from your profile. After you confirm, you are presented with the familiar qr code that you scan with your mobile BitCoin wallet, or click the link to pay with a desktop wallet. In doing so, you send the coins to a multisig address. That is like a blocking account, but it was set up fully automatically, individually for every trade, and without fees. Once you confirm that you received the goods and are satisfied with them, you akknowledge it. The funds are then immediately released to the merchant.

Should something go wrong, you open a dispute, and the selected moderator will try to find a solution that all parties involved can agree upon. He might ask for a video of the unboxing, tracking information or whatever could help in resolving the dispute.

Now lets look at the merchant side. Up until now what you had to do if you wanted to open a small store on the web involved : buying a domain name, buying web hosting, setting up a website with a store, get a merchant account at a bank and a card processor … way too complicated!

All you have to do with OpenBazaar is checking a box in the settings, and start listing your items.

As it is fully decentralized, there is no central authority that could censor. This is great in many respects, but it could also be annoying if you get to see offers that you rather wouldn’t want to even know about. Early on people speculated if it would become the successor of the silk road. I also was worried that this aspect could ruin the great platform for the rest of us. But the developers came up with a brilliant plan: The nodes talk to each other over UDP. While it caused some headaches for NAT traversal, it can’t be routed through TOR. Hence it is easy to get at the real IP address, and if really bad stuff is involved, the police can ask the ISP for the client’s name and address. I truly hope this is enough to keep the platform clean. There were some reports of drugs listed on the first few days. I don’t know if it was for real, but everyone seems to agree, that this is a stupid idea.

If you did not install OpenBazaar yet, you can still browse the listings at : http://bazaarbay.org/

For example, my store is at : http://bazaarbay.org/@ulrichard

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

Ultra short throw projector

Watching TV can be really expensive if you turn on the TV only for a couple of hours every year. We still have to pay the full CHF 460 annual fee even if we use it only 4 to 5 hours a year. That’s an insanely high CHF 100 per hour. What we do more often is watching videos on the beamer. I enjoy the big screen experience even if the picture is not as sharp as the fancy new 4k TV’s that you see in every store now. But lately our old beamer started accumulating pixel errors. The LED lamp of the five year old Acer K10 was still perfectly fine, but the DLP chip wore out apparently. As it also only supported analog signals, it was about time for a replacement. I wanted something bigger, brighter with at least FullHD resolution. But then it would no longer fit into the small wooden box under the ceiling. So a bit further back, it should be possible to get the cabling from the fridge. This turned out to be not as easy as I first imagined. That’s when I found out about ultra short throw projectors. They make all the cabling much much easier. Instead of transmitting the signals across the room, everything is conveniently in one place just like with a regular TV.

Because my wive wanted to be able to watch TV (just in case) and our old TV was not working any more with everything switching to digital, I decided for an LG PF1000U. Most ultra short throw projectors have only WXGA resolution. This was one of the few FullHD ones. As it later turned out, the built in TV tuner was of no use, being for terrestrial signals only. I had to buy a cable tuner separately.

As with most bigger acquisitions, I checked where I could buy it with BitCoin. Unfortunately, I couldn’t find a merchant in Switzerland. And the offers from Germany seemed like too much hassle with customs. So I ordered from a regular Swiss retailer, and paid using bitwa.la.

Watching movies with it is really a pleasant experience. The picture is a lot better than before, and it does 3D very well, even with $12 shutter glasses from China.

Compared to my very first beamer that I built myself from an overhead projector and a flatpanel monitor, it’s worlds apart…

Categories: Family | Tags: | Leave a comment

Winter is not over yet

Once more I was lucky, picking the perfect day to go speedflying in Andermatt.
I could complete a couple of flighs like the following one:
click here for a screen filling version

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

SIX fintech hackathon

I learned of hackathons before. It sounded interesting, but either they were too far away, the topic was not interesting enough, or the date was already booked. This time was different. The topic is really what made it interesting enough. FinTech is about new technology in finance. I’m sure there was innovation in the financial industry in the last 50 years, but it was not very visible, and not as fast as in other industries. Recently I read about an employee in a bank that was asked upon his retirement, what was the biggest change in the last 40 years in his job. His answer was : “air conditioning”.

With the advent of BitCoin, the financial sector started feeling some pressure to innovate. I don’t really know how the term FinTech was born, but this all might have contributed. So one thing was clear for me about the hackathon from the beginning: The project had to be about BitCoin.

SIX is probably one of (if not the) biggest service providers in Swiss finance. They run the Swiss stock exchange, most card terminals in brick and mortar shops and PayNet where people can receive electronic invoices in their online banking. These are only the most visible products. They organized the hackathon for the first time a year ago. This time it was in two locations: Zürich and London. Watching last years videos I realized that the event would be organized much better than I expected. And the actual event was even better than the videos promised.

So I went to the Schiffbau which is a former ship building factory turned into theater. Everything was prepared, and we were welcomed with a dinner. The opening ceremony included a very entertaining speech from an editor of the Wired magazine. Next were presentations for the four workshops. I watched “Blockchain, Smart Contracts and Beyond” and “Cognitive Computing in Fintech”. Both were interesting, but not exactly what I expected.
Some teams were already formed, the others went to the match making session. Everybody who had an idea for a project could present it in a few sentences. Then the teams were formed. The Idea I presented to implement a bridge between PayNet and BitPay didn’t spark a lot of interest, so I helped implementing another endeavor.

Our team set out to implement a bridge between PayMit and BitCoin, thus we named it BitMit. I knew the name was familiar, but it took me a while to remember that BitMit was also the long defunct Marketplace that worked like eBay, but with BitCoin. The responsibilities were quickly found: Iwan would implement the IOS app, Mark would implement the management dashboard, Roger was responsible for the Presentation of our project and I implemented the backend.

IOS App
We received an API for PayMit that came with an example app. The app had buttons for buying certain products. So Iwan replaced the buttons for different denominations of popular crypto currencies. When a button was clicked, the app would first execute the payment using the PayMit API and then communicate with our BitMit backend. Finally it displays a receipt including the BitCoin transaction ID. Apparently working with Apple’s XCode is a very special experience that is far from intuitive.

Back-end
The back-end was responsible for providing a simple API for the IOS app, interacting with the BitCoin blockchain and managing a BitCoin hot wallet. We chose python and flask to do the task. Most members in our team were familiar with python and flask. I only implemented a very small project with flask a few years ago, but that knowledge was almost enough for the task at hand. I wanted to make use of electrum servers to have it lite weight. But Friday and Satturday we wanted to use the BitCoin testnet, and unfortunately there are no electrum servers for testnet. So I went with BitCoinCore.
At first we were not so sure where the backend would run. My notebook would be good enough for the time being. But then the guy from IBM offered to have it running on their cloud. He helped me setting everything up. When connecting with ssh to the ubuntu machine, I didn’t even realize that it ran inside a docker container. And the beast was fast! With the 48 cores and a fast internet connection, the BitCoin blockchain was synchronized in less than six hours.

Management Console
Compliance and auditing is very important for Banks. Thus our Service has to have a means of keeping track what is going on. Mark implemented the front-end using React. I certainly heard this buzzword before, but never saw actual code. It’s quite cool how simple the code looks when the task fits the framework.

Pitch
The presentation or pitch was allowed two minutes max. And a gong would terminate it abruptly on stage. The first iterations were roughly twice that long. It was hard to cut it down to the right duration. Too valuable all the information we wanted to communicate. Roger had a very good opening, which I don’t even know if it was still part of the final pitch.
Before entering the final, we gave the pitch a couple of times. Most important was the presentation to the jury. After the pitch the judges could ask us questions. One guy obviously had no clue about how BitCoin works. When this guy was later presented as member of the board and announced the winners, I felt our chances dramatically dwindling.
I took a video of the pitch Roger and Iwan gave for the final on the main stage. It is streaming from the ipfs.

Our project might be not the most novel idea, but it fills a need. Other projects that were presented sound very funny at first but after thinking it through you don’t think anybody would use it. Still others had only fancy slides but nothing functional to show. But there were also projects that made a really good impression. That is probably the expected outcome from a hackathlon.
For me it was a fun and entertaining experience. I will surely participate in other hackathlons. A big thanks to SIX for organizing the event and for all the good food and drinks we enjoyed.

An interesting fact that I observed was the computers used by the participants. About 90% of them were from apple. Most of the remaining computers ran some kind of flavor of linux. And I saw a single one running Windows.

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