<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[flopreynat.com]]></title><description><![CDATA[Personal site of flo preynat]]></description><link>https://flopreynat.com</link><generator>GatsbyJS</generator><lastBuildDate>Sun, 27 Sep 2020 20:12:03 GMT</lastBuildDate><item><title><![CDATA[No Microsoft tracking with VS Codium]]></title><description><![CDATA[About a year ago, I switched from Sublime to VS Code, and never looked back. The code editor does everything I need, and having the terminal…]]></description><link>https://flopreynat.com/blog/2020-09-28-no-microsoft-tracking-vscodium</link><guid isPermaLink="false">https://flopreynat.com/blog/2020-09-28-no-microsoft-tracking-vscodium</guid><pubDate>Sun, 27 Sep 2020 23:51:11 GMT</pubDate><content:encoded>&lt;p&gt;About a year ago, I switched from Sublime to VS Code, and never looked back. The code editor does everything I need, and having the terminal and console closed to your code is a mega plus.&lt;/p&gt;
&lt;p&gt;But the other day, cyborg rights activist &lt;a href=&quot;https://ar.al/&quot;&gt;Aral Balkan&lt;/a&gt;, whom I was talking to on Twitter, mentioned to me the existence of &lt;strong&gt;VS Codium&lt;/strong&gt;, a  clone of Visual Studio Code, providing its users with the same Microsoft application experience, but without Microsoft’s telemetry code and data usage tracking.&lt;/p&gt;
&lt;p&gt;The prospect of using a community-driven, freely-licensed, 100% Open Source, tracking-less version of VS Code was too good to be true, and hence I made the switch and obviously can only encourage you to follow suit if you have yet to make the move.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://vscodium.com/&quot;&gt;VS Codium&lt;/a&gt; : Free/Libre Open Source Software Binaries of VSCode&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Using git on your Synology]]></title><description><![CDATA[I'm pushing the majority of my git projects to github for the simple reason that 1. they are public and hence do not need to remain hidden…]]></description><link>https://flopreynat.com/blog/2020-05-21-git-server-synology</link><guid isPermaLink="false">https://flopreynat.com/blog/2020-05-21-git-server-synology</guid><pubDate>Thu, 21 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m pushing the majority of my git projects to github for the simple reason that 1. they are public and hence do not need to remain hidden from the rest of the world, and 2. they usually leverage open source technology which has been tweaked in some way and that could help others.&lt;/p&gt;
&lt;p&gt;However, there are specific personal projects and notes I do version using git and that I do not wish to send to the likes of Github, Bitbucket, et al. &lt;/p&gt;
&lt;p&gt;As a huge advocate of &lt;a href=&quot;https://flopreynat.com/blog/2020-02-23-data-privacy-2020&quot;&gt;data privacy&lt;/a&gt;, I tend to keep &lt;strong&gt;my private stuff private&lt;/strong&gt;, and that means not using a third party (regardless of whether they offer private repos or not).&lt;/p&gt;
&lt;p&gt;Long story short, you&apos;ll find below the list of actions I have carried out to setup and use my (very own) Synology Git server.&lt;/p&gt;
&lt;h3&gt;Todo&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Install git on your synology (&lt;em&gt;help: you&apos;ll find the Git server application in your Package Center)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Enable SSH (&lt;em&gt;help: by navigating to Control Panel &gt; Terminal &amp;#x26; SNMP &gt; Terminal)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Using the terminal (or putty if you&apos;re on a windows machine), ssh into your synology by running:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh you-user@your-synology-ip (+ type your synology password)
eg: ssh johnny@192.85.85.85
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;On your synology , create a folder to host your git project&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Navigate to your local project folder and run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git init
git remote add origin ssh://johnny@192.85.85.85:/volume1/myDirectory/myGitProject
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Push your project to your synology by running the usual:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git add --all
git commit -m &quot;initial commit&quot;
git push origin master
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Bob&apos;s your uncle 😎&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[Switching to Gatsby]]></title><description><![CDATA[It had only been a month since I converted my site from Jekyll to Hugo. But with the quarantine and lockdown 😷 fully enforced, I took the…]]></description><link>https://flopreynat.com/blog/2020-05-02-switching-to-gatsby</link><guid isPermaLink="false">https://flopreynat.com/blog/2020-05-02-switching-to-gatsby</guid><pubDate>Sat, 02 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It had only been a month since I converted my site from &lt;a href=&quot;https://flopreynat.com/blog/2020-03-29-why-hugo&quot;&gt;Jekyll to Hugo&lt;/a&gt;. But with the quarantine and lockdown 😷 fully enforced, I took the time to dig even more the static-site-generator subject, and decided to dedicate some time to learn &lt;a href=&quot;https://www.gatsbyjs.org/&quot;&gt;Gatsby&lt;/a&gt;, an open source framework based on React (which I knew very little about), and apply my newly-acquired skills to the redesign of this very site. Job now done ✅&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: React had always been a weird-looking beast to me, as I was struggling to grasp the concept/interest of injecting html inside javascript, but I am definitely getting it now.&lt;/em&gt;&lt;/p&gt;
&lt;h5&gt;Getting educated&lt;/h5&gt;
&lt;p&gt;I&apos;m not going to detail here what it took me to redesign my site with Gatsby. &lt;/p&gt;
&lt;p&gt;Gatsby has great documentation, and with a big fan/user base, there are tons of resources out there where you can get all the info you want. &lt;/p&gt;
&lt;p&gt;However I can only advise you to take &lt;a href=&quot;https://www.youtube.com/watch?v=8t0vNu2fCCM&quot;&gt;Andrew Mead&apos;s Great Gatsby Bootcamp&lt;/a&gt;, a close-to-5h top-notch tutorial taking you through the creation of a simple site equipped with a blog using Gatsby and either Markdown files or the now-popular headless CMS &lt;a href=&quot;https://www.contentful.com/&quot;&gt;Contentful&lt;/a&gt;.&lt;/p&gt;
&lt;h5&gt;Getting started&lt;/h5&gt;
&lt;p&gt;Gatsby has a large &apos;starters library&apos; available at &lt;a href=&quot;https://www.gatsbyjs.org/starters/?v=2&quot;&gt;gatsbyjs.org/starters&lt;/a&gt; where you can easily bootstrap your Gastby project. &lt;/p&gt;
&lt;p&gt;It was however important for me to build my own Gatsby and Markdown starter (including all features mentioned in the video turorial but excluding the Contentful part), and reinforce what I had been learning.&lt;/p&gt;
&lt;p&gt;You&apos;ll find &lt;a href=&quot;https://github.com/flopreynat/myGatsbyMarkdownStarter&quot;&gt;my Gatsby Markdown starter&lt;/a&gt; on Github, and as detailed in the README file, this starter will have the advantage of coming with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Pages for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;home including the latest blog post and event (another post type)&lt;/li&gt;
&lt;li&gt;about&lt;/li&gt;
&lt;li&gt;contact&lt;/li&gt;
&lt;li&gt;404&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;a blog section with a (paginated) list of blog posts&lt;/li&gt;
&lt;li&gt;a calendar section with a list of events&lt;/li&gt;
&lt;li&gt;5 dummy posts (1 event + 4 blog posts including one with an image) and their engine-generated page&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sass-lang.com/&quot;&gt;Sass&lt;/a&gt; turned on&lt;/li&gt;
&lt;li&gt;the dotenv environment variable file for GraphQL Playground&lt;/li&gt;
&lt;li&gt;the &lt;a href=&quot;https://www.gatsbyjs.org/packages/gatsby-plugin-react-helmet/&quot;&gt;React Helmet&lt;/a&gt; component for document head control&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You&apos;ll also find on the repo&apos;s README the list of all the packages to be installed.
Please note that for the conversion of my site, I added the following packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://react-icons.github.io/react-icons/&quot;&gt;react-icons&lt;/a&gt; to add social network icons to my footer&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gatsbyjs.org/docs/how-gatsby-works-with-github-pages/&quot;&gt;gh-pages&lt;/a&gt; to allow deployment to Github&apos;s gh-pages, since my site is hosted there&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gatsbyjs.org/docs/gatsby-image/&quot;&gt;gatsby-image&lt;/a&gt; (+ gatsby-transformer-sharp gatsby-plugin-sharp), the recommended approach to handling images.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;Final Words&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;Gatsby is awesome&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The redesign was a fun little adventure. Gatsby is awesome and I intend to use it for other ssg-powered sites. &lt;/p&gt;
&lt;p&gt;I did not experience any huge issues. Having given Andrew Mead&apos;s tutorial my full attention, things could not have been easier, that&apos;s why I recommend you take that course if you&apos;re a gatsby newbie.&lt;/p&gt;
&lt;p&gt;The only thing I had forgotten to do was to move the CNAME file to the &apos;static&apos; folder of my project.
So, if like me, you use a custom domain, do not forget to do that, or you&apos;ll lose the redirection of your github repo to your domain every time you&apos;ll run npm run deploy.&lt;/p&gt;
&lt;p&gt;So long folks.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Why Hugo?]]></title><description><![CDATA[Quick post to mention I switched my blog from Jekyll to Hugo. Jekyll has been THE most popular static site generator since its creation back…]]></description><link>https://flopreynat.com/blog/2020-03-29-why-hugo</link><guid isPermaLink="false">https://flopreynat.com/blog/2020-03-29-why-hugo</guid><pubDate>Sun, 29 Mar 2020 16:52:11 GMT</pubDate><content:encoded>&lt;p&gt;Quick post to mention I switched my blog from Jekyll to Hugo.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt; has been THE most popular static site generator since its creation back in 2008, and I naturally opted for it &lt;a href=&quot;https://flopreynat.com/posts/2015-07-22-why-jekyll/&quot;&gt;back in July 2015&lt;/a&gt;, as I was leaving Wordpress.&lt;/p&gt;
&lt;p&gt;Back then, getting my hands into Jekyll had not been that easy, but using it past the installation phase had been a joy.&lt;/p&gt;
&lt;p&gt;I was however keen to try &lt;a href=&quot;https://gohugo.io/&quot;&gt;Hugo&lt;/a&gt;, having heard a lot of good things about it, especially since it was branded as the world’s fastest framework for building websites.&lt;/p&gt;
&lt;p&gt;Anyway, I tried it on a test project, and I have to admit &lt;a href=&quot;https://gohugo.io/getting-started/installing/&quot;&gt;setting it up&lt;/a&gt; is way more straightforward than Jekyll. Configuring and building the site is not very different from the workflow I used with Jekyll.&lt;/p&gt;
&lt;p&gt;I was convinced enough to make the leap and migrate my blog to Hugo. I doubt Hugo is as powerful as Jekyll, but it has all the things my minimalistic blog needs, especially the lighting speed it deserves.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[How I keep on improving my Data Privacy in 2020]]></title><description><![CDATA[Data privacy has been a hot subject even before GDPR (25 May 2018) and CCPA (1st January 2020) became officially applicable.  I actually…]]></description><link>https://flopreynat.com/blog/2020-02-23-data-privacy-2020</link><guid isPermaLink="false">https://flopreynat.com/blog/2020-02-23-data-privacy-2020</guid><pubDate>Sun, 23 Feb 2020 09:33:11 GMT</pubDate><content:encoded>&lt;p&gt;Data privacy has been a hot subject even before GDPR (25 May 2018) and CCPA (1st January 2020) became officially applicable. &lt;/p&gt;
&lt;p&gt;I actually discussed this very subject &lt;a href=&quot;http://flopreynat.com/posts/2017-01-03-personal-data-privacy-2017/&quot;&gt;early 2017&lt;/a&gt;, discussing the various open source tools I opted for at the time.&lt;/p&gt;
&lt;p&gt;Anyway, 2 years on, let&apos;s make a quick assessment of what was succesful and kept as well as look into the other tools I am currently using to ensure my data pricacy is in great shape.&lt;/p&gt;
&lt;h3&gt;My Data Privacy stack&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Search engine&lt;/strong&gt;: &lt;a href=&quot;https://duckduckgo.com/&quot;&gt;Duckduckgo&lt;/a&gt; is (still) my preferred and only search engine. It&apos;s being used on both my desktop and mobile for a number of years.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mail&lt;/strong&gt;: Same applies to &lt;a href=&quot;https://protonmail.com/&quot;&gt;Protonmail&lt;/a&gt;, my favourite (open-source secured) email provider.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VPN&lt;/strong&gt;: Since we&apos;re talking about the Proton team, let&apos;s give them another thumbs up with &lt;a href=&quot;https://protonvpn.com/&quot;&gt;ProtonVPN&lt;/a&gt; offering security, privacy for all, and freedom for journalists and activists.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SMS and calls&lt;/strong&gt;: &lt;a href=&quot;https://www.signal.org/&quot;&gt;Signal&lt;/a&gt;. &lt;em&gt;Although I&apos;m experiencing a few issues as I have started using dual-sim phone&lt;/em&gt; , Signal has always been my preferred choice as its messages and calls are end-to-end encrypted. Switch to safe communications, people.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Browser&lt;/strong&gt;: I use a mix of &lt;a href=&quot;https://www.mozilla.org/en-US/firefox/&quot;&gt;Firefox&lt;/a&gt;, &lt;a href=&quot;https://brave.com/&quot;&gt;Brave&lt;/a&gt;, and &lt;a href=&quot;https://www.torproject.org/&quot;&gt;Tor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;File hosting service&lt;/strong&gt;: none. At the time I had pushed &lt;a href=&quot;https://spideroak.com/&quot;&gt;Spideroak&lt;/a&gt; as a great alternative to dropbox &amp;#x26; co. I am not using this service since I actually have removed most of my problems by acquiring my own &lt;a href=&quot;https://www.synology.com/en-global&quot;&gt;Synology NAS&lt;/a&gt;. Having your own home server is a game changer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Note taking&lt;/strong&gt;: &lt;a href=&quot;https://github.com/BoostIO/Boostnote&quot;&gt;Boostnote&lt;/a&gt;, great app and open source project, soon to be coming as a mobile app (allegedely).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;File synchronization&lt;/strong&gt;: I currently use &lt;a href=&quot;https://syncthing.net/&quot;&gt;Syncthing&lt;/a&gt; as my tool of choice for synching my day-to-day files between my mac and my mobile.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;To do app&lt;/strong&gt;: I ditched asana for &lt;a href=&quot;http://todotxt.org/&quot;&gt;todo.txt&lt;/a&gt;. It has everything I need from tagging my tasks, give them a due date, and priority in the most simplistic way, and I use it with &lt;a href=&quot;https://mjdescy.github.io/TodoTxtMac/&quot;&gt;TodoTxtMac&lt;/a&gt; on my macbookpro, and &lt;a href=&quot;https://play.google.com/store/apps/details?id=net.c306.ttsuper&amp;#x26;referrer=utm_source%3Dtodotxt_website%26utm_medium%3Dcommunity_apps&quot;&gt;Todo.txt for Android&lt;/a&gt; by Aditya Bhaskar. And obviously, I get my tasks synched via syncthing as mentioned above.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Video Streaming&lt;/strong&gt;: I&apos;d love not to be using Youtube but since there are so much great content in there, I use &lt;a href=&quot;https://newpipe.schabi.org/&quot;&gt;Newpipe&lt;/a&gt; on my Android (NewPipe only parses the YouTube website in order to gain the information it needs) and &lt;a href=&quot;https://freetubeapp.io/&quot;&gt;Freetube&lt;/a&gt;, a YouTube client for Windows, Mac, and Linux built around using YouTube more privately.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2FA&lt;/strong&gt;: I ditched google authenticator to use &lt;a href=&quot;https://freeotp.github.io/&quot;&gt;Freeotp&lt;/a&gt;.	&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Navigation&lt;/strong&gt;: I ditched google maps and waze to use &lt;a href=&quot;https://osmand.net/&quot;&gt;OsmAnd&lt;/a&gt;. It&apos;s great for Map Viewing and Navigation for both Online and Offline. I like the vintage look and feel and amount of details in there.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RSS&lt;/strong&gt;: The good ol&apos; days of leveraging RSS technology should never have disappeared. But it (stangely) is what occurred in my case. I&apos;m back at it, and I use &lt;a href=&quot;https://www.vienna-rss.com/&quot;&gt;Vienna RSS&lt;/a&gt; for this. Great native macOS Open Source project, that gets the info to me, as opposed to go get it and get tracked.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Office softwares&lt;/strong&gt;: I&apos;ve moved away from google docs/sheets/slides to &lt;a href=&quot;https://www.libreoffice.org/&quot;&gt;Libre Office&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Other softwares&lt;/strong&gt;: I make the most of the &lt;a href=&quot;https://framalibre.org/annuaires/logiciel&quot;&gt;Framalibre software alternatives&lt;/a&gt; by the great &lt;a href=&quot;https://framasoft.org/en/&quot;&gt;Framasoft&lt;/a&gt;, and use as a few examples: &lt;a href=&quot;https://jitsi.org/&quot;&gt;Jitsi&lt;/a&gt; instead of Hangouts/Skype, &lt;a href=&quot;https://framadate.org/&quot;&gt;Framadate&lt;/a&gt; instead of doodle.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Yet to test (mytodo)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Password manager&lt;/strong&gt;: &lt;a href=&quot;https://bitwarden.com/&quot;&gt;Bitwarden&lt;/a&gt; which I would like to test self-hosted. I&apos;m on another password manager app at the moment, but switching to an open-source solution would be nice.&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[Spin up php server locally with Docker]]></title><description><![CDATA[Almost same use case and files than last time.
But this time, using Docker, which I had been wanting to test out for so long. Everything is…]]></description><link>https://flopreynat.com/blog/2019-12-26-php-server-docker</link><guid isPermaLink="false">https://flopreynat.com/blog/2019-12-26-php-server-docker</guid><pubDate>Thu, 26 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Almost same use case and files than &lt;a href=&quot;http://flopreynat.com/posts/2019-12-01-php-server-spin-easy/&quot;&gt;last time&lt;/a&gt;.
But this time, using Docker, which I had been wanting to test out for so long.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker run -p 80:80 -v /Users/your-username/path-to-docker-folder/src/:/var/www/html/ hello-world
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Everything is brilliantly explained on this &lt;a href=&quot;https://www.youtube.com/watch?v=YFl2mCHdv24&quot;&gt;Learn Docker in 12 Minutes&lt;/a&gt; video.&lt;/p&gt;
&lt;p&gt;Like on last post, proof files &lt;a href=&quot;https://github.com/flopreynat/php-server-docker&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So long.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Spin up php server locally in no time]]></title><description><![CDATA[Another post on tooling with this time a quick and easy way to locally spin up a php server, for - say - php templating and testing.  As…]]></description><link>https://flopreynat.com/blog/2019-12-01-php-server-spin-easy</link><guid isPermaLink="false">https://flopreynat.com/blog/2019-12-01-php-server-spin-easy</guid><pubDate>Sun, 01 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Another post on tooling with this time a quick and easy way to locally spin up a php server, for - say - php templating and testing. &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;php -S localhost:2222
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As mentioned &lt;a href=&quot;https://www.php.net/manual/en/features.commandline.webserver.php&quot;&gt;here&lt;/a&gt;, the CLI SAPI provides a built-in web server (as of PHP 5.4.0). &lt;/p&gt;
&lt;p&gt;It is not intended to be a full-featured web server. But designed to aid application development.&lt;/p&gt;
&lt;p&gt;Using the above command line is pretty much all is needed.
Proof &lt;a href=&quot;https://github.com/flopreynat/php-server&quot;&gt;here&lt;/a&gt; with a tiny templated php website.&lt;/p&gt;
&lt;p&gt;So long.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Crop documents with Mac's Preview]]></title><description><![CDATA[So you want to quickly/cheaply crop a jpg or pdf but have no tools lying around your mac to do so.
There's actually an easy way to do it…]]></description><link>https://flopreynat.com/blog/2019-10-06-crop-documents-mac-preview</link><guid isPermaLink="false">https://flopreynat.com/blog/2019-10-06-crop-documents-mac-preview</guid><pubDate>Sun, 06 Oct 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So you want to quickly/cheaply crop a jpg or pdf but have no tools lying around your mac to do so.
There&apos;s actually an easy way to do it using Mac&apos;s native image and PDF viewer Preview. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Command + K&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Really handy way if you can&apos;t be bothered installing gimp, or alternative.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the file in Preview&lt;/li&gt;
&lt;li&gt;Select Tools &gt; Rectangular Selection&lt;/li&gt;
&lt;li&gt;Draw your selection area on the file&lt;/li&gt;
&lt;li&gt;Use Command + K to crop the image&lt;/li&gt;
&lt;li&gt;Save your document &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So long.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Quick way to run a windows application on a mac]]></title><description><![CDATA[From time to time, as a mac owner, you'll have to run a Windows application for testing (or other) purposes. Obviously, there are tons of…]]></description><link>https://flopreynat.com/blog/2019-08-02-quick-way-run-windows-application-on-mac</link><guid isPermaLink="false">https://flopreynat.com/blog/2019-08-02-quick-way-run-windows-application-on-mac</guid><pubDate>Fri, 02 Aug 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;From time to time, as a mac owner, you&apos;ll have to run a Windows application for testing (or other) purposes.&lt;/p&gt;
&lt;p&gt;Obviously, there are tons of solutions allowing you to run windows on a mac, but not all are light, free and quick wins.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;VIRTUALIZATION TIME&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The quickest and easisest way (to me) is to use &lt;a href=&quot;https://www.virtualbox.org/&quot;&gt;Virtualbox&lt;/a&gt; (open source and free), download a free virtual Windows machine from the &lt;a href=&quot;https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/&quot;&gt;Microsoft developer website&lt;/a&gt;, and spin it.&lt;/p&gt;
&lt;p&gt;So, ok, those virtual machines expire after 90 days. In most cases, this will be way enough for you to test your application, and run your stuff.&lt;/p&gt;
&lt;p&gt;One thing you may need while you&apos;re playing with your windows machine, is to share things with your mac. Sharing folders between your machine and a VM is not native. Here&apos;s how you do it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In Virtualbox, select your VM, and go to Settings &gt; Shared Folders, and add the folder (on your mac) you wish to use on your VM&lt;/li&gt;
&lt;li&gt;Then go to Settings &gt; Storage and add an optical drive (+ and cdrom icon) to your IDE controller (choose &apos;Leave Empty&apos;)&lt;/li&gt;
&lt;li&gt;Start your VM&lt;/li&gt;
&lt;li&gt;In Virtulabox, go to Devices &gt; Insert Guest Additions CD Image, and run the install program&lt;/li&gt;
&lt;li&gt;Once the program has been installed, reboot your VM&lt;/li&gt;
&lt;li&gt;That&apos;s it, ope file explorer, your file sharing folder should be appearing in there.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hope this helps. &lt;/p&gt;</content:encoded></item><item><title><![CDATA[Macbook Pro boot up issue with no startup chime... WTF]]></title><description><![CDATA[Already talked about this issue once... here, except this time I don't have the chance to hear the startup chime, nor to reset any PRAM…]]></description><link>https://flopreynat.com/blog/2019-02-16-macbook-pro-boot-up-issue-no-startup-chime.md</link><guid isPermaLink="false">https://flopreynat.com/blog/2019-02-16-macbook-pro-boot-up-issue-no-startup-chime.md</guid><pubDate>Sat, 16 Feb 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Already talked about this issue once... &lt;a href=&quot;http://flopreynat.com/posts/2015-12-23-macbook-pro-boots-to-black-screen&quot;&gt;here&lt;/a&gt;, except this time I don&apos;t have the chance to hear the startup chime, nor to reset any PRAM, nothing.&lt;/p&gt;
&lt;p&gt;The only chance I get is to enter my password and see the apple screen get stuck for ever.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;SAFE MODE&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Once I enter my password, the only thing I can do is press on the SHIFT key and hold it, until I enter the Safe mode.&lt;/p&gt;
&lt;p&gt;At this stage, If you reboot, or try any disk utility, it should not fix the issue.
If you&apos;re lucky (like me), you&apos;ll have some software updates to install.&lt;/p&gt;
&lt;p&gt;Launch the download/restart and install and hope for the best.
It did work in my case.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Github: 2FA and personal token]]></title><description><![CDATA[So you've decided to turn on two-factor authentication (as you do) for your github account and you can't commit (anymore) to your repos…]]></description><link>https://flopreynat.com/blog/2018-03-23-github-2fa-commandline</link><guid isPermaLink="false">https://flopreynat.com/blog/2018-03-23-github-2fa-commandline</guid><pubDate>Fri, 23 Mar 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So you&apos;ve decided to turn on two-factor authentication (as you do) for your github account and you can&apos;t commit (anymore) to your repos using the command line. &lt;/p&gt;
&lt;p&gt;TL;DR&lt;/p&gt;
&lt;p&gt;Create a personal token.&lt;/p&gt;
&lt;p&gt;You won&apos;t be asked to provide a 2FA code when authenticating to GitHub on the command line using HTTPS URLs.
Instead, you must create a personal access token and use its as a password.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log into your account&lt;/li&gt;
&lt;li&gt;Click on your avatar, then Settings&lt;/li&gt;
&lt;li&gt;Click on Developer Settings&lt;/li&gt;
&lt;li&gt;Choose Personal access tokens&lt;/li&gt;
&lt;li&gt;Generate new token&lt;/li&gt;
&lt;li&gt;Give your token a name&lt;/li&gt;
&lt;li&gt;Select the scope and permissions of your token&lt;/li&gt;
&lt;li&gt;Use your token as your password when prompted in the terminal&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Done ;)&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Fontawesome Alfred Workflow]]></title><description><![CDATA[You have Alfred and use it on a regular basis?   Your job is to build websites, or simple protoypes? You're a fan of Font Awesome? Then you…]]></description><link>https://flopreynat.com/blog/2018-01-01-fontawesome-alfred-workflow</link><guid isPermaLink="false">https://flopreynat.com/blog/2018-01-01-fontawesome-alfred-workflow</guid><pubDate>Mon, 01 Jan 2018 00:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;You have &lt;a href=&quot;https://www.alfredapp.com/&quot;&gt;Alfred&lt;/a&gt; and use it on a regular basis?  &lt;/li&gt;
&lt;li&gt;Your job is to build websites, or simple protoypes?&lt;/li&gt;
&lt;li&gt;You&apos;re a fan of &lt;a href=&quot;https://fontawesome.com/&quot;&gt;Font Awesome&lt;/a&gt;?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Then you can leverage the power of Alfred&apos;s Workflow and use it on the fly when including font awesome parameters into your designs.&lt;/p&gt;
&lt;p&gt;Simply donwload Alfred&apos;s &lt;a href=&quot;https://github.com/ruedap/alfred-font-awesome-workflow#installation&quot;&gt;Font Awesome worklfow&lt;/a&gt;, and you&apos;re good to go.&lt;/p&gt;
&lt;p&gt;Invoke the use of Alfred while designing (usually with &apos;ALT+ENTER&apos;), type fa and search through the available icons, pick one and click &apos;ENTER&apos;, your class is in your design.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[No camera was found]]></title><description><![CDATA[You're most likely running on Mavericks, or El Capitan, are using your mac or a monitor with integrated camera, and keep on getting…]]></description><link>https://flopreynat.com/blog/2017-05-31-camera-not-detected-hangout</link><guid isPermaLink="false">https://flopreynat.com/blog/2017-05-31-camera-not-detected-hangout</guid><pubDate>Wed, 31 May 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You&apos;re most likely running on Mavericks, or El Capitan, are using your mac or a monitor with integrated camera, and keep on getting something along the lines of &apos;no camera was found&apos; messages from Hangout or other web conferencing apps.&lt;/p&gt;
&lt;p&gt;Issue happened to me on dozens of times with an Apple Thunderbolt.&lt;/p&gt;
&lt;p&gt;This post isn&apos;t intended to get to the bottom of this issue. So you can put back the screwdrivers where they belong.
These few lines are only here to present you with a workaround, and remind myself of this little fix.&lt;/p&gt;
&lt;p&gt;So,... Issue seems related to the VDCAssistant process getting invoked every time the camera is being used by an app, but not properly closing, hence blocking its future use.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Kill &apos;em all&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Open the terminal, and run the following command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo killall VDCAssistant
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You&apos;ll need to input your master password. Camera should be up again.
For now...&lt;/p&gt;
&lt;p&gt;As I said, just a workaround.&lt;/p&gt;
&lt;p&gt;So long.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Responsive email design framework MJML to the test]]></title><description><![CDATA[Email design is a real pain in the arse. We all know that. Therefore I decided to give mjml a go. For those who don't know of mjml.io, it's…]]></description><link>https://flopreynat.com/blog/2017-05-16-responsive-email-design-framework-mjml</link><guid isPermaLink="false">https://flopreynat.com/blog/2017-05-16-responsive-email-design-framework-mjml</guid><pubDate>Tue, 16 May 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Email design is a real pain in the arse. We all know that. Therefore I decided to give &lt;a href=&quot;https://mjml.io/&quot;&gt;mjml&lt;/a&gt; a go. For those who don&apos;t know of mjml.io, it&apos;s a responsive email design framework built by a team of developers at &lt;a href=&quot;https://www.mailjet.com&quot;&gt;Mailjet&lt;/a&gt;, a competitor of &lt;a href=&quot;https://mailchimp.com/&quot;&gt;Mailchimp&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The beauty of this framework results in the fact that you create something very much close to html, using an MJML markup language, and as mentioned in its detailed documentation, &lt;em&gt;&quot;its semantic syntax makes it easy and straightforward and its rich standard components library speeds up your development time and lightens your email codebase.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;MJML’s open-source engine, which is - by the way - written in &lt;a href=&quot;https://nodejs.org/en/&quot;&gt;NodeJS&lt;/a&gt; (hence easily installed via &lt;a href=&quot;https://www.npmjs.com/package/mjml&quot;&gt;npm&lt;/a&gt;), leverages ReactJS and takes your mjml email designs to process high quality responsive HTML compliant with best practices. That&apos;s the whole idea.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Easy and quick, Responsive, Component based&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As I had nothing much to work with for starters, I decided to use somebody else&apos;s work, and picked this beautiful minimalistic &lt;a href=&quot;https://dribbble.com/shots/1518379-Newsletter&quot;&gt;newsletter&lt;/a&gt; (designed by Dmitri Litvinov) I found on dribbble.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 750px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 65.42553191489361%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAUEBv/EABUBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAHPVk14eeFn/8QAGhAAAQUBAAAAAAAAAAAAAAAAAwABAgQRNP/aAAgBAQABBQKr0GjgFWfD2J6Bf//EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAEDAQE/Aaf/xAAXEQEAAwAAAAAAAAAAAAAAAAABAhAR/9oACAECAQE/AWAu1//EABgQAAMBAQAAAAAAAAAAAAAAAAACEANx/9oACAEBAAY/AlNORR5//8QAGhABAAIDAQAAAAAAAAAAAAAAAQAREHGxMf/aAAgBAQABPyEWG+R2KYXLfJQK9Mf/2gAMAwEAAgADAAAAEFgP/8QAFhEBAQEAAAAAAAAAAAAAAAAAARAR/9oACAEDAQE/EBBk/8QAFhEBAQEAAAAAAAAAAAAAAAAAARAx/9oACAECAQE/ECT0n//EAB4QAAEDBAMAAAAAAAAAAAAAAAEAETEQIUFhcYGh/9oACAEBAAE/EDApIH0jUAsDcilr3aHZRryvsap//9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;newsletter model&quot;
        title=&quot;newsletter model&quot;
        src=&quot;/static/0d97eb1e461b30bd34b99eb61e8dea02/acb04/mjml-dribbble-model.jpg&quot;
        srcset=&quot;/static/0d97eb1e461b30bd34b99eb61e8dea02/bc01b/mjml-dribbble-model.jpg 188w,
/static/0d97eb1e461b30bd34b99eb61e8dea02/bf173/mjml-dribbble-model.jpg 375w,
/static/0d97eb1e461b30bd34b99eb61e8dea02/acb04/mjml-dribbble-model.jpg 750w,
/static/0d97eb1e461b30bd34b99eb61e8dea02/ec605/mjml-dribbble-model.jpg 1125w,
/static/0d97eb1e461b30bd34b99eb61e8dea02/c58a3/mjml-dribbble-model.jpg 1500w,
/static/0d97eb1e461b30bd34b99eb61e8dea02/b68c0/mjml-dribbble-model.jpg 1640w&quot;
        sizes=&quot;(max-width: 750px) 100vw, 750px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I won&apos;t go into the details of the design process but with the help of the doc, I put all the components together in a matter of minutes, generated the html template using the terminal and the follwowing syntax:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mjml yourfile.mjml
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Results&lt;/h4&gt;
&lt;p&gt;Here&apos;s the final result of my work in both gmail and protonmail.
Something not only esthetic but fully functional.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 750px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 65.42553191489361%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAMBAgX/xAAVAQEBAAAAAAAAAAAAAAAAAAABA//aAAwDAQACEAMQAAAB2KuiSscD/8QAGBABAAMBAAAAAAAAAAAAAAAAAQACEiD/2gAIAQEAAQUCsMdQ1x//xAAWEQEBAQAAAAAAAAAAAAAAAAAAERL/2gAIAQMBAT8BrT//xAAYEQACAwAAAAAAAAAAAAAAAAAAAQMTYf/aAAgBAgEBPwFxoq0//8QAFxAAAwEAAAAAAAAAAAAAAAAAABAhAf/aAAgBAQAGPwKEer//xAAaEAADAQADAAAAAAAAAAAAAAAAASEREHGh/9oACAEBAAE/IWWteiVWkbvCd7Gn/9oADAMBAAIAAwAAABB/D//EABYRAQEBAAAAAAAAAAAAAAAAAAABcf/aAAgBAwEBPxCWw//EABgRAQADAQAAAAAAAAAAAAAAAAEAESFB/9oACAECAQE/EFK27CvU/8QAHBABAAMAAgMAAAAAAAAAAAAAAQARITFhcYGh/9oACAEBAAE/EH6o9IA1Bpp6IKefzMQsuFqc2+EzgT//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;mjml results&quot;
        title=&quot;mjml results&quot;
        src=&quot;/static/7a1116b44827897488e36e67453d38e0/acb04/mjml-results.jpg&quot;
        srcset=&quot;/static/7a1116b44827897488e36e67453d38e0/bc01b/mjml-results.jpg 188w,
/static/7a1116b44827897488e36e67453d38e0/bf173/mjml-results.jpg 375w,
/static/7a1116b44827897488e36e67453d38e0/acb04/mjml-results.jpg 750w,
/static/7a1116b44827897488e36e67453d38e0/ec605/mjml-results.jpg 1125w,
/static/7a1116b44827897488e36e67453d38e0/c58a3/mjml-results.jpg 1500w,
/static/7a1116b44827897488e36e67453d38e0/b68c0/mjml-results.jpg 1640w&quot;
        sizes=&quot;(max-width: 750px) 100vw, 750px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Verdict&lt;/h4&gt;
&lt;p&gt;If you&apos;re willing to send what looks like a professional responsive email, without having to use a third-party design service, then I defo advise you to give mjml a shot.&lt;/p&gt;
&lt;p&gt;So long.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[DuckDuckGo hacks for developers]]></title><description><![CDATA[DuckDuckGo is by far the best search engine out there. For your own privacy for starters, and also as a great little tool for us dev folks…]]></description><link>https://flopreynat.com/blog/2017-04-18-duckduckgo-hacks-for-developers</link><guid isPermaLink="false">https://flopreynat.com/blog/2017-04-18-duckduckgo-hacks-for-developers</guid><pubDate>Tue, 18 Apr 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;DuckDuckGo is by far the best search engine out there. For your own privacy for starters, and also as a great little tool for us dev folks, adept of quick tech &amp;#x26; code answers, and geeky little features. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Smarter Search!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A few tips and tricks that you may not know of. I&apos;ve been using some for few for months, and only discovered others in the last few days.&lt;/p&gt;
&lt;h4&gt;Navigation&lt;/h4&gt;
&lt;p&gt;Navigate through search results using Vim Line Navigation
k – navigate upwards
j – navigate downwards&lt;/p&gt;
&lt;h4&gt;Cheatsheets&lt;/h4&gt;
&lt;p&gt;DuckDuckGo offers a wide range of cheatsheets. Try them out. Just type the language, app, or software of your choice + cheatsheet.
e.g. &lt;a href=&quot;https://duckduckgo.com/?q=jquery+cheatsheet&amp;#x26;t=ffab&amp;#x26;ia=cheatsheet&quot;&gt;&quot;jquery cheatsheet&quot;&lt;/a&gt;, &lt;a href=&quot;https://duckduckgo.com/?q=css+cheatsheet&amp;#x26;t=ffab&amp;#x26;ia=cheatsheet&quot;&gt;&quot;css cheatsheet&quot;&lt;/a&gt;, &lt;a href=&quot;https://duckduckgo.com/?q=javascript+cheatsheet&amp;#x26;t=ffab&amp;#x26;ia=cheatsheet&quot;&gt;&quot;javascript cheatsheet&quot;&lt;/a&gt;, etc&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 750px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 26.063829787234045%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAFABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAEF/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAAB2aAH/8QAFhABAQEAAAAAAAAAAAAAAAAAAAER/9oACAEBAAEFAtalf//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABQQAQAAAAAAAAAAAAAAAAAAABD/2gAIAQEABj8Cf//EABYQAQEBAAAAAAAAAAAAAAAAAAERAP/aAAgBAQABPyGq6rlTf//aAAwDAQACAAMAAAAQ88//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAYEAEBAQEBAAAAAAAAAAAAAAABEQAxQf/aAAgBAQABPxBAR5k4vl1A7//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;duckduckgo cheatsheet&quot;
        title=&quot;duckduckgo cheatsheet&quot;
        src=&quot;/static/9a268999eb94e4ded804940a77bc9c65/acb04/duckduckgo-cheatsheet.jpg&quot;
        srcset=&quot;/static/9a268999eb94e4ded804940a77bc9c65/bc01b/duckduckgo-cheatsheet.jpg 188w,
/static/9a268999eb94e4ded804940a77bc9c65/bf173/duckduckgo-cheatsheet.jpg 375w,
/static/9a268999eb94e4ded804940a77bc9c65/acb04/duckduckgo-cheatsheet.jpg 750w,
/static/9a268999eb94e4ded804940a77bc9c65/ec605/duckduckgo-cheatsheet.jpg 1125w,
/static/9a268999eb94e4ded804940a77bc9c65/c58a3/duckduckgo-cheatsheet.jpg 1500w,
/static/9a268999eb94e4ded804940a77bc9c65/b68c0/duckduckgo-cheatsheet.jpg 1640w&quot;
        sizes=&quot;(max-width: 750px) 100vw, 750px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Validators, converters and beautifiers&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;https://duckduckgo.com/?q=json+validation&amp;#x26;ia=answer&quot;&gt;&quot;JSON Beautifier &amp;#x26; Validator&quot;&lt;/a&gt;, &lt;a href=&quot;https://duckduckgo.com/?q=HTML+beautifier&amp;#x26;ia=answer&quot;&gt;&quot;HTML beautifier&quot;&lt;/a&gt;, &lt;a href=&quot;https://duckduckgo.com/?q=sass+to+css&amp;#x26;ia=answer&quot;&gt;&quot;Sass to Css Converter&quot;&lt;/a&gt;, and more...&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 750px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 26.063829787234045%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAFABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAIF/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAAB26AD/8QAFBABAAAAAAAAAAAAAAAAAAAAEP/aAAgBAQABBQJ//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFBABAAAAAAAAAAAAAAAAAAAAEP/aAAgBAQAGPwJ//8QAFxAAAwEAAAAAAAAAAAAAAAAAABARQf/aAAgBAQABPyHVT//aAAwDAQACAAMAAAAQgA//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAZEAEAAgMAAAAAAAAAAAAAAAABABEhQVH/2gAIAQEAAT8QGlllptluz//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;duckduckgo json validation&quot;
        title=&quot;duckduckgo json validation&quot;
        src=&quot;/static/f0be12c9f34044b1db530c79edcc3370/acb04/duckduckgo-json-validation.jpg&quot;
        srcset=&quot;/static/f0be12c9f34044b1db530c79edcc3370/bc01b/duckduckgo-json-validation.jpg 188w,
/static/f0be12c9f34044b1db530c79edcc3370/bf173/duckduckgo-json-validation.jpg 375w,
/static/f0be12c9f34044b1db530c79edcc3370/acb04/duckduckgo-json-validation.jpg 750w,
/static/f0be12c9f34044b1db530c79edcc3370/ec605/duckduckgo-json-validation.jpg 1125w,
/static/f0be12c9f34044b1db530c79edcc3370/c58a3/duckduckgo-json-validation.jpg 1500w,
/static/f0be12c9f34044b1db530c79edcc3370/b68c0/duckduckgo-json-validation.jpg 1640w&quot;
        sizes=&quot;(max-width: 750px) 100vw, 750px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Colors&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;https://duckduckgo.com/?q=color+picker&amp;#x26;ia=answer&quot;&gt;&quot;Color picker&quot;&lt;/a&gt; with RGB, HSV, CMYK conversion and &lt;a href=&quot;https://duckduckgo.com/?q=%23000000&amp;#x26;ia=answer&quot;&gt;&quot;Hex code converter&quot;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 750px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 26.063829787234045%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAFABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAIDBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHTvKmI/8QAGBAAAgMAAAAAAAAAAAAAAAAAARMAAhH/2gAIAQEAAQUCYXi2mf/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAECAQE/AWf/xAAZEAABBQAAAAAAAAAAAAAAAAABAAIQEUH/2gAIAQEABj8CLMpGP//EABgQAAMBAQAAAAAAAAAAAAAAAAABESFR/9oACAEBAAE/IY4IVkBwrP/aAAwDAQACAAMAAAAQD8//xAAVEQEBAAAAAAAAAAAAAAAAAAABEP/aAAgBAwEBPxBn/8QAFxEBAAMAAAAAAAAAAAAAAAAAARARcf/aAAgBAgEBPxABWR//xAAaEAEBAAIDAAAAAAAAAAAAAAABEQAhUWHB/9oACAEBAAE/EEDCRZurjRQuXnQ+53Z//9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;duckduckgo color&quot;
        title=&quot;duckduckgo color&quot;
        src=&quot;/static/3aaaaabb9fb12ee1c6c69c70575eb230/acb04/duckduckgo-color.jpg&quot;
        srcset=&quot;/static/3aaaaabb9fb12ee1c6c69c70575eb230/bc01b/duckduckgo-color.jpg 188w,
/static/3aaaaabb9fb12ee1c6c69c70575eb230/bf173/duckduckgo-color.jpg 375w,
/static/3aaaaabb9fb12ee1c6c69c70575eb230/acb04/duckduckgo-color.jpg 750w,
/static/3aaaaabb9fb12ee1c6c69c70575eb230/ec605/duckduckgo-color.jpg 1125w,
/static/3aaaaabb9fb12ee1c6c69c70575eb230/c58a3/duckduckgo-color.jpg 1500w,
/static/3aaaaabb9fb12ee1c6c69c70575eb230/b68c0/duckduckgo-color.jpg 1640w&quot;
        sizes=&quot;(max-width: 750px) 100vw, 750px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Q/A&lt;/h4&gt;
&lt;p&gt;...on coding questions like &lt;a href=&quot;https://duckduckgo.com/?q=how+to+select+img+with+jquery&amp;#x26;ia=qa&quot;&gt;&quot;how to select img with jquery&quot;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 750px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 26.063829787234045%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAFABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAEF/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAAB26FB/8QAFBABAAAAAAAAAAAAAAAAAAAAEP/aAAgBAQABBQJ//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFBABAAAAAAAAAAAAAAAAAAAAEP/aAAgBAQAGPwJ//8QAFRABAQAAAAAAAAAAAAAAAAAAABH/2gAIAQEAAT8hVX//2gAMAwEAAgADAAAAEPPP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAGRABAQEAAwAAAAAAAAAAAAAAAREAITFR/9oACAEBAAE/EHhOp5hrJqN//9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;duckduckgo q&amp;amp;a&quot;
        title=&quot;duckduckgo q&amp;amp;a&quot;
        src=&quot;/static/29de22912501cd56e38298b12d68a3a3/acb04/duckduckgo-qa.jpg&quot;
        srcset=&quot;/static/29de22912501cd56e38298b12d68a3a3/bc01b/duckduckgo-qa.jpg 188w,
/static/29de22912501cd56e38298b12d68a3a3/bf173/duckduckgo-qa.jpg 375w,
/static/29de22912501cd56e38298b12d68a3a3/acb04/duckduckgo-qa.jpg 750w,
/static/29de22912501cd56e38298b12d68a3a3/ec605/duckduckgo-qa.jpg 1125w,
/static/29de22912501cd56e38298b12d68a3a3/c58a3/duckduckgo-qa.jpg 1500w,
/static/29de22912501cd56e38298b12d68a3a3/b68c0/duckduckgo-qa.jpg 1640w&quot;
        sizes=&quot;(max-width: 750px) 100vw, 750px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Bangs&lt;/h4&gt;
&lt;p&gt;If you wish to look for something on a specific site, like Stack Overflow (!stack + query) or CSS-Tricks (!csstricks + query). The list of bangs is &lt;a href=&quot;https://duckduckgo.com/bang&quot;&gt;&quot;here&quot;&lt;/a&gt;.
Here&apos;s a cool one you can try yourselves: &lt;a href=&quot;!caniuse%20flexbox&quot;&gt;&quot;!caniuse flexbox&quot;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 750px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 26.063829787234045%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAFABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAEFBv/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAG8zwQE/8QAGBAAAwEBAAAAAAAAAAAAAAAAAgQSAUH/2gAIAQEAAQUC6K9iS07/AP/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABoQAAICAwAAAAAAAAAAAAAAAAABETESUZL/2gAIAQEABj8CMpV6LXJ//8QAGBABAQEBAQAAAAAAAAAAAAAAEQEAIUH/2gAIAQEAAT8hFOlcjcO/dIF5n//aAAwDAQACAAMAAAAQc/8A/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFREBAQAAAAAAAAAAAAAAAAAAEBH/2gAIAQIBAT8Qh//EABoQAAICAwAAAAAAAAAAAAAAAAERADEhYcH/2gAIAQEAAT8QqiBAQUQfsjLi3B/NM0HdT//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;duckduckgo bangs&quot;
        title=&quot;duckduckgo bangs&quot;
        src=&quot;/static/6b87d9637c31f8c708444e672fd64e49/acb04/duckduckgo-bangs.jpg&quot;
        srcset=&quot;/static/6b87d9637c31f8c708444e672fd64e49/bc01b/duckduckgo-bangs.jpg 188w,
/static/6b87d9637c31f8c708444e672fd64e49/bf173/duckduckgo-bangs.jpg 375w,
/static/6b87d9637c31f8c708444e672fd64e49/acb04/duckduckgo-bangs.jpg 750w,
/static/6b87d9637c31f8c708444e672fd64e49/ec605/duckduckgo-bangs.jpg 1125w,
/static/6b87d9637c31f8c708444e672fd64e49/c58a3/duckduckgo-bangs.jpg 1500w,
/static/6b87d9637c31f8c708444e672fd64e49/b68c0/duckduckgo-bangs.jpg 1640w&quot;
        sizes=&quot;(max-width: 750px) 100vw, 750px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Personal Data Privacy: start off 2017 on the right foot]]></title><description><![CDATA[New year new start. What a great opportunity to start it off on the right foot and greatly improve your behaviour and overall awareness on…]]></description><link>https://flopreynat.com/blog/2017-01-03-personal-data-privacy-2017</link><guid isPermaLink="false">https://flopreynat.com/blog/2017-01-03-personal-data-privacy-2017</guid><pubDate>Tue, 03 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;New year new start&lt;/strong&gt;. What a great opportunity to start it off on the right foot and greatly improve your behaviour and overall awareness on the personal data privacy subject. You will feel great and you will start breaking the chain!&lt;/p&gt;
&lt;p&gt;As discussed last time &lt;a href=&quot;http://flopreynat.com/posts/2016-11-17-data-privacy-series/&quot;&gt;we talked on the matter&lt;/a&gt;, our personal data privacy matters a lot, and yet, it is being violated more and more.&lt;/p&gt;
&lt;p&gt;A quick glimpse at the news tell us &lt;a href=&quot;http://www.androidauthority.com/prime-minister-mays-surveillance-law-729874/&quot;&gt;the UK and Theresa May are trying to pass a law&lt;/a&gt; that will make it obligatory for internet providers to store every user’s history for up to a year (although &lt;a href=&quot;http://curia.europa.eu/juris/document/document.jsf?text=&amp;#x26;docid=186492&amp;#x26;pageIndex=0&amp;#x26;doclang=EN&amp;#x26;mode=req&amp;#x26;dir=&amp;#x26;occ=first&amp;#x26;part=1&amp;#x26;cid=516300&quot;&gt;the text has just been declared unlawful by EU&apos;s Highest Court&lt;/a&gt;), or the &lt;a href=&quot;https://netzpolitik.org/2016/projekt-aniski-wie-der-bnd-mit-150-millionen-euro-messenger-wie-whatsapp-entschluesseln-will&quot;&gt;German secret services are allegedly wanting to decrypt messengers like WhatsApp&lt;/a&gt; via the ANISKI project.
Mass surveillance is a hot topic, and defo on the rise these days.&lt;/p&gt;
&lt;h3&gt;Big Deal, I have nothing to hide.&lt;/h3&gt;
&lt;hr&gt;
&lt;p&gt;Killing the &apos;nothing to hide&apos; argument is probably the easiest thing in the world, so try it yourselves (just for fun) if an idiot tells you he/she has nothing to hide, with this set of decent questions/requests I heard a few folks suggest.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;Why the fuck do you have curtains in your house?&quot;&lt;/li&gt;
&lt;li&gt;&quot;Hand me all your passwords if you have fuck all to hide then.&quot;&lt;/li&gt;
&lt;li&gt;&quot;Give me your bank receipts of last year, since there&apos;s nothing spectacular in there.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;I don’t have anything to hide &lt;strong&gt;But I don’t have anything I feel like showing you, either.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;So Why is Mass Surveillance wrong?&lt;/h3&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;it invades our private life space&lt;/li&gt;
&lt;li&gt;we have absolutely no control of what is being recorded&lt;/li&gt;
&lt;li&gt;nor how long it is being stored&lt;/li&gt;
&lt;li&gt;it might not reflect reality &lt;/li&gt;
&lt;li&gt;it might reflect the reality and we might not want to let people know things&lt;/li&gt;
&lt;li&gt;it inhibits free speech&lt;/li&gt;
&lt;li&gt;it inhibits free association&lt;/li&gt;
&lt;li&gt;it puts free press in real danger&lt;/li&gt;
&lt;li&gt;it kills creativity&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;it has yet to be proved successful in the fight against terrorism&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;The thing is, ...this is far from new.&lt;/h3&gt;
&lt;hr&gt;
&lt;p&gt;As discussed in this series&apos; first post, people farming, or automated data processing by the likes of facebook, google and the rest is not only something we signed for (by agreeing to the unread and unreadable services&apos; terms and conditions), but something we have absolutely accepted as THE standard web app model. As in free but far from private.&lt;/p&gt;
&lt;p&gt;Examples are countless, but to name only one, feel free to check &lt;a href=&quot;https://www.uber.com/legal/terms/us/&quot;&gt;Über&apos;s latest terms of use update&lt;/a&gt;, where you grant Über a worldwide, perpetual, irrevocable, transferable, royalty-free license, with the right to sublicense, to use, copy, modify, create derivative works of, distribute, publicly display, publicly perform, and otherwise exploit in any manner any User Content.&lt;/p&gt;
&lt;p&gt;Talking about Big Brothers, you will also enjoy those quotes from a Google executive, stating &lt;em&gt;&quot;Google policy is to get right up to the creepy line and not cross it&quot;&lt;/em&gt;, or even &lt;em&gt;“With your permission you give us more information about you, about your friends, and we can improve the quality of our searches [...] We don&apos;t need you to type at all.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In addition, and as stated in a court filing, &lt;em&gt;&quot;all users of email must necessarily expect that their emails will be subject to automated processing. Just as a sender of a letter to a business colleague cannot be surprised that the recipient’s assistant opens the letter, people who use web-based email today cannot be surprised if their emails are processed by the recipient’s [email provider] in the course of delivery.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;OK, so Google is kind of reading your emails, facebook is recording everything you do/post/interact with for ever, and even if you don&apos;t use those services, you are being followed by countless trackers anywhere you go on the web. Not aware of this? Check out the &lt;a href=&quot;https://donottrack-doc.com/en/&quot;&gt;Do not track series&lt;/a&gt;, they surely will entertain you.&lt;/p&gt;
&lt;p&gt;So...&lt;/p&gt;
&lt;h3&gt;Any solutions out there?&lt;/h3&gt;
&lt;hr&gt;
&lt;p&gt;As clearly stated by Aral Balkan in &lt;a href=&quot;https://vimeo.com/190855745&quot;&gt;his talk&lt;/a&gt;, regulation, legislation, and ethical design are indeed the answers.&lt;/p&gt;
&lt;p&gt;But while waiting for our constitution reps to dump lobbyists and defend our digital rights, let&apos;s do our part.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Let&apos;s do our part and break the chain&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Do not use Facebook/Gmail/etc... if you can&lt;/li&gt;
&lt;li&gt;If you can’t, Do not put your whole life on Facebook, Twitter, etc...&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&quot;https://duckduckgo.com/&quot;&gt;DuckDuckGo&lt;/a&gt; as default search engine, as &lt;a href=&quot;https://duckduckgo.com/privacy&quot;&gt;they don&apos;t track you&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Block laptop camera + laptop microphone if you are not using them&lt;/li&gt;
&lt;li&gt;Turn off location on your mobile phone as much as you can&lt;/li&gt;
&lt;li&gt;Turn off your phone at night&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&quot;https://www.torproject.org/&quot;&gt;Tor&lt;/a&gt; as much as you can on your desktop&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&quot;https://guardianproject.info/apps/orbot/&quot;&gt;Orbot&lt;/a&gt; (and hence Orfox) as much as you can on your android if you have one&lt;/li&gt;
&lt;li&gt;If you don&apos;t have enough patience, use &lt;a href=&quot;https://www.mozilla.org/en-US/firefox/new/&quot;&gt;Mozilla&apos;s Firefox&lt;/a&gt; as default browser. Ok they get funded by the other big guns I&apos;m talking about (as they need mozilla&apos;s search traffic). But they&apos;re non profit, big on privacy and encryption, so let&apos;s give them credit.&lt;/li&gt;
&lt;li&gt;Block trackers (&lt;a href=&quot;https://ind.ie/&quot;&gt;Better from Indie&lt;/a&gt; for Safari, &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/&quot;&gt;uBlock Origin&lt;/a&gt; or &lt;a href=&quot;https://addons.mozilla.org/fr/firefox/addon/ghostery/&quot;&gt;Ghostery&lt;/a&gt;... although I&apos;m hearing things about Ghostery selling their stats back)&lt;/li&gt;
&lt;li&gt;Get a &lt;a href=&quot;https://protonmail.com/&quot;&gt;Protonmail&lt;/a&gt; account ffs! Paying a small amount for private email is good for you, and a very decent model &lt;/li&gt;
&lt;li&gt;Use &lt;a href=&quot;https://spideroak.com/&quot;&gt;Spideroak&lt;/a&gt; for cloud storage&lt;/li&gt;
&lt;li&gt;Use Signal from &lt;a href=&quot;https://whispersystems.org&quot;&gt;Open Whisper Systems&lt;/a&gt; for encrypted text messaging&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&quot;https://framatalk.org&quot;&gt;Framatalk&lt;/a&gt; or similar tool for video conference&lt;/li&gt;
&lt;li&gt;and probably the most important part of all:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;PASS THIS BLOODY MESSAGE ONTO YOUR FRIENDS AND RELATIVES !!
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Otherwise, happy new year!&lt;/p&gt;
&lt;p&gt;Publicly yours.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Create a PDF Compress Automator App]]></title><description><![CDATA[Every time I want to compress pdfs on a new apple machine, I find myself looking for the same (great) posts on the subject, and rarely find…]]></description><link>https://flopreynat.com/blog/2016-12-20-pdf-compress-automator-app</link><guid isPermaLink="false">https://flopreynat.com/blog/2016-12-20-pdf-compress-automator-app</guid><pubDate>Tue, 20 Dec 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every time I want to compress pdfs on a new apple machine, I find myself looking for the same (great) posts on the subject, and rarely find the one I&apos;m looking for.&lt;/p&gt;
&lt;p&gt;This is why I&apos;m putting up this nice (personal) go-to blog post on how to easily and quickly set up a PDF Compress Automator App, as I use the app almost every day.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;small is beautiful&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Right so, the steps are as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the &lt;a href=&quot;https://github.com/joshcarr/Apple-Quartz-Filters&quot;&gt;Apple Quartz filters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Move the filters to your ~/Library/ folder by launching Finder and using CMD + SHIFT + G to pull up the Go to access Library folder, and dropping a “Filters&quot; folder containing the quartz filters in there.&lt;/li&gt;
&lt;li&gt;Launch Automator and Create an Application by dragging the Apply Quartz Filter to PDF Documents from left to right, and set the desired options (eg Reduce to 150 dpi average quality - STANDARD COMPRESSION) before giving it a name (save it onto your desktop).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Done deal.&lt;/p&gt;
&lt;p&gt;You can now drag your pdf to your newly-created PDF Compress Application, and you&apos;ll get a fresh copy reduced in size (obviously)...&lt;/p&gt;</content:encoded></item><item><title><![CDATA[(Our Personal) Data Privacy Matters]]></title><description><![CDATA[(Our personal) Data Privacy is a big deal. If you, like me, get annoyed every time you receive an unwanted newsletter, or feel wary about…]]></description><link>https://flopreynat.com/blog/2016-11-17-data-privacy-series</link><guid isPermaLink="false">https://flopreynat.com/blog/2016-11-17-data-privacy-series</guid><pubDate>Thu, 17 Nov 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;(Our personal) Data Privacy is a big deal. If you, like me, get annoyed every time you receive an unwanted newsletter, or feel wary about looking up some specific items while logged in on google, you&apos;ll know what I&apos;m talking about.&lt;/p&gt;
&lt;p&gt;This subject has always been of great interest to me, both from personal and technoligcal stand points.
And as time passes by, and I see new generations of youngsters come into play, with absolutely no experience of what the time without the internet could have looked/felt like, it gets me thinking more and more about this situation, which I know isn&apos;t new, but is not getting any better to say the least.&lt;/p&gt;
&lt;p&gt;This is the reason why I am launching today with this quick post a series of articles on the subject.
I have made drastic changes in my personal life theses last few weeks, and this blog is a great way to keep the words of advice from all savvy people resonate, and share my actions and overall experience in improving my personal data privacy.&lt;/p&gt;
&lt;p&gt;Let&apos;s start with a cool prez from &lt;a href=&quot;https://ar.al/&quot;&gt;Aral Balkan&lt;/a&gt; who&apos;s taken his &lt;a href=&quot;https://ind.ie/beyond-the-clouds/&quot;&gt;Beyond The Clouds&lt;/a&gt; prez to another level with &apos;The Matrix, Inverted&apos;, a great talk on people faming made in Malmö, at the &lt;a href=&quot;http://oredev.org/&quot;&gt;Øredev Conference&lt;/a&gt; earlier this month.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If it&apos;s free, YOU are the product&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For your info, I have been following Aral&apos;s work for a few years now. Aral is big on Human Rights, Social Justice &amp;#x26; Ethical Design, and runs &lt;a href=&quot;https://ind.ie/&quot;&gt;ind.ie&lt;/a&gt;, a small social enterprise striving for social justice in the digital age.
His eloquence and passion for defending data privacy are second to none.&lt;/p&gt;
&lt;p&gt;Enjoy the wise words!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://vimeo.com/190855745&quot;&gt;The Matrix, Inverted&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Speed up your Salesforce admin search with Sid's Searchbox]]></title><description><![CDATA[If you're a Salesforce user, especially a developer or admin, you may spend most of your day in the Salesforce setup area, adding and…]]></description><link>https://flopreynat.com/blog/2016-10-12-salesforce-admin-search</link><guid isPermaLink="false">https://flopreynat.com/blog/2016-10-12-salesforce-admin-search</guid><pubDate>Wed, 12 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you&apos;re a Salesforce user, especially a developer or admin, you may spend most of your day in the Salesforce setup area, adding and editing apex classes, visualforce pages and adjusting other admin settings.&lt;/p&gt;
&lt;p&gt;Anything helping you stop wasting time on the setup area is more than welcome. Therefore I can only recommend you to give this chrome extension a go. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In Search of Speed&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Made by Salesforce MVP and Dreamforce 16 superstar ;) Sid Nagavarapu, &lt;a href=&quot;https://chrome.google.com/webstore/detail/salesforce-searchbox/moaokcjghnjifeeahifofckbmhofjdbi&quot;&gt;Salesforce Searchbox&lt;/a&gt; is a great way to gain in productivity by adding to all config pages a simple search box, which will search in all configuration items on the page.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 750px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 30.851063829787233%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAGABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAIF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAHboIFx/8QAFhAAAwAAAAAAAAAAAAAAAAAAAAEQ/9oACAEBAAEFAoz/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAQ/9oACAEBAAY/An//xAAZEAABBQAAAAAAAAAAAAAAAAAAARAhMUH/2gAIAQEAAT8hTYax/9oADAMBAAIAAwAAABAAP//EABYRAQEBAAAAAAAAAAAAAAAAAAABMf/aAAgBAwEBPxBdf//EABURAQEAAAAAAAAAAAAAAAAAAAAB/9oACAECAQE/EEf/xAAZEAEAAgMAAAAAAAAAAAAAAAABABEhMVH/2gAIAQEAAT8QYURjkNXUYjBrk//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;salesforce search admin&quot;
        title=&quot;salesforce search admin&quot;
        src=&quot;/static/37ca3a1be048fb476a7871164159d075/acb04/salesforce-admin-search-account.jpg&quot;
        srcset=&quot;/static/37ca3a1be048fb476a7871164159d075/bc01b/salesforce-admin-search-account.jpg 188w,
/static/37ca3a1be048fb476a7871164159d075/bf173/salesforce-admin-search-account.jpg 375w,
/static/37ca3a1be048fb476a7871164159d075/acb04/salesforce-admin-search-account.jpg 750w,
/static/37ca3a1be048fb476a7871164159d075/ec605/salesforce-admin-search-account.jpg 1125w,
/static/37ca3a1be048fb476a7871164159d075/c58a3/salesforce-admin-search-account.jpg 1500w,
/static/37ca3a1be048fb476a7871164159d075/b68c0/salesforce-admin-search-account.jpg 1640w&quot;
        sizes=&quot;(max-width: 750px) 100vw, 750px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The plugin supports some basic regex searches if you want to go fancy. In any case, you&apos;ll speed up your searches and will defo spend more time providing the most value to the CRM users.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[RSI and vertical mouse: a look back at the last 6 months]]></title><description><![CDATA[Repetitive strain injury (RSI) is a frequent issue when you spend 10+ hours a day in front of a computer, and it is something I have…]]></description><link>https://flopreynat.com/blog/2016-09-21-rsi-vertical-mouse</link><guid isPermaLink="false">https://flopreynat.com/blog/2016-09-21-rsi-vertical-mouse</guid><pubDate>Wed, 21 Sep 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Repetitive strain injury (RSI) is a frequent issue when you spend 10+ hours a day in front of a computer, and it is something I have unfortunately been experiencing these last few years.&lt;/p&gt;
&lt;p&gt;Since I own a mac, I have always been using a magic mouse, but as aching in my right hand (and arm) started to occur on a more regular basis, I started wondering whether this beautiful, yet - let&apos;s be honest - way too small device was the root of my problem.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;DANGER MOUSE !&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Discussing the matter with my osteopath quickly led to the option of using a vertical mouse, helping you  keep your hand in a natural position. This is why I moved to &apos;verticality&apos; 6 months ago, with the purchase of a basic &lt;a href=&quot;https://www.amazon.fr/gp/product/B00D84P8O8/ref=oh_aui_detailpage_o07_s00?ie=UTF8&amp;#x26;psc=1&quot;&gt;usb vertical mouse ZeleSouris&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A few reasons why I picked this low-budget mouse:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;this was going to be more like a pilot phase (so I thought)&lt;/li&gt;
&lt;li&gt;non-wireless mice are less heavy (no batteries), hence easier to move&lt;/li&gt;
&lt;li&gt;this specific device was not pricy hence more than worth a shot&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;6 months on and I have to admit this was the best choice ever. Getting used to it took only a few days as far as I was concerned. I doubt the mouse I picked is the best ever, but my RSI has gone for now.&lt;/p&gt;
&lt;p&gt;I can only advise you to ditch the good looks of the magic mouse for an old bulky mouse, a trackpad or a vertical mouse, should you suffer (or wish to prevent) from RSI.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Wordpress staging environments on the cheap]]></title><description><![CDATA[Staging environments are one of the keys of a (proper and) controlled deployment process, whatever the technology. Wordpress isn't any…]]></description><link>https://flopreynat.com/blog/2016-08-30-wordpress-staging-environment</link><guid isPermaLink="false">https://flopreynat.com/blog/2016-08-30-wordpress-staging-environment</guid><pubDate>Tue, 30 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Staging environments are one of the keys of a (proper and) controlled deployment process, whatever the technology. Wordpress isn&apos;t any different.&lt;/p&gt;
&lt;p&gt;You have a problem if you - like me - run a few things on wordpress, don&apos;t consider it as a priority subject (hence do not have the time, nor the money to commit on the suject), ...yet still want to make it a decent process. &lt;/p&gt;
&lt;p&gt;Typical &quot;have it both ways&quot; conundrum.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;DEV &gt; STAGING ENVIRONMENT &gt; PRODUCTION&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Anyway, here are a few options, my views on them, and eventually a decision.&lt;/p&gt;
&lt;h4&gt;Professional Wordpress hosting (Paid)&lt;/h4&gt;
&lt;p&gt;Best option is to get people (or an app) meant to do this for you. Defo the best option if this subject is top priority for you. &lt;a href=&quot;https://wpengine.com/support/staging/&quot;&gt;&quot;WPEngine&quot;&lt;/a&gt; or &lt;a href=&quot;https://mediatemple.net/community/products/wordpress/204645480/staging-sites-for-your-wordpress-hosting-service&quot;&gt;&quot;Media Temple&quot;&lt;/a&gt; come to mind to name only a few.&lt;/p&gt;
&lt;h4&gt;WP Migrate DB Pro (Paid)&lt;/h4&gt;
&lt;p&gt;A popular plugin, often praised on &lt;a href=&quot;http://shoptalkshow.com/&quot;&gt;&quot;ShopTalk Show&quot;&lt;/a&gt;, &lt;a href=&quot;https://deliciousbrains.com/wp-migrate-db-pro/pricing/&quot;&gt;&quot;WP Migrate DB Pro&quot;&lt;/a&gt; is a great option to get your wordpress sites in sync (all content including media) with one click. Cool option to implement a push to production process. Starting at 89 box.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: I ain&apos;t being sponsored for any of those paid options.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As mentioned above, I can&apos;t be investigating any resource in this subject. Yet, I want to be able to set up a few environments and sync content and settings in an easy (and quick process), without having to deal with media url issues (cough wordpress import cough).&lt;/p&gt;
&lt;p&gt;Let me emphasize on the repeatable process here since I really want to be able to do more than the usual local wp-cloud wp sync&apos;ing. Testing things as they live on the web has got to be a pre-requisite. Things happen differently when not happening on local machines.&lt;/p&gt;
&lt;p&gt;Anyway, I went with...&lt;/p&gt;
&lt;h4&gt;All-in-One WP Migration (Free)&lt;/h4&gt;
&lt;p&gt;As advertised, &lt;a href=&quot;https://wordpress.org/plugins/all-in-one-wp-migration/&quot;&gt;&quot;the plugin&quot;&lt;/a&gt; allows you to export your database, media files, plugins, and themes. You can apply unlimited find/replace operations on your database and the plugin will also fix any serialization problems that occur during find/replace operations.&lt;/p&gt;
&lt;p&gt;Not bad for a free option, and works like a charm to get those wordpress environments in sync.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Create a dribbble API-powered portfolio in no time]]></title><description><![CDATA[APIs are a foundational element in today's tech world. They help you enrich your data, and remain the best, simplest and quickest way to…]]></description><link>https://flopreynat.com/blog/2016-07-04-dribbble-api-portfolio</link><guid isPermaLink="false">https://flopreynat.com/blog/2016-07-04-dribbble-api-portfolio</guid><pubDate>Mon, 04 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;APIs are a foundational element in today&apos;s tech world. They help you enrich your data, and remain the best, simplest and quickest way to integrate to other engines, apps ... you name it.&lt;/p&gt;
&lt;p&gt;In this example, we&apos;ll focus on a quick (and dirty) dribble to website integration, helping you generate a dribbble-api-powered portfolio, and kill two birds with one stone. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Leveraging APIs Matters&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Quick &lt;a href=&quot;http://codepen.io/flopreynat/pen/oLgyZQ/&quot;&gt;codepen&lt;/a&gt; showing you in details how I did it.&lt;/p&gt;
&lt;p&gt;Do not be too judgemental on the overall design, this was made in a few minutes, throwing bootstrap on a page before connecting to my dribbble account.&lt;/p&gt;
&lt;p&gt;The longest part was to register an application on your dribbble account. Simply log into your account, navigate to Account Settings &gt; Applications, and register your app. You&apos;ll be needing your Client Access Token to make this work...&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Mac Finder freezes... WTF]]></title><description><![CDATA[Another blog post on Apple devices playing up (following the "boot to black screen" one) with this time, the way to resolve a frozen finder…]]></description><link>https://flopreynat.com/blog/2016-05-29-mac-finder-freezes</link><guid isPermaLink="false">https://flopreynat.com/blog/2016-05-29-mac-finder-freezes</guid><pubDate>Sun, 29 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Another blog post on Apple devices playing up (following the &lt;a href=&quot;http://flopreynat.com/posts/2015-12-23-macbook-pro-boots-to-black-screen/&quot;&gt;&quot;boot to black screen&quot;&lt;/a&gt; one) with this time, the way to resolve a frozen finder on OSX (Mavericks in my case).&lt;/p&gt;
&lt;p&gt;The thing happened to me a few months back, with Finder freezing over and over after a few seconds or minutes of usage, forcing me to force quit Finder on numerous occasions throughout the day.&lt;/p&gt;
&lt;p&gt;Fed up with this bug, and not willing to move away from the native file managing app, I eventually got it sorted out by simply using Mac&apos;s Safe Mode, something that Windows users might be more inclined to be using on a regular basis.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Safe Mode baby&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I personnally had never used the safe mode before, despite around 10 years on apple.&lt;/p&gt;
&lt;p&gt;So if you have a frozen Finder, go for it...&lt;/p&gt;
&lt;p&gt;Follow these steps to start up into safe mode.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Start or restart your Mac. &lt;/li&gt;
&lt;li&gt;Immediately after you hear the startup sound, press and hold the Shift key.&lt;/li&gt;
&lt;li&gt;Release the Shift key when you see the Apple logo appear on the screen.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After the Apple logo appears, it might take longer than usual to reach the login screen or your desktop. This is because your Mac performs a directory check of your startup disk as part of safe mode.&lt;/p&gt;
&lt;p&gt;To leave safe mode, restart your computer without pressing any keys during startup.&lt;/p&gt;
&lt;p&gt;(Taken from &lt;a href=&quot;https://support.apple.com/en-us/HT201262&quot;&gt;&quot;Apple Support website&quot;&lt;/a&gt;)&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Gulp throws Potentially unhandled rejection error]]></title><description><![CDATA[So you're using Gulp and you're thrown a "Potentially unhandled rejection 2 Error: no writecb" and you have no idea what to do next...  It…]]></description><link>https://flopreynat.com/blog/2016-04-27-gulp-throws-potentially-unhandled-rejection</link><guid isPermaLink="false">https://flopreynat.com/blog/2016-04-27-gulp-throws-potentially-unhandled-rejection</guid><pubDate>Wed, 27 Apr 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So you&apos;re using Gulp and you&apos;re thrown a &quot;Potentially unhandled rejection [2] Error: no writecb&quot; and you have no idea what to do next... &lt;/p&gt;
&lt;p&gt;It was my case up to last night when running Gulp for the first time (I usually run Grunt) during the initialization of &lt;a href=&quot;https://reactforbeginners.com/&quot;&gt;Wes Bos&apos; &quot;React for Beginners&quot;&lt;/a&gt;, and the run of a gulp-stylus task.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Updates first&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Initial reaction should be to make sure you&apos;re up to date with all components at hand. All modules being all on their latest versions, let&apos;s turn to node.&lt;/p&gt;
&lt;p&gt;Quick check shows an outdated version, let&apos;s get this updated. Here&apos;s how to do it.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(sudo) npm cache clean -f
(sudo) npm install -g n
(sudo) n stable
node -v
v6.0.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Try running gulp again. Error should have gone...&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Alfred App Review]]></title><description><![CDATA[An app all windows users envy us if they have had the chance to take Mac's already-powerful search feature to the next level, with Alfred…]]></description><link>https://flopreynat.com/blog/2016-03-30-alfred-app-review</link><guid isPermaLink="false">https://flopreynat.com/blog/2016-03-30-alfred-app-review</guid><pubDate>Tue, 19 Apr 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An app all windows users envy us if they have had the chance to take Mac&apos;s already-powerful search feature to the next level, with Alfred - the award winning app and best butler I have ever known...&lt;/p&gt;
&lt;p&gt;Like any developer out there, I want to use the keyboard as much as I can. For productivity reasons first, and for others.&lt;/p&gt;
&lt;p&gt;Been using Alfred for years, and I can&apos;t get bored of it. Don&apos;t look at this post like an expert article on the subject, I have not even purchased the &lt;a href=&quot;https://www.alfredapp.com/powerpack/buy/&quot;&gt;Powerpack&lt;/a&gt;, feature unlocking the likes of workflows, integrations, and even remote control to your IOS devices.
To be totally honest, I have never really looked into the Powerpack, but I may be tempted to leverage their integration with Asana, another must-have IMHO.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It serves me right!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Anyway, for now, I use Alfred the most simple way ever, but it just works for me. Here are a few things you can do with Alfred:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quickly find a file by typing &quot;find&quot; + the name of the file&lt;/li&gt;
&lt;li&gt;Launch any app without using the mouse&lt;/li&gt;
&lt;li&gt;calculate anything quickly by just typing numbers and operations&lt;/li&gt;
&lt;li&gt;Launch a search on any site (eg. google, twitter, youtube etc)&lt;/li&gt;
&lt;li&gt;Launch a google image search&lt;/li&gt;
&lt;li&gt;Look up a place on Maps&lt;/li&gt;
&lt;li&gt;Quit all apps at the end of the working day&lt;/li&gt;
&lt;li&gt;Empty the recycle bin&lt;/li&gt;
&lt;li&gt;etc...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can easily configure your shortcuts and have for example &quot;duckduckgo&quot; shortened to &quot;d&quot; (just an example).&lt;/p&gt;
&lt;p&gt;In a nutshell, I love this app. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.alfredapp.com/&quot;&gt;Alfred 2 for Mac&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Leverage Sublime Text Macros to automate repeatable actions]]></title><description><![CDATA[Sublime Text Macros are a smart little tool to automate repeatable (and often-repeated) patterns. For example, I need to build arrays from…]]></description><link>https://flopreynat.com/blog/2016-03-30-leverage-sublime-macros-to-automate-repeatable-actions</link><guid isPermaLink="false">https://flopreynat.com/blog/2016-03-30-leverage-sublime-macros-to-automate-repeatable-actions</guid><pubDate>Wed, 30 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sublime Text Macros are a smart little tool to automate repeatable (and often-repeated) patterns.&lt;/p&gt;
&lt;p&gt;For example, I need to build arrays from lists of things on a regular basis. As easy as it can be in sublime to perform such an operation, using the basic automation provided by Macros is the best way forward.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Automation, automation, automation&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Simply navigate to Tools/Record Macro to record what you want Sublime to do on your behalf, Save your macro with a &apos;.sublime-macro&apos; extension and replay it as much as you need to.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Grunt throws a Maximum call stack size exceeded error]]></title><description><![CDATA[Grunt throws a 'maximum call stack size exceeded' error after running a simple task, and you haven't got the slightest idea what it means…]]></description><link>https://flopreynat.com/blog/2016-01-27-gruntjs-maximum-call-stack-size-exceeded-error</link><guid isPermaLink="false">https://flopreynat.com/blog/2016-01-27-gruntjs-maximum-call-stack-size-exceeded-error</guid><pubDate>Wed, 27 Jan 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Grunt throws a &apos;maximum call stack size exceeded&apos; error after running a simple task, and you haven&apos;t got the slightest idea what it means. No sweat.&lt;/p&gt;
&lt;p&gt;But I can&apos;t blame as this is just what happened to me today while working on a website redesign. The grunt task is a simple &apos;imagemin&apos; task I decided to run separately, and I don&apos;t recall having had the same issue before.&lt;/p&gt;
&lt;p&gt;Cut a long story short, you launch something along the lines of:
&quot;grunt imagemin&quot; in your terminal, and you&apos;re thrown the following error:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;RangeError: Maximum call stack size exceeded
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Don&apos;t name your task aliases like your tasks&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I did not find the issue in Grunt&apos;s documentation but managed to find it in my search results.&lt;/p&gt;
&lt;p&gt;You can not name your tasks like the task itself, &lt;a href=&quot;http://gruntjs.com/frequently-asked-questions#why-am-i-getting-a-maximum-call-stack-size-exceeded-error&quot;&gt;as detailed here&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;So I went from:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;grunt.registerTask(&quot;imagemin&quot;, [&quot;imagemin&quot;]);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;to &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;grunt.registerTask(&quot;imageminifier&quot;, [&quot;imagemin&quot;]);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;... and it worked like a charm.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Record your screen in animated GIF format with Licecap]]></title><description><![CDATA[I'm often being asked what screen recorder software I use, since I frequently document tutorials, emails, and other user guides with self…]]></description><link>https://flopreynat.com/blog/2016-01-07-record-screen-animated-gif</link><guid isPermaLink="false">https://flopreynat.com/blog/2016-01-07-record-screen-animated-gif</guid><pubDate>Thu, 07 Jan 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m often being asked what screen recorder software I use, since I frequently document tutorials, emails, and other user guides with self-explanatory gifs.&lt;/p&gt;
&lt;p&gt;And since the app I use is 1. open source (hence free), 2. super light, and 3. very easy to use, I thought I would give Licecap the credit it deserves.&lt;/p&gt;
&lt;p&gt;As mentioned on &lt;a href=&quot;http://www.cockos.com/licecap/&quot;&gt;the app&apos;s website&lt;/a&gt;, Licecap is a simple animated screen captures software. It probably has the least sexy logo ever, but the app is just great.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Show, don&apos;t tell&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You open it, set your width, height, and click on record, and you&apos;re done. Stop it, and you&apos;ll get a nice looped gif file, you&apos;ll be able to paste anywhere.&lt;/p&gt;
&lt;p&gt;How neat is that?! I had always thought it was for mac only, but it was originally for windows environments, so all of you can have a go at this little app.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href=&quot;http://www.cockos.com/&quot;&gt;Cockos Incorporated&lt;/a&gt; for this beauty.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Autocomplete file names in Sublime]]></title><description><![CDATA[Another cool add-on to your Sublime with this great little plugin that allows you to autocomple your file names and speed up your coding…]]></description><link>https://flopreynat.com/blog/2016-01-06-autocomplete-file-names-sublimetext</link><guid isPermaLink="false">https://flopreynat.com/blog/2016-01-06-autocomplete-file-names-sublimetext</guid><pubDate>Wed, 06 Jan 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Another cool add-on to your Sublime with this great little plugin that allows you to autocomple your file names and speed up your coding. &lt;/p&gt;
&lt;p&gt;Use your &lt;a href=&quot;https://packagecontrol.io/&quot;&gt;Package Control&lt;/a&gt; (CMD + SHIFT + P) to install &lt;a href=&quot;https://github.com/BoundInCode/AutoFileName&quot;&gt;AutoFileName&lt;/a&gt; and start playing with it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Autocomplete FTW!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Been using for a long time now, but I reckon it hasn&apos;t got the fame it deserves.&lt;/p&gt;
&lt;p&gt;Kudos to &lt;a href=&quot;https://twitter.com/boundincode&quot;&gt;@boundincode&lt;/a&gt; (Liam Cain), the creator behind AutoFileName.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Macbook Pro boots to black screen... WTF]]></title><description><![CDATA[So you boot your macbook pro, and you get... well not much. A black screen staring back at you while you frantically reach for your phone to…]]></description><link>https://flopreynat.com/blog/2015-12-23-macbook-pro-boots-to-black-screen</link><guid isPermaLink="false">https://flopreynat.com/blog/2015-12-23-macbook-pro-boots-to-black-screen</guid><pubDate>Wed, 23 Dec 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So you boot your macbook pro, and you get... well not much. A black screen staring back at you while you frantically reach for your phone to check possible solutions to this problem.&lt;/p&gt;
&lt;h4&gt;PRAM Reset&lt;/h4&gt;
&lt;p&gt;Look no further. The thing just happened to me and I managed to get through it by resetting the machine&apos;s PRAM, which is - apparently -  a common troubleshooting technique when your favorite apple goes to f***.&lt;/p&gt;
&lt;p&gt;It allegedly should be the last resort when this kind of things happen. But as none of the other techniques I managed to find on the net did work, I&apos;m only going to cover this one since, as mentioned above, it did the trick.&lt;/p&gt;
&lt;p&gt;So here how it&apos;s gotta be done. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;CMD + ALT + P + R&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You reboot the mac, and as soon as you hear the boot-up sound, you hold down the magic key combination displayed above.&lt;/p&gt;
&lt;p&gt;I haven&apos;t got the slightest idea what the problem was, and why I had to do this.
But it just does work.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Move and resize windows with Spectacle]]></title><description><![CDATA[Repositioning and resizing windows isn’t probably the most entertaining subject out there, but as we do those two all day long, let's talk…]]></description><link>https://flopreynat.com/blog/2015-12-18-move-and-resize-windows-with-spectacle</link><guid isPermaLink="false">https://flopreynat.com/blog/2015-12-18-move-and-resize-windows-with-spectacle</guid><pubDate>Fri, 18 Dec 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Repositioning and resizing windows isn’t probably the most entertaining subject out there, but as we do those two all day long, let&apos;s talk about it once and for all.&lt;/p&gt;
&lt;p&gt;I remember having blogged about this subject on another blog about 3 years ago, and today, I&apos;m finding myself talking about this very same subject to various mac users (since it&apos;s a native feature on windows), having failed to deal with the issue.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;CMD + ALT + LEFT/RIGHT&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;Spectacle&lt;/h4&gt;
&lt;p&gt;Cut a long story short. The app is called &lt;a href=&quot;https://www.spectacleapp.com/&quot;&gt;Spectacle&lt;/a&gt;. It’s very cool, simple, non-obtrusive and free.
And I&apos;ve been using it for ever now.&lt;/p&gt;
&lt;p&gt;Once installed, you’ll have to enable access for assistive devices.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 595px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 50.53191489361703%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAKABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAUBAgP/xAAUAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAFnOK1HJYH/xAAbEAACAQUAAAAAAAAAAAAAAAAAAhEBAxIyM//aAAgBAQABBQIgihd5ZMLr/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGBAAAgMAAAAAAAAAAAAAAAAAAAEgMnH/2gAIAQEABj8ChZiw/8QAGxABAAICAwAAAAAAAAAAAAAAAQARECGBoeH/2gAIAQEAAT8hDVrOGJ1Y03H2J00//9oADAMBAAIAAwAAABDnL//EABcRAQADAAAAAAAAAAAAAAAAAAABESH/2gAIAQMBAT8QyFP/xAAWEQEBAQAAAAAAAAAAAAAAAAAAARH/2gAIAQIBAT8QbX//xAAcEAEAAwACAwAAAAAAAAAAAAABABEhMbFBYZH/2gAIAQEAAT8QwotUM98RdjaPIQQ5fkZ1QyjSaym9uNUW16J//9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Universal Access&quot;
        title=&quot;Universal Access&quot;
        src=&quot;/static/c6112eb461e1e9e8e0dfc33f9ec9eeac/c2f23/spectacle1.jpg&quot;
        srcset=&quot;/static/c6112eb461e1e9e8e0dfc33f9ec9eeac/bc01b/spectacle1.jpg 188w,
/static/c6112eb461e1e9e8e0dfc33f9ec9eeac/bf173/spectacle1.jpg 375w,
/static/c6112eb461e1e9e8e0dfc33f9ec9eeac/c2f23/spectacle1.jpg 595w&quot;
        sizes=&quot;(max-width: 595px) 100vw, 595px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Review your shortcuts, change them if you wish, and start getting more productive with your open windows...&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 595px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 50.53191489361703%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAKABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIEAQX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAAB6+TUDCif/8QAGBAAAgMAAAAAAAAAAAAAAAAAARADBBH/2gAIAQEAAQUCdc7Cv//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABkQAAIDAQAAAAAAAAAAAAAAAAEQABExUf/aAAgBAQAGPwJZBfS//8QAGxABAAICAwAAAAAAAAAAAAAAAQAxECERUXH/2gAIAQEAAT8h0cTXWDJStj7GmNz/2gAMAwEAAgADAAAAEFMf/8QAFREBAQAAAAAAAAAAAAAAAAAAEBH/2gAIAQMBAT8Qh//EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAECAQE/EKr/xAAbEAEAAgIDAAAAAAAAAAAAAAABABExQSGRof/aAAgBAQABPxDAa5dxRoxC8eonVXJax4GJ2Z//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Spectacle shortcuts&quot;
        title=&quot;Spectacle shortcuts&quot;
        src=&quot;/static/c9e6f91189f731b950e7f41d60917928/c2f23/spectacle2.jpg&quot;
        srcset=&quot;/static/c9e6f91189f731b950e7f41d60917928/bc01b/spectacle2.jpg 188w,
/static/c9e6f91189f731b950e7f41d60917928/bf173/spectacle2.jpg 375w,
/static/c9e6f91189f731b950e7f41d60917928/c2f23/spectacle2.jpg 595w&quot;
        sizes=&quot;(max-width: 595px) 100vw, 595px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You can run the app in the background but I suggest you add it in the status menu.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[My Sublime Text Shortcuts CheatSheet]]></title><description><![CDATA['Have you documented your own Sublime Text shortcut cheatsheet?' is a question I never get asked. But despite all your efforts to avoid the…]]></description><link>https://flopreynat.com/blog/2015-10-27-sublime-text-shortcuts-cheat-sheet</link><guid isPermaLink="false">https://flopreynat.com/blog/2015-10-27-sublime-text-shortcuts-cheat-sheet</guid><pubDate>Tue, 27 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&apos;Have you documented your own Sublime Text shortcut cheatsheet?&apos; is a question I never get asked. But despite all your efforts to avoid the subject, here it is. In your face!&lt;/p&gt;
&lt;p&gt;This post is likely to get updated on a regular basis since I tend to learn new stuff every day. See, when you start low, you&apos;re bound to progress more often than never :)&lt;/p&gt;
&lt;p&gt;So we&apos;ve already spoken about &lt;a href=&quot;http://flopreynat.com/posts/2015-08-18-sublimetext-clipboard-history/&quot;&gt;ST3&apos;s clipboard history capability&lt;/a&gt;. Here&apos;s the rest of the stuff I use on a daily basis.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Usage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Command + click&lt;/td&gt;
&lt;td&gt;Multiple cursors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + C/V&lt;/td&gt;
&lt;td&gt;(without selecting something) Copy/paste entire line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + O/S/W&lt;/td&gt;
&lt;td&gt;Open/Save/Close file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + Control + P&lt;/td&gt;
&lt;td&gt;Get List of Saved Projects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + X&lt;/td&gt;
&lt;td&gt;Cut Line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + D&lt;/td&gt;
&lt;td&gt;Grab similar occurences&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + Control + G&lt;/td&gt;
&lt;td&gt;Grab all occurences&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + Shift + F&lt;/td&gt;
&lt;td&gt;Find stuff through files &amp;#x26; folders&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + K B&lt;/td&gt;
&lt;td&gt;Toggle sidebar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + K L&lt;/td&gt;
&lt;td&gt;Go Lower case&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + K U&lt;/td&gt;
&lt;td&gt;Go Upper case&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + Shift + /&lt;/td&gt;
&lt;td&gt;Commenting/Uncommenting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + Control + up/down&lt;/td&gt;
&lt;td&gt;Swap line order&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alt + drag&lt;/td&gt;
&lt;td&gt;Initial a column select&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + Shift + left/right&lt;/td&gt;
&lt;td&gt;Select content from cursor to left/right end&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Control + Shift + W&lt;/td&gt;
&lt;td&gt;Wrap Line or Selection with Tag (absolute favourite)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command + Control + Shift +F&lt;/td&gt;
&lt;td&gt;Enjoy Distraction-free fullscreen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Select + [/(&lt;/td&gt;
&lt;td&gt;Wrap selection between parenthesis/brackets&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;More to come obviously...&lt;/p&gt;
&lt;p&gt;ps: get yourself a &lt;a href=&quot;https://www.sublimetext.com/buy&quot;&gt;licence&lt;/a&gt;, it&apos;s only 70 box.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Google Authenticator is producing the wrong codes]]></title><description><![CDATA[What do you do when your Google Authenticator produces the wrong codes, and there's nothing much you can do about it? I'm a huge fan of the…]]></description><link>https://flopreynat.com/blog/2015-09-30-google-authenticator-producing-wrong-code</link><guid isPermaLink="false">https://flopreynat.com/blog/2015-09-30-google-authenticator-producing-wrong-code</guid><pubDate>Wed, 30 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;What do you do when your Google Authenticator produces the wrong codes, and there&apos;s nothing much you can do about it?&lt;/p&gt;
&lt;p&gt;I&apos;m a huge fan of the two-factor authentification, the now famous user identification system by means of the combination of two different components. It usually involves a password and some kind of time-based token available via an app on a mobile phone.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;2-step verification is officially the best thing since sliced bread &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So by now, we all know we&apos;re talking about Google Authenticator. Great app, I use it all the time.&lt;/p&gt;
&lt;p&gt;Problem I just encountered: my mobile is in maintenance, and I bought myself a cheap Wiko for the few days/weeks to come, and I can not make the app work. No idea why, the time zone is set as it should, I ran a sync from the app, and it&apos;s telling me that all is fine.&lt;/p&gt;
&lt;p&gt;So what do you do in such a bizarre situation. I found my answer on a forum, but as there&apos;s not so much talk on the subject out there, this blog post may help some people stuck like me.&lt;/p&gt;
&lt;p&gt;Use this app: &lt;a href=&quot;https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp&amp;#x26;hl=en&quot;&gt;FreeOTP&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It seems a bit strange to be using a google feature with an app made by Red Hat. But the app is legit and approved, and more importantly it works like a charm, ...even on a Wiko.&lt;/p&gt;
&lt;p&gt;And get yourself a decent phone though lol.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Responsive video code snippet]]></title><description><![CDATA[An ancient blogpost of mine, and this clever responsive video code snippet presented (at the time) by Ethan Marcotte, at btconf 2014 during…]]></description><link>https://flopreynat.com/blog/2015-09-15-responsive-video-code-snippet</link><guid isPermaLink="false">https://flopreynat.com/blog/2015-09-15-responsive-video-code-snippet</guid><pubDate>Tue, 15 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An ancient blogpost of mine, and this clever responsive video code snippet presented (at the time) by Ethan Marcotte, at btconf 2014 during his &lt;a href=&quot;https://beyondtellerrand.com/events/duesseldorf-2014/speakers/ethan-marcotte#talk&quot;&gt;Laziness In The Time Of Responsive Design&lt;/a&gt; talk.&lt;/p&gt;
&lt;p&gt;A quick way to make videos look good at any size, the height/width ratio of the media now respected.&lt;/p&gt;
&lt;p&gt;Enough chit chat.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.video-container {
    position: relative;
    height: 0;
    padding-bottom: 56.25%;
}
 
.video-container &gt; * {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There’s a &lt;a href=&quot;http://codepen.io/flopreynat/pen/KGAov&quot;&gt;codepen&lt;/a&gt; for it.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Make Google Charts Responsive]]></title><description><![CDATA[A quick blog post on how to make Google Charts play nicely in responsive mode. Nothing close to rocket science but still useful. For those…]]></description><link>https://flopreynat.com/blog/2015-09-08-make-google-charts-responsive</link><guid isPermaLink="false">https://flopreynat.com/blog/2015-09-08-make-google-charts-responsive</guid><pubDate>Tue, 08 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A quick blog post on how to make Google Charts play nicely in responsive mode. Nothing close to rocket science but still useful.&lt;/p&gt;
&lt;p&gt;For those who don’t know, &lt;a href=&quot;https://google-developers.appspot.com/chart/&quot;&gt;Google Charts&lt;/a&gt; is a visualization tool, a gallery of interactive charts and data tools that you can integrate into your website. You provide data through php, json and Google Charts display it nicely for you.&lt;/p&gt;
&lt;h4&gt;Issue&lt;/h4&gt;
&lt;p&gt;By default, the charts come in the form of fixed width element which you can easily tweak to adapt to the now-famous ‘width:100%’ format. However the charts will only appear in that format when the page is loaded. They won’t dynamically resize when the browser window width is changed.&lt;/p&gt;
&lt;h4&gt;Solution&lt;/h4&gt;
&lt;p&gt;You will need to add a little jquery to get that to work as expected.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    $(window).resize(function(){
        drawChart1();
        drawChart2();
    });
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There’s obviously a &lt;a href=&quot;http://codepen.io/flopreynat/pen/BfLkA&quot;&gt;codepen&lt;/a&gt; for this.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Using Jekyll plugins on Github]]></title><description><![CDATA[A bit of reading for all jekyll newbies who, like me, decided to host their Jekyll site on Github pages (or are in the process to do so…]]></description><link>https://flopreynat.com/blog/2015-08-25-jekyll-plugins-github</link><guid isPermaLink="false">https://flopreynat.com/blog/2015-08-25-jekyll-plugins-github</guid><pubDate>Tue, 25 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A bit of reading for all jekyll newbies who, like me, decided to host their Jekyll site on Github pages (or are in the process to do so), and wouldn&apos;t be aware of the limitations around the subject.&lt;/p&gt;
&lt;p&gt;I&apos;ve been running this site on Jekyll for a few weeks only, and making discoveries along the way. When I decided to install and use &lt;a href=&quot;https://github.com/UsabilityEtc/responsive-youtube-jekyll-tag&quot;&gt;the first of many plugins available&lt;/a&gt;, I hit the wall and quickly realised the topic was far from an easy affair.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;tl;dr : Avoid using plugins if you can&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&apos;m not going to steal the words of David Lyons as he wrote a nicely-documented post on the subjet on &lt;a href=&quot;http://www.sitepoint.com/jekyll-plugins-github/&quot;&gt;sitepoint.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To cut a long story short, Github only allows &lt;a href=&quot;https://help.github.com/articles/using-jekyll-plugins-with-github-pages/&quot;&gt;a few Jekyll plugins&lt;/a&gt; to run during build process.&lt;/p&gt;
&lt;p&gt;As David mentioned it, you&apos;ll have a couple of work-arounds to get by.
I personnaly decided not to go with any of them. &lt;/p&gt;
&lt;p&gt;First of all, the current (folder/git) structure setup suits me and I didn&apos;t want to disturb it. Second of all, I don&apos;t have the intention to add a million plugins (as in I intend to use none of them). Lastly, I am the only person operating this site and thought a bit of markup within the post would not be the end of the world, should I need to add a responsive-ready video container (&lt;em&gt;reminder: it&apos;s what I wanted to do in the first place&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Anyway, once again, read David&apos;s post. It&apos;s worth a look (and a thought) if you intend to host your Jekyll site on Github pages. &lt;/p&gt;</content:encoded></item><item><title><![CDATA[Sublime Text 3 Clipboard History]]></title><description><![CDATA[I've recently moved to Sublime Text 3, having enjoyed several years of cruising on version 2. The latest version is now more than mature…]]></description><link>https://flopreynat.com/blog/2015-08-18-sublimetext-clipboard-history</link><guid isPermaLink="false">https://flopreynat.com/blog/2015-08-18-sublimetext-clipboard-history</guid><pubDate>Tue, 18 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve recently moved to Sublime Text 3, having enjoyed several years of cruising on version 2. The latest version is now more than mature (hence my move) and has additional features ST2 was short of. The ability to browse through your clipboard history is defo one of them.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;⌘ + K then ⌘ + V&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&apos;s as simple as that, just go ⌘ + K before hitting your usual ⌘ + V and you&apos;ll be able to pick from your latest clipboard entries.&lt;/p&gt;
&lt;p&gt;Everything is in &lt;a href=&quot;https://www.youtube.com/embed/IaddB_GQ4Ps&quot;&gt;this video&lt;/a&gt;, made by &lt;a href=&quot;http://wesbos.com/&quot;&gt;Wes Bos&lt;/a&gt;, a web dev recently featured on the &lt;a href=&quot;http://shoptalkshow.com/episodes/176-with-wes-bos/&quot;&gt;ShopTalk show of July 27th&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note, if you want to speed up your development, optimize your ST workflows and become a better developer, Wes has released &lt;a href=&quot;https://sublimetextbook.com/&quot;&gt;a book on the subject&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Adding Disqus comments to Jekyll]]></title><description><![CDATA[Adding comments via Disqus to your Jekyll blog is something you probably want to do if you want a bit of life and interaction. Good news: it…]]></description><link>https://flopreynat.com/blog/2015-08-14-adding-disqus-comments-jekyll</link><guid isPermaLink="false">https://flopreynat.com/blog/2015-08-14-adding-disqus-comments-jekyll</guid><pubDate>Fri, 14 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Adding comments via Disqus to your Jekyll blog is something you probably want to do if you want a bit of life and interaction. Good news: it couldn&apos;t be easier.&lt;/p&gt;
&lt;p&gt;There are installation instructions on the &lt;a href=&quot;https://help.disqus.com/customer/portal/articles/472138-jekyll-installation-instructions&quot;&gt;Disqus documentation&lt;/a&gt;, and on various places around the web, but I thought I would recap the lot for y&apos;all.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Great discussions are happening here&quot;... so Disqus says. Unless nothing much will in fact happen, and you&apos;re fine with this.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;First of all, sign up to &lt;a href=&quot;https://disqus.com/profile/signup&quot;&gt;Disqus&lt;/a&gt; then go &lt;a href=&quot;https://disqus.com/admin/create&quot;&gt;there&lt;/a&gt; to add Disqus to your site.&lt;/p&gt;
&lt;p&gt;Then generate a custom script for Jekyll, you&apos;ll need to use the &lt;strong&gt;Universal Code&lt;/strong&gt; option here.&lt;/p&gt;
&lt;p&gt;Copy your script and paste it into a disqus.html template in /_includes.
Make sure you surround the script between the &lt;strong&gt;if page.comments&lt;/strong&gt; and  &lt;strong&gt;endif&lt;/strong&gt; liquid code lines.&lt;/p&gt;
&lt;p&gt;Then edit your _config.yml file to add the &quot;comments: true&quot; bit...&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;defaults:
  -
    scope:
      path: &quot;&quot; # an empty string here means all files in the project
      type: &quot;posts&quot; # previously `post` in Jekyll 2.2.
    values:
      author: flo preynat
      layout: &quot;post&quot;
      comments: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally, go to your /&lt;em&gt;layouts/post.html template and add **include disqus.html disqus&lt;/em&gt;identifier=page.disqus_identifier** (between liquid handles) below the end of your blog post.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You&apos;re done!&lt;/strong&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Jekyll contact form with Formspree]]></title><description><![CDATA[So you got yourself a nice static site, and you want to give your audience a chance to talk to you (directly) with a simple contact form…]]></description><link>https://flopreynat.com/blog/2015-08-10-jekyll-contact-form</link><guid isPermaLink="false">https://flopreynat.com/blog/2015-08-10-jekyll-contact-form</guid><pubDate>Mon, 10 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So you got yourself a nice static site, and you want to give your audience a chance to talk to you (directly) with a simple contact form, something you might be used to having used wordpress, php, and a database.&lt;/p&gt;
&lt;p&gt;Except there ain&apos;t no database here. Even less php back end. Hence you&apos;ve got to rely on other ways to get personal messages sent to you.&lt;/p&gt;
&lt;h3&gt;Formspree - Functional HTML forms&lt;/h3&gt;
&lt;p&gt;When I stumbled upon &lt;a href=&quot;http://formspree.io/&quot;&gt;Formspree&lt;/a&gt;, it did look like the perfect match. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Side note: Kudos to the crew that put the site together. Minimalistic, straight to the point and no fuss around the subject.&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Just send your form to our URL and we&apos;ll forward it to your email. No PHP, Javascript or sign up required — perfect for static sites!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So, formspree is a tool apparently maintained by a community of developers, clearly stating no contents of the form submissions are stored (emails are sent using &lt;a href=&quot;http://www.mailgun.com/&quot;&gt;Mailgun&apos;s API&lt;/a&gt;). &lt;/p&gt;
&lt;p&gt;You do think about privacy, but not for long. First of all, you ain&apos;t giving much away, api or not. Folks are going to initiate discussions in a few words then you take over the talk, privately. No need to be paranoid... especially if (unlike me), you are giving away most of your life to facebook.&lt;/p&gt;
&lt;h3&gt;Easy peasy&lt;/h3&gt;
&lt;p&gt;Just follow the steps described. Everthing works as expected. Add form elements and don&apos;t forget to give them a name, they&apos;ll be automatically taken into account during form submission.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Free stock photos for your projects]]></title><description><![CDATA[Just a go-to blog post (for myself really) when on the lookout for free stock photos (that don't suck) for your web design projects, print…]]></description><link>https://flopreynat.com/blog/2015-08-06-free-stock-photos-that-dont-suck</link><guid isPermaLink="false">https://flopreynat.com/blog/2015-08-06-free-stock-photos-that-dont-suck</guid><pubDate>Thu, 06 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Just a go-to blog post (for myself really) when on the lookout for free stock photos (that don&apos;t suck) for your web design projects, print needs et al.&lt;/p&gt;
&lt;p&gt;A lot of good and excellent sites for you to pick exceptionnally-pro-looking pics from... Here we go.&lt;/p&gt;
&lt;p&gt;The ones I&apos;ve used from the start:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://join.deathtothestockphoto.com/&quot;&gt;Death to the Stock Photo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://unsplash.com/&quot;&gt;Unsplash&lt;/a&gt; especially since &lt;a href=&quot;https://twitter.com/arthurWeill&quot;&gt;Arthur Weill&lt;/a&gt; released a little &lt;a href=&quot;http://www.arthurweill.fr/Unsplash/en&quot;&gt;search engine for Unsplash&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;...and the rest of them, in alphabetical order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.bara-art.com/&quot;&gt;Bara Art&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://barnimages.com/&quot;&gt;Barn Images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cupcake.nilssonlee.se/&quot;&gt;Cupcake&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://compfight.com/&quot;&gt;Compfight&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fancycrave.com/&quot;&gt;Fancy Crave&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.flickr.com/creativecommons/&quot;&gt;Flickr Creative Commons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://foodiesfeed.com/category/free-food-images/&quot;&gt;Foodies Feed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://foodshot.co/&quot;&gt;Foodshot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://freelyphotos.com/&quot;&gt;Freely Photos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://freenaturestock.com/&quot;&gt;Free Nature Stock&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://furiouscamera.com/&quot;&gt;Furious Camera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://getrefe.tumblr.com/&quot;&gt;Getrefe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.goodfreephotos.com/&quot;&gt;Good Free Photos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.gratisography.com/&quot;&gt;Gratisography&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://isorepublic.com/&quot;&gt;Iso Republic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://jaymantri.com/&quot;&gt;Jay mantri&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://jeshoots.com/&quot;&gt;jéshoots&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://littlevisuals.co/&quot;&gt;Little Visuals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://magdeleine.co/&quot;&gt;Magdeleine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://mmt.li/&quot;&gt;MMT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.morguefile.com&quot;&gt;Morguefile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.noblweb.com/&quot;&gt;Nobl Web&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://nos.twnsnd.co/&quot;&gt;New Old Stock&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.pexels.com/&quot;&gt;Pexels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://photopin.com/&quot;&gt;Photopin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://picjumbo.com/&quot;&gt;Picjumbo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://picography.co/&quot;&gt;Picography&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.raumrot.com/&quot;&gt;Raumrot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://realisticshots.com/&quot;&gt;Realistic Shots&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://search.creativecommons.org/&quot;&gt;Search Creative Commons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stocksnap.io/&quot;&gt;Stocksnap.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sitebuilderreport.com/stock-up&quot;&gt;Stock up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://startupstockphotos.com&quot;&gt;Startup stock photos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://images.superfamous.com/&quot;&gt;Superfamous&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://travelcoffeebook.tumblr.com/&quot;&gt;Travel Coffee Book&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://trunklog.com/&quot;&gt;Trunklog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How about that!&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Error installing jekyll: Failed to build gem native extension]]></title><description><![CDATA[Though I would post this one since I did experience a few issues attempting to install jekyll, including this "Failed to build gem native…]]></description><link>https://flopreynat.com/blog/2015-07-29-jekyll-failed-to-build-gem-native-extension</link><guid isPermaLink="false">https://flopreynat.com/blog/2015-07-29-jekyll-failed-to-build-gem-native-extension</guid><pubDate>Wed, 29 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Though I would post this one since I did experience a few issues attempting to install jekyll, including this &quot;Failed to build gem native extension&quot; annoying error.&lt;/p&gt;
&lt;p&gt;Right, so you have it all installed. So you think. As advised on the jekyll site, you’ve done your:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo gem update --system
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Xcode and its command line tools are in there, but you still get an error while running:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo gem install jekyll
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;something like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Building native extensions.  This could take a while...
ERROR:  Error installing jekyll:
ERROR: Failed to build gem native extension.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It appears that the installation order is vital, and therefore you should try to uninstall ruby, start from a clean situation, and reinstall it.&lt;/p&gt;
&lt;p&gt;It did fix it for me, so have a try if you’re stuck and you’re a numpty like me when it comes down to gems, CLI, and the rest.&lt;/p&gt;
&lt;p&gt;Start with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rvm get head
rvm reset
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then check what’s in there with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rvm list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note what ruby version is installed, in my case it was ruby-2.0.0-p247.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rvm remove ruby-2.0.0-p247
rvm cleanup
rvm repair
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Only then go with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo gem update --system
sudo gem install jekyll
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hope this helps.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Why Jekyll?]]></title><description><![CDATA[I've got it easy on that one. Site is brand new, hence built from scratch, with absolutely no data to migrate/integrate. Picking a…]]></description><link>https://flopreynat.com/blog/2015-07-22-why-jekyll</link><guid isPermaLink="false">https://flopreynat.com/blog/2015-07-22-why-jekyll</guid><pubDate>Wed, 22 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve got it easy on that one. Site is brand new, hence built from scratch, with absolutely no data to migrate/integrate. Picking a technology like Jekyll to build and run this new personal pad was therefore an easy choice to make.&lt;/p&gt;
&lt;p&gt;I&apos;ve been using Wordpress (most times) and Perch (a few times) to create most of my personal/client/others&apos; websites, and despite having nagged a few times about performance or bloated code, it was most of the time down to me.&lt;/p&gt;
&lt;p&gt;Jekyll is however a static site generator, therefore no database, nor server-side languages are needed, which makes the site lightning fast, and bloody appealing for this particular use case...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Transform your plain text into static websites and blogs&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Install was a bit of an experience, epecially if you don&apos;t really know what you&apos;re doing (like me). But since I managed to do it eventually, a fucking monkey would do it with one hand tied behind his back.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 500px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 36.17021276595745%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAHABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAECBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAdu4SD//xAAWEAEBAQAAAAAAAAAAAAAAAAARARD/2gAIAQEAAQUCK5//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAQ/9oACAEBAAY/An//xAAZEAABBQAAAAAAAAAAAAAAAAAAAREhMWH/2gAIAQEAAT8hsOTgh//aAAwDAQACAAMAAAAQ8A//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAYEAEBAQEBAAAAAAAAAAAAAAABEQAxkf/aAAgBAQABPxABBtbFZpPfGEO3f//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;jekyll install&quot;
        title=&quot;Jekyll Install&quot;
        src=&quot;/static/dcb2802a157d51a2456c94a3fd652dc1/41099/jekyll-install.jpg&quot;
        srcset=&quot;/static/dcb2802a157d51a2456c94a3fd652dc1/bc01b/jekyll-install.jpg 188w,
/static/dcb2802a157d51a2456c94a3fd652dc1/bf173/jekyll-install.jpg 375w,
/static/dcb2802a157d51a2456c94a3fd652dc1/41099/jekyll-install.jpg 500w&quot;
        sizes=&quot;(max-width: 500px) 100vw, 500px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Host it on Github&lt;/h4&gt;
&lt;p&gt;I can host all my stuff on Github and point my repo to a custom domain name in two moves, and I can enjoy what has been my dev workflow for quite a while (Like every modern developer out there, I&apos;ve been versioning all my projects with git and Atlassian&apos;s &lt;a href=&quot;https://bitbucket.org/&quot;&gt;Bitbucket&lt;/a&gt; for years).&lt;/p&gt;
&lt;p&gt;It&apos;s early days but so far so good. Jekyll seems to be the perfect fit for any developer wanting to enjoy an easy CMS-like setup, just without all the fuss...&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Responsive Images Meetup: Coming together is a beginning]]></title><description><![CDATA[Last time I talked about responsive images, I did mention I was due to go to the responsive images meetup in Paris, and as the long-awaited…]]></description><link>https://flopreynat.com/blog/2013-09-13-responsive-images-meetup-coming-together-is-a-beginning</link><guid isPermaLink="false">https://flopreynat.com/blog/2013-09-13-responsive-images-meetup-coming-together-is-a-beginning</guid><pubDate>Fri, 13 Sep 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last time I talked about responsive images, I did mention I was due to go to the responsive images meetup in Paris, and as the long-awaited event happened a couple of days ago, I thought it would be nice to write a quick recap for the folks unable to make it.&lt;/p&gt;
&lt;h3&gt;SIDE NOTE&lt;/h3&gt;
&lt;p&gt;Before we get to the the nitty gritty, let me start this blog post with a quick line on the venue. The meetup took place in Mozilla’s Paris headquarters, a superb office located boulevard Montmartre, in Paris’ 9th arrondissement. What a place this is! Two snaps for your eyes.&lt;/p&gt;
&lt;p&gt;Mozilla really know how to welcome guests. Just saying.&lt;/p&gt;
&lt;h3&gt;HIGH HOPES&lt;/h3&gt;
&lt;p&gt;Having received a teasing email from &lt;a href=&quot;https://twitter.com/yoavweiss&quot;&gt;Yoav&lt;/a&gt; a couple of days prior to the get-together, and seen a number of known representatives from Apple, Google, Mozilla, Microsoft and Adobe inked on the presence sheet (unfortunately Bruce Lawson from Opera was unable to make it), I was very much looking forward to this event. After all, the web community (especially the developers) had been waiting over two years for some clear stand on the subject of responsive images from the big players, while, in the mean time, and according to the latest stats, 72% of responsive websites were still serving the same amount of data to ANY device.&lt;/p&gt;
&lt;h3&gt;USE CASES&lt;/h3&gt;
&lt;p&gt;The day started off with a pre-recorded presentation of the problem at hand from &lt;a href=&quot;http://responsiveimages.org/&quot;&gt;RICG&lt;/a&gt;‘s front man &lt;a href=&quot;https://twitter.com/wilto&quot;&gt;Mat Marquis&lt;/a&gt;, and we quickly went to real case uses with an overview of the BBC and Akamai’s ways of handling the issue.&lt;/p&gt;
&lt;p&gt;Very interesting to see what large scale companies had been implementing, especially since the BBC and its 83 millions monthly views (2.6 millions views per day), as &lt;a href=&quot;https://twitter.com/integralist&quot;&gt;Mark McDonnell&lt;/a&gt; explained, had been using none of the so-far-proposed solutions , but ‘a form’ of javascript-dependent responsive image system. Lightweight, fast working on all devices solution, and implemented since 2011.&lt;/p&gt;
&lt;p&gt;I can only invite you to take a look at their project. The javascript is open-sourced and available on &lt;a href=&quot;https://github.com/BBC-News/Imager.js/&quot;&gt;Github&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Next, &lt;a href=&quot;https://twitter.com/guypod&quot;&gt;Guy Podjarny&lt;/a&gt; took the stand to explain Akamai’s sophisticated content delivery acceleration techniques including smart delivery (with Edge Device Characterization) using patterns of characteristics drawn from a database of mobile devices, front-end optimization, the still-in-beta image converter allowing art direction, and adaptive image compression taking into account the network conditions to define the quality of the served content.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 750px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 40.95744680851064%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAIABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAME/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAcgiIP/EABgQAQEBAQEAAAAAAAAAAAAAAAECAwAS/9oACAEBAAEFAo383Orzav8A/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGBABAQADAAAAAAAAAAAAAAAAIQABAhL/2gAIAQEABj8C6tnCzf/EABoQAQADAAMAAAAAAAAAAAAAAAEAESFBYXH/2gAIAQEAAT8hw20NXxH1duu4wQL6T//aAAwDAQACAAMAAAAQ/wDf/8QAFhEBAQEAAAAAAAAAAAAAAAAAAAER/9oACAEDAQE/EG1//8QAFhEBAQEAAAAAAAAAAAAAAAAAABEx/9oACAECAQE/ENR//8QAGhABAAIDAQAAAAAAAAAAAAAAAQARITFBYf/aAAgBAQABPxDc1IFoiZxmGU7wC9qFdidl0Kf/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Guy Podjarny&quot;
        title=&quot;Guy Podjarny&quot;
        src=&quot;/static/0fefbe2f769a4832acbd6d2aed0e18f1/acb04/guy-podjarny.jpg&quot;
        srcset=&quot;/static/0fefbe2f769a4832acbd6d2aed0e18f1/bc01b/guy-podjarny.jpg 188w,
/static/0fefbe2f769a4832acbd6d2aed0e18f1/bf173/guy-podjarny.jpg 375w,
/static/0fefbe2f769a4832acbd6d2aed0e18f1/acb04/guy-podjarny.jpg 750w,
/static/0fefbe2f769a4832acbd6d2aed0e18f1/ec605/guy-podjarny.jpg 1125w,
/static/0fefbe2f769a4832acbd6d2aed0e18f1/c58a3/guy-podjarny.jpg 1500w,
/static/0fefbe2f769a4832acbd6d2aed0e18f1/fcd25/guy-podjarny.jpg 1590w&quot;
        sizes=&quot;(max-width: 750px) 100vw, 750px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Quite a setup. Defo out of my league, and certainly destined to large scale sites. In a nutshell, not exactly what you would use to build the website of your local pub.&lt;/p&gt;
&lt;h3&gt;A LOOK BACK AT THE PROPOSED SOLUTIONS&lt;/h3&gt;
&lt;p&gt;DPR switching, Viewport switching and Art direction on our minds, and a few coffees down our throats, we went ahead and reviewed the proposed solutions.&lt;/p&gt;
&lt;p&gt;Apple’s &lt;a href=&quot;https://twitter.com/hober&quot;&gt;Theresa O&apos;Connor&lt;/a&gt; presented the &lt;code&gt;srcset&lt;/code&gt; attribute, which defines the various image resources to be used, and the clues to help a user agent determine the most appropriate one to display, already implemented (at least a limited version of it) by webkit.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;#x3C;img alt=&quot;The Breakfast Combo&quot;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;src=&quot;banner.jpeg&quot;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;srcset=&quot;banner-HD.jpeg 2x, banner-phone.jpeg 100w, banner-phone-HD.jpeg 100w 2x&quot;&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;picture&lt;/code&gt; element presented by Mozilla’s &lt;a href=&quot;https://twitter.com/marcosc&quot;&gt;Marcos Caceres&lt;/a&gt;, defining a declarative solution for grouping multiple versions of an image based on different criteria (format, resolution, orientation, and more), allowing the user agent to select the optimum image to be presented while providing the best solution (so far) for art direction.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;#x3C;picture width=&quot;500&quot; height=&quot;500&quot;&gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&amp;#x3C;source media=&quot;(min-width: 45em)&quot; src=&quot;large.jpg&quot;&gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&amp;#x3C;source media=&quot;(min-width: 18em)&quot; src=&quot;med.jpg&quot;&gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&amp;#x3C;source src=&quot;small.jpg&quot;&gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&amp;#x3C;img src=&quot;small.jpg&quot; alt=&quot;&quot; lazyload&gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&amp;#x3C;p&gt;Accessible text&amp;#x3C;/p&gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&amp;#x3C;/picture&gt;&lt;/code&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;‘HTTP Client Hints’ presented by Google’s &lt;a href=&quot;https://twitter.com/igrigorik&quot;&gt;Ilya Grigorik&lt;/a&gt;, which defines a set of HTTP headers allowing browsers to indicate a list of device and agent specific preferences, and drive servers to use these “client hints” to assist in content negotiation.
Ideal solution as the content served would match the environmental conditions of the client, ideal in the minimal developer effort sense (I knew you would love that one!), and also ideal as far as semantic is concerned (ie. a simple image tag ).&lt;/p&gt;
&lt;p&gt;But... we would need to use a new header where we would define the devicePixelRatio (DPR) of the terminal (e.g. CH: dpr=2) to pass the relevant info to the server, the current UA header being unable to do that. More on client hints &lt;a href=&quot;https://www.igvita.com/2013/08/29/automating-dpr-switching-with-client-hints/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The ‘SVG’s Switch element’ presented by W3C’s &lt;a href=&quot;https://twitter.com/robinberjon&quot;&gt;Robin Berjon&lt;/a&gt;, &lt;a href=&quot;https://www.w3.org/TR/SVG2/struct.html#SwitchElement&quot;&gt;a solution&lt;/a&gt; already well supported today, already offering a built-in, working fallback. See his full presentation &lt;a href=&quot;http://berjon.com/presentations/20130910-ricg-switch/#/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;#x3C;switch alt=&quot;Accessible text&quot;&gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&amp;#x3C;img media=&quot;(min-width: 45em)&quot; src=&quot;large.jpg&quot;&gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&amp;#x3C;img media=&quot;(min-width: 18em)&quot; src=&quot;med.jpg&quot;&gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&amp;#x3C;img src=&quot;small.jpg&quot;&gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&amp;#x3C;/switch&gt;&lt;/code&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;‘New Image Format’ presented by Yoav Weiss, a responsive image container containing internal layers which uses resizing and crop operations to deal with both resolution switching and art direction. In a nutshell, the encoder takes the original picture, the required output resolutions and if needed art direction pre-requisites, and outputs a layer per resolution.
As a picture is worth a thousand words, there you go:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 750px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 32.4468085106383%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAGABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAUD/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgED/9oADAMBAAIQAxAAAAGfUM1kFP/EABcQAAMBAAAAAAAAAAAAAAAAAAECAxH/2gAIAQEAAQUCAXIyLJSYD//EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAEDAQE/AWf/xAAWEQEBAQAAAAAAAAAAAAAAAAAAAhH/2gAIAQIBAT8Blj//xAAYEAEBAQEBAAAAAAAAAAAAAAABABECQf/aAAgBAQAGPwJNduXyS//EABsQAAICAwEAAAAAAAAAAAAAAAABITERQVFh/9oACAEBAAE/IZlW3wUppP7JabDs/9oADAMBAAIAAwAAABD4H//EABYRAAMAAAAAAAAAAAAAAAAAAAABEf/aAAgBAwEBPxBIVn//xAAXEQEBAQEAAAAAAAAAAAAAAAABABEx/9oACAECAQE/EEvbF//EABkQAAMBAQEAAAAAAAAAAAAAAAERIQBBMf/aAAgBAQABPxATlS4EOLuCgBUo8MS0cRN2b//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Responsive Image container&quot;
        title=&quot;Responsive Image container&quot;
        src=&quot;/static/2ecfd0a8cee4d91cd6b4a18ab9c71db8/acb04/responsive-image-container.jpg&quot;
        srcset=&quot;/static/2ecfd0a8cee4d91cd6b4a18ab9c71db8/bc01b/responsive-image-container.jpg 188w,
/static/2ecfd0a8cee4d91cd6b4a18ab9c71db8/bf173/responsive-image-container.jpg 375w,
/static/2ecfd0a8cee4d91cd6b4a18ab9c71db8/acb04/responsive-image-container.jpg 750w,
/static/2ecfd0a8cee4d91cd6b4a18ab9c71db8/ec605/responsive-image-container.jpg 1125w,
/static/2ecfd0a8cee4d91cd6b4a18ab9c71db8/c58a3/responsive-image-container.jpg 1500w,
/static/2ecfd0a8cee4d91cd6b4a18ab9c71db8/fcd25/responsive-image-container.jpg 1590w&quot;
        sizes=&quot;(max-width: 750px) 100vw, 750px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;WHAT NOW?&lt;/h3&gt;
&lt;p&gt;DPR switching definitely seems to have made the top of the vast responsive images todo list. I have to admit I freaking love the concept of client hints presented by Ilya, but Google will certainly need an ally if we are to go this way... and it doesn’t look like it could be Mozilla, &lt;a href=&quot;https://twitter.com/davidbaron&quot;&gt;David Baron&lt;/a&gt; having shown little enthusiasm (to say the least) to go ahead and add more (unremovable) HTTP headers.&lt;/p&gt;
&lt;p&gt;The ‘srcset attribute’ and the ‘Picture element’ will make last call, and will definitely keep on getting tested. Both could emerge winners, srcset for its simplicity, and picture for its art direction friendliness, a popular aspect in the developers community.&lt;/p&gt;
&lt;p&gt;Expect some simplification in the markup, and a likely removal of possibly w and more likely h from the spec.&lt;/p&gt;
&lt;p&gt;Microsoft could have a card to play in this debate, with IE12 in the box, and a strong and obvious interest from Lead Principal Program Manager &lt;a href=&quot;https://www.linkedin.com/in/israel-hilerio-ba9a52b&quot;&gt;Israel Hilerio&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;FINAL WORDS&lt;/h3&gt;
&lt;p&gt;A huge bravo to Marcos and Yoav for getting a crowd of proactive folks and professionals going for eight hours straight, on the sole subject of responsive images. And a massive ‘thank you’ for opening the doors to smaller companies and freelancers.&lt;/p&gt;
&lt;p&gt;Getting together is already a huge success, working together is the next step forward.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Add a neat little breakpoint snippet to your Sublime]]></title><description><![CDATA[Let’s get Sassy today with this little yet very useful Sublime Text 2 breakpoint snippet handmade by James Nowland and obviously editable as…]]></description><link>https://flopreynat.com/blog/2013-05-15-sublime-breakpoint-snippet</link><guid isPermaLink="false">https://flopreynat.com/blog/2013-05-15-sublime-breakpoint-snippet</guid><pubDate>Wed, 15 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let’s get Sassy today with this little yet very useful Sublime Text 2 &lt;a href=&quot;https://gist.github.com/jnowland/5151162&quot;&gt;breakpoint snippet&lt;/a&gt; handmade by James Nowland and obviously editable as you wish.&lt;/p&gt;
&lt;p&gt;If, like me, you code a lot of responsive sites, chances are that you work with Sass and end up putting half a million @include breakpoint lines, working your site’s scss the modular way… as you do.&lt;/p&gt;
&lt;p&gt;Well, this little snippet will surely reduce your work, by allowing you to tabTrigger mq (or whatever you wanna call it) into the full @include breakpoint desired code lines.&lt;/p&gt;
&lt;p&gt;Open Sublime, go to Tools, then New Snippet. Copy and paste James’s code in there, and save. Your’re done. You can type *mq and tab in your scss and enjoy the ride.&lt;/p&gt;
&lt;h3&gt;The Snippet&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&amp;#x3C;snippet&gt;
&amp;#x3C;content&gt;&amp;#x3C;![CDATA[
@include breakpoint(${1:papa-bear / mama-bear / baby-bear}) {
${2:}
}

]]&gt;&amp;#x3C;/content&gt;
&amp;#x3C;!-- Optional: Set a tabTrigger to define how to trigger the snippet --&gt;
&amp;#x3C;tabTrigger&gt;mq&amp;#x3C;/tabTrigger&gt; 
&amp;#x3C;!-- Optional: Set a scope to limit where the snippet will trigger --&gt;
&amp;#x3C;!-- &amp;#x3C;scope&gt;source.python&amp;#x3C;/scope&gt; --&gt;
&amp;#x3C;/snippet&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;The result in Sublime&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 595px;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 50.53191489361703%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAKABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAQFA//EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHec7GhkWD/xAAaEAABBQEAAAAAAAAAAAAAAAACAAMEEBMy/9oACAEBAAEFApRkA7PLd5TuK//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABsQAAEEAwAAAAAAAAAAAAAAAAIAAREzEHGh/9oACAEBAAY/AhcSiVb1WOg3n//EABsQAAIBBQAAAAAAAAAAAAAAAAABEBEhUZGh/9oACAEBAAE/IXKKlx5Gg1M+xP8A/9oADAMBAAIAAwAAABBLL//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABwQAQACAQUAAAAAAAAAAAAAAAEAESEQMVGx8P/aAAgBAQABPxCzXJsyVFNk9QKVwidTD2YNf//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Sass Breakpoint snippet in Sublime&quot;
        title=&quot;Sass Breakpoint snippet in Sublime&quot;
        src=&quot;/static/4b7f52b0611c0b74a823806712a24836/c2f23/breakpoint-snippet.jpg&quot;
        srcset=&quot;/static/4b7f52b0611c0b74a823806712a24836/bc01b/breakpoint-snippet.jpg 188w,
/static/4b7f52b0611c0b74a823806712a24836/bf173/breakpoint-snippet.jpg 375w,
/static/4b7f52b0611c0b74a823806712a24836/c2f23/breakpoint-snippet.jpg 595w&quot;
        sizes=&quot;(max-width: 595px) 100vw, 595px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item></channel></rss>