rolisz's site http://rolisz.ro/ en Fri, 16 Jun 2017 21:08:00 GMT http://rolisz.ro/static/rss/ acrylamid 0.7.10 The Piano Guys http://rolisz.ro/2017/06/16/the-piano-guys/ <figure> <p><img alt="Playing I want you Bach" src="http://rolisz.ro/static/images/2017/06/tpg/IMG_20170609_215204.jpg" width="100%" style="max-width:600px"/> <figcaption>Playing <a href="https://www.youtube.com/watch?v=JZPSV78iQxg">I want you Bach</a></figcaption></p> </figure> <p>Last Friday The Piano Guys were in Zürich. I found out about it from an ad on Facebook. It's probably the second time in my life where an advertisement there is actually useful and relevant for me.</p> <p>They started by playing <a href="https://vimeo.com/109485670">Batman Evolution</a>, which goes through most of the Batman movies soundtracks and weaves them together.</p> <figure> <p><img alt="Jon playing with his head under the piano" src="http://rolisz.ro/static/images/2017/06/tpg/IMG_20170609_202140.jpg" width="100%" style="max-width:600px"/> <figcaption>Jon fooling around, by playing with his head under the piano</figcaption></p> </figure> <p>They explained how they like to combine their love for old classical music with modern songs that are well known by young people. For example, they take every kid's favourite song: <a href="https://www.youtube.com/watch?v=6Dakd7EIgBE">Let It Go!</a> and combine it with Vivaldi's Winter.</p> <figure> <p><img alt="Jon playing with his feet" src="http://rolisz.ro/static/images/2017/06/tpg/IMG_20170609_203317.jpg" width="100%" style="max-width:600px"/> <figcaption>More of Jon fooling around, by playing with his feet</figcaption></p> </figure> <p>The duo likes to make fun of each other. Jon constantly makes fun of Steven, the cellist, for being part of a band called "The PIANO Guys", while Steven likes to show off his sweet cello skills and how he can do cooler tricks then Jon.</p> <p><img alt="Steven playing the chello" src="http://rolisz.ro/static/images/2017/06/tpg/IMG_20170609_213029.jpg" width="100%" style="max-width:600px"/></p> <p>Steven has 26 cellos in his collection, which of course all sound very different to him. He brought only three on this tour: the Italian one, called Marcello (pronounced with an Italian accent), the French one, made out of carbon fiber, called.... Carbon Fibre, and the Chinese one, called Bruce Lee.</p> <figure> <p><img alt="Steven being bored" src="http://rolisz.ro/static/images/2017/06/tpg/IMG_20170609_215808.jpg" width="100%" style="max-width:600px"/> <figcaption>Steven is really bored by <a href="https://www.youtube.com/watch?v=LV5_xj_yuhs">Pachelbel's Canon in D</a>, so he's showing off</figcaption></p> </figure> <p>Steven learned some German in school, so he was constantly weaving some German words into his address to the audience. Jon probably learned a few basic sentences on the way over, just not to be inferior to Steven in any way.</p> <figure> <p><img alt="Jon dancing" src="http://rolisz.ro/static/images/2017/06/tpg/IMG_20170609_220104-ANIMATION.gif" width="100%" style="max-width:600px"/> <figcaption>When Steven starts improvising on the Canon in D, Jon starts dancing on the stage, much to Steven's embarrassment</figcaption></p> </figure> <p>They told how the whole thing started, when a piano shop owner wanted to make some fancy ads basically for his pianos, so he asked Jon to play them on the street. Jon knew Steven from before, knew how creative he was with the cello and thought he could help them go viral. Along came Al, a neighbor of Steven, who helped them write songs and edit them. And it did go viral. Unfortunately, the shop had to close. </p> <figure> <p><img alt="Al, their songwriter" src="http://rolisz.ro/static/images/2017/06/tpg/IMG_20170609_205523.jpg" width="100%" style="max-width:600px"/> <figcaption>Al, their music producer, sometimes joins them on stage to sing with them</figcaption></p> </figure> <p>When they were singing the <a href="https://www.youtube.com/watch?v=mOO5qRjVFLw">Fight Song / Amazing Grace</a> combination, they actually brought on stage four bagpipers to accompany them!</p> <p><img alt="Four bagpipers accompanying the Piano Guys" src="http://rolisz.ro/static/images/2017/06/tpg/IMG_20170609_221737.jpg" width="100%" style="max-width:600px"/></p> <p>They ended the concert with all four of them (Jon, Steven, Al and Paul, their videographer) abusing the piano at the same time, some of them by hitting it.</p> <p><img alt="The four of them abusing the piano" src="http://rolisz.ro/static/images/2017/06/tpg/IMG_20170609_222152.jpg" width="100%" style="max-width:600px"/></p> <p>I enjoyed the concert. It was especially pleasant because two times they gave credit to where it's due: to God. They acknowledged that they are what they are and they can do what they do because of what He has given them. It was a nice moment :)</p> Fri, 16 Jun 2017 21:08:00 GMT tag:rolisz.ro,2017-06-16:/2017/06/16/the-piano-guys Istanbul, land of turbans, spice and carpets http://rolisz.ro/2017/06/14/istanbul-land-of-turbans-spice-and-carpets/ <p><img alt="Entrance to small market" src="http://rolisz.ro/static/images/2017/06/istanbul/P1160358.JPG" width="100%" style="max-width:600px"/></p> <p>This is the land of cheap layovers on the way to Romania. Thanks to the invisible hand of the market, tickets to the airports that are close to where my fiancee lives were 50% cheaper when flying through Istanbul, with an overnight layover, than more direct flights. It was still cheaper when buying two nights in a hotel. So through Istanbul it was. I figured it might be my last trip alone, so it should be fun.</p> <figure> <p><img alt="One of the many water fountains in the city" src="http://rolisz.ro/static/images/2017/06/istanbul/P1160364.JPG" width="100%" style="max-width:600px"/> <figcaption>One of the many water fountains in the city</figcaption></p> </figure> <p>And it was. Istanbul is a very colorful and diverse city. You see all kinds of people getting along. And they have something us in the "west" don't have: time. Everywhere you see people hanging out together. In front of shops, on the street, people stop and talk with each other. They seem to have a lot more personal interactions. But they smoke a lot more :(</p> <p>Security is quite strict, there being lots of armed police and military on the streets. Most touristy sights have security checks at the entrance, but I didn't have any problems getting through them. That might have been because even though it beeps, they let you go through, without stopping you. I was a bit puzzled by what exactly are they trying to achieve.</p> <figure> <p><img alt="Sultan Ahmet's Tomb" src="http://rolisz.ro/static/images/2017/06/istanbul/P1160368.JPG" width="100%" style="max-width:600px"/> <figcaption>The tomb of Sultan Ahmet</figcaption></p> </figure> <p>But it's also clearly not the well organized, full of signs, easy to get around "West". First hint of this was getting from the airport to the hotel. On my way to Romania, I was staying at the airport hotel. I figured, it's the airport hotel, so it's in the airport building, there being plenty of signs to lead you to it. Well, I was wrong. There were 0 signs for it as I came out of customs. After searching far and wide, I found a sign saying "TAV airport hotel shuttle". Aha, that must be it. I go in the direction pointed by the sign and I see shuttles for three other hotels, but none for my hotel. I walk some more, eventually ask another shuttle driver, who asks someone else, who happens to walk in that general direction and points me there. It was a 10 minute walk, because you couldn't get there through the airport building, even though it was part of the same complex. At least I got a free upgrade for my room :D</p> <figure> <p><video src="/static/videos/fountain.mp4" autoplay loop> </video> <figcaption>Fountain in Sultan Ahmet archelogical park</figcaption></p> </figure> <p>Then I take a "Taksi" to the old part of the town. Turn signaling seemed to be almost entirely optional. We went through what looked like a round-about, but I'm pretty sure I saw cars going perpendicular to each other, completely disregarding any kind of lanes. After leaving the nice ring road surrounding the city, by the sea, we get into the small streets in the old part of the town. It didn't seem to matter to the driver that there was a long line of cars ahead of us, every time we stopped, he honked. Also, if someone else honked, he honked as well. The driver had two phones: a smartphone with the Uber-like app I booked him with, and an old dumb phone which seemed to be constantly in a call, even though he wasn't using it most of the time. Eventually traffic ground to a halt, so I got out and walked the rest of the way to the Yerebatan Cistern. It was a bit scary though to cross the streets like the locals do: almost completely disregarding traffic, depending on how fast the cars went. </p> <figure> <p><img alt="Taksim Square" src="http://rolisz.ro/static/images/2017/06/istanbul/taksim.jpg" width="100%" style="max-width:600px"/> <video src="/static/videos/walk.mp4" autoplay loop> </video> <figcaption>Walk signs are animated :D</figcaption></p> </figure> <p>These cisterns, also called the Cistern Basilica, are a water reservoir with a capacity of 100.000 tons of water. It's a huge underground cavern, carved sometime in the 6th century. It has xx columns, in Doric and Ionic style. There is this soft music playing the background and it has a really nice impression on you as you walk around. The temperature is well below 20 degrees inside. Close to the entrance, for a small fee you can dress up as a Turkish soldier, pasha or princess and get some photos of you like that (no, I didn't do this :P).</p> <div class="gallery clearfix" style="max-width:600px"> <img title="Right outside the Yerebatan Cisterns " src="http://rolisz.ro/static/images/2017/06/istanbul/cistern/thumbs/P1160387.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="More information about them " src="http://rolisz.ro/static/images/2017/06/istanbul/cistern/thumbs/P1160388.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Really nice atmosphere " src="http://rolisz.ro/static/images/2017/06/istanbul/cistern/thumbs/P1160394.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2017/06/istanbul/cistern/P1160387.JPG", "title": "Right outside the Yerebatan Cisterns\n", "msrc": "/static/images/2017/06/istanbul/cistern/thumbs/P1160387.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2017/06/istanbul/cistern/P1160388.JPG", "title": "More information about them\n", "msrc": "/static/images/2017/06/istanbul/cistern/thumbs/P1160388.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2017/06/istanbul/cistern/P1160394.JPG", "title": "Really nice atmosphere\n", "msrc": "/static/images/2017/06/istanbul/cistern/thumbs/P1160394.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2017/06/istanbul/cistern/P1160398.JPG", "title": "The weeping column\n", "msrc": "/static/images/2017/06/istanbul/cistern/thumbs/P1160398.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2017/06/istanbul/cistern/P1160406.JPG", "title": "The medusa head\n", "msrc": "/static/images/2017/06/istanbul/cistern/thumbs/P1160406.JPG", "w": 2856, "h": 4272}]</script> </div> <p>On the way there, I passed through a small market place, where lots of people were selling various handmade goods. You could see all kinds of stuff, including people making in front of you wooden decorations, ornate walking canes, the water paintings or carving jewelry. Lots of cool stuff.</p> <p><img alt="Craftsman making jewelry" src="http://rolisz.ro/static/images/2017/06/istanbul/IMG_20170602_144252.jpg" width="100%" style="max-width:600px"/></p> <p>After a late lunch, I ran into some overly friendly and pushy carpet sellers, who invited me to see their shop... which happened to be in a basement. It was a bit scary, but I wanted anyway to buy a carpet for my fiancee, so it worked out fine-ish. The guy knew how to say "How are you?" in Romanian and that Gica Hagi is the best Romanian footballer. Also, when leaving, they complimented my beard (Take that, mom!). </p> <figure> <p><img alt="Kiosk outside the Topkapi Palace" src="http://rolisz.ro/static/images/2017/06/istanbul/P1160503.JPG" width="100%" style="max-width:600px"/> <figcaption>Kiosk outside the Topkapi Palace</figcaption></p> </figure> <p>Afterwards I went to see Hagia Sofia (Greek for Holy Wisdom), which was an old Greek Orthodox church, built in 537. It was converted into a mosque in 1453 and now it's a museum. The really interesting part about it is that it still has some of the old paintings of Christian saints, right along side the Islamic imagery. The church was designed by some geometers and you can see that the whole thing is very symmetric: the layout, the patterns in the stones and the decorations on the walls. It looks really great. Unfortunately, it's in restoration, so some parts are not visible for now. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="Outside remnants " src="http://rolisz.ro/static/images/2017/06/istanbul/hagia/thumbs/P1160417.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Sssssnakessss " src="http://rolisz.ro/static/images/2017/06/istanbul/hagia/thumbs/P1160419.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Cat. " src="http://rolisz.ro/static/images/2017/06/istanbul/hagia/thumbs/P1160420.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2017/06/istanbul/hagia/P1160417.JPG", "title": "Outside remnants\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160417.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160419.JPG", "title": "Sssssnakessss\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160419.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160420.JPG", "title": "Cat.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160420.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160422.JPG", "title": "That window looks like an emoji :D\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160422.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160427.JPG", "title": "Patterns on the wall.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160427.JPG", "w": 1080, "h": 1615}, {"src": "/static/images/2017/06/istanbul/hagia/P1160430.JPG", "title": "Arabic writing.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160430.JPG", "w": 1080, "h": 1615}, {"src": "/static/images/2017/06/istanbul/hagia/P1160431.JPG", "title": "Drink up.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160431.JPG", "w": 1080, "h": 1615}, {"src": "/static/images/2017/06/istanbul/hagia/P1160433.JPG", "title": "The Library\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160433.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160435.JPG", "title": "More cats.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160435.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160437.JPG", "title": "Chandelier.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160437.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160438.JPG", "title": "X marks the spot.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160438.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160442.JPG", "title": "The pulpit\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160442.JPG", "w": 1080, "h": 1615}, {"src": "/static/images/2017/06/istanbul/hagia/P1160445.JPG", "title": "Byzantine mural...\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160445.JPG", "w": 1080, "h": 1615}, {"src": "/static/images/2017/06/istanbul/hagia/P1160446.JPG", "title": "... surrounded by Muslim symbols\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160446.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160447.JPG", "title": "Mosaics.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160447.JPG", "w": 1080, "h": 1615}, {"src": "/static/images/2017/06/istanbul/hagia/P1160451.JPG", "title": "", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160451.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160453.JPG", "title": "The ceiling.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160453.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160454.JPG", "title": "Some feathery being.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160454.JPG", "w": 1080, "h": 1615}, {"src": "/static/images/2017/06/istanbul/hagia/P1160465.JPG", "title": "This door looks like a sarcophagus.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160465.JPG", "w": 1080, "h": 1615}, {"src": "/static/images/2017/06/istanbul/hagia/P1160467.JPG", "title": "The balconies\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160467.JPG", "w": 1080, "h": 1615}, {"src": "/static/images/2017/06/istanbul/hagia/P1160470.JPG", "title": "The Empresses' view\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160470.JPG", "w": 1080, "h": 1615}, {"src": "/static/images/2017/06/istanbul/hagia/P1160478.JPG", "title": "Half-gone saints\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160478.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160487.JPG", "title": "Access denied.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160487.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160492.JPG", "title": "Feathery being again, now with a head.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160492.JPG", "w": 1080, "h": 1615}, {"src": "/static/images/2017/06/istanbul/hagia/P1160500.JPG", "title": "A solar clock, which indicated three different things.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160500.JPG", "w": 1080, "h": 722}, {"src": "/static/images/2017/06/istanbul/hagia/P1160501.JPG", "title": "The water fountain.\n", "msrc": "/static/images/2017/06/istanbul/hagia/thumbs/P1160501.JPG", "w": 1080, "h": 722}]</script> </div> <p>After the church I crossed the Golden Horn by walking across the Galata Bridge. It separates the old, historical Constantinople from the new, modern Istanbul. The bridge has two levels, one above, for cars, and one for pedestrians below. The lower level is full of restaurants, with the waiters calling you in at every step. </p> <p><img alt="Bridge over the Golden Horn" src="http://rolisz.ro/static/images/2017/06/istanbul/P1160526.JPG" width="100%" style="max-width:600px"/></p> <p>My last stop for the day was the Galata Tower. It was built in 1348, as part of the Genoese colony of Constantinople. It was damaged several times by fire, even though sometimes it was used to spot fires in other parts of the city. Now the insides have been modernized, with elevators and a nice cafe. From the top you have a beautiful panoramic view of the city. And from there you realize that Istanbul is 'yuuuuuuge. In pretty much every direction you look, you can't see its limits. But there is this strong contrast: you have this impressive, majestic old tower and right next to it you have 60 year old apartment buildings that have never seen any maintenance, so there are cracks in the walls and the paint is half gone. From the top of the tower you can enjoy a beautiful sunset and then look down to see how somebody is making a BBQ in their rooftop garden. I wonder how people who live there enjoy that too, knowing that thousands of tourists are analyzing their culinary skills. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="The Galata Tower from up close. " src="http://rolisz.ro/static/images/2017/06/istanbul/tower/thumbs/P1160539.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="From a distance. " src="http://rolisz.ro/static/images/2017/06/istanbul/tower/thumbs/P1160528.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Istanbul to the horizon " src="http://rolisz.ro/static/images/2017/06/istanbul/tower/thumbs/P1160547.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2017/06/istanbul/tower/P1160539.JPG", "title": "The Galata Tower from up close.\n", "msrc": "/static/images/2017/06/istanbul/tower/thumbs/P1160539.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2017/06/istanbul/tower/P1160528.JPG", "title": "From a distance.\n", "msrc": "/static/images/2017/06/istanbul/tower/thumbs/P1160528.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2017/06/istanbul/tower/P1160547.JPG", "title": "Istanbul to the horizon\n", "msrc": "/static/images/2017/06/istanbul/tower/thumbs/P1160547.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2017/06/istanbul/tower/P1160554.JPG", "title": "Rooftop reading under the tower.\n", "msrc": "/static/images/2017/06/istanbul/tower/thumbs/P1160554.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2017/06/istanbul/tower/P1160559.JPG", "title": "The old city\n", "msrc": "/static/images/2017/06/istanbul/tower/thumbs/P1160559.JPG", "w": 4272, "h": 2856}]</script> </div> <p>When I went back to the hotel, I discovered the sign pointing towards in the airport: it was right at the exit from the metro. Yay. At least the trams and metros in Istanbul were pretty clean and with air conditioning. </p> <p><img alt="One of the many mosques" src="http://rolisz.ro/static/images/2017/06/istanbul/P1160523.JPG" width="100%" style="max-width:600px"/></p> <p>On the way back to Zurich, I stayed at another hotel, which was fancier and cheaper, but a 10 minute ride from the airport. While it was nice, it turned out the Google Maps doesn't quite know the area well, because it wanted to send me walking over a highway to get to a bus stop, or along an nonexistent street. Ah, the fun adventures at 9PM in a foreign city.</p> <p><img alt="Boat on the Golden Horn" src="http://rolisz.ro/static/images/2017/06/istanbul/P1160525.JPG" width="100%" style="max-width:600px"/></p> <p>The first thing I went to see on Monday was the Grand Bazaar, the world's oldest shopping mall and it's said to be the world's most touristy place with 91 million visitors every year. That being said, I wasn't on a shopping spree, so I admired the exotic spice shops, colourful carpet shops and shiny jewelry shops only from a distance.</p> <div class="gallery clearfix" style="max-width:600px"> <img title="Entrance to the Grand Bazaar " src="http://rolisz.ro/static/images/2017/06/istanbul/bazaar/thumbs/P1160593.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Ceiling decorations " src="http://rolisz.ro/static/images/2017/06/istanbul/bazaar/thumbs/P1160594.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Shops, shops everywhere " src="http://rolisz.ro/static/images/2017/06/istanbul/bazaar/thumbs/P1160595.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2017/06/istanbul/bazaar/P1160593.JPG", "title": "Entrance to the Grand Bazaar\n", "msrc": "/static/images/2017/06/istanbul/bazaar/thumbs/P1160593.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2017/06/istanbul/bazaar/P1160594.JPG", "title": "Ceiling decorations\n", "msrc": "/static/images/2017/06/istanbul/bazaar/thumbs/P1160594.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2017/06/istanbul/bazaar/P1160595.JPG", "title": "Shops, shops everywhere\n", "msrc": "/static/images/2017/06/istanbul/bazaar/thumbs/P1160595.JPG", "w": 2856, "h": 4272}]</script> </div> <p>Then I proceeded to the modern part of Istanbul: Taksim Square, where the Monument of the Republic stands, built in 1928 for the 5th anniversary of the foundation of the Republic of Turkey. It's a small area, with quite heavy police presence, because people like to protest here (among other reasons against the demolition of the Taksim Gezi Park), but it has some boutiques selling street food with some amazing ice cream :X.</p> <div class="gallery clearfix" style="max-width:600px"> <img title="The monument in the middle of Taksim Square " src="http://rolisz.ro/static/images/2017/06/istanbul/taksim/thumbs/taksim.jpg" style="display:block" width="100%" style="max-width:600px"/> <img title="The entrance to the market fair in Taksim Square " src="http://rolisz.ro/static/images/2017/06/istanbul/taksim/thumbs/P1160617.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2017/06/istanbul/taksim/taksim.jpg", "title": "The monument in the middle of Taksim Square\n", "msrc": "/static/images/2017/06/istanbul/taksim/thumbs/taksim.jpg", "w": 2856, "h": 4272}, {"src": "/static/images/2017/06/istanbul/taksim/P1160617.JPG", "title": "The entrance to the market fair in Taksim Square\n", "msrc": "/static/images/2017/06/istanbul/taksim/thumbs/P1160617.JPG", "w": 4272, "h": 2856}]</script> </div> <p>Of course, I don't like to visit a city where Google has an office, without visiting the office itself. These are in the Levent quarter, a business district full of skyscrapers. </p> <p><img alt="View from the Google office" src="http://rolisz.ro/static/images/2017/06/istanbul/P1160618.JPG" width="100%" style="max-width:600px"/></p> <p>To end my trip I went down to the sea side and walked a bit along it (and got lost by getting on the wrong bus), looking to the opposite side of the Bosphorus, regretting that I didn't have time to go to the Asian side. Oh well, there's always next time!</p> <p><img alt="Looking across the Bosphorus" src="http://rolisz.ro/static/images/2017/06/istanbul/P1160627.JPG" width="100%" style="max-width:600px"/></p> <p>Two more fun facts about Istanbul: they don't seem to have stray dogs, but they have stray cats. Cats everywhere. Hagia Sofia was full of them. Everywhere on the street? Cats, cats, cats. I think it's cat paradise. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="For some reason, Kim Jong Un seems to be popular. " src="http://rolisz.ro/static/images/2017/06/istanbul/misc/thumbs/P1160536.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Baseball hat-like roof overhang " src="http://rolisz.ro/static/images/2017/06/istanbul/misc/thumbs/P1160504.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="I guess the owner ran out of ideas " src="http://rolisz.ro/static/images/2017/06/istanbul/misc/thumbs/P1160506.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2017/06/istanbul/misc/P1160536.JPG", "title": "For some reason, Kim Jong Un seems to be popular.\n", "msrc": "/static/images/2017/06/istanbul/misc/thumbs/P1160536.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2017/06/istanbul/misc/P1160504.JPG", "title": "Baseball hat-like roof overhang\n", "msrc": "/static/images/2017/06/istanbul/misc/thumbs/P1160504.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2017/06/istanbul/misc/P1160506.JPG", "title": "I guess the owner ran out of ideas\n", "msrc": "/static/images/2017/06/istanbul/misc/thumbs/P1160506.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2017/06/istanbul/misc/P1160608.JPG", "title": "They called to say \"Thanks for all the fish\"\n", "msrc": "/static/images/2017/06/istanbul/misc/thumbs/P1160608.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2017/06/istanbul/misc/P1160625.JPG", "title": "The child seems quite angry :-S\n", "msrc": "/static/images/2017/06/istanbul/misc/thumbs/P1160625.JPG", "w": 4272, "h": 2856}]</script> </div> <p>Also, the food is amazing. Both places where I sat down to eat had really good stuff. Unfortunately, I'm on diet, so I couldn't eat more :(</p> <p>I enjoyed my time in Istanbul, but I didn't get to hear <a href="https://www.youtube.com/watch?v=ASywAfBAVrQ">Mr. Toot</a> playing.</p> Wed, 14 Jun 2017 21:36:00 GMT tag:rolisz.ro,2017-06-14:/2017/06/14/istanbul-land-of-turbans-spice-and-carpets Happy Mother's Day! http://rolisz.ro/2017/05/07/happy-mother-s-day/ <iframe width="560" height="315" src="https://www.youtube.com/embed/kbaTJdmex8M" frameborder="0" allowfullscreen class="youtube"></iframe> <p>Happy Mother's Day to my dear mom! I love you! Kisses from New York!</p> Sat, 06 May 2017 22:54:00 GMT tag:rolisz.ro,2017-05-07:/2017/05/07/happy-mother-s-day Look what I found on Uetliberg http://rolisz.ro/2017/04/23/look-what-i-found-on-uetliberg/ <p><img alt="Hands with rings" src="http://rolisz.ro/static/images/2017/04/ring/hands.jpg" width="100%" style="max-width:600px"/></p> <p>Scarcely had I hiked up Uetliberg when I found the one my heart loves. I held her tightly and I put a ring on her finger! (to paraphrase Song of Solomon 3:4)</p> Sun, 23 Apr 2017 20:56:00 GMT tag:rolisz.ro,2017-04-23:/2017/04/23/look-what-i-found-on-uetliberg Indexing IM logs with Elasticsearch http://rolisz.ro/2017/04/01/indexing-im-logs-with-elasticsearch/ <p>Remember <a href="https://github.com/rolisz/Log">my old project</a> for processing instant messaging logs? Probably, because I wrote about it <a href="https://rolisz.ro/2012/08/20/processing-im-logs/">five years ago</a>. Well, the project is only mostly dead, every once in a while I still occasionally work on it. </p> <p>I mostly use it as an excuse to learn technologies that are used outside of the Google bubble. One thing that really impressed me with how well it works and how easy it is to set up was <a href="https://www.elastic.co/">Elasticsearch</a>. Elasticsearch is a search engine. You give it your documents and it indexes them and enables you to query them fast. There are other projects that do this for you, but ES can do scaling to multiple machines out of the box, has sane defaults for how to process text and it has many addons. One of the amazing addons, built by the same company, is Kibana, a dashboard and reporting tool, perfectly integrated with Elasticsearch.</p> <p>Let's see how we can get our data into Elasticsearch and how we can learn something from it. We're going to use the Python bindings and I assume that you have all the official packages installed. I'm going to assume that getting the data is a solved problem and we basically have an iterator that produces dictionaries of the following form:</p> <div class="highlight"><pre>{&#39;datetime&#39;: &#39;2017-03-30T23:12&#39;, &#39;message&#39;: &#39;Hello there&#39;, &#39;contact&#39;: &#39;Friend&#39;, &#39;sender&#39;: &#39;Me&#39;} </pre></div> <p>To add the data into Elasticsearch, we use the following super short snippet:</p> <div class="highlight"><pre><span class="kn">from</span> <span class="nn">elasticsearch</span> <span class="kn">import</span> <span class="n">Elasticsearch</span> <span class="kn">from</span> <span class="nn">elasticsearch.helpers</span> <span class="kn">import</span> <span class="n">bulk</span> <span class="n">es</span> <span class="o">=</span> <span class="n">Elasticsearch</span><span class="p">()</span> <span class="c"># Create the connection to the Elasticsearch cluster</span> <span class="n">es</span> <span class="o">=</span> <span class="n">Elasticsearch</span><span class="p">([</span><span class="s">&#39;http://elastic:changeme@localhost:9200/&#39;</span><span class="p">])</span> <span class="c"># Set a certain property for the message field.</span> <span class="n">es</span><span class="o">.</span><span class="n">indices</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="s">&#39;chat&#39;</span><span class="p">,</span> <span class="p">{</span><span class="s">&quot;mappings&quot;</span> <span class="p">:</span> <span class="p">{</span> <span class="s">&quot;message&quot;</span> <span class="p">:</span> <span class="p">{</span> <span class="s">&quot;properties&quot;</span> <span class="p">:</span> <span class="p">{</span> <span class="s">&quot;message&quot;</span> <span class="p">:</span> <span class="p">{</span> <span class="s">&quot;type&quot;</span> <span class="p">:</span> <span class="s">&quot;text&quot;</span><span class="p">,</span> <span class="s">&quot;fielddata&quot;</span><span class="p">:</span> <span class="bp">True</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> <span class="p">})</span> <span class="c"># Generator that creates dictionaries of our messages and tells ES were to index</span> <span class="c"># them</span> <span class="k">def</span> <span class="nf">lines</span><span class="p">():</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span> <span class="n">d</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">row</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">row</span><span class="o">.</span><span class="n">keys</span><span class="p">()}</span> <span class="n">d</span><span class="p">[</span><span class="s">&#39;_op_type&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;index&#39;</span> <span class="n">d</span><span class="p">[</span><span class="s">&#39;_index&#39;</span><span class="p">]</span><span class="o">=</span> <span class="s">&#39;chat&#39;</span> <span class="n">d</span><span class="p">[</span><span class="s">&#39;_type&#39;</span><span class="p">]</span><span class="o">=</span> <span class="s">&#39;message&#39;</span> <span class="k">yield</span> <span class="n">d</span> <span class="c"># Imports into Elasticsearch in bulk (once every 5000 messages)</span> <span class="n">bulk</span><span class="p">(</span><span class="n">es</span><span class="p">,</span><span class="n">lines</span><span class="p">())</span> </pre></div> <p>And that's about it. Normally, Elasticsearch can create indexes automatically when you first import something, but in our case, it has a wrong default for the message field, so we have to manually specify that it should have the <a href="https://www.elastic.co/guide/en/elasticsearch/reference/5.3/fielddata.html">fielddata</a> setting true.</p> <p>Now let's see what this gives us. We are going to start Kibana, which is the dashboard creating tool for Elasticsearch. There we can explore our dataset and filter by everything:</p> <p><a href="http://rolisz.ro/static/images/2017/04/elasticsearch/kibana.png"><img alt="Kibana UI" src="http://rolisz.ro/static/images/2017/04/elasticsearch/kibana.png" width="100%" style="max-width:600px"/></a></p> <p>This shows you some of my discussions with Cătălin. At the top you can see the number of messages we've had over the years. It's a partial lie: in the second half of 2015 we talked over Wire and I didn't save my discussions from there and since the second half of 2016 we've been talking on Telegram and I haven't written the import tool for that. </p> <p>Below that you can see some of the actual messages, with all the metadata. It's quite nice to explore your data and to reminisce over old conversations.</p> <p>Then we can switch to the Visualize tab and create some pretty graphs:</p> <p><a href="http://rolisz.ro/static/images/2017/04/elasticsearch/top.png"><img alt="Top contacts" src="http://rolisz.ro/static/images/2017/04/elasticsearch/top.png" width="100%" style="max-width:600px"/></a></p> <p>This is a graph of the top 20 people I have talked with. Cătălin leads the pack, because I have been talking to him for about 9 years and then there are various friends. One thing that was surprising to me was how some people with whom I haven't talked in 3-4 years are still there, meaning that I must've talked to them a loooot before that. </p> <p><a href="http://rolisz.ro/static/images/2017/04/elasticsearch/timeline.png"><img alt="Amount of chats over the year" src="http://rolisz.ro/static/images/2017/04/elasticsearch/timeline.png" width="100%" style="max-width:600px"/></a></p> <p>Another easy graph to make is to plot how much I've talked to my top 20 contacts over the years. As you can see, there is a lot of variation. It's hard to tell much just by eyeballing the data, but it seems that most of the time there are burst of activity with a friend and then we talk much less for a while. Maybe I should use it to decide who to talk to again. :D</p> <p>The last thing I want to show is from an addon to Elasticsearch, called X-Pack. It's a paid addon, but it has a free 30 day trial. It has a module called Graph, where you enter certain keywords and it shows you related terms.</p> <p><a href="http://rolisz.ro/static/images/2017/04/elasticsearch/graph.png"><img alt="Graph of connected terms" src="http://rolisz.ro/static/images/2017/04/elasticsearch/graph.png" width="100%" style="max-width:600px"/></a></p> <p>To get this image, I entered Python, Ruby, cooking and Bible. As you can see, it "knows" that Python and Ruby are connected. Even more, it knows that Django is a Python framework, while Rails is a Ruby framework. PHP and Javascript are also programming languages, so they are part of that cluster. </p> <p>But cooking forms a different cluster, together with cleaning, which I should be doing :D </p> <p>Bible is another separate cluster, with study and reading. It figured out that I use the ESV Bible translation. The relationship between study and collegehumor is funny: I sent a certain link to many people, which was about "studying" and this confuses it into thinking the two are related. Alas, humour still beats modern AI techniques. </p> <p>Considering how much effort we invested into this, it gives really good results. Of course, it's helpful that I have a lot of data from which it can learn.</p> <p>I find Elasticsearch a great tool for quickly searching when I talked to someone about a certain topic and for doing some simple visualizations. It's super simple to use, but still powerful.</p> Sat, 01 Apr 2017 19:46:00 GMT tag:rolisz.ro,2017-04-01:/2017/04/01/indexing-im-logs-with-elasticsearch Silence http://rolisz.ro/2017/03/10/silence/ <p><img alt="Silence poster" src="http://rolisz.ro/static/images/2017/03/silence-poster.jpg" width="100%" style="max-width:600px"/></p> <p>Silence is a movie by Martin Scorsese about two Catholic priests, Rodriguez and Garupe, who go to Japan in the 17th century to find their mentor, Father Ferreira, who is rumoured to have lost the faith.</p> <p>It's a really good movie, even though it's extremely brutal. It makes you think about some really hard questions, such as where is God among suffering and when He is (or seems) silent, despite all your prayers. </p> <p>It's based on a book by Endo Shusaku. I read the book when I was 12 or 13. I found it too long and boring, but I forced myself to finish it. I think it was quite inappropriate for me at that time: I couldn't process the central conflict of the book, the dilemma the main character is faced with when he either has to apostatize or watch as other Christians are tortured because of him. I'm not sure, but I think after reading this book I somehow lost interest in reading for a long time.</p> <p>The movie stays close to the book, so it was interesting to look at the same subject more than 10 years later. What made it even more interesting was that I asked the same question last year, when the sky seemed to be falling over me, during my depression.</p> <p>While I don't agree with some of the tenets of Catholicism, I do believe that some Catholics were true believers, who loved God. In the movie you get the first impression of this when the priests arrive in Japan. Their guide takes them to some "Kirishitans" (misspelled/japanized version of the word Christian) who have to profess their faith in secret, because of persecutions. The believers are incredibly happy that God sent them some priests and shelter them. Even though they don't have enough food, they prefer to starve, so that they can feed the priests, knowing that the priests will then feed them spiritually. They have waited anxiously for years for priests to come to absolve them, to administer sacraments and to baptize their children. When the authorities realize that there are Christians around, they manage to catch four. When given the opportunity to recant, three of them refuse, so they are tied to pillars in the sea and left there to be beaten to death by the sea. The last one dies praising God and looking forward to heaven. </p> <p><img alt="Rodriguez with a local believer" src="http://rolisz.ro/static/images/2017/03/silence_rodriguez.jpg" width="100%" style="max-width:600px"/></p> <p>I believe in the universal priesthood of believers (which means that you don't need a designated priest, you can go with your prayers directly to God), so I don't believe that you need priests from Portugal to have your sins forgiven. But this image of people being hungry for the Word of God is one that is very familiar: my parents did that too. Before communism fell in Romania, Christian literature was rare. My mom was an English teacher, so she speaks good English. After the revolution, several people from the church invited other saints from abroad, from the US, the Netherlands, UK, Switzerland, to help them grow and learn more about God. My mother ended up going with the foreigners to translate for them, several weeks every year.</p> <p>I also have met personally one person who has been in communist prisons for his faith, my parents know several more and I've read books about other people in my country who have been tortured for their faith. The movie just gives it a more visual face to what I already knew and makes me wonder "What kept these people going?" and I can't believe that just a lie would give them the inner strength to resist. </p> <p>After a while, the two priests part ways. They are both separately captured by the Japanese, but they take very different paths. Garupe dies trying to save other Christians from death. Rodriguez was never allowed as much freedom by his captors, but at the same time he didn't resist too much either. In the end, he recants. He steps on the fumie (a metal plaque with an "image" of Jesus) and then he helps catch other Christians, by examining objects for Christian iconography. He claims that Christ spoke to him, giving him permission to step on the image. He lives the rest of his life as a Buddhist, but when he is cremated, he is shown to hold a small cross hidden in his palms.</p> <p><img alt="Father Ferreira" src="http://rolisz.ro/static/images/2017/03/silence_ferrera.jpg" width="100%" style="max-width:600px"/></p> <p>I think Rodriguez made the wrong choice when he apostatized, especially that he knew from a discussion with some of the local believers that they were convinced that they will be going to "paraiso", where there is no hard work, no starving and no taxes. While their suffering was difficult, he should have known that in the end they would be rewarded for it, no matter how much it hurt him to watch and hear the torture.</p> <p>At the same time, it's easy to judge from my comfy chair, knowing that I've never been anywhere near any kind of persecution for my faith. I just hope and pray that when I will be in a similar situation, I will find the grace from God to act faithfully. </p> <p>While the ending is sad, I still found the movie to be enjoyable, although in the philosophical sense, not the emotional one, because it almost brought me to tears in the cinema. It's definitely not a movie to watch lightheartedly and be prepared to be confronted with some tough questions, but in a good way, I believe.</p> Thu, 09 Mar 2017 22:45:00 GMT tag:rolisz.ro,2017-03-10:/2017/03/10/silence Backing up 2: The NAS http://rolisz.ro/2017/03/02/backing-up-2-the-nas/ <figure> <p><img alt="Photo of Synology DS916+" src="http://rolisz.ro/static/images/2017/03/nas2/nas.jpg" width="100%" style="max-width:600px"/> <figcaption>My DS916+ NAS hidden behind next to a drawer in my living room</figcaption></p> </figure> <p>As I mentioned in my <a href="https://rolisz.ro/2017/02/20/backing-up/">previous post</a>, it's good to have various kinds of backups. Today I'm going to talk about on-site backups, in a Network Attached Storage.</p> <p>Network Attached Storages (NAS) are small form computers which usually have at least two hard drives. The hard drives are often hot swappable and can be taken out without disassembling the computer. They are meant to be always on, so they don't consume a lot of power. </p> <p>You can build your own NAS. It's not harder than building your own computer, but if you want it to look really nice and to consume few watts, you'll have to search around quite a lot for parts. The biggest hassle however is setting it up. Whether you go the Linux or Windows route, it still means configuring a server. Some people find it fun, some people don't. </p> <p><a href="http://rolisz.ro/static/images/2017/03/nas2/home_screen.png"><img alt="Synology OS start screen" src="http://rolisz.ro/static/images/2017/03/nas2/home_screen.png" width="100%" style="max-width:600px"/></a></p> <p>I ended up buying a pre-made Synology DS916+ unit. It's a 4 drive bay, with a quad core CPU, that consumes around 30W. It's possibly an overkill even for me, but meh, I wanted to go fancy and future-proof. I put in 3 3TB WD Red drives (so I have an empty slot).</p> <p>What convinced me to go the pre-made route? The surrounding ecosystem. Yes, I can configure my home network (with a significant amount of effort) and set-up all the backups, but there's no way I'm going to develop about 10 iOS/Android apps that Synology has. These apps enable me to browse my files from my phone, remotely, to stream my music, to have a remote photo library (including automatic backups of my photos taken with the phone), note taking app that sync back and so on. It basically offers you your very own little cloud. This I found super convenient.</p> <p>Setting it up is super easy. You just put in the hard drives, start it up, configure a few things and you've got a working NAS.</p> <p><a href="http://rolisz.ro/static/images/2017/03/nas2/storage_manager.png"><img alt="Storage Manager" src="http://rolisz.ro/static/images/2017/03/nas2/storage_manager.png" width="100%" style="max-width:600px"/></a></p> <p>One of the more important choices you have to make is how to set up your hard drives. The trade-off is between how many hard drives can fail before any data is lost and how much overhead is needed (how much space is lost). Synology supports a lot of RAID formats (0, 1, 5, 6, 10) and it's own Hybrid Raid thing. RAID 1 and 5 offer a one disk redundancy (if one disk fails, you can still recover all the data from the array), while RAID 6 gives you two disk redundancy. I went with the RAID 5 for my own NAS.</p> <p>Another choice you have to make is what file system to use. Here is where Synology has an advantage over other NAS vendors: it offers Btrfs support. This is a shiny new file system which does file level checksumming and scrubbing, where it looks for files that might have been corrupted and tries to recover them from redundant copies. It has many other features, but these were the most important to me, because they prevent silent bitrot. Bitrot is a process in which a random bit on the hard drive is flipped, corrupting data. This is because small parts of the hard disk platter lose their magnetic orientation. This happens on average about 10^(-14) times, so if you have a 10 terabyte array, it's almost guaranteed that it will happen during it's lifetime. This is usually detected only when you try to read the data, when you suddenly realize that it doesn't make sense anymore. Because btrfs has checksumming, it can figure out when files are corrupted and because it offers scrubbing, it can find out before you go looking for it, while there is still a redundant copy of the file, so it can recover it.</p> <p><a href="http://rolisz.ro/static/images/2017/03/nas2/package_center.png"><img alt="Package Center" src="http://rolisz.ro/static/images/2017/03/nas2/package_center.png" width="100%" style="max-width:600px"/></a></p> <p>There's a "Cloud Sync" app that enables you to easily backup your various online services, so I set it up with Google Drive and soon it downloaded everything. I also plugged in my external hard drive and downloaded everything from there. The files that live on my computer were copied using rsync or scp, even though the NAS has a fairly good web UI for uploading.</p> <p>After I uploaded all my photos, it spent more than a week indexing them in the Photo library app. It has a super primitive form of facial recognition, which is completely useless, but it recognizes the tags that Picasa or Windows Live Gallery inserted (and they had much better facial recognition), so I could now browse by people.</p> <p>It has a Download Station, which you can use to automatically download stuff, from random pages, torrents or even YouTube videos. </p> <p>It has an Audio Station, which I use because I listen to many sermons, not all of which come in a nice podcast, so it's just easier for me to put them on my NAS and listen to them from there. </p> <p>The Video Station is pretty impressive. It can do transcoding on the fly and you can play in your browser or on your phone. It searches for metadata for the files that you have on the internet, to show nice images and information about it. But I use Netflix for almost all my home entertainment needs, so I don't put this to good use.</p> <p>All these work both from the browser and from your mobile. This attracted me the most: the convenience of mobile. And because it has support for HTTPS, it's fairly safe (as safe as something you expose to the Internet from your living room can be).</p> <p><a href="http://rolisz.ro/static/images/2017/03/nas2/control_panel.png"><img alt="Control Panel" src="http://rolisz.ro/static/images/2017/03/nas2/control_panel.png" width="100%" style="max-width:600px"/></a></p> <p>From the Control Panel you can change most of the settings, including security ones. There are several basic ones that you have to make if you expose it to the internet, such as auto banning after several unsuccessful attempts to login.</p> <p>It also offers the option to browse over HTTPS. To avoid the complaints from the browser about a self signed certificate, I actually went and bought a domain for "my house". Synology has support for Dynamic DNS, so updating the domain to point to my IP is automatic. Also, it supports Let's Encrypt so getting the HTTPS certificate was trivial, from the Control Panel. </p> <p>It also has a web server, a mail server, a chat server and a lot of other stuff which I didn't set up. It has built-in support for Docker, so it can run whatever container you have. </p> <p>I find the DS916+ to be more than enough for my needs. Since I have it, I find it much easier to work on my various projects when I am away, because I know I can always access them even remotely, on my NAS. It's very quiet, it doesn't bother me, even though I am quite sensitive to noise. Sometimes when it starts a background process I can hear it, but most of the time it's hibernating.</p> Thu, 02 Mar 2017 20:51:00 GMT tag:rolisz.ro,2017-03-02:/2017/03/02/backing-up-2-the-nas Backing up http://rolisz.ro/2017/02/20/backing-up/ <figure> <p><a href="https://commons.wikimedia.org/wiki/File:Backup_Backup_Backup_-_And_Test_Restores.jpg"><img alt="Burned down computer" src="http://rolisz.ro/static/images/2017/02/computer.jpg" width="100%" style="max-width:600px"/></a> <figcaption>What can happen to your computer</figcaption></p> </figure> <p>In today's world, our data and our information is one of our most valuable assets. I have photos going back to 2008. My sporadic journal has digital entries from 2010. I have IM logs from 2009. I have a list of my monthly expenses since 2012. My blog goes back to 2010. I have loads of projects in various stages. Most of this information is irreplaceable (I'm never going to be 16 again, to take those photos once more :( ) and most of it is quite valuable, some having sentimental value (photos), some from a financial point of view, some professionally (my coding projects).</p> <p>Just keeping all this on my own computer was not enough. Hard drives can fail at any time, so I wanted a better back-up solution. At first, I just bought an external hard drive. I did an initial backup of everything to it... and the next one was half a year later. And then one year later. And at that time, I detected some file system level corruption and I had to spend some time recovering data. So I decided that it's not enough.</p> <p>I use various online backup services, but that means my data is in somebody else's hands. Some promise encryption, some have been known to collaborate with various governments, some have shutdown access to the entire account for an entirely different issue. It's enough to look at today's political landscape to see that this can easily become (or already is) a problem. I will still keep using it for most things, because of convenience (Google Photos is awesome and I haven't found anything remotely similar and I don't say this because I work for Google, but because it's really awesome) but I also want to have a copy of my data that is more under my hands.</p> <p>In general it's good to have several layers of backups. At least one should be on-site, for ease of access. Your computer hard drive kicks the bucket, you reach over to your external hard drive or the other computer that has the copy, and you recover the lost files. Problem solved. It's also trivial to copy things locally, because bandwidth is not an issue. </p> <p>While on-site solves the problem of individual hardware failures (unless you are really unlucky and both fail at the same time), it has another failure mode: entire home/office failures. Examples of this include a burglary, fire or floods. If any of these hit, it's likely that most electronic devices you have will stop working. To help with this, you need off-site backups. These are backups that you store in a geographically far location. The further they are, the unlikelier it is that whatever would take out either your home or your off-site backups would affect the other one too. In my case, my off-site backups will be in Romania. That's 1200 km away, so if something like a meteor hit Europe and destroyed half of it, that would cause me to lose data, but at that point I have much bigger problems than that.</p> <p>You also need to make sure that your backups will still work. It's no use if you create a backup and a year later, when you try to recover it, you discover that actually there was some bit rot and your files are unreadable. There are various ways to protect against this, from checksumming files at the file system level to using hardware redundancy (RAID arrays most commonly).</p> <p>There is a large variation on what you can do to protect your data. There is always a trade-off between safety and how much it costs. In the following posts I will go into some more details about what I use for securing my own data, starting with the on-site backup to a Network Attached Storage.</p> Mon, 20 Feb 2017 21:23:00 GMT tag:rolisz.ro,2017-02-20:/2017/02/20/backing-up Winter sports http://rolisz.ro/2017/02/05/winter-sports/ <p><img alt="From up close, it looks just like the wallpaper from one of the Mac OS versions" src="http://rolisz.ro/static/images/2017/02/wintering/IMG_1092.jpg" width="100%" style="max-width:600px"/></p> <p>I've been in Switzerland for almost two and half years now, but I haven't done the typical Swiss things (except eating Fondue). Last winter I was either not here or busy at work, so I avoided all winter sports. </p> <p>But this year two opportunities came up when I could go with colleagues to do skiing or snowboarding. So I finally tried both. I had a little skiing experience from two years ago, but that was it. </p> <p><img alt="I'm on a snowboard" src="http://rolisz.ro/static/images/2017/02/wintering/IMG_1081.jpg" width="100%" style="max-width:600px"/></p> <p>One Friday at 8 PM a colleague asked me if I wanted to go to Laax for skiing the next day. I didn't really have any plans, so I said why not. He was going to teach his girlfriend how to snowboard, so I decided I would tag along with them. The others were skiers with more experience, so I didn't want to be the clunky wheel. </p> <p>I fell on my butt more times than I can imagine and it was sore for two days. But it was fuuun!. Towards the end of the day I could go about 100 m without falling!</p> <iframe width="560" height="315" src="https://www.youtube.com/embed/opR5EL79zd8" frameborder="0" allowfullscreen class="youtube"></iframe> <p>The week after that, my team had some visitors and during dinner, we decided we should all go skiing in Lenzerheide two days later. There was another beginner in this group, so we decided to take ski lessons together.</p> <p>Skiing went better. I remembered more than I expected since last year. I fell only about two or three times. One of which was standing in place. Whoops. Another one being the alternative to running into a fence. </p> <p><img alt="Some mountain peak around Lenzerheide" src="http://rolisz.ro/static/images/2017/02/wintering/IMG_1194.jpg" width="100%" style="max-width:600px"/></p> <p>However, I found that I had much less control over my skis, especially with regards to speed. When you are on the snowboard, you are in an unstable equilibrium and you constantly have to balance. Because of this, as a beginner, you don't really get to a high speed, because as you go faster, it's harder to balance, so you fall before reaching a dangerous speed. It will hurt a bit, but it's unlikely to break any bones. But on the skis, you are in a stable equilibrium, so if you just do nothing as you are sliding down, you will pick up speed, with little risk of just toppling over. But then, when a turn comes, you won't be able to make it, so you'll either fall (at a much higher speed), hit the fence/tree or run off-piste. </p> <p><img alt="And off we go" src="http://rolisz.ro/static/images/2017/02/wintering/IMG_1186.jpg" width="100%" style="max-width:600px"/></p> <p>Of course, this is all true only for beginners like me. When you get to more advanced stuff, it might change, but for now, I feel more comfortable on the snowboard. And hopefully I can go again in two weeks time!</p> Sun, 05 Feb 2017 20:17:00 GMT tag:rolisz.ro,2017-02-05:/2017/02/05/winter-sports Sous vide with Anova Precision Cooker http://rolisz.ro/2017/01/28/sous-vide-with-anova-precision-cooker/ <p><img alt="Frontal view of Anova Cooker" src="http://rolisz.ro/static/images/2017/01/anova/frontal.jpg" width="100%" style="max-width:600px"/></p> <p>Last year I bought an Anova Sous Vide Cooker. The name is slightly misleading, because it's not generally used to cook in a vacuum, but for cooking at very precisely controlled temperatures.</p> <p><img alt="Side view of Anova Cooker" src="http://rolisz.ro/static/images/2017/01/anova/side.jpg" width="100%" style="max-width:600px"/></p> <p>The advantage of using Anova is that you can cook various foods at temperatures below 100 degrees, for several hours. This way, you can avoid the degradation of certain proteins. For example, egg white starts to become solid at around 65 degrees, while the yolk at 70. If you cook the egg at just 65 for half an hour, you can get a perfect soft boiled egg, with really runny yolk, while the white is solid. </p> <p>Another advantage is that it's just easier to prepare the meat. You season it, bag it, put it in the water and you wait for a couple of hours. Because of this, it's easier to get consistent results every time. If you make a steak on the grill, the exact time you let it there matters, down to tens of seconds. When you are cooking it in the Anova for 3 hours, 5 minutes here or there are not that important.</p> <div class="gallery clearfix" style="max-width:600px"> <img title="Seasoning the chicken with salt, pepper and fine herbs " src="http://rolisz.ro/static/images/2017/01/anova/chicken/thumbs/chicken_seasoned.jpg" style="display:block" width="100%" style="max-width:600px"/> <img title="Chicken in a bag. " src="http://rolisz.ro/static/images/2017/01/anova/chicken/thumbs/chicken_bag.jpg" style="display:block" width="100%" style="max-width:600px"/> <img title="The chicken cooking in the pot. " src="http://rolisz.ro/static/images/2017/01/anova/chicken/thumbs/chicken_pot.jpg" style="display:block" width="100%" style="max-width:600px"/> <img title="The end results: juicy, tender chicken. " src="http://rolisz.ro/static/images/2017/01/anova/chicken/thumbs/chicken_final.jpg" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2017/01/anova/chicken/chicken_seasoned.jpg", "title": "Seasoning the chicken with salt, pepper and fine herbs\n", "msrc": "/static/images/2017/01/anova/chicken/thumbs/chicken_seasoned.jpg", "w": 2136, "h": 1428}, {"src": "/static/images/2017/01/anova/chicken/chicken_bag.jpg", "title": "Chicken in a bag.\n", "msrc": "/static/images/2017/01/anova/chicken/thumbs/chicken_bag.jpg", "w": 2136, "h": 1428}, {"src": "/static/images/2017/01/anova/chicken/chicken_pot.jpg", "title": "The chicken cooking in the pot.\n", "msrc": "/static/images/2017/01/anova/chicken/thumbs/chicken_pot.jpg", "w": 2136, "h": 1428}, {"src": "/static/images/2017/01/anova/chicken/chicken_final.jpg", "title": "The end results: juicy, tender chicken.\n", "msrc": "/static/images/2017/01/anova/chicken/thumbs/chicken_final.jpg", "w": 2136, "h": 1428}]</script> </div> <p>One of the first things I cooked was chicken breast. You just season it well with salt, pepper, maybe some herbs or lemon, put it in a bag and then put it in water. Depending on the water temperature, you can choose to get a really soft meat, or more tender, or more stringy. The chicken basically cooks in it's own juices, so it has a lot more flavor at the end.</p> <div class="gallery clearfix" style="max-width:600px"> <img title="Salmon in the bag in the beginning. You coat it with virgin olive oil. Optionally, add some herbs. " src="http://rolisz.ro/static/images/2017/01/anova/salmon/thumbs/salmon_begin.jpg" style="display:block" width="100%" style="max-width:600px"/> <img title="Salmon after it cooked for 1 hour. " src="http://rolisz.ro/static/images/2017/01/anova/salmon/thumbs/salmon_end.jpg" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2017/01/anova/salmon/salmon_begin.jpg", "title": "Salmon in the bag in the beginning. You coat it with virgin olive oil. Optionally, add some herbs.\n", "msrc": "/static/images/2017/01/anova/salmon/thumbs/salmon_begin.jpg", "w": 2136, "h": 1428}, {"src": "/static/images/2017/01/anova/salmon/salmon_end.jpg", "title": "Salmon after it cooked for 1 hour. \n", "msrc": "/static/images/2017/01/anova/salmon/thumbs/salmon_end.jpg", "w": 2136, "h": 1428}, {"src": "/static/images/2017/01/anova/salmon/salmon_salad.jpg", "title": "Salmon with N\u00fcsslisalat (Lamb's Lettuce), Avocado and Parmesan. Delicious!\n", "msrc": "/static/images/2017/01/anova/salmon/thumbs/salmon_salad.jpg", "w": 2136, "h": 1428}]</script> </div> <p>My best dish to date was salmon. From the first try, it came out really great. Again, no effort, no checking whether it's done. You just look at the timer and then you eat. </p> <p>Now if only I ate at home more often...</p> Sat, 28 Jan 2017 21:36:00 GMT tag:rolisz.ro,2017-01-28:/2017/01/28/sous-vide-with-anova-precision-cooker New year, old goals http://rolisz.ro/2017/01/07/new-year-old-goals/ <p><img alt="Same same, but different, but still same" src="http://rolisz.ro/static/images/memes/same_different.gif" width="100%" style="max-width:600px"/></p> <p>My attempt a year ago to set public goals was quite successful. I achieved most of them and the average completion score was 0.7. I took a break in the second half of the year, but now I'm well rested and I want to start again.</p> <p>I learned some things that work and some that don't. For example, tracking number of books read is not too useful, at least not in Beeminder, but tracking number of minutes spent reading is much better. This way, if you are reading through a really thick book, you are not derailed as easily. Also, tracking productivity can be done really well with Pomodoros. They are small enough to be able to do them always, but big enough to have a meaningful impact on your work.</p> <p>I also have to decide what my priorities are better. Last year I had a very large range of goals, which had me spread out into many areas, and inevitably some fell through the cracks. </p> <p>For example, I realized that in the last trip I took to Romania, I took my camera out of my bag only once. When I was in Israel, half the photos I took there where with my phone. It doesn't really make sense for me to have a goal related to my camera. I didn't even touch my photography goal last year.</p> <p>I had the piano goal last year, but I realize that now I will have to drop it. I will keep taking piano lessons, but I will play it at home on a best effort basis. I have too many other things on my plate and unfortunately, playing the piano is towards the bottom of the list, because I think it's the least beneficial for me.</p> <p>The new goals for this year are:</p> <h4>Physical</h4> <dl> <dt>Get to 82 kg by June</dt> <dd>I got to 82 kg last January and I hovered around that area until June, but then I lost the will power to stop snacking, so I put back all of that weight. Since then, I have been reading up a bit about how the body interacts with proteins, carbohydrates and fats and learned a bit about how some diets work (other than caloric restrictions). When I was 82 kg, everybody was remarking how thin I was, so for now I don't want to go lower than that, but I would like to stay there. </dd> <dt>Exercise three times a week</dt> <dd>I don't want to set specific target speeds or weights, because I have a small shoulder injury and I don't know how much it will hinder me. But I still plan to do some sort of vigorous exercise three times a week. This includes running, swimming, weightlifting, play squash, etc.</dd> </dl> <h4>Mental</h4> <dl> <dt>Read 24 books in 2017/read 30 minutes every day</dt> <dd>I read 21.5 books last year. Again, in the second half of the year, I took it easier, so I'm hoping now I can overcome that and if I keep a constant pace of 30 minutes per day, I will make it.</dd> <dt>Write 3 blog posts per month</dt> <dd>I did 2.75 blog posts last year, so maybe I can do a bit better now.</dd> <dt>Write into my journal twice a week</dt> <dd>I managed to keep this habit for half a year and it's incredible. I look back at what I wrote when I was depressed and it's shocking to me how I was seeing the world back then. And at other times, it's a good reminder of all the blessings that I've had.</dd> <dt>Spend 1 hour per week studying German on my own</dt> <dd>I have been taking German classes for two years now and it's decent, but in order to progress I have to up my individual game. For this goal, the following count: Duolingo, Babbel, Anki, reading about German grammar, doing exercises from textbooks. Exception: when travelling.</dd> <dt>Do 4 20 minute Pomodoros every day</dt> <dd>In my new team, I have longer "compilation" times, so sometimes I cannot iterate faster than this. Exception is when I am travelling or on vacation.</dd> </dl> <h4>Spiritual</h4> <dl> <dt>Read 3 chapters from the Bible every day</dt> <dd>I believe this is achievable even when I travel. At home, I will try to read more when I have time.</dd> <dt>Memorize 1 Bible verse every week:</dt> <dd>This goal didn't get touched at all last year, so I'm starting it again, in a much smaller version. I have the apps set up to help me and I'm trying to do this together with my girlfriend, so I have an accountability partner for this.</dd> </dl> <p>My goals can be seen on <a href="https://www.beeminder.com/rolisz">my Beeminder</a>.</p> Sat, 07 Jan 2017 11:06:00 GMT tag:rolisz.ro,2017-01-07:/2017/01/07/new-year-old-goals 2016 in review http://rolisz.ro/2017/01/01/2016-in-review/ <p><em>Wow, this post is finally done on time! Yaaaay!</em></p> <p>This year was the first time I had a goal for writing on my blog, at least for the first half of the year. In January I set up <a href="https://rolisz.ro/2016/01/02/setting-goals/">a goal</a> to write 3.5 blog posts per month, for the first half year and I stuck to it. In the second half of the year I took it easier, so I posted on average only twice a month. In total I posted 33 times, which is more than the year before, when I posted 30 times. </p> <p>The number of pageviews went down by 21%, from 46 thousand to 36 thousand :( The number of users is slightly up, by 5%, from 13 thousand to 13.6 thousand, but number of sessions keeps going down, from 21.5 thousand to 20 thousand. But, the average time spent on my site is up almost 10%, from 1:15 minutes to 1:23 minutes!</p> <p>My blog was viewed the most on September 19, after I posted the post saying <a href="https://rolisz.ro/2016/09/18/good-bye-alida/">goodbye to Alida</a>, when my blog was viewed 1185 times :(. On average, I had 101 pageviews per day, with the summer months being the most quiet ones. </p> <p>My site got 50% faster, fully loading on average in 3 seconds, while in 2015 in loaded in 6 seconds. It seems that my time spent on optimizing my Nginx configuration was worth it. </p> <p>My most popular blog post is the same, the <a href="https://rolisz.ro/2013/04/18/neural-networks-in-python/">neural networks one</a>. The second most popular one is about Alida. Then on the 8th place is my retrospective after <a href="https://rolisz.ro/2016/09/03/two-years-at-google/">two years at Google</a>. Four more posts from this year made it to top 20: the one about setting goals, the <a href="https://rolisz.ro/2016/07/24/50-days-of-roland/">selfie timelapse one</a>, the one <a href="https://rolisz.ro/2016/06/19/the-rise-and-fall-of-the-yahoo-messenger-empire/">about Yahoo Messenger</a> and the one <a href="https://rolisz.ro/2016/07/13/evaluating-goals/">about evaluating my goals</a>.</p> <p>My top referrals are still from Facebook, with 2700 visits from there, while the second one is Twitter, with less than a tenth of that. There is also another web page with a neural network tutorial, which links to mine, and which brought in 1500 visitors. </p> <p>New features on the blog include running it from a container and adding a search page. I also try to keep an eye on performance and occasionally perform speed optimizations.</p> <p>I am happy with how my year in blogging has been and I hope you will still read me next year!</p> Sun, 01 Jan 2017 21:46:00 GMT tag:rolisz.ro,2017-01-01:/2017/01/01/2016-in-review Shalom from Israel http://rolisz.ro/2016/12/22/shalom-from-israel/ <p><img alt="Pray for the Peace of Jerusalem" src="http://rolisz.ro/static/images/2016/12/israel/peace.jpg" width="100%" style="max-width:600px"/></p> <p>Three jeeps, filled with mostly young and idealistic Westerners and driven by former Special Forces members, are going along the mine fields between Syria and Israel. They arrive to an abandoned Syrian hospital, with some soldiers in front of it. They go up to the rooftop, through the crumbling hospital, carefully going up staircases that have been bombed. Once they get up, their tour guide says "See that building 300 meters away? There's an Al-Qaeda sniper looking at you from there! Don't worry, if he wanted you dead, he'd have shot you a long time ago.".</p> <p><img alt="Abandoned Syrian hospital" src="http://rolisz.ro/static/images/2016/12/israel/hospital.jpg" width="100%" style="max-width:600px"/></p> <p>That was just a short part of my trip to Israel. I had wanted to go for quite some time, to see "The Holy Land" and all the places where much of the Bible happened. In July, I found out that some friends from New York were going, so I pretended to be a New Yorker and I joined them. It was a really fun trip, both because of everything I saw and did, but also because of the opportunity to have lots of fellowship with my dear brothers and sisters from New York, Portland, Seattle and Jerusalem. </p> <figure> <p><img alt="View from the Tel Aviv office of Google" src="http://rolisz.ro/static/images/2016/12/israel/google_view.jpg" width="100%" style="max-width:600px"/> <figcaption>View from the Tel Aviv office of Google</figcaption></p> </figure> <p>The adventures started at the airport. I made the mistake of flying El Al, the safest airline in the world. They achieve this by having their own custom security checks. When you go to the baggage drop off, somebody starts asking you questions about your luggage (both standard ones like "Who packed your bags?" and ones like "Are you taking anything to the Google office in Tel Aviv?"). Then you get a mark on your boarding pass. I got a red sign, which I'm guessing made me one of "The Marked" ones. I passed through normal security, with plenty of time to spare. I started reading a book. After about one hour, I decided to go to their special security check. It involved talking to another guy, who decided to rummage through my backpack and check all the pockets for traces of explosives. He asked me in Romanian "Ce faci?". And then he proceeded to lock my backpack in a "safe place". I was allowed to keep my book and my headphones and that's it. Yay. And then another hour of waiting. I could pick up my bag right before boarding, when they checked me again. There were only two bags that were treated like this :( But at least I had hummus on the plane!</p> <div class="gallery clearfix" style="max-width:600px"> <img title="Herod" s amphitheather ' src="http://rolisz.ro/static/images/2016/12/israel/cesarea/thumbs/P1140835.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Star Trek is out, Time Trek is in :D " src="http://rolisz.ro/static/images/2016/12/israel/cesarea/thumbs/P1140853.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/12/israel/cesarea/P1140835.JPG", "title": "Herod's Amphitheather\n", "msrc": "/static/images/2016/12/israel/cesarea/thumbs/P1140835.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2016/12/israel/cesarea/P1140853.JPG", "title": "Star Trek is out, Time Trek is in :D\n", "msrc": "/static/images/2016/12/israel/cesarea/thumbs/P1140853.JPG", "w": 4272, "h": 2856}]</script> </div> <p>But I arrived well to Tel Aviv. My bags were delayed by quite a bit, but it was fine, because in the meantime some of my friends arrived and we went together to Jerusalem in a sherut, a sort of taxi/van service. </p> <p>When our bus arrived on Saturday, we met Amitai, our guide, and George, our driver, and then we went up North. We quickly visited Caesarea, built by Herod in 20 BCE. It has the only archeological evidence for Pontius Pilatus, in the form of a stone with his name enscribed on it.</p> <p>Then we had lunch at Uriburi, a world famous sea food restaurant. I normally don't like fish very much, but I have to say, this was really good. </p> <p><img alt="View from Mount Carmel" src="http://rolisz.ro/static/images/2016/12/israel/carmel.jpg" width="100%" style="max-width:600px"/></p> <p>In the afternoon we went up Mount Carmel, where Elijah obtained a great victory over the prophets of Baal (<a href="https://www.biblegateway.com/passage/?search=1+Kings+18&amp;version=NCV">1 Kings 18</a>). From there you can see very far in the distance and you can see part of Via Maris, the main road between Damascus and Egypt. Because of this, lots of armies had gone through the Valley of Jezreel, looking to conquer other kingdoms and in the future even more will gather there, at Megido, for Armaghedon.</p> <div class="gallery clearfix" style="max-width:600px"> <img title="Buggy riding in the desert " src="http://rolisz.ro/static/images/2016/12/israel/buggy/thumbs/IMG_2826.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Safety first " src="http://rolisz.ro/static/images/2016/12/israel/buggy/thumbs/IMG_2823.jpg" style="display:block" width="100%" style="max-width:600px"/> <img title="The quiet desert " src="http://rolisz.ro/static/images/2016/12/israel/buggy/thumbs/IMG_2839.jpg" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/12/israel/buggy/IMG_2826.JPG", "title": "Buggy riding in the desert\n", "msrc": "/static/images/2016/12/israel/buggy/thumbs/IMG_2826.JPG", "w": 3024, "h": 4032}, {"src": "/static/images/2016/12/israel/buggy/IMG_2823.jpg", "title": "Safety first\n", "msrc": "/static/images/2016/12/israel/buggy/thumbs/IMG_2823.jpg", "w": 2576, "h": 1932}, {"src": "/static/images/2016/12/israel/buggy/IMG_2839.jpg", "title": "The quiet desert\n", "msrc": "/static/images/2016/12/israel/buggy/thumbs/IMG_2839.jpg", "w": 12304, "h": 3824}]</script> </div> <p>We spent three nights on the shore of the Sea of Galilee. It was a nice hostel (except for the really loud kids who went to sleep way too late), 100 meters away from the beach, so I usually went swimming every night. Lokka tried to walk on water, with various amounts of success.</p> <div class="gallery clearfix" style="max-width:600px"> <img title="Swimming out in the deep " src="http://rolisz.ro/static/images/2016/12/israel/galilee/thumbs/IMG_2313.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="The Galilee at dusk " src="http://rolisz.ro/static/images/2016/12/israel/galilee/thumbs/P1140926.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Lokka walking on water " src="http://rolisz.ro/static/images/2016/12/israel/galilee/thumbs/P1140949.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/12/israel/galilee/IMG_2313.JPG", "title": "Swimming out in the deep\n", "msrc": "/static/images/2016/12/israel/galilee/thumbs/IMG_2313.JPG", "w": 4032, "h": 2884}, {"src": "/static/images/2016/12/israel/galilee/P1140926.JPG", "title": "The Galilee at dusk\n", "msrc": "/static/images/2016/12/israel/galilee/thumbs/P1140926.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2016/12/israel/galilee/P1140949.JPG", "title": "Lokka walking on water\n", "msrc": "/static/images/2016/12/israel/galilee/thumbs/P1140949.JPG", "w": 4272, "h": 2856}]</script> </div> <p>After going down the Mount of Beatitudes, we did one of the chillest things on our trip: going with an electric boat on the Sea of Galilee. As we were going out, the captain started some Hillsong songs in the background. The sun was shining, it was nice warm, the water was perfectly calm. I couldn't help but think that 2000 years ago, my Master, Jesus, sailed here, walked on water here, and the disciples were with Him, listening to Him speaking, not just to songs about Him. And then we jumped into water and swam around. And then the captain put on the theme fork Jaws. Epic trolling. xD</p> <div class="gallery clearfix" style="max-width:600px"> <img title="Peter" s mother-in-laws house in capernaum ' src="http://rolisz.ro/static/images/2016/12/israel/capernaum/thumbs/P1150002.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Our group in the Capernaum synagogue " src="http://rolisz.ro/static/images/2016/12/israel/capernaum/thumbs/P1150024.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/12/israel/capernaum/P1150002.JPG", "title": "Peter's mother-in-laws house in Capernaum\n", "msrc": "/static/images/2016/12/israel/capernaum/thumbs/P1150002.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2016/12/israel/capernaum/P1150024.JPG", "title": "Our group in the Capernaum synagogue\n", "msrc": "/static/images/2016/12/israel/capernaum/thumbs/P1150024.JPG", "w": 4272, "h": 2856}]</script> </div> <p>We did a quick run down to Capernaum, to visit the old Synagogue and then we crossed the street to get to the supposed house of Peter's mother in law. </p> <p><img alt="Jordan river" src="http://rolisz.ro/static/images/2016/12/israel/jordan.jpg" width="100%" style="max-width:600px"/></p> <p>We went to see the Jordan river. That was a big... disappointment. In some places it was soooo narrow you could jump over it. And we walked through it, in a place of pain, because of sharp rocks, that looked like the Amazonian jungle. But at least we picked some oranges straight from a tree, so we had that going for us. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="Our guide Amitai the Dreamer " src="http://rolisz.ro/static/images/2016/12/israel/bental/thumbs/P1150142.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Crossroads " src="http://rolisz.ro/static/images/2016/12/israel/bental/thumbs/IMG_2419.jpg" style="display:block" width="100%" style="max-width:600px"/> <img title="UN soldiers looking towards Syria " src="http://rolisz.ro/static/images/2016/12/israel/bental/thumbs/bental.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/12/israel/bental/P1150142.JPG", "title": "Our guide Amitai the Dreamer\n", "msrc": "/static/images/2016/12/israel/bental/thumbs/P1150142.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2016/12/israel/bental/IMG_2419.jpg", "title": "Crossroads\n", "msrc": "/static/images/2016/12/israel/bental/thumbs/IMG_2419.jpg", "w": 3024, "h": 4032}, {"src": "/static/images/2016/12/israel/bental/bental.JPG", "title": "UN soldiers looking towards Syria\n", "msrc": "/static/images/2016/12/israel/bental/thumbs/bental.JPG", "w": 4272, "h": 2856}]</script> </div> <p>The next day, after the jeep ride, we had coffee at Coffee Anan (a pun on both the UN leader and the Hebrew for "Coffee of the Clouds"), the highest restaurant in Israel, on top of Mount Bental. There is a small bunker there, which was last used in the Yom Kippur war. Now it has a small UN sentinel there. </p> <p><img alt="Temple of Pan in Banias" src="http://rolisz.ro/static/images/2016/12/israel/banias.jpg" width="100%" style="max-width:600px"/></p> <p>Then we went to Cesarea Philippi, aka Banias. This was where Jesus said "And upon this rock I shall build my Church". He said this standing in front of a pagan temple dedicated to Pan, indicating that He will overcome even that. It was the first place where I learn something completely new and eye opening. </p> <p><img alt="Odem Mountain Winery" src="http://rolisz.ro/static/images/2016/12/israel/winery.jpg" width="100%" style="max-width:600px"/></p> <p>In the afternoon we went to Odem Mountain Winery, a Kosher winery that has won several awards for the wines that they make. We went for a wine tasting session. The cherry wine was reaaaally good, the Chardonay was ok, but I really hated the Cabernet Sauvignon. And I learned that Rose wine is made out of red grapes, without the peels. </p> <p><img alt="Dead Sea Mud" src="http://rolisz.ro/static/images/2016/12/israel/dead_sea.jpg" width="100%" style="max-width:600px"/></p> <p>On Tuesday we went to the Dead Sea. That was sooo much fun, even if in the beginning it was counterintuitive. But after you got the hang of it, it was relaxing. You could sleep better than in a hammock. The waves are gently rocking you. Just don't get water in your eyes. Then the wailing and gnashing of teeth begins, because it's the only thing you can do. If you try to put your fingers to your eyes, you just make it worse, so you have to wait until you cry out all the salt. Also, the mud there is said to be good for... something, so we all covered ourselves in mud. </p> <p><img alt="Beduin camp" src="http://rolisz.ro/static/images/2016/12/israel/glemping.jpg" width="100%" style="max-width:600px"/></p> <p>We spent that night glemping in a beduin camp. What is glemping you ask? Glamour camping. Aka: you go camping, but you have full amenities, like at home, except you kinda sleep in some sort of a fancy tent. In our case, we were even upgraded to two person rooms, with AC units and TVs. But hey, there were peacocks walking in front of our windows. We've got that going on for us. The beduin tea was really good, but the coffee was crazy strong and horrible, even for the coffee lovers of the group, but everyone drank it, because we were afraid not to offend our hosts. </p> <p><img alt="Camel ride" src="http://rolisz.ro/static/images/2016/12/israel/camel.jpg" width="100%" style="max-width:600px"/></p> <p>Of course, no beduin trip would be complete without a camel ride. Because we were an odd number, I got to ride alone on a camel. It was fun. It had a nice, slow sway. If you could relax, you could enjoy the rythm, and imagine some nice hip hop music as a backdrop. Getting on and off the camel was a bit more interesting. First the camel straigthens up comletely the front legs and only then does it lift the hind legs, so for a short while, you are sitting on a very tilted surface.</p> <div class="gallery clearfix" style="max-width:600px"> <img title="Roman war machine " src="http://rolisz.ro/static/images/2016/12/israel/masada/thumbs/P1150297.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="New Yorkers assaulting Massada " src="http://rolisz.ro/static/images/2016/12/israel/masada/thumbs/P1150318.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="The surroundings of Massada " src="http://rolisz.ro/static/images/2016/12/israel/masada/thumbs/P1150332.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/12/israel/masada/P1150297.JPG", "title": "Roman war machine\n", "msrc": "/static/images/2016/12/israel/masada/thumbs/P1150297.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2016/12/israel/masada/P1150318.JPG", "title": "New Yorkers assaulting Massada\n", "msrc": "/static/images/2016/12/israel/masada/thumbs/P1150318.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2016/12/israel/masada/P1150332.JPG", "title": "The surroundings of Massada\n", "msrc": "/static/images/2016/12/israel/masada/thumbs/P1150332.JPG", "w": 4272, "h": 2856}]</script> </div> <p>Next up: Masada, the old Roman fortress built by Herod. Man, this homie built cribs for himself everywhere. This was a 45 minute climb, while it was 30 degrees outside. And it's basically a barren desert mountain, with some ruins. If you yell on one side of the mountain, you hear a nice echo back. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="David" s waterfall ' src="http://rolisz.ro/static/images/2016/12/israel/ein_ghedi/thumbs/P1150397.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="The discreete entrance to Ein Ghedi " src="http://rolisz.ro/static/images/2016/12/israel/ein_ghedi/thumbs/P1150441.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/12/israel/ein_ghedi/P1150397.JPG", "title": "David's Waterfall\n", "msrc": "/static/images/2016/12/israel/ein_ghedi/thumbs/P1150397.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2016/12/israel/ein_ghedi/P1150441.JPG", "title": "The discreete entrance to Ein Ghedi\n", "msrc": "/static/images/2016/12/israel/ein_ghedi/thumbs/P1150441.JPG", "w": 2856, "h": 4272}]</script> </div> <p>Then we refreshed at water springs of Ein-Ghedi, where David wrote some of his Psalms and where he hid from Saul. It's an incredibly relaxing place. It's an oasis in the desert. In a big mountain, you suddenly see a valley with some bushes around it. As you go closer, you find a lot of vegetation, animals and many springs. We stayed there until closing time, reading, relaxing, talking and just enjoying the atmosphere. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="Old city at night " src="http://rolisz.ro/static/images/2016/12/israel/jerusalem/thumbs/IMG_2948.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Rooftops of the old city " src="http://rolisz.ro/static/images/2016/12/israel/jerusalem/thumbs/IMG_2949.jpg" style="display:block" width="100%" style="max-width:600px"/> <img title="View from where we stayed on the first night " src="http://rolisz.ro/static/images/2016/12/israel/jerusalem/thumbs/P1140744.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/12/israel/jerusalem/IMG_2948.JPG", "title": "Old city at night\n", "msrc": "/static/images/2016/12/israel/jerusalem/thumbs/IMG_2948.JPG", "w": 3024, "h": 4032}, {"src": "/static/images/2016/12/israel/jerusalem/IMG_2949.jpg", "title": "Rooftops of the old city\n", "msrc": "/static/images/2016/12/israel/jerusalem/thumbs/IMG_2949.jpg", "w": 3024, "h": 4032}, {"src": "/static/images/2016/12/israel/jerusalem/P1140744.JPG", "title": "View from where we stayed on the first night\n", "msrc": "/static/images/2016/12/israel/jerusalem/thumbs/P1140744.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2016/12/israel/jerusalem/P1150526.JPG", "title": "That's a biiig flag\n", "msrc": "/static/images/2016/12/israel/jerusalem/thumbs/P1150526.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2016/12/israel/jerusalem/P1150549.JPG", "title": "View from Caiafas's house. Ghetsimane is on the other side of the valley.\n", "msrc": "/static/images/2016/12/israel/jerusalem/thumbs/P1150549.JPG", "w": 4272, "h": 2856}]</script> </div> <p>And then we went to the Holy City, Jerusalem. First impression: it's noisy and full of people, especially in the souk and in the old city. Second impression: it's hilly. Like really hilly. I can't imagine how people got around before they had cars. You go up and down, up and down all the time. We visited a lot of stuff there, but I just want to point out a couple of highlights.</p> <div class="gallery clearfix" style="max-width:600px"> <img title="Umbrellas in the air. " src="http://rolisz.ro/static/images/2016/12/israel/souk/thumbs/P1140765.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Spices in the souk " src="http://rolisz.ro/static/images/2016/12/israel/souk/thumbs/IMG_2232.jpg" style="display:block" width="100%" style="max-width:600px"/> <img title="Sweets. Oh the sweets. " src="http://rolisz.ro/static/images/2016/12/israel/souk/thumbs/P1140760.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/12/israel/souk/P1140765.JPG", "title": "Umbrellas in the air.\n", "msrc": "/static/images/2016/12/israel/souk/thumbs/P1140765.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2016/12/israel/souk/IMG_2232.jpg", "title": "Spices in the souk\n", "msrc": "/static/images/2016/12/israel/souk/thumbs/IMG_2232.jpg", "w": 4032, "h": 3024}, {"src": "/static/images/2016/12/israel/souk/P1140760.JPG", "title": "Sweets. Oh the sweets.\n", "msrc": "/static/images/2016/12/israel/souk/thumbs/P1140760.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2016/12/israel/souk/P1140790.JPG", "title": "Hustling and bustling in the souk.\n", "msrc": "/static/images/2016/12/israel/souk/thumbs/P1140790.JPG", "w": 4272, "h": 2856}]</script> </div> <p>In the souk we bought all kinds of sweets and exotic fruits. Really, really sweet ones. Yummy. It's really cool that you can try stuff before you buy. It's also a really good way for them to get you to buy their stuff. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="The Jewish quarter in the Old City " src="http://rolisz.ro/static/images/2016/12/israel/shops/thumbs/IMG_2943.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="The Muslim quarter in the Old City " src="http://rolisz.ro/static/images/2016/12/israel/shops/thumbs/IMG_2985.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Heh. " src="http://rolisz.ro/static/images/2016/12/israel/shops/thumbs/IMG_2988.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/12/israel/shops/IMG_2943.JPG", "title": "The Jewish quarter in the Old City\n", "msrc": "/static/images/2016/12/israel/shops/thumbs/IMG_2943.JPG", "w": 3024, "h": 4032}, {"src": "/static/images/2016/12/israel/shops/IMG_2985.JPG", "title": "The Muslim quarter in the Old City\n", "msrc": "/static/images/2016/12/israel/shops/thumbs/IMG_2985.JPG", "w": 4032, "h": 3024}, {"src": "/static/images/2016/12/israel/shops/IMG_2988.JPG", "title": "Heh. \n", "msrc": "/static/images/2016/12/israel/shops/thumbs/IMG_2988.JPG", "w": 4032, "h": 3024}, {"src": "/static/images/2016/12/israel/shops/IMG_2996.jpg", "title": "I wonder if the food comes on a flying rug\n", "msrc": "/static/images/2016/12/israel/shops/thumbs/IMG_2996.jpg", "w": 4032, "h": 3024}]</script> </div> <p>The place which got me to understand the topology of the city was when we went to the place where Peter betrayed the Lord Jesus and then we saw the supposed Upper Room, nearby, then Gethsemane, across the valley from there, and then Pontius Pilatus' hall on the other side of the city. So during that night, Jesus walked a loooooot. Also while being beaten and so on. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="Future excavations under the Western Wall " src="http://rolisz.ro/static/images/2016/12/israel/jerusalem_relics/thumbs/IMG_2673.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Supposed place of Golgotha (if you squint hard, you might see a skull) " src="http://rolisz.ro/static/images/2016/12/israel/jerusalem_relics/thumbs/IMG_2897.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Western Wall " src="http://rolisz.ro/static/images/2016/12/israel/jerusalem_relics/thumbs/P1150475.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/12/israel/jerusalem_relics/IMG_2673.JPG", "title": "Future excavations under the Western Wall\n", "msrc": "/static/images/2016/12/israel/jerusalem_relics/thumbs/IMG_2673.JPG", "w": 3024, "h": 4032}, {"src": "/static/images/2016/12/israel/jerusalem_relics/IMG_2897.JPG", "title": "Supposed place of Golgotha (if you squint hard, you might see a skull)\n", "msrc": "/static/images/2016/12/israel/jerusalem_relics/thumbs/IMG_2897.JPG", "w": 4032, "h": 3024}, {"src": "/static/images/2016/12/israel/jerusalem_relics/P1150475.JPG", "title": "Western Wall\n", "msrc": "/static/images/2016/12/israel/jerusalem_relics/thumbs/P1150475.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2016/12/israel/jerusalem_relics/P1150544.JPG", "title": "David's Statue\n", "msrc": "/static/images/2016/12/israel/jerusalem_relics/thumbs/P1150544.JPG", "w": 2856, "h": 4272}]</script> </div> <p>The other place was at the Western (Wailing) Wall. It's the only place that still remains from Herod's temple. Two kinds of people stood out in that area: those for whom this was just a fun thing, like kids having their bar-mitzvahs and dancing their butts off, for whom this is nothing more than a tradition, something you do to integrate with your family and friends. The other people were people who actually respect the Torah and they do their best to follow what it says, but they completely miss the person to whom it points: Jesus. So sad. :(</p> <div class="gallery clearfix" style="max-width:600px"> <img title="Cute metal sculpture. " src="http://rolisz.ro/static/images/2016/12/israel/misc/thumbs/P1150075.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="I too like to live dangerously " src="http://rolisz.ro/static/images/2016/12/israel/misc/thumbs/mines.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Another kind of watch face " src="http://rolisz.ro/static/images/2016/12/israel/misc/thumbs/P1140788.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/12/israel/misc/P1150075.JPG", "title": "Cute metal sculpture.\n", "msrc": "/static/images/2016/12/israel/misc/thumbs/P1150075.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2016/12/israel/misc/mines.JPG", "title": "I too like to live dangerously\n", "msrc": "/static/images/2016/12/israel/misc/thumbs/mines.JPG", "w": 4032, "h": 3024}, {"src": "/static/images/2016/12/israel/misc/P1140788.JPG", "title": "Another kind of watch face\n", "msrc": "/static/images/2016/12/israel/misc/thumbs/P1140788.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2016/12/israel/misc/P1150565.JPG", "title": "Funny statues in Joppa\n", "msrc": "/static/images/2016/12/israel/misc/thumbs/P1150565.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2016/12/israel/misc/rolladin.jpg", "title": "Rolladins :X:X\n", "msrc": "/static/images/2016/12/israel/misc/thumbs/rolladin.jpg", "w": 3024, "h": 4032}]</script> </div> <p>Underneath the Western Wall there are several layers of history. The first layer is what the Ottomans built there. They actually raised the whole city, so that access to the Temple Mount would be easier. Under that is what Herod did, who expanded the top of mountain, so that he could build a bigger temple. Under that are remnants from David's city. And you just look at all those 500 tonne stones and the 533 m long tunnel, built by Hezekiah, carved out of stone, and wonder how on Earth did they ever do that, without all the modern equipment that we have today. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="Warning sign when entering Betlehem " src="http://rolisz.ro/static/images/2016/12/israel/betlehem/thumbs/betlehem.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="Modern Statue in Betlehem, with an Internet address " src="http://rolisz.ro/static/images/2016/12/israel/betlehem/thumbs/P1150552.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/12/israel/betlehem/betlehem.JPG", "title": "Warning sign when entering Betlehem\n", "msrc": "/static/images/2016/12/israel/betlehem/thumbs/betlehem.JPG", "w": 3024, "h": 4032}, {"src": "/static/images/2016/12/israel/betlehem/P1150552.JPG", "title": "Modern Statue in Betlehem, with an Internet address\n", "msrc": "/static/images/2016/12/israel/betlehem/thumbs/P1150552.JPG", "w": 2856, "h": 4272}]</script> </div> <p>We also went to Betlehem, which is in the West Bank, under Arab control. It has several "scary" warnings on entry, but it doesn't have too much to see unfortunately.</p> <p><img alt="Tel Aviv beach" src="http://rolisz.ro/static/images/2016/12/israel/telaviv.jpg" width="100%" style="max-width:600px"/></p> <p>On our last day we went to Joppa and Tel Aviv, where we spent the day on the beach and then we said sad goodbyes to each other :(</p> <p><img alt="Simon the Tanner's house" src="http://rolisz.ro/static/images/2016/12/israel/simon_tanner.jpg" width="100%" style="max-width:600px"/></p> <p>I really miss the NYC crew (and the people from Portland and Seattle)! It was a really blessed, fun time together and I hope I can see them again soon!</p> Thu, 22 Dec 2016 19:00:00 GMT tag:rolisz.ro,2016-12-22:/2016/12/22/shalom-from-israel Noh hai la vot! http://rolisz.ro/2016/12/09/noh-hai-la-vot/ <p><img alt="Me in a t-shirt with Che Olos" src="http://rolisz.ro/static/images/2016/12/che_olos.jpg" width="100%" style="max-width:600px"/> <em>On Sunday there are parliamentary elections in Romania, so I'm doing my civic duty of encouraging people to go and vote.</em></p> <p>După cum probabil ați auzit, mâine, 11 decembrie, sunt alegeri pentru deputați și senatori. Eu o să merg mâine la vot în Berna, cum am fost și acum doi ani, la alegerile prezidențiale. Și vă rog și pe voi să mergeți să votați. </p> <p>Ieșiți la vot, pentru că încet, încet, parcă lucrurile în România se schimbă. Și până acuma toată lumea știa că se fac mișmașuri peste tot, dar în ultimii doi ani și DNA a aflat și a și arestat oameni pentru aceasta. Deci, se poate schimbare. </p> <p>Votează, ca să poată să continue Cioloș ce a început. Dacă într-un an a reușit următoarele:</p> <ul> <li>să reducă o parte din birocrația existentă</li> <li>să înființeze concursul pentru directorii de școli</li> <li>a crescut absorbția de fonduri europene de la 56% la 78% (ceea ce înseamnă vreo 3 miliarde de euro)</li> <li>a creat programul <a href="http://ithub.gov.ro/">Gov ITHUB</a>, care a pus online o mulțime de date și a crescut transparența statului</li> <li><a href="http://www.ziare.com/politica/guvern/ce-a-facut-guvernul-ciolos-ii-de-la-fonduri-si-sanatate-la-munca-si-mediu-1440900">etc.</a></li> </ul> <p>Atunci oare în 4 ani ce ar mai putea face? Mai ales dacă ar avea și suportul unei majorități parlamentare. </p> <p>Votează, ca să nu mori tu sau copilul tău într-un spital din România. Ca să nu scape Președintele Comisiei de Malpraxis pe ortopedie pediatrică, care a nenorocit zeci de copii cu operațiile lui experimentale și neaprobate. Citește articolul scris de <a href="http://casajurnalistului.ro/a-fost-un-experiment/">Casa Jurnalistului</a>, până la capăt! Chiar vrei să scape tipul ăsta? Sau vrei să te opereze într-o zi un profesor care nu dă niciodată pe la cursuri și nu știe să se spele pe mâini cum trebuie <a href="http://www.tolo.ro/2016/12/07/conferentiarul-doctor-secureanu-nu-da-cu-anii-pe-la-universitatea-titu-maiorescu-unde-preda-genetica-atunci-cind-studentele-s-au-revoltat-le-a-spus-poat/">înainte de operație</a>? DNA are acuma putere și e pe val, de la toate arestările pe care le-a făcut deja. Dacă iese PSD la putere, pot să distrugă tot, și majoritatea politicienilor corupți sigur vor scăpa, dar poate și alți doctori ca aceștia.</p> <p>Votează, pentru că PSD-ul are un număr relativ constant de oameni care îi votează. Dacă merg mai mulți la vot, procentajul obținut de PSD va fi mai mic. Așa că votează, pentru că votul tău chiar contează!</p> <p>Și, pentru cititorii mei creștini, mai am un argument. În 1 Timotei 2 scrie: „Înainte de toate, te îndemn să faci cereri, rugăciuni, mijlociri şi mulţumiri pentru toţi oamenii, pentru împăraţi şi pentru toţi cei ce sunt în poziţii înalte, ca să putem duce o viaţă paşnică şi liniştită, cu toată evlavia şi demnitatea.”. Deci să te rogi pentru Cioloș, Johannis, Dragnea, cine or fi conducătorii. Iar în Iacov 2 zice: „ Dacă un frate sau o soră sunt goi şi lipsiţi de hrana zilnică, iar unul dintre voi le spune: „Duceţi-vă în pace, încălziţi-vă şi săturaţi-vă!“, însă nu le dă cele necesare trupului, ce folos?”. Deci nu doar să te rogi, ci și să faci ce poți. Cum România e o democrație, poți să mergi să votezi. Așa că du-te și votează!</p> Fri, 09 Dec 2016 20:50:00 GMT tag:rolisz.ro,2016-12-09:/2016/12/09/noh-hai-la-vot Going places... http://rolisz.ro/2016/11/13/going-places/ <p><img alt="Old view" src="http://rolisz.ro/static/images/2016/11/P1120097.JPG" width="100%" style="max-width:600px"/> ...but not too far. </p> <p>Last month I exchanged the view that can be seen in the above image, for this one:</p> <p><img alt="New view" src="http://rolisz.ro/static/images/2016/11/IMG_2188.jpg" width="100%" style="max-width:600px"/></p> <p>I moved from Langnau am Albis, where I have lived for two years, to Wiedikon, a district in Zürich. The old place has been officially the place where I've lived the second most in my life :| I'll miss it, I had lots of good memories there.</p> <p>But I got bored of the long commute (half an hour by train), so I moved to a place 8 minutes walking from the office. And the week after I signed the contract, I found out that my team is moving to an office 20 minutes away on foot :)) But it's still fine, I'm in the city, there's a lot more stuff around me, while I still live on a really quiet street. </p> <p>The new apartment is smaller, so I will have to adopt a bit of a more minimalist approach and get rid of some things. I'm looking forward to living here (once I get rid of all the boxes and put everything in it's place) and to entertaining more guests here (hopefully I'll have more than in the other place).</p> Sun, 13 Nov 2016 14:57:00 GMT tag:rolisz.ro,2016-11-13:/2016/11/13/going-places Maltalavista http://rolisz.ro/2016/10/24/maltalavista/ <figure> <p><img alt="Malta" src="http://rolisz.ro/static/images/2016/10/malta/IMG_1969.jpg" width="100%" style="max-width:600px"/> <figcaption>View from the hotel</figcaption></p> </figure> <p>Last week I was in Malta, on an offsite with the new (extended) team. It was possibly even better than in <a href="https://rolisz.ro/2016/06/12/nice-time-in-nice/">Nice</a>. </p> <p>Because I switched to this team "late", I couldn't find flights together with the rest of the team, so I went a day early, but I stayed at the same hotel. Several other people also came early, including the admins who organized it, so I wasn't bored there. Also, turns out that befriending the admins is quite useful! And they are super nice as well!</p> <figure> <p><img alt="Boat rides" src="http://rolisz.ro/static/images/2016/10/malta/IMG_1975.jpg" width="100%" style="max-width:600px"/> <figcaption>Why ride a boat when you can ride a banana?</figcaption></p> </figure> <p>It was hot in Malta. During the day it went up to 28 degrees. It's nice to be able to complain about hot weather in October. It warms up my bones really well. </p> <p><img alt="Google ad" src="http://rolisz.ro/static/images/2016/10/malta/ad.JPG" width="100%" style="max-width:600px"/></p> <p>There was a very interesting ad close to the hotel were everyone was saying. There were lots of debates whether it was targeted at us or if it was just a generic ad. But it was a really clever one for sure and next time I'll go to Malta I will call eCabs!</p> <p>Malta is an island, so it's surrounded by sea. And because it was really warm, you could go swimming. There was a beach close to our hotel. It wasn't that great, the sand was quite coarse, but it was a beach. So I swam for the first time in my life in the sea! Those swimming lessons I've been taking for the last one year have finally been paying off! \:D/</p> <p><img alt="Beach" src="http://rolisz.ro/static/images/2016/10/malta/IMG_1971.jpg" width="100%" style="max-width:600px"/></p> <p>The next day I did something even more crazy. Angela and Simo, two colleagues of mine, wanted to go <a href="https://www.youtube.com/watch?v=32wnMwnWMXs">stand-up paddling</a> and I allowed myself to be fooled into joining them. It will be fun they said, go standup paddling they said. Bad, but completely predictable news: I fell into the water more times than I can count. Good news: I didn't panic and I always managed to recover on my own. The swimming lessons are really paying off! And it was fun in the end. So thanks Angela for showing me how to do SUP! But I was completely exhausted and I had several bruises on me from falling on the board. </p> <p>During the free time on the first day we went to play laser tag. Again, for the first time in my life. This was really fun as well! In one round I came out the 4th or 5th, out of 18-19 people! \:D/ I should really do this more often! Also, I should go to do paintball as well. </p> <iframe width="560" height="315" src="https://www.youtube.com/embed/QPHpvmHfAhA" frameborder="0" allowfullscreen class="youtube"></iframe> <p>For dinner, we went to an old mill to have traditional Maltese food. They also showed us some folk Maltese dances and I was surprised to see that some of them have moves similar to Hungarian folk dances! The best part was when they invited some of my colleagues to join in the dances and spin around. Some of them knew what they were doing, others were... clueless :)))</p> <p><img alt="Old mill" src="http://rolisz.ro/static/images/2016/10/malta/P1140615.JPG" width="100%" style="max-width:600px"/></p> <p>On the second day, we went by speedboat to the island of Gozo. The experience was like on a lowrider, except with water splashing on you. Even though I was sitting in the middle, I still managed to get a large part of a wave on me, from all the bouncing around. </p> <figure> <p><img alt="Speed boat racing" src="http://rolisz.ro/static/images/2016/10/malta/IMG_2002.jpg" width="100%" style="max-width:600px"/> <figcaption>Speedboat racing</figcaption></p> </figure> <p>On Gozo, we had to do a treasure hunt in a jeep. We were in teams of 5, given a list of instructions and we had to look for clues, take pictures and in general have fun. It was a quite old jeep, the roads were quite bad, the streets were narrow and I had the impression that I was Indiana Jones looking for lost treasures and I was missing only the whip and the wide brimmed hat. Extra fun because GPS and Malta are not good friends, so we took the wrong turn several times. It didn't happen to my team, but another team went on a very narrow one way street, from where it was quite difficult to get out! </p> <div class="gallery clearfix" style="max-width:600px"> <img title="St. Joseph Parish Church in Qala. " src="http://rolisz.ro/static/images/2016/10/malta/gozo/thumbs/IMG_2010.jpg" style="display:block" width="100%" style="max-width:600px"/> <img title="Caves in Gozo. " src="http://rolisz.ro/static/images/2016/10/malta/gozo/thumbs/IMG_2001.jpg" style="display:block" width="100%" style="max-width:600px"/> <img title="The beautiful city of Mgarr. " src="http://rolisz.ro/static/images/2016/10/malta/gozo/thumbs/IMG_2004.jpg" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/10/malta/gozo/IMG_2010.jpg", "title": "St. Joseph Parish Church in Qala.\n", "msrc": "/static/images/2016/10/malta/gozo/thumbs/IMG_2010.jpg", "w": 3024, "h": 4032}, {"src": "/static/images/2016/10/malta/gozo/IMG_2001.jpg", "title": "Caves in Gozo.\n", "msrc": "/static/images/2016/10/malta/gozo/thumbs/IMG_2001.jpg", "w": 4032, "h": 3024}, {"src": "/static/images/2016/10/malta/gozo/IMG_2004.jpg", "title": "The beautiful city of Mgarr.\n", "msrc": "/static/images/2016/10/malta/gozo/thumbs/IMG_2004.jpg", "w": 4032, "h": 3024}, {"src": "/static/images/2016/10/malta/gozo/IMG_2015.jpg", "title": "", "msrc": "/static/images/2016/10/malta/gozo/thumbs/IMG_2015.jpg", "w": 4032, "h": 3024}, {"src": "/static/images/2016/10/malta/gozo/IMG_2029.jpg", "title": "Really nice water.\n", "msrc": "/static/images/2016/10/malta/gozo/thumbs/IMG_2029.jpg", "w": 4032, "h": 3024}, {"src": "/static/images/2016/10/malta/gozo/IMG_2033.jpg", "title": "Salt quarry.\n", "msrc": "/static/images/2016/10/malta/gozo/thumbs/IMG_2033.jpg", "w": 3024, "h": 4032}]</script> </div> <p>We did our best to find all the clues, until the point where we got to a beach. Pretty much all the teams decided to take a shorter or longer break there and just go for a nice swim and enjoy the red sands of Ramla beach. </p> <p>The next pit stop was getting lunch. Our team favored our bellies more than winning (the winning team didn't). Everyone was astonished by how cheap food is in Malta! You could get two huuuge ice cream globes for 3 euros!! And a slice (of admittedly meh) pizza for 2.5 euros! Yes, I know I come from Zurich, but still!</p> <p>On the long bus rides and at night we played a lot more of the game I learned in Nice: We didn't playtest this at all. This time I brought the game with me and it turned out to be quite popular. We also played a bit of Werewolves, with the Eros extension. And I found out as I was burning on the stake that the two Nicks were lovers and one of them betrayed me!</p> <p>As we were going to dinner on the second night, right in front of our hotel, two cars had an accident and they refused to move until the police came. Because the street was one way and narrow, the bus couldn't go any other way, so we had to wait there for about one hour. The sales of nearby shops skyrocketed, as a lot of hungry Googlers went there to get something to survive until we get to dinner. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="Hilly streets, that remind me of San Francisco. " src="http://rolisz.ro/static/images/2016/10/malta/valletta/thumbs/P1140651.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="View from the Saluting Battery. " src="http://rolisz.ro/static/images/2016/10/malta/valletta/thumbs/P1140647.JPG" style="display:block" width="100%" style="max-width:600px"/> <img title="I guess this Aladin is a more honest man. " src="http://rolisz.ro/static/images/2016/10/malta/valletta/thumbs/P1140667.JPG" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/10/malta/valletta/P1140651.JPG", "title": "Hilly streets, that remind me of San Francisco.\n", "msrc": "/static/images/2016/10/malta/valletta/thumbs/P1140651.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2016/10/malta/valletta/P1140647.JPG", "title": "View from the Saluting Battery.\n", "msrc": "/static/images/2016/10/malta/valletta/thumbs/P1140647.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2016/10/malta/valletta/P1140667.JPG", "title": "I guess this Aladin is a more honest man. \n", "msrc": "/static/images/2016/10/malta/valletta/thumbs/P1140667.JPG", "w": 4272, "h": 2856}, {"src": "/static/images/2016/10/malta/valletta/P1140665.JPG", "title": "Royal guard.\n", "msrc": "/static/images/2016/10/malta/valletta/thumbs/P1140665.JPG", "w": 2856, "h": 4272}, {"src": "/static/images/2016/10/malta/valletta/P1140671.JPG", "title": "Saint Elmo Breakwater (I'm Elmo and I know it \\:D/)\n", "msrc": "/static/images/2016/10/malta/valletta/thumbs/P1140671.JPG", "w": 4272, "h": 2856}]</script> </div> <p>On the last day, we went on a treasure hunt on foot in Valletta (the capital of Malta). This one included several challenges such as taking pictures with a stranger, giving a stranger a hug, spelling out letters with our bodies, asking someone for a piece of their food and proposing to someone. Because it was much hotter (and it was after some of my colleagues were out partying all night), our enthusiasm was much lower, so we did even fewer of the required items. </p> <p>We ended the day on chilling in the harbor, too drained to be able to do anything. Close to it was a building which we discovered was just a facade. It had a nice, old looking exterior, but in the inside there was just empty space (not even walls, just the sky above our head). </p> <figure> <p><img alt="Facade building" src="http://rolisz.ro/static/images/2016/10/malta/P1140688.JPG" width="100%" style="max-width:600px"/> <figcaption>The inside of the facade building</figcaption></p> </figure> <p>At the airport, I had several epiphanies. First, KFC in Malta is just awful!!!!! Horrible! Ugh. I couldn't even finish a 5 crispy strips menu! And they didn't have the amazing Glenn sauce! As the Swiss say, schrecklich! The other one was the question "How does checkin work?". Half my colleagues managed to do online checkin, but some only after repeatedly mashing the checkin button, the other half, including me, had to checking at the airport. Complete mystery how airline companies systems work. </p> <figure> <p><img alt="Cat feeding station" src="http://rolisz.ro/static/images/2016/10/malta/P1140691.JPG" width="100%" style="max-width:600px"/> <figcaption>Cats too should have a place to enjoy a coffee, right?</figcaption></p> </figure> <p>Two and a half hours later, the plane half full with Googlers landed in Zurich and our awesome offsite in Malta ended! It was a really good time and a nice relaxation!</p> Mon, 24 Oct 2016 20:27:00 GMT tag:rolisz.ro,2016-10-24:/2016/10/24/maltalavista Data and Goliath http://rolisz.ro/2016/09/25/data-and-goliath/ <p><img alt="Data and Goliath" src="http://rolisz.ro/static/images/2016/09/data_and_goliath.jpg" width="100%" style="max-width:600px"/></p> <p>Bruce Schneier is a well known American security researcher, who has written several books about this topic. Data and Goliath is his latest book about it. I bought it last year, but I only got around to reading it last month (one more win for the reading goal for the year \:D/). First observation: while the book is thick, with 383 pages, a third of it are notes, so it's not that long actually. </p> <p>While I've heard about various privacy issues and about the mass surveillance revealed by Edward Snowden, I never really did anything about it. I had an adblocker installed, but that was just because I was annoyed by ads and they slowed down browsing the Internet, but nothing else. This book was a coherent presentation of what both corporations and governments do, what effects it has on us, and why it's really, really, really, really bad. </p> <p>I don't want to go talk too much about what the book says about existing surveillance and what is going, except to call out the fact that the existing large scale governmental tracking is not effective against terrorists. The haystack is too big and the needles look more like twigs, so it doesn't help at all. Good old investigation work is what catches the bad guys. Mass surveillance is useful for tracking people who protest (legitimately) against the government. Also, corporate surveillance comes in many subtle forms and is used to build up big profiles about people, which are then often sold by data brokers, or hacked. Again, not really worth the benefits in most cases. </p> <p>So what can the average Joe like me do? There are several things, ranging from political to technical. First off, lobby, propose, discuss, raise awareness, vote about this. If enough people know about this and are worried about it, democracy can do it's thing. Hopefully it's not 1984 already. </p> <p>On the more technical side, there are some simple solutions. Use <a href="https://www.eff.org/https-everywhere">HTTPS Everywhere</a>, which forces your browser to use encrypted connections whenever possible. It's a first, simple step towards avoiding dragnet surveillance. If it's encrypted, it can't be read in a straightforward way. Use either <a href="https://www.ghostery.com/">Ghostery</a>, <a href="https://www.eff.org/privacybadger">Privacy Badger</a>(I use this one) or <a href="https://disconnect.me/">Disconnect</a>. These extensions do as much as possible to disable tracking. Most importantly, they disable the automatic loading of social network share buttons, which would automatically report back what pages you browse, even if you don't click on them. </p> <p>Now, on to more complicated ones. You can do obfuscation, which means doing random stuff do create bogus data on your profile. Things like searching for TV models, even though you don't want to buy one, clicking on random search results, adding as friends people you don't know, creating fake profiles, interchanging store loyalty cards with friends, not giving out your real information when asked for (be careful about who's asking and if you can give out fake information) and so on. And, if you wanna go one step further, use the Tor browser. It's a pain to use, because many things are blocked there, it's quite slow, but it's definitely a good option. I won't be using it all the time, but sometimes I will. If you wanna go extreme, you can even run your own <a href="https://blog.daknob.net/running-a-tor-exit-node-for-fun-and-e-mails/">Tor nodes</a>. </p> <p>That's it folks! Be safe and keep an eye out for surveillance!</p> Sun, 25 Sep 2016 19:37:00 GMT tag:rolisz.ro,2016-09-25:/2016/09/25/data-and-goliath Good bye, Alida http://rolisz.ro/2016/09/18/good-bye-alida/ <p><img alt="Alida" src="http://rolisz.ro/static/images/2016/09/alida.jpg" width="100%" style="max-width:600px"/></p> <p>I’ll miss your funny quips. I’ll miss the long discussions we used to have about about the craziest topics (like the differences in mentality between people who are interested in the humanities versus the sciences). I’ll miss going to eat greasy, yummy food with you (Chez Papa was reeaaallly good. And just as unhealthy). I’ll miss your encouragements. Even though you had leukemia and had been through an awful lot of suffering, you still had the energy to lift others up and give them advice. </p> <p>You were a brilliant girl, who turned many heads and then put them in their proper place. In just 22 years of life, you’ve achieved many things. Your lot in the last three years hasn’t been an easy one, but you made it, and now you’ve earned your rest. You are with your Lord and you won’t suffer any more. No more neuropathies, no more headaches, no more bone marrow extractions, just the blissful presence of Jesus!</p> <p>The rest of us who are still here, we’ll miss you and we’ll remember you.</p> <p>Good bye, Alida dear!</p> Sun, 18 Sep 2016 21:07:00 GMT tag:rolisz.ro,2016-09-18:/2016/09/18/good-bye-alida Searching for something? http://rolisz.ro/2016/09/05/searching-for-something/ <p><em>This post is "cu dedicatie pentru Ciprian de la Bistrita", who has asked for a search feature for some time now</em></p> <p>I didn't have a search on my blog for quite some time, because it's a static website, without any dynamic backend (except for comments, but those are well isolated, on a subdomain). But Javascript and the browsers are getting more and more features every day, so it's now possible to do all of this clientside. You just have to go to the <a href="http://rolisz.ro/search-page">search page</a> (also linked in the menu).</p> <p>I had three options: </p> <ul> <li><a href="https://posativ.org/acrylamid/static-search.html">Acrylamid</a> has a builtin feature that builds up at compilation some compressed suffix tries from your posts and allows you to search there. However, it's pretty raw, in the sense that it doesn't do query expansion, it doesn't support multiple terms, it doesn't do stemming and so on. Also, I just found out the Acrylamid is no longer maintained, so in a time frame of one year I will be moving away from it, so I didn't want to tie myself to it with this too.</li> <li><a href="http://lunrjs.com/">lunr.js</a> This is a purely in browser solution. It's like Solr, but smaller and less bright (Solr is one of the better known search engines). It does tokenization, stemming and stop word filtering. Then it builds up an inverted index, which allows for efficient querying, and bam, you've got a client side search.</li> <li><a href="http://elasticlunr.com/">elasticlunr.js</a> This is an extension/copy/improvement over lunr.js, which claims to be faster, but is also less popular, so I decided to skip it for now. </li> </ul> <p>The total size of my posts is about 1.5Mb. If I build the inverted index offline, it's about 9Mb. Because I didn't want to send that over the network on loading the search page, I decided to send only a JSON document containing all the posts and then create the index on the client side. This was quite simple:</p> <div class="highlight"><pre><span class="k">class</span> <span class="nc">LunrSearch</span><span class="p">(</span><span class="n">View</span><span class="p">):</span> <span class="k">def</span> <span class="nf">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">conf</span><span class="p">,</span> <span class="n">env</span><span class="p">,</span> <span class="n">request</span><span class="p">):</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">env</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">search</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">StopIteration</span><span class="p">()</span> <span class="n">docs</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">entry</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">request</span><span class="p">[</span><span class="s">&#39;entrylist&#39;</span><span class="p">]):</span> <span class="n">docs</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s">&quot;url&quot;</span><span class="p">:</span> <span class="n">entry</span><span class="o">.</span><span class="n">permalink</span><span class="p">,</span> <span class="s">&quot;date&quot;</span><span class="p">:</span> <span class="n">entry</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">isoformat</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">),</span> <span class="s">&quot;tags&quot;</span><span class="p">:</span> <span class="n">entry</span><span class="o">.</span><span class="n">tags</span><span class="p">,</span> <span class="s">&quot;title&quot;</span><span class="p">:</span> <span class="n">entry</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> <span class="s">&quot;content&quot;</span><span class="p">:</span> <span class="n">entry</span><span class="o">.</span><span class="n">content</span><span class="p">})</span> <span class="k">yield</span> <span class="p">(</span><span class="n">io</span><span class="o">.</span><span class="n">StringIO</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">docs</span><span class="p">,</span> <span class="n">ensure_ascii</span><span class="o">=</span><span class="bp">False</span><span class="p">)),</span> <span class="n">joinurl</span><span class="p">(</span><span class="n">conf</span><span class="p">[</span><span class="s">&#39;output_dir&#39;</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">))</span> </pre></div> <p>This view is called for a route in my configuration and dumps there all the posts, in JSON format. </p> <p>The client side is more interesting.</p> <div class="highlight"><pre><span class="nt">&lt;input</span> <span class="na">id=</span><span class="s">&quot;search&quot;</span><span class="nt">/&gt;</span> <span class="nt">&lt;ul</span> <span class="na">id=</span><span class="s">&#39;results&#39;</span><span class="nt">&gt;&lt;/ul&gt;</span> <span class="nt">&lt;script </span><span class="na">src=</span><span class="s">&quot;/static/js/lunr.min.js&quot;</span><span class="nt">&gt;&lt;/script&gt;</span> <span class="nt">&lt;script&gt;</span> &#39;use strict&#39;; var index, docs, tasks; var input = document.getElementById(&#39;search&#39;); var resultdiv = document.getElementById(&#39;results&#39;); </pre></div> <p>We start by defining an input where we can type and a list where the results will be shown. </p> <div class="highlight"><pre><span class="nb">document</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s2">&quot;DOMContentLoaded&quot;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// Set up search</span> <span class="kd">var</span> <span class="nx">xhr</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">XMLHttpRequest</span><span class="p">();</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">onreadystatechange</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">===</span> <span class="nx">XMLHttpRequest</span><span class="p">.</span><span class="nx">DONE</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> <span class="o">===</span> <span class="mi">200</span><span class="p">)</span> <span class="p">{</span> <span class="nx">parseResults</span><span class="p">(</span><span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">responseText</span><span class="p">));</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="nx">resultdiv</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="s2">&quot;&lt;li&gt;Error loading search index! \</span> <span class="s2"> Please tell me about this! :(&lt;/li&gt;&quot;</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> <span class="p">};</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">open</span><span class="p">(</span><span class="s2">&quot;GET&quot;</span><span class="p">,</span> <span class="s1">&#39;/static/js/search.json&#39;</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">send</span><span class="p">();</span> <span class="p">});</span> </pre></div> <p>Because I don't use jQuery, I had to load the JSON file with good ol' XMLHttpRequest (I can't wait for the <a href="https://developer.mozilla.org/en/docs/Web/API/Fetch_API">fetch API</a> to become more mainstream!), and then I call a function to parse the results (or show an error if that's the case). This function doesn't do much, except it initializes the index, schedules the indexing and adds a listener for the input tag to process user input. The index is initialized with the fields that we will want to search on and what should be the reference of a document. We boost the importance of the title and tags fields. </p> <div class="highlight"><pre><span class="kd">function</span> <span class="nx">parseResults</span><span class="p">(</span><span class="nx">response</span><span class="p">)</span> <span class="p">{</span> <span class="nx">docs</span> <span class="o">=</span> <span class="nx">response</span><span class="p">;</span> <span class="nx">tasks</span> <span class="o">=</span> <span class="nx">response</span><span class="p">.</span><span class="nx">slice</span><span class="p">();</span> <span class="c1">// Make copy of document list</span> <span class="c1">// Create index</span> <span class="nx">index</span> <span class="o">=</span> <span class="nx">lunr</span><span class="p">(</span><span class="kd">function</span><span class="p">(){</span> <span class="c1">// Boost increases the importance of words found in this field</span> <span class="k">this</span><span class="p">.</span><span class="nx">field</span><span class="p">(</span><span class="s1">&#39;content&#39;</span><span class="p">);</span> <span class="k">this</span><span class="p">.</span><span class="nx">field</span><span class="p">(</span><span class="s1">&#39;url&#39;</span><span class="p">);</span> <span class="k">this</span><span class="p">.</span><span class="nx">field</span><span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span> <span class="k">this</span><span class="p">.</span><span class="nx">field</span><span class="p">(</span><span class="s1">&#39;tags&#39;</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span> <span class="k">this</span><span class="p">.</span><span class="nx">field</span><span class="p">(</span><span class="s1">&#39;date&#39;</span><span class="p">);</span> <span class="c1">// the id</span> <span class="k">this</span><span class="p">.</span><span class="nx">ref</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">);</span> <span class="p">});</span> <span class="c1">// Schedule background indexing</span> <span class="nx">scheduleIndexing</span><span class="p">();</span> <span class="c1">// Add search handler</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s1">&#39;search&#39;</span><span class="p">).</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s2">&quot;input&quot;</span><span class="p">,</span> <span class="nx">search</span><span class="p">)</span> <span class="p">};</span> </pre></div> <p>Indexing takes about 2-4 seconds, so if we were to do it here, it would block the UI thread, resulting in a janky UI. So, we use the shiny new API of requestIdleCallback, which allows us to do it in the background, during idle moments. Because this is also not well supported yet (<em>cough</em>Safari<em>cough</em>), I give an alternative of just doing the indexing in the main thread, by mocking the API. To add a document to the index, you just have to call the add function with a JSON object representing the document. </p> <div class="highlight"><pre><span class="kd">function</span> <span class="nx">scheduleIndexing</span><span class="p">()</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="s1">&#39;requestIdleCallback&#39;</span> <span class="k">in</span> <span class="nb">window</span><span class="p">)</span> <span class="p">{</span> <span class="nx">requestIdleCallback</span><span class="p">(</span><span class="nx">indexInBackground</span><span class="p">);</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="c1">// Mock the API and do the indexing in the main thread</span> <span class="nx">indexInBackground</span><span class="p">({</span><span class="nx">timeRemaining</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="mi">1</span><span class="p">}});</span> <span class="p">}</span> <span class="kd">function</span> <span class="nx">indexInBackground</span><span class="p">(</span><span class="nx">deadline</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// Run next task if possible</span> <span class="k">while</span> <span class="p">(</span><span class="nx">deadline</span><span class="p">.</span><span class="nx">timeRemaining</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">tasks</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="kd">var</span> <span class="nx">entry</span> <span class="o">=</span> <span class="nx">tasks</span><span class="p">.</span><span class="nx">pop</span><span class="p">();</span> <span class="nx">index</span><span class="p">.</span><span class="nx">add</span><span class="p">({</span> <span class="nx">url</span><span class="o">:</span> <span class="nx">entry</span><span class="p">.</span><span class="nx">url</span><span class="p">,</span> <span class="nx">date</span><span class="o">:</span> <span class="nx">entry</span><span class="p">.</span><span class="nx">date</span><span class="p">,</span> <span class="nx">title</span><span class="o">:</span> <span class="nx">entry</span><span class="p">.</span><span class="nx">title</span><span class="p">,</span> <span class="nx">content</span><span class="o">:</span> <span class="nx">entry</span><span class="p">.</span><span class="nx">content</span><span class="p">,</span> <span class="nx">tags</span><span class="o">:</span> <span class="nx">entry</span><span class="p">.</span><span class="nx">tags</span><span class="p">,</span> <span class="nx">id</span><span class="o">:</span> <span class="nx">tasks</span><span class="p">.</span><span class="nx">length</span> <span class="p">});</span> <span class="p">}</span> <span class="c1">// Schedule further tasks if necessary</span> <span class="k">if</span> <span class="p">(</span><span class="nx">tasks</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="nx">requestIdleCallback</span><span class="p">(</span><span class="nx">indexInBackground</span><span class="p">);</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s1">&#39;search&#39;</span><span class="p">).</span><span class="nx">value</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="p">{</span> <span class="nx">search</span><span class="p">();</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> </pre></div> <p>This requestIdleCallback API works by taking a function which receives a deadline object, which tells you how much more time you have left. You are supposed to return before the time expires. Because of this, it's good only for tasks that can be split into small chunks. Indexing is a perfect example: indexing one document takes very little, on the order of 5 ms, and when we detect we ran out of time, we stop and request another time slot. When the browser "takes a break", it will schedule us again. For more details on the API, read <a href="https://developer.mozilla.org/en/docs/Web/API/Fetch_API">this post</a>. We do this as long as there are tasks left. When we finished the indexing, we check to see if the user has written anything in the checkbox and trigger a search if that's the case.</p> <div class="highlight"><pre><span class="kd">function</span> <span class="nx">search</span><span class="p">()</span> <span class="p">{</span> <span class="kd">var</span> <span class="nx">query</span> <span class="o">=</span> <span class="nx">input</span><span class="p">.</span><span class="nx">value</span><span class="p">;</span> <span class="k">if</span> <span class="p">(</span><span class="nx">query</span><span class="p">.</span><span class="nx">trim</span><span class="p">().</span><span class="nx">length</span> <span class="o">&gt;=</span> <span class="mi">3</span><span class="p">)</span> <span class="p">{</span> <span class="kd">var</span> <span class="nx">result</span> <span class="o">=</span> <span class="nx">index</span><span class="p">.</span><span class="nx">search</span><span class="p">(</span><span class="nx">query</span><span class="p">);</span> <span class="c1">// Search for it</span> <span class="c1">// Output it</span> <span class="k">if</span> <span class="p">(</span><span class="nx">result</span><span class="p">.</span><span class="nx">length</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="nx">resultdiv</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="s2">&quot;&lt;li&gt;No result found! :(&lt;/li&gt;&quot;</span><span class="p">;</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="nx">resultdiv</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">result</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span> <span class="kd">var</span> <span class="nx">ref</span> <span class="o">=</span> <span class="nx">result</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">ref</span><span class="p">;</span> <span class="kd">var</span> <span class="nx">doc</span> <span class="o">=</span> <span class="nx">docs</span><span class="p">[</span><span class="nx">ref</span><span class="p">];</span> <span class="kd">var</span> <span class="nx">li</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;li&quot;</span><span class="p">);</span> <span class="nx">li</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="s1">&#39;&lt;a href=&quot;&#39;</span> <span class="o">+</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">url</span> <span class="o">+</span> <span class="s1">&#39;&quot;&gt;&#39;</span> <span class="o">+</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">title</span> <span class="o">+</span> <span class="s1">&#39;&lt;/a&gt;&#39;</span><span class="p">;</span> <span class="nx">resultdiv</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">li</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="nx">i</span> <span class="o">&gt;</span> <span class="mi">30</span><span class="p">)</span> <span class="p">{</span> <span class="k">break</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="nx">resultdiv</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="s2">&quot;&lt;li&gt;Query is too short.&lt;/li&gt;&quot;</span><span class="p">;</span> <span class="p">}</span> <span class="p">};</span> </pre></div> <p>Searching is not too complicated. Too eliminate the case where there are too many results to be useful, we search only when there are at least three letters in the input form. We then loop over the results and add to the emptied list a link to their URL, with a title. We also limit the list to 30 items. Pagination could be added, but I don't think it's that useful to look at the long tail. lunr.js returns results sorted by score, so it's fine to cut off like this. </p> <p>Some posts that have inspired me:</p> <ul> <li>https://29a.ch/2014/12/03/full-text-search-example-lunrjs</li> <li>http://matthewdaly.co.uk/blog/2015/04/18/how-i-added-search-to-my-site-with-lunr-dot-js/</li> </ul> Mon, 05 Sep 2016 21:19:00 GMT tag:rolisz.ro,2016-09-05:/2016/09/05/searching-for-something Two years at Google http://rolisz.ro/2016/09/03/two-years-at-google/ <p><img alt="Collage of last two years" src="http://rolisz.ro/static/images/2016/09/two_years.png" width="100%" style="max-width:600px"/></p> <p>A bit more than two years ago I was anxiously heading towards the reception of the Google Zurich office. I didn’t know what to expect, but I was very excited. One year ago, I was oncall, dying of heat in my home. Today, I am on my last oncall shift as an SRE, rejoicing that it’s not too hot and that I finally have some quiet time to clean out my bookmarks and my inbox. </p> <p>The last one year was very different from the previous one. The list of new experiences continued, but not all of them were positive. There was the weird realization that I might actually enjoy driving. There was the talk I gave at my university. There was the first relationship. There was the first time I set some quite ambitious goals and I managed to follow up on them. There was the first break up. There was the first orchestral concert I went to. There was the first depressive episode I had, along with a panic attack at work. There were limits discovered and pushed further than ever. There was me doing squats with 90 kg weights and running a 10k. There was me changing teams, so I could do machine learning and now I enjoy a lot more my work. There was me inviting some Swiss friends over for lunch and talking to them mostly in German for two hours. There was me reading a lot more Christian books and learning a lot more about God than before.</p> <p>Looking back, I would say that it was a year in which I grew up a lot. I went through what was the first really difficult time in my life and by God’s grace, I came out on the other side, still alive. I put under a question mark a lot of my faith and my belief. The conclusion was that most things are still true, that I still trust in God, I still want to walk in all His ways, I still love Him, I still want to follow Him with all my heart and with all my soul, to keep His commandments and statutes, for they are for my own good. There were things I no longer see the point of, things which I did just because that’s what I saw around me as I was growing up, but they are not as numerous. </p> <p>I step into the coming year with the same intention as last year, but a bit more wary of the fact that it will be hard and it will require constant abiding by the Lord to stay close to Him.</p> Sat, 03 Sep 2016 21:31:00 GMT tag:rolisz.ro,2016-09-03:/2016/09/03/two-years-at-google My desktop setup http://rolisz.ro/2016/08/29/my-desktop-setup/ <p>It's been 5 years since I posted anything related to the kinds of tools and apps <a href="https://rolisz.ro/2011/05/26/used-by-me-6/">I'm using</a>. It's also been a year and a half since I bashed Linux <a href="https://rolisz.ro/2015/01/11/my-experience-with-linux-part-6/">last time</a>. While the more I use computers, the more I hate them (and not just in the way most people "don't like computer", but because I learn more and more why things are bad and just how truly awful they are), I've come to a fairly stable setup for my home desktops, with which I am fairly happy.</p> <p>As mentioned in my last Linux post, I've started using ArchLinux. It's fairly stable, except for when I try to upgrade the whole system once every 2-3 months. Invariably some packages are completely changed and don't clean up nicely after them. Luckily, Googling for the problem has so far always turned up a result fairly quickly. But on the other hand, I've always had the option to get the most recent version of all my programs, so that's nice. </p> <p><img alt="i3 Window Manager" src="http://rolisz.ro/static/images/2016/08/i3.png" width="100%" style="max-width:600px"/></p> <p>I'm not using a desktop environment, instead I am using a tiling window manager, called <a href="https://i3wm.org/">i3</a>. It took me a while to get used to it, it has some quirks, but it makes life much easier. </p> <p>I have it set up so that on the first workspace I have my terminal and on the second workspace I have Chrome. These two are fixed, and on the others I have whatever I need (which doesn't happen to often). At work I actually have a similar setup, except I have a separate workspace with Chrome for each project I'm working on.</p> <p>Having this fixed setup helps me know: I want to do stuff, I need to press "Win" (Meta) + 1. I want to browse stuff or search for something, I press "Win" + 2. Because of this I never get lost among a bazilion windows and I know where things are. </p> <p>You can also get a status bar that displays useful things like RAM usage, IP address, CPU temperature, CPU load, date and time and audio volume, by using i3status.</p> <p>I use the standard i3 configuration, with only a couple of changes: </p> <div class="highlight"><pre># To set a random background picture on each login. exec feh --recursive --randomize --bg-max ~/Pictures # To be able to lock my computer. Needs i3lock. bindsym Mod1+l exec i3lock # Forces Chrome and Terminal to be in the correct workspace, to not have # a border and to start on login. for_window [class=&quot;^google-chrome$&quot;] border none for_window [class=&quot;^gnome-terminal-server$&quot;] border none assign [class=&quot;^gnome-terminal-server$&quot;] 1 assign [class=&quot;^google-chrome$&quot;] 2 exec google-chrome-stable exec gnome-terminal # I had to Google this myself: power management. Go to standby after 300 # seconds, suspend after 600 and turn after 900. exec xset dpms 300 600 900 &amp; # Volume control. bind mod1+Up exec amixer sset &#39;Master&#39; 5%+ bind mod1+Down exec amixer sset &#39;Master&#39; 5%- </pre></div> <p><img alt="Tmux" src="http://rolisz.ro/static/images/2016/08/tmux.png" width="100%" style="max-width:600px"/></p> <p>For my terminal I use a terminal multiplexer called <a href="https://tmux.github.io/">tmux</a>. Tmux creates multiple terminal sessions inside a single terminal window and enables you to switch between them easily. You can have multiple tabs or split the terminal screen however you want.</p> <p>The "special sauce" of my tmux setup is that it's integrated with vim. I use the <a href="https://github.com/christoomey/vim-tmux-navigator">vim-tmux-navigator</a> plugin so that I can use the same commands to navigate between vim splits and tmux panes. This means that I press CTRL-L and I go to the right, even if that is another vim split or another tmux pane. Again, this means uniformity in how I handle navigation, which means less thinking on how to do stuff, so I'm more free to think what I must do. At work I have some hacks that enable me to do the same for i3, so that I can use the same set of keys to move one to the left, but because I almost never have two different applications open on the same workspace, I don't really use it that much. </p> <p><img alt="fish" src="http://rolisz.ro/static/images/2016/08/fish.png" width="100%" style="max-width:600px"/></p> <p>The last thing: <a href="https://fishshell.com/">fish</a>. I use the fish shell because it's a modern thing. It's not encumbered by decades of legacy shell scripts. This does mean that occasionally stuff that I copy-paste from the Internet doesn't work out of the box, but that's probably a good thing, because it forces me to at least try to understand what I'm doing. One of the things that I love most about it is how it automatically recalls the last command you ran based on the prefix of what you typed. You don't even have to go press up to go into history, it continuously does that for you, showing a preview of what command fits. And it's dependent on which folder you are in, so when I start typing "a" in my blog's root folder, it shows me "acr_serve" (that's how I develop locally), while in my home folder it shows "apachectl" (to start an Apache server). </p> <p>Then of course, you can configure fish from a web browser, so you can see the colors you are setting. It has full 24 bit support. It has super smart completion system, which is integrated with git for example. When I type "git add <tab>" it completes only with files that are considered modified by git. It can also parse man pages to enable command line flag autocompletions. And of course, syntax is just much nicer than with bash or zsh. Much, much, much nicer. </p> <p>So there you go, my first post in which I'm not complaining horribly about Linux. I'm glad that I finally found an environment where I'm content and where I can be quite productive. If anyone has any more cool tools, please share them in the comments.</p> Mon, 29 Aug 2016 21:10:00 GMT tag:rolisz.ro,2016-08-29:/2016/08/29/my-desktop-setup How to make a selfie time-lapse video http://rolisz.ro/2016/08/01/how-to-make-a-selfie-time-lapse-video/ <p>Mostly for future self reference, but also in case somebody else wants to do something similar, I'll write down the steps I took to do my selfie time lapse <a href="https://rolisz.ro/2016/07/24/50-days-of-roland/">video</a>.</p> <p>First step: take daily pictures. I recommend about 0.3-0.5 seconds per picture in the slideshow and you want to have at least 30 seconds of video, so that means at least 60-90 photos. Pro-tip: do them in as similar way as possible every day. Especially the distance to the camera is important. You'll thank me soon enough.</p> <p>After you gathered all your pictures together, you want to align them. I did this in GIMP. You open the program and go to File &gt; "Open as Layers". You select your pictures and it will import them and create a separate layer for each one of them. </p> <p>You should disable the visibility off all layers except one, which is to be in the "correct" position (I chose one of the first ones for this). Then you go over each of the other layers, making them visible, but setting their opacity to about 50%. You select this second layer and you start moving it around with the arrow keys until it's well aligned. Then go to Layers &gt; "Layer to Image size", to make sure to crop what went outside of the borders of the image. You're done with this layer, so make it invisible and repeat the process with the other layers, until you have done all of them.</p> <p>I found that it's best to align based on the eyes. The iris is nice and round and there is a high contrast between the iris and the sclera so it's easy to tell when they are aligned.</p> <p>Remember when I told you to take all the pictures in as similar a way as possible? I made the mistake of not taking all the photos from the same distance from the camera, so in some cases I had to resize one of the layers first. This is the most annoying part, because you don't have real time preview. GIMP updates the on screen image only 1-2 seconds after you resize, so you can't smoothly drag until it's the correct size. Also, because the eyes move around when you resize, making it necessary to realign before you can retry to resize. </p> <p>Once all the images are aligned, take Lie Ryan's script from <a href="http://graphicdesign.stackexchange.com/questions/1481/in-gimp-how-to-save-the-different-layers-of-a-design-in-separate-files-images">here</a>, install it and run it. It will save all the layers as images. If you haven't done the step of cropping the layer to image size, now you will see that this plugin saves the whole layer, even if it's bigger than the image, so the alignment you did will be off. </p> <p>Time for an optional part. If you want to add some music in the background and if you have OCD about synchronization and you want the beat of the music and the changing of the images to be in sync, then you should somehow measure the BPM of the song (it helps if you have any musical talent at all). Divide the BPM by 60 to get the frame rate per second in the video. If the BPM is really fast (say over 100), than halve it and use that as the frame rate. This way, images will change only on every second beat. In my case, the BPM was 160, which was way too high, so I went with 80/60 = 1.33 as the frame rate. </p> <p>Time to move on to the next tool: ffmpeg, the Swiss army knife of movie making. It's super easy, you just run the following command in the folder where all the images are (hover over the arguments to see explanations for them):</p> <p>ffmpeg <span title="Overwrite output files. Useful when tinkering with other parameters so that you don't have to keep confirming that" class="tooltip"> -y </span> <span title="Input framerate, obtained as explained above" class="tooltip">-framerate 1.33</span> <span title="Use bash globbing for the input pattern" class="tooltip">-pattern_type glob</span> <span title="First input should be all the png files in this folder" class="tooltip">-i '*.png'</span> <span title="The offset for the sound should be this much" class="tooltip">-ss 12.9</span> <span title="The second input file, which in this case is the music" class="tooltip">-i cbqp.mp3</span> <span title="The audio codec" class="tooltip">-c:a aac</span> <span title="The video codec" class="tooltip">-vcodec libx264</span> <span title="Slow (so strong) compression" class="tooltip">-preset slow</span> <span title="Another compression parameter" class="tooltip">-crf 18</span> <span title="Output framerate. If this is not high enough, the changing of the images will slowly get out of phase" class="tooltip"> -r 30 </span> <span title="The video should be as long as the shortest input (otherwise the music will keep playing in a long, black scene" class="tooltip">-shortest</span> <span title="Name of the output file" class="tooltip">time-lapse.mp4</span> </p> <p>And voilà, you have a selfie time-lapse video. Upload to your favorite video sharing website and manically refresh the page to see the view counter go up (or not).</p> Mon, 01 Aug 2016 19:48:00 GMT tag:rolisz.ro,2016-08-01:/2016/08/01/how-to-make-a-selfie-time-lapse-video 50 Days of Roland http://rolisz.ro/2016/07/24/50-days-of-roland/ <iframe width="420" height="315" src="https://www.youtube.com/embed/ZB7Btf1xVW0" frameborder="0" allowfullscreen class="youtube"></iframe> <p>For a long time I wanted to do the kind of video where you take one photo every day and then you show make a slideshow of them, like <a href="https://www.youtube.com/watch?v=6B26asyGKDo">this one</a>. Today is the day where it finally happened, even if it contains only 50 days worth of data!</p> <p>The images are from the 1st of May until the 17th of July. I usually took two pictures every day, one in the morning and one in the evening. But I also travelled a lot, so I don't have photos from every single day.</p> <p>What gave me the incentive to finally do this project was that I wanted an easy way to track my mood, to see if it was finally getting better (yes, it got better) and I was too lazy to track it in an app, so I decided to use my face as a proxy for it.</p> <p>I did the alignment of the photos manually. It took only about 2 hours for 82 pictures. I had to do it manually because I wanted to make sure that the left eye is always in the same position, with the right eye being as close as possible. While I did use a tripod, sometimes I moved it, so I had to zoom in/out in the photos and other I had to rotate a bit.</p> <p>Two things stand out for me when looking at the time lapse:</p> <ul> <li>I have too many dark colored T-shirts, I should get more light ones. </li> <li>I need to do something with my hair, because there's a high unintended variance in the resulting styles (read: how I woke up that day). Any suggestions? The biggest problem is that I usually don't notice it until it's too late, for example until I have to run to catch the train.</li> </ul> Sat, 23 Jul 2016 22:48:00 GMT tag:rolisz.ro,2016-07-24:/2016/07/24/50-days-of-roland Evaluating goals http://rolisz.ro/2016/07/13/evaluating-goals/ <p>The first half of the year has passed, so it's time to see how I did on my goals that I had <a href="https://rolisz.ro/2016/01/02/setting-goals/">set out</a> for it. Sorry the post is late, I was travelling for the last two weeks. </p> <p>I described using two techniques for helping achieve goals. One of them was precommitment, which I did in the form of announcing here on the blog. This seemed to not work too well for me, because some of my goals ended up being completely untouched. I'm not sure why, but I think that it's because I made it through the blog, it increases the psychological distance between me and the commitments, so I don't feel as much of a connection to them. Maybe I'll start to print some t-shirts announcing my goals :)))</p> <p>The other technique was tracking incremental progress and breaking goals down into manageable parts. This worked remarkably well, except in one case, and in two cases I tracked the wrong thing. In all other cases, it helped a lot with staying on track. But, I did pay Beeminder several times for failing on occasionally.</p> <p>For each goal, I will say what I achieved and I will give myself a score. A score of 1.0 is not necessary on all of them, because it would mean I wasn't aiming high enough. I will also give some notes on how achieving (or not) felt.</p> <dl> <dt>Losing weight</dt> <dd>My lowest weight was 81.1kg, at the beginning of May. Then I went to Paris, then to Romania and I was in the US for the last two weeks, so unfortunately I have reverted most of my progress. Still, that's the slimmest I've been in the last two years (at least) and several people have noted that I have lost weight. I didn't get to 77 kg, but I made it 60% of the way, so the score is 0.6. As a side note, after reducing food portions for several months, my sensation of satiety changed completely and it's easier to resist food now. But for me, using Beeminder was not a good choice. Because I travel so often, I often come home with an extra kilogram or two, which makes me go into the red zone, even though I lose it quickly afterwards, which made me skip some measurements because I "knew" they were "invalid".</dd> <dt>Doubling my bench press</dt> <dd>I managed to get to 57.5 kg. It's close to the 60kg goal that I revised in April, so the score is 0.9. This was really fun. I am the strongest I have ever been and now I can do pull ups without a problem. I haven't tested yet how many can I do, but compared to 0 a year ago, it feels awesome. </dd> <dt>Run a 10k Race in April</dt> <dd>So, about this one... I was signed up to run at Zurich City Run on the 24th of April. But on that day it was 3 degrees outside and snowing. And not just some light snowing, but pretty serious. So, because I value my health more than running, I skipped it. But, I did run several times 10k, both in preparation for the race and after it. My best time was 1:02:29. Because I did manage to run, even if not part of the official race, I will still score myself with a 1.0. Running was interesting too, and it required pushing myself in a completely different way than doing the bench presses. </dd> <dt>Reading</dt> <dd>I have read 13 books, while I should be at 14 to meet my goal by the end of the year. This goal is one where I used Beeminder in the wrong way: I set it to track number of books read, but it doesn't work well because some books are thick, while others are thin, so the amount you have to do every day is very uneven. The recommendation is to instead set a goal of how much to read every day, but I found that just having a goal to read X by the end of the year was enough to always keep me reading. Score: 0.9</dd> <dt>Playing the piano</dt> <dd>I have been doing this without problems. Beeminder really shines at this goal and is the perfect thing for tracking it. I have the goal set per week, but I can do daily measurements. Score: 1.0.</dd> <dt>Blogging</dt> <dd>21 blog posts written until the end of June. This one also went well. I had only 3 blog posts where I really had to scratch my head what I should write, but I feel that they still came out ok, without a feeling that they are forced. Score: 1.0.</dd> <dt>Photography</dt> <dd>So... this is the one that didn't happen at all. Like, nothing. Nada. Zilch. I did take more pictures, I did read some more about photography, I did play a lot more with manual mode, but I didn't upload any of them anywhere, and that's the most important step. So unfortunately, the score is 0.0. :(</dd> <dt>Focusing</dt> <dd>This one is interesting. At the midpoint I had done nothing for it, but then I set up a Pomodoro app on my phone and Beeminder to track it and I managed to turn it around. I have been tracking having 6 intervals of 20 minutes a day, which are uninterrupted. Sometimes at work it's hard to accomplish it, because colleagues would ask me stuff, but it mostly worked out. I have recorded 218 such sessions, which comes out at 72 hours, in 76 days. The goal said I should do it on 80% of the days, so this has a score of 1.0. Yay for Beeminder and Pomodoro.</dd> <dt>Machine Learning</dt> <dd>I did half of the homeworks. The next one is due next week. I'll finish on time (for the course), but not for my goal. Score: 0.5.</dd> <dt>Bible reading</dt> <dd>Beeminder tells me that I've read 282 chapters from the Bible in 94 days (since the midway checkup). This comes out to an average of 3 chapters a day, which is lower than it should be, but to be honest, I have travelled at least 4 weeks during this time. Still, the score is only 0.8.</dd> <dt>Sharing the gospel</dt> <dd>So... this one kinda died off. I shared two more times, but that's it. Score: 0.3 :(</dd> <dt>Memorizing Bible verses</dt> <dd>I don't know what I was thinking when I set this goal. 1.68 verses memorized every day??? Anyway, this failed too. I did manage to learn 2 verses though, but it fails veeeeery short of where I should be. Score: 0.006</dd> <dt>Practicing German</dt> <dd>For some reason, I forgot to write down this goal in January, even though I have been keeping it ever since. The idea was to do at least one lesson with Duolingo every day. I found that too easy, so in April I increased it to two lessons. I have done 284 such lessons in 190 days, which means an average of 1.49 lessons per day. Sounds about right. Score: 1.0</dd> </dl> <p>My average score is 0.69. That sounds... pretty good. Certainly much better than what I have managed to achieve in the past. I could have done better, but there's always another time. </p> <p>However, I think for now I will take a break from most of my goals, to be able to relax and rest a bit. The last half a year has been quite difficult and exhausting for me and sometimes I felt like I didn't have the energy or the motivation to do anything. So, I will try to take it easier for the next 2-3 months and start again afterwards.</p> Wed, 13 Jul 2016 07:14:00 GMT tag:rolisz.ro,2016-07-13:/2016/07/13/evaluating-goals The Rise and Fall of the Yahoo Messenger Empire http://rolisz.ro/2016/06/19/the-rise-and-fall-of-the-yahoo-messenger-empire/ <p><img alt="Yahoo Messenger logo" src="/static/images/2016/06/ym_logo.png" style="box-shadow:none"></p> <p>Back in my days, in Romania, Yahoo Messenger was "the thing" to be on. Everyone had it. It was the most popular Instant Messaging platform by far, for almost ten years, while MSN, AOL or ICQ were pretty much unheard of.</p> <p>Sometimes, people would send messages saying something among the lines: "Yahoo Messenger is closing, unless enough people send this message to all their friends, to prove that it's still popular". Well, now this is almost true, but only the first part. Yahoo Messenger as I have grown up to know it, will cease to work starting August. It will still live in a weird web application, but it's not the same thing. </p> <p><img alt="Yahoo Messenger emoticons" src="http://rolisz.ro/static/images/2016/06/ym_emoticons.jpg" width="100%" style="max-width:600px"/></p> <p>It won't be the place with the best emoticons ever. I don't understand todays emojis. Maybe I'm too old for them, but for me this will always be the hug symbol &gt;:D&lt;, not 🤗. Luckily, some apps still understand them and convert them (for example Hangouts). Then you had Audibles, the original stickers. You had video calls, before it was cool. You had the option to "Show my webcam", the original Periscope. Oh, the kind of hilarious statuses some people would have. All this before Facebook and their wall. Buzzing people, to draw their attention (or to annoy them). Photo sharing, right there in the application. Built in games, like pool. I don't think there is any modern IM app that allows you to do that anymore. </p> <p>But now it's over. Now we have to resort to things like Facebook Messenger, which data mines your conversations like there is no tomorrow. Whatsapp, which is kinda my favorite, but which has the annoying limitation of being tied to a phone number. Telegram, would be nice, except nobody uses it. Hangouts, again, nobody uses it, and it's also unreliable as heck (I miss a lot of notifications on my various platforms). There's Allo, which is not available yet. There's Skype, which likes to spam you when you log into another device. </p> <p>It's sad to see this regression in IM programs. Yahoo Messenger had one "flaw", that it didn't support being logged in from multiple accounts, but I believe that could have been easily fixed. But for some reason, most people moved to Facebook, because that's where all the action was, so it was easier to just chat there. </p> <p>And now it's gone. Below is a graph of a part of my chats over Yahoo Messenger. I have data only from the last 9 years, not before that, so I'm missing about 4-5 years. It peaked in June 2012, when I was finishing the first year of university, and then it declined quickly, so that by spring 2013 I was barely using it anymore. The last time I used was in January 2014.</p> <iframe width="800" height="450" frameborder="0" scrolling="no" src="https://plot.ly/~rolisz/4.embed"></iframe> <p>Good bye, dear Yahoo Messenger. It was nice using you!</p> Sun, 19 Jun 2016 18:36:00 GMT tag:rolisz.ro,2016-06-19:/2016/06/19/the-rise-and-fall-of-the-yahoo-messenger-empire