Why I've lost faith in Bitcoin

MtGox has made a complete ass of themselves, yet the Bitcoin community lives on. It's perhaps the final proof that was needed to convince everyone that Bitcoin could survive even if the biggest exchange would go down (again). But while the MtGox fiasco has been going on, there's been several reports of other exchange sites getting hacked and losing their Bitcoins. Despite all this bad news, the community is alive, more and more sites are starting to acknowledge Bitcoin and governments are starting to make laws for it, legitimizing Bitcoin's existence. And if that's not enough, Bitcoin's brothers and sisters, the Namecoin, the Dogecoin and the Litecoin, are heading in the same direction too.

All of the points I've mentioned in the previous paragraph are exactly why I lost faith in Bitcoin. Exchange sites that are run by amateurs that don't set their security up properly are but a minor concern compared to the big two: government regulation and alternative cryptocurrencies.

Governments have proper themselves more and more capable at monitoring and controlling what's going on on the internet, and it's only going to get more extreme in the coming decades. It's not unthinkable at all that governments will be able to block any bitcoin transfer they like. Worse than that, governments already control and regulate the endpoints, making the whole anonimity angle of the thing a bit of a stretch. Again, this is only going to get worse in the future. Just like the internet as a whole, there was a time where everything was completely unregulated and free, only to have governments catch up with technology eventually to lock things down again. It's inevitable, and inevitably not the end of either the internet or cryptocurrency. People will just move to the next free-er alternative.

.. which is the second major problem with Bitcoin: the alternatives. It's always been viable to set up an alternate cryptocurrency; the entire project is open-source so you can fork it, make some changes and release it as you please. Many people have spawned their own cryptocurrency, but not many of those have enjoyed the popularity that Bitcoin has. The network effect is powerful to the extreme, and for a long time it was the main reason that I held faith in Bitcoin; alternatives just didn't take off. But I feel that's beginning to change. As governments regulate the internet more, Namecoin becomes the obvious next cryptocurrency (well, blockchain-based network to be more generic) to take off. The biggest surprise for me has been Dogecoin. I really, really wanted Dogecoin to fail. I saw it as a threat to Bitcoin because of its silliness and because the creators were not security experts like the creators of Bitcoin are. It was a silly coin robbing disaster waiting to happen, and the more people heard about Dogecoin, the less they would take Bitcoin or any other cryptocurrency seriously.

At least, that's what I thought at the time. It's been many months now and surprisingly (to me at least) Dogecoin is still around. They've proven something very important: Bitcoin is not the only cryptocurrency to get enough of a network effect to take off. And that little fact is going to make Bitcoin worthless, as it has been proven as just another fad. I wonder if the next step will be the state-sponsored cryptocurrency. It's easy for governments to control all the endpoints/exchanges for the cryptocurrency they're in charge of, and governments will also be able to generate enough of a network effect to get their currency to take hold. Perhaps eventually that's what every nation's currency will end up looking like.

Bitcoin and 'Satoshi Nakamoto' absolutely started the revolution. But now that it's started, it will continue even if Bitcoin is no longer there. That might still be a couple of years away, though. We'll see.

Posted in Tech | Tagged

Identity

I have a confession to make: the pseudonymous blog experiment is a failure. Two reasons:

  • There are too many things I cannot mention or have to be vague about in order to remain pseudonymous. Just like my on real blog, I find myself limited in the things that I am able to say, but for entirely different reasons.
  • Most (if not all) of the things I wrote pseudonymously in the past four months are topics that I would not mind having my real name attached to. In fact, for some of the topics I wrote about, having my real name attached to it would benefit me in real life, as they are about technology and would help promote me as a programmer.
The reason that this blog, the real blog, has been offline for so long is because my free trial on Amazon EC2 finally ended. Having already decided that I wouldn't blog here any longer I decided to take the site offline for the time being, while working on a static version that I could host on S3. I never got around to that though.

When faced with the choice of statically perserving the site, or keeping it active and allowing myself to blog with my real identity, it was pretty clear what I wanted. So here we are! Back in business! :) 

Posted in Tech , Thoughts

Don't bother the dev

This picture and this article describe quite accurately what it's like to write software.

 

Posted in Tech

The perfect toilet

I have spent too much time thinking about this. Here's what I want from a perfect toilet, in no particular order.

  • Perfect thermostat.
  • Ventilation, openable and closeable while sitting down. Preferably with mosquito net.
  • No nooks and crannies! Everything in the room must be visible while on the toilet. No spiders or cockroaches will catch me out!
  • Room for plenty of toilet paper. Must be in sight and not create and not create any nooks or crannies.
  • A very obvious lock indicator on the door so that other people don't rattle the door to see if someone's in there.
  • Entirely optional: Japanese toilet seat. I don't actually care much about this but would be nice to have.
  • A sink. A goddamn sink.
  • Soap. Some godforsaken liquid soap.
  • Noise isolation
That's all I can think of for now. Anything else?

Why isn't there a startup tackling the toilet problem!? Come on guys, there's a whole new market waiting to be explored!

Posted in Tech

Racing with the Rift

Today I spent some more time trying to get the Oculus Rift dev kit to work with netKar pro. It seems to be a fairly untrodden area as the only resource I could find was this youtube video, showing that you can use Tridef Ignition in combination with Opentrack to get it up and running. It took a bit of fiddling with Opentrack to get it stop switching the axes around, but after a while I was good to go. Fired up netKar Pro with the Osella on the Nordschleife and drove away.

It didn't go well. At all. Since netKar Pro doesn't support the Rift natively, any 3d effect is added on after-the-fact by the Tridef middleware. Tridef does a great job of splitting up the image and warping it so that even the peripheral vision looks quite decent, but the 3d effect in netKar is practically useless. With the 3d effect set to zero you're looking at what is essentially a 2D image, which makes it extremely easy for your eyes to suddenly unfocus from the track and focus on the pixels instead, confusing the crap out of you. The alternative is increasing the 3d effect using the Tridef OSD, but this doesn't seem to work very well for netKar Pro. All it does is make you see things double.

The other thing that makes netKar pro unplayable with the Rift is the head tracking. Opentrack just doesn't quite cut it, for several reasons. First of all, netKar Pro doesn't really do freelook when you're in the cockpit. It snaps to certain edges and also appears to have different acceleration for different viewing angles, all of which make it feel extremely unnatural and nauseating. Then again, we have no right to expect anything from the sim since it was supposed to support TrackIR-like devices, not VR headsets. I'm not sure if it's Opentrack's fault or netKar's, but there's also a noticeable lag between physical and in-game head movement. Lastly, there's no tilt support, so if you tilt your head sideways nothing happens in-game. That turned out to be only a minor nuisance compared to the other problems I listed though.

I'm quite sad about the game not being playable. netKar Pro is by far my favorite racing simulation, but none of the other sims I play (LFS, rFactor) have native Rift support yet, so they tend to suffer from the same issues. The only racing game I know of that does support the Rift natively is iRacing. I have to give props to the iRacing devs for supporting the Rift so quickly, and the support is very well done. iRacing compensates for the dev kit's low resolution by showing you the in-game screens 'in 3D', increasing the size of the screens so you can read the text easily, while using your head to look in various directions to see the rest of the screen. The 3D effect in iRacing is just right, and how all racing games should look like on the Rift if they implemented it properly. Unfortunately that's where the fun ended for me, as I found myself very unimpressed by iRacing as a game. I don't like any of the default cars and I don't like most of the default tracks. Since iRacing is a subscription model you have to pay for extra content, but I don't feel it's worth it at all. I took several of the free cars around Laguna Seca and some other tracks, but none of them felt right. It felt more like Gran Turismo than like a proper racing simulation. What a shame. Oculus Rift support does not outweigh quality of physics and force feedback, so I'm sticking to netKar Pro. I have high hopes for Assetto Corsa though.

The resolution of the production model Rift seriously worries me. When playing racing games you tend to look towards the horizon a lot, focusing only on a very small portion of the screen. I found that the effect of a low resolution screen was much more pronounced when playing iRacing or netKar compared to when I was playing Half Life 2. I'm now convinced that 1920 horizontal pixels will definitely not be enough for a consumer version of the Rift. The horizontal resolution per eye is just too damn low! It needs to be at least 2560 pixels, but what it really needs is 1920 pixels per eye. Even if that makes the device twice as expensive, I'd gladly pay extra for it, because resolution is set to become the Rift's one major flaw.

Posted in Tech | Tagged

Oculus Rift part 2

Short thoughts after playing with the Rift today:

  • NetKar pro doesn't look right at all using Tridef. This makes me very sad.
  • LFS doesn't work at all either.
  • Tridef supports Deus Ex: Human Revolution out of the box, but the 3d effect doesn't seem to be very strong at all. Framerate seems a bit poor and there's quite a bit of lag.
  • The same seems to hold true both of Tridef and Vireio: both 3rd party 3d drivers produce a noticeably poorer 3d effect than games that were written specifically for the Rift.
  • Notable exception: Skyrim. Skyrim looked awesome with Tridef.
  • A lot of the demos produced specifically for the Oculus Rift are of hilariously poor quality. The remaining few are incredibly impressive and will blow your mind. Alone in the Rift is so much win. Titans of Space is gorgeous as well.
  • iRacing seems to be the only racing sim with official support for the Oculus Rift. The way they dealt with the on-screen menus is very well done, though it takes some getting used to. The racing experience on the other hand is average at best, and for some bizarre reason the people who made it require you to sign up and pay money for a monthly subscription before you can even try the bloody game. Then they charge you more for additional cars and tracks, which you will want because the standard cars suck. And I can't seem to find an option to not use my real name. Bizarre. Truly bizarre. I don't really want anything to do with a game like that, but it's the only one with proper Rift support..
Last but not least: I spent two 40-minute sessions today playing Half Life 2 in all its glorious Riftyness. It was perhaps the most immersive gaming experience I've ever had. Unfortunately I couldn't play longer because each session induced some serious nausea. I find this weird because normally I never get nauseous from anything. But at the end of each session my body was clearly telling me to stop, lest something nasty happen to my stomach and whatever object happens to be in front of my mouth. It's nowhere near serious and it's easy to stop when you feel it coming on, but it certainly does reduce your appetite. Maybe that's a good thing; the Oculus Rift can be the new way of dieting.

More to come.

Posted in Tech

Oculus Rift dev kit: first impressions

About 3 weeks ago I ordered an Oculus Rift dev kit, thinking it would take a long time to arrive, but today it arrived! I could hardly contain my excitement at work, but then finally it was time to go home and unwrap the goodies.

The first thing I noticed is how incredibly high-quality the entire package is. A solid box with lots of foam inside to protect the hardware. The kit comes with all the accessories you need: power supply, usb cable, corrective lenses, and of course the Rift itself. Everything looks and feels solid and professional. It even came with a little lens wiping cloth with the text 'Oculus Rift' on it. And that's just the developer kit; imagine what the final product will be like.

Connecting it up was easy enough. The usb cable registers the head tracker and the HDMI or DVI connector lets you treat the rift as a second screen. With that set up I fired up some of the demos made for the Rift, starting with the Tuscany demo, which lets you walk and look around a nice country house. As soon as I put the Rift on my head, I was amazed beyond belief. The head tracking is beyond excellent, the 3D effect is so close to real life that it's hard to tell the difference. I've never had such an immersive experience as I had with that first demo wearing the Rift.

The second thing I fired up was a roller-coaster demo, which blew my mind a second time. Comparing the Rift experience to watching a video of a roller-coaster in 3D does not do it justice at all. The motion tracking and full field of view coverage makes it an experience that nothing else can rival. When the roller-coaster carriage returned to the starting point I instinctively looked down to my keyboard to locate the escape button so I could quit the demo, but instead I just saw my legs, and for a second I was genuinely confused. My brain really thought I was there.

The Rift works incredibly well with stationary experiences, where you don't have to walk around. In the Tuscany demo I ended up getting a weird sensation between my ears and a sense of vertigo when making sudden walking movements. This was quite strong at first but I got used to it quite quickly, and after a while it was hardly noticeable.

Having played with the demos I decided to have a go at some proper gaming, starting with Skyrim. A lot of games are unofficially supported by a 3rd party app called Vireio Perception, which converts any regular 3D game into the required dual-eyed bulginess that the Rift lenses require. Unfortunately this is where I really started to notice the main flaw of the Rift dev kit: the resolution. Even when using the demos that were made specifically for the Rift you can clearly see the giant pixels and the black space between them. This effect only got worse in Skyrim, and it was very difficult to see anything with the low resolution.

After Skyrim I gave Euro Truck Simulator 2 a try, but was also left unsatisfied. The resolution is still a problem in ETS2, albeit less than in Skyrim, but the main issue with ETS2 is the head tracking, which doesn't quite feel right. Apparently the ETS2 developers are working on official Rift support though, so that's something to look forward to.

My first experience with the Rift is not something I'll soon (or ever?) forget. The sense of immersion is just unbelievable. I really can't wait for games to support this technology properly. It is a must-have. I've heard rumors that the final version of the Rift will have a Full-HD screen. After having played with the dev kit, I don't think that one Full-HD screen will be enough. Each eye should at least have a Full-HD screen if this technology is to be truly, ultimately immersive. I don't care how much that drives up the cost; I'll gladly pay whatever it takes for a higher resolution version of the dev kit. VR is the future. There's no doubt about it.

Posted in Tech | Tagged

Doing the dishes

At my job I get to work with a lot of developers, each with their own unique personality. Ignoring the obvious differences between front-end and back-end, one grouping I tend to make is that of  'stage-ness', for lack of a better word. There's three of them:

  • Startup-ninjas: these guys kick ass at rapid prototyping and getting something up and running in almost no time at all. If you get one of these at the start of a project then you're guaranteed to get funded (or get your project approved). But their useful ends quickly as they tend to make code quality worse on any project that has already been established.
  • Masters of structure: they cannot tolerate an imperfect architecture or a solution that has not been refactored to its utmost perfection. Comes with unit tests, integration tests and browser tests of course. A person of this category will make your code better beyond what you could do yourself, but he will also take all the speed out of the project. You'd better be well into maintenance mode before you start considering one of these guys.
  • The average joe: completes the picture. Brings speed to structured projects, or structure to a prematurely launched mess. These are the ones you want. Never too slow, never too chaotic. Scales with skill/experience, of course.
I've seen a startup ninja do crazy stuff to a starting project that I would never have been able to do as quickly, and I've also seen one of the masters of structured code at work on a project that was approaching maintenance mode. Out of these three categories, none is always better than another. It's merely a different type of specialization. It's something that, for me at least, takes some time to accept, because developers tend to think that their own way is best. Even if we don't say it out loud, we're always pursuing what we think is the optimal way to write software.

As for myself, I'm definitely in the average category. I've taken over startup-y projects that needed structure, and I've stayed on long enough on one project to see myself become villian, eg. to see a structured master take over and add structure beyond what I thought was needed at the time. It's difficult to accept someone else's way over your own, but the least you can do is keep an open mind :)

tl;dr: bringing structure to a project is like doing the dishes; we've all got different tolerance levels.

Posted in Tech , Thoughts

All paths of safe communication are blocked

Yesterday it was reported that half of all Tor sites were compromised, due to an exploit in Firefox, the only widespread browser you can trust, more or less. Authorities could easily get access to the certificate authorities issuing https certificates, not to mention that they're snooping all internet traffic anyway and the possibility that a weakness exists in the https encryption cannot be ruled out. All ways of communicating via the internet without a prenegotiated encryption key are not secure.

All ways of generated an encryption key on your computer are most likely unsafe as well. All mobile OSes are unsafe because they are owned by companies who have to conform to government requests for access. Linux may be safe, depending on which distro you use, but if you're using Windows or OS X then it's obvious that you're fucked. But even if your OS is safe, there's always the rumors that your hardware might have some custom firmware installed on it that logs everything you do. It could be as simple as a little device between your keyboard and your PC.

So, if I wanted to send a message absobloodysecurely to my friend with no chance of anyone being able to know what the message says, how do I do it? The only way that's been proven to work: talk to him/her in person. And even then you're not fully secure as people may be listening in and there may be surveillance cameras. For now let's assume that there's nothing physical eavesdropping on you and let's focus on sending the message.

It is possible to send a message securely via the internet that even the most paranoid spy organisation can't do anything about. Here's a list of the things you'll need.

First, you'll need a fully open-source computer: hardware, firmware, OS, drivers, software. Not a single component may contain closed-source components. You need two of these because the person you're sending the message to will need one too.

Next, you'll need a way to confirm that your machine isn't compromised. I think this one's pretty much impossible and will always remain the biggest risk. If you have reason to suspect your machine is compromised then you can't trust anything your own machine says about its state. Validating the authenticity of your firmware/OS/whatever over a network connection is impossible because you can't trust the endpoint.

Frankly, I think the second problem is unsolvable. Modern computers are so complex that no single person can manually verify that each component has not been tampered with, and any shortcut function can be used to circumvent the authenticity check. I'm no expert on hardware, but the way I would do it is to have a portable mini-computer (USB stick, yubikey-like and/or raspberry pi) with me at all times, which contains the checksum of each of the software and firmware components that make up my computer. To check the computer you could physically connect this device to each component, which would then access each component's bit of code, calculates the checksum and tells you if it's been compromised. It has to be the mini-pc that does the checking since you can't trust your own machine.

Third: a way of securely encrypting the message you're about to send. At this point it should be safe to assume that your local machine hasn't been compromised, so you can run open-source encryption software on it to encrypt your message. Since you're encrypting it client-side and never sending any kind of key, public or private, to the recipient, there's no need for the network to be secure.

Having achieved all this, there's still two ways an attacker can get access to your message. One: they force you to give up your encryption key, and two: they use a brute-force attack or a ultra super quantum magic attack. The first one is easy to solve. Truecrypt does this by allowing you to decrypt a partition with two different keys, allowing you to show different content for each key.

The second problem is a lot more tricky. I think it can be solved with steganography, but I'm not entirely sure. As an example, let's take the method of encrypting a message inside an image. This provides you with plausible deniability, since the data you're sending just looks like an image, and there's no way of telling that the image contains a hidden message. But here's the key point: decrypting the image with a key other than the correct one should also (have a chance to) produce a coherent message. If the attacker knows exactly what to decrypt then he can brute-force it. 2-pix steganography appears to allow for different messages depending on encryption key, but I'm not 100% sure.

So, to summarize, I don't think the biggest problem we have right now is that the network is insecure. This is something we have to take for granted. The problem is that we can't say with 100% certainty that the machine we're using to write the unencrypted message is secure.

Posted in Tech

Bitcoins will only become more valuable

Short thought: Bitcoins will only become more valuable. The reason: based on current supply and demand, the exchange rate has been holding steady around $100/BTC for the past few months. Demand is only expected to increase (massively) as Bitcoin gains widespread adoption. Supply on the other hand, is totally fixed. There's no possible way for the Bitcoin network to generate more than 25 coins every 10 minutes now, and this amount will halve again in the future.

Posted in Tech