<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Notes on Notes</title>
    <link>https://www.simplicidade.org/index.xml</link>
    <description>Recent content in Notes on Notes</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>melo@simplicidade.org (Pedro Melo)</managingEditor>
    <webMaster>melo@simplicidade.org (Pedro Melo)</webMaster>
    <copyright>(c) 2016 Pedro Melo.</copyright>
    <lastBuildDate>Fri, 21 Apr 2017 10:08:42 +0100</lastBuildDate>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsuhhubbub.superfeedr.com/"/>
    
    <item>
      <title>Proxy software</title>
      <link>https://www.simplicidade.org/survival/proxy-software/</link>
      <pubDate>Fri, 21 Apr 2017 10:08:42 +0100</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/survival/proxy-software/</guid>
      <description>

&lt;p&gt;A small list of proxy software that I use, or that have crossed my radar.&lt;/p&gt;

&lt;h2 id=&#34;nginx&#34;&gt;nginx&lt;/h2&gt;

&lt;p&gt;A single stop solution for all your HTTP, HTTP/2, TCP proxy needs. This is my go-to software today, it covers 80% to 90% of my needs, in a single package with a common configuration language. Why run multiple services if a single one covers what you need&amp;hellip; Also, wicked fast. I really avoid going to others unless there is a clear need for it.&lt;/p&gt;

&lt;p&gt;The weakest point for &lt;a href=&#34;https://nginx.org&#34;&gt;nginx&lt;/a&gt; is that dynamic reconfiguration, specially of backend configurations, are only available with the paid version, &lt;a href=&#34;https://www.nginx.com/products/&#34;&gt;nginx Plus&lt;/a&gt;. But you can get a long way there with a small sidecar process that listens to service discovery updates, rewrites nginx configuration files, and asks nginx to reload them.&lt;/p&gt;

&lt;p&gt;nginx features that are rareley mentioned: you can upgrade the nginx version without downtime. I haven&amp;rsquo;t came across any other proxy software that does this. But admitelly I haven&amp;rsquo;t looked that hard either&amp;hellip;&lt;/p&gt;

&lt;p&gt;See also &lt;a href=&#34;http://tengine.taobao.org&#34;&gt;tengine&lt;/a&gt;, a nginx distribution originaly by &lt;a href=&#34;https://en.wikipedia.org/wiki/Taobao&#34;&gt;Taobao&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;haproxy&#34;&gt;haproxy&lt;/h2&gt;

&lt;p&gt;&lt;a href=&#34;https://www.haproxy.org&#34;&gt;haproxy&lt;/a&gt; is the grand daddy of reverse proxies. Very easy to setup, simpler than nginx. Has a nice built-in HTTP status interface.&lt;/p&gt;

&lt;p&gt;At the moment, nginx does everything that I need that haproxy has, and I don&amp;rsquo;t need the extras that haproxy has that nginx lacks. If I already have nginx running it makes little sense to add another service. But if I just need plain TCP reverse proxy, then I prefer haproxy. It boild down to reducing the number of services I have to have running.&lt;/p&gt;

&lt;h2 id=&#34;varnish&#34;&gt;Varnish&lt;/h2&gt;

&lt;p&gt;Another classic. If you have strong caching needs, &lt;a href=&#34;https://varnish-cache.org&#34;&gt;Varnish&lt;/a&gt; is the software to use.&lt;/p&gt;

&lt;p&gt;Used to be he most flexible software in terms of configuration due to the use of very complete request routing language, VCL. But recent releases of haproxy, with Lua support, and nginx (either with Lua support on the &lt;a href=&#34;https://openresty.org/en/&#34;&gt;OpenResty&lt;/a&gt; version, or the new &lt;a href=&#34;https://www.nginx.com/blog/launching-nginscript-and-looking-ahead/&#34;&gt;nginScript&lt;/a&gt;), you might have similar capabilities with the others.&lt;/p&gt;

&lt;h2 id=&#34;fabio&#34;&gt;Fabio&lt;/h2&gt;

&lt;p&gt;My current favorite to replace &lt;a href=&#34;https://nginx.org&#34;&gt;nginx&lt;/a&gt; (although see &lt;a href=&#34;https://traefik.io&#34;&gt;traeffik&lt;/a&gt; below&amp;hellip;): integration with &lt;a href=&#34;https://www.consul.io&#34;&gt;Consul&lt;/a&gt;, &lt;a href=&#34;https://www.vaultproject.io&#34;&gt;Vault&lt;/a&gt;, PROXY Protocol Support for easier integration with &lt;a href=&#34;https://aws.amazon.com/elasticloadbalancing/&#34;&gt;Amazon load-balancers&lt;/a&gt; and &lt;a href=&#34;https://www.haproxy.org&#34;&gt;haproxy&lt;/a&gt;, and traffic shapping for canary deployments.&lt;/p&gt;

&lt;p&gt;See the &lt;a href=&#34;https://github.com/fabiolb/fabio/wiki/Features&#34;&gt;full feature list&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;My only concern is that there is &lt;a href=&#34;https://github.com/fabiolb/fabio/pulse&#34;&gt;mainly one commiter&lt;/a&gt;. This is true of multiple software projects I use (&lt;a href=&#34;https://redis.io&#34;&gt;Redis&lt;/a&gt; comes to mind), but still, I tend to approach these situations with care.&lt;/p&gt;

&lt;h2 id=&#34;others&#34;&gt;Others&lt;/h2&gt;

&lt;p&gt;Other software projects to look at someday:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://traefik.io&#34;&gt;traeffik&lt;/a&gt;: I really need to look into this one, looks awesome!&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://gobetween.io&#34;&gt;gobetween&lt;/a&gt; (excellent name&amp;hellip;): a layer 4 reverse proxy, TCP, UDP and TCP with TLS. &lt;a href=&#34;https://www.consul.io&#34;&gt;Consul&lt;/a&gt; integration, and much more;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://linkerd.io&#34;&gt;linkerd&lt;/a&gt;: a &lt;a href=&#34;https://www.cncf.io&#34;&gt;CNF&lt;/a&gt; project, focused on creating a service mesh for micro-services integrations;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://getkong.org&#34;&gt;Kong&lt;/a&gt;: an API Gateway;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://caddyserver.com&#34;&gt;Caddy&lt;/a&gt;: HTTPS and HTTP/2 by default, with automatic integration with &lt;a href=&#34;https://letsencrypt.org&#34;&gt;Lets Encrypt&lt;/a&gt;. Configuration looks very simple;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/zalando/skipper&#34;&gt;skipper&lt;/a&gt;: flexible HTTP router, easy to add filters that modify requests and responses;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/cloudfoundry/gorouter&#34;&gt;gorouter&lt;/a&gt;: interesting use of &lt;a href=&#34;https://nats.io&#34;&gt;NATS&lt;/a&gt; to manage the routing table&amp;hellip;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/google/seesaw&#34;&gt;seesaw&lt;/a&gt;: un-official Google product, frontend to Linux kernel LVS, including support for Direct Server Return.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>New Mac</title>
      <link>https://www.simplicidade.org/notes/2017/03/30/new-mac/</link>
      <pubDate>Thu, 30 Mar 2017 22:37:08 +0000</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/notes/2017/03/30/new-mac/</guid>
      <description>&lt;p&gt;I got a new Mac at work a couple of weeks back and I&amp;rsquo;ve been slowly moving my life to it. It is the new Macbook Pro 13&amp;rdquo; with a 2.9GHz i5 and Touch Bar. The only upgrade I did was bumping the memory to 16GB.&lt;/p&gt;

&lt;p&gt;For comparison, my previous Mac was still a Late 2008 Macbook, fully upgraded with the unofficially supported 8GB and after market SSD (two in fact, replaced the DVD a year back with a second SSD). And yes, apart from the slowness (a 2.0GHz Core 2 Duo can take only so far these days&amp;hellip;) it is still a perfectly good Mac, and I still use it on occasion.&lt;/p&gt;

&lt;p&gt;The build quality on the new Mac is excellent with one exception. I don&amp;rsquo;t like the keyboard at all, it is too shallow for me. On the other hand, 99% of the time I use an external keyboard, so I can live with it. Still, I would trade a thicker laptop for a better keyboard. This is a &amp;ldquo;feeling&amp;rdquo;-thing. In actual use the keyboard is precise enough for my casual needs, I just don&amp;rsquo;t like shallow keyboards.&lt;/p&gt;

&lt;p&gt;The screen is wonderful, but don&amp;rsquo;t get to enjoy it much because I mostly use the Mac with non-retina external displays. Compared to the old Macbook the difference is striking.&lt;/p&gt;

&lt;p&gt;The SSD is wicked fast, it feels like magic, and I love having 8 hours of battery. This are actual real life number for my usage: text editors, Perl, a bit of Go, and a light Docker - heavy Docker cuts this to 5 to 6 hours.&lt;/p&gt;

&lt;p&gt;The Touch Bar is useless to me. Even when I&amp;rsquo;m using the laptop keyboard, there is very little that the Touch Bar provides that makes my life simpler or more productive. As productivity enhancer, I don&amp;rsquo;t have many needs for an analog input mechanism. The only thing analog that I use in there is the sound and brightness controls, and I&amp;rsquo;m perfectly happy with the keys for those on my external keyboard.&lt;/p&gt;

&lt;p&gt;I do really miss the Esc key&amp;hellip;&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve thought about of exchanging this one with the model without a Touch Bar, but that one is inferior in at least two ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;only has two USB-C ports: yes, this is relevant, see below;&lt;/li&gt;
&lt;li&gt;the CPU is 30% slower, and even with the upgrade you don&amp;rsquo;t reach the less expensive Touch Bar model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also remember reading that the internal Thunderbolt is half the capacity of the Touch Bar models, but I don&amp;rsquo;t have the reference at hand at the moment.&lt;/p&gt;

&lt;p&gt;So I&amp;rsquo;m keeping the four-port Touch Bar model.&lt;/p&gt;

&lt;p&gt;Regarding dongles, yes, they are unfortunate, but I like the fact that I now have a laptop with USB-C 3.1 and TB3. I can plug some really nice external devices with this, and I don&amp;rsquo;t mind this dongle iteration. Over the years I&amp;rsquo;ve owned and used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;serial DB9 mice, DIN-5 keyboards, and parallel port printers;&lt;/li&gt;
&lt;li&gt;DIN-6, PS/2 style, keyboards and mice;&lt;/li&gt;
&lt;li&gt;USB-A, USB-B, and all the mini and micro variants;&lt;/li&gt;
&lt;li&gt;SCSI-I, -II cables;&lt;/li&gt;
&lt;li&gt;Firewire 400 and Firewire 800;&lt;/li&gt;
&lt;li&gt;VGA, DVI, HDMI, and too many display port variants.
&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I&amp;rsquo;m not naive enough to believe that this will be the last interface type, but I&amp;rsquo;m hopeful that it lasts as long as USB-A did. If he can do that, at the physical connector level, I&amp;rsquo;ll be happy enough.&lt;/p&gt;

&lt;p&gt;I mentioned above that I needed more than 2 ports. This is true. I currently have the following adapters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a Multi-AV VGA adapter from Apple: VGA and one USB-A, plus power passthrough - this is a decent mini-docking station for the office;&lt;/li&gt;
&lt;li&gt;a Gigabit ethernet adapter from Belkin: due to my work, a physical network connection is a requirement;&lt;/li&gt;
&lt;li&gt;a external SSD USB-C 3.1 Gen2 enclosure: really really fast - and the best way to keep a set of large git repos and build tools between two computers - the speed is very good over USB 3.1 Gen2;&lt;/li&gt;
&lt;li&gt;a Apple USB-C to USB-C connector: this one works, there are a lot of really bad dongles out there.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I need at least three ports at the office, I can live with two during the weekend but I can&amp;rsquo;t connect to the external display at home. I might need to buy another AV connector there, but I&amp;rsquo;m looking into other options.&lt;/p&gt;

&lt;p&gt;My hope is to see a decent 27&amp;rdquo; or 30&amp;rdquo; display, TB3, with two USB-A, a ethernet port, and hopefully one or two USB-C or TB3 ports. That would be the perfect docking station for me. The idiotic LG 5K is a TB3 monitor but has no extra ports!&lt;/p&gt;

&lt;p&gt;One final warning: I bought a USB-C =&amp;gt; 3x USB-A + Ethernet adapter at a local retailer (identical to &lt;a href=&#34;https://www.amazon.co.uk/Gigabit-Ethernet-Adapter-MacBook-Devices/dp/B00WFQPTLM/ref=sr_1_5?s=computers&amp;amp;amp;ie=UTF8&amp;amp;amp;qid=1490913269&amp;amp;amp;sr=1-5&amp;amp;amp;keywords=usb-c+usb-a+ethernet+adapter&#34;&gt;this one&lt;/a&gt; but from another brand). This is a low-quality dongle. The USB-A and Ethernet ports work fine, but the moment you plug it in, the Wifi connection dies. This is most likely related to poor shielding somewhere.&lt;/p&gt;

&lt;p&gt;In terms of build to order upgrades, I would recommend that you at the very least max out the RAM: you won&amp;rsquo;t be able to do it later, and a Mac with 16GB of RAM will last a couple of years more. If you do any type of virtualisation or Docker, you will see a big difference.&lt;/p&gt;

&lt;p&gt;After the memory, it depends. I don&amp;rsquo;t value CPU power that much, the i5 I have is more than enough, but others might. I think my second upgrade would be bumping the SSD to 512GB if you have big iTunes libraries like me.&lt;/p&gt;

&lt;p&gt;Now the big question: would I buy the new Macbook Pro again, or would I go back to the previous generation without USB-C ports? I think this is easy to answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;if you are a true road warrior, moving from place to place, and with a myriad of connectivity scenarios, you will probably be better served with the previous model, without USB-C - you will save a lot on dongles to cary around and loose. I might change my mind if a small USB-C dock, with video (VGA + HDMI), USB and ethernet shows up soon;&lt;/li&gt;
&lt;li&gt;if not, if you are mostly stuck to a desk or move between one or two places, I recommend the new one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We&amp;rsquo;ll talk again in 8 years.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>User interaction is not allowed</title>
      <link>https://www.simplicidade.org/notes/2017/03/24/user-interaction-is-not-allowed/</link>
      <pubDate>Fri, 24 Mar 2017 18:23:03 +0000</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/notes/2017/03/24/user-interaction-is-not-allowed/</guid>
      <description>&lt;p&gt;This errors happened to me sometime ago, but today I saw it again on a coworker Mac.&lt;/p&gt;

&lt;p&gt;You&amp;rsquo;ll get the error on the Terminal, with commands that want to use MacOS Keychain passwords. I&amp;rsquo;m sure there is another element at work here, but I could not find it.&lt;/p&gt;

&lt;p&gt;In this case, the error on &lt;code&gt;docker login&lt;/code&gt; was this (you&amp;rsquo;ll get a similar error with &lt;code&gt;git fetch&lt;/code&gt; or &lt;code&gt;git pull&lt;/code&gt;):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Error saving credentials: error storing credentials - err: exit status 1, out: `User interaction is not allowed`
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The command line tool is trying to access a Keychain Item, and this item is protected to only be used by some applications. On normal conditions, this would trigger a graphical pop-up asking for permission for this new application to access said item, but in this case he fails to launch the pop-up and therefore, rejects the action.&lt;/p&gt;

&lt;p&gt;To fix, open the Keychain Access application, search for the domain you were trying to access (in the case of &lt;code&gt;docker login&lt;/code&gt; it would be the private registry address, or &lt;code&gt;hub.docker.com&lt;/code&gt;), edit the entry, select the tab &amp;ldquo;Access Control&amp;rdquo;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://www.simplicidade.org/img/user_interaction_not_allowed_screenshot_1.png&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;

&lt;p&gt;You can then add permission to the application you need by taping the &amp;ldquo;+&amp;rdquo; button on the lower left, and picking the correct file, but I don&amp;rsquo;t have a easy way to discover what is the correct file to add. If the problem is &lt;code&gt;docker login&lt;/code&gt; you could first try to add the command &lt;code&gt;/Applications/Docker.app/Contents/Resources/bin/docker-credential-osxkeychain.bin&lt;/code&gt;. For &lt;code&gt;git pull&lt;/code&gt; or &lt;code&gt;git fetch&lt;/code&gt; issues, try to add &lt;code&gt;/Library/Developer/CommandLineTools/usr/libexec/git-core/git-credential-osxkeychain&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you don&amp;rsquo;t know which command line application is the culprit, you can just disable access control for this password item by making sure that the &amp;ldquo;Allow all applications to access this item&amp;rdquo; option is selected and &amp;ldquo;Save Changes&amp;rdquo;.&lt;/p&gt;

&lt;p&gt;You should try to find the correct application if possible, but the second options will work. No security, but it would work.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Question mark dock icons</title>
      <link>https://www.simplicidade.org/notes/2017/03/17/question-mark-dock-icons/</link>
      <pubDate>Fri, 17 Mar 2017 08:55:02 +0000</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/notes/2017/03/17/question-mark-dock-icons/</guid>
      <description>&lt;p&gt;On my new Mac (more on that later), I&amp;rsquo;ve noticed that some apps (in my case Slack and Mattermost) would revert to big gray question mark icons when I restarted them.&lt;/p&gt;

&lt;p&gt;The key piece of information that set me on the right path was  &lt;a href=&#34;https://forums.vandyke.com/showthread.php?t=12513#post46546&#34;&gt;a comment &lt;/a&gt; on the Vandyke support forum.&lt;/p&gt;

&lt;p&gt;While that solution worked for me, it seemed a bit too geeky. When you copied the app from the DMG or Download folder into Applications, Finder should have taken care of this for you.&lt;/p&gt;

&lt;p&gt;My simpler solution: quit the application, drag it out of the Applications folder (to the desktop or another place, not important), and then copy it back to Applications.&lt;/p&gt;

&lt;p&gt;This worked for me.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>brew info</title>
      <link>https://www.simplicidade.org/notes/2017/03/17/brew-info/</link>
      <pubDate>Fri, 17 Mar 2017 08:40:15 +0000</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/notes/2017/03/17/brew-info/</guid>
      <description>&lt;p&gt;Small, quick, tip: before installing the latest wow app with &lt;code&gt;brew install wow-app&lt;/code&gt;, take a minute to scan &lt;code&gt;brew info wow-app&lt;/code&gt; in a separate terminal.&lt;/p&gt;

&lt;p&gt;Two main reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;some of the time, it will tell you that you have a lot of options to enable or disable some features. You might need some of them, and usually this requires a new compilation;&lt;/li&gt;
&lt;li&gt;most of the time this includes what next steps are required of you to properly configure, and you can read them while the app installs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Either way, this will save you some time, and you might learn something new.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Where to eat: Figueira da Foz edition</title>
      <link>https://www.simplicidade.org/notes/2016/09/22/where-to-eat-figueira-da-foz-edition/</link>
      <pubDate>Thu, 22 Sep 2016 00:36:51 +0100</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/notes/2016/09/22/where-to-eat-figueira-da-foz-edition/</guid>
      <description>&lt;p&gt;A friend asked for good places to eat around Figueira da Foz, where I live.&lt;/p&gt;

&lt;p&gt;He was not the first, it is a common request, so I wrote a page with some of the places I go to on a regular basis.&lt;/p&gt;

&lt;p&gt;So enjoy, &lt;a href=&#34;https://www.simplicidade.org/eat/figueira_da_foz/&#34;&gt;Eating in Figueira da Foz&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Figueira da Foz</title>
      <link>https://www.simplicidade.org/eat/figueira_da_foz/</link>
      <pubDate>Fri, 02 Sep 2016 00:07:57 +0100</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/eat/figueira_da_foz/</guid>
      <description>

&lt;p&gt;Places where I like to eat, around Figueira da Foz.&lt;/p&gt;

&lt;p&gt;Jump to: &lt;a href=&#34;#ice-cream&#34;&gt;ice cream&lt;/a&gt;, &lt;a href=&#34;#restaurants&#34;&gt;restaurants&lt;/a&gt;, &lt;a href=&#34;#burgers&#34;&gt;burgers&lt;/a&gt;, &lt;a href=&#34;#italian&#34;&gt;italian&lt;/a&gt;, &lt;a href=&#34;#at-the-beach&#34;&gt;at the beach&lt;/a&gt; and &lt;a href=&#34;#other-places&#34;&gt;other places&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;ice-cream&#34;&gt;Ice cream&lt;/h2&gt;

&lt;p&gt;You cannot visit Figueira without trying the Emanha ice creams&amp;hellip;&lt;/p&gt;

&lt;h3 id=&#34;emanha&#34;&gt;Emanha&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.emanha.com/&#34;&gt;Emanha&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/EmanhaGeladarias/about/&#34;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.yelp.com/biz/emanha-figueira-da-foz&#34;&gt;Yelp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/@40.1546783,-8.8672197,3a,75y,125.29h,85.39t/data=!3m6!1e1!3m4!1st9A4e8VZELOp37hhbGmuog!2e0!7i13312!8i6656&#34;&gt;Street view&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;map-container&#34; data-lat=&#34;40.154523&#34; data-long=&#34;-8.867130&#34;&gt;&lt;/div&gt;

&lt;p&gt;They have another location, &lt;a href=&#34;https://www.yelp.com/biz/emanha-2-figueira-da-foz&#34;&gt;Emanha 2&lt;/a&gt;, but this one above is my favorite.&lt;/p&gt;

&lt;h2 id=&#34;restaurants&#34;&gt;Restaurants&lt;/h2&gt;

&lt;h3 id=&#34;tapas-bar&#34;&gt;Tapas Bar&lt;/h3&gt;

&lt;p&gt;At the marina. You should reserve a table, it is usually full.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For reservations, call &lt;a href=&#34;tel:00351233428090&#34;&gt;233 428 090&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/pages/Tapas-Bar/193285720712606&#34;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/@40.1475082,-8.8633308,3a,75y,79.86h,78.36t/data=!3m6!1e1!3m4!1s7n_YdUGFwtsepx6uWoW4Ug!2e0!7i13312!8i6656&#34;&gt;Street view&lt;/a&gt;: it is on the same building as the Clube Nautico building. There is a underground parking on the other side of the stree (look behind you)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;map-container&#34; data-lat=&#34;40.147545&#34; data-long=&#34;-8.862981&#34;&gt;&lt;/div&gt;

&lt;h3 id=&#34;pata-negra&#34;&gt;Pata Negra&lt;/h3&gt;

&lt;p&gt;Near the Town Market, very friendly, very good.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/patanegrafigfoz/about/&#34;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/place/40%C2%B009&#39;01.9%22N+8%C2%B051&#39;49.8%22W/@40.1484025,-8.8620917,3a,75y,351.2h,85.68t/data=!3m7!1e1!3m5!1sToLCpLJI5uINW94KnP2l_w!2e0!6s%2F%2Fgeo3.ggpht.com%2Fcbk%3Fpanoid%3DToLCpLJI5uINW94KnP2l_w%26output%3Dthumbnail%26cb_client%3Dmaps_sv.tactile.gps%26thumb%3D2%26w%3D203%26h%3D100%26yaw%3D72.418129%26pitch%3D0!7i13312!8i6656!4m5!3m4!1s0x0:0x0!8m2!3d40.150518!4d-8.863839&#34;&gt;Street view&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;map-container&#34; data-lat=&#34;40.148437&#34; data-long=&#34;-8.862027&#34;&gt;&lt;/div&gt;

&lt;h3 id=&#34;o-búzio&#34;&gt;O Búzio&lt;/h3&gt;

&lt;p&gt;A most excellent &amp;ldquo;Cozido à Portuguesa&amp;rdquo; on Sundays, don&amp;rsquo;t miss it. Before 13h you&amp;rsquo;ll be fine. After that, you should reserve.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/Restaurante-B%C3%BAzio-336125376530529/&#34;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/@40.1512447,-8.8627821,3a,75y,194.84h,78.03t/data=!3m6!1e1!3m4!1sl36zGND9VZEG-pgikY1SJA!2e0!7i13312!8i6656&#34;&gt;Street view&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;map-container&#34; data-lat=&#34;40.151040&#34; data-long=&#34;-8.862533&#34;&gt;&lt;/div&gt;

&lt;h3 id=&#34;o-abrigo-da-montanha&#34;&gt;O Abrigo da Montanha&lt;/h3&gt;

&lt;p&gt;The most excellent view of Figueira. Even if you don&amp;rsquo;t have time to eat there, at least visit.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/abrigodamontanhaff/about/&#34;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/place/Abrigo+da+Montanha/@40.1879751,-8.8987007,17z/data=!4m5!3m4!1s0xd2236eba150a8b9:0x28010d4c67d0fe59!8m2!3d40.187856!4d-8.898625&#34;&gt;Google place&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/@40.1879751,-8.8987007,3a,75y,235.11h,85.63t/data=!3m6!1e1!3m4!1sHOwBqeNR6_JpwQt4r54y3w!2e0!7i13312!8i6656!6m1!1e1&#34;&gt;Street view&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;map-container&#34; data-lat=&#34;40.187873&#34; data-long=&#34;-8.898577&#34;&gt;&lt;/div&gt;

&lt;p&gt;Bonus tip: if you are there, follow the road until &lt;a href=&#34;https://www.google.com/maps/place/40%C2%B012&#39;08.6%22N+8%C2%B052&#39;46.9%22W/@40.2023828,-8.8796531,3a,75y,327.23h,91.15t/data=!3m7!1e1!3m5!1sUYVOLsxTn3EzryblX7v5Mw!2e0!6s%2F%2Fgeo1.ggpht.com%2Fcbk%3Fpanoid%3DUYVOLsxTn3EzryblX7v5Mw%26output%3Dthumbnail%26cb_client%3Dmaps_sv.tactile.gps%26thumb%3D2%26w%3D203%26h%3D100%26yaw%3D66.081757%26pitch%3D0!7i13312!8i6656!4m5!3m4!1s0x0:0x0!8m2!3d40.202374!4d-8.879687&#34;&gt;Bandeira&lt;/a&gt;. Not only you&amp;rsquo;ll pass through the oldest trees in the Serra da Boa Viagem, but you&amp;rsquo;ll get to an excellent place to see everything on the other side of the Serra, to the north.&lt;/p&gt;

&lt;h3 id=&#34;a-muralha&#34;&gt;A Muralha&lt;/h3&gt;

&lt;p&gt;A small place, very good grilled meats. Good view of Figueira&amp;rsquo;s main beach.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/A-Muralha-273979099446954/about/&#34;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/@40.1644944,-8.8786657,3a,75y,287.41h,68.48t/data=!3m6!1e1!3m4!1sGxEAogZ7k_8Q3L5cqgQSmQ!2e0!7i13312!8i6656&#34;&gt;Street view&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;map-container&#34; data-lat=&#34;40.164502&#34; data-long=&#34;-8.878723&#34;&gt;&lt;/div&gt;

&lt;h3 id=&#34;that-place-in-gala-the-tasco&#34;&gt;That place in Gala, the Tasco.. :)&lt;/h3&gt;

&lt;p&gt;I&amp;rsquo;ll update this as soon as I remember the name of the place :)&lt;/p&gt;

&lt;h3 id=&#34;olaias&#34;&gt;Olaias&lt;/h3&gt;

&lt;p&gt;Nice place, I really enjoy the view into the Abadias gardens.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/Olaias-Restaurante-caffe-160027417416573/about/&#34;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/@40.1529033,-8.8605233,3a,75y,8.15h,81.38t/data=!3m6!1e1!3m4!1sMKF8dlDstO8TS76IJWJlDw!2e0!7i13312!8i6656&#34;&gt;Street view&lt;/a&gt;: the restaurant is inside this building, on the ground floor&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;map-container&#34; data-lat=&#34;40.152876&#34; data-long=&#34;-8.860469&#34;&gt;&lt;/div&gt;

&lt;h3 id=&#34;casa-dos-suecos&#34;&gt;Casa dos Suecos&lt;/h3&gt;

&lt;p&gt;A bit on the expensive side, but very good.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.casadossuecos.com/&#34;&gt;Casa dos Suecos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/casadossuecos/about/&#34;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/@40.1577527,-8.8633499,3a,75y,346.99h,97.15t/data=!3m6!1e1!3m4!1sCOHakRtJw8lXuy778VXLOA!2e0!7i13312!8i6656&#34;&gt;Street view&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;map-container&#34; data-lat=&#34;40.157786&#34; data-long=&#34;-8.863373&#34;&gt;&lt;/div&gt;

&lt;h3 id=&#34;paquete&#34;&gt;Paquete&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.restaurante-paquete.com/&#34; title=&#34;Restaurante Paquete | Figueira da Foz&#34;&gt;Restaurante Paquete&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/restaurantepaquete/about/&#34;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/place/Restaurante+Paquete/@40.155852,-8.8689246,17.85z/data=!4m13!1m7!3m6!1s0x0:0x0!2zNDDCsDA4JzU2LjUiTiA4wrA1MSczMC45Ilc!3b1!8m2!3d40.149024!4d-8.858591!3m4!1s0x0:0x6164239bf6e21846!8m2!3d40.1568598!4d-8.8682943&#34;&gt;Google place&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/place/Restaurante+Paquete/@40.1566508,-8.8679968,3a,75y,61.47h,87.42t/data=!3m7!1e1!3m5!1s5CRsgTvXVFcKolClDgjXtQ!2e0!6s%2F%2Fgeo2.ggpht.com%2Fcbk%3Fpanoid%3D5CRsgTvXVFcKolClDgjXtQ%26output%3Dthumbnail%26cb_client%3Dmaps_sv.tactile.gps%26thumb%3D2%26w%3D203%26h%3D100%26yaw%3D11.655198%26pitch%3D0!7i13312!8i6656!4m13!1m7!3m6!1s0x0:0x0!2zNDDCsDA4JzU2LjUiTiA4wrA1MSczMC45Ilc!3b1!8m2!3d40.149024!4d-8.858591!3m4!1s0x0:0x6164239bf6e21846!8m2!3d40.1568598!4d-8.8682943!6m1!1e1&#34;&gt;Street view&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;map-container&#34; data-lat=&#34;40.156662&#34; data-long=&#34;-8.868006&#34;&gt;&lt;/div&gt;

&lt;h2 id=&#34;burgers&#34;&gt;Burgers&lt;/h2&gt;

&lt;p&gt;Figueira has a couple of very decent burger places.&lt;/p&gt;

&lt;h3 id=&#34;praça-18&#34;&gt;Praça 18&lt;/h3&gt;

&lt;p&gt;Located in the center of the town, near the river.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/praca18/about/&#34;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.yelp.pt/biz/pra%C3%A7a-18-figueira-da-foz&#34;&gt;Yelp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.omelhorblogdomundo.pt/roteiro-foodie-praca-18-97692&#34;&gt;Roteiro Foodie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/@40.1495972,-8.8582188,3a,75y,278.12h,79.6t/data=!3m6!1e1!3m4!1s2f-A2ylZkbAOUHRkV0FQ1w!2e0!7i13312!8i6656!6m1!1e1&#34;&gt;Street view&lt;/a&gt;: old image, it is in the blue building&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;map-container&#34; data-lat=&#34;40.150518&#34; data-long=&#34;-8.863839&#34;&gt;&lt;/div&gt;

&lt;h3 id=&#34;caravela-burger-bar&#34;&gt;Caravela Burger Bar&lt;/h3&gt;

&lt;p&gt;Near the casino.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/Caravela-1485534898409217&#34;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.yelp.com/biz/caravela-burger-bar-figueira-da-foz&#34;&gt;Yelp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/@40.1504282,-8.8638735,3a,75y,334.08h,83.27t/data=!3m6!1e1!3m4!1sAdlVoQMWETrIttLiXh_AqQ!2e0!7i13312!8i6656!6m1!1e1&#34;&gt;Street view&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;map-container&#34; data-lat=&#34;40.150518&#34; data-long=&#34;-8.863839&#34;&gt;&lt;/div&gt;

&lt;h2 id=&#34;italian&#34;&gt;Italian&lt;/h2&gt;

&lt;h3 id=&#34;pizzeria-claudio&#34;&gt;Pizzeria Claudio&lt;/h3&gt;

&lt;p&gt;The best pizzas around here.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/Pizzeria-Claudio-122579367817156/about/&#34;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.yelp.com/biz/pizzeria-claudio-figueira-da-foz&#34;&gt;Yelp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/place/Pizzeria+Cl%C3%A1udio/@40.1492411,-8.8606444,17z/data=!3m1!4b1!4m5!3m4!1s0xd223794b117659b:0xbef1ec81f63ed9c5!8m2!3d40.1492411!4d-8.8584557&#34;&gt;Google place&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/@40.149038,-8.8586081,3a,75y,326.58h,84.11t/data=!3m6!1e1!3m4!1sTfh3nDlEmhNneHKRdLWymQ!2e0!7i13312!8i6656!6m1!1e1&#34;&gt;Street view&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;map-container&#34; data-lat=&#34;40.149024&#34; data-long=&#34;-8.858591&#34;&gt;&lt;/div&gt;

&lt;h2 id=&#34;at-the-beach&#34;&gt;At the beach&lt;/h2&gt;

&lt;h3 id=&#34;dins-bar&#34;&gt;Dins Bar&lt;/h3&gt;

&lt;p&gt;Fast food, lots of it, gorgeous place. You can&amp;rsquo;t see the waves from the place, but it has a huge stretch of sand in front of you. Try the big jar of natural orange juice, very economic.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.facebook.com/Dinsbardepraia/&#34;&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/@40.1641177,-8.8756303,3a,75y,182.76h,83.04t/data=!3m6!1e1!3m4!1sJduEBGkMSoyXRPBKrrO-BQ!2e0!7i13312!8i6656&#34;&gt;Street view&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;map-container&#34; data-lat=&#34;40.163976&#34; data-long=&#34;-8.875384&#34;&gt;&lt;/div&gt;

&lt;h2 id=&#34;other-places&#34;&gt;Other places&lt;/h2&gt;

&lt;p&gt;Places that I want to visit. They seem nice, but I never went there.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.yelp.com/biz/casa-havanesa-figueira-da-foz-2&#34;&gt;Casa Havanesa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/place/40%C2%B012&#39;08.6%22N+8%C2%B052&#39;46.9%22W/@40.1765143,-8.8982318,3a,75y,25.94h,90.9t/data=!3m7!1e1!3m5!1s61-3mysgCRqOcQv8ucb5MA!2e0!6s%2F%2Fgeo1.ggpht.com%2Fcbk%3Fpanoid%3D61-3mysgCRqOcQv8ucb5MA%26output%3Dthumbnail%26cb_client%3Dmaps_sv.tactile.gps%26thumb%3D2%26w%3D203%26h%3D100%26yaw%3D23.61483%26pitch%3D0!7i13312!8i6656!4m5!3m4!1s0x0:0x0!8m2!3d40.202374!4d-8.879687&#34;&gt;Teimoso&lt;/a&gt;: a Figueira classic, but I never been there&amp;hellip; (&lt;a href=&#34;http://teimoso.com/&#34;&gt;Restaurante Teimoso&lt;/a&gt;, &lt;a href=&#34;https://www.facebook.com/teimosinho/&#34;&gt;Facebook&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps/@40.166612,-8.8828072,3a,75y,24.21h,81.06t/data=!3m6!1e1!3m4!1sfuGKA6mg_apS5VAQbKpZvw!2e0!7i13312!8i6656&#34;&gt;Rosa Amelia&lt;/a&gt;: probably the best place to eat sea food around here. Note that it is no longer inside Forte St Catarina, it moved to Tamargueira Hotel (&lt;a href=&#34;https://www.facebook.com/Restaurante-Marisqueira-Rosa-Am%C3%A9lia-Lda-1553855264902767/&#34;&gt;Facebook&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Places to eat</title>
      <link>https://www.simplicidade.org/eat/</link>
      <pubDate>Fri, 02 Sep 2016 00:07:48 +0100</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/eat/</guid>
      <description>&lt;p&gt;Some of my favorite places to eat.&lt;/p&gt;

&lt;p&gt;This is a recent experiment, and it has very little information for
now. Figueira da Foz is the most complete place, being the place
where I live.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.simplicidade.org/eat/figueira_da_foz/&#34;&gt;Figueira da Foz&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Porto: soon&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Go</title>
      <link>https://www.simplicidade.org/survival/go/</link>
      <pubDate>Sat, 27 Aug 2016 09:24:25 +0100</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/survival/go/</guid>
      <description>

&lt;p&gt;Go is currently my favorite compiled language.&lt;/p&gt;

&lt;h2 id=&#34;build-tools&#34;&gt;Build tools&lt;/h2&gt;

&lt;p&gt;The &amp;ldquo;go&amp;rdquo; command is the default build tools, but there are alternatives out there.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://getgb.io/&#34;&gt;gb&lt;/a&gt;: project based, focused on assuring reproducible builds. See &lt;a href=&#34;https://getgb.io/theory/&#34;&gt;theory of gb operation&lt;/a&gt; for all the dirty details. &lt;code&gt;GOPATH&lt;/code&gt; backwards compatible.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;libraries&#34;&gt;Libraries&lt;/h2&gt;

&lt;p&gt;Libraries that I use.&lt;/p&gt;

&lt;h3 id=&#34;cli-and-configuration&#34;&gt;CLI and Configuration&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/spf13/viper&#34;&gt;Viper&lt;/a&gt;: a complete configuration solution for go applications including 12 factor apps. It is designed to work within an application, and can handle all types of configuration needs and formats.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;network-protocols&#34;&gt;Network protocols&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://talks.rodaine.com/gosf-ssh/present.slide#1&#34;&gt;SSH&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/siddontang/go-mysql&#34;&gt;go-mysql&lt;/a&gt;: a toolkit for all things MySQL protocol - allows you to write a MySQL &amp;ldquo;Slave&amp;rdquo; that you could tailor to your needs, to send in real-time changes to the DB to other systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;servers&#34;&gt;Servers&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/fvbock/endless&#34;&gt;endless&lt;/a&gt;: Zero downtime restarts for go servers (Drop in replacement for http.ListenAndServe)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;other-resources&#34;&gt;Other resources&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://awesome-go.com&#34;&gt;Awesome Go&lt;/a&gt;: A curated list of awesome Go frameworks, libraries and software;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>iOS (null) Applications</title>
      <link>https://www.simplicidade.org/notes/2016/08/27/ios-null-applications/</link>
      <pubDate>Sat, 27 Aug 2016 07:21:48 +0100</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/notes/2016/08/27/ios-null-applications/</guid>
      <description>&lt;p&gt;Over the past weeks, I wasn&amp;rsquo;t able to complete any of my iPhone backups, and without a backup (actually two, iCloud and iTunes, just because) I didn&amp;rsquo;t want to upgrade to the latest iOS. Last night I decided to investigate why.&lt;/p&gt;

&lt;p&gt;The Console.app error I got was this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;26/8/16 10:28:09.285 PM AppleMobileBackup[42056]: ERROR: Backup message response:
     101 Unable to open domain directory: No such file or directory (2) at path
     &amp;quot;/var/mobile/Containers/Shared/AppGroup/453DA9D8-45A4-4B88-9D43-57A5772B6C57&amp;quot;
     (MBErrorDomain/101)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Not very useful. I guessed that if I could find which app it was, I could delete it, but googling for &lt;code&gt;453DA9D8-45A4-4B88-9D43-57A5772B6C57&lt;/code&gt; or parts of it didn&amp;rsquo;t give me any hints.&lt;/p&gt;

&lt;p&gt;Eventually, while browsing &lt;em&gt;Definitions &amp;gt; General &amp;gt; Storage and iCloud Usage &amp;gt; Manage Storage&lt;/em&gt; I found a application without an icon:&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://www.simplicidade.org/img/ios_null_applications/ios_null_app.png&#34; alt=&#34;My (null) application, lots of useful information...&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Selecting it I was able to see just two things: the version and the size, nothing more.&lt;/p&gt;

&lt;p&gt;I searched a bit about these &lt;em&gt;(null)&lt;/em&gt; applications and there are a lot of tips and tricks to delete them. In my case, deleting it by long-press and using the small &lt;em&gt;x&lt;/em&gt; didn&amp;rsquo;t work, neither going to the &lt;em&gt;Manage Storage&lt;/em&gt; section of the definitions and deleting it from there.&lt;/p&gt;

&lt;p&gt;The other solution was finding out what the application was, using the size as a guide, and installing it again.&lt;/p&gt;

&lt;p&gt;It turns out that there is a simple way of figuring out which application it is based on size. I opened iTunes, and inspected the iPhone apps, sorted by size, and it was very simple to identify it:&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://www.simplicidade.org/img/ios_null_applications/itunes_by_size.png&#34; alt=&#34;Jackpot!&#34; /&gt;&lt;/p&gt;

&lt;p&gt;I was now pretty sure that this was the application that got stuck. Unfortunately, re-installing it did not solve the issue, the application was now stuck on installation, and removing it was still impossible.&lt;/p&gt;

&lt;p&gt;I decided to use iTunes to try and do it. I clicked the &lt;em&gt;Remove&lt;/em&gt; button in the image above, and sync&amp;rsquo;ed my iPhone. This worked, and the application was removed.&lt;/p&gt;

&lt;p&gt;With this application out of the way, I was able to complete my iPhone backups and upgrade to the latest iOS.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Cassandra</title>
      <link>https://www.simplicidade.org/topics/cassandra/</link>
      <pubDate>Fri, 19 Aug 2016 11:58:59 +0100</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/topics/cassandra/</guid>
      <description>

&lt;p&gt;&lt;a href=&#34;https://cassandra.apache.org/&#34;&gt;Cassandra&lt;/a&gt; is the NoSQL database that I most want to learn using&amp;hellip;&lt;/p&gt;

&lt;h2 id=&#34;data-modelling&#34;&gt;Data Modelling&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://academy.datastax.com/courses/ds220-data-modeling&#34;&gt;DS220: Data Modeling course&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.hakkalabs.co/articles/cassandra-data-modeling-guide&#34;&gt;An Advanced Cassandra Data Modeling Guide&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Web Application Architecture</title>
      <link>https://www.simplicidade.org/topics/webapp_architecture/</link>
      <pubDate>Fri, 19 Aug 2016 11:10:53 +0100</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/topics/webapp_architecture/</guid>
      <description>

&lt;p&gt;My focus is not as a JavaScript developer, so I don&amp;rsquo;t track the ecosystem closely. At the same time, I do need to write and maintain Web applications. The following architecture and tools are the current best-of-breed for me.&lt;/p&gt;

&lt;p&gt;TL;DR version - I picked these tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React + JSX for views;&lt;/li&gt;
&lt;li&gt;Backbone for model;&lt;/li&gt;
&lt;li&gt;Redux for glue;&lt;/li&gt;
&lt;li&gt;react-router plus react-router-redux for routing;&lt;/li&gt;
&lt;li&gt;npm for dependencies;&lt;/li&gt;
&lt;li&gt;webpack for packaging and bundling;&lt;/li&gt;
&lt;li&gt;node for application server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I specifically do not use Gulp, Grunt or any of the make-wannabies. Most of the time, &lt;code&gt;npm run&lt;/code&gt; is enough.&lt;/p&gt;

&lt;p&gt;Please note that this covers the front end applications only.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Some of the objectives used to choose these tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;avoid big frameworks: they have value, but also a big learning curve. I&amp;rsquo;ve managed a large Angular project before (version 1.4, about 800K of compressed app code), and it has some benefits, but I rather have smaller pieces that I can learn enough to be productive in a day;&lt;/li&gt;
&lt;li&gt;one bundle, multiple files: the extremes of app delivery - a single large bundle or multiple small files. With HTTP/2, the second is more useful, but as all extremes, I believe there is value in the middle ground. I prefer to have one file per logical section of the app, plus other bundles with code that changes less often;&lt;/li&gt;
&lt;li&gt;message passing-based inter-component communication: my brain is hard-wired to thing in terms of distributed isolated components that talk to each other based on messages, so I look for that in the tools I want to work with. It just easier this way to add another component, listen to the messages you need, and generate the messages or actions you want, without having to make any or big changes to already existing components;&lt;/li&gt;
&lt;li&gt;immutability: I prefer never to update state, always create state from scratch, based on current state plus actions. It&amp;rsquo;s not that I&amp;rsquo;m a purist functional programming person, I rarely ever used pure functional programming languages, but it just makes sense to me, specially because of the for-free audit log, with all the advantages this brings, and the compose-ability and extension support it provides.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A good write-up with very similar ideas, and goals as mine is this: &lt;a href=&#34;https://medium.com/@ryanflorence/welcome-to-future-of-web-application-delivery-9750b7564d9f&#34;&gt;Welcome to Future of Web Application Delivery&lt;/a&gt;. I would not call it the &amp;ldquo;future&amp;rdquo; though, just &amp;ldquo;best current practice&amp;rdquo;.&lt;/p&gt;

&lt;h2 id=&#34;background-information&#34;&gt;Background information&lt;/h2&gt;

&lt;p&gt;Some interesting or important articles to be aware of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://nerds.airbnb.com/isomorphic-javascript-future-web-apps/&#34;&gt;Isomorphic JavaScript: The Future of Web Apps&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://medium.com/@mjackson/universal-javascript-4761051b7ae9&#34;&gt;Universal JavaScript&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://medium.com/@ghengeveld/isomorphism-vs-universal-javascript-4b47fb481beb&#34;&gt;Isomorphism vs Universal JavaScript&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/samccone/The-cost-of-transpiling-es2015-in-2016&#34;&gt;The cost of transpiling es2015 in 2016&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://remysharp.com/2016/09/13/first-impressions-of-react&#34;&gt;First impressions of React&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Presentations I enjoyed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bensmithett.github.io/going-isomorphic-with-react/&#34;&gt;Going Isomorphic with React&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the obligatory &lt;a href=&#34;https://github.com/enaqx/awesome-react&#34;&gt;React &amp;ldquo;awesome&amp;rdquo; resource page&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;application-server&#34;&gt;Application server&lt;/h2&gt;

&lt;p&gt;The application server is &lt;a href=&#34;https://nodejs.org/en/&#34;&gt;Node&lt;/a&gt;. For me, having the same language on the application server and the client-side makes a lot of things easier. I can easily swap components between server-side and client-side, and I can even use the same logic to render some parts of the app server side, for better SEO, or initial page render. To learn more, &lt;a href=&#34;https://www.google.com/?q=react+isomorphic&#34;&gt;look for &amp;ldquo;react isomorphic&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I use &lt;a href=&#34;https://docs.npmjs.com/cli/npm&#34;&gt;npm&lt;/a&gt; to manage my dependencies. I avoid &lt;a href=&#34;https://bower.io/&#34;&gt;Bower&lt;/a&gt; as their installs are usually very browser-oriented, and if I might need to move stuff from client-to-server, I rather have a single module for both. Not always possible, mind you, but usually ok.&lt;/p&gt;

&lt;p&gt;I try to avoid &lt;a href=&#34;https://babeljs.io/&#34;&gt;Babel&lt;/a&gt; as much as I can. Although I see value in it, I rather stick to what ES2015/ES2016 Node supports natively. It is one less tool to learn. But although ES2015 is coming along on the browser side, it still lacks a lot of stuff, so you&amp;rsquo;ll still need it for client-side stuff.&lt;/p&gt;

&lt;h2 id=&#34;packaging-and-bundling&#34;&gt;Packaging and bundling&lt;/h2&gt;

&lt;p&gt;&lt;a href=&#34;https://webpack.github.io/&#34;&gt;Webpack&lt;/a&gt; is awesome. Seriously, forget all others&amp;hellip; You should start by reading the &lt;a href=&#34;https://webpack.github.io/docs/code-splitting.html&#34;&gt;code splitting&lt;/a&gt; and the &lt;a href=&#34;https://webpack.github.io/docs/long-term-caching.html&#34;&gt;long-term caching&lt;/a&gt; sections of the &lt;a href=&#34;https://webpack.github.io/docs/&#34;&gt;documentation&lt;/a&gt;, if that doesn&amp;rsquo;t convince you of how awesome Webpack is, I don&amp;rsquo;t know what is wrong with you&amp;hellip;&lt;/p&gt;

&lt;p&gt;It is worth to keep track of &lt;a href=&#34;http://rollupjs.org/&#34;&gt;RollupJS&lt;/a&gt;. It seems to &lt;a href=&#34;https://nolanlawson.com/2016/08/15/the-cost-of-small-modules/&#34;&gt;produce much smaller bundles&lt;/a&gt; than Webpack (but see &lt;a href=&#34;https://github.com/rollup/rollup/issues/552&#34;&gt;rollup#552&lt;/a&gt;, it still has some problems, in particular with &lt;a href=&#34;https://github.com/ReactiveX/rxjs/issues/1671&#34;&gt;RXjs&lt;/a&gt;). We can use &lt;a href=&#34;https://www.npmjs.com/package/rollup-loader&#34;&gt;rollup-loader&lt;/a&gt; to keep your Webpack workflow, though.&lt;/p&gt;

&lt;p&gt;See this as a starting point for your Webpack experience: &lt;a href=&#34;https://github.com/HenrikJoreteg/hjs-webpack&#34;&gt;Helpers/presets for setting up webpack with hotloading react and ES6(2015) using Babel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Related articles worth your time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/petehunt/webpack-howto&#34;&gt;webpack-howto&lt;/a&gt;: a cookbook of how to get things done with webpack. This includes most things used at Instagram and nothing they don&amp;rsquo;t use;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://lacke.mn/reduce-your-bundle-js-file-size/&#34;&gt;Reduce Your bundle.js File Size By Doing This One Thing&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://nolanlawson.com/2016/08/15/the-cost-of-small-modules/&#34;&gt;The cost of small modules&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://coligo.io/javascript-module-bundling-with-rollup/&#34;&gt;JavaScript Module Bundling with Rollup.js&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://javascriptplayground.com/blog/2016/02/better-bundles-rollup/&#34;&gt;Better bundles with Rollup&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/rollup/rollup/issues/219#issuecomment-150842108&#34;&gt;Yet another module bundler&lt;/a&gt;: why should you use Rollup, by the Rollup author;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://medium.com/@housecor/browserify-vs-webpack-b3d7ca08a0a9&#34;&gt;Browserify vs Webpack&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.smashingmagazine.com/2016/09/how-to-scale-react-applications/&#34;&gt;How to scale React applications&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;the-view&#34;&gt;The View&lt;/h2&gt;

&lt;p&gt;Views can no longer be just simple templates. They require small amounts of logic, and there was always a big discussion where that logic should go in a pure MVC pattern.&lt;/p&gt;

&lt;p&gt;I rather like &amp;ldquo;fat&amp;rdquo; views. I also don&amp;rsquo;t like to have the code and HTML of the fat views in separate files, having to jump from one to the other all the time. I rather like writing the views in the same language as the rest of the code, with small helpers to make generating HTML simple.&lt;/p&gt;

&lt;p&gt;This is why the choice at this moment is &lt;a href=&#34;https://facebook.github.io/react/&#34;&gt;React&lt;/a&gt; plus &lt;a href=&#34;https://jsx.github.io/&#34;&gt;JSX&lt;/a&gt;. The productivity of having a single file with a component with both the code logic and HTML parts is unbeatable.&lt;/p&gt;

&lt;p&gt;There is always the risk of getting a big mess with code and HTML in the same place. There were some dark places in my past with PHP, and HTML::Mason. But as with all tools, you can make use of them &amp;ldquo;In The Right Way&amp;rdquo;&amp;trade;, clearly separating business logic, and view logic in different places. Just because the tool allows you to mix HTML and code, you don&amp;rsquo;t have to make a mess of things.&lt;/p&gt;

&lt;p&gt;For a quick explanation on views evolution until React+JS, see the &lt;a href=&#34;https://bensmithett.github.io/going-isomorphic-with-react/#/12&#34;&gt;Let&amp;rsquo;s talk about Views&lt;/a&gt; section of a presentation I liked. It makes the point very clearly.&lt;/p&gt;

&lt;p&gt;Some Reference links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://facebook.github.io/react/&#34;&gt;React homepage&lt;/a&gt; and &lt;a href=&#34;https://facebook.github.io/react/docs/why-react.html&#34;&gt;React documentation&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://facebook.github.io/react/docs/jsx-in-depth.html&#34;&gt;Using JSX with React&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.risingstack.com/react-js-best-practices-for-2016/&#34;&gt;React.js Best Practices for 2016&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On Isomorphic applications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://gourmetjs.com/docs/isomorphic-react-router.html&#34;&gt;Developing an Isomorphic App using React Router&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.jscrambler.com/developing-isomorphic-graphql-app-react/&#34;&gt;Developing An Isomorphic GraphQL App With React&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://reactjsnews.com/isomorphic-react-in-real-life&#34;&gt;The Pain and the Joy of creating isomorphic apps in ReactJS&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://engineering.devmag.io/post/1/creating-an-isomorphic-blogging-app-using-react-and-flux&#34;&gt;Creating an Isomorphic Blogging app Using React and Flux&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Presentations and videos that I liked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://skillsmatter.com/skillscasts/5429-going-big-with-react#video&#34;&gt;Going big with React&lt;/a&gt;: video, 30mins. Very good one, shows difference between flow in a more traditional MVC app and a React app. Some of the diagrams help a lot to understand the flow of events.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;the-model&#34;&gt;The Model&lt;/h2&gt;

&lt;p&gt;This is one part where I&amp;rsquo;m not sure yet.&lt;/p&gt;

&lt;p&gt;For now I&amp;rsquo;m using &lt;a href=&#34;http://backbonejs.org/&#34;&gt;BackboneJS&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;http://backbonejs.org/#Model&#34;&gt;Backbone.Model&lt;/a&gt;. I like the &lt;a href=&#34;http://backbonejs.org/#Sync&#34;&gt;Backbone.Sync&lt;/a&gt; API&amp;hellip;&lt;/p&gt;

&lt;p&gt;One thing that is still to be decided is how to talk to servers. One of &lt;a href=&#34;https://www.npmjs.com/package/isomorphic-fetch&#34;&gt;isomorphic-fetch&lt;/a&gt; or &lt;a href=&#34;https://visionmedia.github.io/superagent/&#34;&gt;SuperAgent&lt;/a&gt; will end up as the preferred way. I really like SuperAgent API but I&amp;rsquo;m not sure if I&amp;rsquo;m not going to find it too verbose in the future.&lt;/p&gt;

&lt;h2 id=&#34;the-glue&#34;&gt;The Glue&lt;/h2&gt;

&lt;p&gt;You need to connect all the view components and the models that provide the information you need. &lt;a href=&#34;https://facebook.github.io/flux/&#34;&gt;Flux&lt;/a&gt; is the application architecture that Facebook developed for their own apps to connect React views with their Models.&lt;/p&gt;

&lt;p&gt;I picked &lt;a href=&#34;http://redux.js.org/&#34;&gt;Redux&lt;/a&gt; as a simple evolution of the Flux architecture.&lt;/p&gt;

&lt;p&gt;Redux has a great &lt;a href=&#34;https://egghead.io/series/getting-started-with-redux&#34;&gt;Getting Started with Redux&lt;/a&gt; tutorial, check it out.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.toptal.com/front-end/simple-data-flow-in-react-applications-using-flux-and-backbone&#34;&gt;Simple Data Flow in React Apps Using Flux and Backbone: A Tutorial with Examples&lt;/a&gt;: although Flux-based, the ideas are easily adjusted to Redux.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;the-router&#34;&gt;The Router&lt;/h2&gt;

&lt;p&gt;For your routing needs, I like the model that &lt;a href=&#34;https://github.com/reactjs/react-router&#34;&gt;react-router&lt;/a&gt; uses. It is simple enough but also clean and powerful.&lt;/p&gt;

&lt;p&gt;Given the use of Redux, I prefer to use the &lt;a href=&#34;https://github.com/reactjs/react-router-redux&#34;&gt;react-router-redux&lt;/a&gt; wrapper, it makes my life easier.&lt;/p&gt;

&lt;h2 id=&#34;other-tools&#34;&gt;Other tools&lt;/h2&gt;

&lt;p&gt;Starter kits, oh so many to choose from. I&amp;rsquo;ve still to pick one, these are the ones I&amp;rsquo;m looking at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/reactGo/reactGo&#34;&gt;reactGo: Your One-Stop solution for a full-stack universal Redux App!&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/coryhouse/react-slingshot&#34;&gt;react-slingshot&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/mxstbr/react-boilerplate&#34;&gt;react-boilerplate&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is another school of thought that prefers no big start kits, that will allow you to grow more organically and learn the steps that most starter kits hide from you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remy Sharp &lt;a href=&#34;https://remysharp.com/2016/09/13/first-impressions-of-react&#34;&gt;First impressions of React&lt;/a&gt; mentions this;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://medium.freecodecamp.com/create-react-app-and-the-future-of-creating-react-applications-3c336f29bf1c&#34;&gt;“create-react-app” and the future of creating React applications&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Using PubNub:

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.pubnub.com/blog/2016-06-14-getting-started-with-pubnub-and-react/&#34;&gt;Getting Started With React and Rangle’s Starter Kit&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.pubnub.com/blog/2016-06-28-reactjs-chat-app-infinite-scroll-history-using-redux/&#34;&gt;ReactJS Chat App: Infinite Scroll History using Redux&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.pubnub.com/blog/2016-08-16-add-typing-indicator-to-your-react-based-chat-app/&#34;&gt;Add a Typing Indicator to Your React-Based Chat App&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;alternatives&#34;&gt;Alternatives&lt;/h2&gt;

&lt;p&gt;I&amp;rsquo;ve looked at some other systems while picking this set of tools. These are the ones I would consider as viable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://angularjs.org/&#34;&gt;AngularJS&lt;/a&gt;: the Java-esq (aka. Enterprise Solution with the appropriate big set of terminology and standards) version of a Web application framework. You&amp;rsquo;ll find it very complete, decent performance, and it will have a suggestion (most of them strongly worded) for all your needs;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://backbonejs.org/&#34;&gt;BackboneJS&lt;/a&gt;: I really like the Model and Router components, but I don&amp;rsquo;t like the View part. Still, a very useful tool.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Mac</title>
      <link>https://www.simplicidade.org/survival/mac/</link>
      <pubDate>Fri, 12 Aug 2016 11:38:01 +0100</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/survival/mac/</guid>
      <description>

&lt;p&gt;All software mentioned here is in active use by me.&lt;/p&gt;

&lt;h2 id=&#34;install-a-new-mac&#34;&gt;Install a new Mac&lt;/h2&gt;

&lt;p&gt;There are two types of install: nuke and pave, and restore from backup.&lt;/p&gt;

&lt;p&gt;Although it takes more time, I&amp;rsquo;m partial to nuke and pave, mostly because it forces me to look at all the new features the new Mac introduces.&lt;/p&gt;

&lt;p&gt;This is true for me because I rarely update laptops. Until March 2017, I was using a Macbook Late 2008. I upgraded to a brand new Macbok Pro 13&amp;rdquo; with the Touchy thingie.&lt;/p&gt;

&lt;h3 id=&#34;a-brief-note-about-accounts&#34;&gt;A brief note about accounts&lt;/h3&gt;

&lt;p&gt;Don&amp;rsquo;t use an Administrator-level account as your main account. Ever!&lt;/p&gt;

&lt;p&gt;When installing a new Mac, the first account you create is an Administrator account. Give it a simple name, like God, Adam, or Odin, or whatever.&lt;/p&gt;

&lt;p&gt;Then using that account, create your main account, as a regular account.&lt;/p&gt;

&lt;h3 id=&#34;essentials&#34;&gt;Essentials&lt;/h3&gt;

&lt;p&gt;I install the following software in this order.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dropbox: this is the first mostly because it includes a lot of data I&amp;rsquo;ll need for the things that come next;&lt;/li&gt;
&lt;li&gt;1Password: I keep my keychain on Dropbox, and all my passwords and other config tidbits inside, so this is the second one;&lt;/li&gt;
&lt;li&gt;Textmate 2: still my favourite editor. I rsync my preferences from Dropbox to have a good startup point;&lt;/li&gt;
&lt;li&gt;Ghostery extensions: a better browser experience. Download from &lt;a href=&#34;https://www.ghostery.com/products/&#34;&gt;https://www.ghostery.com/products/&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Divvy: our Window manager, download from &lt;a href=&#34;http://mizage.com/divvy/&#34;&gt;http://mizage.com/divvy/&lt;/a&gt;. You&amp;rsquo;ll need the setup files, they are in the &lt;code&gt;my-setup-files&lt;/code&gt; Dropbox directory. On new Mac&amp;rsquo;s, you all so need to enable Accessibility like the instructions at &lt;a href=&#34;http://mizage.com/help/accessibility.html&#34;&gt;http://mizage.com/help/accessibility.html&lt;/a&gt; indicate.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;configuration-tweaks&#34;&gt;Configuration tweaks&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Start Misson Control and add a second Desktop: I don&amp;rsquo;t like to many desktops, but also a single one is too little. I do use a lot of apps set to full screeen (Slack, Mattermost, Mail, OmniFocus) as they don&amp;rsquo;t benefit from multi-tasking that is easier with normal windows;&lt;/li&gt;
&lt;li&gt;In &amp;ldquo;System Preferences&amp;rdquo; &amp;gt; &amp;ldquo;Keyboard&amp;rdquo; &amp;gt; &amp;ldquo;Shortcuts&amp;rdquo;:

&lt;ul&gt;
&lt;li&gt;disable most &amp;ldquo;Services&amp;rdquo;, we don&amp;rsquo;t use them anyway, free up the previous global keyboard shortcuts;&lt;/li&gt;
&lt;li&gt;on &amp;ldquo;Misson Control&amp;rdquo; section, enable ^1 and ^2 to jump directly to Desktop 1 and 2;&lt;/li&gt;
&lt;li&gt;on &amp;ldquo;Keyboard&amp;rdquo;, switch the shortcut for &amp;ldquo;Move focus to the next window&amp;rdquo; to Alt-Tab: this is probably &lt;strong&gt;the&lt;/strong&gt; most used shortcut I use&amp;hellip;;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&#34;developer-tools&#34;&gt;Developer tools&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;XCode command line: just run &lt;code&gt;xcode-select --install&lt;/code&gt; to install the basic CLI tools. If you need the full XCode you can add it later. But this is the essential stuff for what comes next;&lt;/li&gt;
&lt;li&gt;HomeBrew: follow the instructions from &lt;a href=&#34;https://brew.sh&#34;&gt;https://brew.sh&lt;/a&gt;. Given that you were a good person, and your main account is not a Administrator-level account, you&amp;rsquo;ll need to &lt;code&gt;su - &amp;lt;admin_account&amp;gt;&lt;/code&gt; to install brew. This also means that whenever you want to install someting new with brew, you need to &lt;code&gt;su -&lt;/code&gt; to the Administrator account. Trust me, it is a small price to pay;&lt;/li&gt;
&lt;li&gt;plenv: all the Perl are belong to us! Follow the instructions from &lt;a href=&#34;https://github.com/tokuhirom/plenv&#34;&gt;https://github.com/tokuhirom/plenv&lt;/a&gt;. It boils down to:

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git clone https://github.com/tokuhirom/plenv.git ~/.plenv&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;echo &#39;export PATH=&amp;quot;$HOME/.plenv/bin:$PATH&amp;quot;&#39; &amp;gt;&amp;gt; ~/.bash_profile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;echo &#39;eval &amp;quot;$(plenv init -)&amp;quot;&#39; &amp;gt;&amp;gt; ~/.bash_profile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;exec $SHELL -l&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git clone https://github.com/tokuhirom/Perl-Build.git ~/.plenv/plugins/perl-build/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plenv install -j 8 5.24.1 --as default&lt;/code&gt;. &amp;ndash; or whatever is the latest Perl version. This will be your global default perl interpreter. You can add other versions later if need be. I recommend that you at least install the latest perl again. The differente between the &amp;ldquo;default&amp;rdquo; perl and the copy is that we will install libraries into the default perl for day to day use, while the others (lets call them project perl&amp;rsquo;s) will not have libraries installed, and all project needs will be managed with Carton. So run &lt;code&gt;plenv install -j 8 5.24.1&lt;/code&gt; a second time to install the 5.24.1 project perl edition;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plenv global default&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Install some base modules we&amp;rsquo;ll need:&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plenv install-cpanm&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cpanm -n Carton&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plenv rehash&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;You&amp;rsquo;ll need to install the base modules on all installed perl versions, so run &lt;code&gt;plenv shell 5.24.1&lt;/code&gt; and repeat the steps of the previous item;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Install Docker for Mac from &lt;a href=&#34;https://docs.docker.com/docker-for-mac/install:&#34;&gt;https://docs.docker.com/docker-for-mac/install:&lt;/a&gt; I use the &amp;ldquo;Edge&amp;rdquo; version, but the GA is fine for most uses;&lt;/li&gt;
&lt;li&gt;Install &lt;a href=&#34;https://www.sparklabs.com/viscosity/download/&#34;&gt;Viscosity&lt;/a&gt;: download from &lt;a href=&#34;https://www.sparklabs.com/&#34;&gt;SparkLabs&lt;/a&gt;, you&amp;rsquo;ll need you license and the &lt;code&gt;.opvn&lt;/code&gt; files, and optional passwords;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;brew-software&#34;&gt;Brew software&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;jmeter: &lt;code&gt;brew install jmeter --with-plugins&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;this requires Java :(&amp;hellip; &lt;a href=&#34;https://www.java.com/en/download/mac_download.jsp&#34;&gt;https://www.java.com/en/download/mac_download.jsp&lt;/a&gt;
&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;apple-eco-system-apps&#34;&gt;Apple eco-system apps&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Run iTunes once, login into the Apple Store. This will start the download of the iCloud Music Library, just the metadata. The songs will stream and start to be cached.&lt;/li&gt;
&lt;li&gt;Run Photos once. I don&amp;rsquo;t use it to store my photo library, or at least not the master version of it, but it helps to sync the iOS photos to the Mac. Enable all the iCloud stuff, thats what it is useful for, but remember to export the photos you really care about to a system outside Apple control;&lt;/li&gt;
&lt;li&gt;If this is a new Mac, and if you had Mail.app rules on the previous one, &lt;a href=&#34;http://www.macinstruct.com/node/471&#34; title=&#34;Moving Mail.app Rules to a Different Mac | Macinstruct&#34;&gt;move over the rules&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;other-apps&#34;&gt;Other Apps&lt;/h2&gt;

&lt;h3 id=&#34;security-related&#34;&gt;Security-related&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Oversight: &lt;a href=&#34;https://objective-see.com/products/oversight.html&#34;&gt;https://objective-see.com/products/oversight.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;chat&#34;&gt;Chat&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Slack: just download it from &lt;a href=&#34;https://slack.com/downloads&#34;&gt;https://slack.com/downloads&lt;/a&gt; and watch all your memory disappear&amp;hellip;;&lt;/li&gt;
&lt;li&gt;Mattermost: used for internal chat rooms, via Gitlab. Download from &lt;a href=&#34;https://about.mattermost.com/download/&#34;&gt;https://about.mattermost.com/download/&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Skype: download from &lt;a href=&#34;https://www.skype.com/en/download-skype/skype-for-computer/&#34;&gt;https://www.skype.com/en/download-skype/skype-for-computer/&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;news&#34;&gt;News&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;From the AppStore, install your copy of Reeder 3, and link it to your RSS sync service, &lt;a href=&#34;https://feedhq.org&#34;&gt;FeedHQ&lt;/a&gt; in my case.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;office-apps&#34;&gt;Office apps&lt;/h3&gt;

&lt;p&gt;At the work place, we use G Suite and other tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Google Drive app from &lt;a href=&#34;https://www.google.com/drive/download/&#34;&gt;https://www.google.com/drive/download/&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Install Zoom, go to &lt;a href=&#34;https://zoom.us&#34;&gt;https://zoom.us&lt;/a&gt; and join a meeting, the installer will download;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;system-utilities&#34;&gt;System utilities&lt;/h2&gt;

&lt;p&gt;This are replacements for applications or functionalities already present on a stock Mac OS X install.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://itunes.apple.com/us/app/annotate-by-driftt/id918207447?mt=12&#34;&gt;Annotate (previously known as Glui)&lt;/a&gt;: screen-shots and annotations, direct Dropbox upload. Commercial, App Store, $3.99;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;others&#34;&gt;Others&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;FSMonitor: a powerful filesystem changes monitor, &lt;a href=&#34;http://fsmonitor.com&#34;&gt;http://fsmonitor.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;security&#34;&gt;Security&lt;/h2&gt;

&lt;p&gt;Start with these, before all others.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.obdev.at/products/littlesnitch/index.html&#34;&gt;Little Snitch&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.littleflocker.com/&#34;&gt;Little Flocker&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/google/santa&#34;&gt;Santa&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;database-viewers&#34;&gt;Database viewers&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&#34;http://sqlitebrowser.org/&#34;&gt;SQLLite Browser&lt;/a&gt;: GUI for SQLite DB&amp;rsquo;s&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://manytricks.com/witch/&#34;&gt;Witch&lt;/a&gt;: Cmd-Tab replacement, that includes window switching, and spaces support. Commercial, trial available, $14;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;http://mizage.com/divvy/&#34;&gt;Divvy&lt;/a&gt;: window manager, allows reorganization of your windows with just the keyboard, multi-screen aware. Commercial, trial available, $13.99;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://itunes.apple.com/us/app/annotate-by-driftt/id918207447?mt=12&#34;&gt;Annotate (previously known as Glui)&lt;/a&gt;: screen-shots and annotations, direct Dropbox upload. Commercial, App Store, $3.99;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;http://flyingpapersoftware.com/&#34;&gt;UnDock&lt;/a&gt;: utility to eject all external drives before undocking your laptop. Commercial, App Store, $1.99;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;http://pilotmoon.com/dropshelf/&#34;&gt;Dropshelf&lt;/a&gt;: a drag-and-drop destination, a place to drop something temporarily while you switch app - create a screenshot in Glui, drop it into Dropshelf, open Mail, and drag into a new message. Commercial, Trial available, direct or App Store, $4.99;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://www.sparklabs.com/viscosity/&#34;&gt;Viscosity&lt;/a&gt;: a OpenVPN client. Commercial, trial available, $9. For a free alternative, see  &lt;a href=&#34;https://tunnelblick.net/&#34;&gt;Tunnelblick&lt;/a&gt;;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://www.macbartender.com/&#34;&gt;Bartender&lt;/a&gt;: a menubar manager, allows you to have two levels of apps in the menubar. Commercial, trial available, $13.90;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;http://www.clipmenu.com/&#34;&gt;ClipMenu&lt;/a&gt;: a clipboard manager. Freeware;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://marco.org/apps#quitter&#34;&gt;Quitter&lt;/a&gt;: quits or hides some applications if you don&amp;rsquo;t use them for awhile. Specially useful with email or twitter clients. Free;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;http://antirsi.onnlucky.com/&#34;&gt;AntiRSI&lt;/a&gt;: I suffer from repetitive strain injury for quite some years now, and I cannot live without my pair of &lt;a href=&#34;http://www.brownmed.com/product/imak-rsi/smartglove/&#34;&gt;IMAK RSI SmartGlove&lt;/a&gt;. But that is not enough. Even with the gloves, continuous work will cause me pain. This app will introduce rest pauses (also useful for hydration). Commercial, App Store, €5.99;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4 minutes between 15 seconds micro pauses;&lt;/li&gt;
&lt;li&gt;a 8 minute pause every 50 minutes;&lt;/li&gt;
&lt;li&gt;and forse AntiRSI during breaks.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;social-networking&#34;&gt;Social Networking&lt;/h2&gt;

&lt;h3 id=&#34;twitter&#34;&gt;Twitter&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://sites.google.com/site/yorufukurou/home-en&#34;&gt;YoruFukurou / NightOwl&lt;/a&gt;: my favourite Twitter client, great keyboard-based operation. A bit of abandonware, some functions no longer work with current Twitter, but still my favourite.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;moo&#34;&gt;MOO&lt;/h3&gt;

&lt;p&gt;Long live MOOsaico!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.riverdark.net/atlantis/&#34; title=&#34;Atlantis | Riverdark Studios&#34;&gt;Atlantis&lt;/a&gt;: this is the one I use&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;to-explore&#34;&gt;To explore&lt;/h2&gt;

&lt;p&gt;Apps to explore when I have the time.&lt;/p&gt;

&lt;h3 id=&#34;time-tracking&#34;&gt;Time tracking&lt;/h3&gt;

&lt;p&gt;Apps/services that track what you are doing at the computer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.rescuetime.com/&#34;&gt;RescueTime&lt;/a&gt;: service, looks like a Java app;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://manytricks.com/timesink/&#34;&gt;TimeSink&lt;/a&gt;: paid;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://timingapp.com/?lang=en&#34;&gt;Timing&lt;/a&gt;: paid;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.mediaatelier.com/Usage/&#34;&gt;Usage&lt;/a&gt;: free.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;network-monitoring&#34;&gt;Network monitoring&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://itunes.apple.com/pt/app/bandwidth+/id490461369?l=en&amp;amp;mt=12&#34;&gt;Bandwidth+&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Consul</title>
      <link>https://www.simplicidade.org/survival/consul/</link>
      <pubDate>Fri, 12 Aug 2016 07:41:13 +0100</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/survival/consul/</guid>
      <description>

&lt;p&gt;&lt;a href=&#34;https://www.consul.io&#34;&gt;Consul&lt;/a&gt; is a swiss-army-knife for distributed systems. It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Service discovery;&lt;/li&gt;
&lt;li&gt;Failure detection;&lt;/li&gt;
&lt;li&gt;Key/Value storage;&lt;/li&gt;
&lt;li&gt;Distributed events, execution and locks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of the instalations I track more closely is from Datadog. They are reasonably big (1000+ node cluster) and they have been doing this since Consul 0.4.x, so lot&amp;rsquo;s of experience there. Also, they created a bunch of small tools that really make it simple to use Consul in production.&lt;/p&gt;

&lt;h2 id=&#34;articles&#34;&gt;Articles&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://engineering.datadoghq.com/consul-at-datadog/&#34;&gt;Consul at Datadog&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://qnib.org/2016/08/11/consul-service/&#34;&gt;Consul as a Docker Service&lt;/a&gt;: uses Docker Swarm. Uses a overlay network, I would suggest &lt;code&gt;--net=host&lt;/code&gt; plus dummy interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;presentations&#34;&gt;Presentations&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://speakerdeck.com/darron/service-discovery-in-the-cloud&#34;&gt;Service Discovery in the Cloud&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://speakerdeck.com/darron/running-consul-at-scale-journey-from-rfc-to-production&#34;&gt;Running Consul at Scale—Journey from RFC to Production&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;tools&#34;&gt;Tools&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Cimpress-MCP/git2consul&#34;&gt;git2consul&lt;/a&gt;: Node-based, keep your configurations on git and push them to Consul;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/DataDog/kvexpress&#34;&gt;kvexpress&lt;/a&gt;: react to Consul KV changes, allows you to get stuff out of Consul, and put it in a file. Supports consul-template and friends, useful with watches. See also &lt;a href=&#34;https://blog.froese.org/2016/01/25/kvexpress-transporting-config-through-consul/&#34;&gt;kvexpress - transporting configuration through Consul&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/darron/sifter&#34;&gt;sifter&lt;/a&gt;: protection against empty/blank events. This will allow your event handlers to fire only when they really need to.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Crossroads</title>
      <link>https://www.simplicidade.org/notes/2016/08/10/crossroads/</link>
      <pubDate>Wed, 10 Aug 2016 11:39:31 +0100</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/notes/2016/08/10/crossroads/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve finished reading &lt;a href=&#34;https://queue.acm.org/detail.cfm?id=2349257&#34;&gt;A Generation Lost in the Bazaar&lt;/a&gt; by Poul-Henning Kamp (of Varnish fame).&lt;/p&gt;

&lt;p&gt;The key takeaway is simple enough: quality happens only when someone is responsible for it.&lt;/p&gt;

&lt;p&gt;Right now, I&amp;rsquo;m working on my personal/family project, modernising the infrastructure of a 16 years old Perl application, and moving some parts to other languages to make it easier for us to hire resources. I love Perl, and still is my favourite language, but getting people to work on it in Portugal is a very hard proposition.&lt;/p&gt;

&lt;p&gt;But the future is uncertain. What should I do after I finish this task? So I go back to what I&amp;rsquo;ve been doing over the past three years, managing a team of developers, nurturing young talent and give freedom and cover to senior developers to do its thing?&lt;/p&gt;

&lt;p&gt;Or should I keep it small, build the hand-full of services I would like to build, not something that is brand spanking new, but my own personal view how those systems should be work? Be one more SaaS out there, selling my work directly to companies?&lt;/p&gt;

&lt;p&gt;Should I go back to the factories, or go for the boutique?&lt;/p&gt;

&lt;p&gt;I honestly don&amp;rsquo;t know yet&amp;hellip; There are still somethings I would like to do, that are only available at a factory. But the thing is, one of the major decisive points to leave my previous employer was that I could not longer control the quality of the work my team was doing, and that is a position where I never want to be again.&lt;/p&gt;

&lt;p&gt;Quality happens only when someone is responsible for it. And I want to be that someone, somewhere. Just not sure where that will be.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>