rolisz's site en Thu, 09 Mar 2017 23:45:00 GMT acrylamid 0.7.10 Silence <p><img alt="Silence poster" src="" 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="" 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="" 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 23:45:00 GMT,2017-03-10:/2017/03/10/silence Backing up 2: The NAS <figure> <p><img alt="Photo of Synology DS916+" src="" 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="">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=""><img alt="Synology OS start screen" src="" 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=""><img alt="Storage Manager" src="" 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=""><img alt="Package Center" src="" 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=""><img alt="Control Panel" src="" 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 21:51:00 GMT,2017-03-02:/2017/03/02/backing-up-2-the-nas Backing up <figure> <p><a href=""><img alt="Burned down computer" src="" 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 22:23:00 GMT,2017-02-20:/2017/02/20/backing-up Winter sports <p><img alt="From up close, it looks just like the wallpaper from one of the Mac OS versions" src="" 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="" 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="" 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="" 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="" 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 21:17:00 GMT,2017-02-05:/2017/02/05/winter-sports Sous vide with Anova Precision Cooker <p><img alt="Frontal view of Anova Cooker" src="" 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="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="Chicken in a bag. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="The chicken cooking in the pot. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="The end results: juicy, tender chicken. " src="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="Salmon after it cooked for 1 hour. " src="" 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 22:36:00 GMT,2017-01-28:/2017/01/28/sous-vide-with-anova-precision-cooker New year, old goals <p><img alt="Same same, but different, but still same" src="" 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="">my Beeminder</a>.</p> Sat, 07 Jan 2017 12:06:00 GMT,2017-01-07:/2017/01/07/new-year-old-goals 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="">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="">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="">neural networks one</a>. The second most popular one is about Alida. Then on the 8th place is my retrospective after <a href="">two years at Google</a>. Four more posts from this year made it to top 20: the one about setting goals, the <a href="">selfie timelapse one</a>, the one <a href="">about Yahoo Messenger</a> and the one <a href="">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 22:46:00 GMT,2017-01-01:/2017/01/01/2016-in-review Shalom from Israel <p><img alt="Pray for the Peace of Jerusalem" src="" 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="" 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="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="Star Trek is out, Time Trek is in :D " src="" 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="" 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=";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="" style="display:block" width="100%" style="max-width:600px"/> <img title="Safety first " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="The quiet desert " src="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="The Galilee at dusk " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="Lokka walking on water " src="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="Our group in the Capernaum synagogue " src="" 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="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="Crossroads " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="UN soldiers looking towards Syria " src="" 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="" 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="" 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="" 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="" 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="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="New Yorkers assaulting Massada " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="The surroundings of Massada " src="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="The discreete entrance to Ein Ghedi " src="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="Rooftops of the old city " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="View from where we stayed on the first night " src="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="Spices in the souk " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="Sweets. Oh the sweets. " src="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="The Muslim quarter in the Old City " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="Heh. " src="" 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="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="Western Wall " src="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="I too like to live dangerously " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="Another kind of watch face " src="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="Modern Statue in Betlehem, with an Internet address " src="" 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="" 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="" 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 20:00:00 GMT,2016-12-22:/2016/12/22/shalom-from-israel Noh hai la vot! <p><img alt="Me in a t-shirt with Che Olos" src="" 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="">Gov ITHUB</a>, care a pus online o mulțime de date și a crescut transparența statului</li> <li><a href="">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="">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="">î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 21:50:00 GMT,2016-12-09:/2016/12/09/noh-hai-la-vot Going places... <p><img alt="Old view" src="" 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="" 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 15:57:00 GMT,2016-11-13:/2016/11/13/going-places Maltalavista <figure> <p><img alt="Malta" src="" 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="">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="" 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="" 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="" 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="">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="" 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="" 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="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="Caves in Gozo. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="The beautiful city of Mgarr. " src="" 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="" style="display:block" width="100%" style="max-width:600px"/> <img title="View from the Saluting Battery. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="I guess this Aladin is a more honest man. " src="" 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="" 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="" 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 21:27:00 GMT,2016-10-24:/2016/10/24/maltalavista Data and Goliath <p><img alt="Data and Goliath" src="" 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 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="">Ghostery</a>, <a href="">Privacy Badger</a>(I use this one) or <a href="">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="">Tor nodes</a>. </p> <p>That's it folks! Be safe and keep an eye out for surveillance!</p> Sun, 25 Sep 2016 20:37:00 GMT,2016-09-25:/2016/09/25/data-and-goliath Good bye, Alida <p><img alt="Alida" src="" 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 22:07:00 GMT,2016-09-18:/2016/09/18/good-bye-alida 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="">search page</a> (also linked in the menu).</p> <p>I had three options: </p> <ul> <li><a href="">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="">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="">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="">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="">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></li> <li></li> </ul> Mon, 05 Sep 2016 22:19:00 GMT,2016-09-05:/2016/09/05/searching-for-something Two years at Google <p><img alt="Collage of last two years" src="" 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 22:31:00 GMT,2016-09-03:/2016/09/03/two-years-at-google My desktop setup <p>It's been 5 years since I posted anything related to the kinds of tools and apps <a href="">I'm using</a>. It's also been a year and a half since I bashed Linux <a href="">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="" 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="">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="" width="100%" style="max-width:600px"/></p> <p>For my terminal I use a terminal multiplexer called <a href="">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="">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="" width="100%" style="max-width:600px"/></p> <p>The last thing: <a href="">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 22:10:00 GMT,2016-08-29:/2016/08/29/my-desktop-setup 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="">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="">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 20:48:00 GMT,2016-08-01:/2016/08/01/how-to-make-a-selfie-time-lapse-video 50 Days of Roland <iframe width="420" height="315" src="" 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="">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 23:48:00 GMT,2016-07-24:/2016/07/24/50-days-of-roland 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="">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 08:14:00 GMT,2016-07-13:/2016/07/13/evaluating-goals 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="" 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=""></iframe> <p>Good bye, dear Yahoo Messenger. It was nice using you!</p> Sun, 19 Jun 2016 19:36:00 GMT,2016-06-19:/2016/06/19/the-rise-and-fall-of-the-yahoo-messenger-empire Nice time in Nice <p><img alt="View from the Club" src="" width="100%" style="max-width:600px"/></p> <p>Because I had such a good time in Paris <a href="">last month</a>, I just had to go again to France, this time to the French Riviera, to hear the beautiful French language again :X:X. Or maybe it was just an SRE offsite. Who knows?</p> <p>It was really exciting to go there. It reminded me of the various <a href="">physics</a> and <a href="">programming</a> competitions that I went to in high school. Going on a plane where more then half the people were like minded nerds and spending some days talking to most exotic geeky stuff? Sounds like great fun!</p> <p><img alt="View from our room" src="" width="100%" style="max-width:600px"/></p> <p>We stayed at Club Med Opio en Provence, which is half an hour's drive away from the airport. After going to our rooms, we went straight for a huge lunch, which was buffet style. We had to burn all those calories, so we went for a quick swim. The water was right at the limit of being cold, so when people went in, they inevitably cringed, but after swimming around for a while, they were fine. We tried playing with a ball and we soon realized that playing water polo must be really hard.</p> <iframe width="560" height="315" src="" frameborder="0" allowfullscreen class="youtube"></iframe> <p>Next up: archery lessons. I shot with a bow before, somewhere in Hungary, and probably I activated some genetic memories too, from my Hun ancestors, because I did pretty well at this. </p> <p><img alt="Guillaume force controlling a Petanque ball" src="" width="100%" style="max-width:600px"/></p> <p>So that nobody can complain that they miss the Microkitchens from work, we had an appero between lunch and dinner. But we didn't just stuff ourselves, we also played <a href="">Pétanque</a>. Together with Zhivka, we won a game against Silvio and Guillaume, even though they had played it before! \:D/</p> <p><img alt="The Petanque team" src="" width="100%" style="max-width:600px"/></p> <p>For dinner, I decided to go all in on sea food: two types of shrimps, shells and snails (fine, those are not sea food). I was very surprised by the snails! After overcoming the natural disgust towards them and actually tasting them, I found them to be very good. I should have some again and I should try more weird stuff too!</p> <p><img alt="The Gnome of Zurich controlling Hollywood and others" src="" width="100%" style="max-width:600px"/></p> <p>After dinner, we played a board game called Illuminati. It's probably every conspiracy theorists favorite game ever. I played with the Gnomes of Zürich and through my scheming I managed to win! We had fun, but it's a quite complicated game and up until the end we kept looking up the manual for various rules. </p> <p>I ended the night by having a lovely chat about programming languages and type theory with some colleagues from Ireland. Just like at the competitions in high school. </p> <p>The next day, I somehow managed to wake up before breakfast was over. We had a work related poster session and a discussion about the <a href="">SRE book</a>. It was quite funny to see how many people were on their phones during the discussion. At least that's what I noticed when I was looking up from mine :D </p> <p><img alt="Perfume tank art" src="" width="100%" style="max-width:600px"/> </p> <p>After lunch, I chose to do a perfume making class in Grasse, the world's capital of perfume. It was fun, but difficult. After half an hour of smelling different scents, my mere mortal nose can't really tell anything apart. Apparently, professional "noses", after going to school for 7 years, can distinguish up to 4000 scents. Anyway, I somehow managed to make an Eau de toilette. People haven't complained about it when I wore it. Seeing the perfume shop was even more confusion inducing, even though we only saw some of the best selling articles. Sure, this one is musky, that one is floral and that one is fruity. But three seconds later I already was mixing them up. It didn't help that the lady who was selling them made a lot of offers and deals. </p> <p><img alt="Bee in a flower" src="" width="100%" style="max-width:600px"/></p> <p>After dinner, we played another board game: We didn't playtest this at all. Well, good job on this one lads. You had a good intuition, even if you didn't playtest it. It's one of the most random, crazy and funny games possible. The rules are super simple, fit on a piece of paper the size of your palm and you just have to select cards, play them and do what it says on them. And it says the most random things, like calling everyone to a game of rock, paper, scissors, but every time the rules saying who loses are different. Sometimes it's anyone who plays something different from the person who played the card, sometimes it's anyone who plays a specific symbol. And funnily enough, even though the playing person has read the card, it happened a lot of times that they themselves played that symbol. Other cards summon a dragon to kill another player. Other cards say that you have to say "Comic Sans is awesome" before every move. And so on. It was a lot of fun. I can't wait to play the game again!</p> <p>Being in France and having a guy at the table who seemed to know his wines, I tried one of the famous French wines. Nope, I still don't understand why people drink wine. That glass of red wine tasted awful, even though when ordering it, the guy used fancy words.</p> <p><img alt="Geocaching clues" src="" width="100%" style="max-width:600px"/></p> <p>On the last day at the Club Med, we had a geocaching treasure hunt. 30 little capsules, each containing a piece of paper with the name of a star written on it, were spread on the grounds of the club. We were teamed up in groups of 2-6 people and we had to find as many as possible. My group, called The Police, managed to find about 18. All the groups were named after famous music bands, and that way I found out about The Police. </p> <p>After another swimming session, some of my colleagues went earlier to Nice and got to actually see it. I missed that, so I just took a nap and watched the craziest cat ever play with itself and get scared of itself. </p> <p><img alt="The sea from the airport" src="" width="100%" style="max-width:600px"/></p> <p>While I didn't get to see Nice, at least I got to see the sea from the airport, so I've got that going for me. </p> <p>I enjoyed my time in Opio en Provence very much, but I'll have to go again, this time actually to Nice :))</p> Sun, 12 Jun 2016 18:00:00 GMT,2016-06-12:/2016/06/12/nice-time-in-nice Glücklicher 6. Geburtstag, mein blog! <p>Du bist sechs Jahre alt, mein lieber blog. Ich habe viele schöne Erinnerung in deine Blog-Posts.... Ah, who am I kidding, my German is not good enough to write a whole post in it. </p> <p>You've travelled a lot in the last one year. You've been <a href="">twice</a> to <a href="">America</a>. You've visited <a href="">several</a> <a href="">European</a> <a href="">countries</a>. You've been to <a href="">various</a> <a href="">shows</a>. You've become more modern, by embracing <a href="">cloud technologies</a> and <a href="">encryption</a>. Quite a lot of stuff that we've done together, adding up to about 130000 characters written in one year, in 28 blog posts. </p> <p>You've been making new friends. The number of users visiting has gone up by 5.91%. The number of page views has dropped quite a lot, by almost 41%, but you're still at a quite good 40000. You have become very popular in Russia for some reason, with more than 2000 views from there :))) People still find you through search, about 50.5%, then 19.1% come from links from various places on the Internet, 16.8% of the people access you directly (thank you, my biggest fans) and 12.8% come to you from social networks. I'm surprised by how useless social media is. I guess you should make better friends :))) Maybe even get a Facebook page :-" Unfortunately, all these visitors don't really like to leave comments. There were 61 new comments in the last year, 27 from me, 11 from Mada (thaaaank youuu), and then two persons left 3 comments, my mom left 2 and the rest is form a long tail of people, each leaving only 1 comment. :( I don't know how to change this and to get a discussion going on more often. Any tips? :D</p> <p>I still have big plans for you, including adding some new content that is not just blog posts. We'll see how that goes and when it actually arrives :)) And I'm looking forward to the other adventures that we'll have together!</p> Wed, 08 Jun 2016 22:30:00 GMT,2016-06-08:/2016/06/08/gluecklicher-6-geburtstag-mein-blog Nutribullet <figure> <p><img alt="Nutribullet base" src="" width="100%" style="max-width:600px"/> <figcaption>Nutribullet base</figcaption></p> </figure> <p>For Christmas, a colleague of mine bought himself a juicer and a blender and he was super happy about them. So, for my birthday, my right hand surprised me by ordering me the blender my colleague had: the Nutribullet 600. </p> <p>And boy, was it a nice surprise. It's super convenient and super easy to clean. My parents have a juicer at home, but it usually takes more time to clean it than to drink the fruit juice. This blender has only two parts that have to be cleaned and, if done quickly enough, it's enough to basically just rinse them for 30 seconds under tap water.</p> <figure> <p><img alt="Nutribullet cups" src="" width="100%" style="max-width:600px"/> <figcaption>Different sized cups</figcaption></p> </figure> <p>Nutribullet consists of a base unit, which has the spinning part of the motor, some cups, some blades and some tops for the cups. You put in what you want to blend in a cup, attach the blades, turn upside down, put on the base unit and press down and 20 seconds later you've got yourself your mix. Take off the blades, rinse them quickly, put on another top and you're ready to drink from the same cup. After finishing the drink, you just rinse it and it's done. </p> <p>My fruit consumption has increased by 3-4 times at least since I bought this, because it's super easy to make myself a smoothie with random fruits. So healthy++. Unless I add ice cream to it to make a milkshake. Which doesn't happen every day. Only every second one. :-"</p> <figure> <p><img alt="Nutribullet tops" src="" width="100%" style="max-width:600px"/> <figcaption>A blade unit and a top for cups</figcaption></p> </figure> Sun, 29 May 2016 23:39:00 GMT,2016-05-30:/2016/05/30/nutribullet Paris Revisited <p><img alt="Pyramid from Louvre" src="" width="100%" style="max-width:600px"/></p> <p>After feeling a bit down under at home, I decided to go places again. Because I haven't seen my good friend <a href="">Alida</a> in a long time, I decided to go to Paris again. And this time not just for an <a href="">afternoon</a>. It made me feel uncomfortably excited to have something interesting to do.</p> <p><img alt="Musee de L'armee" src="" width="100%" style="max-width:600px"/></p> <p>Because flying, with security checks and everything, is not much faster than the train, I took the latter. It's really nice to go with the TGV, to see all the cars whizzing by on the highway. But the numbering of the train cars was interesting: it was decreasing from 8 to 1, then you had what looked like the engine car to me, and then cars from 9 to 16. I know that the French numbering system is odd (quatre-vingt-dix-neuf is four twenties ten nine), but this is even more so. </p> <figure> <p><img alt="Bridge of Alexandre III" src="" width="100%" style="max-width:600px"/> <figcaption>Pont Alexandre III</figcaption></p> </figure> <p>I did a quick math on the train, measuring the time it takes to pass between 10 poles, about 6.9 seconds. I have some vague memories that the average distance between two poles is about 50m, so the speed of the train was about 260 km/h (which seems <a href="">legit</a>). When another train passes going by in the opposite direction, the train tilts by 1-2 degrees. :D</p> <p><img alt="L'Arc de Triumph" src="" width="100%" style="max-width:600px"/></p> <p>After all these fun science experiments, I get to Gare de Lyon and I have to make my way to the apartment I rented on Airbnb. It's close to the Eiffel tower, about 10 minutes walking and from the window you can see the Dôme des Invalides, where Napoleon is buried. Odd note: the key was cylindrical with various points jutting out of it. It's interesting how many countries have their own kind off key styles for house locks (Switzerland is also different from Romania for example).</p> <figure> <p><img alt="National Defense Institute" src="" width="100%" style="max-width:600px"/> <figcaption>National Defense Institute, with Eiffel tower behind it</figcaption></p> </figure> <p>Fun tidbit from the metro, which I took to get there: every station is announced twice, with different voices, the first one sounding almost like a question, while the second one is confirming the first one. </p> <figure> <p><img alt="Roue de Paris" src="" width="100%" style="max-width:600px"/> <figcaption>Roue de Paris, a Ferris wheel set up on the Place de la Concorde</figcaption></p> </figure> <p>First order of business was to eat. Google Maps to the rescue in suggesting some restaurants. I was in the mood for crepes. The first one was full, so I had to go to the another one. I had galettes and crepes. Galettes are basically crepes with non-sweet filling. Really delicious.</p> <p><img alt="Golden decoration" src="" width="100%" style="max-width:600px"/></p> <p>Then I went to visit the Google office, which is set up in a nice historical building. One of the bigger conference rooms was actually a ballroom, with much of the decor still intact. Other meetings rooms are named after French philosophers. </p> <p><img alt="Sacre Coeur" src="" width="100%" style="max-width:600px"/></p> <p>On this trip, I decided to do some things differently. Until now, I never really took organized tours, usually preferring to just walk by myself. But Airbnb is trying to expand into other markets, besides just housing, to provide a more complete "living like a local" experience. I don't necessarily understand that, given that many locals who live in big cities have never visited the main attractions in their hometowns. Anyway, I signed up for a food tour recommended by them. It was led by Natasha, who is a food journalist and who knows the best places to eat in Paris. She showed us a cheese shop and explained all kinds of differences between different cheeses, when they are made, what are they made off and how they are made. The lady who was working there was 78 years old and had been working there for 50 years. The highlight of the tour for me was the Chambre aux Confitures, which is a jam shop. They had jams made out of all possible fruits, and then some more, including onion jams and salted butter caramel. Nom nom nom. It also included a pastry shop, a chocolate shop, a cake shop and a "grocery store" (epicerie), which had some amazing sausages and hams, and the thing that has replaced macarons as the new trendy thing, Popelini. And before anyone asks, no, I did not ruin my diet on this food tour, but I definitely learned a lot about food and how to properly experience it. </p> <p><img alt="View from Sacre Coeur" src="" width="100%" style="max-width:600px"/></p> <p>Since the tour finished close to the Sacré-Cœur Basilica, I went there afterwards. In front of the church is the Louise Michel square, which was full of people relaxing. But there were also lots of peddlers selling water, beer, tiny Eiffel towers, letters on a string and other stuff. At some point some random guy wanted to show me a "trick" with a string and when I walked around him, he grabbed my hand. After twisting my arm free and saying a loud and forceful "No", he didn't pursue it anymore. There was also a guy who did various tricks with a football ball, less than 50 metres away from the church. He was quite talented, at some point having climbed a pole, then swung around it, all while balancing the ball on his feet. </p> <iframe width="560" height="315" src="" frameborder="0" allowfullscreen class="youtube"></iframe> <p>While I could go inside the church, I was too late to go up to the dome, which would have had a better view. But at least I had the chance to see a guy playing an interesting instrument just outside. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="Eiffel tower lit up. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="River bank full of people. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="Musée d" orsay. ' src="" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/05/paris/boat/P1120265.jpg", "title": "Eiffel tower lit up.\n", "msrc": "/static/images/2016/05/paris/boat/thumbs/P1120265.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/boat/P1120285.jpg", "title": "River bank full of people.\n", "msrc": "/static/images/2016/05/paris/boat/thumbs/P1120285.jpg", "w": 1200, "h": 700}, {"src": "/static/images/2016/05/paris/boat/P1120302.jpg", "title": "Mus\u00e9e d'Orsay.\n", "msrc": "/static/images/2016/05/paris/boat/thumbs/P1120302.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/boat/P1120321.jpg", "title": "Institut de France.\n", "msrc": "/static/images/2016/05/paris/boat/thumbs/P1120321.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/boat/P1120337.jpg", "title": "Notre Dame de la Paris.\n", "msrc": "/static/images/2016/05/paris/boat/thumbs/P1120337.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/boat/P1120380.jpg", "title": "Bridge over the Seine.\n", "msrc": "/static/images/2016/05/paris/boat/thumbs/P1120380.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/boat/P1120395.jpg", "title": "Are the owners playing Tetris with the lights?\n", "msrc": "/static/images/2016/05/paris/boat/thumbs/P1120395.jpg", "w": 1200, "h": 808}, {"src": "/static/images/2016/05/paris/boat/P1120432.jpg", "title": "Eiffel tower from the opposite side. \n", "msrc": "/static/images/2016/05/paris/boat/thumbs/P1120432.jpg", "w": 1200, "h": 1792}]</script> </div> <p>I ended the night by going for a boat tour on the Seine. I highly recommend doing it at night, because everything is lit up and looks much better. Unfortunately, you can't make as good pictures at night :(. Also, I got to see the light show of the Eiffel tower from the boat. The river banks were full of young people, even at 11 at night, many of whom were cheering as we were passing by. </p> <figure> <p><img alt="Alida and David" src="" width="100%" style="max-width:600px"/> <figcaption>My friends, Alida and David</figcaption></p> </figure> <p>On Saturday, I went to have lunch with Alida at Chez Papa. On my way there, I passed through a market and I was surprised to see a mix of everything, from fresh fish, to clothes, to food, to souvenirs. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="There is light even in the grave. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="They found a comfortable resting place. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="I" ll smile, because i don't understand what that sculpture is. ' src="" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/05/paris/cemetery/P1120495.jpg", "title": "There is light even in the grave. \n", "msrc": "/static/images/2016/05/paris/cemetery/thumbs/P1120495.jpg", "w": 1200, "h": 1834}, {"src": "/static/images/2016/05/paris/cemetery/P1120509.jpg", "title": "They found a comfortable resting place. \n", "msrc": "/static/images/2016/05/paris/cemetery/thumbs/P1120509.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/cemetery/P1120516.jpg", "title": "I'll smile, because I don't understand what that sculpture is.\n", "msrc": "/static/images/2016/05/paris/cemetery/thumbs/P1120516.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/cemetery/P1120510.jpg", "title": "It is forbidden to ride a bike to heaven!\n", "msrc": "/static/images/2016/05/paris/cemetery/thumbs/P1120510.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/cemetery/P1120518.jpg", "title": "\n", "msrc": "/static/images/2016/05/paris/cemetery/thumbs/P1120518.jpg", "w": 1200, "h": 804}]</script> </div> <p>At lunch I had a lot of really, really fat, but really, really good food (something something with foie gras). Then we went to a nearby cemetery where we saw Constantin Brâncuși's grave. *note to self *learn more about his statues.</p> <div class="gallery clearfix" style="max-width:600px"> <img title="Notre Dame de la Paris. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="Saint Denis, who had his head chopped off by the Romans. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="An archbishop resting here. " src="" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/05/paris/notre_dame/P1120537.jpg", "title": "Notre Dame de la Paris.\n", "msrc": "/static/images/2016/05/paris/notre_dame/thumbs/P1120537.jpg", "w": 1200, "h": 1554}, {"src": "/static/images/2016/05/paris/notre_dame/P1120612.jpg", "title": "Saint Denis, who had his head chopped off by the Romans.\n", "msrc": "/static/images/2016/05/paris/notre_dame/thumbs/P1120612.jpg", "w": 1200, "h": 1049}, {"src": "/static/images/2016/05/paris/notre_dame/P1120595.jpg", "title": "An archbishop resting here.\n", "msrc": "/static/images/2016/05/paris/notre_dame/thumbs/P1120595.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/notre_dame/P1120546.jpg", "title": "The helmet is a couple of sizes too big. \n", "msrc": "/static/images/2016/05/paris/notre_dame/thumbs/P1120546.jpg", "w": 1200, "h": 1898}, {"src": "/static/images/2016/05/paris/notre_dame/P1120548.jpg", "title": "Inside the cathedral \n", "msrc": "/static/images/2016/05/paris/notre_dame/thumbs/P1120548.jpg", "w": 1200, "h": 1709}, {"src": "/static/images/2016/05/paris/notre_dame/P1120567.jpg", "title": "One of the big rose windows. Rumour has it that an archbishop had the center face replaced with his own.\n", "msrc": "/static/images/2016/05/paris/notre_dame/thumbs/P1120567.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/notre_dame/P1120597.jpg", "title": "Rumoured relic made of the crown of thorns.\n", "msrc": "/static/images/2016/05/paris/notre_dame/thumbs/P1120597.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/notre_dame/P1120619.jpg", "title": "Flying buttreses\n", "msrc": "/static/images/2016/05/paris/notre_dame/thumbs/P1120619.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/notre_dame/P1120628.jpg", "title": "Some old instrument.\n", "msrc": "/static/images/2016/05/paris/notre_dame/thumbs/P1120628.jpg", "w": 1200, "h": 817}]</script> </div> <p>In the afternoon I went on a walking tour of Notre-Dame de Paris and Sainte-Chapelle on the Île de la Cité. Panda, the lady who lead the tour, from CityWonders, was knowledgeable and kept talking almost non stop for two hours, filling our heads with lots of historical information about how they were built and what happened there after that. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="" src="" style="display:block" width="100%" style="max-width:600px"/> <img title="" src="" style="display:block" width="100%" style="max-width:600px"/> <img title=" " src="" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/05/paris/sainte_chapelle/P1120669.jpg", "title": "", "msrc": "/static/images/2016/05/paris/sainte_chapelle/thumbs/P1120669.jpg", "w": 1800, "h": 2687}, {"src": "/static/images/2016/05/paris/sainte_chapelle/P1120671.jpg", "title": "", "msrc": "/static/images/2016/05/paris/sainte_chapelle/thumbs/P1120671.jpg", "w": 1800, "h": 1206}, {"src": "/static/images/2016/05/paris/sainte_chapelle/P1120657.jpg", "title": "\n", "msrc": "/static/images/2016/05/paris/sainte_chapelle/thumbs/P1120657.jpg", "w": 1800, "h": 1206}, {"src": "/static/images/2016/05/paris/sainte_chapelle/P1120675.jpg", "title": "\n", "msrc": "/static/images/2016/05/paris/sainte_chapelle/thumbs/P1120675.jpg", "w": 1800, "h": 1238}, {"src": "/static/images/2016/05/paris/sainte_chapelle/P1120688.jpg", "title": "The Palace of Justice.\n", "msrc": "/static/images/2016/05/paris/sainte_chapelle/thumbs/P1120688.jpg", "w": 1200, "h": 804}]</script> </div> <p>The shocking part for me was learning that most of Paris was actually destroyed and rebuild in the 1800's, on the order of Napoleon III. Before that it was actually a pretty bad place to live, with very narrow streets, bad sewer system, dark buildings and so on. For example, at some point there was a tax on windows, so builders started building fewer windows on new houses or boarding up some of the existing windows. You can still see some of the old design in the Latin quarter, which wasn't rebuilt. But for the naive guy in me, it was a big surprise to learn that actually Paris was not built from scratch as this beautiful city to be admired by all, but large parts of it are due to a cleanup done "recently". Well, I guess software is not the only thing that accumulates technical debt. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="Statue of the frequent traveller. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="Little boy riding a fish. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="Even bronze statues can pull a dorsal muscle. " src="" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/05/paris/statues/P1120188.jpg", "title": "Statue of the frequent traveller.\n", "msrc": "/static/images/2016/05/paris/statues/thumbs/P1120188.jpg", "w": 1200, "h": 2061}, {"src": "/static/images/2016/05/paris/statues/P1120159.jpg", "title": "Little boy riding a fish.\n", "msrc": "/static/images/2016/05/paris/statues/thumbs/P1120159.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/statues/P1120161.jpg", "title": "Even bronze statues can pull a dorsal muscle.\n", "msrc": "/static/images/2016/05/paris/statues/thumbs/P1120161.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/statues/P1120189.jpg", "title": "Statue of the chronically late. Maybe one of them says he is still on time.\n", "msrc": "/static/images/2016/05/paris/statues/thumbs/P1120189.jpg", "w": 1200, "h": 2089}, {"src": "/static/images/2016/05/paris/statues/P1120488.jpg", "title": "Statue of... angles?\n", "msrc": "/static/images/2016/05/paris/statues/thumbs/P1120488.jpg", "w": 1200, "h": 1568}]</script> </div> <p>The afternoon ended with a trip to get the best ice cream (from Bertheillon) and the best crêpe (from Avant Comptoir), with David, Alida's boyfriend. While they were excellent, my taste buds are not sufficiently advanced yet to be able to distinguish between these and other really good ones.</p> <div class="gallery clearfix" style="max-width:600px"> <img title="Light show from the inside. Not as fancy. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="Dreamy Champ de Mars. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="Pont d" iéna and palais de chaillot. ' src="" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/05/paris/eiffel/P1120770.jpg", "title": "Light show from the inside. Not as fancy. \n", "msrc": "/static/images/2016/05/paris/eiffel/thumbs/P1120770.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/eiffel/P1120715.jpg", "title": "Dreamy Champ de Mars.\n", "msrc": "/static/images/2016/05/paris/eiffel/thumbs/P1120715.jpg", "w": 1800, "h": 1206}, {"src": "/static/images/2016/05/paris/eiffel/P1120740.jpg", "title": "Pont d'I\u00e9na and Palais de Chaillot.\n", "msrc": "/static/images/2016/05/paris/eiffel/thumbs/P1120740.jpg", "w": 1800, "h": 969}, {"src": "/static/images/2016/05/paris/eiffel/P1120810.jpg", "title": "Up, up and away!\n", "msrc": "/static/images/2016/05/paris/eiffel/thumbs/P1120810.jpg", "w": 1800, "h": 1206}, {"src": "/static/images/2016/05/paris/eiffel/P1120817.jpg", "title": "Well, Star Trek tractor beams are real apparently. \n", "msrc": "/static/images/2016/05/paris/eiffel/thumbs/P1120817.jpg", "w": 1800, "h": 1206}, {"src": "/static/images/2016/05/paris/eiffel/P1120838.jpg", "title": "Paris from the summit. \n", "msrc": "/static/images/2016/05/paris/eiffel/thumbs/P1120838.jpg", "w": 1800, "h": 2687}, {"src": "/static/images/2016/05/paris/eiffel/P1120853.jpg", "title": "People walking around and casting long shadows.\n", "msrc": "/static/images/2016/05/paris/eiffel/thumbs/P1120853.jpg", "w": 1200, "h": 804}]</script> </div> <p>After a short nap, I went to the Eiffel tower. I had been at the base before, but now I wanted to go to the summit. I made a pretty stupid mistake. I had booked online tickets with a tour, which was supposed to start at 21:30, but I didn't read the whole page carefully, where it said that I had to be at the meeting point 20 minutes before that. So... I missed that. But, the queue for the stairs to climb up the tower was really short (less than 5 minutes), so in the end it wasn't that big of a problem. </p> <iframe width="420" height="315" src="" frameborder="0" allowfullscreen class="youtube"></iframe> <p>Climbing up the first two levels was fun, because this way I didn't miss going to the gym. The first level is 57 meters from the ground, while the second one is 115 meters away. It's a nice pleasant jog all the way there. But to get to the summit, you have to take the elevator, because there are no stairs, due to the strong winds. I was lucky to be on the stairs at precisely 22:00, when the light show starts, so I could see it from the inside. It looks completely different from up close than from outside at a distance. After a long wait to get to the top, where in the queue I met some people from Australia and from the Netherlands, I could finally enjoy Paris at night from 276 meters high. It looks great, but to be honest, the view from Empire State Building was better, and not just because that one is taller, but because there are more colorful things around you.</p> <div class="gallery clearfix" style="max-width:600px"> <img title="What" s that neat sign doing there among the graffitis? is he trying to escape? does he need help? ' src="" style="display:block" width="100%" style="max-width:600px"/> <img title="Dunno what it means, just seemed funny. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="I guess that" s one guaranteed way to stop people from going over the roundabouts. ' src="" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/05/paris/misc/P1120197.jpg", "title": "What's that neat sign doing there among the graffitis? Is he trying to escape? Does he need help?\n", "msrc": "/static/images/2016/05/paris/misc/thumbs/P1120197.jpg", "w": 1200, "h": 1714}, {"src": "/static/images/2016/05/paris/misc/P1120181.jpg", "title": "Dunno what it means, just seemed funny.\n", "msrc": "/static/images/2016/05/paris/misc/thumbs/P1120181.jpg", "w": 1200, "h": 872}, {"src": "/static/images/2016/05/paris/misc/P1120483.jpg", "title": "I guess that's one guaranteed way to stop people from going over the roundabouts.\n", "msrc": "/static/images/2016/05/paris/misc/thumbs/P1120483.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/misc/P1120533.jpg", "title": "Nice little garden on the Ile.\n", "msrc": "/static/images/2016/05/paris/misc/thumbs/P1120533.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/misc/P1120693.jpg", "title": "Rooster sold out the hen?\n", "msrc": "/static/images/2016/05/paris/misc/thumbs/P1120693.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/misc/P1120695.jpg", "title": "One of those old, narrow streets.\n", "msrc": "/static/images/2016/05/paris/misc/thumbs/P1120695.jpg", "w": 1200, "h": 1621}, {"src": "/static/images/2016/05/paris/misc/P1120701.jpg", "title": "Shakespeare is popular in France too!\n", "msrc": "/static/images/2016/05/paris/misc/thumbs/P1120701.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/misc/P1120702.jpg", "title": "Though he has more interesting texts here. \n", "msrc": "/static/images/2016/05/paris/misc/thumbs/P1120702.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/misc/P1120709.jpg", "title": "Queue to get Berthillon ice cream.\n", "msrc": "/static/images/2016/05/paris/misc/thumbs/P1120709.jpg", "w": 1200, "h": 804}]</script> </div> <p>On the last day, I started off with a breakfast at Ladurée, suggested by Paula. Thank you very much for the suggestion! It had the best scrambled eggs I've ever eaten. They melted in my mouth! And plenty of pastries and other goodies on top of that. Yummy. </p> <div class="gallery clearfix" style="max-width:600px"> <img title="What has been seen, cannot be unseen. " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="Arc de Triomphe du Carrousel (aka Mini Arc) " src="" style="display:block" width="100%" style="max-width:600px"/> <img title=" " src="" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/05/paris/louvre/P1120873.jpg", "title": "What has been seen, cannot be unseen.\n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1120873.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre/P1120858.jpg", "title": "Arc de Triomphe du Carrousel (aka Mini Arc)\n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1120858.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre/P1120860.jpg", "title": "\n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1120860.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre/P1130064.jpg", "title": "I guess the lesson is that too much reading makes one lose his head?\n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1130064.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre/P1130066.jpg", "title": "Ceiling painting. \n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1130066.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre/P1130072.jpg", "title": "<a href=>Make it so!</a>\n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1130072.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre/P1130080.jpg", "title": "You idiot, the trench was supposed to be over there!!!\n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1130080.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre/P1130119.jpg", "title": "Napoleon getting boot kisses.\n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1130119.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre/P1130134.jpg", "title": "The fake coronation of Napoleon. \n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1130134.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre/P1130137.jpg", "title": "Victory statue. There seems to be a pattern to these statues...\n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1130137.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre/P1130141.jpg", "title": "This one's ours! Ancient dac! And I have a hat like that!!!!\n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1130141.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre/P1130144.jpg", "title": "I guess lions are kitties too and like to play with balls. \n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1130144.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre/P1130172.jpg", "title": "Is it a weapon? Is it a duster? Why not both?\n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1130172.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre/P1130182.jpg", "title": "I never saw the similarities until now. \n", "msrc": "/static/images/2016/05/paris/louvre/thumbs/P1130182.jpg", "w": 1200, "h": 1792}]</script> </div> <p>Of course, I couldn't miss visiting the Louvre, for a couple of hours at least. It's huuuuuge, so the four hours I spent there covered only a small fraction of the entire museum. I enjoyed the most the ancient history part, with relics from Egypt (mummies and <del>bathtubs</del>sarcophaguses FTW), Mesopotamia, Assyria, Babylon and others. Another fun bit for me was seeing in person some of the paintings from <a href="">Classical Programmer Paintings</a>. Sorry, those paintings have been forever associated in my mind with programming from now on. XD</p> <div class="gallery clearfix" style="max-width:600px"> <img title="That" s what you get for trying to paw what's not yours! ' src="" style="display:block" width="100%" style="max-width:600px"/> <img title="&lt;a href=" https: watch?v="3JNLwlcPBPI"&gt;We" found dory!&lt; a&gt; " src="" style="display:block" width="100%" style="max-width:600px"/> <img title="And King Julien too! " src="" style="display:block" width="100%" style="max-width:600px"/> <script type="application/json">[{"src": "/static/images/2016/05/paris/louvre_old/P1120876.jpg", "title": "That's what you get for trying to paw what's not yours!\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120876.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre_old/P1120895.jpg", "title": "<a href=\"\">We found Dory!</a>\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120895.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre_old/P1120912.jpg", "title": "And King Julien too!\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120912.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre_old/P1120913.jpg", "title": "Gambling, as old as the pyramids. \n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120913.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre_old/P1120926.jpg", "title": "I wouldn't want to be locked in a golden coffin either. \n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120926.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre_old/P1120933.jpg", "title": "Instructions for little green men. \n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120933.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre_old/P1120935.jpg", "title": "Tell me how this is not a bathtub.\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120935.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre_old/P1120940.jpg", "title": "I fit right in!\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120940.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre_old/P1120941.jpg", "title": "Apparently ripped pants were fashionable back then too.\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120941.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre_old/P1120942.jpg", "title": "The faceless mummy.\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120942.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre_old/P1120947.jpg", "title": "Babylonian statue.\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120947.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre_old/P1120948.jpg", "title": "A centaur and his... dog?\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120948.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre_old/P1120961.jpg", "title": "Skipping goats. Because capturing movement in statues is not a modern thing.\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120961.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre_old/P1120965.jpg", "title": "Really cute little statues.\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120965.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre_old/P1120981.jpg", "title": "Lions guarding the gate. \n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120981.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre_old/P1120984.jpg", "title": "Babylonian archers.\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120984.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre_old/P1120987.jpg", "title": "Column capitals, to scale.\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120987.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre_old/P1120989.jpg", "title": "This looks like something you could buy in a modern trinket shop!\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1120989.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre_old/P1130021.jpg", "title": "The worlds first fill in the blanks drawing book.\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1130021.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre_old/P1130025.jpg", "title": "And people complain that my handwriting is ugly.\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1130025.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre_old/P1130029.jpg", "title": "\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1130029.jpg", "w": 1200, "h": 804}, {"src": "/static/images/2016/05/paris/louvre_old/P1130035.jpg", "title": "Lion, eagle, human combination.\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1130035.jpg", "w": 1200, "h": 1792}, {"src": "/static/images/2016/05/paris/louvre_old/P1130047.jpg", "title": "I guess \"Capra cu trei iezi\" (romanian children story about Goat with three kids) was familiar to Mesopotamians too.\n", "msrc": "/static/images/2016/05/paris/louvre_old/thumbs/P1130047.jpg", "w": 1200, "h": 1792}]</script> </div> <p>After another lunch with Alida, her boyfriend David, and her mom, it was time to finally head back home. The time in Paris was really nice and relaxing. I detached completely from work and I needed that. I still have a lot to see, so I hope to go there again one day.</p> Tue, 24 May 2016 20:38:00 GMT,2016-05-24:/2016/05/24/paris-revisited Hanz Zimmer Live on Tour <p><img alt="Hanz Zimmer Live on Tour" src="" width="100%" style="max-width:600px"/></p> <p>Hanz Zimmer, a composer for many movie soundtracks, has gone for the first time on a tour. He started off on the 6th of April in London and he will finish on the 16th of May in Sofia. And, more importantly for me, he was in Zurich on Monday. I had seen some billboards for the concert, but I never really considered going, until on Monday a colleague was selling his ticket because he was sick. So, I decided to buy it from him and go for the first time in my life to an orchestral concert.</p> <p><img alt="Color play on the scene" src="" width="100%" style="max-width:600px"/></p> <p>And it was tremendous fun. It was really great to hear the soundtracks of Sherlock Holmes, Pirates of the Caribbean, The Amazing Spiderman 2, The Dark Knight, Interstellar and Inception. These were the ones that I knew (and loved), but there were plenty of others too: The Lion King, Gladiator, Man of Steel, Madagascar and so on. </p> <p>The scores were slightly edited, to be a bit more heavy on the drums and electric guitars, and in my amateur opinion, too heavy on them. But I could still enjoy them. </p> <p><img alt="Great violonist" src="" width="100%" style="max-width:600px"/> </p> <p>Unfortunately, when introducing songs, he spoke in German. Luckily, not Züritüütsch (the local dialect), but High German, so if I payed a lot of attention, I could understand maybe 50%. From what I gathered, he gave a lot of tribute and thanked a lot of his colleagues. He also reminisced to how some of the movies scores were created. </p> <p><img alt="The whole cast lit up" src="" width="100%" style="max-width:600px"/></p> <p>I find it interesting how they played with light. During more quiet times, they used light to draw attention to only the players who were actually doing something, while the others shuffled around or came on stage. At some point they started flashing different colors very fast. I don't know how the singers managed to still sing properly. I had problems concentrating, and they had to read the notes and play them. I find it very interesting how these people have this drive to do these amazing things and I am interested to find out how could I maybe learn to do something similar.</p> <p>I enjoyed my first orchestral concert a lot and I hope I will go again soon. And I hope to get better seats next time. But I can't complain now for a last minute acquisition.</p> <p><img alt="The cast saying thanks" src="" width="100%" style="max-width:600px"/></p> <p>Grade: 8</p> Wed, 11 May 2016 23:46:00 GMT,2016-05-12:/2016/05/12/hanz-zimmer-live-on-tour