Apparently there’s a new mobile game called “Flappy Bird” which has taken over the mobile gaming market. I had honestly not heard of this game before I read that it’s being taken down by its creator for being too successful (what?).
IGN put up a review explaining the game concept which is so ridiculously basic it’s almost embarrassing. The fact that this game is so immensely successful only shows to prove what people like David Heinemeier Hansen have been talking about for a very long time which is to “underdo your competition“.
By removing as many features as possible you’re also making your product easier and more accessible to use by lessening the learning curve. This means that you can essentially expand your market by making your app smaller.
Flappy Bird might be an extreme example of “less is more” but it have also accomplished something that many app developers can only dream of, and it did it by underdoing its competition.
I’m studying computer security this term and it has a way of making you very paranoid about security matters, and recent articles like this and this really doesn’t help either. Therefore I’ve decided to set up two-factor authentication everywhere possible to help protect myself to some degree for the uselessness of passwords.
Two-factor authentication essentially means that you use two authentication factors to log in instead of only one. An authentication factor is one of three things, something you know, something you have or something you are. A password is a good example of the first, while a card or cellphone is in the second category.
What this means is that for someone to hijack one of my accounts they will not only need to know my password but they also need my cellphone to generate a temporary one-time key to log in. While my phone can also be remotely tracked and locked down in case it’s stolen, and through backed up recovery keys I will still be able to access my accounts.
It might sound complex and difficult but it really isn’t, and the major security gain is a worthwhile tradeoff. To enable two-factor authentication you merely have to download an app (like Google Authenticator or Authy), use it to scan a QR code for the account you want secured and then you’re done. The next time you log in on a new computer you open your app, get a key to type in and you’re logged in as usual.
There’s a fairly comprehensive list of services which support two-factor here.
Vagrant enables a developer to isolate their project to a dedicated virtual machine while still coding in the same environment they use for other projects. You can essentially edit your project files in Windows and access the result through Windows while everything is running on Linux without having to do any of the tedious work of setting up and installing a virtual machine.
The cool thing about Vagrant is how the configuration file for the project can be redistributed with the rest of the code base to give other developers access to an exact replica of the original development environment.
The really cool thing about Vagrant is how ridiculously easy it is, they have a guide for setting up a first project which takes about 30 minutes to complete and goes over all the aspects of setting everything up.
The major thing that bothers me is that it’s somewhat slow, a virtual machine has a huge overhead compared to running directly on the host machine. It also takes about fifteen minutes to set up a Vagrant box the first time, which is actually negligent compared to the many hours it would take to do it manually but still feels like a long time.
Provisioning could also have been made simpler, but there are a lot of alternatives and even more examples for setting up any imaginable environment so it isn’t really a problem per se.
I found these unexpectedly profound quotes while reading through “Mostly Harmless” by the late Douglas Adams. It’s almost possible that he was an engineer in some earlier life.
“The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when the thing that cannot possibly go wrong goes wrong it usually turns out to be impossible to get at or repair.”
And just a few pages later there’s another similar gem.
The thing he realised about the windows was this: because they had been converted into openable windows after they had first been designed to be impregnable, they were, in fact, much less secure than if they had been designed as openable windows in the first place.
I simply had to share these since I suspect most engineers probably don’t read The Hitchhikers Guide to the Universe.
There are tremendous amount of posts about shitty interview questions, especially for programmers. What there aren’t so much of are posts about the good questions to ask, so here’s one of my favorites.
What did you learn this week?
The question is really good because it gives you instant feedback whether or not the candidate is interested in programming. A programmer with a genuine interest is bound to try to learn new things all the time and will have no problem answering this question. While someone who is less motivated and less interested will have bigger problems coming up with a meaningful answer.
The question also gives insight about what the candidate is interested in and on what level they’re trying to challenge themselves. It also opens up for some, more or less, obvious follow-ups such as “Why did you learn this instead of that?”, “How have learning this affected your workflow?”, “What do you want to learn next week?” and so on.
I stumbled across this comment a while ago and though it was pretty funny, so I wrote a basic one liner to add the “feature” to my shell. Basically what it does is allowing you to write “fucking” instead of “sudo” for the humorous effect of it, example below.
fucking make install
Here’s the code for setting it up. The specified configuration file needs to be changed for it to work in other shells than bash.
echo “alias fucking=’sudo’” >> ~/.bashrc && . ~/.bashrc
Whenever I’m talking with someone about future prospects, be it a fellow student, colleague or potential employer it always ends up at what I want. And well, until now I haven’t really been able to figure it out. Somehow I had hoped that talking to a lot of people and checking out a lot of interesting companies would help me realize where in the future I want to be.
But when I finally figured it out I realized that I don’t really care so much about what I’m doing, it’s more about how. I don’t care so much if it’s consulting or in-house, if it’s business and logistics or game development. What I really want is to end up where I have colleagues that can always teach me something new. No matter how long I stay at one place I still want to be able to pick up and learn new stuff as if it was my first month there.
For me the fun part isn’t so much about the result as it is about finding the best way to solve the problem at hand. And the more I learn the better I become at finding different ways to solve problems, which is what I really want to do.