Romain Pellerin's Blog - Miscellaneous//romainpellerin.eu/2024-03-22T12:24:00+01:00Motorizing an IKEA Skarsta Standing Desk2023-03-14T23:00:00+01:002024-03-22T12:24:00+01:00Romain Pellerintag:romainpellerin.eu,2023-03-14:/motorizing-an-ikea-skarsta-standing-desk.html<p>Tutorial about how I motorized my IKEA Starska standing desk</p><p><strong>UPDATE March 2024: the V2 of this project is finally coming together. Scroll all the way down to read about it!</strong></p>
<p>I got really tired of turning the crank of my IKEA Starska standing desk multiple times a day. Not only this is tedious, but also I can't keep on typing or using my mouse while doing so. And if I'm in a meeting, I look stupid. So I decided to motorize it. I know IKEA already sells an electrical version of it with a motor, but it's 200 euros more expensive and I already had one desk. Plus I like challenges!</p>
<p>After hours of googling and reading various blog posts (see the bottom of this page for links), after days spent waiting for all my orders to arrive, after minutes of tinkering, I finally got a working prototype!</p>
<video controls>
<source src="./videos/motorizing-an-ikea-skarsta-standing-desk.mp4" type="video/mp4">
</video>
<p>That's far from perfect, I already have ideas about how to improve it, but for now that'll do... Down below is the shopping list for this project and the steps to build it. I hope this helps!</p>
<h1 id="hardware">Hardware</h1>
<h2 id="dc-12v-gear-motor-37d-mm">DC 12V Gear Motor (37D mm)</h2>
<ul>
<li>Not just a regular DC motor. See <a href="https://electronics.stackexchange.com/questions/97477/difference-between-a-dc-motor-and-gear-motor">the difference between a regular DC motor and a DC gear motor</a></li>
<li>The diameter must be 37 mm, so that it fits perfectly under the IKEA Starska standing desk</li>
<li>Torque must be equal to or greater than 2Nm (20.4 kg.cm) (info found <a href="http://cesarmoya.com/blog/motorizing-standup-desk/">here</a>). Look at the stall torque, not the rated torque.</li>
</ul>
<figure class="center">
<img class="zoomable" src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/motor.jpg" alt="A picture of the motor" />
<figcaption>The motor I bought from Aliexpress</figcaption>
</figure>
<p>I bought and tried these 2, <a href="https://de.aliexpress.com/item/32968002582.html">the 12V 72 RPM edition, that draws 3 amps ("stall current"), and the 12V 136 RPM one</a>. According to the specs of the 72 RPM one, the stall torque is greater than 30 Kg.cm and it works perfectly! I can put weight on the desk (I tried more than 30 Kg) and it still raises the desk up easily! As to the 136 RPM, it works well too, up to 30 Kg, but it gets real close to stalling. Without much weight (a laptop and a monitor), it raises the desk at about 100 rotations per minute.</p>
<figure class="center">
<img class="zoomable" src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/motor-specs.jpg" alt="A table showing the specs of the motor" />
<figcaption>Specs of the motor</figcaption>
</figure>
<p>Alternatively, <a href="https://www.pololu.com/product/4745">this other motor looks like a viable option too</a>.</p>
<h2 id="aluminum-l-bracket-for-37d-metal-gearmotors">Aluminum L-Bracket for 37D Metal Gearmotors</h2>
<figure class="center">
<img class="zoomable" src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/l-bracket-for-37d-motors.jpg" alt="A picture of a pair of L-Brackets for motors" />
<figcaption>The L-Bracket pair I got (only 1 is necessary for this project though)</figcaption>
</figure>
<p>We will use this to secure the motor to the desk. <a href="https://thepihut.com/products/pololu-stamped-aluminum-l-bracket-pair-for-37d-metal-gearmotors">I got it from The PiHut</a>.</p>
<h2 id="power-adapter-input-ac-110-240v-output-dc-12v-5a">Power adapter INPUT AC 110-240V / OUTPUT DC 12V 5A</h2>
<figure class="center">
<img class="zoomable" src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/acdc-power-adapter.jpg" alt="A picture of a power adapter" />
<figcaption>The adaper I got from Amazon</figcaption>
</figure>
<p><a href="https://www.amazon.de/12V-voltage-transformer-power-adapter/dp/B07L5GP7SD">I got this one from Amazon</a>, works like a charm!</p>
<h2 id="6mm-hex-key">6mm hex key</h2>
<figure class="center">
<img class="zoomable" src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/6mm-hex-key.jpg" alt="A picture of an hex key" />
<figcaption>The 6mm hex key I got</figcaption>
</figure>
<p><a href="https://www.obi.de/schluessel-abzieher/lux-sechskant-schluessel-comfort-6-mm/p/3471075">I got this one Obi.de</a> and I had to cut off the bent part of it. This will replace the original crank provided with the desk.</p>
<h2 id="7mm-shaft-coupler">7mm shaft coupler</h2>
<figure class="center">
<img class="zoomable" src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/7mm-shaft-coupler.jpg" alt="A picture of a shaft coupler" />
<figcaption>The 7mm shaft coupler I got</figcaption>
</figure>
<p>This will connect the motor to the hex key in the desk. Get a <a href="https://www.amazon.de/dp/B07HKJL1XC">7mm shaft coupler</a>, since the motor comes with a 6mm D-shaped shaft. The hex shaft for the desk is 6mm too, so the shaft coupler must be 1mm larger.</p>
<h2 id="dc-motor-driver">DC motor driver</h2>
<figure class="center">
<img class="zoomable" src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/dc-motor-driver.jpg" alt="A picture of a DC motor driver" />
<figcaption>The DC motor driver I got from Cytron.io</figcaption>
</figure>
<p>This will control the motor. I went with the <a href="https://www.cytron.io/p-10-amp-7v-30v-potentiometer-and-switch-control-dc-motor-driver">MD10-POT from Cytron</a>, that comes with a potentiometer (adjust speed) and switch (2 directions and stop), and that does not require any Arduino nor any code writing.</p>
<p><strong>Careful</strong>: this is a regenerative motor driver (<a href="https://www.cytron.io/tutorial/md10-pot-controlling-dc-motor-without-writing-code">as described at the bottom here</a>), meaning that when you stop powering the motor, it keeps spinning a bit before coming to a stop (due to inertia, while it's "braking"), and as a result the current flows back to the power source. As a consequence this driver should be used with a battery, not a switching power supply, because a battery can be charged but with a switching power supply the current has nowhere to go. For this project it is ok though as the desk is heavy and won't allow the motor to keep spinning when the power is cut.</p>
<p>Learn more about <a href="https://www.cytron.io/tutorial/5-easiest-ways-control-dc-motor">controlling a DC motor here</a>.</p>
<h2 id="dc-connector-barrel-plug-adapter-25mm-x-55mm">DC Connector Barrel Plug Adapter 2.5mm x 5.5mm</h2>
<figure class="center">
<img class="zoomable" src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/dc-connector-barrel-plug-adapter.jpg" alt="A picture of a DC connector barrel plug adapter" />
<figcaption>The one I got</figcaption>
</figure>
<p>This is used to connect the DC power supply with the motor driver, <a href="https://www.amazon.de/dp/B09TB4D8ZT">I got this one from Amazon</a>.</p>
<h2 id="misc">Misc</h2>
<ul>
<li>Duct tape</li>
<li>A grinder, to cut off the bent part of the hex key</li>
<li>Electrical wire</li>
</ul>
<h1 id="how-to-build-it">How to build it</h1>
<ol>
<li>Cut off the bent part of the hex key with a grinder. We need a straight hex key.</li>
<li>Replace the original crank with the hex key, mounted with the shaft coupler.</li>
<li>Position the L-bracket with the motor at the end of the hex key and mark the final position with a pen.</li>
<li>
<p>Screw the L-bracket to the desk using a drill (slow speed)</p>
<p><figure class="center">
<img src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/step-4.jpg" alt="A picture the L-bracket attached to the desk" />
<figcaption>The L-bracket is now attached to the desk</figcaption>
</figure></p>
</li>
<li>
<p>Secure the motor to the L-bracket</p>
<p><figure class="center">
<img src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/step-5.jpg" alt="A picture of the motor attached to the L-bracket" />
<figcaption>The motor is now attached to the L-bracket</figcaption>
</figure></p>
</li>
<li>
<p>Attach the power supply to the desk with a self-adhesive velcro, or just tape:</p>
<p><figure class="center">
<img src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/step-6a.jpg" alt="A piece of self-adhesive velcro" />
<figcaption>Self-adhesive velcro</figcaption>
</figure>
<figure class="center">
<img src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/step-6b.jpg" alt="A picture of velcro under the desk" />
<figcaption>Velcro stuck to the desk</figcaption>
</figure>
<figure class="center">
<img src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/step-6c.jpg" alt="A picture showing the power supply wrapped in velcro and attached to the desk" />
<figcaption>The power supply wrapped in velcro</figcaption>
</figure></p>
</li>
<li>
<p>Connect the motor to the DC motor driver using wires, and tape the junctions for improved safety</p>
<p><figure class="center">
<img src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/step-7a.jpg" alt="A picture showing the taped junctions between the motor and the wires" />
<figcaption>Put tape around the connections</figcaption>
</figure></p>
</li>
<li>
<p>Connect the power supply to the DC motor driver (pay attention to polarity) using the barrel and wrap it in tape for improved safety</p>
<p><figure class="center">
<img src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/step-8.jpg" alt="A picture showing the power supply connected to the DC motor driver using the barel" />
<figcaption>The barrel, connecting the DC motor driver and power supply, wrapped in tape</figcaption>
</figure></p>
</li>
<li>
<p>And last, tape everything under the desk, make sure nothing is hanging. I protected some parts (soldered points) of the motor driver board with tape. I placed the switch button near the edge of the desk to reach it easily. A better design would be to put everything in a small plastic box.</p>
<p><figure class="center">
<img class="zoomable big" src="//romainpellerin.eu/images/motorizing-an-ikea-skarsta-standing-desk/step-9.jpg" alt="A picture showing the end result" />
<figcaption>The end result</figcaption>
</figure></p>
</li>
</ol>
<h1 id="a-v2-of-my-project-would-be">A V2 of my project would be...</h1>
<p>With a <a href="https://www.cytron.io/c-motor-and-motor-driver/c-motor-driver/c-dc-motor-driver">different motor driver</a>, that has "Over Current" and "Under Voltage" protections, such as the MD13S from Cytron. Also with an Arduino and auto-raise feature based on how long it takes to raise/lower it. I don't need to have multiple programmable positions, nor an OLED screen. An auto-raise/lower feature can be tricky, for the following reasons (copy/pasted from <a href="https://github.com/cesar-moya/arduino-power-desktop/blob/master/MotorControl/MotorControl.ino">https://github.com/cesar-moya/arduino-power-desktop/blob/master/MotorControl/MotorControl.ino</a>):</p>
<blockquote>
<p>If you activate auto-raise, and your desk was already at the maximum height,
then - depending on your desk - on the IKEA SKARSTA it will hit a stopping
point and the MOTORS WILL STALL for the amount of seconds that you recorded.
In other words, if you recorded 30 seconds to raise, and your desk is
already at the top position (or close), and you still enable auto-raise, you
risk damaging your motors as a full power will be sent to them but they will
be blocked. When using auto-raise and auto-lower you must ALWAYS be present
and watching the desk, ready to cancel the operation if the motors stall for
any reason.</p>
</blockquote>
<p>And finally, a nicer design, where everything is not taped underneath but put in a plastic box.</p>
<h1 id="upgrade-2024-version-2">Upgrade 2024: version 2!</h1>
<p>For this V2, we're gonna reuse most of the what we used for the V1, but we'll also need additionally:</p>
<ul>
<li><a href="https://www.berrybase.de/arduino-uno-r4-minima">Arduino Uno R4 Minima - 19.9 euros</a></li>
<li><a href="https://www.amazon.de/dp/B0825RCZJS">2 push buttons - 7.99 euros for 7 buttons</a>: one to raise the desk, one to lower it</li>
<li><a href="https://www.berrybase.de/metallschichtwiderstand-10-0-kohm-1/4w-1-0207-axial-durchsteckmontage">2 10K-Ohm resistors - 0.05 euros each</a>, for the buttons (<a href="https://docs.arduino.cc/built-in-examples/digital/InputPullupSeriale">despite the Arduino having an internal pullup resistor that can be used</a>, <a href="https://forum.arduino.cc/t/resistor-why/108705/2">it's not reliable</a> <a href="https://forum.arduino.cc/t/push-buttons-and-resistors-why-and-how/584493">enough</a>). Prefer metal film over carbon, supposedly they're more robust.</li>
<li><a href="https://www.berrybase.de/pololu-tb6612fng-dualer-motortreiber">Pololu TB6612FNG motor driver - 4.20 euros</a></li>
<li><a href="https://www.berrybase.de/hc-sr04-ultraschall-sensor">HC-SR04 distance sensor - 1.49 euros</a></li>
<li><a href="https://www.amazon.de/dp/B0983NSV6F">A 200*120*55mm junction box - 12.34 euros</a></li>
</ul>
<p>The Arduino will be powered directly to its VIN pin through the 5V output pin of the motor driver. The power supply will supply directly the motor driver.</p>
<h2 id="a-few-words-on-the-motor-driver">A few words on the motor driver</h2>
<p>A lot of online tutorials recommend using the classic L298N for Arduino projects. Hower, a lot of people report issues with it on the Arduino forum. A common reply is <a href="https://forum.arduino.cc/t/l298n-is-a-mess-helppp/903638">that the L298N motor driver is old and obsolete</a>, one of its flaws is the 5V drop. People often suggest using modern motor drivers from <a href="https://www.pololu.com/">Pololu</a>, and the <a href="https://www.pololu.com/product/713">TB6612FNG</a> seemed like a good affordable option, even if it supports 2 motors and I'm only using it for one.</p>
<p>Why not L298N?</p>
<h1 id="other-tutorials">Other tutorials</h1>
<ul>
<li><a href="http://cesarmoya.com/blog/motorizing-standup-desk/">http://cesarmoya.com/blog/motorizing-standup-desk/</a>: says 2Nm is needed for torque</li>
<li><a href="https://github.com/aenniw/ARDUINO/tree/master/skarsta">https://github.com/aenniw/ARDUINO/tree/master/skarsta</a></li>
<li><a href="https://github.com/flosommerfeld/ESP8266-IKEA-Skarsta-Trotten-Web-Dashboard">https://github.com/flosommerfeld/ESP8266-IKEA-Skarsta-Trotten-Web-Dashboard</a></li>
<li><a href="https://www.instructables.com/Motorizing-an-IKEA-SKARSTA-Table/">https://www.instructables.com/Motorizing-an-IKEA-SKARSTA-Table/</a>: they use an optional endstop to count how many rotations the motor does, thanks to some flag put on the shaft</li>
<li><a href="https://hackcorrelation.blogspot.com/2015/09/ikea-skarsta-sitstanding-desk-hack.html">https://hackcorrelation.blogspot.com/2015/09/ikea-skarsta-sitstanding-desk-hack.html</a>: says 2Nm is needed for torque</li>
</ul>France vs Germany2023-02-01T12:00:00+01:002023-02-03T14:28:00+01:00Romain Pellerintag:romainpellerin.eu,2023-02-01:/france-vs-germany.html<p>What each country does better than the other</p><h1 id="france-is-better-at">France is better at...</h1>
<ul>
<li><strong>Pensions</strong> are much higher (2/3 of your last payrol in France on average, compared to 1/3 in Germany)</li>
<li><strong>Healthcare system</strong>: although comparable, in Germant one has to pay out of their own pocketfor healthcare insurance when unemployed. Also, the whole public/private insurances make doctors more business men than heathcare professional sometimes. For example it's easier to get an appointment soon, or go to a doctor never visited before if you are privately insured.</li>
<li><strong>Worked hours</strong>: 40 in Germany by law, vs 35 in France</li>
<li><strong>Paid vacation</strong>: 20 days in Germany by law, vs 25 in France</li>
<li><strong>Trains</strong>: although the SNCF is far from perfect, its trains are by an order of magniture more punctual (<a href="https://www.thelocal.de/20220727/opinion-the-shocking-state-of-german-trains-exposes-the-myth-about-punctuality">1</a>, <a href="https://www.arte.tv/de/videos/107194-015-A/re-chaos-auf-der-schiene/">2</a>)</li>
</ul>
<h1 id="germany-is-better-at">Germany is better at...</h1>
<ul>
<li>Half of December 24, December 26, and half of December 31 are holidays in Germany</li>
<li>Big cities are much safer</li>
<li>Cyclists are respected by drivers</li>
<li>Cycling lanes are found everywhere outside of cities</li>
<li>Saunas</li>
</ul>Comment poser du carrelage sur un sol en PVC (Vinyl) ?2022-12-18T23:54:00+01:002023-02-04T15:02:00+01:00Romain Pellerintag:romainpellerin.eu,2022-12-18:/comment-poser-du-carrelage-sur-un-sol-en-pvc-vinyl.html<p>Une vidéo tuto sur la pose de carrelage, réalisée lors de la rénovation de ma cuisine</p><iframe width="700" height="394" src="https://www.youtube-nocookie.com/embed/zeI_LrrwhiU?rel=0" frameborder="0" allowfullscreen></iframe>
<h1 id="materiel">MATÉRIEL</h1>
<ul>
<li>Un mètre à mesurer</li>
<li>Règle métallique de 2 m de long</li>
<li>Niveau à bulle</li>
<li>Aspirateur</li>
<li>Grand seau (20 L)</li>
<li>Visseuse puissante</li>
<li>Malaxeur pour la colle (à utiliser avec la visseuse)</li>
<li>Meuleuse et disque de diamant pour carrelage</li>
<li>Lunettes de protection</li>
<li>Gants</li>
<li>Cristaux de soude</li>
<li>Serpillère</li>
<li>Croisillons en T de 5 mm, croisillons auto nivelants, croisillons de 2,5 mm pour le dessous des plinthes</li>
<li>Rouleau poils mi-longs et perche pour le primaire d'accrochage</li>
<li>Truelle</li>
<li>Truelle dentée avec dents de 10 ou 12mm</li>
<li>Spatule fine (3-4 cm de largeur) pour aplanir la colle au bords des carreaux</li>
<li>Cutter</li>
<li>Carrelette suffisamment grande</li>
<li>Grosse éponge avec manche</li>
<li>Taloche à joint (le dessous doit être en caoutchouc)</li>
<li>Mastic pour reboucher les trous</li>
<li>Primaire d'accrochage monocomposant</li>
<li>Mortier-colle (de type C2 ou C2S1 - ne pas prendre de prise rapide !) - types de colle expliqués <a href="https://www.youtube.com/watch?v=kuEwnMrb_EA">ici</a></li>
<li>Carrelage et plinthes (prévoir 10% de perte)</li>
<li>Joint</li>
</ul>
<h1 id="liens-utiles">LIENS UTILES</h1>
<ul>
<li><a href="https://bricolage.linternaute.com/forum/affich-34007-comment-poser-du-carrelage-sur-du-lino">https://bricolage.linternaute.com/forum/affich-34007-comment-poser-du-carrelage-sur-du-lino</a></li>
<li><a href="https://carrelage.ooreka.fr/qr/voir/80665/comment-poser-du-carrelage-sur-du-lino">https://carrelage.ooreka.fr/qr/voir/80665/comment-poser-du-carrelage-sur-du-lino</a></li>
<li><a href="https://www.cotemaison.fr/cuisine/cuisine-remplacer-un-sol-pvc-par-un-carrelage_19356.html">https://www.cotemaison.fr/cuisine/cuisine-remplacer-un-sol-pvc-par-un-carrelage_19356.html</a></li>
<li><a href="https://www.fr.weber/pose-du-carrelage/poser-du-carrelage-sur-un-ancien-revetement-de-sol-interieur">https://www.fr.weber/pose-du-carrelage/poser-du-carrelage-sur-un-ancien-revetement-de-sol-interieur</a></li>
<li><a href="https://www.fr.weber/poser-un-carrelage-sur-un-ancien-carrelage-au-sol">https://www.fr.weber/poser-un-carrelage-sur-un-ancien-carrelage-au-sol</a></li>
<li><a href="https://www.fr.weber/preparation-et-finition-des-sols/poser-un-nouveau-revetement-de-sol-sur-lancien">https://www.fr.weber/preparation-et-finition-des-sols/poser-un-nouveau-revetement-de-sol-sur-lancien</a></li>
<li><a href="https://www.fr.weber/weberprim-universel-le-primaire-rapide-tous-supports">https://www.fr.weber/weberprim-universel-le-primaire-rapide-tous-supports</a></li>
<li><a href="https://www.leroymerlin.fr/campus/sol-parquet-et-carrelage/comment-poser-des-plinthes-en-carrelage.html">https://www.leroymerlin.fr/campus/sol-parquet-et-carrelage/comment-poser-des-plinthes-en-carrelage.html</a></li>
<li><a href="https://www.youtube.com/watch?v=61DpebDYTNM">https://www.youtube.com/watch?v=61DpebDYTNM</a></li>
<li><a href="https://www.youtube.com/watch?v=6OZ3t0nWX0E">https://www.youtube.com/watch?v=6OZ3t0nWX0E</a></li>
<li><a href="https://www.youtube.com/watch?v=9esHDkWyQNg">https://www.youtube.com/watch?v=9esHDkWyQNg</a></li>
<li><a href="https://www.youtube.com/watch?v=DXW2J4JtseM">https://www.youtube.com/watch?v=DXW2J4JtseM</a></li>
<li><a href="https://www.youtube.com/watch?v=EBdLnI17atM">https://www.youtube.com/watch?v=EBdLnI17atM</a></li>
<li><a href="https://www.youtube.com/watch?v=eO7YkiKW3jQ">https://www.youtube.com/watch?v=eO7YkiKW3jQ</a></li>
<li><a href="https://www.youtube.com/watch?v=h64EjPyf6ys">https://www.youtube.com/watch?v=h64EjPyf6ys</a></li>
<li><a href="https://www.youtube.com/watch?v=INGyJutlXuc">https://www.youtube.com/watch?v=INGyJutlXuc</a></li>
<li><a href="https://www.youtube.com/watch?v=ioiLhD16Thk">https://www.youtube.com/watch?v=ioiLhD16Thk</a></li>
<li><a href="https://www.youtube.com/watch?v=pdyOHggDFlY">https://www.youtube.com/watch?v=pdyOHggDFlY</a></li>
<li><a href="https://www.youtube.com/watch?v=qS5Ve0LPWYI">https://www.youtube.com/watch?v=qS5Ve0LPWYI</a></li>
<li><a href="https://www.youtube.com/watch?v=uDDJqexOjEI">https://www.youtube.com/watch?v=uDDJqexOjEI</a></li>
<li><a href="https://www.youtube.com/watch?v=y5LGtCKQR3w">https://www.youtube.com/watch?v=y5LGtCKQR3w</a></li>
<li><a href="https://www.youtube.com/watch?v=yAXMN8BUJQc">https://www.youtube.com/watch?v=yAXMN8BUJQc</a></li>
<li><a href="https://www.youtube.com/watch?v=Yqa_imdSJ4Q">https://www.youtube.com/watch?v=Yqa_imdSJ4Q</a></li>
<li><a href="https://www.youtube.com/watch?v=YrH26kd-j4c">https://www.youtube.com/watch?v=YrH26kd-j4c</a></li>
<li><a href="https://www.youtube.com/watch?v=zqp9tNVDCUs">https://www.youtube.com/watch?v=zqp9tNVDCUs</a></li>
</ul>Living in Germany: How to buy an apartment in Berlin2022-04-24T19:00:00+02:002022-12-24T02:22:00+01:00Romain Pellerintag:romainpellerin.eu,2022-04-24:/living-in-germany-how-to-buy-an-apartment-in-berlin.html<p>Some tips and tricks about buying real estate in Berlin</p><p>There's already plenty of resources online. Specifically, there is <a href="//romainpellerin.eu/extra/Buying_an_Apartment_in_Germany.pdf">this unique priceless PDF</a> that I found on <a href="https://www.reddit.com/r/berlin/comments/n5c5jl/how_to_buy_an_apartment_in_germany_focuses_on/">Reddit</a>, which covers pretty much everything in detail.</p>
<p>For French speakers, here is a short video that explains in 10 minutes the steps to buy an apartment in Germany.</p>
<iframe width="700" height="394" src="https://www.youtube-nocookie.com/embed/8lN4lKSqFSM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<p>But here I wanted to write a summary/short article, with the key facts and steps, about buying an apartment in Berlin. Here we go!</p>
<h1 id="1-know-what-you-can-afford">1. Know what you can afford</h1>
<h2 id="the-one-time-payment-for-the-apartment-and-the-side-costs">The one-time payment for the apartment and the side costs</h2>
<p>Ask around you. Ask loan brokers. Use online tools, such as <a href="https://hypofriend.de/en/criteria/start">this one from Hypofriend</a>.</p>
<p>You must be able to afford the invoices for Notar + Grundbucheintrag (~2% of the price of the apartment), Grunderwerbsteuer (~6%) and Maklerprovision (usually 3,57% in Berlin at the time of writing) with your equity capital/own money (Eigenkapital). The loan can only cover the price of the apartment (Kaufpreis). Up to 100% of the Kaufpreis can be covered by the loan, depending on the bank. You'll get the best interest rates though if you can finance 20% of the Kaufpreis with your Eigenkapital.</p>
<p>A good rule of thumb I have once been told is that most banks will generally accept to finance up to 110 times your monthly net income. Say you earn 3,000 euros net per month, you could in theory borrow up to 330,000 euros.</p>
<h2 id="the-monthly-cost-of-being-a-home-owner-in-germany">The monthly cost of being a home-owner in Germany</h2>
<p>As the owner of an apartment, you will have to pay the Hausgeld: it's money used for the common parts. It usually varies between 3 and 4 euros per square meter. For each apartment, you can get this piece of information directly on the listing or during the viewing.</p>
<p>On top of that, you need to pay a new tax: the Grundsteuer. It's pretty cheap in Berlin.</p>
<p><a href="https://www.thelocal.de/20210930/explained-the-hidden-costs-of-buying-a-house-in-germany/">More on the topic here.</a></p>
<h1 id="2-make-sure-you-have-a-schufa-score-that-is-not-too-bad">2. Make sure you have a SCHUFA Score, that is not too bad</h1>
<p>This is especially true if you are a foreigner and do not have a German bank account, or barely use it. N26 can fuck things up and somehow not transmit any data to SCHUFA. Not having a SCHUFA Score is even worse than having a poor score, as some banks will simply not proceed at all with you, not even studying your case, since they can't get any score at all. <a href="https://myhelpbuddy.com/how-to-get-your-schufa-score-for-free/">You can ask SCHUFA to provide you with the data they have about you by invoking the GDPR</a>.</p>
<h1 id="3-the-apartment-hunt">3. The apartment hunt</h1>
<p>Start with <a href="https://www.immobilienscout24.de/">immobilienscout24</a>. Set an alert to get hourly emails. Discover agencies through the website. Then check those agencies' websites. Here are some:</p>
<ul>
<li><a href="https://www.immo-boerse.com/immobilien/">www.immo-boerse.com/immobilien/</a></li>
<li><a href="https://www.next-estate.de/de/">www.next-estate.de/de/</a></li>
<li><a href="https://www.engelvoelkersberlin.com/">www.engelvoelkersberlin.com/</a></li>
<li><a href="https://bepartofberlin.de/">bepartofberlin.de/</a></li>
</ul>
<p>Set alerts on each website. Be on the lookout for "Vermietet", which means "rented". Surely you don't want to buy an apartment where there's already a tenant with an unlimited contract...</p>
<p>Whenever you see a listing of interest, send an email. After 6 hours without any reply, call them directly. For each apartment, they should send you back a document presenting the property called an "Exposé". Tell them straight away what your availabilities are for a viewing.</p>
<h1 id="4-go-to-viewings">4. Go to viewings</h1>
<p>If the Exposé does not contain any NO-GO information (like a crazy Energieklasse...), move forward and go to the viewing.</p>
<p>The PDF I mentioned in the introduction has some great pieces of advice as to what to look for. For instance, mold on the walls/ceiling is a no go, just like single-glazed windows are. Pay attention to the Energieklasse. Be quiet for a few seconds, make sure the neighborhood is not noisy (metro, car traffic, trams, schools, etc). Assess how much repair is needed. Ask about:</p>
<ul>
<li>Hausgeld</li>
<li>New owners, old owners, what the WEG (Wohnungseigentümergemeinschaft - homeowner association) is made of.</li>
<li>Which walls can be torn down</li>
<li>How freely you can change the windows, doors, etc</li>
<li>Presence of asbestos (very often found in vinyl tiles (PVC) flooring laid out before 1993, like <strong>extremely common</strong>)</li>
</ul>
<h1 id="5-you-found-one-you-like-its-in-your-price-range-reserve-it">5. You found one you like? It's in your price range? Reserve it!</h1>
<p>This step mostly depends on your Makler. Some will ask for a bunch of papers to sign + ID card copies to send, some others will also want to see a proof that you have fund and a bank backing you up. Unless stated in the PDF aforementioned, I never heard of anyone having to make some down payment/pay a reservation fee ahead.Just reach out to your Makler and ask how to reserve it.</p>
<h1 id="6-money-time-the-loan">6. Money time: the loan</h1>
<h2 id="how-to-get-a-loan">How to get a loan</h2>
<p>You know how much the Kaufpreis of what you reserved is. You should be able to calculate the price you'll have to pay for the Notar, Grundbucheintrag, Grunderwerbsteuer and Maklerprovision (sometimes this one is "free"). You also know your Eigenkapital. Estimate the repair costs (new kitchen, new floor, etc). Do the maths of that all and you'll know how much money you need to borrow.</p>
<p>Now, 2 options:</p>
<ol>
<li>Go see the banks yourself</li>
<li>Use a mortage broker</li>
</ol>
<p>If your German is good enough and you have plenty of time, 1. is the best option, as you'll likely get the best interest rate. With 2., you will <strong>likely</strong> get a worse deal, cause even though you don't need to pay the mortage broker, the bank will (the broker usually get a fixed percent of the loan). So in theory, banks will "compensate" without telling you.
But with 2., you'll also save a shit ton of time and hassle. Mortgage brokers are experienced, they know how to solve many tricky situations (no Schufa score...). Not to mention that brokers who speak your mother tongue are a HUGE HELP. They can offer additionnal services, such as acting as an official translator during the Notar meeting, probably free of charges.</p>
<p>For expats, <a href="https://hypofriend.de/en">Hypofriend</a> has been gaining a lot of traction these past few years, as they offer all their services online and in English. For French speakers, <a href="https://www.connexion-francaise.com">www.connexion-francaise.com</a> and <a href="https://expatriation-allemagne.com/">expatriation-allemagne.com/</a> are good options.</p>
<p>Most banks in Germany will want to secure their investement with a mortage deed (Grundschuldbestellungsurkunde). More on that in the next chapter.</p>
<h2 id="understand-your-loan-offers">Understand your loan offers</h2>
<p><strong>After the loan is signed, you have 14 days to rescind (cancel) it. It is therfore very important to go to the notary to sign the Kaufvertrag (purchase contract) within these 14 days. Otherwise, should the purchase never happen, you would not be able to cancel the loan.</strong></p>
<ul>
<li>"Sollzinssatz" is the interest rate.</li>
<li>"Monatliche Rate" is what you pay each month out of your bank account: this is the sum of the interests and the repayment</li>
<li>"Tilgungssatz" (also called "Sparrate") is the repayment rate</li>
<li>"Bereitstellungszinsfreie Zeit" and "Bereitstellungszins" refer to the amount of time the loan can sit unused at the bank, after which you must pay fees (interests). Usually, a loan must be disbursed within 2 or 3 months, afterwards interests are charged.</li>
</ul>
<p>In Germany, the most common type of loan is with a fixed-interest period (usually 10 or 15 years) after which you can either renegociate a new interest, pay the whole remaining debt back, or continue the loan with another bank (and another interest rate, most likely).</p>
<p>Almost all banks allow exceptional repayments (Sondertilgung) every year, up to 5% of the loan. For instance, the Deutsche Bank allow you those Sondertilgung after the first 12 months in the loan, up to 5% of the loan per calendar year.</p>
<p>You will agree with your bank on a Monatliche Rate, the amount of money that comes out of your bank account every month. In this amount, you pay both interests and debt back. The Monatliche Rate is always the same until the end of the agreed fixed-interest period.</p>
<p>Each month, you will pay back ((INTEREST RATE * REMAINING DEBT) / 12) in interests, and you will pay back (MONATLICHE RATE - INTERESTS PAID) as debt repayment.</p>
<p>For instance, the first month, for a loan of 400,000 euros with an interest of 2%, and a monatlich Rate of 2,000 euros, you will pay</p>
<ul>
<li>In interests: (0.02 * 400,000) / 12 = 666.67 euros</li>
<li>In debt: 2,000 - 666.67 euros = 1333.33 euros</li>
</ul>
<p>The next month, you will pay:</p>
<ul>
<li>In interests: (0.02 * (400,000 - 1333.33)) / 12 = 664.44 euros</li>
<li>In debt: 2,000 - 664.44 euros = 1335.56 euros</li>
</ul>
<h3 id="a-note-on-deutsche-bank">A note on Deutsche Bank</h3>
<p>Deutsche Bank will typically open up multiple bank accounts, when you sign a loan with them:</p>
<ul>
<li>A Kreditkonto (whose IBAN ends in 00), for you to transfer your equity capital and pay the invoices related to the purchase (notary, etc).</li>
<li>A "përsonliches Konto" (whose IBAN ends in 05), which you can optionaly open and use to pay the monthly loan repayments and/or the Lebensversicherung (see below), if you ask them. You can also get one Girocard (EC card) for free.</li>
<li>Another account dedicated to Sondertilgung (whose IBAN ends in 87).</li>
</ul>
<h2 id="lebensversicherungrisikolebensversicherung">Lebensversicherung/Risikolebensversicherung</h2>
<p>Depending on which bank you go with, they might require that you sign up for a Risikolebensversicherung: an insurance that would pay a lump sump agreed on (which decreases over the years), in the event of death. It can covers multiple people, if you're not buying alone. The Deutsche Bank is one of the banks that require such an insurance. The cost varies depending on how much money is covered, but expect to pay between 15 and 40 euros per month.</p>
<h1 id="7-kaufvertrag-purchase-contract">7. Kaufvertrag (Purchase contract)</h1>
<p>While you are reviewing the loan offer, you should start thinking about the Kaufvertrag. If the seller gives you the freedom to pick the notary of your choice, choose one who will also edit a copy of the contract in English.</p>
<p>If you German is not excellent, the notary will probably require that a translator is present during the meeting. Your mortgage broker might be able to take the job. A sworn translator is not always required, as long as the notary is convinced you will understand 100%. Put your translator and the notary in contact.</p>
<p>The notary will typically send the first draft of the contract over email after a few days. Review it thoroughly. Have it translated via <a href="https://www.deepl.com/translator">DeepL</a> if need be. If you buy with somebody, you might want to officially state in the contract how much each of you owns of the apartment. Tell that to the notary, so that it gets written in the contract. Note that this will impact how the Gunderwebsteuer (the 6% tax) is paid: they will ask that each owner pays the tax pro-rata to what each owns, with two separate payments.</p>
<p>Your notary appointment cannot take place before 2 weeks after the last draft of the contract has been edited (legal requirement).</p>
<p>A few days ahead of the notary meeting, the notary will ask you a bunch of papers from your financing bank, so that they can start writing the draft of the Grundschuldbestellungsurkunde (mortgage deed). Forward that request to your mortgage broker if you have one.</p>
<p>The actual meeting is pretty boring: the notary will read EXACTLY AS WRITTEN first the Kaufvertrag, in the presence of the seller and your translator, and then the Grundschuldbestellungsurkunde only with you and your translator. That's all. Nothing more, nothing less. Expect 2 hours.</p>
<h1 id="8-payments">8. Payments</h1>
<p>A few days later, you will receive various invoices from the Notar (Notarkosten at least, maybe the Grundbucheintrag too).</p>
<p><strong>Another few days later, the Notar will ask you to pay the apartment before a given due date.</strong> What you'll most likely do is, transfer your equity capital to some temporary bank account provided by your financing bank. Then, the bank will pay the seller. The bank might ask you to transfer all of the equity capital you said you had, minus what you paid to the Notar already, and then ask you to pay the remaining future invoices (Grunderwerbsteuer at least) from that temporary bank account.</p>
<h1 id="conclusion-timeline-of-events">Conclusion: timeline of events</h1>
<figure class="center"><img alt="All the events and when then take place" src="//romainpellerin.eu/images/buying_an_apartment_in_berlin.png" /></figure>
<h1 id="simulation">Simulation</h1>
<h2 id="loan-needed">Loan needed</h2>
<style>
table { border-collapse: collapse; margin: auto; }
table.right { text-align: right }
table.stripes tbody tr:nth-child(even) { background: #DDD; }
thead { background: gray }
thead.sticky { position: sticky; top: 0; }
th,td { border: 1px solid black; }
tr.red { background: red }
tr.green { background: green }
tr.purple { background: purple }
input:invalid { outline: 1px solid red; }
.results {
margin: 5px 0;
text-align: center;
padding: 10px;
background: rgba(252, 3, 3, 0.5);
}
.bold { font-weight: bold; }
</style>
<div><input id="maklerprovisionfrei" type="checkbox" /><label for="maklerprovisionfrei">No broker commission</label></div>
<table style="border: 1px solid black">
<thead>
<tr>
<th>Name</th>
<th>Expenditure</th>
<th>Capital</th>
</tr>
</thead>
<tbody>
<tr class="green">
<td><strong>Equity capital</strong></td>
<td></td>
<td><input step=".01" value="20000" id="capital" type="number" placeholder="Money on your bank account" /></td>
</tr>
<tr class="red">
<td><strong>Repair costs</strong></td>
<td><input step=".01" id="repair" type="number" placeholder="New kitchen, etc" /></td>
<td></td>
</tr>
<tr class="green">
<td><strong>Sum capital - repair</strong></td>
<td></td>
<td id="capitalMinusRepair"></td>
</tr>
<tr class="red">
<td>Tax (Grunderwerbsteuer 6%)</td>
<td id="grunderwerbsteuer"></td>
<td></td>
</tr>
<tr class="red">
<td>Notar (Notarkosten 1,5%)</td>
<td id="notar"></td>
<td></td>
</tr>
<tr class="red">
<td>Notar (Grundbucheintrag 0,5%)</td>
<td id="grundbucheintrag"></td>
<td></td>
</tr>
<tr class="red">
<td>Broker commision (usually 3,57%)</td>
<td id="maklerprovision"></td>
<td></td>
</tr>
<tr class="red">
<td><strong>Sum Tax + Notar + Broker commision</strong></td>
<td id="sumTaxNotarMakler"></td>
<td></td>
</tr>
<tr class="red">
<td><strong>Purchase price</strong></td>
<td><input step=".01" id="kaufpreis" type="number" value="100000" /></td>
<td></td>
</tr>
<tr class="red">
<td><strong>Total price (Purchase price + Tax + Notar + Broker commision)</strong></td>
<td id="totalPrice"></td>
<td></td>
</tr>
<tr class="green">
<td><strong>Remaining capital for the apartement alone</strong></td>
<td></td>
<td id="remainingCapital"></td>
</tr>
<tr class="purple">
<td><strong>Loan needed</strong></td>
<td></td>
<td id="loan"></td>
</tr>
<tbody>
</table>
<h2 id="profitability-comparator">Profitability comparator</h2>
<p>This tool does not take into account the earnings you would have made off savings/stocks if you had not spent that money as down payment.</p>
<div><input step=".01" id="rent" type="number" placeholder="Rent + Nebenkosten" value="1000" /> <label for="rent">Current rent (Warmmiete)</label></div>
<div><input step="1" id="rent_increase" type="number" placeholder="Rent increase per year (euros)" value="50" /> <label for="rent_increase">Expected rent increase per year in euros</label></div>
<div><input step=".01" id="hausgeld" type="number" placeholder="Hausgeld" value="100" /> <label for="hausgeld">Hausgeld in the new apartment</label></div>
<div><input step=".01" id="grundsteuer" type="number" placeholder="Grundsteuer" value="30"/> <label for="grundsteuer">Expected Grundsteuer per month</label></div>
<div><input step=".01" type="number" placeholder="2" value="2" id="interests"/> <label for="interests">Interests rate (%)</label></div>
<div><input step=".01" type="number" placeholder="2000" value="2000" id="rate"/> <label for="rate">Monatliche Rate</label></div>
<div id="profitability" class="results"></div>
<h2 id="tilgungsplan">Tilgungsplan</h2>
<div><input type="date" id="kauf_datum"/> <label for="kauf_datum">Purchase date</label></div>
<div><input step=".01" type="number" placeholder="0" value="0" id="sondertilgung"/> <label for="sondertilgung">Sondertilgung (one payment every 12 months, after 1 year)</label></div>
<div id="summary" class="results"></div>
<table id="tilgungsplan" class="stripes right">
<thead class="sticky">
<tr>
<th>Date</th>
<th>#</th>
<th>Repayment</th>
<th>Interest</th>
<th>Total paid this far</th>
<th>Remaining debt</th>
<th>Debt repaid</th>
<th>Interests paid</th>
<th>Sonder-tilgung</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script>
function computeProfitability({loanAmount, rate, interestRate, sumTaxNotarMakler}) {
const rent = +(document.querySelector('input#rent').value || 0)
const rent_increase = +(document.querySelector('input#rent_increase').value || 0)
const hausgeld = +(document.querySelector('input#hausgeld').value || 0)
const grundsteuer = +(document.querySelector('input#grundsteuer').value || 0)
const profitabilityDiv = document.querySelector('#profitability')
let sumPaidInOldApartment = 0
let sumPaidInNewApartment = sumTaxNotarMakler
let remainingDebt = loanAmount
let currentMonth = 0
const rows = []
const rowZero = document.createElement('tr')
const rowZeromonthNumber = document.createElement('td')
rowZeromonthNumber.innerHTML = currentMonth
const rowZeroAccruedRents = document.createElement('td')
rowZeroAccruedRents.innerHTML = toCurrency(sumPaidInOldApartment)
const rowZeroNewApartmentCosts = document.createElement('td')
rowZeroNewApartmentCosts.innerHTML = toCurrency(sumPaidInNewApartment)
rowZero.appendChild(rowZeromonthNumber)
rowZero.appendChild(rowZeroAccruedRents)
rowZero.appendChild(rowZeroNewApartmentCosts)
rows.push(rowZero)
let currentRent = rent
while(sumPaidInOldApartment < sumPaidInNewApartment) {
currentMonth++
if (currentMonth > 12 && (currentMonth - 1) % 12 === 0) {
currentRent = roundToTwo(currentRent + rent_increase)
}
if (currentMonth > 12 * 50) {
// No need to process profitability beyond 50, abort...
profitabilityDiv.innerHTML = `Your investment becomes profitable in more than 50 years...`
return
}
const paidInterest = roundToTwo((remainingDebt * interestRate) / 12)
const paidDebt = Math.min((rate - paidInterest), remainingDebt)
remainingDebt = Math.max(remainingDebt - paidDebt)
sumPaidInOldApartment += currentRent
const row = document.createElement('tr')
const rowMonthNumber = document.createElement('td')
rowMonthNumber.innerHTML = currentMonth
const accruedRents = document.createElement('td')
accruedRents.innerHTML = toCurrency(sumPaidInOldApartment)
const rowNewApartmentCosts = document.createElement('td')
rowNewApartmentCosts.innerHTML = `${toCurrency(sumPaidInNewApartment)} + ${toCurrency(paidInterest)} + ${toCurrency(hausgeld)} + ${toCurrency(grundsteuer)}`
row.appendChild(rowMonthNumber)
row.appendChild(accruedRents)
row.appendChild(rowNewApartmentCosts)
rows.push(row)
sumPaidInNewApartment += paidInterest + hausgeld + grundsteuer
rowNewApartmentCosts.innerHTML += ` = ${toCurrency(sumPaidInNewApartment)}`
}
profitabilityDiv.innerHTML = `<p>With a monthly payment of ${toCurrency(rate)}, an interest rate of ${interestRate * 100}%, and a Tilgungssatz of ${roundToTwo((((rate * 12) - (loanAmount*interestRate))/loanAmount)*100)}%...</p><details>
<summary class="bold">Your investment becomes profitable on the ${currentMonth}th month (year ${roundToTwo(currentMonth/12)})</summary>
<table id="profitability_table">
<thead>
<tr>
<th>Month</th>
<th>Accrued rents</th>
<th>Tax + Notar + Broker +<br />Accrued Interests + Hausgeld + Grundsteuer</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</details>`
const profitabilityTbody = document.querySelector('#profitability_table tbody')
profitabilityTbody.append(...rows)
let sumPaidInOldApartmentAfterTenYears = 0
currentRent = rent
for (let month = 1; month <= 120; month++) {
if (month > 12 && (month - 1) % 12 === 0) {
currentRent = roundToTwo(currentRent + rent_increase)
}
sumPaidInOldApartmentAfterTenYears += currentRent
}
return {sumPaidInOldApartmentAfterTenYears,hausgeld,grundsteuer}
}
function roundToTwo(num) {
return +(Math.round(num + "e+2") + "e-2");
}
function toCurrency(num) {
return `${roundToTwo(num).toLocaleString()} €`
}
const multiply = (a,b) => (a*b)
function computeLoanTable({rate, interestRate, sondertilgung}) {
const capital = +(document.querySelector('input#capital').value || 0)
const repair = +(document.querySelector('input#repair').value || 0)
const kaufpreis = +(document.querySelector('input#kaufpreis').value || 0)
const maklerprovisionfrei = document.querySelector('input#maklerprovisionfrei').checked
const capitalMinusRepair = capital - repair
document.querySelector('#capitalMinusRepair').innerHTML = toCurrency(capitalMinusRepair)
const tax = roundToTwo(multiply(kaufpreis, 0.06))
document.querySelector("#grunderwerbsteuer").innerHTML = toCurrency(tax)
const notar = roundToTwo(multiply(kaufpreis, 0.015))
document.querySelector("#notar").innerHTML = toCurrency(notar)
const grundbucheintrag = roundToTwo(multiply(kaufpreis, 0.005))
document.querySelector('#grundbucheintrag').innerHTML = toCurrency(grundbucheintrag)
const makler = maklerprovisionfrei ? 0 : roundToTwo(multiply(kaufpreis,0.0357))
document.querySelector("#maklerprovision").innerHTML = toCurrency(makler)
const sumTaxNotarMakler = roundToTwo(tax + notar + grundbucheintrag + makler)
document.querySelector("#sumTaxNotarMakler").innerHTML = toCurrency(sumTaxNotarMakler)
const totalPrice = kaufpreis + sumTaxNotarMakler
document.querySelector("#totalPrice").innerHTML = toCurrency(totalPrice)
const remainingCapital = capitalMinusRepair - sumTaxNotarMakler
document.querySelector("#remainingCapital").innerHTML = toCurrency(remainingCapital)
const loanAmount = roundToTwo(kaufpreis - remainingCapital)
document.querySelector("#loan").innerHTML = toCurrency(loanAmount)
const {sumPaidInOldApartmentAfterTenYears,hausgeld,grundsteuer} = computeProfitability({loanAmount, rate, interestRate, sondertilgung, sumTaxNotarMakler})
return [loanAmount, capital + loanAmount, {sumPaidInOldApartmentAfterTenYears,hausgeld,grundsteuer}]
}
function INTERESTS_FOR(remainingDebt, monthlyPayment, interestPercent, sondertilgung, sondertilgungEveryXMonths = 0, stopAfterMonth, currentMonth = 1) {
if (remainingDebt === 0 || currentMonth > stopAfterMonth) return [0,0,remainingDebt]
const paidInterest = roundToTwo((remainingDebt * interestPercent) / 12)
const paidAnticipatedPayment = currentMonth > 12 && sondertilgungEveryXMonths > 0 && (currentMonth - 1) % sondertilgungEveryXMonths === 0 ? sondertilgung : 0
const paidDebt = Math.min((monthlyPayment - paidInterest) + paidAnticipatedPayment, remainingDebt)
const newRemainingDebt = Math.max(remainingDebt - paidDebt)
const [totalDebtPaid, totalInterestsPaid, debtLeftToPay] = INTERESTS_FOR(newRemainingDebt, monthlyPayment, interestPercent, sondertilgung, sondertilgungEveryXMonths, stopAfterMonth, currentMonth + 1)
return [totalDebtPaid + paidDebt, totalInterestsPaid + paidInterest, debtLeftToPay]
};
function computeAll() {
const rate = +(document.querySelector('#rate').value || 0)
const interestRate = +(document.querySelector('#interests').value || 0) / 100
const sondertilgung = +(document.querySelector('#sondertilgung').value || 0)
let kaufDatum = document.querySelector('#kauf_datum').value
if (!kaufDatum) {
kaufDatum = new Date()
document.querySelector('#kauf_datum').value = `${kaufDatum.getFullYear()}-${String(kaufDatum.getMonth() + 1).padStart(2, '0')}-${String(kaufDatum.getDate()).padStart(2, '0')}`
}
const tBody = document.querySelector('#tilgungsplan tbody')
tBody.innerHTML = null
const [loanAmount, capitalAndLoan, {sumPaidInOldApartmentAfterTenYears,hausgeld,grundsteuer}] = computeLoanTable({
rate,
interestRate,
sondertilgung})
const [ totalDebtPaid, totalInterestsPaid, debtLeftToPay ] = INTERESTS_FOR(
loanAmount,
rate,
interestRate,
sondertilgung,
12,
120)
const totalPriceWithInterests = totalInterestsPaid + capitalAndLoan + (120 * (hausgeld+grundsteuer))
document.querySelector('#summary').innerHTML = `After 10 years, you would have...
<ul class="bold">
<li>Paid ${toCurrency(totalInterestsPaid)} in interests</li>
<li>Paid ${toCurrency(totalDebtPaid)} in debt back</li>
<li>${toCurrency(debtLeftToPay)} still to pay</li>
</ul>
If you were to repay the whole remaining debt at once after 10 years, in total you'd have spent <span class="bold">${toCurrency(totalPriceWithInterests)}</span> (your own equity capital + loan + interests + Grunderwerbsteuer + Notar + Grundbucheintrag + Broker commission + accrued Hausgeld and Grunsteuer). You'd need to sell your apartment at least <span class="bold">${toCurrency(totalPriceWithInterests - sumPaidInOldApartmentAfterTenYears)}</span> to be even with the sum you'd have paid in rent (${toCurrency(sumPaidInOldApartmentAfterTenYears)})
`
let remainingDebt = loanAmount
let interestsPaid = 0
let currentRowDate = new Date(kaufDatum)
let totalPaid = 0
for (let currentMonth = 0; true; currentMonth++) {
if (currentMonth > 12 * 50) {
// No need to process a loan of more than 50 years, abort...
tBody.innerHTML = null
window.alert(`The Monatliche Rate (${rate}) has to be higher, otherwise your loan will last over 50 years`)
return
}
const tr = document.createElement('tr')
const dateTd = document.createElement('td')
const monthTd = document.createElement('td')
const repaymentTd = document.createElement('td')
const interestTd = document.createElement('td')
const totalTd = document.createElement('td')
const remainingDebtTd = document.createElement('td')
const debtRepaidTd = document.createElement('td')
const interestPaidTd = document.createElement('td')
const sondertilgungTd = document.createElement('td')
dateTd.innerHTML = currentRowDate.toLocaleDateString()
currentRowDate.setMonth(currentRowDate.getMonth() + 1);
currentRowDate.setDate(15);
monthTd.innerHTML = currentMonth
const interestsToPay = roundToTwo(currentMonth === 0 ? 0 : multiply(remainingDebt, interestRate) / 12)
let sonderTilgungToPay = currentMonth > 12 && (currentMonth - 1) % 12 === 0 ? sondertilgung : 0
const debtToPay = currentMonth === 0 ? 0 : Math.min(rate - interestsToPay, remainingDebt)
repaymentTd.innerHTML = toCurrency(debtToPay)
interestTd.innerHTML = toCurrency(interestsToPay)
remainingDebt -= currentMonth === 0 ? 0 : debtToPay
if (remainingDebt < sonderTilgungToPay) {
sonderTilgungToPay = remainingDebt
remainingDebt = 0
}
else {
remainingDebt -= sonderTilgungToPay
}
totalPaid += (interestsToPay + debtToPay + sonderTilgungToPay)
totalTd.innerHTML = toCurrency(totalPaid)
remainingDebtTd.innerHTML = toCurrency(remainingDebt)
interestsPaid = interestsPaid + interestsToPay
interestPaidTd.innerHTML = toCurrency(interestsPaid)
debtRepaidTd.innerHTML = toCurrency(totalPaid - interestsPaid)
sondertilgungTd.innerHTML = toCurrency(sonderTilgungToPay)
tr.appendChild(dateTd)
tr.appendChild(monthTd)
tr.appendChild(repaymentTd)
tr.appendChild(interestTd)
tr.appendChild(totalTd)
tr.appendChild(remainingDebtTd)
tr.appendChild(debtRepaidTd)
tr.appendChild(interestPaidTd)
tr.appendChild(sondertilgungTd)
tBody.appendChild(tr)
if (remainingDebt <= 0) break
}
}
computeAll(); // first loading
document.querySelectorAll('input').forEach(i => i.addEventListener('input', computeAll))
</script>
<h1 id="great-how-to-articles-about-buying-in-berlin">Great how-to articles about buying in Berlin</h1>
<h2 id="in-english">In English</h2>
<ul>
<li><a href="https://www.settle-in-berlin.com/buy-apartment-berlin-in-5-steps/">www.settle-in-berlin.com/buy-apartment-berlin-in-5-steps/</a></li>
</ul>
<h2 id="in-french">In French</h2>
<ul>
<li><a href="https://www.goodmorningberlin.com/financer-achat-immobilier-a-berlin/">www.goodmorningberlin.com/financer-achat-immobilier-a-berlin/</a></li>
<li><a href="https://aberlin.fr/acheter-un-appartement-a-berlin.php">aberlin.fr/acheter-un-appartement-a-berlin.php</a></li>
<li><a href="https://guide.mfc.bayern/Acheter_de_l%27immobilier">guide.mfc.bayern/Acheter_de_l%27immobilier</a></li>
<li><a href="https://www.guidewebimmobilier.com/annonce-immobiliere/achat-appartement-berlin-quil-faut-savoir.html">www.guidewebimmobilier.com/annonce-immobiliere/achat-appartement-berlin-quil-faut-savoir.html</a></li>
<li><a href="https://expatriation-allemagne.com/categorie/nos-expertises/immobilier/">expatriation-allemagne.com/categorie/nos-expertises/immobilier/</a></li>
<li><a href="https://www.connexion-francaise.com/vivre-en-allemagne/acheter-un-bien-immobilier-en-allemagne">www.connexion-francaise.com/vivre-en-allemagne/acheter-un-bien-immobilier-en-allemagne</a></li>
</ul>
<h1 id="from-reddit">From Reddit</h1>
<ul>
<li><a href="https://www.reddit.com/r/berlin/comments/pgfd3z/to_people_who_own_their_flats_in_berlin_which/">To people who own their flats in Berlin, which tips would you give your past-self, before your first purchase?</a></li>
<li><a href="https://www.reddit.com/r/eupersonalfinance/comments/uhccds/buying_and_owning_an_apartment_in_berlin/">Buying and owning an apartment in Berlin</a></li>
<li><a href="https://www.reddit.com/r/berlin/comments/m2ldbw/buying_an_apartment_in_berlin_2021_covid/">Buying an apartment in Berlin (2021, Covid)</a></li>
</ul>Documentaries To Watch2022-03-12T13:40:00+01:002022-09-16T15:51:00+02:00Romain Pellerintag:romainpellerin.eu,2022-03-12:/documentaries-to-watch.html<p>Educational videos on various topics</p><h1 id="antivax-les-marchands-de-doute">Antivax - Les Marchands de doute</h1>
<p>Seen on Arte.</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=HpUVJcKBMb0">https://www.youtube.com/watch?v=HpUVJcKBMb0</a></li>
</ul>
<h2 id="alternative-links">Alternative links</h2>
<ul>
<li><a href="https://odysee.com/@Contreverse:7/Antivax---Les-marchands-de-doute-_-ARTE:4">https://odysee.com/@Contreverse:7/Antivax---Les-marchands-de-doute-_-ARTE:4</a></li>
<li><a href="https://video.ploud.fr/w/061396b1-408a-438d-93ec-7c66fb45ce33">https://video.ploud.fr/w/061396b1-408a-438d-93ec-7c66fb45ce33</a></li>
</ul>
<h1 id="covid-19-la-course-aux-vaccins">Covid-19, la course aux vaccins</h1>
<p>Seen on Arte.</p>
<h2 id="alternative-links_1">Alternative links</h2>
<ul>
<li><a href="https://tube.cloud-libre.eu/w/47518989-9e7d-4d7c-ad7c-7479b2206ffe">https://tube.cloud-libre.eu/w/47518989-9e7d-4d7c-ad7c-7479b2206ffe</a></li>
<li><a href="https://video.ploud.fr/w/6e67d423-82bd-4b94-8a3c-5b757921db40">https://video.ploud.fr/w/6e67d423-82bd-4b94-8a3c-5b757921db40</a></li>
<li><a href="https://odysee.com/@LiBERTY_VOICE:b/Covid-19,-la-course-aux-vaccins-_-ARTE:7">https://odysee.com/@LiBERTY_VOICE:b/Covid-19,-la-course-aux-vaccins-_-ARTE:7</a></li>
<li><a href="https://odysee.com/@Roms17:d/Covid-19,-la-course-aux-vaccins:0">https://odysee.com/@Roms17:d/Covid-19,-la-course-aux-vaccins:0</a></li>
<li><a href="https://odysee.com/@MascaradeetleCoronavirus:c/covid-19-la-course-aux-vaccins-arte:c">https://odysee.com/@MascaradeetleCoronavirus:c/covid-19-la-course-aux-vaccins-arte:c</a></li>
</ul>
<h1 id="lhomeopathie-medecine-douce-ou-imposture">L'homeopathie - Médecine douce ou imposture</h1>
<p>Seen on Arte.</p>
<ul>
<li><a href="https://boutique.arte.tv/detail/homeopathie-medecine-douce-ou-imposture">https://boutique.arte.tv/detail/homeopathie-medecine-douce-ou-imposture</a></li>
</ul>
<h2 id="alternative-links_2">Alternative links</h2>
<ul>
<li><a href="https://www.dailymotion.com/video/x7ylh0j">https://www.dailymotion.com/video/x7ylh0j</a></li>
</ul>
<h1 id="nucleaire-une-energie-qui-derange">Nucléaire - une énergie qui dérange</h1>
<ul>
<li><a href="https://www.youtube.com/watch?v=yNUIaqCPttc">https://www.youtube.com/watch?v=yNUIaqCPttc</a></li>
</ul>
<h2 id="alternative-links_3">Alternative links</h2>
<ul>
<li><a href="https://peertube.cipherbliss.com/w/8c730c33-dc00-4d3a-8c5c-7ec11f4d8da4">https://peertube.cipherbliss.com/w/8c730c33-dc00-4d3a-8c5c-7ec11f4d8da4</a></li>
<li><a href="https://tube.fede.re/w/0f7ff800-5633-4b54-8506-7c65b233bd48">https://tube.fede.re/w/0f7ff800-5633-4b54-8506-7c65b233bd48</a></li>
</ul>
<h1 id="urbanisme-la-fin-de-la-maison-individuelle">Urbanisme : La fin de la maison individuelle</h1>
<ul>
<li><a href="https://www.youtube.com/watch?v=_-gsCVB99u8">https://www.youtube.com/watch?v=_-gsCVB99u8</a></li>
</ul>
<h1 id="vers-des-transports-durables-des-metropoles-en-mouvement">Vers des transports durables - Des métropoles en mouvement</h1>
<ul>
<li><a href="https://www.arte.tv/fr/videos/096280-000-A/vers-des-transports-durables/">https://www.arte.tv/fr/videos/096280-000-A/vers-des-transports-durables/</a></li>
</ul>
<h1 id="nucleaire-une-solution-pour-la-planete">Nucléaire : une solution pour la planète ?</h1>
<ul>
<li><a href="https://www.arte.tv/fr/videos/098818-000-A/nucleaire-une-solution-pour-la-planete/">https://www.arte.tv/fr/videos/098818-000-A/nucleaire-une-solution-pour-la-planete/</a></li>
</ul>
<p>This video is heavily criticized <a href="https://fr.linkedin.com/pulse/fabriquer-lignorance-en-documentaire-myriam-tonelotto">here</a>.</p>
<h2 id="alternative-links_4">Alternative links</h2>
<ul>
<li><a href="https://www.youtube.com/watch?v=6EBm2vWxe4o">https://www.youtube.com/watch?v=6EBm2vWxe4o</a></li>
<li><a href="https://video.ploud.fr/w/fbP5cbT2C6rbEesgoQjNEh">https://video.ploud.fr/w/fbP5cbT2C6rbEesgoQjNEh</a></li>
<li><a href="https://odysee.com/@Marie-JeanneTV:1/Nucl%C3%A9aire-une-solution-pour-la-plan%C3%A8te:e">https://odysee.com/@Marie-JeanneTV:1/Nucl%C3%A9aire-une-solution-pour-la-plan%C3%A8te:e</a></li>
</ul>
<hr>
<p>Search engine of PeerTube videos: <a href="https://sepiasearch.org">https://sepiasearch.org</a></p>I Was Born In 21002019-08-05T23:50:00+02:002019-09-04T21:36:00+02:00Romain Pellerintag:romainpellerin.eu,2019-08-05:/i-was-born-in-2100.html<p>A Short Essay</p><p>I was born in 2100.</p>
<p>A long time ago, long before I was born, people used to smoke. The very concept of smoking is unknown to many these days, so let me explain. It's as stupid as eating small rocks, or wood maybe. But it's not that. It was dried tobacco leaves. It would hurt a little the first time people would do it, and even make them caugh. But then, as they kept trying, the pain would eventually fade away. After some time, they might even start to feel some joy when doing it. Or maybe they pretended to and forced themselves to believe it. Or maybe it's the social pressure, people did't really why know but they kind of liked it. Or maybe it was the ads in the 70's and 80's. People used to "go on a cigarette break". Except that smoking does your body no good whatsoever. Quite the opposite to be honest. Smoking was killing people so slowly that most people would not even acknowledge it. They would doubt it, refute it.<br>
People were stupid.</p>
<p>A long time ago, long before I was born, people used to move around in big boxes made of steel. They called it a car. Not only did a car take up a lot of space, it also was powered with gasoline (refined crude oil, something that's long gone now). Gas cars used to cause a lot of pollution, especially in big cities. That was bad. Real bad you know. In the 20th century, in less than a few decades, all cities changed and turned into car-centric cities: everything was designed around and for cars, not for humans. People were forced to walk on narrow sidewalks. They also had to endure noise, mostly from passing cars. If that wasn't enough, the only air they could breathe was extremely polluted, causing over <a href="https://www.eea.europa.eu/media/newsreleases/many-europeans-still-exposed-to-air-pollution-2015/premature-deaths-attributable-to-air-pollution">400,000 premature deaths in Europe in 2015</a>.</p>
<p>A long time ago, long before I was born, people used to eat animals. You read it right, A-N-I-fucking-M-A-L-S. Not only wild ones. Actually, most of the eaten animals were raised in farms and fed with antibiotics. Some of them never saw the sunlight. People were slaughtering them: over 60,000,000,000 land animals were killed EVERY SINGLE YEAR in the 2000's. When it comes to sea animals, the figures were much worse... There were the hunters too, pretending to protect the environment and restoring some kind of balance. As if nature needed us for that...</p>
<p>A long time ago, long before I was born, people used to cut down trees (mostly forests) to make room for crop fields... to feed animals which would in turn... feed humans. What a stupidity. No wonder CO2 levels rose exponentially.</p>
<p>A long time ago, long before I was born, people used to worship plastic. Plastic was everywhere, all the time. Single-use plastic was a thing for sure. Plastic bottles, plastic spoons, plastic cups, plastic toys. A shit ton of plastic ended its course in oceans. It played a major role in the decline of sea animals.</p>
<p>A long time ago, long before I was born, people used to care more about jobs than they cared about the environment. Transitioning the car industry from oil to electricity? Too many people said "<em>it's gonna destroy jobs cause electric engines require much less parts and workforce</em>". It's exactly like keeping your job and then the day you retire your house gets burned down versus giving up your job and starting looking for another one but knowning that the day you retire your house will still be there. <a href="https://www.thenation.com/article/jobs-vs-environment-how-counter-divisive-big-lie/">Jobs vs the Environment</a>.</p>
<p><br /></p>
<p>But all of that is gone now, people don't do that no more. Everyone's fucking dead. Humans. Animals. Forests. Everything is gone. The planet is barely fit to live. Our unsustainable way of life killed us all. Those who remain live harsh lifes. Every day is a fight for survival, for food, for clean water, for power. Most lands people inhabited are underwater now, as the sea level is much higher than in the early 2000's.</p>
<p>It all changed at the end of the last century. The global population was reaching its peak: 10,500,000,000. In less than 20 years, the global average temperature rose by 1.5 Celsius degrees, by far exceeding the worst projections made in the beginning of the century. The Great Global Warming (GGW as they call it these days) was true after all.</p>Music2019-06-18T22:40:00+02:002019-06-18T22:40:00+02:00Romain Pellerintag:romainpellerin.eu,2019-06-18:/music.html<p>Stuff about music</p><ul>
<li><a href="http://radiooooo.com/">Radiooooo - The Musical Time Machine</a></li>
<li><a href="http://everynoise.com/">Every Noice at Once</a></li>
</ul>Hope2019-04-17T12:00:00+02:002019-07-02T15:21:00+02:00Romain Pellerintag:romainpellerin.eu,2019-04-17:/hope.html<p>Sparkles of hope</p><iframe width="700" height="394" src="https://www.youtube-nocookie.com/embed/3LvTgiWSAAE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="700" height="394" src="https://www.youtube-nocookie.com/embed/wTTMMMaTaf0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="700" height="394" src="https://www.youtube-nocookie.com/embed/Lw0ioljqNpo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<h1 id="links">Links</h1>
<ul>
<li><a href="https://www.footprintcalculator.org/">Ecological Footprint Calculator</a></li>
<li><a href="https://www.deepgreenresistance.fr/">Deep Green Resistance France</a></li>
<li><a href="https://jiec.fr/">JIEC : Journalistes d'investigation sur l'écologie et le climat</a></li>
<li><a href="http://youthforclimate.fr/">Youth For Climate</a></li>
<li><a href="https://www.courrierinternational.com/article/pays-bas-amsterdam-la-mairie-devient-vegetarienne">Pays-Bas.À Amsterdam, la mairie devient végétarienne</a></li>
<li><a href="https://standblog.org/blog/post/2019/06/30/Le-deni">Le déni</a></li>
</ul>The Happy Life2018-01-26T20:30:00+01:002019-08-22T12:36:00+02:00Romain Pellerintag:romainpellerin.eu,2018-01-26:/the-happy-life.html<p>How to live a happy life</p><iframe width="700" height="394" src="https://www.youtube-nocookie.com/embed/7lECIsRif10" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<ul>
<li><a href="https://journal.thriveglobal.com/ikigai-the-japanese-secret-to-a-long-and-happy-life-might-just-help-you-live-a-more-fulfilling-9871d01992b7">Ikigai: The Japanese Secret to a Long and Happy Life Might Just Help You Live a More Fulfilling Life</a></li>
<li><a href="https://www.genderbread.org/">The Genderbreak Person</a></li>
<li><a href="https://www.developpez.com/actu/244511/Des-experts-font-la-promotion-de-la-semaine-de-travail-de-quatre-jours-au-lieu-de-cinq-pour-eux-cela-rendrait-les-travailleurs-plus-productifs/">Des experts font la promotion de la semaine de travail de quatre jours au lieu de cinq</a></li>
<li><a href="https://usbeketrica.com/article/cyberminimalisme-temps-rencontres-biosphere">« Le cyberminimalisme libère du temps, réhabilite les rencontres, préserve la biosphère »</a></li>
<li><a href="https://www.vox.com/2019/3/27/18226563/50-years-wrong-side-of-history-future-prediction">Hindsight 2070: We asked 15 experts, “What do we do now that will be considered unthinkable in 50 years?” Here’s what they told us.</a></li>
<li><a href="https://www.demotivateur.fr/article-buzz/11-fruits-et-legumes-que-vous-ne-devriez-acheter-qu-une-seule-fois-dans-votre-vie-si-vous-apprenez-ces-petits-trucs-pour-les-regenerer-chez-vous--2972">Hackez votre supermarché : Voici 11 fruits et légumes que vous ne devriez acheter qu'une seule fois dans votre vie, si vous connaissez ces astuces !</a></li>
</ul>Disabling Voicemail2018-01-03T22:00:00+01:002019-10-05T18:54:00+02:00Romain Pellerintag:romainpellerin.eu,2018-01-03:/disabling-voicemail.html<p>How to disable your voicemail</p><p>In many scenarios, calls are forwarded to your voicemail. You may want to disable it, or re-enable it.</p>
<h1 id="1-you-are-not-picking-up-the-phone-no-reply">1. You are not picking up the phone (no reply)</h1>
<ul>
<li>Enable forwarding: call **61*(number to forward to)**(seconds to wait before forwarding)# - note that your phone will ring as long as your caller is on hold</li>
<li>Disable it and retain: call #61#</li>
<li>Disable it and forget: call ##61#</li>
<li>Reestablish: *61#</li>
<li>Check status: call *#61#</li>
</ul>
<h1 id="2-you-are-unreachable-plane-mode-phone-turned-off-no-connectivity">2. You are unreachable (plane mode, phone turned off, no connectivity)</h1>
<ul>
<li>Enable forwarding: call **62*(number to forward to)#</li>
<li>Disable it and retain: call #62#</li>
<li>Disable it and forget: call ##62#</li>
<li>Reestablish: *62#</li>
<li>Check status: call *#62#</li>
</ul>
<h1 id="3-you-are-already-on-the-phone-busy">3. You are already on the phone (busy)</h1>
<ul>
<li>Enable forwarding: call **67*(number to forward to)#</li>
<li>Disable it and retain: call #67#</li>
<li>Disable it and forget: call ##67#</li>
<li>Reestablish: *67#</li>
<li>Check status: *#67#</li>
</ul>
<h1 id="4-all-three-conditions-above">4. All three conditions above</h1>
<ul>
<li>Enable forwarding: call **004*(number to forward to)#</li>
<li>Disable it and retain: call #004#</li>
<li>Disable it and forget: call ##004#</li>
<li>Reestablish: *004#</li>
<li>Check status: *#004#</li>
</ul>
<h1 id="5-you-are-free-forward-all-incoming-calls">5. You are free, forward all incoming calls</h1>
<ul>
<li>Enable forwarding: call **21*(number to forward to)#</li>
<li>Disable it and retain: call #21#</li>
<li>Disable it and forget: call ##21#</li>
<li>Reestablish: *21#</li>
<li>Check status: *#21#</li>
</ul>
<h1 id="6-all-four-conditions-above">6. All four conditions above</h1>
<ul>
<li>Enable forwarding: call **002*(number to forward to)#</li>
<li>Disable it and retain: call #002#</li>
<li>Disable it and forget: call ##002#</li>
<li>Reestablish: *002#</li>
<li>Check status: *#002#</li>
</ul>
<h1 id="7-call-waiting-make-your-phone-ring-for-new-incoming-phones-even-if-you-are-alreay-on-the-phone">7. Call waiting: make your phone ring for new incoming phones even if you are alreay on the phone</h1>
<ul>
<li>Enable call waiting: call *43#</li>
<li>Disable it: call #43#</li>
<li>Check status: *#43#</li>
</ul>
<h1 id="complementary-information">Complementary information</h1>
<p>In France, for mobile network provider 'Free mobile', the voicemail phone number is: 06 95 60 00 11.</p>
<p><a href="https://community.giffgaff.com/t5/Tips-Guides/Turn-off-voicemail-more-handy-codes/td-p/4542132">More GSM codes here</a> and <a href="https://en.wikipedia.org/wiki/Call_forwarding">here</a>.</p>
<h1 id="tips">Tips</h1>
<p>To call someone anonymously, type: #31#(the number you are calling). To show your identity, type: *31#(the number you are calling).</p>Living In Paris: Air Purifying Houseplants2017-09-28T12:50:00+02:002022-09-24T12:11:00+02:00Romain Pellerintag:romainpellerin.eu,2017-09-28:/living-in-paris-air-purifying-houseplants.html<p>How to purify air using houseplants... or how to pretend you breath purified air.</p><p>Recently, I moved into my new apartment, in one of the most polluted cities on Earth, Paris. Therefore I decided I needed houseplants to clean the air. What an idea! Is it bullshit? Does it actually work? Who cares?! As long as it makes my apartment look cool!</p>
<p>Consequently, I started googling about evergreen houseplants that clean the air. I ended up buying the following plants:</p>
<ul>
<li><strong><a href="http://www.plantes-depolluantes.com/_plantes/spathiphyllum.php">Spathiphyllum</a></strong>: the best at improving indoor air quality!</li>
<li><strong><a href="http://www.plantes-depolluantes.com/_plantes/aglaonema.php">Aglaonema Silver Bay</a></strong>: the plant from the movie <em>Leon: The Professional</em>.</li>
<li><strong><a href="http://www.plantes-depolluantes.com/_plantes/dracaena_marginata.php">Dracaena Marginata</a></strong></li>
<li><strong>Dieffenbachia</strong></li>
<li><strong><a href="http://www.plantes-depolluantes.com/_plantes/chlorophytum.php">Chlorophytum</a></strong> (comosum? no sure about its species)</li>
</ul>
<h1 id="aglaonema">Aglaonema</h1>
<figure class="center"><img src="//romainpellerin.eu/images/air-purifying-houseplants/aglaonema.jpg" alt="Aglaonema Silver Bay" /><figcaption>Aglaonema Silver Bay, the big one on the left.</figcaption></figure>
<h2 id="temperature">Temperature</h2>
<p>Between 15°C and 25°C. Cannot tolerate below 13.</p>
<h2 id="light">Light</h2>
<p>300 lux, half shadow, must get sun light a few hours per day (no direct sunlignt though).</p>
<h2 id="watering">Watering</h2>
<p>Soil should be kept moist at all times. Don't allow it to dry otherwise it can cause leaves to drop. In summer, water twice a week. In winter, once. Don't leave standing water in the saucer.</p>
<h2 id="repotting">Repotting</h2>
<p>Repotting is from March to May, every 2 to 3 years. For an old Aglaonema, just replace the upper layer of the soil, do not repot.</p>
<h2 id="complementary-information">Complementary information</h2>
<p>Leaves and fruits are toxic for humans and pets.</p>
<h1 id="dracaena-marginata">Dracaena Marginata</h1>
<h2 id="temperature_1">Temperature</h2>
<p>Between 15°C and 22°C. Avoid below 15 (won't grow otherwise). Below 10 could damage it. Best between 20 and 22.</p>
<h2 id="light_1">Light</h2>
<p>500 lux, quite a log of light. Avoid too much direct sun light. It does not like absence of light.</p>
<h2 id="watering_1">Watering</h2>
<p>Soil must remain hardly moist. Once a week in Summer, twice a month in Winter. Mist the leaves twice a week also, if possible.</p>
<h2 id="repotting_1">Repotting</h2>
<p>Repotting is from March to May, every 2 to 3 years. Every other year, replace the upper layer of the soil, do not repot.</p>
<h1 id="spathiphyllum">Spathiphyllum</h1>
<figure class="center"><img src="//romainpellerin.eu/images/air-purifying-houseplants/dracaena-dieffenbachia-spathiphyllum-anthurium.jpg" alt="Dracaena, Dieffenbachia Spathiphyllum and Anthurium" /><figcaption>From left to right: Dracaena Marginata, Dieffenbachia, Spathiphyllum and Anthurium</figcaption></figure>
<h2 id="temperature_2">Temperature</h2>
<p>Between 15°C and 25°C. Below 10 could damage it seriously. Best between 20 and 22.</p>
<h2 id="light_2">Light</h2>
<p>A significant amount (300 lux at least) but no direct sun though. Dim light is OK.</p>
<h2 id="watering_2">Watering</h2>
<p>Once a week, a lot. Don't leave standing water! Reduce the amount of water in winter.</p>
<h2 id="repotting_2">Repotting</h2>
<p>In March, every two to three years. When not repotting, replace the upper layer of the soil.</p>
<h2 id="complementary-information_1">Complementary information</h2>
<p>Avoid dry air as well as fresh air flows. Keep it away from heaters.</p>
<p>To foster blossoming, deprive the plant of water for a few days.</p>
<h1 id="chlorophytum">Chlorophytum</h1>
<figure class="center"><img src="//romainpellerin.eu/images/air-purifying-houseplants/chlorophytum.jpg" alt="Chlorophytum" /><figcaption>Chlorophytum</figcaption></figure>
<h2 id="temperature_3">Temperature</h2>
<p>10 to 20°C. Don't go below 5.</p>
<h2 id="light_3">Light</h2>
<p>A lot! 600 lux at least. No direct sun light.</p>
<h2 id="watering_3">Watering</h2>
<p>Once a week, twice if the environment is quite hot or luminous. Don't leave standing water. The plant likes moisture. Reduce watering in winter.</p>
<h2 id="repotting_3">Repotting</h2>
<p>Every year in March or April, in a slightly bigger pot.</p>
<h2 id="complementary-information_2">Complementary information</h2>
<p>If possible, use good quality soil.</p>
<p>Also, cut off dead parts of leaves (not the whole leaf).</p>
<h1 id="dieffenbachia">Dieffenbachia</h1>
<h2 id="temperature_4">Temperature</h2>
<p>18°C to 24°C in Summer and 15 to 18 in Winter. Keep away from heaters, the plant likes moisture. Keep away from air flows.</p>
<h2 id="light_4">Light</h2>
<p>A significant amount but no direct light.</p>
<h2 id="watering_4">Watering</h2>
<p>Once a week. Don't leave standing water. Reduce watering in Winter.</p>
<h2 id="repotting_4">Repotting</h2>
<p>Every other year in March or April, in a bigger pot.</p>
<h2 id="complementary-information_3">Complementary information</h2>
<p>Leaves are poisonous.</p>
<p><br /></p>
<p>Hope this helps, folks!</p>
<h1 id="resources">Resources</h1>
<ul>
<li>Good source of information, in French: <a href="http://www.jardiner-malin.fr/">http://www.jardiner-malin.fr/</a></li>
<li>Great article in French, very helpful to me: <a href="https://www.rustica.fr/articles-jardin/24-plantes-depolluantes-qui-ameliorent-votre-maison,2136.html">24 plantes dépolluantes qui améliorent votre maison</a></li>
</ul>Millennials2017-09-02T23:50:00+02:002017-09-02T23:50:00+02:00Romain Pellerintag:romainpellerin.eu,2017-09-02:/millennials.html<p>An inspirational video about millennials</p><p><a href="https://www.youtube.com/watch?v=vudaAYx2IcE"><em>The Millennial Question</em>, by Simon Sinek.</a></p>
<iframe width="700" height="394" src="https://www.youtube-nocookie.com/embed/vudaAYx2IcE?rel=0" frameborder="0" allowfullscreen></iframe>Living In Paris: Looking For An Apartment In Paris2017-09-02T22:50:00+02:002018-03-02T15:50:00+01:00Romain Pellerintag:romainpellerin.eu,2017-09-02:/living-in-paris-looking-for-an-apartment-in-paris.html<p>My advice for apartment seekers in Paris</p><p>Looking for an apartment in Paris... is a hassle. A lot of demand, too little supply. Not to mention you always - well, almost - need rent guarantors.</p>
<h1 id="first-of-all-where-to-look-for-apartments">First of all, where to look for apartments?</h1>
<p>My three favorite ones, that gather ads from many agencies:</p>
<ul>
<li><a href="https://www.leboncoin.fr/locations/offres/ile_de_france/?th=1&ret=2&furn=1">Leboncoin.fr</a></li>
<li><a href="http://www.seloger.com/list.htm?idtt=1&naturebien=1&idtypebien=1&ci=750110,750109,750111,750118,750119,750105,750120,750117,750112,750113,750114,750106,750104&tri=a_px&surfacemin=15&si_meuble=1">Seloger.com</a></li>
<li><a href="http://www.pap.fr/annonce/locations-appartement-paris-4e-g37771g37772g37776g37777g37778g37780g37784g37785g37786g37787-a-partir-de-15-m2">Pap.fr</a></li>
</ul>
<p><strong>Pro tip</strong>: enable the alert emails so that you get an email as soon as one ad is posted, or digest emails.</p>
<p>Also, don't forget about agencies' websites. To mention a few:</p>
<ul>
<li><a href="http://www.virginia-immobilier.fr/">Virginia</a></li>
<li><a href="https://www.guy-hoquet.com/">Guy Hoquet</a></li>
<li><a href="http://www.laforet.com/">Laforêt</a></li>
<li><a href="https://www.fnaim.fr/">FNAIM</a></li>
</ul>
<h1 id="arranging-a-viewing">Arranging a viewing</h1>
<p>My tip is to always try to phone them. If no one picks up, them text the person who posted the ad if they wrote their phone number. As a last resort, email them.</p>
<p>In short, the email should look like this:</p>
<ul>
<li>State who is looking for an apartment (yourself and your gf/bf?)</li>
<li>Is the apartment still on the market? If so, when can you see it?</li>
<li>Your job(s) (CDD, CDI, trial period?), your position(s) (software engineer for instance) and your salaries. Indicate whether you have guarantors or not.</li>
<li>Leave your phone number just in case</li>
</ul>
<p>Once you've arranged a viewing, you should prepare the documents you are going to have to hand in along with the questions you want to ask.</p>
<h1 id="the-documents">The documents</h1>
<p>In Paris, landlords usually expect people to know what documents are required. However, this might drastically vary from one to another. Here is a list of must and optional ones. If you are extremelly well paid you might not need rent guarantors:</p>
<p><strong>Must</strong></p>
<ul>
<li>Copies of your ID and your rent guarantors' IDs</li>
<li>You last three payslips (and those or your guarantors)</li>
<li>Last tax notice (<em>avis d'impôts</em>)</li>
<li>Your work contract (or student certificate if still a student) and your guarantors' work contracts or some proof from their employer</li>
</ul>
<p><strong>Optional but often required</strong></p>
<ul>
<li>Three last rent receipts (<em>quittances de loyer</em>)</li>
<li>Guarantors' land tax (<em>taxe foncière</em>). <a href="https://www.frenchentree.com/french-property/local-property-taxes-taxe-fonciere-and-taxe-dhabitation/">More on this here</a></li>
<li>Guarantors' residence tax (<em>taxe d'habitation</em>). <a href="https://www.frenchentree.com/french-property/local-property-taxes-taxe-fonciere-and-taxe-dhabitation/">More on this here</a>.</li>
<li>Sworn statement from your guarantors stating they are your guarantors (<em>attestation sur l'honneur</em>)</li>
</ul>
<p><strong>Rarely required</strong></p>
<ul>
<li>Last EDF bill or sworn statement that you'be being hosted by someone (meaning you live at someone's place)</li>
<li>Proof of insurance for houses (assurance habitation)</li>
<li>Proof of residency for your guarantors</li>
</ul>
<p><strong>However, never hand in your bank details before officially signing the apartment lease.</strong>
Some agencies or landlords ask you to hand in these documents during the viewing. But most of the time, sending them over email is fine. Ask beforehand just in case.</p>
<h1 id="questions-to-ask-during-the-viewing">Questions to ask during the viewing</h1>
<p>Here are a few questions I used to ask:</p>
<ul>
<li>Does it come with a refrigerator? Oven/stove, stovetop or range? Washing machine or connections for one? Dishwasher?</li>
<li>Are windows double glazed?</li>
<li>Is the neighborhood quiet and safe?</li>
<li>How much is the brokerage fee? (if not renting directly from the landlord)</li>
<li>How much is the deposit, if any?</li>
<li>What is included in the utilities? Water, electricity, gas, heat, trash removal, Internet access, ...?</li>
<li>If there fiber optic Internet?</li>
<li>Are there window roller shutters?</li>
<li>Is the place ventilated?</li>
<li>How much is the electricity consumption per month? How bad is the insulation? (ask for the <a href="https://ec.europa.eu/energy/en/topics/energy-efficiency/buildings">building energy performance metrics</a>)</li>
<li>When is the apartment available?</li>
<li>Is the apartment eligible for APL (<em>Aide personnalisée au logement</em>)?</li>
<li>Is there a cave? Bike parking?</li>
</ul>
<h1 id="keeping-track-of-the-apartments-youve-found-and-the-viewings-youve-done">Keeping track of the apartments you've found and the viewings you've done</h1>
<p>I recommend that you create an Excel file to do that. Here is an extract of mine:</p>
<ul>
<li>Title of the ad</li>
<li>URL</li>
<li>Price per month</li>
<li>Number of rooms</li>
<li>Arrondissement</li>
<li>Address (if known)</li>
<li>Floor (lift?)</li>
<li>Square meters</li>
<li>Furnished or empty?</li>
<li>Double bed?</li>
<li>Washing machine or connections?</li>
<li>Energy perfomance</li>
<li>Availability (date)</li>
<li>Last email sent date + time (and replies and outcome)</li>
<li>Last phone call date + time (and outcome)</li>
<li>Date of arranged viewing + time</li>
<li>Phone number of the broker/landlord</li>
<li>Viewing date and time</li>
<li>Additional information</li>
</ul>
<p>That's it! Hope this helps.</p>
<h1 id="resources">Resources</h1>
<ul>
<li><a href="https://twitter.com/paldama/status/1109017746883387392">Beware of scammers</a></li>
</ul>Emotions2017-08-18T00:50:00+02:002022-09-24T12:11:00+02:00Romain Pellerintag:romainpellerin.eu,2017-08-18:/emotions.html<p>Weird emotions</p><figure class="center">
<img alt="Emotions" src="//romainpellerin.eu/images/emotions.jpg" />
</figure>
<p><em>Source: <a href="https://twitter.com/eliistender10/status/883582636567998464">https://twitter.com/eliistender10/status/883582636567998464</a> (comments say the true source is <a href="http://www.dictionaryofobscuresorrows.com/">http://www.dictionaryofobscuresorrows.com/</a>)</em></p>Fasting2017-06-26T21:50:00+02:002017-06-26T21:50:00+02:00Romain Pellerintag:romainpellerin.eu,2017-06-26:/fasting.html<p>Why fasting is good for you</p><ul>
<li><a href="https://www.youtube.com/watch?v=Fc_L22P69Mk">Le Jeûne : Une Recette Miracle ? ARTE HD Documentaire 2017</a></li>
<li><a href="https://www.youtube.com/watch?v=XMNWcYGAe6c">Le jeûne thérapeutique et le jeûne du bien-être</a></li>
</ul>Managing One's Time2017-05-03T20:50:00+02:002022-09-24T12:11:00+02:00Romain Pellerintag:romainpellerin.eu,2017-05-03:/managing-ones-time.html<p>6 laws about time</p><figure class="center">
<a href="//romainpellerin.eu/images/managing-time.png"><img src="//romainpellerin.eu/images/managing-time.png" alt="Managing time" /></a>
<figcaption>Managing one's time: 6 laws to know</figcaption>
</figure>
<p><a href="https://twitter.com/paulbrounais/status/840262793278431232" target="_blank">Credit: Paul Brounais</a>.</p>Living In The USA: Visa, Insurance, SSN, and Taxes2017-02-19T01:50:00+01:002019-04-27T00:12:00+02:00Romain Pellerintag:romainpellerin.eu,2017-02-19:/living-in-the-usa-visa-insurance-ssn-and-taxes.html<p>Everything one needs to know before applying for a visa in the US</p><p>In this article, I explain and sum up everything one needs to know to apply for a J-1 visa in the US, in order to do an internship. Everything below is based on my experience and on the instructions I received.</p>
<h1 id="visa">Visa</h1>
<p>Getting a J-1 visa for the US is a quite <a href="http://gaelleinlosangeles.com/demarches-visa-j1/">long process</a>. First and foremost, a sponsor is required. The most popular sponsor of J-1 visa programs is undoubtedly <a href="https://www.ciee.org/">CIEE</a>, a non-profit organization. But there are <a href="http://gaelleinlosangeles.com/visa-j1-choix-sponsor/">others</a>.</p>
<p>CIEE has many partners throughout the world. A good one in France is <a href="http://www.parenthese-paris.com/">Parenthèse</a>. It is the one I decided to go with, since my internship company is used to working with them.</p>
<p>Parenthèse's staff is very professional and helpful. They guided me all along the entire process.</p>
<p>However, should you decide to deal with CIEE directly, with no intermediary, you will find everything you need at <a href="https://www.ciee.org/internship-usa/">www.ciee.org/internship-usa</a>.</p>
<p>If my memory serves, the procedure is as follows:</p>
<ul>
<li>First Parenthèse emailed me a bunch of files to read and fill out (<a href="https://www.ciee.org/internship-usa/downloads/2017/CIEE_2017_Standard_INT-PCT_Application.pdf">a very long one addressed to CIEE</a>, and a short one for Parenthèse). They also ask for a copy of your passport. Fortunately, you can send them back over email.</li>
<li>Next you pay (roughly 1500€ in total).</li>
<li>By the time they get the money, Parenthèse must have sent your dossier to CIEE. You'll be contacted by them, <a href="https://www.ciee.org/internship-usa/downloads/2016/CIEE_Electronic_DS-7002_Instructions_for_Participants.pdf">asking you to provide them with your supervisor's details (on a website)</a>. Once done, your supervisor at your company will have to complete a form referred to as DS-7002. Then, you and your supervisor will both have to sign this form electronically, on the same website.</li>
<li>After a few days, Parenthèse will receive a mail with your entire dossier (DS-2019, DS-7002, SEVIS fee payment receipt, proof of insurance, and a letter for the social security). They will forward everything to you.</li>
<li>From now on, it is your responsibility to make an appointment at the US embassy. However you will need to complete an online form (the Online Nonimmigrant Visa Application, aka DS-160) beforehand. Upon completion of this form, you will have to pay a fee (152€ as of December 2016) by making a transfer. Once they receive the money, they will enable you to make an appointment. More information about that on <a href="https://fr.usembassy.gov/fr/visas-fr/visas-de-sejour-temporaire/">this website</a>. <a href="https://ais.usvisa-info.com/fr-fr/niv">Here is the French website to make an appointment.</a></li>
<li>Finally, you will get to go to the embassy. Bring your passport, DS-2019, DS-7002, DS-160, SEVIS receipt, a 5"x5" photo of you (although a regular passport photo worked for me), and a proof of ties to your home country. Do not expect anything crazy, you'll get asked a couple of questions (like what the purpose of your trip is), fingerprints scanned, and within minutes you're out! Damn stressing though. Make sure you arrive at least 15 minutes early. Here are two links to articles (written in French), about how to prepare for this interview: <a href="http://gaelleinlosangeles.com/visa-j1-l-ambassade/">Visa J1 – L’ambassade</a> and <a href="http://blog.eexit.net/usa-entretien-a-lambassade-des-etats-unis-damerique/">USA: ENTRETIEN À L'AMBASSADE DES ÉTATS-UNIS D'AMÉRIQUE</a> (the latter is outdated).</li>
<li>Roughly a week later, you will receive your passport with your visa. The last step before leaving is to complete the CIEE online orientation, which is basically an introduction to the US and what it's like to live there. You should normally have received an email with a link to that orientation.</li>
</ul>
<h1 id="insurance">Insurance</h1>
<p>Getting a visa with CIEE as a sponsor is quite expensive, but there's a reason for that: they provide you with an insurance plan. Not the best for sure - not every expense is refunded and oftentimes you'll pay copays - but it's sufficient for most people. More information on <a href="https://www.ciee.org/insurance/index.html">their website</a>.</p>
<h1 id="things-to-do-upon-arrival-sevis-and-social-security-number">Things to do upon arrival: SEVIS and Social Security Number</h1>
<p>First, make sure to carry your insurance card and passport with visa with you at all times.</p>
<p>At the airport, you will be required to show the following documents:</p>
<ul>
<li>Passport with visa</li>
<li>DS-2019</li>
<li>SEVIS fee payment receipt </li>
</ul>
<p>Then, there are a few <a href="http://www.parenthese-paris.com/etudiants/visa-j1-intern/sur-place-usa/des-votre-arrivee-aux-usa/">things to do in the next few days</a>. In the correct order, these things include:</p>
<ul>
<li>Registering for SEVIS by calling CIEE at 1-888-268-6245. Make sure you have your DS2019 form with you when calling since they are going to ask for your number, which begins with "N00". <strong>Do not register before the DS-2019 program start date.</strong> Provide them with your home address, email address, and American phone number at the same time.</li>
<li>If you don't have a Social Security card, print a copy of your i94 number at <a href="https://www.cbp.gov/i94">www.cbp.gov/i94</a>.</li>
<li>If you don't have a Social Security card, register for a Social Security number <strong>at least 2 days after registering for SEVIS and 10 days after entering the US</strong>: visit your local social security office (find one on <a href="https://www.ssa.gov/locator/">www.ssa.gov/locator</a>). You can visit them without any appointment. There, bring:<ul>
<li>Your DS2019 form</li>
<li>The letter "Dear social security officer", provided by CIEE</li>
<li>Your passport with your visa</li>
<li>Your i94 number (make sure to print the page from the official website, they do not accept any other paper).</li>
</ul>
</li>
</ul>
<p>After you have applied, the Social Security office will provide you with a "Proof of Application" document. This receipt may enable you to receive paychecks and open a bank account. You should check the status of your application within seven to ten days of submission by visiting a social security office. In case of problem, call CIEE. Then the card will arrive by mail within a few weeks (3 tops, otherwise contact CIEE). This card will be valid for your entire life.</p>
<p>It is also advised to get a state ID card to avoid carrying your passport everywhere.</p>
<p>Likewise, opening a bank account could be useful and sometimes necessary to get paid.</p>
<p>You should notify CIEE of any change in US home address, phone number or email address within 10 days of the change.</p>
<p>During your internship, you'll get two online evaluations to complete, one at mid-point and one at the end of the program. Your supervisor will get online evaluations to complete too. Should there be a problem (you or your supervisor didn't get the emails about the evaluation, for example), email CIEE at <a href="mailto:evals@ciee.org">evals@ciee.org</a>.</p>
<h1 id="trips-outside-of-the-usa">Trips outside of the USA</h1>
<p>If you intend to go out of the USA temporarily, call CIEE at least 3 weeks prior to your departure. You will have to do some paperwork and CIEE will need to countersign your DS-2019. Each trip cannot exceed 30 days.</p>
<h1 id="things-to-do-upon-departing">Things to do upon departing</h1>
<p><a href="https://www.irs.gov/individuals/international-taxpayers/departing-alien-clearance-sailing-permit">Nothing ("<em>Aliens Not Required To Obtain Sailing or Departure Permits</em>")</a>, as far as I remember. Maybe change your personal details on your bank account, such as your home address.</p>
<h1 id="taxes">Taxes</h1>
<p>First of all, this <a href="http://www.parenthese-paris.com/etudiants/visa-j1-intern/sur-place-usa/declaration-dimpots-aux-usa/">article from Parenthèse</a> is quite useful for French expats.</p>
<p>Also, here are some resources as to how to file your tax return (form 1040NR-EZ for J1 visas) if you want to do it by yourself instead of using a third party online service such as <a href="https://www.taxback.com/en/">TaxBack</a> or <a href="https://www.turbotax.com/">TurboTax</a> (TurboTax is not compatible with J1 visa holders):</p>
<ul>
<li><a href="http://www.visa-j1.fr/comment-remplir-le-formulaire-w-4/">Comment remplir le formulaire W-4 ?</a></li>
<li><a href="https://www.irs.gov/forms-pubs/about-form-1040nr-ez-us-income-tax-return-for-certain-nonresident-aliens-with-no-dependents">About Form 1040-NR-EZ, U.S. Income Tax Return for Certain Nonresident Aliens With No Dependents</a></li>
<li><a href="https://cms.montgomerycollege.edu/edu/department2.aspx?id=38693">1040NR-EZ line by line instructions</a></li>
</ul>
<p>As to me, well I used TaxBack.com. How did it go? Would I recommend their service? Everything you need to know right below.</p>
<h2 id="taxbackcom-for-j1-visa-holders">TaxBack.com for J1 visa holders</h2>
<h3 id="pros">Pros</h3>
<ul>
<li>It's the only online service (that I found) that also handles J1 visas.</li>
<li>They take care of everything, which means you save yourself approximatively a day of hassle.</li>
<li>They customer support is very good. They usually respond to emails within a day.</li>
<li>Their website, although a bit old, is convenient. They offer separate pages for each of your tax refund applications, with a step by step timeline showing you where your file is, in regard to the entire process (from submitting the required files and your W2 form to "you got your money on your bank account"). They handle FICA and US tax applications individually, on distinct pages.</li>
<li>An online chat, very responsive.</li>
<li>They take care of sending all the papers to IRS in the US, in your place.</li>
<li>They can transfer your money back to any bank account in the world, in any currency. I believe the IRS is much more restrictive (only a cheque or transfer in USD on a US bank account?).</li>
</ul>
<h3 id="cons">Cons</h3>
<p><strong>EXPENSIVE</strong>: oh boy don't you expect them to be cheap. From the amount I was supposed to get back, they subtracted:</p>
<ul>
<li>Processing fees</li>
<li>Handling fees</li>
<li>Bank transfer fees ($35 per transfer)</li>
</ul>
<p>Also they applied a very disadventageous exchange rate (USD to EUR): between May 1 and May 11 (today), the official exchange rate fluctuated between 0.83 and 0.84. They used 0.79052 for my transfer, which occured some day between these two dates. You read it well.</p>
<p>Before using their service, you'd better read <a href="https://www.taxback.com/en/tax-service-fees/">this page</a> very carefully. As an example, I was supposed to get $1156.91 back from FICA. The processing fee was $231.38 and the handling fee was $46.28. <strong>They kept 24% of my refund.</strong> Plus a $35 bank transfer fee. Geez! Not sure my time is worth that much money, after all. Maybe I should have taken the time to fill the documents by myself...</p>
<h2 id="taxes-on-bank-interest-for-nonresident-aliens">Taxes on bank interest for nonresident aliens</h2>
<p>This topic is still quite unclear to me, but apparently it's "nontaxable and nonreportable", as per <a href="https://www.irs.gov/individuals/international-taxpayers/federal-income-tax-withholding-and-reporting-on-other-kinds-of-us-source-income-paid-to-nonresident-aliens">Federal Income Tax Withholding and Reporting on Other Kinds of U.S. Source Income Paid to Nonresident Aliens</a>. Even when you're no longer living in the US.</p>
<p><a href="https://busfin.osu.edu/sites/default/files/nrafaqs.pdf">This other document</a> says:</p>
<p>"<em>My only income was some bank interest. Do I have to file a tax return?</em>"</p>
<p>"<em>A: If you are a nonresident alien, bank interest is excluded from your U.S. income under a special tax rule intended to encourage foreign investment in the United States. </em>"</p>
<p><strong>Good to know</strong>: banks and credit unions send every year in January a document (FORM 1099) that lists earned interest only if above $10.</p>
<p>Also bear in mind that some credit unions refer to interest as dividends:</p>
<ul>
<li><a href="https://budgeting.thenest.com/report-dividends-credit-union-account-24324.html">How to Report Dividends from a Credit Union Account</a></li>
<li><a href="https://money.stackexchange.com/questions/14460/difference-between-dividend-and-interest">Difference between dividend and interest</a></li>
<li><a href="https://www.irs.gov/faqs/interest-dividends-other-types-of-income/1099-div-dividend-income">1099-DIV Dividend Income</a>: "<em>Certain distributions commonly referred to as dividends actually should be reported as interest</em>"</li>
</ul>
<p>Finally, a few additional links related to the topic:</p>
<ul>
<li><a href="https://www.irs.gov/individuals/international-taxpayers/taxation-of-nonresident-aliens">Taxation of Nonresident Aliens</a></li>
<li><a href="https://scheller-international.com/blog-beitraege/the-ins-and-out-of-us-taxation-for-german-citizens.html">The Ins and Out of US Taxation for German Citizens</a></li>
<li><a href="https://www.irs.gov/pub/irs-pdf/p519.pdf">Publication 519: U.S. Tax Guidefor Aliens</a></li>
</ul>
<p><br /></p>
<p>That's it! Hope it was helpful.</p>Living In The USA: Skiing2017-02-15T20:50:00+01:002017-02-19T01:28:00+01:00Romain Pellerintag:romainpellerin.eu,2017-02-15:/living-in-the-usa-skiing.html<p>Two days spent skiing in the US!</p><p>Last weekend, my boss took me to Heavenly Moutain Resort, near Lake Tahoe, at the border between Northern California and Nevada. With his wife and some of their friends, we went there for the weekend. Despite pretty bad road conditions (two major roads closed because of the snow and a mudslide), we eventually made it there, at 6pm on Saturday.</p>
<p>The next day, we had a clear blue sky and great snow on the slopes. Monday was almost as good.</p>
<p>Below is a video of these two days.</p>
<iframe width="700" height="394" src="https://www.youtube-nocookie.com/embed/Qpw-btGnWt4?rel=0" frameborder="0" allowfullscreen></iframe>
<p>This resort is extremely pricey. It was $144.72 (tax incl.) for ski rental (for 2 days). Plus $135 per day to get a lift ticket (so $270 for 2 days). But the view from the top is breathtaking.</p>
<p>One noticeable difference with the French Alps is that ski runs are quite short, at most 15 minutes. At the end of the day, you've spent 1/3 of your time on a chairlift.</p>
<p>All in all, it was a great sojourn! We hit the road again on Monday afternoon, headed back to home.</p>Living In The USA2017-01-30T16:55:00+01:002022-09-24T12:11:00+02:00Romain Pellerintag:romainpellerin.eu,2017-01-30:/living-in-the-usa.html<p>My life in the USA since I moved there in January 2017.</p><p><strong>Friday, January 27, 2017</strong>: I took off from Paris CDG, headed to San Francisco, California. I traveled with WOW Air and had a 2-hour layover in Iceland. We flew over Greenland and Northern Canada. Stunning landscapes!</p>
<figure class="center">
<img src="//romainpellerin.eu/images/living-usa/greenland.jpg" alt="Greenland" />
<figcaption>Greenland</figcaption>
</figure>
<figure class="center">
<img src="//romainpellerin.eu/images/living-usa/nothern_canada.jpg" alt="Northern Canada" />
<figcaption>Northern Canada</figcaption>
</figure>
<p>As I am writing these lines, I already moved in in my new home for the next 6 months: a room in a shared apartment, located between the University of San Francisco and the <a href="https://en.wikipedia.org/wiki/Painted_ladies">Painted Ladies</a>. We are only two people living in this apartment. The neighborhood is mostly residential. I am close to many grocery stores, very convenient! Moreover, there is an awesome neighborhood located within a walkable distance, called Hayes Valley, which is supposedly the French neighborhood. Indeed, there is a significant number of French businesses (restaurants, a <em>boulangerie</em>, etc.). The area is known for its artistic shops.</p>
<p>So, what's the purpose of my trip there? Well, I will be interning at a French company who recently (2013) opened offices in San Francisco to expand their business. This internship is the last step required for me to graduade.</p>
<p>In this article, I will explain and describes my daily life there. Hence, this article will be updated on a regular basis.</p>
<h1 id="places-i-want-to-visitthings-i-want-to-do-while-im-there">Places I want to visit/Things I want to do while I'm there</h1>
<p>First, I want to take advantage of being in California to travel a bit and expand my knowledge of the American culture. So, I'd like to do and see:</p>
<h2 id="in-san-francisco">In San Francisco</h2>
<ul>
<li>Go see whales</li>
<li><s>Alcatraz</s></li>
<li>Coit Tower</li>
<li><s>A jazz club (I went to Mr. Tipple's Recording Studio)</s></li>
<li>San Francisco National Cemetery</li>
<li><s>Explore the golden gate park (especially the Japanese stuff)</s></li>
<li><s>Walk on the Golden Gate Bridge</s></li>
<li>Attend a baseball game</li>
<li><s>Go to a concert venue</s> (I went to a stand up comedy show)</li>
<li>Attend an ice hockey match</li>
<li><s>Chinatown</s></li>
<li><s>Japantown</s></li>
<li><s>Union Square</s></li>
<li><s>Grand Hyatt (Love sign)</s></li>
<li><s>Twin Peaks</s></li>
<li><s>Mission Dolores Park</s></li>
<li><s>Baker Beach</s></li>
<li>Bernal Heights Park</li>
</ul>
<h2 id="los-angeles">Los Angeles</h2>
<ul>
<li><s>The pier which appeared in La La Land</s></li>
<li>The jazz clubs from La La Land (I got to see the Light House cafe from the outside)</li>
<li>Long Beach</li>
<li><s>SpaceX (Hawthorne)</s></li>
<li><s>Malibu</s></li>
<li><s>Griffith Observatory</s></li>
<li><s>Santa Monica (go to the pier)</s></li>
</ul>
<h2 id="las-vegas">Las Vegas</h2>
<ul>
<li><s>The Roller Coaster (New York-New York Hotel)</s></li>
</ul>
<h2 id="other">Other</h2>
<ul>
<li>Stanford University</li>
<li><s>Yosemite National Park</s></li>
<li><s>Brice Canyon</s></li>
<li><s>Zion National Park</s></li>
<li><s>Sequoia National Park</s></li>
<li>Sonoran desert</li>
</ul>
<p><br /></p>
<p>Let us now talk about my first few days on the American soil.</p>
<h1 id="cell-phone-plans">Cell phone plans</h1>
<p>When I started looking for cell phone plans, I quickly realized how expensive they are here in the US. There are basically four big companies driving the market (known as the Big Four), namely T-Mobile, Verizon, AT&T and Sprint. Appart from them, there are dozens of MVNOs operating on the Big Four's networks. Note that in America, there are different kind of technlogies in use. The two most common ones are CDMA and GSM. In Europe, the huge majority of people rely on GSM. However, phones are nowadays compatible with both technologies (at least the newest phones).</p>
<p>At first, I wanted to go with MetroPCS, an MVNO which uses T-Mobile as a host network. I wasn't entirely sure my phone would work with CDMA, and since MetroPCS (and T-Mobile) are based on GSM, it sounded like a good plan. Plus they have a $30 plan with everything unlimited (including data at 3G speed) and 3GB of 4G. Decent. Turned out that, for some reason, my phone did not detect their SIM card so I ended up with T-Mobile and a $40 plan which offers pretty much the same features.</p>
<p>Compared to my 20€ all unlimited plan with 50GB of 4G, back in France, well that's damn expensive.</p>
<h1 id="housing">Housing</h1>
<p>Not as bad as it is in Amsterdam (in 2015 I had to find a place there, a total disaster) but yet quite complicated. I found my room on <a href="http://www.craigslist.com/">www.craigslist.com</a>, which I would definitely recommend. I read somewhere that <a href="http://www.easyroommate.com/">www.easyroommate.com</a> is not bad either.</p>
<p>Luckily, my appointment to see the room was on the day following my arrival, so I was able to move in that very same day.</p>
<h1 id="bedding">Bedding</h1>
<p>However, my "landlord" could not provide me with bed sheets. He however suggested that I go to ROSS to get some, since they are fairly cheap there. I had a hard time figuring out how bed sheet sizes work in the US. I learned the hard way that they go by weird names: King, Queen, Full to name a few.</p>
<figure class="center">
<img src="//romainpellerin.eu/images/living-usa/mattress-size.png" alt="Mattress sizes" />
<figcaption>Taken from <a href="https://www.mattresscloseouts.com/mattresses/mattresses-by-size/queen.html">this website</a></figcaption>
</figure>
<p>Eventually, I managed to buy bed sheets; I even learned a lot of vocabulary. For instance <em>drap housse</em> translates to <em>fitted sheet</em>, that's good to know!</p>
<h1 id="banking">Banking</h1>
<p>In the US, they have not only banks but also credit unions. Confusing at first, I googled the difference. I think I'll choose a credit union to get an account.</p>
<p>Essentially, a credit union is non-profit, so it has lower fees.</p>
<p><em>Edit:</em> yay I just got my first american debit card! Out of all the credit unions available in San Francisco, I picked Redwood Credit Union. They don't charge any fees as long as I maintain a balance of $75 on my savings account, and I can withdraw money from "other" ATMS three times a month for free. That's perfect for me! They also offer online banking for free... but their website is like 10 years old. Not user-friendly whatsoever. But I don't mind :)</p>
<h1 id="taxes-in-the-us">Taxes in the US</h1>
<p>It is still a total mystery to me. Apparently, most people pay too much taxes and they can get back a part of it, at the beginning of each year. Below are a few links giving more details about that:</p>
<ul>
<li><a href="http://gaelleinlosangeles.com/bien-remplir-w-4/">Bien remplir son W-4</a></li>
<li><a href="http://gaelleinlosangeles.com/preparer-son-tax-return/">Préparer son tax return</a></li>
<li><a href="http://gaelleinlosangeles.com/faire-son-tax-return/">Faire son tax return</a></li>
</ul>
<h1 id="grocery-shopping">Grocery shopping</h1>
<p>Finally, one needs to know that shopping is insane here in America. They have drugstores featuring pharmacies, what a weird concept for a Frenchman like me! Some of them are as big as supermarkets. They also have actual supermarkets and convenience stores. Target, Safeway, CVS, Walgreens, Trader's Joe, you name it! I'm still trying to figure out which one is the cheapest though.</p>
<p><em>Edit:</em> I went to Trader Joe's a couple of times. <a href="http://gaelleinlosangeles.com/passion-trader-joes/">I really like it</a>. I think I'll stick with it.</p>
<p><br /></p>
<p>That's it for now. Stay tuned!</p>
<h1 id="fun-stuff-to-do-in-san-francisco">Fun stuff to do in San Francisco</h1>
<ul>
<li><a href="http://www.7x7.com/where-to-watch-movies-outside-this-summer-1787120123.html">Where to Watch Movies Outside This Summer</a></li>
<li><a href="http://www.calacademy.org/nightlife">NightLife at the California Academia of Sciences</a></li>
<li><a href="http://www.lindyinthepark.com/about/free-lesson/">Lindy in the Park’s FREE beginner’s lesson every Sunday 12 to 12:30 p.m.</a></li>
<li><a href="http://sf.funcheap.com/events/">San Francisco Events & Things to Do</a></li>
<li><a href="http://www.notfortourists.com/Overview.aspx/SanFrancisco/Nightlife">San Francisco / Nightlife</a></li>
</ul>
<h1 id="complementary-information">Complementary information</h1>
<ul>
<li><a href="http://gaelleinlosangeles.com/transfert-dargent/">Transfert d’argent</a></li>
<li><a href="http://gaelleinlosangeles.com/differences-insolites-france-etats-unis/">Différences insolites France / Etats Unis</a></li>
<li><a href="http://gaelleinlosangeles.com/les-differences-france-etats-unis-part-ii/">Les différences France / Etats-Unis, Part II</a></li>
<li><a href="http://gaelleinlosangeles.com/to-do-list/">To-Do List</a></li>
<li><a href="https://blog.eexit.net/usa-preparer-son-stage-pour-les-etats-unis/">USA: Préparer son stage pour les États-Unis</a></li>
</ul>Political Notes2017-01-10T00:50:00+01:002018-11-29T21:00:00+01:00Romain Pellerintag:romainpellerin.eu,2017-01-10:/political-notes.html<p>Thoughts about politics</p><p><strong><em>This is a draft article.</em></strong></p>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Social_liberalism">Social liberalism</a></li>
<li><a href="https://en.wikipedia.org/wiki/Fiscal_conservatism">Fiscal conservatism</a></li>
<li><a href="https://stallman.org/#politics">Richard Stallman's Political Articles</a></li>
<li><a href="https://www.stallman.org/archives/2016-nov-feb.html">Richard Stallman's Political Notes</a></li>
<li>The retirement age should be increased gradually as life expectancy improves. There should not be an upper limit: anyone must be able to keep working as long as they want. However there should be a minimum age.</li>
<li>Gay couples should have the <strong>exact same rights</strong> as straight couples, especially regarding marriage and adoption. Preventing them from accessing such basic rights is just as stupid as preventing women from voting. Once the norm, it would nowadays sound ridiculous and outrageous.</li>
<li>I am in favor of abortion.</li>
<li>Public institutions and schools should <strong>not</strong> rely on proprietary software like Microsoft Windows. A GNU/Linux-based distribution should be de-facto installed on every computer. Proprietary software could be used as a last resort when special requirements apply (a specific software program for instance). This way, governments would save millions of euros/dollars (licenses are expensive).</li>
<li>Healthcare should be universal and free. By free, I mean paid for by the government through tax revenue. Not by private companies whatsoever. It's not about how much one values a car, it's about us as human beings.</li>
<li>We should all aim at reducing pollution. Sales of new diesel cars should be forbidden <strong>NOW</strong>. Then, within the next five to ten years, <a href="http://www.ibtimes.co.uk/netherlands-wants-ban-non-electric-car-sales-by-2025-1576071">All non-electric car sales should be banned</a>. <a href="http://www.pcmag.com/article2/0,2817,2423424,00.asp">Hybrid cars are just a temporary solution.</a> It misses the long-term goal.</li>
<li>The working hours of a week should be negotiable on a 35 to 40-hour base, for a full-time worker.</li>
<li>Basic income has to be taken into consideration seriously and experimented for that global population is climbing at a high pace towards <a href="https://esa.un.org/unpd/wpp/Graphs/Probabilistic/POP/TOT/">10B people by 2060</a> and a great number of jobs will soon by replaced by robots. I am not saying that it is the right way to go. Instead, I truly believe this could be a workable solution. Of course taxation would have to be reformed in order to finance it.<ul>
<li><a href="https://techcrunch.com/2016/10/09/industrial-robots-will-replace-manufacturing-jobs-and-thats-a-good-thing/">Industrial robots will replace manufacturing jobs — and that’s a good thing</a></li>
<li><a href="http://www.bbc.com/news/technology-34066941">Will a robot take your job?</a></li>
<li><a href="https://www.replacedbyrobot.info/">Will your job be replaced by a robot?</a></li>
</ul>
</li>
<li>Marijuana (cannabis) consumption should be legal. Both medical and recreational use should be allowed and regulated by heavy taxation. <a href="http://www.reuters.com/article/idUSL5730185">As seen in the Netherlands</a>, <a href="http://news.berkeley.edu/2011/09/13/lessons-from-dutch-cannabis-system/">consumption in countries where it is legal tends to be lower than countries where it is not</a>. Instead of wasting millions in the fight against it (which has proven to be ineffective), a smaller amount of money should be invested in prevention through media campaigns and events.</li>
</ul>
<h1 id="interesting-resources">Interesting resources</h1>
<ul>
<li><a href="https://rev-parti.fr/base-programmatique/">Parti écologiste antispéciste et non-violent, pour la justice économique globale et les droits des humains, des non humains et des écosystèmes.</a></li>
</ul>The Art Of Writing2016-01-27T18:15:00+01:002017-01-18T01:50:00+01:00Romain Pellerintag:romainpellerin.eu,2016-01-27:/the-art-of-writing.html<p>How to write reports, CVs, cover letter, the proper way, with the most perfectly suited tool, LaTeX.</p><p>Writing any kind of profesionnal document in English is not a straightforward thing, especially if it's not something you do on a regular basis. There are rules to stick to, a formatting to respect, mistakes to avoid. Readers must be able to find information quickly, at the right place. Might it be either in a glossary, a footnote, an appendix, and so on., you must follow a specific order.</p>
<p>This year, I decided to write my internship report in English and thus stick to what English readers are used to. In general, thoses rules are almost the same as in French, almost. However, there are a few significant differences you'd better know.</p>
<p>I'm going to first explain how I would write a technical report — it works for an internship report as well, since it's supposed to be technical.</p>
<h1 id="writing-a-report">Writing a report</h1>
<p>I decided to base my report on <a href="https://en.wikipedia.org/wiki/Book_design">a book design</a>. However, you can find <a href="https://en.wikibooks.org/wiki/Professional_and_Technical_Writing/Table_of_Contents">here a complete guide about profesionnal and technical writing</a>.</p>
<p>The report is done in <strong>a two-sided printing style</strong>. Here is the plan I would follow for an internship or a technical report:</p>
<ul>
<li>Cover (1 page)</li>
<li><em>Blank page</em></li>
<li>Acknowledgments (1 page)</li>
<li><em>Blank page</em></li>
<li>Table of contents</li>
<li>Table of figures and tables</li>
<li>Foreword (including a technical summary) (<a href="http://www.writersandeditors.com/preface__foreword__or_introduction__57375.htm">what is the difference between a preface, a foreword, and an introduction?</a>)</li>
<li><strong>Introduction - BODY MATTER - Conclusion</strong></li>
<li>Glossary and index if needed (on the same page)</li>
<li>Bibliography</li>
<li>Appendices (must start on a right-hand (odd-numbered) page, so add a blank page right before if needed): 1 page containing the title "<em>Appendices</em>", and then the actual appendices</li>
</ul>
<p>Do you need a <strong>glossary</strong>? I will mostly depends on your audience. Glossaries are meant to define complex or unsual words. Glossaries should also contain the definitions of any acronym used. One rule of thumb is pretty simple: who is your audience? Who will read your report. If the answer is people like you, who have the same knowledge, and who will likely understand the report well, then no need for a glossary. On the contrary, if it's intended to be read by anyone, then you likely need a glossary.</p>
<p><strong><a href="https://en.wikipedia.org/wiki/Index_(publishing)">An index</a></strong> is mostly encountered within novels but you might add it in the glossary (add the page numbers after the definitions). It's generally not mandatory at all.</p>
<p><strong>Footnotes</strong> are rather different. There are meant to add short pieces of information not necessarly related to the main content (like anecdotes, complementary information, web links). In regular books, you might encounter notes at the end of them, which purpose is approximatively the same. However, it's a bit annoying, as it interrupts the flow of reading. It's better suited for long footnotes that wouldn't fit at the bottom of a page. Personally, I don't write notes at the end of a document, I would rather write footnotes. And sometimes, when footnotes are extremely short, you might want to use either <a href="http://english.stackexchange.com/questions/250492/what-is-the-difference-between-a-dash-and-a-semicolon/250494#250494">a dash or a semicolon to add complementary information</a>.</p>
<p><strong>Appendices</strong> are for any other document you haven't produced yourself, or big ones, like charts, graphs or emails. They should not be an important part, the reader must be able to understand your point without seeing the appendix. Otherwise, it must go in the main content.</p>
<p>Pay attention to <strong>headings</strong>, there are <a href="http://titlecapitalization.com/">different rules regarding capitalization</a>.</p>
<h1 id="writing-a-formal-business-letter">Writing a formal business letter</h1>
<ul>
<li><a href="http://www.dailywritingtips.com/how-to-format-a-us-business-letter/">How to format it (the layout)</a> (<strong>read the comment as well</strong>)</li>
<li>The Closing: use "Yours sincerely" when you know your recipient's name, otherwise use "Yours faithfully". If you know the person quite well, you can use "Best regards" or "Kind regards".</li>
</ul>
<h1 id="using-modern-tools">Using modern tools</h1>
<p>There are great tools out there to write beautiful reports, not to mention Microsoft Word, Pages or LibreOffice Writer. But these ones are too focused on the form instead of the content. People spend way too much time formatting, adding colors, setting the margins, and so forth, instead of... writing the actual content. Moreover, between two given versions of the same program (let's say Word 2003 and Word 2007), there might be huge differences introducing compatibility issues, not easily solvable.</p>
<p>So, is there some sort of an ultimate solution? The answer is <strong>YES</strong>. Let me introduce LaTeX.</p>
<h2 id="latex">LaTeX</h2>
<p>Basically and quickly, it's an open source tool written a while ago which allows you to write any kind of document and export them as PDF (and some other formats). You can write books, reports, CVs, slides, anything! You write it as plain text surrounded with some sort of code (it's a markup language actually). It's available on Linux, Mac and Windows. As it's plain old text, there's no compatibility issue <strong>at all</strong>. What is more, LaTeX doesn't evolve that much over years so. Should it does some day, they will always ensure backward compatibility. When you're done with it, you just compile it and you're good: a beautiful PDF is procuded. There are plenty of tools available for each platform. For instance, I recommend <code>pdflatex</code> on Linux. And if you're too lazy to install any of them, use <a href="https://www.sharelatex.com/">ShareLaTeX</a>.</p>
<p><a href="https://github.com/scottkosty/install-tl-ubuntu/blob/master/install-tl-ubuntu">See this tutorial to install the latest version of LaTeX.</a>. Otherwise, you might install it using your system package manager:</p>
<div class="highlight"><pre><span></span><code>sudo aptitude install texlive-full biber <span class="c1"># biber is for the bibliography</span>
</code></pre></div>
<p>Then, make sure LaTeX's package manager is working:</p>
<div class="highlight"><pre><span></span><code>sudo aptitude install xzdec
tlmgr init-usertree
tlmgr update --list
</code></pre></div>
<p>In the following lines, I will give some pieces of advice regarding LaTeX and how to use it properly but I will assume you already have some knowledge about it. My purpose is not to write a tutorial about LaTeX at all. These are mainly reminders for myself.</p>
<p>You can find some examples of CVs, cover letters, reports and slideshows on <a href="https://github.com/rpellerin/LaTeX-templates">my GitHub account</a>. For advice about CVs, <a href="//romainpellerin.eu/how-not-to-get-hired.html">see my article "How Not To Get Hired"</a></p>
<h3 id="the-commands-input-and-include">The commands <code>\input{}</code> and <code>\include{}</code></h3>
<p><code>\input{}</code> doesn't do <code>\newpage</code>, unlike <code>\include{}</code>. <a href="http://tex.stackexchange.com/questions/246/when-should-i-use-input-vs-include">More info</a>.</p>
<h3 id="splitting-files">Splitting files</h3>
<p>Is a best practice. I personally try to have "conf" files and "content" files. Then I gather them in the main Tex file (thanks to <code>\input{}</code>), which will be compiled eventually.</p>
<h3 id="bibliography">Bibliography</h3>
<p>It's a really important part of any report or publication. Basically, there are two engines to compile the ".bib" file: <code>bibtex</code> and <code>biber</code>. As well, there are two LaTeX packages to format citations and bibliographies: <code>natbib</code> and <code>biblatex</code>. I personally recommend using <strong><code>biber</code></strong> and <strong><code>biblatex</code></strong>. <a href="http://tex.stackexchange.com/a/25702/96790">Read here why.</a>.</p>
<h3 id="going-further-with-latex">Going further with LaTeX</h3>
<ul>
<li><a href="http://framabook.org/docs/latex/framabook-versionenligne_v1_5.pdf">Tout ce que vous avez toujours voulu savoir sur LATEX sans jamais oser le demander</a></li>
<li><a href="http://xoph.co/20111024/latex-tutorial/">Everything You Wanted To Know About TeX, But Were Too Afraid To Ask</a></li>
<li><a href="http://doc.ubuntu-fr.org/latex">Documentation Ubuntu FR</a></li>
<li><a href="http://tex.stackexchange.com/questions/95483/how-to-remove-everything-related-to-tex-live-for-fresh-install-on-ubuntu/95502#95502">How to remove everything related to TeX Live for fresh install on Ubuntu?</a></li>
</ul>
<h2 id="unix-tools">Unix tools</h2>
<p>Now that you started using LaTeX (I'm glad you did!), you might wonder how to check spelling, grammar, conjugation, etc.? Actually, there are dozens of tools for Linux.</p>
<h3 id="grammar-and-style">Grammar and style</h3>
<p><a href="http://dsl.org/cookbook/cookbook_15.html#SEC220">Here are two old fashionned tools to check grammar and style</a>, installable with</p>
<div class="highlight"><pre><span></span><code>sudo apt-get install diction
</code></pre></div>
<p><code>diction</code> and <code>style</code> are both great tools but don't trust them completely, they tend to be really strict.</p>
<h3 id="spelling">Spelling</h3>
<p>There are three main tools really wide spread among the Linux community</p>
<ul>
<li><code>aspell</code></li>
<li><code>ispell</code></li>
<li><code>hunspell</code></li>
</ul>
<p>They mostly do the same job. However, I would rather recommand <code>aspell</code> as it's the preferred tool for programmers (<a href="http://blog.binchen.org/posts/what-s-the-best-spell-check-set-up-in-emacs.html">source</a>).</p>
<div class="highlight"><pre><span></span><code>aspell -l en-US -c -t <file.tex>
</code></pre></div>
<h3 id="general-tools">General tools</h3>
<h4 id="textlint">TextLint</h4>
<p>Another awesome tool to check the style, mostly.</p>
<div class="highlight"><pre><span></span><code>git clone https://github.com/DamienCassou/textlint
<span class="nb">cd</span> textlint
./textlint.bash <span class="se">\</span>
<file.tex> <span class="se">\</span>
./Linux32/pharo <span class="se">\</span>
./TextLint.tmbundle/Support/TextLint.image
</code></pre></div>
<p>They also offer a <a href="http://textlint.lukas-renggli.ch/">web application</a>.</p>
<h4 id="languagetool">LanguageTool</h4>
<p>Finally, here is a general word/grammer checker (probably one of the best): <a href="https://languagetool.org/">languagetool.org</a>. According to their <a href="http://wiki.languagetool.org/checking-la-tex-with-languagetool">official documentation regarding LaTeX</a>, the best way to check any file is as follows. You will need Java version 8 or higher.</p>
<div class="highlight"><pre><span></span><code>sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo update-alternatives --config java
sudo update-alternatives --config javac
java -version <span class="c1"># Make sure it worked</span>
</code></pre></div>
<p>Now, <a href="https://languagetool.org/#download">download languagetool (stand-alone version for Desktop)</a>. Then:</p>
<div class="highlight"><pre><span></span><code>detex <file.tex> <span class="p">|</span>java -jar languagetool-commandline.jar -l en-US -c UTF-8 <span class="p">|</span>less
</code></pre></div>
<p><code>detex</code> will turn your Tex file into a plain text one (it will remove the LaTeX formatting). You can disable rules. Simply add the argument <code>-d</code> with the rules' IDs (as many as you want), for example:</p>
<div class="highlight"><pre><span></span><code>java -jar languagetool-commandline.jar -l en-US -c UTF-8 -d <span class="s1">'EN_QUOTES,UPPERCASE_SENTENCE_START'</span> <file.tex>
</code></pre></div>
<h1 id="books">Books</h1>
<p>To conclude, here a two famous books to produce high-quality documents in English:</p>
<ul>
<li><a href="https://en.wikipedia.org/wiki/The_Chicago_Manual_of_Style">The Chicago Manual of Style</a>: the ultimate book to learn how to write documents in English and be the perfect writer. Best suited for journalists.</li>
<li><a href="https://en.wikipedia.org/wiki/The_Elements_of_Style">The Elements of Style</a>: a short and yet excellent book to know the basic rules and avoid common mistakes and pitfalls.</li>
</ul>
<h1 id="great-articles">Great articles</h1>
<ul>
<li><a href="http://www.uni.edu/~gotera/gradapp/stmtpurpose.htm">How to Write a Great Statement of Purpose</a></li>
</ul>Machine Learning And AI2015-11-28T13:14:00+01:002017-01-31T23:47:00+01:00Romain Pellerintag:romainpellerin.eu,2015-11-28:/machine-learning-and-ai.html<p>Resources about machine learning and AI</p><ul>
<li><a href="https://medium.com/backchannel/how-elon-musk-and-y-combinator-plan-to-stop-computers-from-taking-over-17e0e27dd02a">How Elon Musk and Y Combinator Plan to Stop Computers From Taking Over</a></li>
<li><a href="http://rinuboney.github.io/2015/10/18/theoretical-motivations-deep-learning.html">Theoretical Motivations for Deep Learning</a></li>
<li><a href="http://www.r2d3.us/visual-intro-to-machine-learning-part-1/">A Visual Introduction to Machine Learning</a></li>
<li><a href="http://waitbutwhy.com/2015/01/artificial-intelligence-revolution-1.html">The AI Revolution: The Road to Superintelligence</a></li>
<li><a href="http://coding-geek.com/how-shazam-works/">How does Shazam work</a></li>
<li><a href="http://static.googleusercontent.com/media/research.google.com/en/us/pubs/archive/334.pdf">The Anatomy of a Large-Scale Hypertextual Web Search Engine</a></li>
<li><a href="http://radar.oreilly.com/2014/12/wouldnt-it-be-fun-to-build-your-own-google.html">Wouldn’t it be fun to build your own Google?</a></li>
<li><a href="http://artint.info/html/ArtInt.html">ARTIFICIAL INTELLIGENCE - FOUNDATIONS OF COMPUTATIONAL AGENTS</a></li>
<li><a href="http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/">Fizz Buzz in Tensorflow</a></li>
<li><a href="https://medium.com/machine-learnings/a-humans-guide-to-machine-learning-e179f43b67a0">The Non-Technical Guide to Machine Learning & Artificial Intelligence</a></li>
<li><a href="https://github.com/ZuzooVn/machine-learning-for-software-engineers">A complete daily plan for studying to become a machine learning engineer</a></li>
<li><a href="http://ahogrammer.com/2016/11/15/deep-learning-enables-you-to-hide-screen-when-your-boss-is-approaching/">Deep Learning Enables You to Hide Screen when Your Boss is Approaching</a></li>
</ul>Android, iOS: What Alternatives?2015-11-26T15:00:00+01:002022-09-24T12:11:00+02:00Romain Pellerintag:romainpellerin.eu,2015-11-26:/android-ios-what-alternatives.html<p>What alternatives do we have to Android and iOS? How to install Firefox OS and Ubuntu for devices.</p><p>As 2015 is slowly coming to an end, let's try to shape the state of the global smartphone market share.</p>
<p><img alt="Market share" src="//romainpellerin.eu/images/chart-ww-smartphone-os-market-share.png"></p>
<p><em><a href="http://www.idc.com/prodserv/smartphone-os-market-share.jsp">Source</a></em></p>
<p>It makes no doubt that <strong>the world is ruled by two main OSes: Android and iOS</strong>. But as you may have heard, those operating systems are powered by two giants, Google and Apple, and in many cases, this can lead to privacy issues. In addition, iOS is proprietary softare and Android tends to be more and more opaque as well. So, what other alternatives do we have? How can we regain control over software we use?</p>
<p>Since a few years, two other operating systems offering good alternatives, have been in intense development. One is made by Mozilla, called "<em>Firefox OS</em>", the other one is powered by Canonical (the company behind Ubuntu), called "<em>Ubuntu for devices</em>". Those two OSes are really different in the way they work.</p>
<p>Firefox OS relies on HTML5. As a web developer, you'll find developing on this platform pretty straightforward. Applications are built on top of HTML/CSS.</p>
<p>On the other hand, Ubuntu is... kind of a Ubuntu distribution but developed and optimized for mobiles. It allows you to do most of what you might do on a desktop distribution.</p>
<p>For now, as these OSes are still in early development, they're not available worldwide easily. Somes phones run theses OSes but they're not mainstream yet. An easy option is to build them yourself and install them on your own Android device. Here are short tutorials.</p>
<h1 id="installing-ubuntu-for-devices">Installing Ubuntu for devices</h1>
<h2 id="for-nexus-4">For Nexus 4</h2>
<div class="highlight"><pre><span></span><code>sudo add-apt-repository ppa:ubuntu-sdk-team/ppa
sudo apt-get update
sudo apt-get install ubuntu-device-flash phablet-tools
</code></pre></div>
<p>Plug in your phone, enable the developer mode and USB debugging.</p>
<div class="highlight"><pre><span></span><code>adb reboot bootloader
sudo fastboot oem unlock
ubuntu-device-flash touch --channel<span class="o">=</span>stable --bootstrap
</code></pre></div>
<p><a href="https://developer.ubuntu.com/en/start/ubuntu-for-devices/installing-ubuntu-for-devices/">More information</a>.</p>
<h2 id="for-nexus-5">For Nexus 5</h2>
<p>There are 3 methods (updated in December 2017). First, plug in your phone. Then:</p>
<h3 id="1">1</h3>
<p><a href="https://devices.ubports.com/#/hammerhead">Official tutorial</a>.</p>
<div class="highlight"><pre><span></span><code>git clone https://github.com/MariusQuabeck/magic-device-tool.git
<span class="nb">cd</span> magic-device-tool
sudo ./launcher.sh
</code></pre></div>
<h3 id="2">2</h3>
<p><a href="https://devices.ubports.com/#/hammerhead">Official tutorial</a>.</p>
<div class="highlight"><pre><span></span><code>sudo apt-get install ubuntu-device-flash phablet-tools
adb reboot bootloader
sudo fastboot oem unlock
sudo ubuntu-device-flash --server<span class="o">=</span>http://system-image.ubports.com touch --device<span class="o">=</span>hammerhead --channel<span class="o">=</span><span class="m">15</span>.04/stable --bootstrap
</code></pre></div>
<h3 id="3">3</h3>
<p><a href="https://ubports.com/page/ubuntu-nexus-5">Official tutorial</a>.</p>
<div class="highlight"><pre><span></span><code>wget https://github.com/ubports/ubports-installer/releases/download/0.1.9-beta/ubports-installer_0.1.9-beta_amd64.deb -O /tmp/ubports.deb
sudo dpkg -i /tmp/ubports.deb
ubports-installer
</code></pre></div>
<h1 id="building-and-installing-firefox-os">Building and installing Firefox OS</h1>
<h2 id="for-nexus-4_1">For Nexus 4</h2>
<p>Plug in your phone, enable the developer mode and USB debugging.</p>
<h3 id="first-step-flash-your-nexus-4-with-android-43">First step: flash your Nexus 4 with Android 4.3</h3>
<div class="highlight"><pre><span></span><code>sudo apt-get install android-tools-adb
wget https://dl.google.com/dl/android/aosp/mantaray-jwr66y-factory-3d8252dd.tgz
tar xvzf occam-jwr66y-factory-74b1deab.tgz
<span class="nb">cd</span> occam-jwr66y
./flash-all.sh <span class="c1"># Boot to fastboot and unlock bootloader</span>
</code></pre></div>
<h3 id="second-step-build-firefox-os-on-a-1404-ubuntu">Second step: build Firefox OS (on a 14.04 Ubuntu)</h3>
<div class="highlight"><pre><span></span><code>sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache <span class="se">\</span>
curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git <span class="se">\</span>
lib32ncurses5-dev lib32z1-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 <span class="se">\</span>
zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip libxml2-utils
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 <span class="m">1</span>
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 <span class="m">2</span>
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 <span class="m">1</span>
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 <span class="m">2</span>
sudo update-alternatives --set gcc <span class="s2">"/usr/bin/gcc-4.6"</span>
sudo update-alternatives --set g++ <span class="s2">"/usr/bin/g++-4.6"</span>
ccache --max-size 10GB
</code></pre></div>
<p>Plug in your phone, enable the developer mode and USB debugging.</p>
<div class="highlight"><pre><span></span><code>adb pull /system /tmp/system
adb pull /data /tmp/data
adb pull /vendor /tmp/vendor
git clone git://github.com/mozilla-b2g/B2G.git
<span class="nb">cd</span> B2G
git pull
./repo sync
./config nexus-4
./build.sh
</code></pre></div>
<h3 id="third-step-install-it">Third step: install it</h3>
<div class="highlight"><pre><span></span><code>./flash.sh
</code></pre></div>
<h3 id="some-additional-settings">Some additional settings</h3>
<div class="highlight"><pre><span></span><code><span class="nb">cd</span> gaia
make reset-gaia <span class="nv">PRODUCTION</span><span class="o">=</span><span class="m">1</span>
mkdir -p locales
sudo aptitude install mercurial
rm -rf locales/fr
hg clone http://hg.mozilla.org/gaia-l10n/fr locales/fr
<span class="nb">export</span> <span class="nv">LOCALE_BASEDIR</span><span class="o">=</span><span class="nv">$PWD</span>/locales
<span class="nb">export</span> <span class="nv">LOCALES_FILE</span><span class="o">=</span><span class="nv">$PWD</span>/locales/languages_dev.json
<span class="nb">export</span> <span class="nv">GAIA_DEFAULT_LOCALE</span><span class="o">=</span>en
<span class="nb">export</span> <span class="nv">GAIA_KEYBOARD_LAYOUTS</span><span class="o">=</span>en,fr
rm locales/languages_dev.json -f
<span class="nb">echo</span> <span class="s1">'{</span>
<span class="s1"> "en-US" : "English (US)",</span>
<span class="s1"> "fr" : "Français"</span>
<span class="s1">}'</span> > locales/languages_dev.json
make clean <span class="o">&&</span> make production <span class="nv">LOCALES_FILE</span><span class="o">=</span>locales/languages_dev.json
</code></pre></div>
<p><a href="https://developer.mozilla.org/en-US/Firefox_OS/Building_and_installing_Firefox_OS">More information</a>.</p>
<h1 id="other-alternatives">Other alternatives</h1>
<ul>
<li><a href="https://lineageos.org/">LineageOS</a></li>
<li><a href="https://puri.sm/shop/librem-5/">Purism's Librem 5</a></li>
</ul>How To Give A Good Presentation2015-06-16T01:49:00+02:002020-11-10T17:48:00+01:00Romain Pellerintag:romainpellerin.eu,2015-06-16:/how-to-give-a-good-presentation.html<p>Some piece of advice about how to give good presentations</p><p>Since I graduated from High School, I've had the chance to attend a lot of presentations (talks, conferences, lectures), given either by students to teachers, or by some non-student people. Most of them are tech people. I would like to distinguish two kinds of presentation:</p>
<ul>
<li>Those given by students or employees, often at the end of projects, or to explain quite serious things, or to expose problems. I will call them “formal presentations”</li>
<li>Those given by any kind of people, aiming at making the attendees discover technologies, languages, tools. I like to refers to these lecturers as evangelists. I will now call these presentations “informal presentations”, since they rarely happen in a professional or university context.</li>
</ul>
<p>Now let's get started with some pieces of advice. Then, you can go even further by reading <a href="http://www.troyhunt.com/2015/06/speaker-style-bingo-10-presentation.html">this great article about 10 presentation anti-patterns</a>.</p>
<h1 id="know-your-topic">Know your topic</h1>
<p>This may sound obvious and yet, some people (they're pretty rare) don't know perfectly their topic. They hesitate, or even worse, say absolute nonsense. Prepare your topic if you're not very familiar with it, but know it.</p>
<h1 id="know-your-speech-or-pitch">Know your speech (or pitch)</h1>
<p>Knowing your topic is not enough. You will often be granted an allocated time. To avoid exceeding that time, rehearse a lot before going on stage. No secret, just repeat until you feel confident with your time management.</p>
<h1 id="smile">Smile</h1>
<p>This is really true for “informal presentations”, but it also applies to “formal presentations” (but don't overdo it). Show your audience you're happy to be there. Then, it will help you deliver your message. Set aside your problems. No sound on the computer? It doesn't matter, apologize and keep on smiling. The demo failed? It's OK. Do not show signs of stress. Crack a joke about it (if appropriate, depending on the audience).</p>
<h1 id="filming">Filming?</h1>
<p>Add the slides on the righthand side, inside the video. It's a terrible thing for those who will watch you online, if you make a joke about what is on the slides and they cannot actually see them.</p>
<p>Also, when asked a question, make sure that the speaker repeats the question in the microphone, so that the web audience can understand the answer. Another alternative is to use two microphones, but this is not very handy, since someone has to move the microphone around everytime a question is asked.</p>
<h1 id="look-at-the-audience">Look at the audience</h1>
<p>Attendees can easily get distracted. Establish a privileged contact with them. Don't look at your slides. I know it's really hard not to, but try to find a way to get a display in front of you that reminds you of the slide you are on. People will give you credit. On top of that, you would also benefit from speaking slowly, at an understandable pace so that you don't lose anyone in your thoughts. Allow people to concentrate and understand what you just said: mark pauses between slides, when need be.</p>
<h1 id="the-art-of-creating-slides">The Art of Creating Slides</h1>
<h2 id="the-content">The content</h2>
<p>A 140-character-long slide is OK, but not more! Use simple words (often keywords) and images or videos (as backgrounds). Funny slides help a lot, people won't get bored.</p>
<h2 id="avoid-powerpoint-and-libreoffice-impress">Avoid PowerPoint and LibreOffice Impress</h2>
<p>You have no guarantee that the version of PowerPoint (or LibreOffice) you'll find on the computer is the same as yours. What's more, not everyone can afford Microsoft Office suite. The “source code” of a slideshow should be a text file, and the output should be a PDF file. Stick to this rule and everything's gonna be fine!</p>
<p>Giving a “formal presentation”? Use LaTeX to generate the PDF. Otherwise, use Markdown to generate your PDF. There are a lot of tools for that. Personally, on Linux, I recommend <a href="http://pandoc.org/">Pandoc</a>.</p>
<p>Why LaTeX? The formatting looks very professional. Just like scientific reports are always writtin with LaTeX, your slides should be as well.</p>
<p>Why Markdown for your “informal presentations”? It allows you to create your slides in only a couple of minutes. Don't spend too much time on transitions, nor on the colors, etc. The only things that matters is the content, and Markdown is all about content. You can even get some help from <a href="https://github.com/rpellerin/slides">my own slides</a>.</p>
<h1 id="next-slide-please">Next slide, please</h1>
<p>Don't rely on anyone but yourself to switch between your slides! Whenever possible, use a <a href="http://amzn.com/B000FPGP4U">cheap remote controller</a> (a presenter).</p>
<h1 id="holding-the-microphone-the-right-way">Holding the microphone the right way</h1>
<p>Place the microphone on your chin. If you have a beard, put your thumb between your chin and the microphone to avoid rustling noises. That's the only way of keeping a constant and good sound level.</p>
<p><br /></p>
<p>I know these pieces of advice can sometimes be hard to follow, I also made and still make a lot of mistakes, but I am constantly trying to improve myself. Watch your past presentations, notice what you did wrong and keep on improving yourself. Good luck!</p>
<h1 id="further-reading-and-watching">Further reading and watching</h1>
<ul>
<li><a href="http://www.troyhunt.com/2015/06/speaker-style-bingo-10-presentation.html">Speaker style bingo: 10 presentation anti-patterns</a></li>
<li><a href="http://thenextweb.com/lifehacks/2013/09/12/10-things-you-should-never-say-during-presentations-2/">10 things you should NEVER say during presentations</a></li>
<li><a href="https://medium.com/@chethaase/presenting-presenting-17233fa13aa5">Presenting Presenting</a></li>
<li><a href="http://gregorkopf.de/blog/posts/impress.html">Pretty Slides with Pandoc and impress.js</a></li>
<li><a href="http://www.sciencemag.org/careers/2016/01/using-powerpoint-shine-stage">Using PowerPoint to shine on stage</a></li>
<li><a href="https://www.youtube.com/watch?v=eIho2S0ZahI">How to speak so that people want to listen</a></li>
<li><a href="http://2014.cssconf.eu/news/how-to-write-a-great-talk-proposal-for-a-tech">How to write a great talk proposal for a tech conference</a></li>
<li><a href="https://www.troyhunt.com/10-ways-for-a-conference-to-upset-their-speakers/">10 ways for a conference to upset their speakers</a></li>
<li><a href="http://frantic.im/keynote">GEEK'S GUIDE TO MAKING DECENT SLIDES</a></li>
<li><a href="https://dev.to/emmawedekind/tips-for-first-time-speakers-3fcb">Tips For First Time Speakers</a></li>
<li><a href="https://gist.github.com/tatianamac/493ca668ee7f7c07a5b282f6d9132552">Speaker Rider</a></li>
<li><a href="https://github.com/dgageot/demoit">https://github.com/dgageot/demoit</a></li>
</ul>I Want To Be A More Efficient Developer2015-05-25T17:17:00+02:002020-05-28T01:27:00+02:00Romain Pellerintag:romainpellerin.eu,2015-05-25:/i-want-to-be-a-more-efficient-developer.html<p>A few tips for Software Engineers and a brief sum-up about an excellent talk from Quentin Adam</p><p>This article is mainly aimed at junior software engineers. It's kind of a set of tips to improve your everyday workflow, be a better programmer, find your dream job, or more generally, improve your skills in Computer Science.</p>
<p>As a Software Engineering Student, I meet every day a lot of people learning programming languages, trying to build databases, creating websites. We, at the <a href="http://www.utc.fr/">UTC</a>, have a lot of projects, each semester. I feel so sad each time they fail at using best practices. Among them, the worst, in my opinion, is being stuck in Windows, the operating system. They simply miss a lot of things. They are ignorant, they have no idea how their computers work. But that's my opinion. Now, let's begin with a list of best practices I've learnt from great people.</p>
<h1 id="use-the-right-tools">Use the right tools</h1>
<h2 id="gnulinux">GNU/Linux</h2>
<p>Or at least a Unix-like system. The terminal should be your best friend, be familiar with it. It's a lot more powerful than user interfaces. Unless you want to be a web designer, you must know how GNU/Linux works. Why? Because almost ALL servers rely on Unix systems. Another argument would be privacy, but that's another topic.</p>
<p>There are plenty of user-friendly distributions, like Ubuntu or Xubuntu (my favorite one). As Windows users, you will hardly notice any difference, except for software compatibility. But hey, there are alternatives. And yes, you can keep Winodws on a separate partition for video games. I also <a href="//romainpellerin.eu/mastering-gnu-linux.html">wrote an article about GNU/Linux</a>.</p>
<h2 id="git">Git</h2>
<p>I've seen sooo many people sending each other source code via emails, or worse, Google Drive! What a pain in the ass! A lot of tools exist, such as Subversion, Mercurial, or Git. Obviously, Git is my favorite one (one of the reason is because it's Linus Torvalds himself who wrote it). And it's also more powerful than any other tool. For more information, checkout <a href="//romainpellerin.eu/git.html">my talk about Git</a>.</p>
<h1 id="show-the-world-what-youve-done">Show the world what you've done</h1>
<p>Every programmers should have public Git repositories. Github is a good platform for exposing your source code publicly, for free. I've heard a lot of recruiters asking for source code to browse, in order to see what you do, how good your code is (or is not), what kind of personal projects you have. They want to make sure you'll write good code if they hire you. Having many projects available on the Internet is also a proof that you're passionate about Computer Science. That's a huuuuge plus!</p>
<p>Github. Recruiters love it. Literally.</p>
<p>A blog is another good way to express your feelings, write down your thoughts, your discoveries. <a href="https://github.com/getpelican/pelican">Setting up a blog doesn't take more than 5 minutes!</a>. <a href="http://blog.penso.info/2015/03/21/improve-blog-visibility/">Further reading about blogs here</a>.</p>
<h1 id="great-inspiration-from-inspirational-people">Great inspiration from... inspirational people</h1>
<p>Learn from them. They're all around us, just find them. Go to conferences, follow them on Twitter, read blog posts. During my last internship, I met a lot of talented people. I learnt a lot from them at that time. They're full of good advice. They have experience (and you don't, as a student).</p>
<h1 id="never-stop-learning">Never stop learning</h1>
<p>What's more, <a href="https://github.com/alex/what-happens-when">be curious</a>! And, <a href="https://github.com/sindresorhus/awesome">read</a>, <a href="https://github.com/bayandin/awesome-awesomeness">read a lot</a>.</p>
<p>RSS is not dead and is still a really good ally to be kept up-to-date with the latest news in Computer Science. RIP Google Reader, long live <a href="https://github.com/FreshRSS/freshrss.org">FreshRSS</a>!</p>
<h1 id="be-a-super-programmer">Be a super-programmer</h1>
<p>Some basics I used to neglect... but now I regret. Every programmer should know those basic things. Once again, it helps a lot when it comes to interviews (for either an internship or a job). And this will be useful all your life. <a href="http://www.joelonsoftware.com/articles/fog0000000043.html">The Joel Test</a> is also a good indicator about how good your are with code.</p>
<p><a href="https://github.com/pusher/atom-pair">Pair programming</a> is an incredible way to learn from your friends (or teach them) as well.</p>
<h2 id="data-structures-and-memory-management">Data structures and Memory management</h2>
<p>Know the basic data structures, such a hash tables, primitives, etc. Those are the very basics of every programming language. You can't avoid them.</p>
<p>You use Java everyday? Then you should know everything about Java memory management. Where are stored primitive types and objects? Stack? Heap? Doing C++? Where are stored lvalues, rvalues? And so on... A brief explanation about memory is in <a href="//romainpellerin.eu/understanding-the-memory.html">one of my articles</a></p>
<p>This kind of advice applies to every language you claim to know.</p>
<h2 id="sorting-algorithms">Sorting algorithms</h2>
<p>Know them. At least bubble, merge, quick sort, etc. Here is <a href="http://www.sorting-algorithms.com/">a great website</a>. Half the time, recruiters will ask you something about array sorting or things like that. And most of all, know their complexities!</p>
<h1 id="backup-every-little-thing-that-is-on-your-computerservers">Backup every little thing that is on your computer/servers</h1>
<p>Consider everyday as the day your PC is gonna die. Projects should go to Github (or alternatives) if they are not confidential, personnal files to external hard drives (backed-up as well, so use at least two hard drives) or to the Cloud (I personally installed ownCloud on one of my servers). Once again, backup everything. Losing a whole hard drive disk is such a terrible thing, you can't predict nor prevent it. Be prepared. And for sure, you're gonna experience it, sooner or later.</p>
<h1 id="english-english-everywhere">English, English everywhere</h1>
<p>Programming languages use English words, manuals are mostly written in English, almost everything in the Computer Science World is in English. So you'll have to get used to it. Be fluent. Set-up your devices to be in English. Same thing for your computer(s). Watch talks given in English. You will have to write English documentation, even though your company is not English. I wish every software engineer was bilingual, it would make things way easier. And guess what, <a href="//romainpellerin.eu/learning-a-foreign-language.html">learning a foreign language is not that hard!</a></p>
<h1 id="know-how-to-use-search-engines">Know how to use search engines</h1>
<p>People whom repeatedly ask you simple things are such a pain! We have the entire world at our fingertips, thanks to the Internet. And we have Google. So please, Google everything! Google is smarter than us (or at least, he knows much more things). But first, learn (by yourself) how to use it. For instance, don't type whole sentences, use keywords.</p>
<h1 id="teach">Teach</h1>
<p>Teaching people around you is a great way to stay "up-to-date". Sharing your knowledge, your passion, allows you to first organize ideas, sort them out, remove what's unnecessary. You then reach an even greater understanding of what you believed to know. Giving talks on a regular basis is a good way to practice.</p>
<h1 id="bonus">Bonus</h1>
<p>A while ago, I came upon <a href="http://www.infoq.com/fr/presentations/be-a-efficient-developer">this talk</a>, given by Quentin Adam (CEO of <a href="http://clever-cloud.com/">Clever Cloud</a>) at Mix It 2014. Last year, I had been given the opportunity to do an internship at WhoWanna, a French startup. Back then, we were working in the same open space as Clever Cloud. Consequently, I was working very close to Clever Cloud, thus Quentin Adam. And I can tell you, he is a very good developer, and above all, a very good CEO, full of good advice. But let's move on to his talk.</p>
<p>The full talk (video), with its slides, is accessible <a href="http://www.infoq.com/fr/presentations/be-a-efficient-developer">here</a>. For those of you that don't have the time to watch it, I summed up the content right below. But the video is worth it, you should watch it (although it's in French, <a href="http://www.slideshare.net/quentinadam/mixit-efficient">the slides</a> are in English).</p>
<p>For your information, the article's title is shamelessly copied/inspired from his talk :-)</p>
<h2 id="sum-up-in-order-of-appearance">Sum up (in order of appearance)</h2>
<ol>
<li><strong>Be happy</strong>: always try to work on projects you love. Work processes matter. Why people are happy? Cause they know that, as developers, they solve problems. They're not useless <strong>at all</strong>. Get inspiration from Open Source.</li>
<li><strong>Get the right environment</strong>: work wherever you feel good. As developers, we only need a laptop and an Internet connection.</li>
<li><strong>Be able to deploy seamlessly</strong>: <em>release early, deploy often</em>. This step should be easy. without any human interaction. Be focus when you code, on your code, not on deployment. You should be context-free: your application should not depend on the production environment. What's more, <strong>everyone</strong> should be able to deploy, not only one person. The team should not rely on a single person.</li>
<li><strong>Deploy as often as possible</strong>: ideally, many times a day.</li>
<li><strong>Split your apps into small modules:</strong> then you'll get a smaller codebase for each app. Each module is a service for other modules: use HTTP or AMQP between them.</li>
<li><strong>Use the relevant technology, not the one you prefer</strong>: the language (or any other related tool) should be chosen according to your needs.</li>
<li><strong>The two previous points refer to the <a href="http://en.wikipedia.org/wiki/Unix_philosophy#Eric_Raymond.E2.80.99s_17_Unix_Rules">KISS philosophy</a></strong></li>
<li><strong>Use online databases</strong>: then you'll be ready to test in a few minutes. Your sys admins will love you: they won't have to edit any conf file.</li>
<li><strong>Make all deployments asynchronous, module by module</strong></li>
<li><strong>Avoid host-specific things</strong>: refers to point 3.</li>
<li><strong>Do not use file system to store something</strong>: not its purpose. It doesn't scale. Use databases, or external services such as <a href="http://aws.amazon.com/s3/">Amazon S3</a>.</li>
<li><strong>Modularize your team</strong>: avoid meetings, they're painful and almost useless. If anyone in your team has trouble, there's a problem. You have to maintain an internal documentation, clear, accessible to everyone, that gives you a good overview of your infrastructure.</li>
<li><strong>Know your code and trash it if needed</strong>: it's sometimes an excellent idea to rewrite a whole module.</li>
<li><strong>Use the right tools</strong>: no one should be forced to use a specific IDE.</li>
<li><strong>Use a version control system for code and APIs, log EVERYTHING</strong>: you'll then know if an old API is still used. Ideally, use Git.</li>
<li><strong>Use HTTP the right way</strong>: wanna throw an error? Use 40x or 50x codes. The body of a request is just complementary information.</li>
<li><strong>Use a build manager and a configuration library</strong>: anyone should be able to build your application, no matter what IDE or platform you use (also refers to point 14). Don't hardcode your variables or settings.</li>
<li><strong>Learn Git</strong>: ideally, use the command line interface. It's far more powerful than graphical tools, and more clear.</li>
<li><strong>Avoid early performance optimization</strong>: compilers often optimize your code. Promote code readability. You will measure your code performance later.</li>
<li><strong>Always think like it's your first day on the project</strong>: is the project easy to compile and run? Is the documentation clear? Make things easier for other developers.</li>
<li><strong>Documentation matters, a lot</strong>: write everything. Oral communication is not as efficient as a good documentation. Refers to point 12.</li>
</ol>
<p>Hope you'll find it useful.</p>
<p><br />
Well, that's all for this article. Some very simple tips to follow, and then you'll become a real software engineer (in my opinion, at least).</p>
<h1 id="further-reading">Further reading</h1>
<ul>
<li><a href="http://lea.verou.me/2012/01/why-tabs-are-clearly-superior/">Why tabs are clearly superior</a></li>
<li><a href="https://www.uslide.io/presentations/Aw6sX5ug-Tfzw5rNXAmdJg">"Development Principles and Philosophy" par F.G. Ribreau</a></li>
<li><a href="http://getawesomeness.com/">getAwesomeness: to retrieve all amazing awesomeness from Github</a></li>
<li><a href="http://www.geek-directeur-technique.com/2013/12/16/les-9-regles-de-tim-minchin">Les 9 règles de Tim Minchin</a></li>
<li><a href="http://coreight.com/content/etapes-succes">Les étapes vers le succès</a></li>
<li><a href="https://medium.com/life-learning/why-knowing-stuff-doesn-t-really-matter-f06a5536ab59">Why Knowing Stuff Doesn’t Really Matter</a></li>
<li><a href="https://medium.freecodecamp.com/being-a-developer-after-40-3c5dd112210c">Being A Developer After 40</a></li>
<li><a href="http://www.hanselman.com/blog/AmIReallyADeveloperOrJustAGoodGoogler.aspx">Am I really a developer or just a good googler?</a></li>
<li><a href="http://norvig.com/21-days.html">Teach Yourself Programming in Ten Years</a></li>
<li><a href="https://www.youtube.com/watch?v=CeaoTAXkIZE">How does Clever Cloud work? (Clément Delafargue - Quentin Adam)</a></li>
<li><a href="https://medium.com/@romainserman/silicon-valley-etiquette-6934cf6f8f73">Silicon Valley Etiquette</a></li>
<li><a href="https://alexdenning.com/deep-work-in-practice/">Deep work in practice: reimagining my workflow for radically less distraction</a></li>
<li><a href="http://gb-prod.fr/2016/12/01/la-revue-de-code-bienveillante.html">La revue de code bienveillante</a></li>
<li><a href="https://blog.nelhage.com/2016/12/how-i-test/">How I Write Tests</a></li>
<li><a href="http://www.bbc.com/capital/story/20170105-open-offices-are-damaging-our-memories">Why open offices are bad for us</a></li>
<li><a href="https://derniercri.io/tech-blog/structure-algebriques-introduction">Introduction aux structures algébriques</a></li>
<li><a href="http://www.geek-directeur-technique.com/2017/02/08/normes-utiles">Normes utiles</a></li>
<li><a href="https://medium.com/trisfera/general-coding-guidelines-clean-code-from-day-1-9ab0804e5d91">General Coding Guidelines: Clean Code From Day 1</a></li>
<li><a href="https://www.ssi.gouv.fr/uploads/2017/01/guide_hygiene_informatique_anssi.pdf">GUIDE D’HYGIÈNE INFORMATIQUE</a></li>
<li><a href="https://whatcanidoformozilla.org">What Can I Do For Mozilla?</a></li>
<li><a href="http://www.dev-books.com/">Top mentioned books on stackoverflow.com</a></li>
<li><a href="https://drewdevault.com/2017/03/15/How-I-learned-to-stop-worrying-and-love-C.html">Principles for C programming</a></li>
<li><a href="http://www.cirosantilli.com/articles/">Articles about x86 assembly, C, C++, Nodejs, Git, etc</a></li>
<li><a href="https://spin.atomicobject.com/2014/09/03/visualizing-garbage-collection-algorithms/">Visualizing Garbage Collection Algorithms</a></li>
<li><a href="https://developers.google.com/web/updates/2017/04/headless-chrome">Getting Started with Headless Chrome</a></li>
<li><a href="https://www.youtube.com/watch?v=V4J-m3o5JWg">Ratez vos revues de code en 5 leçons ! (Michel Domenjoud)</a></li>
<li><a href="https://www.youtube.com/watch?v=KH40vSYLENA">10 méthodes pour rendre heureux les développeurs (Cyril Lakech - Romain Linsolas)</a></li>
<li><a href="http://www.geek-directeur-technique.com/2017/06/29/gerer-sa-carriere">Gérer sa carrière</a></li>
<li><a href="https://sidbala.com/h-264-is-magic/">H.264 is Magic</a></li>
<li><a href="https://github.com/zeeshanu/learn-regex">Learn regex the easy way </a></li>
<li><a href="https://mtlynch.io/human-code-reviews-1/">How to Do Code Reviews Like a Human (Part One)</a></li>
<li><a href="https://mtlynch.io/human-code-reviews-2/">How to Do Code Reviews Like a Human (Part Two)</a></li>
<li><a href="https://blog.todoist.com/2015/09/01/how-to-focus-better-at-work/">Why Focus Is Your Greatest Competitive Advantage at Work (Plus 19 Ways To Actually Do It)</a></li>
<li><a href="https://gist.github.com/rondy/af1dee1d28c02e9a225ae55da2674a6f">Effective Engineer - Notes</a></li>
<li><a href="https://davepaola.com/2018/01/25/if-you-multitask-during-meetings-your-team-will-too/">If You Multitask During Meetings, Your Team Will, Too</a></li>
<li><a href="https://www.fs.blog/2012/04/learn-anything-faster-with-the-feynman-technique/">The Feynman Technique: The Best Way to Learn Anything</a></li>
<li><a href="https://blog.octo.com/egoless-programming/">Egoless Programming</a></li>
<li><a href="https://blog.octo.com/revue-de-code-quel-format-choisir/">Revue de code : quel format choisir ?</a></li>
<li><a href="http://www.themindsetapp.com/musk-letter/">Elon Musk reveals his productivity rules in a letter he sent to Tesla employees</a></li>
<li><a href="http://blog.samaltman.com/productivity">Productivity</a></li>
<li><a href="https://www.ted.com/talks/simon_sinek_how_great_leaders_inspire_action">Simon Sinek: How great leaders inspire action | TED Talk</a></li>
<li><a href="https://www.youtube.com/watch?v=Vx9prTKpzCc">Comment négocier son salaire</a></li>
<li><a href="https://www.dedoimedo.com/computers/linux-beginning-of-the-end.html">Linux - The beginning of the end</a></li>
<li><a href="http://tonsky.me/blog/disenchantment/">Software disenchantment</a></li>
<li><a href="https://www.youtube.com/watch?v=-Qy2vist-XQ">This Is How Successful People Manage Their Time</a></li>
<li><a href="https://gomakethings.com/what-makes-someone-a-good-front-end-developer/">What makes someone a good front-end developer?</a></li>
<li><a href="https://ahrefs.com/blog/google-advanced-search-operators/">Google Search Operators: The Complete List (42 Advanced Operators)</a></li>
<li><a href="https://css-tricks.com/the-importance-of-one-on-ones/">The Importance of One-on-Ones</a></li>
<li><a href="https://increment.com/internationalization/its-probably-never-going-to-work-in-german/">It’s probably never going to work in German</a></li>
<li><a href="https://anaxi.com/blog/2019/02/20/how-to-make-other-developers-hate-to-work-with-you/">How to Make Other Developers Hate to Work with You</a></li>
<li><a href="https://www.timsommer.be/famous-laws-of-software-development/">Famous laws of Software development</a></li>
<li><a href="https://carbon.now.sh">Carbon: Create and share beautiful images of your source code</a></li>
<li><a href="https://codeblog.jonskeet.uk/2019/03/27/storing-utc-is-not-a-silver-bullet/">Storing UTC is not a silver bullet</a></li>
<li><a href="https://lehollandaisvolant.net/?d=2019/04/02/12/19/05-teignez-vos-appareils">Éteignez vos appareils</a></li>
<li><a href="https://github.com/wesbos/awesome-uses">Awesome Uses</a></li>
<li><a href="https://medium.dave-bailey.com/the-essential-guide-to-difficult-conversations-41f736e63ccf">How to Deliver Constructive Feedback in Difficult Situations</a></li>
<li><a href="https://sizovs.net/2019/04/10/the-best-developers-are-raised-not-hired/">Great developers are raised, not hired</a></li>
<li><a href="https://mobile.twitter.com/jessitron/status/1123310331957145601">When we rush development, skip tests and refactoring, we get “Escalating Risk.” Please give up the “technical debt” description; it gives businesspeople a very wrong impression of the tradeoffs.</a></li>
<li><a href="http://jamie-wong.com/2013/07/12/grep-test/">Too DRY - The Grep Test</a></li>
<li><a href="https://medium.com/@waxzce/la-dette-technique-une-supercherie-mythologique-pour-gal%C3%A9riens-de-lit-7ed0dfbf39c7">La dette technique : une supercherie mythologique pour galériens de l’IT</a></li>
<li><a href="https://increment.com/teams/how-to-build-a-startup-engineering-team/">How to build a startup engineering team</a></li>
<li><a href="https://ifttd.io/21-une-organisation-libre-ou-prime-innovation-et-bonheur-quentin-adam/">#21 – Une organisation libre où prime innovation et bonheur – Quentin Adam</a></li>
<li><a href="https://www.youtube.com/watch?v=20pj_ajDBOg">Shitlist-driven development and other tricks for working on large codebases - RedDotRubyConf 2017</a></li>
</ul>