reading: Kindle vs your Tablet

So I got myself a Kindle. Simple, not Paperwhite.

Ever since I got my Nexus 7 back in 2012 I am using it for ebooks and social networking fooling around. The Nexus 7 is a cool device for reading for it can read virtually all formats. EPUBs (with and without Adobe DRM), djvu, PDFs and other more obscure formats. Of course there’s a Kindle app for Android, so them too. But there’s something that puts you off reading using a general purpose device. The angle is never right and the lighting might not help and …

And that is why I am only reading technical stuff on the Nexus 7. Office use only. The Kindle on the other hand is a vacation device.

VMWare Fusion and Ubuntu

Ever since I got a Mac, I bought VMWare’s Fusion in order to be able to work with software that exists only in the Windows world. The really nice thing that good friend Moses pointed out yesterday, is that Fusion now supports easy installs for Ubuntu too! I had never took notice of that, since I run most of my VMs on VirtualBox.

I am an LXDE fan, so I first tried a Lubuntu install. It went fine, but it was not an Easy Install (in Fusion’s terminology). Then I went ahead and installed normal Ubuntu and afterwards (since I cannot do any real work with Unity) installed LXDE. The Easy Install went smooth and I did not need even need to consider keyboard configurations (something I had to do with Debian-LXDE and VirtualBox). I also changed the available RAM for the VM and now I have a machine that just works.

Oh the fun of using closed software in order to work easier with open source.

Στα τρία κορνερ πέναλτι

Τελικά μικροί ήμασταν πολύ άπλες. Ενώ η πιθανότητα να μπει γκολ από ένα πέναλτι είναι περίπου 75%, η πιθανότητα να μπει από κόρνερ κυμαίνεται από 1% – 6%.

Έγραψα και αμέσως μετά σκόραρε η Γερμανία από κόρνερ το πρώτο. Δεν έχω πατήσει submit και γράφει ήδη τρία τέσσερα…

Damn!

lxterminal settings on Debian LXDE

For sometime now, my main desktop has been Debian LXDE virtual machine. There is a problem with lxterminal though. Whenever I changed its settings they were not saved. It turns that this is a permission problem. You have to make sure of two things:

  • Directory ~/.config/lxterminal exists and is owned by you. You may find it owned by root. chown this.
  • File ~/.config/lxterminal/lxterminal.conf exists and it is owned by you. You may find that it does not exist. Create it using touch.

Ποιος την έχει πιο μεγάλη;

Μην απορείτε με τον τσακωμό του Μανιάτη με τον Τζαβέλλα κι ας είναι ο ένας αρχηγός του Πρωταθλητή κι ας έχει περάσει και ο άλλος από δύο σοβαρές Λίγκες. Αδικαιολόγητοι και οι δύο. Έχουν τις παραστάσεις και την εμπειρία να διαχειριστούν καλύτερα τις καταστάσεις. Τα ανήλικα στο Δημοτικό τα βρίσκουν πιο εύκολα. Όμως:

Αντιπροσωπευτικό συγκρότημα λέμε την Εθνική Ομάδα. Αντιπροσωπευτικό Ελληναρισμό δείξανε και τα παλληκάρια. Βάλανε το κοντόφθαλμο (short term) οπαδικό κέρδος τους πάνω από την συμμετοχή τους στην κορυφαία διοργάνωση του επαγγελματός τους. Φαντάζομαι το έχουν σιγουράκι πως μπορούν να πάνε και στο επόμενο. Μπορούν να κοιτάξουν κατά Ζλάνταν μεριά για να δουν πόσο σίγουρο είναι αυτό για ογκόλιθους του αθλήματος, πόσο μάλλον για πετρούλες.

Ξεφτίλες.

WorldCup 2014

Αυτό είναι το τρίτο Παγκόσμιο Κύπελλο που βλέπει αυτό το blog (μια και ξεκίνησε κάπου στο 2006). Το 2006 είχα γράψει κάτι λίγα (βοήθησε και ο Ζιντάν). Το 2010 δεν θυμάμαι (και βαριέμαι να ψάξω) εάν έγραψα κάτι (κάτι έγραψα). Τώρα πάλι δεν ξέρω.

Θα ήθελα να δω τελικό Βραζιλία – Ουρουγουάη, αλλά νομίζω δεν βγαίνουν οι διασταυρώσεις για κάτι τέτοιο.

We’ve come a long way dear blog and we’ve changed.

fork()

“When you come to a fork in the road, take it.”Yogi Berra

Once during a cataclysmic flood there was this priest that the rescue teams tried to save. “Children he said, go on and save other people in need. I am at the hands of God. God will save me.”. This happened between the priest and the rescue teams a number of times, until eventually the priest got drowned. When before the Maker he asked “How is it possible that you left me to drown, me who I lead such a devoted life?” and the Maker replied “And who do you think sent all those rescue teams towards you?”.

One of the hardest lessons to learn in your career is to let it go. But the hardest, especially if you think high of organisational loyalty is to let yourself go.

So I am taking my sense of duty and taking the fork.

– Are you not afraid? Of course I am.

Martijn on Dual_EC_DRBG

Good friend Martijn Grooten (twitter, blog) and chief editor at the Virus Bulletin was at Athens for a day or so yesterday and was kind enough to make a presentation about Dual EC DRBG and the possible involvement of the NSA on it. The event was hosted at the Hackerspace. It was a scientifically balanced presentation with a cool explanation of how elliptic curves are used in such cases and what kind of risks this entails.

Pizzas after the presentation were curtesy of the Greek OWASP Chapter.

Polling an exit

– Έχουμε σκεφτεί και νέους τρόπους ελέγχου, είπε ο Η. Νικολακόπουλος πριν λίγο.

Άκου να δεις όμως τι συμβαίνει μάστορα: Όταν η πλειονότητα όσων ρωτάς δεν πιστεύει στην αξία των exit polls και αντίθετα θέλει πάρα πολύ να αποτύχουν, όσους ελέγχους και να βάλεις, έξω θα πέσεις. Κοντά θα πέσεις από σύμπτωση.

Και ξέρεις γιατί συμβαίνει αυτό μάστορα; Γιατί ποτέ δεν εξήγησες σε αυτόν που ρωτάς ποια αξία έχει για αυτόν το να σου απαντήσει ειλικρινά. Την αξία που έχει για εσένα (“Εδώ το μάθατε πρώτοι”) την ξέρουμε όλοι. Αλλά επειδή το exit poll δεν γίνεται για την επιστήμη αλλά για να μπορέσεις να οργανώσεις τις επόμενες τηλεοπτικές σου ώρες, θα έχεις garbage in, garbage out. Γιατί έτσι βγαίνει και ένα τηλεοπτικό προϊόν με ανατροπές στους πανηγυρισμούς στο οποίο αρέσκεται το φιλοθεάμον κοινό.

On ansible and the script module

Ansible offers the convenience of running scripts on remote servers. But as the documentation notes:

It is usually preferable to write Ansible modules than pushing scripts. Convert your script to an Ansible module for bonus points!

There is a reason for this. Usually you have ansible run a script on your behalf when what you want to do is not achievable via a module or some combination of modules in a playbook. In extreme circumstances you will need to run a script via ansible when the receiving computer has no Python installed.

But there is a problem with running scripts this way: They are opaque.

A playbook that is applied to your machines is actually a model of that part of the machines that you want to manage. And ansible is your sensor that deals with the situation when things go sour.

It is very easy to write a script that does one thing well to one machine and does not check for failure. Now apply this to 100 or 500 machines that are similar, yet have some subtle differences between them. Can you imagine what a rewrite your script needs in order to account for all corner cases? And if you make it bullet-proof, congratulations! You’re half-way through to making your own incompatible version of ansible.

Having said that, I am guilty of running scripts instead of describing work to be done in a playbook. This mostly involves stuff that needs to be executed from a login shell (hello rvm!) which means the script begins with #!/bin/bash. However, in order to exercise better control in such situations I am not running more than one command plus checks for return codes in every script. This breaks the script down in many smaller ones, but allows me a better view when something goes wrong. Because my playbooks instead of having one script directive, they have 5 or six in a row.

You may have not described an accurate model of what you want to do using a playbook’s markup, but at least the name: directive for every single task is accurate enough to let you know what is executing, rather than having it issue a larger script where you wait whether it succeeded or not, and if not try to find out from which point exactly to roll back (if rolling back is possible).

So the new rule is:

When pushing a script through ansible, it should execute one command only plus any checks needed for return status.