2013/09/11

Disclaimer: Everybody that ever talked to me about mobile knows that I prefer Android in almost all aspects. I don't want to use Apple personally but I am grateful that they invented the Appstore, a business model which puts food on my table. I am sad that their "innovation" lately was based around new Icons and slimmer phones instead of ground breaking products like the original iPod and iPhone.

The new iPhone 5S

I did not expect any big changes. Seems like I was wrong. Most of the consumer specs are 1:1 copies of the last iPhone5 which is what I pretty much expected. The things that blew my mind are two: 64 bit (the positive change) and the fingerprint reader (the really bad change).

64 bit

64 bit is an awesome change because we will need it sooner than later. With 32 bit you can only address 4 gibibytes of RAM (2^32 = 4,294,967,296 bytes 4,294,967,296 / (1,024 x 1,024) = 4,096 MB = 4GiB) while with 64 bit we can potentially address some 16 exbibytes (that's a LOT - by the way, I just learned that you must not call gibibytes gigabytes anymore - thanks Wikipedia!). My guess is that we will need those possibilities really soon and I really want (and expect) Android manufacturers to jump on the 64 bit train.

Fingerprint reader

The bad change is the fingerprint reader. The tech behind it is cool for sure and the idea is great. It's well thought out and has a ton of potential use cases.It's also absolutely ripe for abuse.
Apple said it won't be uploaded to the cloud, the system is secure, everything is fine and dandy and please trust us because we are an awesome company that never works with the bad guys. But all it takes is some secret law that forces Apple to patch the system to upload the fingerprint to the NSA cloud - and users would not even be able to tell because iOS is not open sourced. I'm not saying that they do that already, I am just saying that it's very well possible and plausible to happen. Playing the devil's advocate I have to say: The placement is diabolic. Most people I talked to expected the fingerprint reader to be implemented at the back side. Placing it on the home button automatically forces you to use it and you can't do much about it (well, you can: buy an Android and use an open source, non stock OS) On a side note, the new front camera is also great - now you can take high resolution face shots of people that just handed you your fingerprint. This are really low hanging fruits for folks like the NSA so please be on your guard.

2013/07/29

I implemented a small project using Android Studio to get an impression how it works out for me, compared to Eclipse. This post is not meant to start a flame towards IntelliJ, it's meant as a discussion starter.

My Eclipse install is heavily customized, just like my OS. I use a VIM plugin, a ton of auto formatting and a lot of the settings that are by default turned off (some of them, like the auto complete popup delay are beyond any reasoning).

I invested a lot of time to configure Android Studio in the same way (using Google and the settings search bar) but I am still missing a few things. I also deliberately did not change the default keybinds - switching IDE but keeping keybinds seemed like a stupid idea to me.

After working about 40 hours with Android Studio I have to say that it's a nice IDE but I don't really like it. A list of reasons and things that I really miss compared to Eclipse follows below. Note that I'm not (knowingly) talking about things that are still buggy (but being worked on) like multi project support. I am just talking about fundamental Android Studio/IntelliJ flaws. Some of them could be remedied by supplying a better default config, some of them will require further development of Android Studio.

It does not support save actions like Eclipse does. You can do stuff on VC commit but that would require me to use a gui for git (which I refuse)

The method signature default popup timeout is 1 second (!)

Methods are auto completed with foo(); even if they have a signature. Pressing autocomplete (ctrl+space) inside the parentheses will not give any suggestions.

Completion is case sensitive on the first character by default.

New file is bound to alt+insert (instead of ctrl+n like everywhere else) and creates a file in a random folder (90% of the time it's the bin folder) it can also not be done while the focus is in the code area. That's not a good thing if you try to avoid the mouse as much as possible.

There is no way to make it insert semicolons at the end of a line (like in eclipse). This is the second best setting eclipse has to offer (after save actions). Pressing magic complete (ctrl + shift + space) is not an option for me (3 keystrokes instead of 1).

Most keybindings are considerably longer than their eclipse counterpart.

It sometimes refuses to show javadocs when using the keybind and gives no reason why it does so.

Logcat has no columns and does not support filtering by application via double click. Also, the window gets cleared immediately when disconnecting a device. This is absolutely NOT acceptable and does not provide any benefit to a developer.

package / app renaming is a HORRIBLE, HORRIBLE experience. After figuring out what the difference between folder and module renaming is, you still have to update a trillion things by hand (like gradle files). Also, when restarting Studio

Package moving and renaming is absolutely counter intuitive. I have not found a way to rename foo.bar.baz to wtf.omg without using 2 gui windows (one for rename, one for move). Eclipse rename is not that intuitive either but at least it works.

Mouse over tooltips (in the IDE, not the editor) take way too long to show.

IntelliSense is supposed to be nice but it does not really help a lot when you have to manually start it with ctrl+shift+space all the time (Eclipse autocomplete with a-zAZ09.( as hot chars and 0 ms delay is way better).

It requires OracleJDK or will not start up without a warning. When started with OpenJDK, fonts are rendering like crap.

When used with awesome WM it requires a random combination of change screen, fullscreen and change screen layout so that the right mouse menus and so on are on the correct screen. So far I had NO application that had those problems (see screenshot below). It also does not label the sub windows (seems not to register them with the Window manager).

Deleting modules from a project is sometimes not possible. Removing via shell requires to restart intellij so it figures out what is going on (seriously, "remove module" is greyed out), and they sometimes remain as empty arrows. (see screenshot below)

It comes with it's own Android SDK folder and cannot be changed globally.

The menu is on the wrong screen

Empty entry in the Project structure

Overall I don't see the benefit of using Android Studio over Eclipse. Granted, it's a bit faster than Eclipse (but using Linux drives down my compile times to a level where I barely notice them), XML editing works a lot better and seeing the drawables on the side of the editor is a nice idea. Seeing the actual strings instead of R.string.foo is... okish, but it confuses me a lot more than it helps - I guess that's something to get used to. Gradle has a lot of potential and is an extreme improvement over ANT, but it misses things like git dependencies (bundler ftw).

2013/07/08

The latest stories about governments spying on pretty much everybody sparked my interest on privacy and cryptography again. I will be writing a series of blog posts about tools and methods that make life a lot harder for NSA and friends, focusing on easy to use apps and easy to follow tips for everybody (and not just computer science experts). I will not go into much technical detail if it can be avoided (you will not see math at all!).

Problems with cryptography

I'll start off with a list of problems that I see why cryptography is not used. This list is later used to evaluate the tools and methods that I will suggest.

It's complicated

If you don't do cryptography correct, it almost immediately becomes pointless or vulnerable to some form of attacks. The math that's involved behind every cryptographic procedure is seriously hard and must be followed exactly. This is also a problem for people developing tools in this area (see the history of cryptocat).

It's cumbersome

Nobody wants to enter passwords all the time, nor does everybody have the ability to remember over 9000 passwords. Cryptography must never be in the way of the object the user is trying to accomplish or it will be disabled immediately.

It's irritating

People that don't know about cryptography often don't know what to do with cryptographic software or encrypted information and the internet is not really helping them either. Also, many people think that cryptography is only for people that do something illegal and if you don't do anything wrong you don't have anything to hide. In fact everybody has something to hide and should do that as much as possible.

It's frustrating

When you get an encrypted message that you can't - for any reason- decrypt, you feel like you lost something. It sucks to lose messages of friends, family or even business partners, but on the other hand it would be absolutely idiotic if you could decrypt the message with easy methods - others would be able to do the same.

It's not used

Most of my emails are written to other people that are in the software business as well - and less than 1% of them ever bothered to install any cryptographic tool for their email. Cryptography is not in widespread use and this is used as an excuse for not using it. The thing with problems is this: they normally don't go away by themselves. This circular reasoning is used in many discussions and never helps to solve the problem.

Benefits of cryptography

Since there is quite some bad stuff, what's the good stuff?

It keeps things private

Privacy is a fundamental human right that is violated all the time, without the victim noticing it. The EU has implemented a data retention directive that was just recently installed in Austria. Most people think that it's not a big deal when their communication metadata is stored. What they do not realize is that this makes them trackable close to 90% of the time. Imagine there's a guy standing at virtually every corner in a whole state, no matter where you go, that writes down who comes past, where he came from, where he's going to and who he is talking to. Sounds scary, right? That's exactly what data retention does - it keeps track when and where your cellphone is connected and who you are talking to.

I know who I am talking to

Cryptography can also be used to make sure that somebody on the internet is indeed the person he claims to be. Faking the sender address of an email is a very easy task and less experienced users will have problems noticing the difference and signs. However, when your email program tells you in big red letters "signature verification failed", even them will have a closer look at what is going on and hopefully ask somebody (or call the "original" sender by phone) before sending out personal data.

It brings peace of mind

If you set up your cryptographic tools once and do it correct, you will have a lot more security on your side immediately. It will be a lot harder for anybody to attack you, which in term will make it less likely to happen. If you use the right tools you will not face a lot of overhead and will, after a while, not even notice the fact that your life got a lot more secure.

What does this teach us?

I am 100% sure that I did not list all negative aspects of cryptography, nor all the positive ones. The interesting thing is this: The good stuff is about your life and security, the bad stuff is about the work and the effort needed. This means that your life will get better, which is great, but some of the tools are bad - they must be substituted with something usable. I will therefore focus on easy to use tools that are secure in the next posts.

2013/06/16

As I have written previously I like analog things. For photography, I have pushed everything to a new level and develop the negatives myself and scan them using a Canon CanoScan 9000f MK II. I owe a lot to Jens-Michel Cramer and his excellent blog post on developing C41 film. I pretty much exactly use his routine, with a single change: I do a finishing rinse of the film because the stabilizer leaves stains on the film that I don't want to have.

The camera I use (for now) is a self assembled Twin Lens Reflex that I got from Amazon. I am currently waiting for a Konstruktor and a Green Holga (black was sold out) to be shipped, then I will switch cameras around until I learn how to use each of them. The TLR shutter is a little tricky and I lost a few frames on the first film, but after tweaking it abit I only lose ~2 frames per film. I did not lose any pictures though because you get used to the shutter sound and can hear when It didn't open and close correctly.

The film I use is standard Kodak 200 ISO 36 frames. It is easy to get and does the job well enough for my standards.

2013/06/06

My day job is to write software, which is a very precise and complex thing to do. There is a lot of emphasis on reusable components, versioning, storing and a lot of other technical things. I love what I am doing, but it's nice to get a break from all this stuff. In my spare time I like to do analog things (I consider sports an analog thing too). The nice thing about analog is that there is no save, no undo. You do something, get an immediate result in some form and that's it. Of course you get better over time, but there is absolutely no way of restoring a previous state - which is the exact reason why I love it. I own an analog synthesizer (Doepfer Dark Energy) some kaoss hardware from Kong which has touch input and recently I bought a DIY kit for an analog camera.
I fell in love with the camera even before I bought it. The idea of assembling it myself and then taking actual pictures of the film was instantly appealing to me. A few days later I was diving head first into the blogsphere and reading up on color film development. Today, the equipment for the whole process shipped and I am eager to get home and start developing.

2013/05/16

Yesterday Google+ got a new outfit and Hangout got a long overdue facelift too. I don't mind the new looks, but my stream is exploding with UI/UX experts (or people thinking they are experts in that field) that keep complaining about the multi column layout or Hangout missing features.

The new Stream Layout

I am no expert on UI/UX at all. Actually I am the exact opposite. I'm a die-hard-use-shell-for-everything guy. I don't understand why white and smokewhite make a difference. I don't consider adding shadows if we are not rendering something in a 3d world. I appreciate a good UI when I see one, but I could never make one.

What I can do, however, is configure my system.

If i want to show my stream the way it used to be, I press the right button. Is that really so hard?
The only valid complain that I would accept is the fact that the button hides in the More menu. Why on earth is it not in one of the many settings?

The new Hangouts

So apparently Google does not use XMPP anymore. I have not checked if that is true but judging from the features the new Hangouts has, it probably is. It might also be that the new Hangouts App is just a lot smarter than the old Talk client. I just did a quick test and sent an Image from the new Hangouts app to somebody that still uses the old Google Talk client. She just gets a link to a g+ picture.

So what about configuration?

In my opinion, Google does a really bad job at putting settings where they should be - and Hangouts is no exception.

Nobody in his right mind would expect the settings to hide behind that tiny drop down icon.

Sidenote: Why do I still have the Google+ Messenger App? I thought we would get rid of this thing now?

2013/04/16

Google just released the Glass API and I was, like many others, eagerly waiting for just that to happen. But, having learnt my lessons in the past, I did also read the Terms of Service.

Glass ToS Section 3: FeesNo Fees. You may not charge end users any fees or collect any payments in order to download or access your API Client, or in connection with virtual goods or functionality of your API Client.
source

What's the worst troll a tech firm could pull off? Introduce the most amazing - maybe the most revolutionary technology in the century - and immediately spoil it for everyone that might do great stuff with it.

As it is right now, developers like me cannot make a living on developing Glassware. While you will see a lot of apps I will not develop for glass if I am forced to do it for free. If the free stuff is optional, like on android, that's a totally different story. Of course, I might do something like "buy me a beer", but in reality what I am after is "buy me a living".

+Andreas Proschofsky pointed out that it's just a preliminary release and might change, but still this is a dangerousthing to be in the ToS. I can now either invest a lot of time and money building Glassware (I have to pay for servers and devote time to it that could be spent on playing with my daughter for example) and hope to be able to monetize on it later or just skip it entirely. I would hate to skip the platform, but if there is no money on the horizon (there's also a NO ADS in ToS #2, which is great) it's a too dangerous thing for me to develop something.

Just for starters: Developing something for glass that has quality would take something around 100 to 200 hours at least (That's the equivalent of about 5.000 - 10.000 €) and I don't even have hardware to test it on. I would (and most likely will) have to buy the Glass Hardware as soon as it's available in Europe, which will most likely be a year after it was released in the US (Austria still does not have movies and series in the Play store, nor can we buy Nexus devices), which costs me another 1.500 $. A decent cloud server that can scale costs something around 50$/month and the more I scale up the more it costs. So In total the whole app would cost me about 10k € (~13k $) in the first 2 months and all the free time that I can think of.

2013/02/21

The story

A few weeks ago, my old love to Lego came back to life.

The last time I built anything with Lego, I was still living with my parents and something around 15 years younger. Lego was something I got for Xmas and Birthdays and I absolutely adored building stuff with it. Not just the sets that came with the boxes, I build all sorts of different things (an assembled Bat Mobile that I modeled after a 2 matchbox models (here and here) is still at my parent's house).

So far the obvious story about a young engineer that was exposed to a lot of Lego.

Nowadays, I have a substantial income and a child myself - so when the urge to build some Lego hit me I did the obvious thing - check Amazon. I was shocked to find out how expensive Lego models are (especially the licensed ones) and figured I should try some alternative brands. After some research I found 2 brands that seemed to be worth checking out: Sluban and Kre-O.

What follows is a comparison of various aspects that I find important.

Comparison

Sets

All sets were ordered from Amazon. I chose the 2 non Lego sets because they seemed to include a lot of bricks, seemed approximately the same size as the Lego set and were cheap.

Cost

As already said, the alternative sets are a lot cheaper than Lego.

Lego - 22,99 €

Sluban - 17,99 €

Kre-O - 17,99 €

This might not seem much but that's a 21.75% difference. Depending on what Lego set you buy the figures vary, but in general you can get a lot more non-Lego for your money.

Instructions

The most important part for any set - apart from the blocks and minifigs - are obviously the assembly instructions. If they are unclear you have no fun building the set, which spoils everything. If they are too detailed you get bored because you look at pictures instead of building something.

Lego

Lego instructions still suffer the same problem that they always had: there sometimes are way too few stones that are added per picture which makes the instrucion too long and you find yourself constantly turning pages just to find another page with only 3 bricks to place. I wish they would double the amount of blocks to place per picture and grey out the pieces that are already placed.

Kre-O

Instructions for Kre-O are pretty much the same as Lego ones. They were easy to follow and have about the same level as detail as Lego. I would suggest to hasbro to incorporate my wishes for Lego instructions into theirs, then the instructions would actually be better than the Lego ones.

Sluban

The Sluban one was small and packed a lot of building steps into the same picture. That's actually a plus point for Sluban but this makes the sets impossible for children to build. Give the Sluban instructions to a 12 year old and she will stop building the whole set after 20 minutesout of boredom (and because she cannot find the pieces - see the problems part later).

Lego

The Lego figure is, as expected, excellent. I have not bought any Lego during the last decade (and not seen a lot assembled either) but it seems to me that Lego puts a lot more details on their models than they did when I was a kid. Just compare the above (Doctor Rodney Rathbone) with my most favorite minifig of all time: the Blacktron 1.

Kre-O

The Kre-O figures surprised me. They are alot more flexible than the Lego ones and have an extremely high level of detail. They can twist the torso, wear stuff like ammo belts and the legs are better than the Lego ones. Their only real problems are the hands. The arms are slightly bent which makes it impossible to stick anything into their hands that should stick out towards the minifig (like the Shotgun or Rifle that came with the set). This is just bad design and should be changed. If they had better hands or arms I'd say the Kre-O figs are better than the Lego counterparts.

Sluban

These figures are not even worth assembling. I found it funny that they sent pink colored hands and heads with the set but the overall quality of the minifigures is so terrible that I could not really believe it. Of the 5 minifigs that came with the set (which is a lot), 3 repeatedly lost their left arm. Not the right one, always the left. The hands are so poorly made that they can't even hold their own weapons. In fact the Lego figures did a better job holding the tools that came with the set than the Sluban figures. The legs just look wrong and you can see the fabrication marks all around the figures. The details would be nice (every minifig has another face) but the quality just destroys everything. Too bad - I was hoping for 5 minifigures that could be used for something.

Some of the Helmets look nice and they work with Lego figures but that's really only a small gain.

Brick quality

Lego

The Lego bricks have the awesome quality that they are known for and don't need a review.

Kre-O

The Kre-O brick quality is comparable to Lego but they differ in a lot of places. The trademark symbol of Kre-O seems to be a different knob on all bricks. Apart from looking kind of odd this also makes the assembled set look awkward. Another thing that makes the bricks seem odd is their weight. Lego bricks have a specific weight that you get used to when you handle bricks often. The Kre-O bricks are a tiny bit lighter which makes handling them feel strange. This also makes the assembled set feel too light when you lift it.

Strange knobs

Sluban

From the 3 sets that I compared, the Sluban bricks had the worst quality. Some of the bigger plates have a very similar knob to the Kre-O plates, some don't. The bricks sometimes do not hold together strong enough or you have to apply a lot of force to make them stay together. That effect gets visible when you compare the assembled set to Kre-O and Lego: You have parts that don't stick together as they should which results in small gaps.

It just won't fit

Set details

Lego

The set is very detailed as expected. Lego does not cut corners and pays a a lot of attention to the small things like lamps, decorations, functionality and general awesomeness of the set. On this set I particularly like the engine and the lamps.

Awesome details

Kre-O

The set is ok but Hasbro seems to be cutting corners wherever it can. The car does feature quite a few details which are nice and fit the bill and the interior is easily accessible. They sometimes do not fill gaps between the bricks because they can't be (easily) seen when the set is constructed. I think that's a bad design decision and should not be done.

Cutting corners: Holes in the far wall,
2 gaps on the bottom.
(click to enlarge)

Some nice details

Sluban

For the money, this was the biggest set of all three, featuring two instead of only one vehicle. The major problem that I see with this set is the fact that it does not have details. It features 2 lights at the end of the helicopter and some minor details on the car. If you skip the stickers (which I did) there's not much left. The interior of the helicopter is not accessible without destroying the set - something I consider a major design flaw.

Judging from Amazon the Sluban weapons seem popular and were indeed one of the reasons why I got the set. However the weapons are not made of hard plastic and bend easily. They also come in a plastic breakout frame (or however you call those things - I couldn't find out via Google within 30 minutes and gave up) and therefore you need to use a sharp knife or similar if you want to make them look ok.

A postivie thing to note is the fact that out of the three sets Sluban had the most spare parts. They packed something around 50 parts too much into the whole thing which I think is amazing.

The only details of the helicopter

The car has more details

Problems

Lego

Lego does not have problems with the set or bricks - the quality is excellent. To me, the only issue is the price for some sets. The Star Wars Lego is way too expensive - with some models priced at over 500 € and a lot of the models in the 300 - 100€ range.

Kre-O

The Set has some serious engineering flaws that keep it falling apart. It also has no extra bricks. I always found it incredibly cool to have a few spare pieces at the end of construction when building Lego sets. Hasbro is cheating too much on the brick counter which shows quickly - the set breaks apart easily because some final plates were not added. All the hinges come off all the time too - they don't stick to the plates strong enough. This renders the model no fun to handle.

Sluban

Apart from the quality, Sluban has another problem: color. Virtually all blocks are military green. While this fits the set it produces a serious problem: You can't find any brick at all. That fact was so annoying that I almost quit building. For the sake of this blog post I resorted to stack sorting, something I would never do with real Lego bricks because they lose their clutch if you use this stacking method too extensively.

1 color fits all?
Bonus: find the 2x3 plate.

Stack sorting to the rescue

Compatibility

I did not try a lot of mixing but the systems all seem compatible. In the few tests I did, everything worked fine. There were a few special bricks here and there (in all three sets) but that's to be expected.

Some Slubanized Kre-O

Conclusion

Will I buy a Lego clone again? Most likely not. I think it's better to spend some more money and have a product with excellent quality than being frustrated by the outcome (and essentially wasting money).

However with Kre-O and Sluban you get what you pay for. The Sluban set is huge but the quality is not ok. The Kre-O set is cheap for the quality you get but the models are not good. If you don't care about the models then you should give Kre-O a chance.

2013/02/14

This Saturday my bed died right under me.
It simply broke apart in the middle of the night, waking me and my wife and I almost fell out of it.
The technical design of our former bed actually dictates that it will break really soon after buying it (we had it for less than 3 years). The whole weight is spread over the middle bar which is held in place by two shoddy plastic feet and two metal pieces, and 3 L shaped metal plates on each side of the bed.

All of the L shaped plates can be bent when you lie on the bed. And this exactly what happened. The first time this happened I flipped them around so they would bend back over time, but that only prolonged the death of the bed a bit. Once they had bent again (with me falling through the bed yet again) they were so weak that they couldn't take the pressure for more than a few nights.

Then on last Saturday I fell through again. I knew it would not be enough to flip them around again because they had been severely bent this time and would not hold another night.

I spent the night on the couch which is no fun when you have two cats and no curtains in your living room.

So on Monday I set out to get a new bed. My sister got a Malm bed from IKEA that I helped setting up so I went with one of those. Buying online was out of the question because it would take them over a week to deliver so I had to get to IKEA myself. Lucky me, my brother took the car for a 2 week ride into nowhere so I took the train.

Once arrived at IKEA the obvious things happened. I came prepared with a shopping list and left with more than I intended to buy. Then I went to the home delivery counter and asked for an express delivery.

I expected another night or two on the couch but the guy at the counter pleasantly surprised me by telling me that they could deliver my groceries on the same day. 18:00 - 22:00. It was 17:30 when I set up the delivery (!). And delivery was cheap too (79 €, into the flat)
The bed then arrived at 20:30 and it took us less than 30 minutes to set it up.
From no to one bed in less than one day - this is why IKEA rocks.