Skip to main content

Pierre Ozoux

Pierre Ozoux

My first VIM macros :)

1 min read

to transform quicker strings and inside of html tags to i18Next:

For lines inside HTML tags
:nmap te i{{_ "v$u$a"}}

For inside html tags
:nmap tt vituvitdi{{_ "pa"}}

For JS
:nmap tq vi'uvi'd"_x"_XiTAPi18n.__('pa')

Pierre Ozoux

ServerLess collection of links

1 min read

We are probably entering the post PaaS era. I think we can agree that Heroku failed at making it simple and painless to deploy code. Nowadays there are better solutions.

Back in the time, I was (and still am) fascinated by Unhosted Philosophy! Let's say unhosted is the open source way of server less. But this philosophy has migrated to be absorbed and digested by capitalism and proprietary software.

So here is a list of ressoures to dive into the server less world!

Articles

http://thenewstack.io/amazon-web-services-isnt-winning-problems-poses/

http://www.thecloudcast.net/2016/03/the-cloudcast-242-understanding.html

Awesome curated list

https://github.com/anaibol/awesome-serverless

In the next article, I'll detail how we plan to build our IndieHosters landing page, unhosted way :)

Pierre Ozoux

#OnVautMieuxQueCa

3 min read

J'ai travaillé dans un call center. Je suis informaticien/architect/DevOps ou appelez moi comme vous voulez, mais bref, je taquine du clavier. Le marché de l'emploi est plutôt en ma faveur, pour le moment. L'histoire que j'ai vécu se trame au Portugal, en direct du futur de la France comme j'aime à le dire. Le CDI est aboli depuis plusieurs années là-bas.

Embauché dans un call center en tant que niveau 2. C'est mon premier CDD de 6 mois (Il peut y en avoir 4), et mon plan secret, c'est de ne pas me faire réembaucher là pour éviter la morosité ambiante des gens qui prolongent avec d'autre motivation que les 800€ de la fin du mois. Je demande 2 jours de congès car ma mère vient me voir. Mon manager refuse sous le seul prétexte, que pendant la période d'essai, ça ne se fait pas. La veille de l'arrivée de ma mère, par courtoisie, je vais avertir mon manager que je serai absent le lendemain pour les raisons déjà évoqués. Il me dit qu'il va confirmer avec sa hiérarchie. Il revient brocouille et me dis, "de toute façon, je ne vais pas venir te chercher chez toi!". Il avait tout compris le bougre ;) Du coup j'en profite pour confirmer ma nouvelle méthode pour demander des congès. Il me confirme que en effet plus besoin de l'avertir pour "prendre des congès". Excellent!

Du coup, je prends mes jours par ci par là. Jusqu'au jour où je reçois le coup de tel du N+3 me demandant où je suis. Je lui explique la situation. Il me convoque le lendemain dans son bureau. Et là, il se met à hurler que je le "prends pour un con". Je jubile à ce moment. Je lui explique que la relation employeur/salarié doit être respectueuse, mais dans les 2 sens, et moi sans congés, c'est pas respectueux. Il veut me virer sur le champs mais ne peut pas car il fallait 5 absences injustifiés, et j'en étais à 4. 1 semaine après, je lui remettais ma démission car embauché à www.seedrs.com :)

J'étais assez heureux de pouvoir faire ça, mais j'avais le "pouvoir" car la situation économique est de mon côté. A côté de cela, mes petits camarades supportaient d'entendre: "pourquoi ta pause toilette a duré plus de 5min?". Mais ils n'avaient pas le choix, il n'y a que très peu d'alternatives pour un niveau 1, à part un autre call center. C'était ma petite vengeance personnelle.

Aujourd'hui, je suis à mon compte, et la vie n'est pas facile tous les jours non plus. La plus grande difficulté pour moi est de trouver des clients éthiques. Pas facile :/

https://www.youtube.com/watch?v=E3EbLui2B2k

Pierre Ozoux

Entropy on linux

1 min read

This is tldr post:

# check if entropy is lacking:
watch cat /proc/sys/kernel/random/entropy_avail

# generate more entropy:
find / -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum

Pierre Ozoux

Testing socket activation with docker-compose

1 min read

A simple test following this setup: https://developer.atlassian.com/blog/2015/03/docker-systemd-socket-activation/

cd /etc/systemd/system
ls test*
 # we need 3 unit-files
test-proxy.service  test-proxy.socket  test@.service

cat test-proxy.socket
[Socket]
ListenStream=8080

[Install]
WantedBy=sockets.target

cat test-proxy.service
[Unit]
Requires=test@test.indie.host.service
After=test@test.indie.host.service

[Service]
ExecStart=/lib/systemd/systemd-socket-proxyd 127.0.0.1:8081

cat test@.service
[Unit]

# Requirements
Requires=docker.service

# Dependency ordering
After=docker.service

[Service]
Restart=always
RestartSec=10
TimeoutStartSec=60
TimeoutStopSec=15
EnvironmentFile=/data/domains/%i/.env
WorkingDirectory=/data/domains/%i/
ExecStartPre=-/opt/bin/docker-compose rm -f
ExecStart=/opt/bin/docker-compose up
ExecStartPost=/opt/bin/waitport 127.0.0.1 8081
ExecStop=/opt/bin/docker-compose stop

cat /opt/bin/waitport
#!/bin/bash

host=$1
port=$2
tries=600

for i in `seq $tries`; do
    if ncat $host $port > /dev/null ; then
      # Ready
      sleep 1
      exit 0
    fi

    /bin/sleep 0.1
done

# FAIL
exit -1

 the docker-compose based from: https://github.com/indiehosters/static:
cat /data/domains/test.indie.host/docker-compose.yml
web:
  image: nginx
  volumes:
    - ./nginx.conf:/etc/nginx/nginx.conf:ro
    - ./data:/var/www/html
  ports:
    - "8081:80"

And here is the result! gif

Pierre Ozoux

Test the security of your images in CoreOS with #clair

1 min read

You may have heard of the amazing clair project! I wanted to try it out to see if we were secured!

There is no README yet, but this project comes handy!

 doesn't have golang, but well, golang image has golang :)
docker run -it -v /opt/bin:/opt/bin golang go get -u github.com/coreos/clair/contrib/analyze-local-images && mv bin/analyze-local-images /opt/bin/
exit
mkdir /etc/clair
cd /etc/clair/
wget https://raw.githubusercontent.com/coreos/clair/master/config.example.yaml
docker run -it -v /tmp:/tmp -p 6060:6060 -p 6061:6061 -v /etc/clair:/config:ro quay.io/coreos/clair:latest --config=/config/config.example.yaml
 for: 2016-02-14 18:29:44.863164 I | updater: update finished

 an other shell and start to have fun:
docker images -q | xargs -L 1 analyze-local-images

This is pretty scary actually, we have to find better ways to pull more regularly our images.

Pierre Ozoux

Voici d’où provient vraiment notre empreinte carbone

1 min read

Voici d’où provient vraiment notre empreinte carbone | Mr Mondialisation https://mrmondialisation.org/voici-dou-provient-vraiment-notre-empreinte-carbone/

Je pense être sur la bonne voie:

  • je mange de la viande environ uen fois/semaine
  • mon tel a 5 plus de 5 ans
  • j'ai acheté mon ordi d'occase (après vol :/ )
  • bon, ok, je viens d'acheter une liseuse numérique (mais à l'étranger, c'est difficile :) )
  • bon ok, je dois prendre l'avion 5 fois par an :/

Je travail depuis la maison!

Mais surtout j'ai pas d'économies et donc pas de placement \o/

Pierre Ozoux

Youtube removes content and breaks the Internets :/

1 min read

I have the solution for that, I'll now host my videos on my cloud!

enjoy!

(And it also avoids visitor tracking from google \o/)

From: https://microblog.pierre-o.fr/2016/business-of-war-pupajim---stand-high-patrol-ft-charlie

Pierre Ozoux

Auto configure ownCloud caldav/carddav on iOS with a profile

2 min read

Edit: the solution was found (at the bottom of the article).

For IndieHosters we plan to offer a really nice bundle with cloud(5Go) + webmail + contacts + calendar + smtp + imap for 2€/month ( stay tuned if interested ;) ). (And 4€/month with your domain and 15Go)

For that, we try to make the onboarding process of new users as painless as possible. On Android, it is a pain to configure everything right. You need to download 2 apps: DAVdroid and ownCloud and configure 3 end points (webdav/cardav/caldav). It means your user needs to be really motivated!

On iOS/OSX, the process is a lot easier, you can provide a profile file that will install everything with one click \o/. Here is the specification if interested. Like always, your best bet for a working example is to head to mailinabox.

So I did like they did, here is the file.

I checked my nginx conf against the official one and the one from mailinabox.

I keep getting on my iOS device:

An error occurred while contacting the server.
The operation couldn't be completed. (CoreDAVErrorDomain error 3.)

On the server, I get:

web_1 | 172.17.51.4 - - [08/Feb/2016:17:24:05 +0000] "PROPFIND /.well-known/caldav HTTP/1.1" 301 184 "-" "iOS/7.1.2 (11D257) accountsd/1.0"
web_1 | 172.17.51.4 - - [08/Feb/2016:17:24:05 +0000] "PROPFIND / HTTP/1.1" 405 172 "-" "iOS/7.1.2 (11D257) accountsd/1.0"
web_1 | 172.17.51.4 - - [08/Feb/2016:17:24:06 +0000] "PROPFIND /principals/ HTTP/1.1" 404 6287 "-" "iOS/7.1.2 (11D257) accountsd/1.0"
web_1 | 172.17.51.4 - - [08/Feb/2016:17:24:06 +0000] "PROPFIND /calendar/dav/test/user/ HTTP/1.1" 404 6287 "-" "iOS/7.1.2 (11D257) accountsd/1.0"

What bother me is that I tried every combinations of end points, and I suspect that the problem come from iOS because it is always trying these end points. My iOS version: 7.1.2

Ah, if I enter manually, it does work :)

If you want to try, the credentials: test/qwer

If you find the reason, I give you one of this account for one year \o/.

Edit: The solution was to modify the following key to remove the https:

      CalDAVPrincipalURL
      http://cloud.pierre-o.fr/string>;