<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Florent&#39;s Blog</title>
    <link>https://blog.florentdelannoy.com/</link>
    <description>Recent content on Florent&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-uk</language>
    <lastBuildDate>Fri, 14 May 2021 22:40:11 +0100</lastBuildDate>
    
	<atom:link href="https://blog.florentdelannoy.com/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>KubeCon &#43; CloudNativeCon EU 2021 recap</title>
      <link>https://blog.florentdelannoy.com/blog/2021/kubecon-eu-recap/</link>
      <pubDate>Fri, 14 May 2021 22:40:11 +0100</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2021/kubecon-eu-recap/</guid>
      <description>It&#39;s that time of the year again: spring means Kubecon!
AWS Container Days Before the main Kubecon started, I attended the AWS Container Days event, live-streamed on Twitch (hip!).
Being AWS, of course it was highly EKS-centric, and very interesting.
AWS is working on their own container-centric linux distribution, called Bottlerocket. It sounds like a spiritual successor to CoreOS (my words, not theirs), with a focus on security and transactional, in-place updates.</description>
    </item>
    
    <item>
      <title>&#34;Warning: KubeDaemonSetMisScheduled&#34;? What&#39;s that about?</title>
      <link>https://blog.florentdelannoy.com/blog/2020/kube-daemonset-misscheduled/</link>
      <pubDate>Fri, 23 Oct 2020 16:18:01 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2020/kube-daemonset-misscheduled/</guid>
      <description>I recently set up the kube-prometheus-stack Helm chart (formerly known as prometheus-operator) on our Kubernetes clusters as $dayjob.
This chart sets up a full monitoring and alerting stack, with Prometheus for metrics collection &amp;amp; retention, Grafana for visualisation, and AlertManager for, well, managing alerts (!).
The out-of-the-box monitoring is awesome: extremely detailed, with a wealth of built-in metrics &amp;amp; alerts. On the other hand, some of the warnings are very twitchy, and may be triggered under normal operations while everything is absolutely fine.</description>
    </item>
    
    <item>
      <title>KubeCon &#43; CloudNativeCon EU 2020 recap</title>
      <link>https://blog.florentdelannoy.com/blog/2020/kubecon-recap/</link>
      <pubDate>Mon, 24 Aug 2020 14:13:37 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2020/kubecon-recap/</guid>
      <description>Last week saw KubeCon + CloudNativeCon Europe 2020 taking place fully remotely, rather than in-person in sunny Amsterdam. Here are my notes from the conference, and links to talks that I thought were worth mentioning!
Of course, I didn&#39;t attend all the talks, so this isn&#39;t an exhaustive list – here is the full schedule.
I&#39;ve linked to the presentations on sched, and they should all be posted to YouTube shortly.</description>
    </item>
    
    <item>
      <title>Introducing Zeitgeist: dependency management for DevOps</title>
      <link>https://blog.florentdelannoy.com/blog/2020/introducing-zeitgeist/</link>
      <pubDate>Fri, 24 Jan 2020 11:20:37 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2020/introducing-zeitgeist/</guid>
      <description>Developers are spoiled.
Every single package management system these days will allow a developer to define their project&#39;s dependencies in a simple format, whether that&#39;s a cargo.toml in Rust, Gemfile for Ruby apps, a pom.xml for Maven-based projects, package.json for NodeJS, composer.json in PHP&amp;hellip;
Declaring your dependencies and their desired version in a standard, easily-parseable language allows you to track outdated dependencies, make sure you keep up to date with security updates, ensures other developers working on the same project use the same version of dependencies, lets you set up reproducible builds&amp;hellip; The benefits are immense, and it&#39;s universally acknowledged as a best practice in modern software development.</description>
    </item>
    
    <item>
      <title>Envoy, Ambassador and Istio: a gzip adventure</title>
      <link>https://blog.florentdelannoy.com/blog/2019/envoy-ambassador-istio-gzip/</link>
      <pubDate>Fri, 22 Nov 2019 11:20:37 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2019/envoy-ambassador-istio-gzip/</guid>
      <description>HTTP compression is ubiquitous on the modern web as a way to trade a small amount of computing power in exchange for vastly reduced bandwidth. It is usually achieved with the gzip algorithm, so I&#39;ll refer to HTTP compression and gzip compression interchangeably in this post.
YNAP uses compression across the board to load pages faster, which makes users happier, and reduce bandwidth costs, which makes the finance department happier.</description>
    </item>
    
    <item>
      <title>Nightly end-to-end Kubernetes infrastructure builds</title>
      <link>https://blog.florentdelannoy.com/blog/2019/nightly-end-to-end-kubernetes-infrastructure-builds/</link>
      <pubDate>Thu, 23 May 2019 11:14:23 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2019/nightly-end-to-end-kubernetes-infrastructure-builds/</guid>
      <description>A core tenet of infrastructure as code is automation, which we took to heart when setting up the Kubernetes infrastructure for the frontend applications at Net-a-Porter.
We split our infrastructure-as-code into three main repositories:
Terraform The Terraform repository sets up the AWS infrastructure, including bringing up an EKS cluster and its related resources: autoscaling groups, S3 buckets, security groups, etc.
Helm The Helm repository bootstraps a Tiller server in the kube-system namespace and installs a slew of infrastructure-level Helm charts that we rely on to deploy, monitor and maintain applications running in the cluster.</description>
    </item>
    
    <item>
      <title>Kubernetes as a surprisingly affordable platform for personal projects - a follow-up</title>
      <link>https://blog.florentdelannoy.com/blog/2019/kubernetes-surprisingly-affordable-platform-followup/</link>
      <pubDate>Sun, 27 Jan 2019 16:08:23 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2019/kubernetes-surprisingly-affordable-platform-followup/</guid>
      <description>This is a follow-up to Caleb Doxsey&#39;s great article, Kubernetes: The Surprisingly Affordable Platform for Personal Projects.
I think Caleb is absolutely right in his description of Kubernetes as a great platform even for small projects that would usually end up in &amp;ldquo;a small VPS somewhere&amp;rdquo;, especially if you already have experience with k8s. I&#39;ve been using Kubernetes on AWS EC2 instances at work, and I was keen on trying Google&#39;s fully-managed experience in GKE, so I followed Caleb&#39;s steps and created my own cluster.</description>
    </item>
    
    <item>
      <title>Azure AD broke OIDC in Kubernetes 1.9</title>
      <link>https://blog.florentdelannoy.com/blog/2019/azure-ad-broke-kubernetes-1-9-oidc/</link>
      <pubDate>Fri, 25 Jan 2019 17:09:10 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2019/azure-ad-broke-kubernetes-1-9-oidc/</guid>
      <description>We recently got bitten by an innocent and standards-compliant improvement in Azure AD that effectively broke our OIDC-based authentication system for Kubernetes 1.9.x clusters.
OIDC, short for OpenID Connect, is a convenient way of providing authentication in Kubernetes. The flow roughly goes as follows:
 User gets a JWT token from its OIDC provider (Azure AD) User sends this token to Kubernetes alongside its request Kubernetes validates this token by verifying the JWT signature against the provider&#39;s public key Kubernetes lets the authenticated request through  This theoretically ensures Kubernetes doesn&#39;t need to &amp;ldquo;phone home&amp;rdquo; by calling the authN provider for every request, as happens for example under the Webhook Token authentication mode.</description>
    </item>
    
    <item>
      <title>This blog is now powered by Kubernetes!</title>
      <link>https://blog.florentdelannoy.com/blog/2018/this-blog-is-now-powered-by-kubernetes/</link>
      <pubDate>Sun, 02 Dec 2018 18:25:30 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2018/this-blog-is-now-powered-by-kubernetes/</guid>
      <description>I recently read Caleb Doxsey&#39;s article on how suprisingly affordable Kubernetes is for personal projects and got inspired to spin it up for myself. I&#39;m familiar with Kubernetes at work, but we run our clusters on top of EC2 instances in AWS, and I&#39;ve always been curious about how a fully hosted Kubernetes offering like GKE would fare.
Setting up Kubernetes on GKE itself following Caleb&#39;s directions was pretty straightforward (well&amp;hellip; For the most part – but that&#39;s another subject for another post), and I ended up with an empty &amp;ldquo;hello&amp;rdquo; page from nginx.</description>
    </item>
    
    <item>
      <title>Apple Contact &amp; Calendar Server - dockerised</title>
      <link>https://blog.florentdelannoy.com/blog/2017/apple-contact-calendar-server-dockerised/</link>
      <pubDate>Tue, 20 Jun 2017 20:25:30 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2017/apple-contact-calendar-server-dockerised/</guid>
      <description>I&#39;ve been using Radicale as a contacts / calendar server (CardDAV / DalDAV) for some time now, and it worked flawlessly across macOS and Windows Phone for contacts and calendars.
However, I recently got an iPhone and synchronising calendars from Radicale just crashed the iPhone calendar app. It worked fine some of the time, but most times it just crashed, which is not great.
Therefore, I went on the search for a better self-hosted calendaring server.</description>
    </item>
    
    <item>
      <title>Security &amp; convenience</title>
      <link>https://blog.florentdelannoy.com/blog/2016/security-convenience/</link>
      <pubDate>Sat, 09 Jul 2016 12:41:24 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2016/security-convenience/</guid>
      <description>Last week I needed to change my defective French SIM card, from Free (who as an aside are an awesome ISP and equally good mobile provider). I happened to be in Paris so I decided to go to the Free shop, as I thought it&#39;d be easier then getting a new SIM card send to my address on file (my parent&#39;s address in France) given I now live in the UK.</description>
    </item>
    
    <item>
      <title>OVH: Database quota exceeded</title>
      <link>https://blog.florentdelannoy.com/blog/2015/ovh-database-quota-exceeded/</link>
      <pubDate>Sun, 22 Nov 2015 10:17:29 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2015/ovh-database-quota-exceeded/</guid>
      <description>OVH emailed me a few weeks back telling me that my shared database for the plan that powers uponmyshoulder.com was approaching its (huge!) quota of 25MB, and then again last week to tell me that this time, the quota was reached.
Once you reach the quota, the DB is placed in read-only mode, although SQL DELETE commands do go through correctly, as we&#39;ll see later.
So my first instinct was to see what was wrong, by going into the PhpMyAdmin that OVH gives to each shared DB owner.</description>
    </item>
    
    <item>
      <title>&#34;They use some weird padding...&#34;</title>
      <link>https://blog.florentdelannoy.com/blog/2015/they-use-some-weird-padding/</link>
      <pubDate>Fri, 13 Nov 2015 22:02:40 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2015/they-use-some-weird-padding/</guid>
      <description>A few days ago, a colleague was telling me about a project where she needs to implement a crypto scheme from an external vendor in order to talk to their API over HTTP. For complicated (and probably wrong) reasons, they decided to eschew TLS and develop their own system instead, relying on DES –not even triple DES! Basic DES, the one from the &amp;lsquo;70s that is horribly insecure today– and RC4, which isn&#39;t great either.</description>
    </item>
    
    <item>
      <title>Updating a tiny Rails app from Rails 3.1 to Rails 4.2</title>
      <link>https://blog.florentdelannoy.com/blog/2015/updating-a-tiny-rails-app-from-rails-3-1-to-rails-4-2/</link>
      <pubDate>Fri, 09 Oct 2015 01:54:18 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2015/updating-a-tiny-rails-app-from-rails-3-1-to-rails-4-2/</guid>
      <description>In 2011 I wrote a small Rails app in order to learn Ruby better and see what all the fuss was about â this was Antipodes, a website that shows you the antipodes of a given point or country/state using google maps.
I built it using the latest and greatest version of Rails available at the time, which was 3.2. It has since fell to various security issues and has been superseded by newest version, and is currently unsupported.</description>
    </item>
    
    <item>
      <title>remaildr.com is back!</title>
      <link>https://blog.florentdelannoy.com/blog/2015/remaildr-com-is-back/</link>
      <pubDate>Mon, 18 May 2015 11:33:14 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2015/remaildr-com-is-back/</guid>
      <description>So, remaildr.com had been in a pretty sorry state for a couple of months now, and I kept thinking I should go have a look into it and get to the bottom of the issue.
And the bottom of the issue was the 6000 spam emails sitting in the inbox, making the server crash at startup.
They&#39;re now deleted, and everything is back up and happy. I&#39;m currently thinking about different monitoring options, but given it&#39;s all email-based, no solution that I know of seem overly practical to me.</description>
    </item>
    
    <item>
      <title>No Content Found</title>
      <link>https://blog.florentdelannoy.com/blog/2015/643/</link>
      <pubDate>Thu, 16 Apr 2015 07:52:55 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2015/643/</guid>
      <description>&amp;ldquo;So, the tests sometimes fail inexplicably&amp;rdquo; is a sentence you probably hear pretty often if you&#39;re running any type of full-stack, browser-driven integration tests over a large-enough code base, especially when customising on top of an existing product.
Today&#39;s instance was puzzling at first - the tests would sometimes fail to log in at all. That is, open the login page, fill in the username and password, wait until the URL change and assert that we&#39;re now on the dashboard - nope, failure.</description>
    </item>
    
    <item>
      <title>In Maven, LESS is less</title>
      <link>https://blog.florentdelannoy.com/blog/2013/in-maven-less-is-less/</link>
      <pubDate>Sat, 24 Aug 2013 03:51:50 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2013/in-maven-less-is-less/</guid>
      <description>Sorry, this is a rant.
I was recently investigating Maven plugins for LESS compilation. The use-case is pretty run-of-the-mill (I think?): I want to be able to write a .less file anywhere in my project src/ folder and have Maven compile it to CSS in the corresponding folder in target/ at some point of the build pipeline.
I first looked into lesscss-maven-plugin, a short-and-sweet kind of tool that looks perfect if you have one (and only one) target folder for all of your CSS.</description>
    </item>
    
    <item>
      <title>Pushing bookmarklets to their limits</title>
      <link>https://blog.florentdelannoy.com/blog/2013/pushing-bookmarklets-to-their-limits/</link>
      <pubDate>Thu, 25 Jul 2013 03:44:12 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2013/pushing-bookmarklets-to-their-limits/</guid>
      <description>I recently had to implement a new functionality for an internal web application:Â a button to download a specially-formatted file. The right way to do it is, of course, to deploy server-side code generating the needed file in the backend and make it accessible to the user via the front-end. The application in question is an important company-wide production system and I was on a hurry, so I decided to go the Quick way rather than the Right way 1.</description>
    </item>
    
    <item>
      <title>Simulating bad network conditions on Linux</title>
      <link>https://blog.florentdelannoy.com/blog/2013/simulating-bad-network-conditions-on-linux/</link>
      <pubDate>Thu, 04 Apr 2013 10:24:36 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2013/simulating-bad-network-conditions-on-linux/</guid>
      <description>Sometimes, your network is just too good.
Today I ran into this issue as I was testing an application running off a VM in the local network. Latency and bandwidth were excellent, as you&#39;d expect, but nowhere near the conditions you&#39;d encounter over the internet. Testing in these conditions is unrealistic and can lead to underestimating issues your users will experience with your app once it&#39;s deployed.
So let&#39;s change that and add artificial latency, bandwidth limitations, and even drop a few packets, using tc.</description>
    </item>
    
    <item>
      <title>On overflowing stacks</title>
      <link>https://blog.florentdelannoy.com/blog/2013/on-overflowing-stacks/</link>
      <pubDate>Sat, 02 Feb 2013 03:00:29 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2013/on-overflowing-stacks/</guid>
      <description>I recently set out to implement a few basic data structures in C for the hell of it (and to reassure myself that I can still code C), and ran into an interesting compiler wart&amp;hellip;
I was trying to instantiate a static array of 10 million integers (who doesn&#39;t?), in order to test insertions and deletions in my tree. However, as you can astutely deduce from the title of this post, this was too much for the stack of my poor program and ended up in a segfault - a textbook stack overflow.</description>
    </item>
    
    <item>
      <title>Javascript closures as a way to retain state</title>
      <link>https://blog.florentdelannoy.com/blog/2013/javascript-closures-as-a-way-to-retain-state/</link>
      <pubDate>Fri, 01 Feb 2013 08:15:46 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2013/javascript-closures-as-a-way-to-retain-state/</guid>
      <description>Long time no blog! Let&#39;s get back into it with a nifty and clean way of retaining state in Javascript - closures.
I was recently looking for an easy way to call a specific function after two separate/unrelated AJAX calls to two remote endpoints have been completed. The naive method would be to make the first AJAX call -&amp;gt; callback to the second AJAXÂ call -&amp;gt; callback to doSomething, but we can use the fact that these two AJAX calls are not related and run them concurrently.</description>
    </item>
    
    <item>
      <title>Bits of javascript goodness</title>
      <link>https://blog.florentdelannoy.com/blog/2012/bits-of-javascript-goodness/</link>
      <pubDate>Sun, 27 May 2012 05:14:26 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2012/bits-of-javascript-goodness/</guid>
      <description>(This blog post is better followed with the associated github repo. Run the Sinatra server with &amp;lsquo;ruby slowserver&amp;rsquo;, pop up a browser, and follow the revisions to see how the code gradually gets better. :) )
Recently at work, we wanted to modify some js ad code to include weather data for better ad targeting. For certain caching reasons, weather data has to be fetched by an AJAX call, then fed to the ad code.</description>
    </item>
    
    <item>
      <title>Format perlcritic output as TAP to integrate with Jenkins</title>
      <link>https://blog.florentdelannoy.com/blog/2012/format-perlcritic-output-as-tap-to-integrate-with-jenkins/</link>
      <pubDate>Thu, 09 Feb 2012 11:23:17 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2012/format-perlcritic-output-as-tap-to-integrate-with-jenkins/</guid>
      <description>Perl::Critic is a nifty syntax analyzer able to parse your Perl code, warn you against common mistakes and hint you towards best practices. It&#39;s available either as a Perl module or a standalone shell script (perlcritic). Unfortunately, there is no standard way to integrate it with Jenkins.
Jenkins, the continuous-integration-tool-formerly-known-as-Hudson, is the cornerstone of our continuous building process at work. It checks out the latest build from Git, runs a bunch of tests (mainly Selenium, as we develop a website) and keeps track of what goes wrong and what goes right.</description>
    </item>
    
    <item>
      <title>A gentle introduction to GNU screen</title>
      <link>https://blog.florentdelannoy.com/blog/2012/a-gentle-introduction-to-gnu-screen/</link>
      <pubDate>Thu, 05 Jan 2012 06:01:39 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2012/a-gentle-introduction-to-gnu-screen/</guid>
      <description>You probably heard of GNU screen. It&#39;s handy, ubiquitous, and dead simple. Here&#39;s how to use it!
Open a terminal and type:
screen  You&#39;re welcomed by an introduction message, press enter, and&amp;hellip; You&#39;re in a shell. Uh?
Screen is simple screen is a terminal manager, so it&#39;s logical that the first thing you see when you start it is a terminal.
This terminal is as vanilla as the terminal we started from.</description>
    </item>
    
    <item>
      <title>Keep GimmeSomeTune running</title>
      <link>https://blog.florentdelannoy.com/blog/2011/keep-gimmesometune-running/</link>
      <pubDate>Fri, 23 Dec 2011 10:45:31 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/keep-gimmesometune-running/</guid>
      <description>As a follow-up on my previous post on the question, which advocated a simple (but bad) approach to keeping GimmeSomeTune running, here&#39;s a better way!
The Good Thing (tm) to do is to use OS X&#39;s built-in mechanism to start and keep processes running, namely launchd.
What we have to do is simply to write a plist containing the info needed by launchd, namely:
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt; &amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.</description>
    </item>
    
    <item>
      <title>Optimising a video editor plugin</title>
      <link>https://blog.florentdelannoy.com/blog/2011/optimising-a-video-editor-plugin/</link>
      <pubDate>Wed, 09 Nov 2011 00:26:19 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/optimising-a-video-editor-plugin/</guid>
      <description>During the past few weeks, I have been writing a C++ plugin to grade C41 digital intermediates in Cinelerra, an open-source Linux video editor. C41 is the most common chemical process for negatives, resulting in films that look like this â you probably know it if you&#39;ve ever shot film cameras.
Of course, after scanning those negatives, you have to process (&amp;ldquo;grade&amp;rdquo;) them to turn them back to positive. And it&#39;s not as simple as merely inverting the values of each channel for each pixel; C41 has a very pronounced orange shift that you have to take into account.</description>
    </item>
    
    <item>
      <title>Rails in a week - day 7</title>
      <link>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-7/</link>
      <pubDate>Sun, 02 Oct 2011 20:46:58 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-7/</guid>
      <description>Today was the last day of my Rails week. I added some database-backing to my app (with a fully scaffolded model and all!) for the countries&amp;rsquo; data and refactored a fair bit, though I&#39;m still unsure about a few decisions I made, such as if I should put the base data in seeds.rb or in a migration. Oh, well.
The website is available here:
http://antipodes.plui.es
And its source code is on GitHub.</description>
    </item>
    
    <item>
      <title>Rails in a week - day 6</title>
      <link>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-6/</link>
      <pubDate>Sat, 01 Oct 2011 22:59:17 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-6/</guid>
      <description>TL;DR: testing works, I learned i18n, and fixed a bug through TDD.
After writing a simple little functional test and making it run through rake test, albeit slowly, I installed Spork and autotest. From what I gathered, Spork is an RSpec-only thing, so I wrote a few RSpec tests instead of functional tests. After a bit of tweaking, everything was going smoothly between Spork and autotest, all running RSpec, but my file in test/ was ignored.</description>
    </item>
    
    <item>
      <title>Rails in a week - day 5</title>
      <link>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-5/</link>
      <pubDate>Thu, 29 Sep 2011 21:39:28 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-5/</guid>
      <description>TL;DR: polishing. Trying to get into TDD, but slowness makes it a strange experience.
This &amp;ldquo;day 5&amp;rdquo; has been more or less spread over two days because of other engagements (mowing the lawn and subscribing an insurance policy for abroad if you wish to know the details), and I didn&#39;t keep precise tracks of the steps I took.
The major milestone is that the MVP for Antipodes is online at http://antipodes.</description>
    </item>
    
    <item>
      <title>Rails in a week - day 4</title>
      <link>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-4/</link>
      <pubDate>Tue, 27 Sep 2011 21:52:21 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-4/</guid>
      <description>TL;DR: it deploys! Finally!
After a full day spend battling cryptic error messages, I finally got my 10-lines Rails app to deploy.
First thing in the morning, I decided to switch to using rvm on my production machine too, in order to have the same setup and version on Ruby (1.9.2) for testing and production. This meant also reinstalling the important gems (bundler, rails, rake).
The production machine uses nginx+Passenger, which I reinstalled (following instructions here) in order to work smoothly with this now rvm-ed ruby.</description>
    </item>
    
    <item>
      <title>Rails in a week - day 3</title>
      <link>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-3/</link>
      <pubDate>Sat, 24 Sep 2011 22:37:26 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-3/</guid>
      <description>TL;DR: phew. Deployment is hard. Testing is slow.
Morning: off due to World Cup; watching of the match against New Zealand. :(
Afternoon: while playing a bit more with the prototype, I noticed the logic is actually broken and my way to calculate an antipode was actually broken. This came from the fact that the longitude and latitude coordinates aren&#39;t logically the same. Latitude divides the globe on its equator while longitude is arbitrarily positioned&amp;hellip; I guess?</description>
    </item>
    
    <item>
      <title>Rails in a week - day 2</title>
      <link>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-2/</link>
      <pubDate>Fri, 23 Sep 2011 22:43:40 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-2/</guid>
      <description>TL;DR: I have a terribly ugly first draft of the application working!
Morning: spent finishing reading the Getting Started guide and beginning the Rails Tutorial.
Afternoon: so, let&#39;s get down to maps&amp;hellip; What&#39;s cool in Rails is that there are plenty of gems, and you just have to plug them in, right?
GoogleMapsForRails seems like the right tool for the job.
After trying to get my posts to be geolocalized&amp;hellip; Success!</description>
    </item>
    
    <item>
      <title>Rails in a week - day 1</title>
      <link>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-1/</link>
      <pubDate>Thu, 22 Sep 2011 20:06:42 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-1/</guid>
      <description>TL;DR: I began learning Rails this morning, and even though Rails in itself is (seems?) easy enough, setting everything up and deploying is hairier.
8:00: let&#39;s get started! First step: getting vagrant up and running. We&#39;ll hit the tutorial. 8:15: the lucid32 &amp;ldquo;box&amp;rdquo;, Vagrant&#39;s parlance for a virtual machine image, is downloading. Time to get a cup of coffee. 8:40: box downloaded, let&#39;s get on with the VM setup process. vagrant ssh&amp;hellip; Yep, it works!</description>
    </item>
    
    <item>
      <title>Rails in a week - day 0</title>
      <link>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-0/</link>
      <pubDate>Wed, 21 Sep 2011 22:07:55 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/rails-in-a-week-day-0/</guid>
      <description>Tl;dr: I&#39;m learning Rails in a week! And I&#39;ll blog about it all along. Any tips?
So. Learning Rails. As a recent graduate in CS, moving to a new country in two weeks and looking forward to expand my skills, Rails looks like a good fit: it&#39;s in demand, it focuses on developer happiness, vibrant ecosystem yadda yadda. You probably already know this so let&#39;s cut the marketing speak!
Methodology My main aim is to get familiar with the Rails ecosystem, but also to learn better processes in the way.</description>
    </item>
    
    <item>
      <title>An interesting CSS hack for highlighting S-expressions</title>
      <link>https://blog.florentdelannoy.com/blog/2011/an-interesting-css-hack-for-highlighting-s-expressions/</link>
      <pubDate>Tue, 28 Jun 2011 21:57:13 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/an-interesting-css-hack-for-highlighting-s-expressions/</guid>
      <description>The Community-Scheme-Wiki has a pretty interesting way of highlighting lispy code
Scheme being a Lisp dialect, it makes sense to highlight the S-expressions, i.e. &amp;ldquo;things between parenthesis&amp;rdquo;. The Community Scheme Wiki does exactly that. As you move your mouse over the code, it will highlight the s-expression you&#39;re in and the ones around in different colors, allowing you to quickly make sense of the code.
An example can be found on this page, which renders like this as you move your mouse:</description>
    </item>
    
    <item>
      <title>Deep sleep on MacBook Air Late 2010</title>
      <link>https://blog.florentdelannoy.com/blog/2011/deep-sleep-on-macbook-air-late-2010/</link>
      <pubDate>Tue, 14 Jun 2011 20:14:21 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/deep-sleep-on-macbook-air-late-2010/</guid>
      <description>Apple&#39;s latest MacBook Air boasts to last 30 days on battery when sleeping. Classical sleep will power down most of the machine (display, processor, hard drive, etc) but keep the RAM powered on in order to keep the state of the OS. However, the RAM drains too much power to realistically allow more than a week or so on a single charge.
The MBA feat is achieved through &amp;ldquo;deep sleep&amp;rdquo;, i.</description>
    </item>
    
    <item>
      <title>Semibold keyboard shortcut in Pages</title>
      <link>https://blog.florentdelannoy.com/blog/2011/semibold-keyboard-shortcut-in-pages/</link>
      <pubDate>Thu, 26 May 2011 13:08:08 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/semibold-keyboard-shortcut-in-pages/</guid>
      <description>So&amp;hellip; Turns out there is no shortcut to turn text to semibold in Apple Pages, from the iWork suite. There are shortcuts for bold and italic respectively, but not semibold (or light / ultralight for that matter) even for the fonts that support it.
The closest thing to a solution that I found is through Character Style:
 Select a piece of text, make it semibold In the Styles Drawer, under Character Styles, click on the little arrow next to &amp;ldquo;none&amp;rdquo; and &amp;ldquo;Create New Character Style From Selection&amp;rdquo; Assign a Hot Key to the newly created Character Style, by clicking the arrow next to it and Hot Key.</description>
    </item>
    
    <item>
      <title>Automatically restart applications on OS X</title>
      <link>https://blog.florentdelannoy.com/blog/2011/automatically-restart-applications-on-os-x/</link>
      <pubDate>Sat, 07 May 2011 08:53:33 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/automatically-restart-applications-on-os-x/</guid>
      <description>I use GimmeSomeTune to provide hotkeys and some other goodies for iTunes. It works alright, but is veeeery crashy – usually every dozen hours or so on my machine.
How to fix that? Let&#39;s relaunch it as soon as it crashes. Simple!
In a terminal:
for (( ; ; )); do open -W /Applications/Multimedia/GimmeSomeTune.app/; done open is the bash command to launch applications on OS X. It works with all kinds of files: open somefile.</description>
    </item>
    
    <item>
      <title>nginx as a reverse-proxy to Apache&#43;Sinatra</title>
      <link>https://blog.florentdelannoy.com/blog/2011/nginx-as-a-reverse-proxy-to-apachesinatra/</link>
      <pubDate>Wed, 27 Apr 2011 22:12:20 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/nginx-as-a-reverse-proxy-to-apachesinatra/</guid>
      <description>I was recently developing a Sinatra app that wanted to host from home â setting it up Heroku would have meant migrating from SQLite to Postgres, and I&#39;m lazy. The problem was that I already happened to have an Apache server at home to serve some other content, specifically some calendars through the WebDAV module.
The solution I used was simple: instead of having Apache listening on port 80, I set up nginx to listen to port 80 and redirect to either Apache (set to listen on port 8080 instead) or Sinatra (port 9393) depending on the URL.</description>
    </item>
    
    <item>
      <title>Large-scale, automated whimsy - A journey into blog spam</title>
      <link>https://blog.florentdelannoy.com/blog/2011/large-scale-automated-whimsy-a-journey-into-blog-spam/</link>
      <pubDate>Fri, 15 Apr 2011 23:06:51 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/large-scale-automated-whimsy-a-journey-into-blog-spam/</guid>
      <description>As you may have noticed if you write a blog, however modest it might be (such as yours truly), you&#39;ll receive spam comments. A lot. Things like that:
Spam like this is usually obvious. Thankfully, some spammers go out of their ways to create engaging messages to fool your filters, both automated (like Akismet, who dutifully collected all the ones exposed in this post) and human. I&#39;ve been collecting the best of breed (I know, I live a very sheltered life), such as&amp;hellip;</description>
    </item>
    
    <item>
      <title>So you want to do the SICP...</title>
      <link>https://blog.florentdelannoy.com/blog/2011/so-you-want-to-do-the-sicp/</link>
      <pubDate>Thu, 24 Mar 2011 22:57:29 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/so-you-want-to-do-the-sicp/</guid>
      <description>That&#39;s awesome! But maybe you don&#39;t know where to start.
So here we go!
Wait, the what? Structure and Interpretation of Computer Programs, a.k.a. the SICP, is an MIT class teaching computer languages turned into a book.
Why should you care? I&#39;ll let Stack Overflow answer:
SICP, however, is in a different league. It is a book that will enlighten you. It will evoke in you a passion for writing beautiful programs.</description>
    </item>
    
    <item>
      <title>Convert .approject to .aplibrary</title>
      <link>https://blog.florentdelannoy.com/blog/2011/convert-approject-to-aplibrary/</link>
      <pubDate>Thu, 24 Feb 2011 19:32:33 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/convert-approject-to-aplibrary/</guid>
      <description>If you ever backed up Aperture projects outside your standard library, you probably noticed the default format for exported albums changed from .approject to .aplibrary in the update from Aperture 2 to Aperture 3.
The Finder correctly reports these new .aplibrary as &amp;ldquo;Aperture Library&amp;rdquo;, but it seems to have forgotten everything about the old .approject who now appear as standard folders (it appears to be a weird bug on my machine, but still).</description>
    </item>
    
    <item>
      <title>The Zen of updating Wordpress</title>
      <link>https://blog.florentdelannoy.com/blog/2011/the-zen-of-updating-wordpress/</link>
      <pubDate>Wed, 09 Feb 2011 22:35:33 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/the-zen-of-updating-wordpress/</guid>
      <description>Wordpress automatic updates never work.
No matter if it&#39;s a major version change or just a small bump (let&#39;s say&amp;hellip; 3.0.4 to 3.0.5, uh?), I always end up downloading the whole thing and updating it manually because the update page stops responding and plainly goes blank.
Instructions for update are here, by the way. And after the steps to update, they include that little snippet of wisdom:
How could anyone be angry at Wordpress after that?</description>
    </item>
    
    <item>
      <title>Ye old Dock: Leopard-style Exposé under Snow Leopard</title>
      <link>https://blog.florentdelannoy.com/blog/2011/ye-old-dock-leopard-style-expose-under-snow-leopard/</link>
      <pubDate>Thu, 27 Jan 2011 19:23:09 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/ye-old-dock-leopard-style-expose-under-snow-leopard/</guid>
      <description>Samuel Clay shares an awesome little tweak: replace Snow Leopard&#39;s Dock.app by the Dock.app from a beta version of SL, and Exposé will get back to the way it acted on Leopard, i.e. the size of the thumbnail is proportional to the size of its window.
And it rocks.</description>
    </item>
    
    <item>
      <title>Can&#39;t find the PostgreSQL client library (libpq)</title>
      <link>https://blog.florentdelannoy.com/blog/2011/cant-find-the-postgresql-client-library-libpq/</link>
      <pubDate>Wed, 26 Jan 2011 14:19:08 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/cant-find-the-postgresql-client-library-libpq/</guid>
      <description>You might encounter this error while trying to install the pg gem (v0.10.1), or when updating from v0.10.
My stacktrace on Mac OS X Snow Leopard 10.6.6 with Rubygems 1.4.2, Ruby 1.8.7 and Postgres 9.0.2 was the following:
Building native extensions. This could take a while... ERROR: Error installing pg: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb checking for pg_config... yes Using config values from /usr/local/bin/pg_config checking for libpq-fe.</description>
    </item>
    
    <item>
      <title>Tunalysis - with screenshot</title>
      <link>https://blog.florentdelannoy.com/blog/2011/tunalysis-with-screenshot/</link>
      <pubDate>Fri, 07 Jan 2011 23:17:45 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2011/tunalysis-with-screenshot/</guid>
      <description>For all of you number junkies out there:
Tunalysis development is doing good, as sporadic as it may be. The next step is to rework/refine the algorithm giving rankings, in order to achieve better results. I&#39;ll try to include the &amp;ldquo;Last Played Date&amp;rdquo; in the mix, and maybe also use the Date Added.
More good news: no need to install gems by yourself anymore, everything&#39;s included by Bundler.
Tunalysis&#39;s on GitHub!</description>
    </item>
    
    <item>
      <title>Set up a mail server on Amazon EC2</title>
      <link>https://blog.florentdelannoy.com/blog/2010/set-up-a-mail-server-on-amazon-ec2/</link>
      <pubDate>Wed, 29 Dec 2010 00:35:12 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/set-up-a-mail-server-on-amazon-ec2/</guid>
      <description>This post will explain how to set up a Postfix mail server on an EC2 instance.
First, a word of warning: Amazon IPs generally aren&#39;t highly considered, spam-wise. Meaning that even if you take all the precautionary steps, your emails might end up in spam folders. If email is business-critical for you, you might want to consider other options: host your mail server somewhere else? Use something like SendGrid?
This said, let&#39;s dive in!</description>
    </item>
    
    <item>
      <title>Remaildr - the tech bits</title>
      <link>https://blog.florentdelannoy.com/blog/2010/remaildr-the-tech-bits/</link>
      <pubDate>Mon, 27 Dec 2010 14:52:21 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/remaildr-the-tech-bits/</guid>
      <description>Here are a few small things you might want to know about http://remaildr.com. Or maybe not, but then again, nobody forces you to read, stranger!
&amp;ldquo;Hardware&amp;rdquo; Remaildr is hosted on an Amazon EC2 micro instance, benefiting of the free tier offer. Apart from the static IP that will probably end up costing me something, remaildr should be about free.
&amp;ndash; Edit: as of may, remaildr is now hosted on a VPS at OVH.</description>
    </item>
    
    <item>
      <title>Tunalysis - analyse your iTunes music library</title>
      <link>https://blog.florentdelannoy.com/blog/2010/tunalysis-analyse-your-itunes-music-library/</link>
      <pubDate>Sun, 21 Nov 2010 15:19:46 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/tunalysis-analyse-your-itunes-music-library/</guid>
      <description>Tunalysis is a small(ish) Ruby script that will read your iTunes library, crunch numbers, and gives you a few interesting facts about it, such as:
 Total number of songs Total number of playlists Average song length Average bitrate Average play count Average skip count Total time spent listening to music  Some of these statistics are already available in iTunes, but Tunalysis ultimate goal is to expand iTunes (limited) stats and to give you hindsight on your musical habits and tastes.</description>
    </item>
    
    <item>
      <title>A bit of Terminal-fu</title>
      <link>https://blog.florentdelannoy.com/blog/2010/a-bit-of-terminal-fu/</link>
      <pubDate>Thu, 11 Nov 2010 20:59:46 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/a-bit-of-terminal-fu/</guid>
      <description>Yesterday, my little brother was typing something on a linux bash and suddenly went back to the beginning of the line with a simple Ctrl-a. It blew my mind.
I don&#39;t know why, but it never occurred to me to look for shortcuts in Terminal (and bash in general), other than Ctrl-c for badly behaving processes. I just cursed myself and frantically typed on the left arrow key each time I typed cd instead of cp.</description>
    </item>
    
    <item>
      <title>Synchronize and backup Address Book contacts with Dropbox</title>
      <link>https://blog.florentdelannoy.com/blog/2010/synchronize-and-backupaddress-book-contacts-with-dropbox/</link>
      <pubDate>Sun, 31 Oct 2010 09:56:30 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/synchronize-and-backupaddress-book-contacts-with-dropbox/</guid>
      <description>A nice way to synchronize contacts between your Macs without having to buy a MobileMe account is to have them on your Dropbox.
Basically, it boils down to moving the folder containing your Address Book data on your Dropbox, then adding a symbolic link to it so Address Book will know where to find its data.
Let&#39;s go on bash!
Move the folder:
$ mv -v ~/Library/Application\ Support/AddressBook ~/Dropbox/  Add a symbolic link:</description>
    </item>
    
    <item>
      <title>So what could I get at McDonalds? (.com)</title>
      <link>https://blog.florentdelannoy.com/blog/2010/so-what-could-i-get-at-mcdonalds-com/</link>
      <pubDate>Wed, 01 Sep 2010 08:21:12 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/so-what-could-i-get-at-mcdonalds-com/</guid>
      <description>I&#39;ve been meaning to try and learn Ruby for a few months now, since I&#39;ve discovered _why&#39;s (poignant) guide. As often when it comes to programming (and about everything, really), nothing replaces practice. Combine that with an idea that floated in my head, and here&#39;s what gives:
http://sowhatcouldigetatmcdonalds.com/
The concept The idea for this website popped up as I was chatting with fellow students; something along the lines of &amp;ldquo;hey, wouldn&#39;t it be cool if you had a website that&#39;d told you, like, you know, say, for $24 you can have a bunch of big macs, 12 large fries and a sundae?</description>
    </item>
    
    <item>
      <title>Application icons</title>
      <link>https://blog.florentdelannoy.com/blog/2010/application-icons-follow-up/</link>
      <pubDate>Thu, 22 Jul 2010 02:20:28 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/application-icons-follow-up/</guid>
      <description>Just a quick follow-up to this post about changing application icons:
 Someone actually found this post by Googling for &amp;ldquo;creepy preview icon osx&amp;rdquo;. I love it. :D You can find an astonishing number of great icons on DeviantArt. There is actually a whole category for Mac OS X icons, and given DeviantArt usual level of quality, most of these are insanely good.  Hats off to this nifty little customization for nostalgic users by the way.</description>
    </item>
    
    <item>
      <title>Alfred: it&#39;s like Quicksilver, but better</title>
      <link>https://blog.florentdelannoy.com/blog/2010/alfred-its-like-quicksilver-but-better/</link>
      <pubDate>Sat, 17 Jul 2010 01:34:22 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/alfred-its-like-quicksilver-but-better/</guid>
      <description>I recently started to use Alfred, first along Quicksilver, then as a full replacement. For those of you who never used any of these two, they act like Spotlight on steroids: invoke them with a shortcut, type in a few letters, and let the fun begin. Quicksilver lets you do the basics (launch programs, open folders&amp;hellip;) and way, way more.
A simple example? You can type a picture name, then use Quicksilver to resize it at your will, then re-invoke Quicksilver to send it to someone in your Address Book.</description>
    </item>
    
    <item>
      <title>Let&#39;s go away for awhile</title>
      <link>https://blog.florentdelannoy.com/blog/2010/lets-go-away-for-awhile/</link>
      <pubDate>Fri, 09 Jul 2010 13:53:47 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/lets-go-away-for-awhile/</guid>
      <description>Due to an internship in Canada, I might not post on this blog as often as I liked. I already let it without any posts while we were fully in the exams period, but I&#39;ll try to resume a normal activity as soon as I come back.
Update: as I&#39;m probably going to learn and work on Ruby on Rails, I might blog about it. We&#39;ll see!</description>
    </item>
    
    <item>
      <title>Photocard - a Java postcard generator</title>
      <link>https://blog.florentdelannoy.com/blog/2010/photocard-a-java-postcard-generator/</link>
      <pubDate>Sat, 12 Jun 2010 22:36:11 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/photocard-a-java-postcard-generator/</guid>
      <description>As a school project, we recently finished Photocard, a Java application for Linux that allows you to design postcards (&amp;lsquo;we&amp;rsquo; as in a couple of other students &amp;amp; me).
Basically, Photocard listens to /media/ for an USB key, lets you chose a blueprint for your card (that might contain text and pictures), then drag and drop pictures into that blueprint, retouch them, and print your card (actually save it to /tmp/).</description>
    </item>
    
    <item>
      <title>A keyboard shortcut to change files colours in the Finder?</title>
      <link>https://blog.florentdelannoy.com/blog/2010/a-keyboard-shortcut-to-change-files-colours-in-the-finder/</link>
      <pubDate>Wed, 19 May 2010 22:30:06 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/a-keyboard-shortcut-to-change-files-colours-in-the-finder/</guid>
      <description>My usual habit (some would call it an intermittent OCD, but meh) of sorting and organizing files and folders to a great extend and my almost as severe relentless longing for optimisation recently met in an existential question: is it possible to colour files in the Finder through a keyboard shortcut?
OS X lets you add colours -or &amp;ldquo;labels&amp;rdquo;- to a file by right-click or in the Finder&#39;s File menu. GUI are cool, but get in the way of efficiency once you know your keyboard inside and out.</description>
    </item>
    
    <item>
      <title>Seitunes 1.0</title>
      <link>https://blog.florentdelannoy.com/blog/2010/seitunes-1-0/</link>
      <pubDate>Sat, 08 May 2010 21:43:13 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/seitunes-1-0/</guid>
      <description>Seitunes v1 is here! I think everything I need it to do is in here. I&#39;m not planning on adding new features in the near future - if anything, I&#39;ll concentrate on optimizing performance.
Sei what? Seitunes is a command-line interface for iTunes.
It allows you to see what&#39;s playing in iTunes and control it (play, pause, set volume, toggle shuffle, select a playlist, set song rating) from your terminal.</description>
    </item>
    
    <item>
      <title>Fix ncurses in OS X 10.6.3</title>
      <link>https://blog.florentdelannoy.com/blog/2010/fix-ncurses-in-os-x-10-6-3/</link>
      <pubDate>Mon, 03 May 2010 22:51:20 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/fix-ncurses-in-os-x-10-6-3/</guid>
      <description>In response to my blog post about the issue affecting arrows under OS X 10.6.3, Jonathan Groll pointed out that copying the ncurses libraries from an old 10.6.2 install would fix the problems. It works, but manipulating libraries in that way still feels a bit wrong to me.
And that&#39;s without even mentioning the security implications of getting these libraries from &amp;ldquo;somewhere on the internet&amp;rdquo; if you don&#39;t have them laying around anymore.</description>
    </item>
    
    <item>
      <title>Get database size in phpMyAdmin</title>
      <link>https://blog.florentdelannoy.com/blog/2010/get-database-size-in-phpmyadmin/</link>
      <pubDate>Wed, 28 Apr 2010 19:19:56 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/get-database-size-in-phpmyadmin/</guid>
      <description>It looks like phpMyAdmin doesn&#39;t include a way to see how much space takes the MySQL database. I found that a bit weird, but hey, if phpMyAdmin doesn&#39;t do it, let&#39;s cut to the chase and go SQL!
The most straightforward way to get your database size from phpMyAdmin is the following SQL query:
SELECT table_schema &amp;#34;Data Base Name&amp;#34;, sum( data_length + index_length ) / 1024 / 1024 &amp;#34;Data Base Size in MB&amp;#34; FROM information_schema.</description>
    </item>
    
    <item>
      <title>Tunneling iTunes through SSH</title>
      <link>https://blog.florentdelannoy.com/blog/2010/tunneling-itunes-through-ssh/</link>
      <pubDate>Tue, 27 Apr 2010 22:47:14 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/tunneling-itunes-through-ssh/</guid>
      <description>If you want to listen to your music library on the go, you can tunnel iTunes through SSH in a few easy steps.
First of all, you have to enable sharing in iTunes: iTunes &amp;gt; Preferences &amp;gt; Sharing &amp;gt; Share my library on my local network.
This will announce your library on your local network using multicast DNS, provided by Apple&#39;s implementation of zeroconf: Bonjour. The library can then be accessed on port 3689 of the computer mDNS announced.</description>
    </item>
    
    <item>
      <title>Slim down applications: Trimmit</title>
      <link>https://blog.florentdelannoy.com/blog/2010/slim-down-applications-trimmit/</link>
      <pubDate>Sat, 17 Apr 2010 22:57:53 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/slim-down-applications-trimmit/</guid>
      <description>Applications on Mac OS typically include a lot of stuff most people won&#39;t use daily, especially translations in foreign languages and builds for different architectures (x86, x86_64, PPC and PPC 64 bits).
A handful of utilities exist to trim down applications. I personally use Trimmit, a free-as-in-beer software that gives excellent results, as long as it&#39;s used carefully.
For example, let&#39;s take the latest version of iTunes (v9.1) under Snow Leopard.</description>
    </item>
    
    <item>
      <title>Changing an application icon under OS X</title>
      <link>https://blog.florentdelannoy.com/blog/2010/changing-an-application-icon-under-os-x/</link>
      <pubDate>Sun, 11 Apr 2010 22:17:08 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/changing-an-application-icon-under-os-x/</guid>
      <description>I don&#39;t like the default icon for Preview.app in OS X.
The sight of that child, giving me this creepy grin, sitting here in the Dock while I&#39;m browsing pictures, is just weird.
There are two ways to make him go away.
The hard way I call this method the hard way because it involves having another .icns file (the filetype for OS X icons), and navigating through folders supposed to be hidden.</description>
    </item>
    
    <item>
      <title>Seitunes v0.8</title>
      <link>https://blog.florentdelannoy.com/blog/2010/seitunes-v0-8/</link>
      <pubDate>Mon, 05 Apr 2010 00:24:08 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/seitunes-v0-8/</guid>
      <description>Version 0.8 of Seitunes is here!
Apart from finishing implementing the core functions, I focused on code clarity and performance enhancements.
Code All major Applescript interactions with iTunes now go through separate C functions instead of &amp;ldquo;oh hey just do it here in main()&amp;rdquo; as before. These functions act as wrappers to access iTunes, and can be re-used for any other project. I could even put them in a separate file and call it a library :)</description>
    </item>
    
    <item>
      <title>OS X 10.6.3 broke ncurses</title>
      <link>https://blog.florentdelannoy.com/blog/2010/os-x-10-6-3-broke-ncurses/</link>
      <pubDate>Wed, 31 Mar 2010 17:21:11 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/os-x-10-6-3-broke-ncurses/</guid>
      <description>As I was working on my Seitunes project, I noticed something strange: the arrows didn&#39;t quite work any more. Instead of their proper action (up &amp;amp; down to change volume, right &amp;amp; left to change song), they all quit the program and printed -respectively- &amp;ldquo;OA&amp;rdquo;, &amp;ldquo;OB&amp;rdquo;, &amp;ldquo;OC&amp;rdquo; and &amp;ldquo;OD&amp;rdquo; on the stdout.
I tried to go back to a working state by progressively deleting new features I was implementing, until I had exactly the same code as the (known working!</description>
    </item>
    
    <item>
      <title>Insecure startup item disabled</title>
      <link>https://blog.florentdelannoy.com/blog/2010/insecure-startup-item-disabled/</link>
      <pubDate>Sun, 28 Mar 2010 22:37:03 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/insecure-startup-item-disabled/</guid>
      <description>As a follow-up to my post about startup items, I want to point out that a Startup Item must have proper permissions or it will be disabled at startup with the following message:

In my case, the files under /Library/StartupItems/MyApache still belonged to me instead of root:wheel.
Fixed with a simple:
mbp:StartupItems florent$ sudo chown -Rv root:wheel /Library/StartupItems/MyApache/  It also appears that StartupItems permissions need to be set to 755 (executable/script file) and 644 (plist file) respectively.</description>
    </item>
    
    <item>
      <title>Put OS X to sleep via command-line</title>
      <link>https://blog.florentdelannoy.com/blog/2010/put-os-x-to-sleep-via-command-line/</link>
      <pubDate>Thu, 25 Mar 2010 15:25:13 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/put-os-x-to-sleep-via-command-line/</guid>
      <description>When connecting to an OS X box via SSH, you may want to put it to sleep after you&#39;re done.
This is no system call to put the computer to sleep that I know of. However, Applescript can do it, and it is trivial to call the OSAScript interpreter in bash.
The following script puts the computer to sleep:
#!/bin/bash osascript -e &#39;tell application &amp;quot;System Events&amp;quot; to sleep&#39; Edit: found a better way!</description>
    </item>
    
    <item>
      <title>Seitunes, an iTunes command-line interface</title>
      <link>https://blog.florentdelannoy.com/blog/2010/seitunes-an-itunes-command-line-interface/</link>
      <pubDate>Tue, 23 Mar 2010 00:29:28 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/seitunes-an-itunes-command-line-interface/</guid>
      <description>My home main computer is a MacBook Pro, on which I frequently play music with iTunes. However, I&#39;m often on my laptop, without direct access to the MBP&#39;s screen or keyboard/mouse to pause, change song, change volume, etc. I can connect to the MBP using VNC, but I was looking for something more lightweight.
I therefore decided to design a command-line interface for iTunes, that I would run via SSH. I called it Seitunes for reasons I can&#39;t really remember right now, but there it is!</description>
    </item>
    
    <item>
      <title>On designing mockups</title>
      <link>https://blog.florentdelannoy.com/blog/2010/on-designing-mockups/</link>
      <pubDate>Thu, 11 Mar 2010 23:47:17 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/on-designing-mockups/</guid>
      <description>As part of a group project, I am currently involved in designing an application from the ground up. Designing the UI first drafts, before even chosing a programming language or environment, is something that should be easy and straightforward. We needed a tool that allows easy sharing between people, regardless of operating system.
Please welcome Mockingbird.
An amazing web application to design sleek and elegant UIs, Mockingbird is Javascript-based (no Flash!</description>
    </item>
    
    <item>
      <title>Startup Items: launch services at boot</title>
      <link>https://blog.florentdelannoy.com/blog/2010/startup-items-launch-services-at-boot/</link>
      <pubDate>Mon, 08 Mar 2010 22:50:50 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/startup-items-launch-services-at-boot/</guid>
      <description>This post is a follow-up on the setup of your own Apache web server (although the technique can be used to start about anything of course).
Unlike classical Linuces that stock programs to launch at boot in a /etc/init.d folder for example; OS X uses a mechanism called Startup Items. These items can be found in /Library/StartupItems/, ~/Library/StartupItems and /System/Library/StartupItems.
One particular strength of the Startup Items is that you can specify in which order to launch them.</description>
    </item>
    
    <item>
      <title>Compiling and installing Apache on Mac OS X</title>
      <link>https://blog.florentdelannoy.com/blog/2010/compiling-and-installing-apache-on-mac-os-x/</link>
      <pubDate>Thu, 25 Feb 2010 00:52:57 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/compiling-and-installing-apache-on-mac-os-x/</guid>
      <description>Update: instead of the completely manual method, I&#39;d now recommend using the most excellent Homebrew. The &amp;ldquo;missing package manager for OS X&amp;rdquo; will automatically download and compile the latest version and verify the checksums, amongst other niceties. It&#39;s awesome, and only gaining more momentum.
Original post:
As you may already know, Apple bundles a version of Apache into Mac OS X. This httpd can be started in System Preferences &amp;gt; Sharing &amp;gt; Web Sharing.</description>
    </item>
    
    <item>
      <title>SSH without a password: using public keys</title>
      <link>https://blog.florentdelannoy.com/blog/2010/ssh-without-a-password-using-public-keys/</link>
      <pubDate>Sat, 23 Jan 2010 00:29:16 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/ssh-without-a-password-using-public-keys/</guid>
      <description>If you&#39;re often logging remotely into UNIX-like machines using SSH, you may grow tired of having to type and retype your password each and every time. And even more so if you&#39;re running rsync, or any other service, over SSH.
To make our life easier, we can establish a secured SSH connection between computers using public/private keys generated with OpenSSH.
In this example, I&#39;ll say I want to connect to my server from my laptop.</description>
    </item>
    
    <item>
      <title>Screenshots and OS X: capturing a single window</title>
      <link>https://blog.florentdelannoy.com/blog/2010/screenshots-and-os-x-capturing-a-single-window/</link>
      <pubDate>Fri, 22 Jan 2010 23:22:01 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2010/screenshots-and-os-x-capturing-a-single-window/</guid>
      <description>One pretty awesomely simple thing under Mac OS is making great screenshots.
You might already be familiar with Mac OS X&#39;s classical shortcuts for screenshots, Shift+Cmd+3 (full screen) and Shift+Cmd+4 (selection). But did you know you can shoot a single window without the hassle of selecting it from edge to edge, or worse, cropping from a full screenshot?
Press Shift+Cmd+4, then press the space bar.
A little camera appears, and allows you to capture the highlighted window of your choice.</description>
    </item>
    
    <item>
      <title>A Keynote update is available. Would you like to open Software Update?</title>
      <link>https://blog.florentdelannoy.com/blog/2009/a-keynote-update-is-available-would-you-like-to-open-software-update/</link>
      <pubDate>Sat, 03 Oct 2009 16:07:52 +0000</pubDate>
      
      <guid>https://blog.florentdelannoy.com/blog/2009/a-keynote-update-is-available-would-you-like-to-open-software-update/</guid>
      <description>This nice explicative window popped up last time I opened Keynote (iWork &amp;lsquo;09) :
Why yes, I would love to, but when I open Software Update&amp;hellip;
No updates are available.
What&#39;s happening there ? Well, it seems that OS X&#39;s Software Update only checks for /Applications/ to see if Apple applications (e.g. iWork, Aperture) are present on the system, and need upgrading. Which means that if you have some of these Apple applications located at any other place on your hard drive -in my case, being a subfolder-creating control freak, /Applications/Work/iWork &amp;lsquo;09/Keynote.</description>
    </item>
    
  </channel>
</rss>