# Thibault Milan
> Head of Digital & Platform at Paperjam. Neurospicy, AI-curious, allergic to vendor lock-in. Based in Luxembourg.
Public Ghost content for AI and LLM tooling. This file includes a bounded export of public pages first, then recent public posts.
Append `.md` to any post or page URL to get the content in Markdown (for example, `/example-post.md`).
## Pages
### About me
URL: https://thibaultmilan.com/about/
Last updated: 2026-06-29T21:03:35.000Z
I'm Thibault Milan. I run digital and platform strategy at [Paperjam](https://wearepaperjam.lu/?ref=thibaultmilan.com), Luxembourg's leading business and economics media — where the daily job is turning AI hype into things that actually ship and audiences that actually stay.
Before that, I spent eight years building and leading the innovation practice at [Smile](https://smile.eu/?ref=thibaultmilan.com). A decade-plus in tech taught me one durable lesson: most transformation fails not because the technology is wrong, but because the organization isn't ready for it.
That's the gap I work in.
## What I actually do
I help organizations move from "we should do something with AI" to "this is in production and it works." Less slideware, more shipping.
My work sits at the intersection of three things:
- **AI transformation** — hands-on implementation, not theory. I've seen why most AI projects die between the proof-of-concept and production, and I build to avoid that fate.
- **Platform & product strategy** — how digital products earn their audience, and how teams structure themselves to keep delivering.
- **Digital leadership** — the unglamorous part: executive buy-in, culture change, and knowing when a project (or a chapter) is done.
## Why bring me in
A few things I tend to be useful for:
- **Speaking** — on AI in production, platform strategy, and the realistic version of digital transformation. No vendor pitch, no buzzword bingo.
- **Workshops & advisory** — helping leadership teams cut through the noise and decide what's worth building.
- **A practitioner's perspective** — I've implemented this stuff. I'll tell you what breaks.
If any of that fits something you're working on, let's talk.
## Beyond the work
I'm a maker. I design 3D-printed objects and share them openly — successes and failures both, because honest documentation helps people gain confidence faster than polished portfolios do.
I'm also a healthy skeptic when it comes to tech that promises more than it delivers — and I write about that, less diplomatically, on my personal blog.
I manage ADHD, which sounds like a footnote but isn't. It shaped how I work: structured systems, deep focus when it counts, and a low tolerance for process that exists for its own sake. It's part of why I'm good at spotting what actually matters in a messy project.
****Let's build something**
Whether it's a talk, a workshop, a thorny AI problem, or just a conversation about where digital is heading — I'm reachable.
[Get in touch → ](mailto:hello@thibaultmilan.com)
###
### Techwatch
URL: https://thibaultmilan.com/techwatch/
Last updated: 2026-06-29T21:13:17.000Z
**Every two weeks. AI, platforms, and the messy reality of digital work. Links worth your time, with a reason why.**
I've been keeping a tech watch for years, in one form or another. The tools changed, the platforms came and went (pour one out for the ones that shut down on me), but the habit stuck: read widely, keep what matters, throw out the hype.
This is the public version of that habit.
### What you'll get
Every two weeks, a handful of links I actually read. Not a firehose. Each one comes with a note on *why* it's here: what's interesting, what's overstated, what it means if you build or run digital products for a living.
Some entries are a line. Some run longer when the thing deserves unpacking. No filler to hit a word count.
The focus, loosely:
- **AI in practice**: what's shipping, what's vapor, what's quietly useful
- **Platform strategy**: the economics and power dynamics behind the tools we all depend on
- **Digital & media**: building and running products in a space that won't sit still
- **The occasional nerdy detour**, because old habits die hard
No sponsored placements dressed up as picks. If something's a referral or I have a stake, I say so.
### Who's writing this
I'm Thibault. I run Digital & Platform at Paperjam, a Luxembourg media outlet covering business and economics. Day to day I deal with the gap between what tech promises and what actually works once people have to use it, which is roughly what this newsletter is about.
## Sign up
Free, every two weeks.
Subscribe
Email sent! Check your inbox to complete your signup.
No spam. Unsubscribe anytime. The link's in every issue and I won't take it personally.
### Privacy Policy
URL: https://thibaultmilan.com/privacy-policy/
Last updated: 2026-06-29T21:04:20.000Z
**Last updated: 28 June 2026**
Short version: I collect as little as possible, I host in the EU, I don't track you across the web, and I don't sell anything. If you want your data gone, just ask.
This site is run by **Thibault Milan**, based in Luxembourg. I take privacy seriously — partly by conviction, partly because I'd rather not collect data I don't need. This page explains, plainly, what happens to your data when you visit or subscribe.
If anything here is unclear, you can reach me at **hello@thibaultmilan.com**.
## Who's responsible
The data controller for this website is Thibault Milan (Luxembourg). I decide what data is collected and why, and I'm your point of contact for any privacy request.
## Where the site lives
This website runs on **Ghost**, self-hosted on a **Hetzner** server located in **Germany (EU)**. Your data stays within the European Union for hosting purposes, except where a specific third-party service (listed below) processes it elsewhere.
## What I collect, and why
### If you just read
When you browse the site, my server and Ghost's built-in analytics record minimal technical information — things like the pages you view, approximate referrer, and browser type. This is **privacy-first analytics**: no third-party tracking cookies, no cross-site profiling, no advertising networks. I use it only to understand which content resonates.
### If you subscribe (free or paid)
To create a member account or receive the newsletter, I collect your **email address** (and your name, if you provide it). Paid members also go through **Stripe** for payment — I never see or store your card details.
I use this to:
- send you the newsletter and occasional updates you asked for,
- manage your membership and, if applicable, your subscription,
- reply to you if you get in touch.
You can unsubscribe at any time via the link in every email, or by managing your account.
## The third parties involved
I keep these to a minimum, but a few services necessarily process some data:
- **Ghost (self-hosted)** — the platform itself, storing member accounts and content. Hosted by me on Hetzner (Germany, EU).
- **Stripe** — payment processing for paid memberships. Stripe is its own controller for payment data. *(Privacy: stripe.com/privacy)*
- **Mailgun** — delivers newsletter and transactional emails. Processes your email address to send mail. *(Privacy: mailgun.com/privacy)*
- **Gravatar** — loads author/member avatars based on email hashes (an Automattic service). *(Privacy: automattic.com/privacy)*
- **Unsplash** — some images are served from Unsplash's servers, which means they receive your IP address when those images load. *(Privacy: unsplash.com/privacy)*
I don't sell your data. I don't share it for advertising. Ever.
## Cookies
This site uses only what's necessary to function — primarily a session cookie when you sign in as a member. There are **no advertising or third-party tracking cookies**. Because the analytics are cookieless and privacy-first, there's no invasive consent banner cluttering your screen.
## How long I keep your data
- **Member and subscriber data**: kept as long as your account is active. Delete your account (or ask me to) and it's removed.
- **Payment records**: retained by Stripe and, where legally required, by me for accounting/tax obligations.
- **Analytics**: aggregated and short-lived; not tied to your identity.
## Your rights
Under the **GDPR**, you can:
- access the data I hold about you,
- correct it,
- have it deleted ("right to be forgotten"),
- export it,
- object to or restrict its processing,
- withdraw consent at any time.
Email me at **hello@thibaultmilan.com** and I'll handle it. You also have the right to lodge a complaint with Luxembourg's data protection authority, the **CNPD** (cnpd.lu).
### Changes to this policy
If the stack changes — a new tool, a removed one — I'll update this page and the "last updated" date above. Material changes affecting subscribers will be communicated by email.
## Posts
### A One-Hour Meeting, Summarized as "What"
URL: https://thibaultmilan.com/a-one-hour-meeting-summarized-as-what/
Last updated: 2026-09-25T23:10:50.000Z
I spent the last few weeks looking for a meeting notetaker that runs entirely on my Mac. My meetings are the usual mix for someone running a digital team: project check-ins, 1:1s, video calls, a few in-person discussions, roughly half in French and half in English. A good chunk of that is stuff I don't want sitting in someone else's cloud, so running locally was the whole requirement.
Oats looked like the answer. It's free and MIT-licensed, and it can transcribe and summarize without anything leaving the machine. I installed version 0.24, switched the backend to Local, and let it listen to a one-hour team meeting in French.
[Oats — Free, open-source meeting notesThe open alternative for meeting notes. Free, on your Mac, and no bot in your call.ArisoAriso](https://ariso.ai/oats?ref=thibaultmilan.com)
The summary said: "what".
One hour of people talking, one word of output, and not even in the right language.
In fairness, I never typed notes into the app during meetings, and Oats is designed to use those as context for the summary. That probably didn't help. But the transcript underneath was genuinely good (speaker separation included), and that's what makes the result worth writing about.
Because I've built this kind of pipeline before. In 2023, during a two-day hackathon, we put together a proof of concept to subtitle and translate Luxembourgish videos. It later became our answer to a Luxembourg government call for solutions: paste a YouTube link, get SRT files back. The first thing that project taught me was to never hand raw ASR output to a language model.
## What Oats gets right
Credit first, because it's deserved.
The transcription is good. Really good, for something running on a laptop with no network. French and English both came out clean enough to read without wincing, and the diarization kept speakers apart better than I expected. Which is even more impressive given what it was working with, but I'll come back to that. In 2023, getting there took us a paid API and two days of glue code. Here it's a menu-bar app.
Everything lands in a folder in your home directory as plain files: the audio as mp3, the transcript and the notes as Markdown. No proprietary database, no export button to hunt for. If Oats disappeared tomorrow, my meetings would still open in any text editor. For someone allergic to lock-in, that counts for a lot.
No bot joins the call either. Oats records what the Mac hears, which is also the only way to cover in-person meetings. That's where it hurts, though. Remote participants come through the system audio and sound fine. People in the room go through the laptop mic, and in my recordings that mic sounds like it's set way too hot: background noise everywhere, voices distorted. I haven't dug into whether it's a gain setting or my setup, but the model downstream gets the same mess either way. The meetings where a bot-free recorder matters most are the ones where it hears worst.
And the code is MIT. In theory, I could fix everything I'm about to complain about. Keep that in mind for later.
## Déjà vu, 2023 edition
The `{lang: lb}` hackathon gave us two days to build something useful for Luxembourgish. We picked video dubbing and translation.
The speech-to-text step, a Meta XLSR model behind the schreifmaschinn API, returned a list of words with timestamps and one enormous string of text with no sentences in it. So we never treated that output as text. We chunked it into windows of about three seconds, roughly eleven words each, and asked a language model to rewrite it before anything else happened: rebuild the sentences, translate, then map the result back onto the original timecodes. Only after that did we generate SRT files.
Even then, nothing was meant to be published as-is. The README says it plainly: the point was to give translators a working base they could edit.
[GitHub - clawfire/hackathon-lang-lb: Code repo of our PoC of automatic video dubbing + translation from lb to en/fr/de/whateverCode repo of our PoC of automatic video dubbing + translation from lb to en/fr/de/whatever - clawfire/hackathon-lang-lbGitHubclawfire](https://github.com/clawfire/hackathon-lang-lb?ref=thibaultmilan.com)
The full version we later built for the government call added the steps a hackathon skips: audio cleanup, language detection, segmentation, speaker diarization. Each of those exists because the step before it lies a little.
Audio cleanup came first, for a reason. A speech model will transcribe noise with the same confidence it transcribes words, and every step after it inherits the result.
We also hit a wall I'm reminded of now. GPT-4 could rewrite and translate into English or French decently, but asked to produce Luxembourgish, it fell apart. Language support is always the first thing to crack, and it cracks quietly.
Oats, in local mode, records, transcribes, diarizes, then hands the transcript straight to a small on-device model (Gemma 3 1B, quantized to 4 bits) to write the notes. There is no step in between where a human, or even a second pass, gets to fix anything.
I don't know exactly what happened inside that model when it produced "what". But I know the shape of the problem: a small model facing an hour of French, half of it heard through a saturated mic, with nobody allowed to touch the draft first.
## Everything between the transcript and the summary
Here's what I missed. Most of it lives in the gap my 2023 pipeline taught me to respect.
### Let me fix the draft before the model reads it
Diarization gives you Speaker 1, Speaker 2, Speaker 3\. Fine for a transcript. Not much use in a summary, where "Speaker 2 will follow up with Speaker 3" means nothing to anyone on Monday morning.
In 0.24 there was no way to rename speakers at all. [Version 0.25](https://github.com/ariso-ai/oats/releases/tag/v0.25.0?ref=thibaultmilan.com) added it, and the release notes are honest about the catch: rename someone after the notes are generated, and the notes go stale. The names show up once the model has already done its job. They should show up before.
Same for correcting the diarization itself. When two people get merged into one speaker, or one person gets split in two, I want to fix that in the transcript and then generate the summary. Right now there's no way to do it, so every diarization mistake goes straight into the notes.
And a 1:1 doesn't need the same notes as a project status meeting. One is about how someone is doing and what they need from me; the other is decisions, owners, dates. Oats writes the same kind of summary for both. Templates would fix that in an afternoon.
### Let me pick the language, and the model
A meeting in French should get notes in French. There's no setting to choose the language, either for the transcript or for the notes, so you get whatever the pipeline decides. In my case, that was one English word.
The local model is fixed too. Gemma 3 1B is a sensible default for a laptop: small, fast, fits in memory next to everything else. It's also small for an hour of French. On a Mac with enough RAM, I'd happily trade speed for a bigger model, or point Oats at a local model of my choice.
### Let me decide when a meeting starts, and where it comes from
In local mode, detection runs off the microphone. When an app grabs the mic, Oats assumes a meeting has started. In practice it pops up at the wrong moments, often enough to get on my nerves. A calendar would know better: when my meetings are, what they're called, who's invited. That last part, incidentally, would give the diarization real names to work with.
And sometimes the meeting doesn't happen in front of my Mac at all. Say, a 1:1 over coffee, recorded on my phone. A phone sitting on the table, close to the person talking, would probably sound better than my laptop at the far end of a meeting room. But there's no way to hand Oats an mp3\. It only knows how to record.
Some of this exists, by the way. Just not in local mode.
## The line between free and useful
Ariso doesn't hide the split. The README lays it out in a clean table: cloud mode needs an account and sends audio to their backend, with a promise not to train models on it; local mode needs nothing and never lets audio leave the Mac. The rest lives on the cloud side: better transcription, multiple languages, speaker recognition, calendar sync, coaching, follow-up tracking.
[GitHub - ariso-ai/oats: The free, open-source meeting-notes app for your Mac — offline transcription and AI notes, free in the cloud or 100% on-device.The free, open-source meeting-notes app for your Mac — offline transcription and AI notes, free in the cloud or 100% on-device. - ariso-ai/oatsGitHubariso-ai](https://github.com/ariso-ai/oats?ref=thibaultmilan.com)
That's a classic open-core deal, and I have no problem with it in principle. Somebody has to pay the people shipping releases this fast.
Where the line falls is what I'll be watching. Language support, speaker identity and calendar sync were all on my list, and today all three sit on the cloud side. The cloud version is free too, so this isn't a paywall. What it costs is the one thing I came for: keeping my meetings on my machine. For now, local mode is a very good foundation with its most useful layer missing.
The counterweight is the license. The local gaps are exactly the kind of thing a community can close: a language setting, a model picker, an import button. Nobody needs Ariso's permission to write them. Whether Ariso merges them is another question, and the answer will say a lot about what the local mode is for. So far, the signs are good. Speaker renaming landed between my test and this article, and [an issue opened this week](https://github.com/ariso-ai/oats/issues/454?ref=thibaultmilan.com) proposes selectable speech models for the local backend, albeit remote ones. I can't tell how long the rest will take, but the project is clearly moving, and I'm curious to see what they ship next.
## Before you roll one out
If you're evaluating meeting AI for a team, here's what I'd test, based on one Mac and one very short summary.
1. **Your language, your worst room.** Demos run in English on a clean call. Record an hour in the language your team actually speaks, in the room with the bad acoustics.
2. **The edit step.** Find out where you can fix the transcript before the summary gets written. If the answer is nowhere, every error ships.
3. **The split.** List which features need the cloud, then decide whether that's a price your meetings can pay.
4. **The files.** Plain files you own, or rows in someone's database.
As a record of my meeting, Oats's one-word summary was useless. As the first question to ask any AI tool before rolling it out, "what" is hard to beat.
## Sign up for my Tech watch
Running a local meeting notetaker that actually handles French? Tell me, I'm still looking. And if you want more field notes like this one, Techwatch lands every other week.
Subscribe
Email sent! Check your inbox to complete your signup.
No spam. Unsubscribe anytime.
### Speaking at Open Source Conference Luxembourg 2026
URL: https://thibaultmilan.com/talks/speaking-at-open-source-conference-luxembourg-2026/
Last updated: 2026-10-13T09:28:38.000Z
****The talk is done, the slides are online.**
On October 7, I spoke at the Open Source Conference Luxembourg about leaving the hyperscalers without leaving the game. Thanks to everyone who came to the Academia & EdTech track and stayed for the questions. The full deck is on Speaker Deck.
[View the slides ](https://speakerdeck.com/thibaultmilan/leaving-the-hyperscalers-without-leaving-the-game-building-our-ai-solutions-with-open-source-models?ref=thibaultmilan.com)
I'll be speaking at the [Open Source Conference Luxembourg](https://conference.opensource.lu/?ref=thibaultmilan.com) on October 7th in Belval.
The talk: *"Leaving the hyperscalers without leaving the game: building our AI solutions with open source models."*
At Paperjam, we're facing a defining choice. Build our future AI solutions on open source models instead of handing everything over to the hyperscalers. This isn't a mission-accomplished retrospective. It's a real-time logbook, written as we make the decisions.
### Why this, why now
The real trade-offs are rarely as clean as vendor pitch decks make them sound: data sovereignty, cost, dependence versus control, and whether open models are actually mature enough for the concrete needs of a B2B media company. I'll be sharing the decision framework we're building right now, the pitfalls we see coming before we've even hit them (infrastructure, maintenance, in-house skills), and why open source AI isn't an ideological totem. It's a strategic choice to own.
### The details
- 📅 October 7, 2026, 5:00–5:30 PM
- 📍 Terres Rouges Building, Belval | Academia & EdTech track
- 🗓️ [Add the talk to your calendar](https://pretalx.com/open-source-conference-luxembourg-2026/talk/QAZFBB.ics?ref=thibaultmilan.com)
- 📋 [Full conference agenda](https://conference.opensource.lu/agenda/?ref=thibaultmilan.com)
- 🎟️ [Registration](https://conference.opensource.lu/registration/?ref=thibaultmilan.com)
If you're in Luxembourg that day, come by. This is exactly the kind of subject where I have more questions than certainties.
### Immotop Companion: One Click to Mute an Agency
URL: https://thibaultmilan.com/projects/immotop-companion-one-click-to-mute-an-agency/
Last updated: 2026-08-27T18:41:28.000Z
Flat hunting in Luxembourg has a specific texture. You open immotop.lu, you set your filters, and then you scroll past the same handful of agencies over and over: the ones who never answer, the ones whose photos are three years old, the one that lists the same apartment four times at four prices, and the ones quietly advertising a room in a shared flat as if it were an apartment.
You can't filter them out. So I built the filter.
[**Immotop Companion**](https://github.com/clawfire/immotop-companion?ref=thibaultmilan.com) is an unofficial Chrome extension that lets you block a professional seller or agency on immotop.lu in one click. It took a couple of hours on a Sunday and it has already made my search bearable.
## What it does
- Hover over an agency logo in the search results and a small block button appears.
- Click it, and every listing from that seller gets blurred, with a "show anyway" button if you change your mind. A toast with an **Undo** shows up right after, in case of a mis-click.
- Keep scrolling: new listings loaded by infinite scroll get blurred too, automatically.
- The popup lists your blocked sellers, lets you remove them, exports the list to JSON and imports one back.
- Private listings (no logo, no agency) are never touched. This is about professionals, not people.



## Why blurred, and not deleted
Two reasons, and the second one surprised me.
The obvious one: removing listings would silently rewrite your results and you'd never know what you missed. Blurring keeps the receipt: you can see *that* something is hidden, who hid it, and reveal it in one click. Filtering you can't audit is just a different kind of noise.
The practical one: on some searches, deleting would leave you staring at an empty page. Block two or three prolific agencies in a narrow price range and half the grid vanishes, pagination and all. A page of blurred cards tells you something real about the market. This is who's actually selling here. An empty page just looks broken.
## Languages
The interface speaks **French, Deutsch, English, Português and Lëtzebuergesch**. It picks your browser language on first launch, and you can override it in the popup, and the change applies instantly, both to the popup and to everything injected into immotop.lu.
Because a Luxembourg tool that only speaks one language isn't a Luxembourg tool.
[](https://chromewebstore.google.com/detail/immotop-companion/cplnfklcljjhphjjjmmhmkfclcmemfkb?ref=thibaultmilan.com)
****Immotop Companion**
Mute any agency on immotop.lu in one click. Free, open source, and it speaks five languages.
[Add to Chrome ](https://chromewebstore.google.com/detail/immotop-companion/cplnfklcljjhphjjjmmhmkfclcmemfkb?ref=thibaultmilan.com)
## Installing it - Github version
The Chrome Web Store listing is in review and should land shortly. In the meantime, grab the packaged build from GitHub:
1. Download `immotop-companion-0.1.0.zip` from the [latest release](https://github.com/clawfire/immotop-companion/releases?ref=thibaultmilan.com).
2. Unzip it somewhere you won't accidentally delete.
3. Open `chrome://extensions`, turn on **Developer mode**, click **Load unpacked**, and select the unzipped folder.
That's it. Go back to immotop.lu and hover a logo.
## What's next
The current version filters what *your browser* shows you, which means it stops at the browser. The next step is to plug into immotop's own mute feature: when the extension detects a blocked seller, it would push that block to your immotop account instead of only hiding it locally.
Same blocklist, applied server-side, which means it follows you into the mobile app. Building the list on desktop where it's comfortable, then getting the filtered results in your pocket, is the version of this I actually want.
To be clear about the direction of travel: that would send your blocks to *your* immotop account, through immotop's own feature. Still nothing coming my way.
## The fine print
It's unofficial and not affiliated with immotop.lu in any way.
It also doesn't send anything anywhere. No analytics, no server, no account, no phoning home. Your blocklist lives in `chrome.storage.local`, on your machine, and the export button is there so *you* own it, not me. I don't do anything with your data because I don't have your data, and I don't want it.
Released under **CC BY-NC-SA 4.0**: use it, fork it, improve it, as long as it's not commercial and you credit the work.
Bugs, ideas and pull requests are welcome: [open an issue](https://github.com/clawfire/immotop-companion/issues/new/choose?ref=thibaultmilan.com).
---
I'm not going to pretend this fixes the Luxembourg housing market. It fixes my search results, which is roughly the amount of control I actually have. Sometimes the right size for a project is "the annoyance in front of you, gone by dinner."
[GitHub - clawfire/immotop-companion: Extension Chrome pour masquer les annonces d’un vendeur ou d’une agence sur les résultats de recherche immotop.luExtension Chrome pour masquer les annonces d’un vendeur ou d’une agence sur les résultats de recherche immotop.lu - clawfire/immotop-companionGitHubclawfire](https://github.com/clawfire/immotop-companion?ref=thibaultmilan.com)
[Immotop Companion - Chrome Web StoreMasquez les annonces d’un vendeur ou d’une agence sur les résultats de recherche immotop.luChrome Web Store](https://chromewebstore.google.com/detail/immotop-companion/cplnfklcljjhphjjjmmhmkfclcmemfkb?ref=thibaultmilan.com)
### Adding an Atom Feed to Ghost (Without Touching a Server)
URL: https://thibaultmilan.com/ghost-atom-feed/
Last updated: 2026-08-14T16:40:06.000Z
💡
****Came here from a search engine?**
The short version: Ghost only publishes RSS, POSSE Party only reads Atom, and the fix is a custom `/atom/` route plus an `atom.hbs` template, both editable from the Ghost admin in about twenty minutes. [Skip straight to the fix ↓](#the-fix-in-four-steps)
The rest of this is why it happens, which matters if you want to avoid the next version of the same problem.
I was working on the migration of this site from Jekyll to Ghost for a while. The checklist was the usual one: content, URL structure, redirects, images, theme. Everything on it went through fine (well, almost, I still have some broken images, that I'll fix). But something else broke.
A few hours in, I started receiving emails error from my syndication tool. Like, every, f\*cking, minute. So I had to take a look before I ruin my domain reputation and end up on Spamhaus.
## What actually broke
I run [POSSE Party](https://github.com/searlsco/posse%5Fparty?ref=thibaultmilan.com) to push new posts out to social platforms. Publish (on my) Own Site, Syndicate Elsewhere. It's a small, opinionated tool: it watches a feed, and when something new shows up, it fans it out. Self-hosted, no vendor lock-in, exactly my kind of thing.
Under Jekyll I used a syndication plugin that was building RSS + Atom feed, so it emitted Atom without my ever thinking about it. Ghost doesn't work that way. Ghost generates its own feed at `/rss/`, in RSS, and that's the whole offer.
New feed URL, new feed format, and POSSE Party had opinions about the second one:
```
checking the feed failed: Feed check failed:
undefined method 'link_rels' for an instance of Feedjira::Parser::RSSEntry
```
POSSE Party parses feeds with [Feedjira](https://github.com/feedjira/feedjira?ref=thibaultmilan.com) and extends it with a `link_rels` helper. That helper was written for Atom entries and never for RSS ones. Point a POSSE Party instance at an RSS URL and it walks straight into a `NoMethodError`. Someone else hit the same wall and filed it as [issue #7](https://github.com/searlsco/posse%5Fparty/issues/7?ref=thibaultmilan.com), which is now closed. The code still has no RSS path.
## Why nobody upstream was going to fix this
Worth sitting with for a second, because the answer says something about how open ecosystems actually behave.
**Ghost won't add Atom.** RSS already covers the readers, the podcast apps, the newsletter bridges, the aggregators. A second feed format means a second template to maintain, a second thing to keep spec-compliant, a second source of support tickets, for a slice of users most CMS teams will never hear from. POSSE Party is a niche tool. I'd like Ghost to ship Atom, and I understand why it's nowhere near the top of anyone's backlog.
**POSSE Party isn't adding RSS either.** The maintainer runs Atom on his own site, so the RSS path never got exercised in the first place. Not a design stance against RSS, just a code path nobody had walked, which describes most bugs in most small tools. The issue got closed, the answer was Atom, and the last commit to the parser extension is still Atom-only.
Neither position is wrong. Neither one gets my posts onto social media.
This is the part of running an independent stack that doesn't make the pitch deck. Every tool is individually well-maintained and individually correct, and the failure lives in the space between two of them, where nobody's roadmap reaches.
And in this case the space between them isn't arbitrary. The two formats disagree about something POSSE tools happen to depend on.
Note here, since it's open-source software, I could do it myself and offer a solution, but I'm not versed enough in the language (Ruby) and I try not to do an AI assisted commit for my first contributions to a project.
## RSS and Atom are not interchangeable
RSS 2.0 gives each item a single ``, with no relation attribute. One item, one URL, and no way to say what that URL is *for*. Atom allows several links per entry, each carrying a `rel` that names its role: `alternate`, `self`, `related`, `enclosure`.
For a feed reader, that difference is academic. It wants the one URL, it gets the one URL, RSS is plenty.
POSSE Party uses it to choose. Its `entry_url_for` looks for a link marked `rel="shorturl"`, falls back to `rel="alternate"`, and only then settles for whatever link it can find. That's a reasonable thing to want when you're posting to platforms that count characters: let the author declare a short URL in the feed, and prefer it when there is one.
In core RSS 2.0 there's nowhere to say that. `` is defined as "the URL of the item", one per item, no attributes. Nothing to hang a role on.
RSS is extensible, to be fair, and the extension everyone reaches for is Atom itself. Declare `xmlns:atom` and you can drop `` straight into an RSS item. Feeds already do this at channel level for `rel="self"`, constantly. So the spec isn't the blocker. Ghost doesn't emit it, POSSE Party doesn't look for it in RSS, and the moment your answer is "embed Atom inside your RSS", you may as well serve Atom.
Read further into the project and the same shape repeats. POSSE Party's entire per-post customization surface is an Atom element, ``, in its own XML namespace: which channel to post to, which image to attach, how to label the appended link, per-platform overrides. The tool is built on the assumption that a feed entry can carry structured extras.
Which makes the crash smaller and more interesting than it first looks. Nothing rejects RSS on principle. My Ghost feed has no short URL to find, so the lookup would have fallen through to the plain link and worked. It never gets there: `link_rels` isn't declared for RSS entries at all, so the call raises before the fallback runs. The missing piece is one line mirroring what the Atom parser already declares.
It also makes Ghost's position more defensible than my paragraph above did. Ghost optimises for the reader case, and for the reader case RSS genuinely is sufficient.
Which left two options: patch someone else's Ruby and wait for a merge, or teach my own site the format the tool already speaks. The second doesn't depend on a maintainer's weekend, and it leaves `/rss/` untouched for everyone still subscribed to it.
## The fix, in four steps
Ghost ships no Atom feed and no plugin for one. It does support custom routes with arbitrary content types, which is enough to build one from a template file and four lines of YAML. [JWHorner's ghost-atom-feed](https://github.com/JWHorner/ghost-atom-feed?ref=thibaultmilan.com) is that template: MIT licensed, about forty lines.
What turns this from forking your existing default template into a twenty-minute job is that Ghost admin now handles both halves in the browser. Routes and redirects have their own editors, and the theme files got an [in-browser code editor in May 2026](https://ghost.org/changelog/theme-editor/?ref=thibaultmilan.com), built by community member Murat Çorlu on Monaco. No download, no local build, no re-upload, no restart.
### 1\. Add the route
**Settings → Labs → Routes**, and edit `routes.yaml` right there. Add this under the `routes:` block:
yaml
```YAML
routes:
/atom/:
template: atom
content_type: application/atom+xml
```
Save, and it applies immediately.
### 2\. Add the template
**Settings → Design & branding → Edit code.** Create `atom.hbs` at the root of your active theme, same level as `index.hbs`, not inside `partials/`. Ghost resolves `template: atom` to `atom.hbs` on its own.
```HTML
{{@site.url}}/{{date format="YYYY-MM-DDTHH:mm:ssZ"}}
{{#get "posts" limit="15" page="1" order="published_at desc" include="authors,tags"}}
{{#foreach posts}}
{{url absolute="true"}}{{published_at}}{{updated_at}}
{{#foreach tags}}
{{/foreach}}
{{excerpt}}
{{content}}
{{primary_author.name}}
{{/foreach}}
{{/get}}
```
Read it before you paste it. The `{{#get}}` helper queries Ghost's Content API from inside the template, the same mechanism behind custom collections. And `absolute="true"` on `{{url}}` isn't decoration: relative URLs in a feed are how subscribers end up hitting 404s from inside their reader.
### 3\. Advertise it (optional)
**Settings → Code injection → Site header:**
```HTML
```
POSSE Party doesn't need this, since you'll paste the URL in by hand. Feed readers do. They sniff `` when someone drops your homepage URL into them. One line, cheap discoverability.
### 4\. Point POSSE Party at it
Load `https://yoursite.com/atom/` in a browser before anything else. You should get XML. If you get your 404 page instead, go back and check the YAML indentation. Once it renders, swap the feed URL in your POSSE Party config from `/rss/` to `/atom/`.
Both feeds coexist from then on, and existing RSS subscribers never notice a thing.
## Two caveats before you ship
**The feed is capped at 15 posts, with no pagination.** Fine for syndication, since POSSE Party only cares about what's new. Less fine if anyone tries to backfill an archive from it. Raise the `limit` if that's your case, but watch the response size, because `type="xhtml"` means every entry carries the full post content.
**`` is stricter than it looks.** It requires well-formed XML inside the wrapper `
`. Ghost's renderer behaves, but one raw HTML card with an unclosed tag or a stray ampersand produces a feed that parsers reject outright, and Atom parsers fail loudly rather than gracefully. If your posts lean on embeds, validate the output before wiring anything downstream.
## What the migration actually taught me
Every migration guide covers content, URLs and redirects. None of them mention the integrations hanging off the old stack, which is where the "interesting" damage happens.
The fix took twenty minutes (thanks to AI-assisted investigation) rather than a filed issue and a two-month wait, for one reason: every layer was open. Ghost treats routing and templates as editable configuration instead of a fixed contract. `ghost-atom-feed` was forty lines of MIT-licensed Handlebars. POSSE Party's failure was legible in public, in an issue tracker, with the name of the missing method sitting right there in the stack trace.
Replace any one of those with a closed system and the answer becomes "submit a feature request, wait." or a laconic "thank you for contacting our support". Which is a far more concrete argument for portable tooling than the usual one about lock-in. When the stack is open all the way down, the gaps between tools are yours to close.
Mine cost twenty minutes, most of it spent on YAML indentation 😂 .
### I Migrated Away From Airtable for the Open Source. Then the Licence Changed.
URL: https://thibaultmilan.com/nocodb-relicense-airtable-sovereignty/
Last updated: 2026-08-12T20:38:14.000Z
Last July I published a piece about open source alternatives and developer sovereignty. I still agree with most of it. It was also written from the comfortable middle of a decision, which is the easiest place in the world to be certain about something.
[Take Back Control: Open Source Alternatives for Developer SovereigntyDiscover the best open-source alternatives to popular developer tools—self-host, protect your privacy, and take back control of your tech stack. Explore replacements for ChatGPT, Postman, GitHub, Notion, Firebase, and more, with a clear comparison table highlighting why switching empowers your soverThibault MilanThibault Milan](https://thibaultmilan.com/take-back-control-open-source-alternatives-for-developer-sovereignty/)
Twelve months later, one of the tools I recommended changed its licence underneath me.
So this is the follow-up, and it's less tidy than the original.
---
## Why I left Airtable in the first place
I was a heavy Airtable user, and the automations were really the point. Forms came in through [Typeform](https://www.typeform.com/?ref=thibaultmilan.com), later [Tally](https://tally.cello.so/CEbzRj0cCwl?ref=thibaultmilan.com), and [n8n](https://n8n.io/?ref=thibaultmilan.com) did the wiring in between.
SPONSORED
About that Tally link
I switched my forms over from Typeform a while back and haven't wanted to go back since. It's the tool I open most days, so it belongs in this story whether or not there's a link attached.
There is one, though, and you should know it: [that link](https://tally.cello.so/CEbzRj0cCwl?ref=thibaultmilan.com) is a referral. It gets you ****50% off for three months**, and it pays me something if you end up subscribing. I'd have named Tally regardless, they just happen to run a programme. If you'd rather not have me in the middle of it, [tally.so](https://tally.so/?ref=thibaultmilan.com) is the plain link and I won't know the difference.
What sat on top of that was a slightly ridiculous spread: organising queer parties in Luxembourg, managing a talent roster, running the non-profit, plus a pile of inventories and project databases that never existed anywhere else. None of it was exotic. All of it was load-bearing, in that if it broke on a Friday I'd hear about it on Saturday.
For a few years Airtable was the best thing in its category and nobody was close.
Then a few things went wrong at the same time.
The pricing kept finding new surfaces to meter. Seats, then records, then automation runs, then API calls, then attachment storage. Each cap was defensible on its own. Together they meant I couldn't tell you what a project would cost by the time it was finished, which is a bad property for a tool you're building on.
The product also kept moving. Forms got rebuilt. The interface builder changed shape more than once. And AI showed up early, well before it was any good, and then showed up again in every panel and every field menu and every empty state. I don't want a copilot for a table. I like doing this part myself, poking at it, getting the schema wrong twice and finding the right shape on the third go. That's most of the fun, honestly, and it kept getting interrupted by a suggestion box I hadn't asked for.
Meanwhile every hour I put in made leaving harder. Not out of malice on their part. That's just what a good SaaS is: somewhere your work piles up and stays.
So I did the thing I'd been telling other people to do. I moved to [NocoDB](https://nocodb.com/?ref=thibaultmilan.com), self-hosted on [YunoHost](https://yunohost.org/?ref=thibaultmilan.com), on my own box. AGPLv3, my data, my server.
It felt like getting my keys back.
---
## What Airtable became while I was gone
Fairness first, or the rest of this is worthless.
Airtable didn't stagnate. It went hard in the direction everyone went. **Omni** is a conversational builder that generates bases, tables, interfaces, automations and AI field agents from a prompt. Building with it is free; running AI operations across your data eats into a monthly credit allowance. It falls over on complicated relational schemas and anything with specific formula logic, so it's an accelerator rather than an architect. But the demo isn't a lie, and I say that as someone who wanted it to be.
Where the plans sit in 2026:
| | Free | Team | Business |
| ---------------------- | ------- | ------------------ | ------------------ |
| Price per seat / month | $0 | $20 | $45 |
| Records per base | 1,000 | 50,000 | 125,000 |
| Editors | 5 max | unlimited (billed) | unlimited (billed) |
| Revision history | 2 weeks | 1 year | unlimited |
That first column is where it actually hurt, and I know because I hit it. One of my tables reached a thousand records. I pruned it, archived what I could, told myself I was being disciplined. It filled up again within a few months, the way useful tables do. In the end I moved it somewhere else entirely. Nobody enforced anything. The decision just got made for me, one row at a time, over about a year.
A thousand records is a shopping list. That's deliberate, and it's the same logic that pushed me out.
I'll be blunt about the uncomfortable bit though: if what I wanted today was to ship something AI-shaped by Sunday, Airtable would win and it wouldn't be close.
---
## The part where the ground moved
From version **0.301.0** onward, NocoDB left AGPLv3 for a source-available "fair-code" licence, the same model n8n uses. Not OSI approved. Not open source by the definition most of us actually use.
Their reasoning is public and it isn't stupid. Companies were taking the code, reselling it, and keeping their own modifications private in ways the AGPL was meant to prevent and couldn't practically enforce.
And this isn't really a NocoDB problem. It's the structural problem of open source, and it's got a lot worse in the last two years. Cloning someone's product used to take a team, a roadmap and a year. Now a decent model will read a codebase, explain the architecture back to you, and help you reimplement or rebrand the thing in a fraction of that. The gap between "we published the source" and "someone is selling your work back to your users" has more or less closed. Licences written for a slower world are being asked to hold a line that doesn't hold any more.
So the maintainers did what maintainers keep doing lately, and framed the switch as being more generous to people using the project honestly and less useful to everyone else. Having read a few of these announcements now, I recognise a real problem behind it. Keeping infrastructure software alive on goodwill is brutal, and "just enforce the AGPL" is advice given almost exclusively by people who've never paid a lawyer.
So no, nobody betrayed me. A company protected itself.
The trouble is that I didn't pick NocoDB for its features. I picked it for its licence. As far as my decision went, the licence *was* the product. So when it moved, it wasn't a footnote in a changelog, it was the whole reason I was there.
And the marketing still says open source in most of the places you'd look first. That part I won't be diplomatic about. It's a lie. Not a nuance or a positioning choice or an interesting debate about definitions. The term has a meaning, the licence stopped meeting it, and using the word anyway is trading on trust the project has stopped earning. Change the licence if you need to. Change the copy the same day.
---
## What it costs once you read the fine print
The relicense is the headline. The feature ladder is what you actually live with.
Credit where it's due: Community Edition is genuinely generous on the axis I originally cared about. Unlimited rows, unlimited storage, unlimited seats, the full API, all the view types, your own Postgres, your own backups. That's real and I don't want to skate past it.
Here's what sits above the line:
| | Community (self-hosted, free) | Business self-hosted ($24 / editor / month) |
| ------------------------------------- | ----------------------------- | ------------------------------------------- |
| Rows, storage, seats | unlimited | unlimited |
| Views, REST API, webhooks | yes | yes |
| **Scripts and workflows** | no | yes |
| **Dashboards** | no | yes |
| **Interfaces** (new in 2026.08, beta) | no | yes |
| SSO, field and table permissions | no | yes |
The free self-hosted edition is an excellent database with a very nice grid on top. Complex automation, which is precisely the thing I found too expensive at Airtable, is on the paid side, at a price that lands within spitting distance of Airtable Business. I didn't escape the bill so much as change who I'd be paying it to.
Then there's the one that actually stopped me. Straight from their docs:
> Community Edition includes a default workspace, and it does not allow the creation of additional workspaces.
One workspace, permanently. I run a non-profit alongside my own projects and I wanted them separated the way anyone would: different space, different members, different mental drawer. Can't.
There are ways around it. Set people to *No Access* at workspace level and invite them per base, since base roles override workspace roles. Or run a second container with its own database behind the same reverse proxy. Both work fine. Both are me doing sysadmin to route around a business model.
---
## So why haven't I left?
I did look, properly, and the options are decent.
[**Baserow**](https://baserow.io/?ref=thibaultmilan.com) is the obvious move: MIT core, unlimited rows and workspaces when you self-host, and that 3,000 row cap everyone quotes is a cloud billing limit and nothing else. It solves my exact blocker. The catch is the install. Its [YunoHost package](https://apps.yunohost.org/app/baserow?ref=thibaultmilan.com) is still marked "development" and wants something like 5 GB of RAM to build from source, though the official all-in-one Docker image skips all of that. [**Grist**](https://www.getgrist.com/?ref=thibaultmilan.com) is Apache 2.0 with Python formulas and is quietly excellent. [**Teable**](https://teable.io/?ref=thibaultmilan.com) is AGPL and feels closest to Airtable.
Any of those is a defensible destination. I still haven't moved, for three reasons I'm not especially proud of.
The first is that migration is a tax you pay in evenings. Not the data, the data is a CSV export and an afternoon. It's the automations, the n8n flows pointing at specific endpoints, the muscle memory, the little scripts that quietly assume a schema. Every migration I've done has cost me roughly three times what I estimated, and I've already spent one batch of weekends leaving Airtable.
The second is that a licence is a promise, not a lock, which is the genuinely uncomfortable lesson here. MIT today doesn't guarantee MIT tomorrow. The copyright holder can relicense whenever they like; the release you already have stays free and everything after it might not. Moving to Baserow wouldn't buy me immunity, it'd buy me a different company's current intentions. If I move every time a vendor's incentives shift, migrating becomes the hobby.
The third is just that it works. Nothing broke. My data is on my disk, in a Postgres database I control, and I could get it out this afternoon. What I was really buying with all that sovereignty talk was never a licence badge, it was the ability to leave without asking anyone. I've still got that. It's less principled than it was, but it's intact.
That's not loyalty. It's a lease I haven't found a reason to break.
---
## What I'd tell myself a year ago
The post I wrote back then asked the right question, *who controls your data?*, and then stopped one question too early.
Here's roughly what I run through now, and almost none of it is about features.
**Who owns the copyright?** One company can relicense at will. A foundation, or a project with distributed copyright, structurally can't. That's not a vibe, it's governance, and it's usually findable in ten minutes.
**How does this make money?** If you can't answer that, you're the part that hasn't been monetised yet. Not cynicism, just arithmetic: software costs money to build.
**Which features sit above the paid line, and which way is that line moving?** Watch it across two or three releases rather than one. Lines tend to drift in a single direction.
**What's my real exit cost?** Not "can I export", everyone can export. How many hours until I'm running somewhere else? If you don't know the number, you don't have sovereignty, you have a nice feeling about your hosting.
And the one I'd have needed most: **am I choosing the licence or the product?** If it's the licence, you've made a bet on a company's future intentions, and you should size it like a bet.
The conclusion I keep landing on is that self-hosting bought me less than I thought and more than nothing. It didn't make me sovereign. It made me portable. I used those two words interchangeably for a year and they aren't the same thing at all.
So here's where I actually am. One instance, one workspace, the non-profit and my own projects sharing a drawer they were never meant to share, because the alternative is running infrastructure I don't want to run. If I ever need to give someone else access I'll reach for the *No Access* trick and invite them base by base. It'll work. It'll also be a workaround I'm performing on behalf of a pricing page.
That's not a migration plan. It's a note to myself about what I'm currently willing to put up with, written down so I notice when the answer changes.
---
*The Tally link in this post is a referral link, flagged where it appears. Nothing else here is sponsored, and no vendor saw this before you did.*
### Binance Didn't Leave Europe. It Failed an Inspection.
URL: https://thibaultmilan.com/binance-didnt-leave-europe-it-failed-an-inspection/
Last updated: 2026-06-28T14:29:32.000Z
ℹ️
****Disclosure:** This article contains sponsored and affiliate links to Neverless, and a referral link to Revolut — two platforms I use and recommend personally. I also name several competitors I have no commercial relationship with. The framework below is built to stand on its own; the links are how I keep the lights on, not the reason the argument exists. Make your own decisions, and verify everything against the source I point you to at the end.
A few days ago I got an email with a subject line built to trigger my inner fear and impulse to ~~buy~~ act: *"Binance is leaving your country."* It came from a competitor of theirs, one I actually trust with my crypto assets. Clearly a targeting fail (except for my impulse to buy things). It's also technically true, but not completely, as you'd expect from a marketing email.
So I dug a little, and Binance isn't really even the story I want to talk about. The story is that on July 1, the entire European crypto market gets reorganized in a single day, and most people are reading the wrong headline.
## What actually happened
From July 1, 2026, Binance suspends most services for EU residents (new orders, deposits, sign-ups, staking) because it didn't get a MiCA license before the June 30 deadline. MiCA, short for *Markets in Crypto-Assets*, is the EU's single rulebook for crypto platforms, and from that date it's mandatory. Funds stay safe and withdrawable, which the scary emails tend to mention quietly, if at all.
Two things the panic version skips:
1. **It's a suspension, not an exit.** Binance's head of Europe told Reuters the company isn't leaving. It pulled its Greek application, plans to apply through another member state (reportedly France), and expects a license "in the coming months." That approval probably lands after July 1, so there's a gap, not a grave.
2. **It wasn't a missed form.** Greece was going to reject the application over anti-money-laundering (AML) controls and whether the founder passed the "fit and proper" test, the regulator's check on whether a firm's leadership is honest and sound enough to hold your money. There's a 2023 US guilty plea and a $4.3B penalty in the background, and France, the supposed next stop, has an open judicial investigation into the company. This is a track-record problem with a deadline on top.
So if someone asks you what to tell them: Binance is locked out until it gets licensed somewhere else, the money is accessible, and the interesting question is about the market, not the exchange.
## The number nobody puts in the subject line
Here's the figure that reframes everything. Of the 1,200+ firms that held pre-MiCA national registrations across the EU, roughly **210 got full MiCA authorization.** Under 18%.
That's not a Binance story. That's a market-structure story.
MiCA works like a building inspection. You had 1,200 tenants operating under a mess of local permits. The new rule: one EU-wide license, a CASP authorization (Crypto-Asset Service Provider), good across all 27 member states, replacing the country-by-country patchwork. Inspection day comes, and four out of five tenants don't have the paperwork. Doors close July 1.
Getting that license costs somewhere between €250K and €500K in compliance work, which is exactly why a lot of smaller players are walking instead of filing. The market that comes out the other side is smaller, more concentrated, one rulebook. Good news if you're a consumer who wanted protection. Less good if you're a startup that wanted in without asking permission. It's both at once, which is what makes it worth writing about.
## Luxembourg quietly won this one
If you work in or around Luxembourg, this part is worth a flag. The same week Binance pulled out of Greece, **Coinbase opened its Luxembourg office and made the country its EU hub**, on a MiCA license the CSSF (Luxembourg's financial regulator) granted back in June 2025, more than a year early. The Finance Minister showed up to the opening.
One of the biggest exchanges in the world scrambling for any member state that'll take it, while another planted its flag in the Grand Duchy a year ahead of the deadline. Kraken and Bitstamp hold Luxembourg licenses too. Ripple got preliminary CASP approval from the CSSF.
The takeaway for anyone thinking about regulated finance in Europe: regulatory track record is now a moat. The firms that treated compliance as a strategic investment years early, with early filings and real local presence, are the ones holding a 27-state passport today. The ones that left it to the last minute are writing apology posts.
## How to actually check a platform
Drop the "switch now!" urgency and there's a genuinely useful question underneath. How do you tell a licensed platform from one that's about to go dark? Three checks.
1. **Is it on the ESMA register?** This is the only source that counts. ESMA, the European Securities and Markets Authority, is the EU's markets watchdog, and it keeps the official list of licensed platforms. Not the platform's marketing page, not a competitor's email, not a blog, including this one. On the register means an active CASP license and the right to operate EU-wide. Not on it means it can't serve EU residents after July 1.
2. **Which regulator issued the license, and does it pass the smell test?** A license is only as good as the regulator behind it. A firm with real local staff and an office reads differently than a nameplate registration. This is the thing to watch as Binance shops around: if France grants what Greece refused, that tells you something about both.
3. **Does the license actually cover what you need?** Custody isn't the same as trading. Staking, conversions, fiat on-ramps are separate authorizations. "MiCA-licensed" is a floor, not a full spec.
For the record, and per the disclosure up top, the two I use both clear the bar. [Neverless](https://neverless.com/referral?code=clawfire&ref=thibaultmilan.com) is licensed via Latvia and has a decent real-time fee comparator. [Revolut](https://revolut.com/referral/?referral-code=thibau1x!JUL1-26-AR&geo-redirect&ref=thibaultmilan.com) holds a CASP license via Cyprus (no. 001/2025) and is a neobank first. Coinbase, Kraken, Bitpanda, OKX and Crypto.com are all licensed too. I'm listing them so you don't take my two as the whole map. They aren't.
## The actual point
"*Binance is leaving*" is a customer-acquisition email wearing a public-service vest. The real event is duller and bigger: the EU ran a filter over its whole crypto market and four out of five firms didn't get through.
If you're deciding anything here, for an org, a portfolio, or your own stack, don't panic-switch because someone emailed you hard enough. Check the ESMA register, work out which license covers your use case, and treat regulatory track record as the signal it's become.
Check any platform's status yourself on the [ESMA MiCA register](https://www.esma.europa.eu/esmas-activities/digital-finance-and-innovation/markets-crypto-assets-regulation-mica?ref=thibaultmilan.com) before doing anything. This is commentary on a fast-moving situation as of late June 2026, not legal or financial advice.
[Checkout ESMA MiCA register ](https://www.esma.europa.eu/esmas-activities/digital-finance-and-innovation/markets-crypto-assets-regulation-mica?ref=thibaultmilan.com)
### Eight Years Following a Vision: What I Learned About Innovation Leadership at Smile
URL: https://thibaultmilan.com/eight-years-following-a-vision-what-i-learned-about-innovation-leadership-at-smile/
Last updated: 2026-09-21T13:50:26.000Z
In 2018, I left KPMG's comfortable salary — not for a company, but for a vision. Fabrice Dewasmes had a clear idea of how to build innovation culture at Smile, and that clarity was magnetic. Eight years later, as I prepare to leave for Paperjam, here's what I learned about following leaders, becoming one, and knowing when it's time to move on.
---
## 2018: Following a Vision, Not a Brand
I had told myself: two years at KPMG, maximum. Not because I wasn't learning — the scale of projects there was insane, the kind of work most people never get to touch. But after two years, I could feel the momentum slowing down. The appetite for bold moves was fading. The money was easy, but the **sense of purpose** wasn't.
I needed something different. Not bigger — **meaningful**.
Fabrice Dewasmes and I had known each other for years but never worked together. Timing was never right. Until 2018, when the planets aligned.
And then there was Alain Rouen.
Alain and I went way back — we'd worked together at the Wort, then again at KPMG. When he joined Fabrice a few months before me, that was the signal I needed. Alain is **the tech expert par excellence**: exceptionally intelligent, with the kind of deep technical brilliance that makes complex problems look simple. Fabrice had the vision and an unwavering commitment to doing things right — not just fast, but **well**.
And me? Honestly, I'm still not entirely sure what they saw in me. I was the digital jack-of-all-trades: someone who could handle user experience, market an idea, manage the entire upstream phase of a project — and then hand it off to the engineers who'd actually build it. Except I could also prototype when needed, which turned out to be pretty useful in a team that small.
Together, we were at the **very beginning** of building Smile's innovation practice. Ground zero. A blank slate. And that's exactly the kind of challenge I live for: **building from scratch**.
But here's what sealed the deal: Fabrice wasn't interested in innovation theater. He didn't want flashy demos for marketing decks. He wanted innovation that **actually served people**. That carried a vision: **technology should serve the common good**. User-centric / Tech4goo / Not buzzwords principles.
We started in cafés (very "startup nation", I know). Then we moved into a bohemian coworking space. The vibe was pure **maker culture**: messy, hands-on, experimental. We lived among circuit boards and Lego bricks.



(Left and middle) Our first office was a passage to another office. Not really a corridor but quite like it. They putted us here because they couldn't handle all the constant chit chats in the openspace.
It was the opposite of KPMG's polished glass offices. And I loved every second of it.
**What I learned:** I didn't join Smile for the brand. I joined for the people — Fabrice's vision, Alain's brilliance, and the chance to build something from nothing alongside a team that made me better. That distinction mattered more than I realized at the time.
---
## 2019-2021: Building the Foundation (and Surviving COVID)
We didn't just talk about tech4good — we built it.
One project I'm particularly proud of: a smart waste bin for corporate restaurants that weighed and identified food waste types, then generated recommendations to help caterers adjust menus and reduce waste. Privacy-first, always. We worked extensively with embedded systems and systematically ran AI models **on edge** — locally on the device — rather than sending data to the cloud. Because user privacy wasn't a nice-to-have. It was a principle.
But here's the thing about innovation: you can have great projects and still lack structure. We'd run hackathons that generated tons of ideas, but it felt like one-shot efforts every 2-3 years. Not sustainable. Not scalable.
So Fabrice and I designed a proper process: how to propose projects, how to review them, how to make decisions. We created rituals where business unit leaders would vote on projects that aligned with their strategic priorities.
**Quick sidebar:** In Design Thinking, you often ask people to "invest" fake money to vote. At first, I made fake dollars with Fabrice's face on them — like the "Diego$" we used at Startup Weekends in Luxembourg. Then I had an epiphany. Smile's CEO is named Marc. So I created... **DeutschMarks** with his face on them.



From left to right: The first Diego$ (with Fabrice's face), the DeutschMarks (with Fabrice's face still), and the 10k€ bill/DeutschMarks we used for voting since people where a bit... hesitant to use the DeutschMarks.
We used them for a while. Apparently, Marc once found a stray bill in a meeting room and... didn't find it as funny as we did. Oops.
Anyway, the process worked. We collected around **40 project ideas**, refined about **20**, and actually incubated **3**. Which sounds modest, but here's the friction: **it's hard to incubate projects when your company is a body shop, not a product company**. The mindset isn't aligned for it. You're selling developer hours, not building products. That tension was already visible back then.
### Then COVID Hit
Remote work wasn't the problem. We had a team of 10-15 people spread across Europe — only 3 of us in Luxembourg — so we were already used to distributed work.
The problem was everything else.
Most of France went on **technical unemployment** (*chômage technique*). Projects halted. Budgets got slashed. People's availability vanished overnight. We went from momentum to standstill.
We still managed to experiment with a few things. For example, we built a **flex-office app with contact tracing** using no-code tools for €5,000 — versus an initial estimate of €145,000 for a native app. But when we tried to commercialize it? Same barrier. Same mindset clash.


My profile on the flexoffice app (on the left) and the booking screen showing today's booking (on the right).
Post-COVID, the directive came down: **no more travel within the group**. Everything remote. Which sounds reasonable on paper, but in practice it severed the human connections that made innovation work. We stopped visiting agencies. We stopped seeing clients in person. Everything slowed to a crawl.
Later, people would criticize Fabrice for innovation becoming "too distant," locked in an "ivory tower." But that wasn't his choice. That was the group's decision. And it quietly killed what we'd been building.
**What I learned:** Innovation culture isn't tested in good times — it's tested when everything else is on fire. And structure matters more than inspiration — without a process, ideas just evaporate. But even the best process can't survive organizational constraints that work against it.
---
## 2022: The Pivot — When Your North Star Leaves
Fabrice was let go during a restructuring. **With immediate effect.**
He served his notice period at home. No contact with the team. No transition plan. No handover. Just... gone.
It was brutal.
What remained of the innovation practice got attached to Jean-Charles Bordes, who was Director of Offerings at the time. Jean-Charles is someone with tons of ideas — but also tons of things on his plate. The transition was chaotic.
He asked me to take over innovation leadership. But without the ability to build a team. Without budget control. Without a package adjustment. *(Spoiler: there wouldn't be one.)*
The operating model was... unconventional. I'd pitch ideas to Jean-Charles, he'd say yes or no, then allocate budget ad hoc as things moved forward. I never saw what he'd planned financially. I just had to make it work.
Oh, and we also lost our Luxembourg office. No fixed workspace anymore. Neopixl graciously hosted us, but it wasn't the same — harder to meet clients, harder to organize, harder to maintain visibility.
### Learning to Navigate Without a Map
The first few months were disorienting. Jean-Charles's management style couldn't have been more different from Fabrice's. I had to learn a completely new way of working while keeping innovation alive.
My first year's strategy was built on continuity — taking what Fabrice had envisioned and adding my own touch here and there. Jean-Charles wanted me on every front, which was necessary for the company but **impossible** with our headcount.
So I started prioritizing. On my own. Including his ideas.
He couldn't do it himself — too many competing priorities. And somewhere in there, I realized: **that was actually my job**. To orchestrate. To say no. To decide what mattered most for innovation, even when it meant deprioritizing things the boss wanted.
So be it.
**What I learned:** When your north star leaves, you either become one yourself — or you drift. Leadership isn't just about having authority or budget. It's about making decisions when no one else will, and taking responsibility for the outcomes. Even when you don't have the title or the resources to match.
---
## 2023-2025: Leading Without a Net (and Winning Anyway)
The biggest bet I made was **LLLM4dev** — a multi-year project to fundamentally transform how developers work with AI.
When I started, there was almost nothing. No reliable studies. Just scattered marketing claims from model vendors. So I decided: **we're building our own experiment**.
We started with about 60 developers — different seniority levels, different project types, different technologies. For the first six months, we didn't even know what to measure. We had to figure out which KPIs actually mattered, how to track them, what "productivity" even meant in this context.
Then we built a proper program: a 4-month onboarding and training path for developers, structured rollout plans, deployment in waves of 50 people per month throughout 2025.
### The Resistance
It wasn't easy. Project managers were terrified of losing productivity. So we made them a deal: **we won't look at your margins during the experiment**. That bought us time.
Developers were scared too — not of the tech, but of what they'd heard in the media. "AI will take your jobs." You know the drill. So we trained them, supported them, showed them this wasn't about replacement. It was about **giving them better tools**.
### The Results
By the time we deployed at scale (after nearly 2 years), the numbers were undeniable:
- **97.14% adoption rate** among developers
- **+15% time savings** across the entire project lifecycle, and way more on some specific task
- **1,760 hours saved** in the first six months of 2025
- **0.3 FTE** spent managing the entire transition (we'd projected 2 FTE)


All those numbers are public, and you can find more on Smile's website. Search for LLM4Dev Rex replay of my Webinar and find our about our results.
But it wasn't just about speed. The real wins were qualitative:
- Better code coverage
- Improved documentation
- Easier project onboarding for new team members
We'd proven it worked. We'd built something real.
### The Paradox
But here's the thing: **we were winning tactical battles while losing the strategic war**.
The market had shifted dramatically. Successive mergers and acquisitions were reshaping the industry — and Smile wasn't part of them. Client budgets were tightening. Technology preferences were changing. Fabrice, Alain, and I — the entire innovation team — had seen it coming. We'd been preaching about it for years. But the group couldn't — or wouldn't — adapt fast enough.
The project was a success. The transformation was real. But Smile as an organization? It wasn't ready. The mindset hadn't shifted. And my vision of where we needed to go was increasingly out of sync with what the company was willing to do.
**What I learned:** You can deliver results and still be misaligned with where the organization is heading. Winning battles doesn't mean winning the war. And sometimes, the hardest part of leadership isn't doing the work — it's accepting when it's not enough.
---
## 2026: When Vision and Reality Diverge
Eight years is a long time. Long enough to see multiple cycles. Long enough to know when it's time to leave.
The divergence wasn't sudden. It was gradual, like a fault line slowly widening.
When Fabrice left, we already knew the company had a distorted view of the long-term market. But after his departure, something shifted. The focus became increasingly **short-term**. Decisions were made in haste. Strategies contradicted each other. We lacked cohesion, lacked a shared vision to move forward together.
### The Reality Gap
I kept pushing for agility. For adapting to where the market was actually going.
Post-COVID, the market had fundamentally shifted. Clients had become more risk-averse. They wanted to test their partners on smaller engagements before committing to larger ones. We were targeting projects in the €200-400K range, but the reality? **The market had shifted to projects 10x smaller.**
Don't get me wrong — we still landed big deals, some close to a million euros. But those became much rarer. The volume had shifted downward, and clients' behavior had changed with it.
And for innovation specifically, the appetite for expensive PoCs had evaporated. There was **PoC fatigue**. Clients didn't want prototypes they'd throw away. They wanted **proof of value** — real solutions they could actually use.
But our internal expectations hadn't caught up with that new reality.
### The Decision
I'd been thinking about leaving for about a year. Not loudly. Not dramatically. Just... aware that the gap between my vision and the company's reality was widening beyond repair.
The job market in Luxembourg is tough, especially for a profile like mine. So I stayed. I didn't disengage from my work — I kept leading LLLM4dev, kept pushing innovation forward. But I knew it wasn't sustainable.
When the Paperjam offer came, everything moved fast. One week, and it was done.
**What I learned:** Loyalty to a vision is not the same as loyalty to an organization. And knowing when to leave — before you burn out, before you become bitter — is a form of leadership too. Sometimes the bravest thing you can do is walk away from something you built.
---
## What's Next: Paperjam and New Beginnings

I'm joining **Paperjam** as Head of Digital & Platform.
My role will be to manage the entire digital ecosystem — the main site, the Club, La Bible; but also all the secrets we are working one. And, of course, supporting sattelite projects like the job board, and Nexus Luxembourg. Maintenance, evolution, new products, new offerings. The full stack.
### Why Paperjam?
Simple: **impact and exposure**.
Paperjam is *the* business media and business club in Luxembourg. The most recognized. The first independent media in the country. With over **1,800 member companies** and close to **250 events and training sessions per season**, the Club alone connects and inspires the communities that move Luxembourg forward.
After years building innovation programs and pushing transformation projects, I'm excited to work on something with such direct, visible impact. Paperjam positions itself as the *"café des initiatives"* — a place for information, inspiration, and connection. That resonates deeply.
### The Real Shift: Service to Product
But here's what really matters: **I'm moving from a service company to a product company**.
For eight years, I worked in a body shop model — brilliant people, great projects, but always someone else's vision, someone else's roadmap. At Paperjam, I'll be working on *our* products. Building *our* vision. Owning the strategy and the execution.
The audience? They call them *Les Évolutionnaires* — humanistic, progressive, confident, agile. People who want to understand the world and participate in its transformation. That's exactly the kind of community I want to build for.
That's the shift I've been craving. The chance to develop and articulate a vision, not just advocate for one.
### The Dopamine of New Beginnings
I won't lie: the novelty is intoxicating. New challenges, new team, new stack, new problems to solve. There's a certain dopamine rush in starting fresh, and I'm fully ready to ride that wave.
**What I learned:** Sometimes the bravest thing you can do is start over. And sometimes, the right opportunity comes when you're finally ready to move.
---
## Closing
Eight years. Hundreds of projects. One hell of a ride.
To **Fabrice and Alain**: without you, I simply wouldn't have joined Smile. You gave me the vision and the technical foundation to build on. Thank you for trusting me with it.
To **Fabien Gasser**: colleague from the early days, sharp-minded and resourceful. Thanks for being there from the beginning. You were deeply missed.
To **Romain Ruaud**: for the incredible work on the only product Smile ever published. You proved what's possible when you commit to building something real.
To **Raphaële, Rayenne, and Victoire**: for the ideas, the good vibes, and the constant support. Marketing & Communication was never just a service function with you — it was a partnership.
To **Florian Pena.**: for leading LLLM4dev with me through all the resistance and doubt. We proved it works.
To **Maxime Rousseau and Frederic Raymond**: for the AI acculturation workshops that helped so many people understand what was actually happening in the field.
To **Olivier Ferger**: for bringing relentless energy and dynamism year after year. I always felt more than welcome in your agency and we did so many amazing things.
And to everyone else I'm forgetting in this moment — thank you for making these eight years memorable. You know who you are.
---
The next chapter starts now. New team, new challenges, new products to build.
I'm not naive enough to think it'll be easy. But I'm optimistic enough to believe it'll be worth it.
Let's see what we can build together ✨.
### Why 88% of AI Projects Never Make It to Production (And What the 12% Do Differently)
URL: https://thibaultmilan.com/why-88-of-ai-projects-never-make-it-to-production-and-what-the-12-do-differently/
Last updated: 2026-01-23T14:40:17.000Z
Let me start with an uncomfortable truth: **88% of AI proof-of-concepts never deploy**. Not because the technology doesn't work—but because organizations treat AI like a magic wand instead of a strategic transformation.
I recently co-authored a whitepaper for Smile titled *"Upside AI: 10 conseils pour survivre à votre transfo IA"* that takes an unconventional approach: it shows you *exactly* how to guarantee a spectacular AI crash in 2026\. Why? Because understanding failure modes is the fastest path to success.
Here's what we uncovered—and why it matters for anyone leading digital transformation.
## The Shadow Monster Is Already Here
While leadership debates AI strategy, **59% of employees are already using unapproved AI tools**. They're copy-pasting confidential data into ChatGPT, building workflows around tools IT doesn't control, and creating security vulnerabilities that most organizations won't discover until it's too late.
This isn't innovation—it's chaos.
The real question isn't "Should we do AI?" It's "How do we regain control without killing momentum?"
## The Three Traps That Kill AI Projects
After analyzing dozens of transformations, three failure patterns emerge consistently:
### 1\. The Substitution Fantasy
Leadership expects AI to replace 50% of headcount while keeping 2010's org structure intact. They don't redesign workflows. They don't rethink processes. They just bolt AI onto broken systems and wonder why productivity doesn't improve.
**Reality check**: AI doesn't eliminate work—it shifts it. The companies seeing real ROI aren't cutting headcount; they're redirecting talent to higher-value activities.
### 2\. The Data Delusion
Teams launch ambitious AI projects on data that's incomplete, contradictory, or obsolete. Then they're shocked when the model hallucinates or produces garbage outputs.
The uncomfortable truth? **80% of AI project time should be data preparation**. If your data isn't AI-ready, your transformation isn't either.
### 3\. The Measurement Void
No KPIs. No ROI tracking. No definition of success. Just vague promises of "productivity gains" and "innovation."
When the CFO asks for numbers six months later, teams scramble. By then, it's too late—the project gets cut.
## What the 12% Do Differently
The organizations that actually scale AI follow a different playbook:
**They start with pain points, not technology.** They don't ask "Where can we use AI?" They ask "What's costing us 2 hours per day?" and work backward.
**They build for imperfection.** They deploy AI on "good enough" data with human-in-the-loop validation, learning iteratively rather than waiting for perfect conditions that never arrive.
**They measure relentlessly.** Unit economics. Acceptance rates. Error frequency. They know exactly what each interaction costs and what value it generates.
**They treat compliance as a feature, not a bug.** In 2026, AI Act compliance isn't optional—it's a competitive advantage. Companies with "AI Act Compliant" labels close deals faster.
## The Irony Approach: Learning Through Anti-Patterns
Our whitepaper uses a deliberately provocative structure. Each chapter explains how to *guarantee failure*—then flips the script to show the survival strategy.
For example:
\- **How to fail**: "Ignore data governance and let AI purify your data corruption by magic"
\- **How to succeed**: "Invest in data quality audits, metadata enrichment, and human curators before buying tokens"
Why this approach? Because most transformation guides are boring, generic, and forgettable. We wanted something that sticks—something decision-makers would actually read and remember.
## Why This Matters Now
2026 isn't 2023\. The experimentation phase is over. The market is separating into two camps:
1. **Companies that industrialize AI** with governance, measurement, and strategic alignment
2. **Companies stuck in pilot purgatory** burning budgets on PoCs that never ship
The gap between these groups will widen fast. This isn't about being "AI-first"—it's about being *AI-ready*.
## What's Inside the Whitepaper
The full guide covers 10 critical failure modes (and their solutions):
- How unrealistic ROI expectations create organizational mutiny
- Why launching without use case prioritization guarantees chaos
- The hidden costs that turn "cheap" PoCs into budget black holes
- How to prevent Shadow AI without killing innovation
- Why change management determines 80% of adoption success
We also included the real numbers: failure rates, adoption metrics, cost benchmarks from IDC, Gartner, McKinsey, and MIT.
**Full transparency**: The whitepaper itself was co-created with an LLM (Gemini)—which proves the point. AI augmented our expertise, but human direction, validation, and strategic thinking drove every decision. The tool generated text; we generated value.
## Your Next Move
If you're leading AI transformation (or about to), this guide will save you from expensive mistakes.
**[Download "Upside AI: 10 conseils pour survivre à votre transfo IA"](https://smile.eu/fr/publications-et-evenements/upside-ai-10-conseils-pour-survivre-votre-transfo-ia?ref=thibaultmilan.com)**
It's written in French, unapologetically pragmatic, and designed for people who need results—not another theory deck.
The transformation won't wait. Neither should you.
---
*Thibault Milan is Director of Innovation with 10+ years leading digital transformation initiatives. He specializes in turning AI hype into operational reality—without the corporate BS.*
### Upside AI: 10 Survival Tips for Your AI Transformation
URL: https://thibaultmilan.com/projects/why-88-of-ai-projects-never-make-it-to-production-and-what-the-12-do-differently-169/
Last updated: 2026-01-23T14:40:05.000Z
## The Challenge
Most AI transformation content is boring, generic, and instantly forgettable. Meanwhile, **88% of AI proof-of-concepts never reach production**, not due to technology failures but organizational dysfunction.
How do you create thought leadership that decision-makers actually read, remember, and act on?
## The Approach
We flipped the traditional whitepaper format. Instead of another "10 steps to AI success" guide, we wrote **"10 ways to guarantee an AI disaster"**—then showed the survival strategy for each failure mode.
### Why This Works
**Anti-patterns stick.** People remember cautionary tales better than best practices. By showing *exactly* how to fail (with dark humor and specific examples), we make the lessons unforgettable.
**Irony cuts through noise.** In a sea of AI hype, a deliberately provocative tone signals authenticity and expertise.
### Co-Creation Process
The whitepaper was co-created with an LLM (Gemini), demonstrating our core thesis: AI augments human expertise rather than replacing it.
**My role:**
\- Strategic direction and structure
\- Expert knowledge and frameworks
\- Tone calibration and validation
\- Quality control and fact-checking
\- Human judgment on every paragraph
**AI's role:**
\- Content generation from prompts
\- Iteration speed
\- Maintaining consistency
\- Research synthesis
This approach proved the point: effective AI transformation requires skilled human orchestration.
## Key Features
### 10 Critical Failure Modes
Each chapter tackles a common pitfall:
1. **The Substitution Fantasy** — Expecting AI to replace 50% of staff without org redesign
2. **The Improvisation Trap** — Launching without use case prioritization
3. **The Measurement Void** — No KPIs, no ROI tracking, just vibes
4. **The Strategic Drift** — AI projects disconnected from business objectives
5. **The Compliance Gamble** — Ignoring GDPR and AI Act requirements
6. **The Data Delusion** — Building on poor-quality, unstructured data
7. **The Training Gap** — Deploying AI to teams who can't use it effectively
8. **The Change Denial** — Zero change management, maximum resistance
9. **The Paralysis Paradox** — Waiting for perfect conditions that never arrive
10. **The Cost Blindness** — Ignoring exponential scaling costs
### Data-Driven Insights
Every claim backed by research from IDC, Gartner, McKinsey, MIT:
\- 59% of employees use unapproved "Shadow AI"
\- 75% of Shadow AI users admit pasting confidential data
\- 42% of companies abandon most AI initiatives in 2025
\- Only 5% of custom AI tools reach production scale
### Actionable Frameworks
Not just problems—solutions:
\- Business Process Re-engineering for AI integration
\- FinOps strategies for cost control
\- Human-in-the-loop validation frameworks
\- AI-readiness assessment criteria
\- Change management playbooks
## What I Learned
**Provocative content works—if you deliver substance.** The ironic tone got attention, but the data and frameworks earned credibility.
**Show your work.** Revealing the AI co-creation process in the conclusion wasn't risky—it was proof of concept. It showed we practice what we preach.
**Structure beats length.** A well-structured 30-page document outperforms a rambling 80-pager. Each chapter follows: failure scenario → why it happens → survival strategy → real example.
**Design matters for B2B.** The "Stranger Things" aesthetic (Upside Down theme) made a technical whitepaper visually memorable. Design isn't just for consumer products.
## Technical Stack
- **Content Generation:** Google Gemini (LLM)
- **Design:** Canva + custom templates
- **Distribution:** Smile.eu platform + LinkedIn
- **Analytics:** HubSpot + custom tracking
## Links
- [Download Whitepaper](https://smile.eu/fr/publications-et-evenements/upside-ai-10-conseils-pour-survivre-votre-transfo-ia?ref=thibaultmilan.com)
- [Announcement Post](https://thibaultmilan.com/blog/2026/01/23/why-88-of-ai-projects-never-make-it-to-production-and-what-the-12-do-differently/)
- Co-author: Brice Blondiau (Solution Leader Data & IA, Smile)
---
*This project demonstrates strategic thought leadership: identifying a crowded market (AI transformation advice), finding a differentiated angle (anti-patterns + irony), and executing with substance. The result is content that educates, entertains, and generates business impact.*
### We Rolled Out AI to Hundreds of Developers. Here Are the Most Surprising Results a Year Later.
URL: https://thibaultmilan.com/we-rolled-out-ai-to-hundreds-of-developers-here-are-the-most-surprising-results-a-year-later/
Last updated: 2025-12-30T12:29:39.000Z
For the past few years, every leader I’ve spoken with has asked the same question: what is the real, measurable impact of Generative AI on a development team? At Smile, we decided to move past the hype and find the answer ourselves.
This post is a look behind the curtain at Smile’s journey. What started as a focused, 6‑month study with 60 developers to evaluate AI’s effect on productivity and code quality evolved into a full‑scale deployment across our organization. Over the past year, we gathered a wealth of data—but the most valuable lessons weren’t only in the numbers. They were in the unexpected, counter‑intuitive, and deeply human results we observed. This is the story of how we moved beyond simple metrics to understand the strategic realities of AI adoption at Smile.
---
## 1\. Near‑Perfect Adoption at Smile—But It Wasn’t Magic
After one year at Smile, our developer adoption rate for the AI tool hit an impressive 97.14%. That didn’t happen because the tool was simply “made available,” and it wasn’t a top‑down mandate either. It was the outcome of a deliberate, human‑centric rollout we called the snowball effect.
We treated this as an organizational effort, not just a technical one. Training mattered, so we designed a four‑month program to help developers master a new way of working. We built a core team of 10–15 “allies”—a mix of early adopters and key users who championed the tool. We secured CIO buy‑in to centrally manage and distribute licenses, which was critical for momentum. We aligned with Finance to monitor benefits and with HR to understand impacts on employee experience and recruitment. The result: achieving near‑perfect adoption had less to do with the technology itself and more to do with building a strong, cross‑functional framework for change—at Smile.
## 2\. At Smile, Senior Developers Gained the Most
A common assumption about AI coding assistants is that they primarily benefit junior developers by filling knowledge gaps. Smile’s data showed the opposite: the tool’s true power is in augmenting existing expertise, making senior developers exponentially more effective.
On our Drupal teams, the picture was clear:
\- For basic templating code, junior developers achieved a 15% time saving. Senior developers reached 30% on the exact same task.
\- For complex back‑end and logic‑heavy work, juniors saved 25%, while seniors saw 45%.
This forced a fundamental shift in our strategy at Smile. Our hypothesis: AI assistants don’t just provide answers; they accelerate the workflow of those who already know how to ask the right questions. Seniors can more rapidly validate, reject, and refine AI‑generated code—turning the tool into a true force multiplier for their existing expertise.
## 3\. At Smile, Productivity Plateaus Before It Pays Off
If you expect an immediate hockey‑stick productivity curve, you’ll be disappointed. Our rollout showed a nuanced adoption curve. In the first month, developer productivity rose initially, then plateaued. This wasn’t mainly “time lost to exploring the tool,” but a lack of change in working habits. Early gains came from autocomplete and code suggestions, with a dash of chat experimentation.
Developers need time to experiment, build trust, and integrate a new way of working. The real inflection point comes when they shift their mindset and consciously rewire habits. At Smile, the significant behavioral shift—and the measurable productivity gains—started appearing after about two months of exploration. The full ramp‑up time to reach the performance levels we saw in the initial experiment was around four months. Lesson for leaders at Smile and beyond: budget for a learning curve, not a magic bullet.
## 4\. At Smile, Human Bias Was Harder Than Integration
During tool evaluations, we uncovered a powerful human factor: developer bias. Asking developers which tool they prefer is not a reliable way to determine effectiveness.
In our case at Smile, many developers loved GitHub Copilot—even when it didn’t make them as productive as other tools. That’s a critical warning: don’t build a stack on brand loyalty or polls alone. Without objective performance data, organizations risk investing in tools that are popular, not powerful. At Smile, we anchored choices in hard metrics, not subjective preference.
## 5\. Smile’s ROI Was Huge—and Shockingly Lean to Manage
The business impact at Smile was clear. In the first six months of 2025, the program saved an estimated 1,760 man‑days of developer time across our projects.
Even more impressively, those days were saved during the primary rollout and skill‑building phase. We generated substantial ROI not by waiting for perfection, but by embracing the learning curve itself. The entire transition—from pilot to full deployment, including training, support, and monitoring—was managed with a dedicated resource equivalent of only 0.3 FTE, despite initially budgeting much more. At Smile, a well‑designed strategy kept management overhead surprisingly lean and delivered a powerful return without a large, dedicated team.
## 6\. The Invisible Foundation at Smile: Data and Metrics
All of these lessons—from senior effectiveness to massive ROI—sit on one foundation: reliable data. Without rigorous data collection and clear goals, no generative AI project can be steered or justified.
At Smile, we made measurement strategy a prerequisite to adoption. To measure real impact and justify costs:
\- Define clear KPIs and objectives before deployment (e.g., cycle time, error rate, productivity on specific tasks).
\- Ensure reliable data collection: mechanisms for objective, unbiased usage and performance data.
\- Justify the investment: if impact isn’t measurable, ROI is an assumption. Solid data is the only currency for budgets and long‑term validation.
In short, success at Smile depended less on the tool and more on our ability to answer: how will we prove it works?
---
## Conclusion: At Smile, the Goal Isn’t Just Productivity—it’s Proficiency
Building a generative AI program for developers is a strategic challenge that goes far beyond technology. Our almost two‑year journey at Smile taught us that it demands a deep understanding of user psychology, realistic expectation management, and a robust organizational framework for adoption. Distributing licenses isn’t a strategy.
So our goal is clear: we want Smile’s developers to be truly proficient in AI.
AI tools are becoming fundamental. The question is: are you just distributing technology, or building the organizational mastery to excel with it? If you’re curious about how we did it at Smile—or want to compare notes—reach out. I’m happy to share more of the story and the playbook.
### 1535° Creative Days — Build a tiny app in 90 minutes (vibe coding workshop)
URL: https://thibaultmilan.com/talks/1535-creative-days-build-a-tiny-app-in-90-minutes-vibe-coding-workshop/
Last updated: 2026-09-21T13:51:30.000Z
I’m hosting a participative workshop at [1535° Creative Days](https://1535.lu/fr/creative-day-2025?ref=thibaultmilan.com) where we’ll build a small, real app in 90 minutes using vibe coding — AI as a coding pair, you stay in control. We’ll be open about the limits and when bespoke engineering is the smarter next step.
## Event details
- When: Sunday, 12 Oct 2025 — 14:00–15:30
- Where: [1535° Creative Hub](https://maps.app.goo.gl/SeqCc4V2dvZ9yAPM6?ref=thibaultmilan.com), Bâtiment A, Room 02
- Language: English or French (we’ll adapt live)
- Registration: None — just show up
## What we’ll do
- Crowd-sourced idea: we’ll pick one together
- Vibe coding in action: prompt, iterate, test, ship
- Reality check: where this approach shines — and its limits (APIs, auth, testing, maintainability)
- Next steps: when to move from a vibe-coded prototype to a properly engineered app
## Who it’s for
- Designers, founders, makers, students, and anyone curious about AI-assisted coding
- No heavy prerequisites — curiosity helps more than perfect code
## What you’ll leave with
- A working micro‑app built live
- A simple decision framework: vibe code vs. bespoke build
- Practical tips to prototype faster without losing control
## Practical notes
- Bring your ideas; a laptop is optional
- Arrive 5 minutes early for a good seat
- Photos/video may be taken for recap (tell us if you prefer not to appear)
## Why vibe coding?
It’s still coding — just accelerated and conversational. You set intent and constraints; AI proposes. We keep steering. It’s great for exploration and fast demos, but it has boundaries we’ll make explicit.
More info: [https://1535.lu/fr/creative-day-2025](https://1535.lu/fr/creative-day-2025?ref=thibaultmilan.com)
If you’d like this workshop for your team — or want to take a prototype to production — get in touch.
### The Answer Engine Internet: Why Cloudflare Thinks We Need to Rethink “Traffic”
URL: https://thibaultmilan.com/the-answer-engine-internet-why-cloudflare-thinks-we-need-to-rethink-traffic/
Last updated: 2025-09-23T20:18:01.000Z
Cloudflare’s latest Founders’ Letter marks the company’s 15th birthday with a distinct shift in perspective: after helping the web go from 10% encrypted traffic to 95% in just fifteen years, they now tackle a bigger existential challenge—how content creators will survive in an AI-first Internet.
For the last decade and a half, we’ve lived with a simple model: **content is king, and traffic is the throne**. Build something compelling, get discovered (mostly via search engines), then monetize through ads, subscriptions, ecommerce, or just the pride of having attention on your work. Web ads—a necessary evil—have been the only micropayment system that actually worked at scale. It’s why Cloudflare never built ad blockers, despite pressure: this imperfect system keeps the web vibrant and open.
But **traffic, as a proxy for value, is far from perfect**. Clickbait, ragebait, and dopamine-driven headlines have warped the way content is created. Media companies, consultancies, and online creators all chase eyeballs instead of impactful knowledge.
## AI Changes Everything: Search Engines to Answer Engines
There’s a tectonic shift happening right now. The old “treasure map” of search (you ask, get links, go hunt) is being replaced—fast—by AI agents and answer engines like ChatGPT, Claude, and Google’s new “AI Overview.” Most users just want answers, not a list of clickable links. The implications are huge: if your agent summarizes the world’s news for you, why click through to each site? Why see any ads? Why pay for subscriptions if the agent piggybacks off someone else’s?
What Cloudflare’s founders describe is a **crisis for anyone still clinging to traffic-based monetization**. Answer engines divert users away from human-powered clicks, threatening the viability of journalism, research, and the entire content ecosystem. If nothing changes, even the most robust publishers could see their business models collapse.
## What Could Replace Traffic? Rewarding Human Knowledge, Not Just Pageviews
Cloudflare is optimistic, though—because **AI companies need quality content to survive**. They’re starting to license and reward creators whose work brings genuine value—think quirky, original forums like Reddit, instead of generic news or clickbait. The new business model could be based on the “holes in the cheese” metaphor: AI models (the cheese) inevitably miss knowledge, and the creators who fill those gaps get rewarded.
Imagine: instead of traffic, the model pays out to writers, researchers, and creators who fill knowledge gaps in the AI collective. **Subscription fees and AI-driven ad dollars could end up pooled and distributed to those truly enriching human knowledge**, ranked by their contributions to unique and local topics.
## A Level Playing Field—and Cloudflare’s Role
Cloudflare argues for a **collaborative, open, standardized approach**: not about preserving search engine dominance or legacy content farms, but about catalyzing sustainable and equitable compensation for content creators in the AI era. Their new tools let even small publishers control how and when AI agents access their work, and help broker fair deals.
In short: the Internet is shifting **from a traffic-based economy to one that potentially rewards the actual value you bring to human knowledge**—if the market tips the right way. Cloudflare wants to help tip it, so creators big and small, plus new AI entrants, all get a fair slice.
## What’s Next?
If major AI players start pooling revenues to reward the best content, and the algorithms themselves map the gaps in their knowledge, we really could see a renaissance of creative, unique, local, and impactful information online. But it’ll take strong incentives, standards, and industry collaboration to avoid a future where nobody creates and everyone just consumes.
**Cloudflare’s bottom line:** celebrate the encrypted web of yesterday but get ready for a new Internet model that values knowledge over mere clicks.
---
*Read the original article here: [Cloudflare’s 2025 Annual Founders’ Letter](https://blog.cloudflare.com/cloudflare-2025-annual-founders-letter/?utm%5Fsource=tldrnewsletter/)*
### UX Design Thinking Workshop at Luxembourg Open Innovation Club
URL: https://thibaultmilan.com/talks/ux-design-thinking-workshop-at-loic/
Last updated: 2025-07-30T08:58:40.000Z
On September 23, 2025, I’ll have the pleasure of co-facilitating a workshop dedicated to Design Thinking and UX at the Open Innovation Club of the House of Startups in the heart of Luxembourg. Organized in partnership with UX Republic, this event is for anyone eager to put users back at the center of innovation.
## Why join this workshop?
In a world where technology moves at breakneck speed, designing solutions that truly meet user needs is more important than ever. Design Thinking is a proven approach for creating innovation rooted in real-world usage—at the intersection of what people want, what technology can do, and what makes business sense.
The morning will be hands-on and interactive, blending theory with practice. The goal? To help you grasp the value and business impact of Design Thinking, experience its different phases, and walk away with actionable ideas to implement in your company.
## Morning schedule
**08:45 – 09:00**
Welcome & coffee
**09:00 – 09:15**
Workshop introduction
**09:15 – 10:00**
Presentation: Design Thinking—from theory to business impact
**10:00 – 11:30**
Group workshop: exploring user needs, ideation, rapid prototyping
**11:30 – 12:00**
Wrap-up, discussion, and Q&A
## The facilitators
Guiding you through the morning will be three experts:
- **[Pierre Guillard-Wilks](https://www.linkedin.com/in/pierreguillard/?ref=thibaultmilan.com)** (Product Designer & Design Sprint Master): Specialist in leading teams through intensive design processes to rapidly develop and test new ideas.
- **[Maude Van Rymenant](https://www.linkedin.com/in/vanrymenantmaude/?ref=thibaultmilan.com)** (Lead UX): Responsible for overseeing and guiding user experience initiatives to ensure usefulness and user satisfaction.
- **[Thibault Milan](https://www.linkedin.com/in/thibaultmilan/?ref=thibaultmilan.com)** (Director of Innovation): Focused on the strategic development and implementation of forward-thinking solutions.
## Who is this workshop for?
Whether you’re a manager, product owner, designer, or simply curious about new ways to innovate, this workshop will help you:
- Discover (or rediscover) Design Thinking through hands-on practice
- Exchange ideas with experts and like-minded participants
- Leave with concrete ideas to transform your projects
Therefore, please note this event is strictly limited to the members of the Luxembourg Open Innovation Club. If you’re not yet a member, you can get more info on how to join [here](https://loic.lu/?ref=thibaultmilan.com).
## Practical information
**Date:** September 23, 2025
**Time:** 08:45 – 12:00
**Location:** House of Startups, 9 rue du Laboratoire, L-1911 Luxembourg
I look forward to seeing you for a morning of creativity, exchange, and user-centered innovation!
---
Photo by [Daria Nepriakhina 🇺🇦](https://unsplash.com/@epicantus?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash) on [Unsplash](https://unsplash.com/photos/printed-sticky-notes-glued-on-board-zoCDWPuiRuA?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash)
### Miss Tourisme Luxembourg
URL: https://thibaultmilan.com/projects/miss-tourisme-luxembourg/
Last updated: 2026-09-21T13:53:45.000Z
Yesterday was the [Miss Tourisme Luxembourg](https://www.misstourismeluxembourg.lu/?ref=thibaultmilan.com) election. Like previous years, I handled the online voting system — but this time I rebuilt it from the ground up. I moved away from a low‑code base ([Glide](https://www.glideapps.com/?ref=thibaultmilan.com)) to a custom build on [Lovable](https://lovable.dev/invite/d33c6bee-647c-4581-8186-975070e0645f?ref=thibaultmilan.com) \+ [Supabase](https://supabase.com/?ref=thibaultmilan.com) \+ [Postmark](https://postmarkapp.com/?ref=thibaultmilan.com), “vibe‑coded” in two days. The goal wasn’t just to ship fast; it was to make the vote trustworthy, observable, and immediately usable on stage without any manual cleanup.
Why change what “worked”? Because what “works” for a prototype can break under real‑world behavior. Over the years, we’ve had to scrub votes after the fact: disposable emails, “+alias” tricks, and creative ways to poke at Glide’s API, which is surprisingly permissive by default. This time, we put integrity in the spec from day one and moved the critical logic server‑side.
## TL;DR
- Rebuilt the voting system in 48 hours
- Stack: [Lovable](https://lovable.dev/invite/d33c6bee-647c-4581-8186-975070e0645f?ref=thibaultmilan.com) (Tailwind) + [Supabase](https://supabase.com/?ref=thibaultmilan.com) (Postgres, RLS, Edge Functions) + [Postmark](https://postmarkapp.com/?ref=thibaultmilan.com) (email delivery)
- Cut “soft fraud” at the source (disposable domains, aliasing, dot‑variants)
- Locked down API access and enforced rules server‑side
- Real‑time, trustworthy results with zero post‑processing
## The stack that enabled speed without shortcuts
**Lovable + Tailwind for the frontend**
Clean design system, fast componentization, easy to ship something that looks and feels solid.
**Supabase for data and server logic**
Postgres with Row‑Level Security, plus Edge Functions to keep sensitive logic off the client.
**Postmark for transactional email at scale**
Reliable magic link authentication, no passwords to manage, less friction, fewer attack vectors.
### Passwordless by design
No reset flows. No password storage. Fewer ways for bad actors to get creative. Users enter an email, receive a magic link, and they’re in. It’s simpler for everyone and removes a whole category of risk.
## Cutting out “soft fraud” at the source
The devil is in the details: disposable domains, aliasing with “+”, and dot‑variants (hello Gmail) can quietly skew results unless you deal with them upfront. This year, I:
- Normalized emails
- Filtered disposable domains
- Blocked alias abuse
- Validated before any vote hits the database
No “we’ll clean it later.” If data is clean at the door, you don’t have to run a laundromat backstage.
## Locking down the API (because anyone could hit it)
One lesson learned with Glide: their API can be hit by, well, anyone who knows where to look. That’s fine for prototypes, less fine for a public vote. I added strict API caller control and moved the vote path entirely into Supabase Edge Functions. The client never writes a vote directly; the server enforces rules: voting window, user state, uniqueness, and rate limits. Row‑Level Security does the rest to ensure users only see what they should.
## What this looked like operationally
**Real‑time results without the ritual post‑mortem**
No last‑minute scrubbing, no “give us 20 minutes to adjust.” The numbers were clean by design and ready as soon as voting closed.
**A lightweight back office with the essentials**
Validation vs. rejection rates, error signals, latency. Enough observability to trust what we’re seeing, not a bloated dashboard.
**An experience that felt simple**
One‑click login, clear UI, quick feedback. Security shouldn’t feel like paperwork to the user.





## Why two days were enough
The constraints were clear, the scope was tight, and the tools did their job. Edge Functions let me encapsulate the sensitive bits fast. Tailwind and a small pattern library made the UI straightforward. Postmark delivered reliably. Supabase gave me RLS, SQL views, and a sane place to aggregate results without inventing a custom backend on deadline.
## Would I use Glide again?
Absolutely — for the right thing. Glide is great for prototypes and internal tools. But when integrity is the product, you need control: caller restrictions, server‑side rules, and a data model that can enforce reality. For public voting with real outcomes, low‑code becomes a liability faster than you think.
## What I’d would add next (for next year maybe)
- Smarter anti‑bot checks (lightweight proof‑of‑work, device attestation, or Turnstile)
- Anomaly alerts on voting patterns (bursts, geographic clustering, device reuse)
- A/B tests on the auth flow to shave a few seconds off the experience. Probably trying social login. But then, how to guarantee uniqueness?
## The takeaway
Under tight deadlines, vibe‑coding gave me speed without sacrificing ownership. Here’s why it beat low‑code for this project:
- Control and portability: the code is mine. I can deploy it anywhere, evolve it, and audit every layer (auth, API, data). No dependency on a platform’s roadmap, pricing changes, or opaque limits.
- No throwaway work: nothing here gets trashed in six months. Every component (Tailwind UI, Supabase schemas/RLS, Edge Functions, Postmark flows) is durable and reusable.
- Faster for the hard parts: when you need strict API caller control, server‑side rules, and clean data by design, bending a low‑code tool costs time. A lean custom stack let me implement exactly what was required—once—without wrestling the platform.
Low‑code still has a place for less technical folks, but for people with a bit of development background, vibe‑coding is a powerful way to ship fast without cutting corners on integrity, control, or future‑proofing.
### Enhancing WordPress Security with AI: A Case Study
URL: https://thibaultmilan.com/enhancing-wordpress-security-with-ai-a-case-study/
Last updated: 2025-08-22T21:17:15.000Z
*This case study explores how artificial intelligence can redefine WordPress security monitoring by providing predictive threat detection, automated response systems, and intelligent anomaly recognition that surpass traditional security measures.*
---
### Table of Contents
- [Traditional WordPress Security Challenges and AI Solutions (Expanded)](#traditional-wordpress-security-challenges-and-ai-solutions-expanded)
- [Exploring an AI-Powered Security Framework](#exploring-an-ai-powered-security-framework)
- [Real-World Application Scenarios](#real-world-application-scenarios)
- [Thinking About Performance Metrics and ROI](#thinking-about-performance-metrics-and-roi)
- [Future Directions and Implementation Strategy](#future-directions-and-implementation-strategy)
- [Conclusion](#conclusion)
---
## Traditional WordPress Security Challenges and AI Solutions (Expanded)
WordPress, being the most widely used CMS, has a vibrant ecosystem of security plugins and monitoring tools. These range from basic firewalls to more advanced heuristics, but they all share common structural limitations.
**Current Traditional Approaches:**
- **Signature-Based Detection**: Identifies known malware patterns and vulnerabilities. Effective against well-documented threats but powerless against zero-days or novel exploits.
- **Heuristic and Rule-Based Systems**: Go beyond static signatures by spotting suspicious behaviors (e.g., repeated failed logins, unexpected file changes). While stronger, they remain rigid — attackers quickly adapt to bypass predictable thresholds.
- **Scheduled Scans and Audits**: Many tools rely on interval-based scans of files and databases. These detect problems *after* compromise, leaving significant exposure windows.
- **Manual Alert Management**: Even with dashboards and automate emails, security teams still face alert fatigue from false positives or irrelevant warnings.
**Key Limitations:**
- **Context Blindness**: Traditional systems often treat all sites alike, ignoring unique baselines (e.g., traffic surges during a marketing campaign may look like an attack).
- **Static Logic**: Rule sets require constant manual tuning and updates, failing to evolve with new attack vectors.
- **Latency in Response**: Detection is often delayed, and remediation usually requires human intervention, increasing time-to-containment.
**Visual Comparison: Traditional vs AI Security Approaches**
| **Approach** | **Strengths** | **Weaknesses** |
| -------------------------- | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------- |
| **Signature-Based** | Fast against known threats; easy to implement | Blind to zero-days; requires constant updates |
| **Heuristic / Rule-Based** | Detects broader behaviors (e.g., brute force) | Predictable and rigid; attackers adapt quickly |
| **Scheduled Scans** | Useful for audits and compliance checks | Delayed detection; exposes sites between scans |
| **Manual Monitoring** | Human judgment can catch edge cases | Time-consuming; prone to alert fatigue |
| **AI-Enhanced (Proposed)** | Learns site-specific baselines, adapts to new threats, predicts attacks in real time | Requires initial training and investment, but vastly outperforms over time |
**Where AI Makes the Difference:**
AI systems go beyond pattern matching or static heuristics. They learn *site-specific normality* (traffic patterns, update cycles, user logins), adapt to evolving threats, and correlate multiple weak signals to anticipate attacks. Instead of relying on “if X then block Y,” AI employs anomaly detection and predictive analytics — closing the gap between detection and action.
---
## Exploring an AI-Powered Security Framework
At this stage, what I propose here is not a finished product or any kind of detailed implementation plan. It’s more of a brainstorming exercise — a bunch of reflections on how AI methods *might* be applied to strengthen WordPress security. My goal is simply to sketch out possible directions, not to present something deployable or even fully validated.
**Potential Building Blocks of an AI-Enhanced Framework:**
- **Behavioral Analysis Engine (Conceptual)**
AI models could learn what “normal” activity looks like for a given site — traffic flows, login frequency, content updates — and flag deviations for closer inspection.
- **NLP-Driven Log Insights (Hypothetical Use Case)**
Natural language processing could parse logs, error messages, and plugin alerts in real time, surfacing subtle signs of compromise that static filters may overlook. While still largely reactive rather than predictive, its strength is in harnessing weak signals at scale — something humans or today’s automated systems can’t easily do.
- **Predictive Threat Modeling (Exploratory)**
Building on those weak signals, AI might then correlate data from multiple sources — login attempts, file anomalies, server spikes — to forecast potential attacks before they fully materialize.
- **Automated Mitigation (Possible Next Step)**
In a more advanced stage, AI could initiate protective actions such as blocking malicious IPs, isolating affected files, or rolling back changes from backups. While some services already attempt these steps, the real opportunity is to see how AI could make them smarter and more efficient — for example by adapting responses to context, prioritizing actions, and scaling them far beyond what human operators or fixed-rule automations can manage. For now, this remains a conceptual ambition rather than a ready capability.
**Why Frame It as Exploration?**
This section does not claim to offer a ready-made architecture. Instead, it identifies **plausible ways AI might evolve WordPress security practices**, clarifies opportunities for research, and outlines what would need to be tested or validated before such a system could become operational.
---
## Real-World Application Scenarios
**Scenario 1: Brute Force Attack Mitigation**
Instead of waiting for dozens of failed logins before blocking an IP, AI could anticipate suspicious patterns by analyzing timing, geographic shifts, or device fingerprints. Taking it further, it could also learn what “normal” login behavior looks like for each user or role. For instance, if an editor usually logs in from a single region during office hours, but suddenly attempts appear from multiple countries at unusual times, the AI could intervene preemptively. This would mean moving from “react once abuse is obvious” to “intervene before disruption occurs.”
**Scenario 2: Malware Injection Detection**
AI might continuously monitor file integrity and code-level anomalies, spotting unauthorized script injections in near real time. Going a step further, the system could also learn the behavior of legitimate users — for example, how often and in what ways a specific administrator normally edits files. If an action is technically permitted but deviates from that user’s usual patterns, the AI could raise an alert. This would help mitigate cases of compromised credentials where malicious actions hide behind authorized accounts, reducing false negatives while still catching subtle intrusions.
**Scenario 3: SEO Spam Prevention**
AI could extend security beyond the infrastructure layer into content integrity. Imagine it flagging injected backlinks, hidden text, or modified metadata that undermines search rankings. Going further, it might even learn the editorial style and publishing cadence of a site, so that if injected content superficially resembles a normal post but doesn’t align with historical tone or structure, it would trigger an alert. This would address a blind spot in most current security tools, bridging security with digital reputation management.
## Thinking About Performance Metrics and ROI
In security, talking about performance or ROI is always tricky. Prevention is invisible — the absence of a breach does not generate a clear metric. So what follows is more of a reflection on **what might be worth measuring** if AI-enhanced WordPress security systems ever came into play.
- **Accuracy and Signal Quality**: Today, most plugins flag a huge volume of events as “maybe dangerous” and then claim to have acted on them with filters or blocks. The result is a flood of noise where truly urgent issues are buried. AI could help here by learning which anomalies are worth surfacing to a human and which can be safely auto-resolved. The metric to imagine is the **ratio of meaningful alerts to total alerts** — a measure of how much user attention is saved.
- **Automation and Time Saved**: Security dashboards today often require hours of manual triage, with reports full of generic warnings. For teams or site owners, this translates into significant man‑days spent sorting false positives from real threats. If AI systems can automate part of that triage, the impact would show up not just in fewer alerts, but in the **reduction of time spent on routine monitoring tasks**.
- **Time-to-Resolution (TTR)**: Beyond detecting issues, the real cost often lies in how long it takes to restore normal service. Anyone who has seen a plugin update take down a site knows this pain — even outside of direct attacks. While staging environments should catch these problems, in practice they often slip through. If AI could help pinpoint the root cause faster or trigger automated rollback actions, the TTR metric would become a meaningful way to capture its impact.
- **Cost–Benefit Reflection**: Any initial investment in AI tooling might be offset not only by fewer incidents but also by cutting down manual review time. The ROI here is less about direct revenue and more about freeing expert attention for the genuinely hard problems.
## Future Directions and Implementation Strategy
Since this is a brainstorming exercise rather than a deployment plan, what follows is more about **imagining possible paths forward** than prescribing concrete steps. The goal is to sketch out how these ideas could evolve if someone wanted to push them further.
**Phase 1: Small-Scale Experiments**
Rather than aiming for a polished solution, one could start by experimenting with AI on narrow use cases — for instance, testing how large language models (LLMs) handle WordPress log data and security messages. Unlike traditional NLP pipelines, LLMs might better grasp context across varied inputs, offering more coherent summaries and highlighting unusual patterns in plain language. The value here would be less about building a production tool and more about understanding how LLMs can reduce noise and surface meaningful insights.
**Phase 2: Combining Signals**
The next step might be connecting different exploratory tools into a multi-part agent. Anomaly detection models could flag weak signals in traffic, file integrity, or login behavior. A correlation engine could link those anomalies into potential storylines (e.g., suspicious login → unusual file edit → metadata change). Finally, an LLM-based agent could ingest these signals and generate a human-friendly report, combining context at scale and suggesting where attention is most needed. Even at this stage, the point would not be prediction so much as making complexity intelligible and actionable.
**Phase 3: Towards Proactive Response**
If early experiments show promise, future work could explore limited forms of automated response — like flagging suspicious plugin updates or suggesting quick rollback actions. Today, projects such as the Model Context Protocol (MCP) make the promise of providing a common way to define tools that AI systems can use. In this spirit, one could imagine exposing WordPress management functions — editing content, adjusting settings, managing plugins — as tools available to an AI agent. Rather than hard‑coding actions, the AI would be able to pilot or manipulate the installation through defined interfaces, under human supervision. This opens the door to more flexible and context‑aware interventions when issues arise.
**Integration with Existing Practices**
Any future exploration would also need to think about how AI fits into what already exists: uptime monitoring, backup routines, plugin management, and periodic reviews. The opportunity is less about replacing those practices and more about amplifying them with adaptive intelligence.
---
## Conclusion
This technical case study has been a thought experiment on how AI might reshape WordPress security monitoring. The intent was not to describe a finished solution, but to explore possible directions: using AI to filter noise, detect anomalies faster, and reduce the manual effort that clutters today’s security workflows.
The reflections show that while many pieces of the puzzle already exist in different services, AI could push them further — by making them more adaptive, context-aware, and scalable. Whether it’s smarter log analysis, learning user behavior patterns, or shortening time-to-resolution when things break, the potential lies in combining human judgment with machine-driven pattern recognition.
As WordPress remains a major part of the web ecosystem, even incremental improvements in how we secure it could have wide-reaching impact. And while nothing here is ready to deploy, these explorations highlight promising areas where future innovation could make a tangible difference.
---
## Where to Start?
If you’re running a WordPress site today, you don’t need to wait for futuristic AI agents to get better protection. The first step is making sure you have **reliable monitoring and reporting in place**. From there, incremental improvements — such as reducing noise in alerts, speeding up time-to-resolution, and ensuring backups are tested — already deliver tangible value.
That’s exactly what my [WordPress monitoring services](https://thibaultmilan.com/wordpress-wordpress-services/) focus on: keeping your site healthy, minimizing disruption, and helping you see clearly what needs your attention. As AI-driven techniques mature, they will only enhance this foundation.
👉 If you’d like to strengthen your site’s security and monitoring today while preparing for the future, [let’s talk.](#)
---
Photo by [Shahadat Rahman](https://unsplash.com/@hishahadat?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash) on [Unsplash](https://unsplash.com/photos/shallow-focus-photography-of-computer-codes-BfrQnKBulYQ?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash)
### Nouvelle édition du guide « L’IA Gen pour les administrations publiques » : sécurité, déploiement et éthique à l’ère du EU AI Act
URL: https://thibaultmilan.com/nouvelle-edition-du-guide-l-ia-gen-pour-les-administrations-publiques-securite-deploiement-et-ethique-a-l-ere-du-eu-ai-act/
Last updated: 2025-08-20T14:51:55.000Z
L’été n’a pas été de tout repos pour le secteur public. Tandis que la révolution des grands modèles de langage (LLM) continue de bousculer nos routines, mon livre blanc s’est offert une mise à jour ambitieuse — et franchement, il était temps.
## Sécurité des LLM : de la théorie à la pratique
On ne va pas se mentir : intégrer l’IA dans les processus administratifs, c’est ouvrir la porte à des opportunités… et à quelques sueurs froides. Prompt injection, divulgation d’informations sensibles, empoisonnement des données d’entraînement — les LLM ont leurs failles, et il était urgent de les adresser.
Ce nouveau chapitre plonge dans les vulnérabilités spécifiques des LLM, avec des exemples concrets et des recommandations pour que l’innovation ne rime pas avec imprudence.
## Déploiement : choisir sa propre aventure
Cloud, on-prem, hybride… Les options de déploiement sont désormais réécrites de fond en comble. On a analysé chaque scénario, ses avantages, ses contraintes, et surtout ses implications pour la souveraineté et la sécurité des données publiques.
Parce qu’il n’existe pas de solution universelle, mais un éventail de choix à adapter à chaque contexte.
## Biais, éthique et le grand chamboulement du EU AI Act
L’IA n’est pas neutre, et les biais algorithmiques peuvent avoir des conséquences bien réelles. Désormais, un chapitre entier est consacré à ces questions, avec une analyse du EU AI Act qui s’impose comme le nouveau gardien du jeu européen.
Discrimination, transparence, supervision humaine… La régulation européenne redéfinit les règles, et invite chaque acteur public à repenser ses pratiques.
## Conclusion
L’IA n’est plus un gadget, c’est un levier de transformation — à manier avec lucidité et exigence. Cette mise à jour du guide est une invitation à s’approprier les enjeux, à questionner les évidences, et à bâtir une administration publique à la hauteur des défis de demain.
[**Télécharger le guide**](https://smile.eu/fr/publications-et-evenements/l-ia-gen-pour-les-administrations-publiques?ref=thibaultmilan.com)
### AI for Public Administrations - V2 Whitepaper
URL: https://thibaultmilan.com/projects/ai-whitepaper-v2/
Last updated: 2025-09-22T11:17:41.000Z
## The Challenge
As generative AI revolutionizes the public sector landscape, administrations face unprecedented opportunities alongside significant security, ethical, and compliance challenges. The rapid evolution of large language models (LLMs) demanded an urgent update to existing guidance, particularly in light of the new EU AI Act regulations.
## What This V2 Edition Addresses
### LLM Security: From Theory to Practice
The integration of AI in administrative processes opens doors to both opportunities and security concerns. This edition comprehensively addresses:
- **Prompt injection vulnerabilities** and mitigation strategies
- **Sensitive information disclosure** prevention
- **Training data poisoning** protection
- **Practical security frameworks** for LLM deployment
Real-world examples and concrete recommendations ensure innovation doesn't compromise security.
### Deployment Strategies: Choose Your Own Adventure
Completely rewritten deployment guidance covering:
- **Cloud-first approaches** and their implications
- **On-premise solutions** for sensitive data
- **Hybrid architectures** balancing flexibility and control
- **Data sovereignty considerations** for public sector requirements
Each scenario analyzed for advantages, constraints, and implications for public data security.
### Ethics, Bias, and EU AI Act Compliance
A dedicated chapter addressing the non-neutrality of AI systems:
- **Algorithmic bias identification** and mitigation
- **EU AI Act analysis** and compliance frameworks
- **Discrimination prevention** in automated decision-making
- **Transparency requirements** and human oversight mandates
- **Practical implementation** of ethical AI principles
## Key Deliverables
- **Comprehensive security framework** for LLM integration
- **Deployment decision matrix** for different public sector contexts
- **EU AI Act compliance checklist** and implementation roadmap
- **Bias detection and mitigation protocols**
- **Risk assessment methodologies** for AI system deployment
- **Governance frameworks** for responsible AI adoption
## Impact & Outcomes
This whitepaper serves as the definitive guide for European public administrations navigating the complex landscape of generative AI adoption. It provides:
- **Actionable security protocols** protecting public data and systems
- **Clear deployment pathways** aligned with sovereignty requirements
- **Compliance frameworks** meeting EU AI Act standards
- **Ethical guidelines** ensuring fair and transparent AI use
- **Strategic roadmaps** for sustainable AI transformation
## Technical Innovation
The V2 edition introduces several methodological advances:
- **Layered security model** specifically designed for public sector LLM deployment
- **Multi-criteria decision framework** for deployment architecture selection
- **Bias assessment toolkit** with quantitative measurement approaches
- **Compliance automation strategies** reducing regulatory overhead
- **Risk-based governance model** scaling with organizational maturity
## Strategic Context
Published in partnership with Smile, this whitepaper addresses the urgent need for practical guidance as European administrations accelerate their AI adoption. The timing coincides with the EU AI Act implementation period, providing crucial support during this regulatory transition.
## Future Directions
This living document will continue evolving with:
\* **Industry case studies** documenting successful implementations
\* **Updated threat models** as attack vectors evolve
\* **Advanced governance patterns** for multi-agency deployments
\* **Integration playbooks** for existing administrative systems
The whitepaper establishes France and Europe as leaders in responsible AI governance, demonstrating that innovation and integrity are not just compatible—they're essential for building public trust in digital transformation.
[**Download the Guide**](https://smile.eu/fr/publications-et-evenements/l-ia-gen-pour-les-administrations-publiques?ref=thibaultmilan.com)
### Super Fiesta: $5 Photo Powerhouse
URL: https://thibaultmilan.com/super-fiesta-5-photo-powerhouse/
Last updated: 2025-08-07T14:05:21.000Z
> **TL;DR** : With just **US $5** worth of Claude Code prompts I rewrote the README, patched obvious security holes, and added watermarking + bulk‑renaming to my open‑source photo batcher [Super Fiesta](https://github.com/clawfire/super-fiesta/?ref=thibaultmilan.com). Now it replaces both Photoshop macros and my beloved Squash GUI.
## The original pain point
Except when I'm working with [the great Pit Reding](https://studiopitreding.com/?ref=thibaultmilan.com), every party left me with hundreds of pictures that were too heavy, not square, unbranded, and badly named. I spent more time juggling Photoshop actions and Squash than enjoying the memories. My tiny Python script—hacked together in an afternoon and inspired by [@roast.london.roast](https://www.instagram.com/roast.london.roast/?hl=fr&ref=thibaultmilan.com)'s clean aesthetic—only did a basic resize and … that was it.
## What Super Fiesta does today
- **Resizes** to a neat 1080‑px square, centers the photo, fills the background.
- **Batches** an entire folder (optional macOS tag filter).
- **Adjustable** JPEG quality.
- **PNG** watermark (size, position, opacity, margins).
- **Smart** renaming — original, sequential, or Event‑Date with conflict detection.
- **Persistent** config in sf\_config.ini.
- **Chattier** CLI with input validation.
## Why I brought Claude Code on board
I’m not a full‑time Python dev; I wanted to move fast, stay clean, and learn along the way. Claude Code bills per token, so with a handful of focused prompts I:
- **Rewrote the README** to be genuinely onboarding‑friendly.
- **Hardened the script** (error handling, RGB/quality checks, context managers).
- **Implemented watermarking** end‑to‑end.
- **Added pattern‑based renaming** with a preview step.
Total chat: \~5 800 tokens ⇒ \~ US $5.
## Two signature upgrades at a glance
| Feature | Before | After Claude Code |
| --------- | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| Watermark | 🛑 *None – I relied on Squash* | ✅ **PNG overlay** – six preset positions, 1‑50 % size, 10‑100 % opacity (default: bottom‑center at 14 %) |
| Renaming | 🔢 Batch renamming from MacOS | 🚀 **Automatic**: Original / Sequential (Party\_001) / Event‑based (Birthday\_2025‑08‑07\_001) with preview + conflict detection |
## What working with an AI felt like
- **Iterative prompting** – start with context → ask for a plan → zoom into code.
- **Git co‑authoring** – each commit is clearly co‑signed, perfect for traceability.
- **Security awareness** – Claude flagged unvalidated inputs and potential batch crashes and proposed tested fixes.
- **Cost efficiency** – pay‑as‑you‑go beats a monthly subscription for small OSS bursts.
## Wrap‑up & call‑to‑action
If you want to …
- **Automate your photo pipeline** without a heavyweight GUI,
- **Super‑charge a side‑project** on a shoestring budget,
- **Learn by reading AI‑assisted code**,
clone [the repo](https://github.com/clawfire/super-fiesta/?ref=thibaultmilan.com), run `pip install -r requirements.txt` and `python sf.py`. Your shots will be Instagram‑ready in seconds!
> 💡 **Next step**: a tiny Tkinter GUI and Windows support. Feel free to open an issue or send a PR.
Happy fiestas – and keep those cameras clicking! 📸🥳
### Super Fiesta
URL: https://thibaultmilan.com/projects/super-fiesta/
Last updated: 2025-09-22T11:13:02.000Z
## The Challenge
Every party left me with hundreds of pictures that were too heavy, not square, unbranded, and badly named. I spent more time juggling Photoshop actions and Squash than enjoying the memories. My tiny Python script—hacked together in an afternoon and inspired by [@roast.london.roast](https://www.instagram.com/roast.london.roast/?hl=fr&ref=thibaultmilan.com)'s clean aesthetic—only did basic resize and... that was it.
## What Super Fiesta Does
- **Smart Resizing** to 1080×1080px squares, centers photos, fills backgrounds
- **Batch Processing** entire folders with optional macOS tag filtering
- **Adjustable Quality** JPEG compression settings
- **Professional Watermarking** \- PNG overlay with size, position, opacity, and margin controls
- **Intelligent Renaming** \- Original, sequential, or Event-Date patterns with conflict detection
- **Persistent Configuration** via `sf_config.ini`
- **User-Friendly CLI** with input validation and progress tracking
## AI-Assisted Development
I'm not a full-time Python dev; I wanted to move fast, stay clean, and learn along the way. Claude Code bills per token, so with focused prompts I:
- **Rewrote the README** to be genuinely onboarding-friendly
- **Hardened the script** with proper error handling, RGB/quality checks, and context managers
- **Implemented watermarking** end-to-end with flexible positioning
- **Added pattern-based renaming** with preview and conflict detection
**Total cost: \~5,800 tokens ⇒ \~US $5**
## Key Features Deep Dive
### Professional Watermarking
- Six preset positions (corners, centers, sides)
- 1-50% size scaling relative to image
- 10-100% opacity control
- Configurable margins
- Default: bottom-center at 14% opacity
### Smart Batch Renaming
- **Original**: Keep existing names
- **Sequential**: `Party_001`, `Party_002`, etc.
- **Event-based**: `Birthday_2025-08-07_001` with auto-dating
- Preview mode with conflict detection
### Technical Highlights
- **Proportional scaling** preserves aspect ratios
- **Background fill** for non-square images
- **macOS tag integration** for selective processing
- **Robust error handling** prevents batch crashes
- **Configuration persistence** saves your preferences
## Working with AI
The development experience was:
\- **Iterative prompting** \- start with context → ask for a plan → zoom into code
\- **Git co-authoring** \- each commit clearly co-signed for traceability
\- **Security awareness** \- Claude flagged unvalidated inputs and proposed tested fixes
\- **Cost efficiency** \- pay-as-you-go beats monthly subscriptions for small OSS bursts
## Impact & Usage
Super Fiesta now completely replaces my Photoshop macro workflow and Squash GUI for event photography. What used to take 30+ minutes of manual processing now happens in seconds with a single command:
```bash
python sf.py /path/to/photos --watermark logo.png --rename event
```
## Open Source & Future
The project is [fully open source](https://github.com/clawfire/super-fiesta/?ref=thibaultmilan.com) under MIT license. Planned features include:
\- Tiny Tkinter GUI for non-CLI users
\- Windows support expansion
\- Multi-format output options
\- Custom dimension presets
Perfect for event photographers, social media creators, and anyone who wants Instagram-ready photos without heavyweight tools.
### Qwen-image: The New Open-Source Benchmark in AI Image Generation?
URL: https://thibaultmilan.com/qwen-image-the-new-open-source-benchmark-in-ai-image-generation/
Last updated: 2025-08-05T08:36:32.000Z
The landscape of image generation through artificial intelligence is evolving at lightning speed, and the arrival of **Qwen-image**, unveiled by Alibaba Cloud, could seriously shake things up. In a field so far dominated by **OpenAI** (with *DALL·E* and *GPT-Image-1*) and **Google** (with *Imagen*), this new model impresses with both its **performance** and its **accessibility**.
In this article, I offer a detailed comparison between these models, highlighting what makes Qwen-image particularly promising.
👉 See the official announcement: [Qwen-image blog](https://qwenlm.github.io/blog/qwen-image/?ref=thibaultmilan.com)
---
## 📸 Qwen-image in a nutshell
Developed by Alibaba as part of its **Qwen** model family, Qwen-image is an **open-source image generation model**, trained on multilingual image/text pairs. It stands out with its **ability to understand and generate images from complex descriptions**, while outperforming most of its competitors on public benchmarks.
Some key strengths:
- A **unified Transformer-based architecture**, suitable for both text and image.
- **Detailed and more coherent visual outputs**, even with long or ambiguous prompts.
- **Open-source availability**, under a permissive license, enabling easy adoption and customization.
---
## ⚔️ Clash of the titans: Qwen vs OpenAI vs Google
### 🧠 Architecture comparison
| Model | Architecture Type | Text Handling | Image Processing | Native Multimodality |
| --------------------- | ------------------------- | ------------- | ------------------------- | -------------------- |
| **Qwen-image** | Unified Transformer | Yes | Visual encoder/decoder | Yes |
| **DALL·E 3** | Diffusion + CLIP (OpenAI) | Yes (via GPT) | Diffusion + image encoder | Partially |
| **GPT-Image-1** | Multimodal Transformer | Yes (GPT-4) | Images handled in patches | Yes |
| **Imagen 2 (Google)** | Diffusion text-to-image | Yes (T5) | High-quality diffusion | No (one-way) |
Qwen-image uses a **fully integrated approach**, while OpenAI and Google rely on more complex and segmented pipelines. This allows Qwen to be faster and more consistent when handling complex or multilingual text inputs.
---
## 🧪 Performance: the benchmarks speak for themselves
On several public benchmarks (such as **Zero-Shot COCO Captioning**, **Flickr30k**, and **T2I-CompBench**), Qwen-image outperforms its competitors in:
- **Semantic quality** of generated images (faithfulness to the text)
- **Prompt detail fidelity**
- **Coherence of faces and objects**
- **Multilingual support**, including Chinese, English, and other major languages
> Note: While GPT-Image-1 is performant, it is currently closed-source and only available within the OpenAI ecosystem, limiting its free use. DALL·E 3 generates quality images but depends heavily on sophisticated prompt engineering to avoid contextual errors.
---
## 🔓 Open source: a strategic edge
One of Qwen-image’s strongest differentiators is that it is **fully open-source**, with access to weights, architecture, and training scripts. At a time when AI giants tend to restrict access to their most powerful models, Alibaba takes the opposite path, betting on **openness and transparency**.
This empowers the community to:
- **Fine-tune the model** for specific use cases (medical, industrial, artistic…)
- **Run it locally** without cloud dependency
- **Understand its inner workings** to build trust and ensure safety
---
## 🧭 Outlook
Qwen-image not only signals Alibaba’s entry into the big leagues — it represents a **shift in the balance of power** in the sector. Its output quality rivals (and even surpasses) market leaders, while remaining **open-source**, **customizable**, and **multilingual**.
As concerns grow around closed models — especially in Europe with the debate on **AI sovereignty** — models like Qwen-image pave the way for robust, ethical, and technically advanced alternatives.
---
## 🚀 Conclusion
Qwen-image is emerging as **the model to watch** in image generation. At the crossroads of performance and openness, it sets new standards in a field long dominated by American tech giants.
What if the future of image generation belongs to open-source — and to China?
### Take Back Control: Open Source Alternatives for Developer Sovereignty
URL: https://thibaultmilan.com/take-back-control-open-source-alternatives-for-developer-sovereignty/
Last updated: 2025-07-24T15:00:21.000Z
Let’s be honest: most of us have built our workflows on the backs of shiny, closed-source giants. They’re fast, sleek, and everywhere—but they come with strings attached. Data siphoned to the cloud. Features locked behind paywalls. Updates that break your flow, or worse, your trust.
But what if you could actually *own* your tools? What if you could tweak, self-host, and run everything on your own terms? That’s the promise (and the poetry) of open source: not just “free as in beer,” but “free as in sovereignty.”
Below, you’ll find a table mapping some of the most popular, proprietary developer tools to their open-source, self-hostable counterparts. Consider this your roadmap to digital independence.
---
| Proprietary Tool | Open Source Alternative(s) | Why Switch? |
| ---------------- | --------------------------------------------------------- | ----------------------------------------------------------------- |
| **ChatGPT** | [Ollama](https://ollama.com/?ref=thibaultmilan.com) | Run LLM models locally, zero cloud, total privacy |
| **ChatGPT** | [LM Studio](https://lmstudio.com/?ref=thibaultmilan.com) | GUI for managing/trying AI models without terminal, offline usage |
| **ChatGPT** | [OpenDevin](https://opendevin.com/?ref=thibaultmilan.com) | AI agent for coding, self-hostable, full control over workflow |
| Proprietary Tool | Open Source Alternative(s) | Why Switch? |
| ---------------- | ---------------------------------------------------------- | ----------------------------------------------------------------------------- |
| **Postman** | [Hoppscotch](https://hoppscotch.io/?ref=thibaultmilan.com) | Lightweight API client, self-hosted, fast requests, REST/GraphQL/MQTT support |
| **Postman** | [Bruno](https://bruno.com/?ref=thibaultmilan.com) | API collections as text files, versionable with Git, offline-first |
| **Postman** | [Apidog](https://apidog.com/?ref=thibaultmilan.com) | Complete API suite, testing/mocking, private hosting, advanced features |
| Proprietary Tool | Open Source Alternative(s) | Why Switch? |
| ---------------- | ---------------------------------------------- | ---------------------------------------------------------------- |
| **GitHub** | [Gogs](https://gogs.io/?ref=thibaultmilan.com) | Lightweight Git server, easy deployment, fast private management |
| Proprietary Tool | Open Source Alternative(s) | Why Switch? |
| -------------------- | -------------------------------------------------------- | --------------------------------------------------------- |
| **Google Analytics** | [Plausible](https://plausible.io/?ref=thibaultmilan.com) | Cookie-free analytics, privacy-respecting, GDPR compliant |
| **Google Analytics** | [Umami](https://umami.is/?ref=thibaultmilan.com) | Real-time stats, multi-site, elegant UI, self-hostable |
| Proprietary Tool | Open Source Alternative(s) | Why Switch? |
| ---------------- | ---------------------------------------------------- | --------------------------------------------------------------------------------- |
| **Airtable** | [NocoDB](https://nocodb.com/?ref=thibaultmilan.com) | Turns any SQL database into a collaborative Airtable-like table |
| **Vercel** | [Coolify](https://coolify.io/?ref=thibaultmilan.com) | App/site deployment, Git-based, open source control, database & worker management |
| Proprietary Tool | Open Source Alternative(s) | Why Switch? |
| ---------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------- |
| **Firebase** | [Supabase](https://supabase.com/?ref=thibaultmilan.com) | Full backend on PostgreSQL, authentication, real-time, open source |
| **Firebase** | [Pocketbase](https://pocketbase.io/?ref=thibaultmilan.com) | Lightweight backend, single binary, local storage, perfect for prototypes |
| Proprietary Tool | Open Source Alternative(s) | Why Switch? |
| ---------------- | ----------------------------------------------------------- | --------------------------------------------------------------------- |
| **Dropbox** | [Nextcloud](https://nextcloud.com/?ref=thibaultmilan.com) | Private storage/sync, collaboration, total control over files |
| **Notion** | [Obsidian](https://obsidian.md/?ref=thibaultmilan.com) | Markdown note-taking, offline-first, local files, extensible |
| **Twitter** | [Mastodon](https://joinmastodon.org/?ref=thibaultmilan.com) | Decentralized social network, ad-free, self-hostable instances |
| **Zapier** | [n8n](https://n8n.io/?ref=thibaultmilan.com) | Visual automation, self-hostable, connects 300+ services without SaaS |
| **CapCut** | [OpenCut](https://opencut.video/?ref=thibaultmilan.com) | Local video editing, no cloud upload, scalable, ideal for creators |
---
## Why Open Source = Sovereignty
Open source isn’t just about saving money (though your wallet will thank you). It’s about autonomy. When you self-host and contribute, you’re not just a user—you’re a stakeholder. You decide where your data lives, how your tools evolve, and what you share with the world.
You don’t have to settle for “good enough” or whatever the next update brings. You can fork, patch, and remix. You can build your stack on trust, not terms of service.
## Final Thoughts
The open-source landscape is richer than ever. Whether you’re building, collaborating, or just trying to avoid another SaaS invoice, these alternatives offer a path to real digital sovereignty.
Got more tools that put power back in the hands of developers? Drop them below. Let’s build our own future—one repo at a time.
---
Photo by [Markus Winkler](https://unsplash.com/@markuswinkler?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash) on [Unsplash](https://unsplash.com/photos/a-box-with-a-key-chain-and-a-key-chain-on-it-Z8yWSsx8OWE?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash)
### Prototyping a Fullstack App in 8 Hours with Lovable
URL: https://thibaultmilan.com/prototyping-a-fullstack-app-in-8-hours-with-lovable/
Last updated: 2025-12-30T12:31:04.000Z
I recently built a lightweight news curation web app, available at [start.smile.eu](https://start.smile.eu/?ref=thibaultmilan.com). The idea is simple: anyone — inside Smile or outside — can set it as their browser startpage and receive a curated selection of dynamic news and facts every time they open a new tab. Users can customize the feed by selecting predefined topic categories, choosing between business, tech, or both, and picking their preferred language. These inputs feed into a filtering system that dynamically adjusts what’s displayed.
The entire app was built in just one workday. That speed was made possible by **Lovable**, an emerging platform for assisted application development that blends modern software practices with generative tooling.
## Lovable: A Structured but Non-Visual Approach to Assisted Programming
Unlike visual-first tools like Figma or Webflow, Lovable operates through assisted declarative input: instead of dragging and dropping components, you define your needs, constraints, and functional goals — and the platform generates the required logic, structure, and integrations. It provides:
- Continuous code generation (JS/TS), with the ability to switch between a live app preview and a full in-browser IDE,
- Modular, reusable components based on well-established frameworks and architecture patterns,
- Built-in support for routing, state management, and lifecycle handling,
- Seamless GitHub integration (with CI/CD hooks),
- Native Supabase integration for authentication, persistence, and edge functions.
Unlike traditional no-code platforms, Lovable produces real, production-grade code that is versionable, inspectable, and extendable. It’s not a black box. This makes it ideal for advanced prototyping without hitting a wall when transitioning to long-term development.
## Theoretical Positioning and Ecosystem Fit
From a software engineering perspective, Lovable represents a shift toward augmented co-development environments — tools that combine architectural consistency, declarative design, and live system generation. This brings new leverage to:
### Quick Comparison:
#### Traditional No-code/Low-code Tools:
- ✅ Fast setup
- ❌ Hard to scale
- ❌ Poor code maintainability
- ❌ Weak alignment with internal design systems
- ❌ Limited interoperability with real dev workflows
- ❌ Vendor lock-in, leaving teams dependent on pricing and support quality
#### Platforms like Lovable:
- ✅ Still fast
- ✅ Clean, modular code output
- ✅ Git-based workflows with full portability
- ✅ Standards-aligned architectural patterns
- ✅ Easy to industrialize or hand off to dev teams
In essence, Lovable makes application development accessible to product-minded professionals — people who know their domain and can frame functional needs clearly. That said, it’s still best used with the oversight of senior developers who can validate the generated output and ensure maintainability over time — even though Lovable includes a dedicated security agent that attempts automated vulnerability detection and remediation.
## Observed Constraints and Limits
Every abstraction comes with tradeoffs, and Lovable is no exception:
- **Complex logic** (e.g., multi-step async flows or non-trivial business rules) is theoretically possible but often tedious to implement, requiring manual overrides and bypasses.
- The underlying architecture — while clean and accessible (unlike many no-code solutions) — imposes certain conventions.
- Collaborative tooling is still early-stage. You *can* edit code outside the platform, push to GitHub, and continue in Lovable — but feature branch workflows are still poorly supported.
Lovable’s learning curve is unusual: it has a very flat start. The onboarding is smooth, and building your first working app can feel almost magical — that was my experience building the initial version of start.smile.eu. But as soon as I began working on a more structured v2 with a broader roadmap, the limitations kicked in. Planning and project management capabilities are limited, and unless you manually break down your work into granular user stories, the platform struggles to keep up. This stands in contrast with newer agent-based IDEs like Kiro, which aim to support this kind of structured decomposition natively.
## Practical Outlook
Lovable let me focus almost entirely on the user flow, business logic, and product value. Things like routing, theming, and state handling were covered with minimal friction. I was even surprised to see the platform proactively suggesting refactoring when files became too long or unwieldy — a rare and welcome feature at this level of abstraction.
The end result was a usable, maintainable app — something a technical team could easily expand, connect to a more complex backend, or deploy at scale. It’s a powerful option for building prototypes that don’t get thrown away. You start small, but with a solid foundation.
This also aligns with a more sustainable development approach. You can validate an idea with a tiny team — sometimes a single person — and then hand it off to a mid-sized dev team to take it further.
And yes — the first version took under eight hours.
This kind of tool deserves serious attention in the context of how we think about software life cycles and modern development models.
## Epilogue
I tested Lovable in two other scenarios that gave me deeper insight into its strengths and growing pains:
1. **A 2-day hackathon** — Initially, Lovable was a huge boost. I had a working prototype in just a few hours. But once I started iterating quickly — jumping between ideas, exploring variations — the platform struggled to keep pace with my mental model. UI changes became unpredictable and frustrating. Looking back, I probably should have switched to raw code editing at some point, but I wanted to push the tool to its edge.
2. **An AI-powered training tool for Sales teams, using simulated customer conversations** — This was more challenging. The tech stack was bleeding-edge, with little mature documentation. Lovable had trouble navigating such a context: its internal knowledge base wasn’t up to date, and I struggled to feed it enough context to guide it properly. Still, after a failed first attempt, I started from scratch — and in two days, I had a working, surprisingly strong result. That speed still counts.
More broadly, I see Lovable (and tools like it) as well-suited for internal projects with **zero budget** that still *need* to exist. In these cases, quality expectations are lower by design — no one budgeted for the project to begin with. You can bypass project management layers and go straight to value delivery. One person — with strong domain knowledge and some technical chops — can take an idea all the way to production without heavy resource overhead.
### Kiro: AWS’s Agentic IDE and the Spec-Driven Renaissance
URL: https://thibaultmilan.com/kiro-aws-s-agentic-ide-and-the-spec-driven-renaissance/
Last updated: 2025-07-16T10:07:59.000Z
In the world of generative AI, “vibe coding” has become the guilty pleasure of developers everywhere. You prompt, the model spits out code, and—voilà!—something that almost works. The dopamine hit is real. But when it comes time to ship, maintain, or explain what you’ve built, the cracks show fast: undocumented assumptions, fuzzy requirements, and that sinking feeling when you realize you’re the only one who understands why the code does what it does (if you even remember yourself).
Enter [Kiro](https://kiro.dev/?ref=thibaultmilan.com), AWS’s new agentic IDE, which lands with a promise: to bridge the chasm between rapid prototyping and production-ready software. It’s not just “AI in your editor”—it’s a rethink of how AI should fit into the software development lifecycle, starting with the one thing most AI tools skip: specifications.
## Beyond the Vibe: What Makes Kiro Different?
Let’s cut to the chase. Most AI-powered coding tools—Copilot, Cursor, Claude Code—are great at generating code. What they’re not great at is generating context: the why, the how, and the “what if” that separates a demo from a deployable product. [Kiro](https://kiro.dev/?ref=thibaultmilan.com)’s core innovation is “spec-driven development,” a workflow that starts with structured requirements and ends with maintainable, auditable code.
How does it work? Instead of jumping from prompt to implementation, [Kiro](https://kiro.dev/?ref=thibaultmilan.com) guides you through three phases:
1. **Requirements**: You describe your feature (“Add a review system for products”), and [Kiro](https://kiro.dev/?ref=thibaultmilan.com) generates user stories, acceptance criteria (using EARS notation), and edge cases. No more “I thought you meant X” moments.
2. **Design**: Based on your requirements and codebase, [Kiro](https://kiro.dev/?ref=thibaultmilan.com) creates technical blueprints—data flow diagrams, TypeScript interfaces, database schemas, API endpoints. Think of it as an engineer whiteboarding your solution, minus the dry-erase fumes.
3. **Tasks**: The IDE breaks down the work into sequenced, testable tasks, each linked to requirements and design docs. Each task is actionable, reviewable, and—crucially—traceable.
All of this lives in Markdown, synced with your codebase. Specs aren’t static; they evolve as your code evolves, so documentation rot becomes a thing of the past.
## Hooks, Steering, and the Ghost in the IDE
[Kiro](https://kiro.dev/?ref=thibaultmilan.com) isn’t just a glorified spec generator. Its “Agent Hooks” let you automate best practices: update tests when you save a component, refresh documentation when APIs change, run security scans before every commit. Hooks are configurable and project-specific, acting like a tireless senior engineer who never forgets to dot the i’s or cross the t’s.
Agent Steering is another layer: you define your product vision, tech stack, and architecture in steering files, and [Kiro](https://kiro.dev/?ref=thibaultmilan.com) uses this context to guide its suggestions. The result? AI that understands your project’s DNA, not just its syntax.
And then there’s MCP (Model Context Protocol) integration—[Kiro](https://kiro.dev/?ref=thibaultmilan.com) can pull in external docs, APIs, or even your company’s internal knowledge base. It’s a kind of multimodal context engine that keeps the AI grounded in your reality, not just its training data.
## From Prototype to Production: Why This Matters
The promise of AI in development has always been speed. But speed without structure is how you end up with “move fast and break things”—and then spend months cleaning up the rubble. [Kiro](https://kiro.dev/?ref=thibaultmilan.com)’s approach is to slow you down just enough at the start (forcing clarity, surfacing edge cases), so you can move much faster later, with fewer rewrites and less rework.
For solo devs, [Kiro](https://kiro.dev/?ref=thibaultmilan.com) is like having a product manager, architect, and QA all in one. For teams, it’s a way to enforce standards, enable parallel work, and keep everyone on the same page—literally, since the specs and tasks are always up to date.
And let’s be clear: [Kiro](https://kiro.dev/?ref=thibaultmilan.com) isn’t just for AWS diehards. It’s built on Code OSS (the open-source core of VS Code), supports Open VSX plugins, and runs on Mac, Windows, and Linux. Its pricing model is usage-based, with a generous free tier during preview.
## The Big Picture: The Specification Renaissance
[Kiro](https://kiro.dev/?ref=thibaultmilan.com)’s launch signals a shift in how the industry thinks about AI-assisted development. The era of “prompt, pray, and patch” is giving way to structured, spec-first workflows where AI is a collaborator, not a code vending machine. The result? Software that’s not just impressive in a demo, but robust in production.
Will [Kiro](https://kiro.dev/?ref=thibaultmilan.com) kill off vibe coding? Not entirely—there’s still a place for fast, messy prototyping. But in a world where the cost of maintenance, clarity, and team alignment can make or break a product, tools like [Kiro](https://kiro.dev/?ref=thibaultmilan.com) offer a glimpse of what professional-grade AI development should look like.
In short: AI is finally learning to respect the spec. About time.
## Sources
- [Introducing Kiro - Kiro](https://kiro.dev/blog/introducing-kiro/?ref=thibaultmilan.com)
- [Automate Coding & Reduce Rework with Kiro AI-IDE - Medium](https://medium.com/@tahirbalarabe2/automate-coding-reduce-rework-with-kiro-ai-ide-2386d2c2b29f?ref=thibaultmilan.com)
- [AWS Launches Kiro, A Specification-Driven Agentic IDE - Forbes](https://www.forbes.com/sites/janakirammsv/2025/07/15/aws-launches-kiro-a-specification-driven-agentic-ide/?ref=thibaultmilan.com)
- [AWS IDE that doesn't suck - by Pierre Tomasina - Substack](https://dev3o.substack.com/p/aws-ide-that-doesnt-suck)
- [Kiro and the future of AI spec-driven software development - Kiro](https://kiro.dev/blog/kiro-and-the-future-of-software-development/?ref=thibaultmilan.com)
### Accessibility Isn’t Optional Anymore: What the European Accessibility Act Means for Your Digital Business
URL: https://thibaultmilan.com/accessibility-isn-t-optional-anymore-what-the-european-accessibility-act-means-for-your-digital-business/
Last updated: 2025-07-07T20:30:27.000Z
If you’re running a digital business in Europe and still treating accessibility as a “nice to have,” it’s time to wake up. The European Accessibility Act (EAA) is about to make digital inclusion a legal baseline—and, frankly, it’s overdue[1](#fn:1)[2](#fn:2).
## Context: Why the EAA Exists and Who It Affects
Let’s get straight to the point: the EAA is not another layer of bureaucratic red tape. It’s the EU’s answer to a fragmented accessibility landscape where every country had its own rules (or, let’s be honest, sometimes no rules at all). The EAA harmonizes requirements across the EU, making life easier for businesses that want to operate across borders—and much better for the 87 million Europeans with disabilities[1](#fn:1). If your business has more than 10 employees or turns over more than €2 million a year, you’re in scope. E-commerce, banking, media, e-books, and public transport services are all on the list[2](#fn:2).
The compliance deadline? Well, that ship has sailed: 28 June 2025\. If your digital products and services are still inaccessible, you’re now officially on the wrong side of the law—not just public opinion[1](#fn:1).
## What “Accessible” Really Means (Spoiler: It’s Not a Widget)
Accessibility is about making sure everyone can use your site or app—regardless of ability, device, or context. The EAA leans heavily on the POUR principles: Perceivable, Operable, Understandable, Robust[3](#fn:3)[4](#fn:4). In practice, this means everything from sufficient color contrast and keyboard navigation to clear error messages and compatibility with assistive technology.
Let’s address the elephant in the room: accessibility widgets. Yes, they promise compliance with a single line of code. No, they don’t actually deliver. Most widgets are lipstick on a pig—superficial fixes that don’t address the underlying issues. Real accessibility is built into your design and code from the outset, not tacked on as an afterthought[3](#fn:3).
## Why You Need Real Experts (and Not Just More Tools)
Here’s the uncomfortable truth: you can’t automate your way to accessibility. Automated tools can flag some issues, but they miss nuance, context, and, sometimes, the actual user experience[3](#fn:3). That’s why the smartest companies are hiring UX and accessibility experts—people who know the Web Content Accessibility Guidelines (WCAG), EN 301 549, and, crucially, how humans actually interact with digital products.
A good accessibility consultant will audit your site, identify the gaps, and help you build a realistic, prioritized roadmap for compliance. It’s not always cheap, but it’s a sound investment—one that protects you from lawsuits, opens up new markets, and, not for nothing, makes you a better digital citizen.
## The Business Case: Beyond Compliance
If the threat of fines isn’t enough to motivate you, consider this: accessible design improves user experience for everyone. Older users, people with temporary injuries, anyone using a phone in bright sunlight—all benefit from accessible digital products[3](#fn:3). Plus, you’ll expand your potential market and enhance your brand reputation. Accessibility is simply good business.
If you’re not sure where to start—or you’ve just realized your “quick fix” isn’t cutting it—drop me a line. I help businesses turn accessibility from a headache into a strategic advantage. Let’s make your digital products work for everyone (and keep you out of legal hot water). Ready to get serious? Contact me and let’s talk about your accessibility project.
## Bottom Line
Accessibility isn’t just a checkbox or a last-minute scramble before the EAA deadline. It’s a process, a mindset, and now, a legal requirement. Treat it as a core part of your product strategy—not an afterthought—and you’ll be better off for it. If you’re still relying on widgets or hoping to fly under the radar, it’s time for a reality check. The future is accessible—by law and by design.
---
---
[European Accessibility Act - Wikipedia](https://en.wikipedia.org/wiki/European%5FAccessibility%5FAct?ref=thibaultmilan.com) [↩](#fnref:1)[↩](#fnref2:1)[↩](#fnref3:1)
[European Accessibility Act - European Commission](https://commission.europa.eu/strategy-and-policy/policies/justice-and-fundamental-rights/disability/union-equality-strategy-rights-persons-disabilities-2021-2030/european-accessibility-act%5Fen?ref=thibaultmilan.com) [↩](#fnref:2)[↩](#fnref2:2)
[Introduction to Web Accessibility - W3C Web Accessibility Initiative](https://www.w3.org/WAI/fundamentals/accessibility-intro/?ref=thibaultmilan.com) [↩](#fnref:3)[↩](#fnref2:3)[↩](#fnref3:3)[↩](#fnref4:3)
[How the European Accessibility Act (EAA) impacts asset managers - Deloitte Luxembourg](https://www.deloitte.com/lu/en/Industries/investment-management/perspectives/how-the-european-accessibility-act-eaa-impacts-asset-managers.html?ref=thibaultmilan.com) [↩](#fnref:4)
### Shipping Fast(er): How I Used Claude Code to Release Chrome Webhook Extension 2.0
URL: https://thibaultmilan.com/shipping-faster-how-i-used-claude-code-to-release-chrome-webhook-extension-20/
Last updated: 2025-06-28T14:20:37.000Z
## A Tale of Side Projects and Speed
There’s a unique satisfaction in shipping something you built for yourself. That feeling gets even better when you manage to revive a side project after a long pause—and ship not just a fix, but a full version bump.
This post is about [Chrome Webhook Extension](https://github.com/clawfire/chrome-webhook-extension?ref=thibaultmilan.com), a small tool I first wrote to make it easier to send browser data to a webhook (like a Discord channel, a Notion automation, or anything you can connect). It sat untouched for a while—until I decided to pick it up again with the help of Claude Code, an AI-powered coding agent. The result? A productive two-day burst that gave life to version 1.2 and then, less than 24 hours later, version 2.0.
Here’s what changed, and how AI helped me build faster.
## What’s New in v2.0
If you were using the extension before, you might not notice radical UI changes—but under the hood, v2.0 introduces a more robust foundation and thoughtful improvements to workflows. Here’s a quick breakdown:
- **Webhook test mode**: You can now test your webhook without sending real data. Super handy for debugging.
- **Improved error handling**: Webhook requests now catch and display error messages more transparently.
- **Cleaner UI alignment**: Better alignment and spacing across popup views.
- **Code refactoring**: The codebase is cleaner and easier to maintain, especially around popup logic and validation.
- **Safer UX**: Edge cases are now handled more gracefully when URLs or payloads are missing.
You can find the full release notes for [v2.0 here](https://github.com/clawfire/chrome-webhook-extension/releases/tag/v2.0.0?ref=thibaultmilan.com), and [v1.2 here](https://github.com/clawfire/chrome-webhook-extension/releases/tag/v1.2?ref=thibaultmilan.com).


## Working With Claude Code: The Real Productivity Boost
Both the 1.2 and 2.0 versions were built using **Claude Code**, a development assistant built on top of Anthropic’s Claude 3.5 family. I primarily used **Claude 3.5 Haiku**, with some calls handled by **Sonnet** and **Opus**, depending on the complexity of the task. But most of the time, I didn’t have to choose—Claude Code’s agent handled that.
Here’s a fun stat:
- **v1.2** took me **1h15** to build — and cost me **\\$3.02** of tokens
- **v2.0** took me **1h40** — and cost me **\\$4.63** of tokens
That’s under 3 hours total for two solid updates to a production-ready extension, at a price point that’s cheaper than a decent lunch. What’s more interesting is *how much* Claude Code actually handled:
- Debugging issues I had previously written (but not committed yet)
- Suggesting clearer code structures overall
- Reworking event listener placement and associated logic
- Managing edge use cases and improving input sanitisation
- Handling a complete UX refactoring, moving from basic to polished while keeping PureCSS
- Helping draft the release notes and Chrome Web Store description
- Writing the GitHub logic to treat issues as a lightweight support ticketing system
In short: it felt like having a reliable mid-level dev on my team—one that needed some oversight, but consistently offered solid structure, relevant suggestions, and kept things moving forward. Definitely not junior-level like what IDE autocomplete or tools like Lovable tend to provide.
## Making Side Projects Realistic Again
Before this update, this extension had been sitting mostly untouched. Like many devs, I have a backlog of ideas or half-finished tools that I *want* to complete but can’t justify sinking hours into after work. But pairing with Claude Code made the time investment feel much more feasible:
- The feedback loop is *fast*. Ask, try, tweak, ship.
- It doesn't get stuck or tired—or need you to write full spec docs.
- It helps re-enter old codebases by explaining and cleaning up context.
- It can even execute bash instructions, with per-command approval or predefined permission scopes. I let it handle `git commit`, `push`, and `pull`, but kept `tag` and `rebase` under manual control.
- This means it doesn’t just write code—it can ship the whole cycle if you let it.
What would have taken a full weekend of grumbling and Googling ended up being an evening project with real output.
## What’s Next?
I’m planning a few more internal improvements, and maybe support for templating common payloads. But what really excites me is diving deeper into what Claude Code can do. I haven’t even tried connecting it to tools via the MCP protocol yet—imagine it working on my database, managing Netlify functions, or integrating directly with other cloud-native services.
There’s a lot more I want to explore, and I’ll definitely share if it turns into something interesting.
If you try it and have feedback, [open an issue](https://github.com/clawfire/chrome-webhook-extension/issues?ref=thibaultmilan.com) or ping me.
## Final Thoughts
If you’re juggling a busy schedule and a drawer full of side projects, consider giving Claude Code or a similar AI dev tool a try. It won’t *replace* your judgement, but it will absolutely make it easier to get over the hump and just ship.
🔗 [Chrome Webhook Extension on Chrome Web Store](https://chromewebstore.google.com/detail/webhook-manager/bgmeeebkokmefcfafnhfjgbemifefbno?ref=thibaultmilan.com)
🔗 [Chrome Webhook Extension on GitHub](https://github.com/clawfire/chrome-webhook-extension?ref=thibaultmilan.com)
📦 [Download v2.0](https://github.com/clawfire/chrome-webhook-extension/releases/tag/v2.0.0?ref=thibaultmilan.com)
### Chrome Webhook Manager
URL: https://thibaultmilan.com/projects/chrome-webhook-manager/
Last updated: 2025-09-22T11:27:52.000Z
## The Challenge
Side projects often suffer from the time investment dilemma—you have great ideas for tools you'd use personally, but can't justify sinking hours into development after work. The Chrome Webhook Extension sat untouched for months, representing this exact challenge until AI-assisted development changed the equation.
## What the Extension Does
Chrome Webhook Manager simplifies sending browser data to webhook endpoints, making it easy to integrate web browsing with:
- **Discord channels** for notifications and logging
- **Notion automations** for content management
- **Custom APIs** and webhook-enabled services
- **Development workflows** requiring browser data capture
- **Monitoring and analytics** systems
## Version 2.0: AI-Powered Evolution
Working with Claude Code, I shipped two major updates in rapid succession:
### Key Features Delivered
- **Webhook test mode** \- Debug without sending real data
- **Enhanced error handling** \- Transparent error messages for failed requests
- **Improved UI alignment** \- Better spacing and visual hierarchy
- **Code refactoring** \- Cleaner, maintainable codebase
- **Safer UX** \- Graceful handling of edge cases with missing URLs or payloads
- **Input validation** \- Robust sanitization and validation logic
## AI-Assisted Development Metrics
The development process showcased the power of AI collaboration:
### Version 1.2
- **Development time**: 1 hour 15 minutes
- **Cost**: $3.02 in AI tokens
- **Scope**: Bug fixes and core improvements
### Version 2.0
- **Development time**: 1 hour 40 minutes
- **Cost**: $4.63 in AI tokens
- **Scope**: Major refactoring and new features
**Total**: Under 3 hours for two production releases, cheaper than a decent lunch.
## Claude Code as Development Partner
The AI assistant functioned like a reliable mid-level developer, handling:
- **Code structure suggestions** and architectural improvements
- **Event listener optimization** and logic refactoring
- **Edge case management** and input sanitization
- **UX refactoring** while maintaining PureCSS framework
- **Documentation creation** including release notes and store descriptions
- **GitHub integration** setup for issue-based support system
- **Git operations** with configurable permission scopes
## Technical Innovation
### Architecture Improvements
- **Modular popup logic** with cleaner separation of concerns
- **Robust error boundaries** preventing crashes on malformed data
- **Optimized event handling** reducing memory footprint
- **Validation pipeline** ensuring data integrity before transmission
### Development Workflow
- **Fast feedback loops** \- Ask, try, tweak, ship
- **Context preservation** \- AI helps re-enter old codebases
- **Automated workflows** \- AI handles git operations with approval
- **End-to-end assistance** \- From code to deployment
## Production Impact
### User Experience
- **Simplified webhook integration** removing technical barriers
- **Reliable data transmission** with comprehensive error handling
- **Intuitive interface** reducing learning curve
- **Test capabilities** enabling safe configuration
### Developer Experience
- **Reduced development time** by 70%+ compared to traditional methods
- **Lower barrier to side project completion**
- **Sustainable maintenance** through cleaner code architecture
- **Rapid iteration capabilities** for feature development
## Market Position
The extension fills a gap in the Chrome Web Store for accessible webhook tools:
\* Most alternatives are either too complex or too limited
\* Combines simplicity with power for technical and non-technical users
\* Open source development model encourages community contribution
\* Pay-per-use AI development keeps costs minimal
## Future Roadmap
Planned enhancements leveraging continued AI collaboration:
### Short-term Goals
- **Payload templating** for common use cases
- **Batch operations** for multiple webhook destinations
- **Advanced authentication** for secured endpoints
- **Response handling** and acknowledgment features
### Long-term Vision
- **MCP protocol integration** for enhanced AI tool connectivity
- **Database connectivity** for advanced data workflows
- **Cloud service integrations** (Netlify, AWS, etc.)
- **Multi-platform support** beyond Chrome
## Open Source Impact
### Community Benefits
- **Transparent development** with public GitHub repository
- **Educational resource** demonstrating AI-assisted development
- **Contribution opportunities** for developers worldwide
- **Issue-based support** creating lightweight ticketing system
### Industry Influence
- **AI development methodology** showcasing practical applications
- **Cost-effective shipping** proving viability of AI-assisted projects
- **Sustainable side projects** making personal tools financially viable
## Lessons Learned
### AI Partnership Insights
- AI excels at structure and suggestions, requires human oversight for judgment
- Development speed increases dramatically with proper AI integration
- Cost barriers to personal projects essentially eliminated
- Quality remains high when AI handles repetitive and structural tasks
### Business Model Innovation
- **Micro-budget development** enables rapid experimentation
- **Personal tools** can become community resources efficiently
- **Open source + AI** creates sustainable development cycles
- **Side project revival** becomes economically feasible
The Chrome Webhook Manager represents more than just a browser extension—it demonstrates how AI-assisted development can make personal productivity tools both affordable to build and valuable to share.
**Links:**
\- [Chrome Web Store](https://chromewebstore.google.com/detail/webhook-manager/bgmeeebkokmefcfafnhfjgbemifefbno?ref=thibaultmilan.com)
\- [GitHub Repository](https://github.com/clawfire/chrome-webhook-extension?ref=thibaultmilan.com)
\- [Latest Release](https://github.com/clawfire/chrome-webhook-extension/releases/tag/v2.0.0?ref=thibaultmilan.com)
### Automate Netlify Rebuilds Using GitHub Actions
URL: https://thibaultmilan.com/automate-netlify-rebuilds-using-github-actions/
Last updated: 2025-06-22T18:01:38.000Z
Static site generators like Jekyll or Eleventy support scheduling content via the `date:` field in the YAML frontmatter. But these future-dated posts won’t appear on your site unless it’s rebuilt — and Netlify only rebuilds when a new commit is pushed.
This can be a problem when you're scheduling posts for the future: unless something triggers a new build on the right day, those posts won't go live.
## Why an automated (but smart) rebuild?
Rebuilding the site every day is one option, but that can quickly consume your **300 monthly build minutes** on Netlify's free tier. If a rebuild takes \~4 minutes, a daily schedule eats up 40% of your budget.
The smarter approach? **Only rebuild when a post is actually due.**
## 🧠 The smarter strategy: conditional scheduling
Here’s how the workflow works:
1. On each commit that modifies a Markdown file, GitHub Actions checks if a future `date:` is present in the file (even if it's in full ISO 8601 format).
2. If it finds one, the next scheduled date is extracted and saved into a `next-build.txt` file.
3. Instead of committing this file (which would trigger a Netlify rebuild), it’s stored as a **GitHub artifact**.
4. A lightweight scheduled workflow runs daily, downloads the artifact, and checks whether today matches the date.
5. If it matches, it triggers a Netlify build via webhook.
### 🔧 Netlify: Setup a build webhook
1. Go to your Netlify site dashboard.
2. Navigate to **Site settings > Build & deploy > Build hooks**.
3. Click **Add build hook**, give it a name (e.g. “Scheduled rebuild”), and choose your deploy branch (e.g. `main`).
4. Copy the webhook URL and save it as a GitHub secret named `NETLIFY_BUILD_HOOK`.
---
## Workflow 1: Detect future dates (on push)
```yaml
name: Prepare next Netlify build date
on:
push:
paths:
- "_posts/**.md"
jobs:
extract-next-build-date:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Extract future post date
run: |
TODAY=$(date '+%Y-%m-%d')
FUTURE_DATES=()
for FILE in $(git diff --name-only HEAD^ HEAD | grep '\.md$'); do
[ -f "$FILE" ] || continue
POST_DATE=$(grep '^date:' "$FILE" | head -n1 | sed -E 's/date: *"?([0-9]{4}-[0-9]{2}-[0-9]{2}).*/\1/')
if [[ "$POST_DATE" > "$TODAY" ]]; then
FUTURE_DATES+=("$POST_DATE")
fi
done
if [ ${#FUTURE_DATES[@]} -gt 0 ]; then
NEXT_DATE=$(printf "%s\n" "${FUTURE_DATES[@]}" | sort | head -n1)
echo "$NEXT_DATE" > next-build.txt
else
echo "none" > next-build.txt
fi
- name: Upload next build date
uses: actions/upload-artifact@v4
with:
name: next-build
path: next-build.txt
````
## Workflow 2: Daily check and trigger
```yaml
name: Trigger Netlify build if today matches
on:
schedule:
- cron: '5 0 * * *'
workflow_dispatch:
jobs:
check-and-trigger:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download next build date
uses: actions/download-artifact@v4
with:
name: next-build
path: .
- name: Trigger build if date matches
run: |
if [ ! -f next-build.txt ]; then
echo "No next-build.txt found"
exit 0
fi
NEXT=$(cat next-build.txt)
TODAY=$(date '+%Y-%m-%d')
if [ "$NEXT" == "none" ]; then
echo "No build scheduled."
exit 0
fi
if [ "$NEXT" == "$TODAY" ]; then
echo "✅ Triggering Netlify build for today."
curl -X POST -d '{}' "${{ secrets.NETLIFY_BUILD_HOOK }}"
else
echo "⏳ Not today. Next scheduled build is $NEXT."
```
## 🧾 Final result
This setup ensures your Netlify site only rebuilds when a scheduled post becomes due. It:
- ⚡ Avoids unnecessary builds or dummy commits
- 🧠 Respects Netlify’s build time budget
- 🧼 Keeps your repo clean and logic isolated
---
💡 This can be extended to multi-site, multi-branch setups, or even date queues using more advanced scheduling logic. But for a simple editorial workflow, it’s more than enough.
Photo by [Tai Bui](https://unsplash.com/fr/@agforl24?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash) on [Unsplash](https://unsplash.com/fr/photos/un-ecran-dordinateur-pose-sur-un-bureau-IMYU7kmPLwI?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash)
### Table ronde « Confiance et IA : opportunités pour les entreprises »
URL: https://thibaultmilan.com/talks/table-ronde-confiance-et-ia-quelles-opportunites-pour-vos-entreprises/
Last updated: 2025-06-03T07:00:00.000Z
Le 13 juin 2025, j’aurai le plaisir d’intervenir lors de l’événement IA-NA à La Rochelle, une journée entièrement dédiée à l’intelligence artificielle et à la data. Cette édition mettra en lumière le thème central de la confiance dans l’IA et les opportunités concrètes pour les entreprises.
Je participerai à une table ronde intitulée « Confiance et IA : quelles opportunités pour vos entreprises ? », organisée dans le parcours « Perfectionnement, pour structurer une Stratégie Data et IA ». Ce rendez-vous s’adresse aux dirigeants, décideurs et innovateurs souhaitant approfondir leur compréhension des enjeux liés à l’IA et à la gestion des données.
## Déroulé de la matinée :
**09h00 – 09h30**
Accueil & Café de bienvenue
**09h30 – 09h45**
Ouverture officielle de l’événement
**09h45 – 10h30**
Keynote d’ouverture
Intervention inspirante sur l’IA au service de la performance et de l’avenir des entreprises
**10h30 – 11h00**
Pause networking
**11h00 – 12h15**
**Table ronde : « Confiance et IA : quelles opportunités pour vos entreprises ? »**
Je participerai à cette table ronde aux côtés de plusieurs experts du secteur, pour échanger autour des grands enjeux de l’IA en entreprise, de la confiance à la mise en œuvre concrète.
### Thématiques abordées :
- Comment évaluer la maturité de son organisation vis-à-vis de l’IA et identifier les opportunités ?
- Quels sont les critères de réussite et les différentes formes d’IA possibles ?
- Quelles difficultés rencontre-t-on encore aujourd’hui en R&D ?
- Comment s’assurer de faire les bons choix stratégiques et quelles en sont les conséquences ?
- L’IA, ce n’est pas qu’une question technologique : comment évoluent les métiers ?
- Quelles compétences mobiliser et comment s’entourer des bonnes expertises ?
- Quels sont les cadres réglementaires et éthiques à respecter ?
- Comment se prémunir des mauvais usages et quelles données sont réellement utiles ?
La session se terminera par 10 minutes de questions/réponses avec le public.
## Pourquoi participer ?
Cet événement est une occasion unique de bénéficier de retours d’expérience variés, d’échanger avec des experts du secteur et de repartir avec des clés pour bâtir une stratégie IA solide et responsable.
## Infos pratiques :
**Date :** 13 juin 2025
**Lieu :** Université de La Rochelle – Plus d’infos sur l’événement
**Créneau de la table ronde :** 11h00 – 12h15
J’ai hâte de partager ma vision et d’échanger avec vous sur les enjeux de la confiance et de l’IA pour les entreprises !
### OpenAI MCP Server Integration: A New Era in AI
URL: https://thibaultmilan.com/openai-mcp-server-integration-a-new-era-in-ai/
Last updated: 2025-05-27T12:38:02.000Z
The AI landscape is evolving fast—and today, OpenAI’s MCP (Model Context Protocol) server integration is opening the door to a whole new era of flexibility and interoperability. Whether you’re a tech company, a travel agency, or a SaaS provider, this is a shift you can’t afford to ignore.
But as with any powerful new tool, it’s not just about what you can do—it’s about doing it right, and doing it securely.
Let’s break down what MCP server integration means for you, why it’s such a big deal, and what you need to keep in mind as you explore this new world.
## What is the MCP Server Integration?
At its core, MCP server integration lets you connect OpenAI’s models directly to external APIs, tools, and databases. This means your AI can fetch real-time data, trigger actions, and automate complex workflows—without clunky workarounds or manual steps.
But here’s the best part: you don’t have to build the AI logic itself. Instead, you focus on exposing your service through a standardized API, and the AI handles the rest.
## How Does It Work?
Integrating with the MCP server involves a few essential steps:
1. **Design and Expose a Well-Described API:**
Create an API in a specific format so OpenAI’s models can automatically discover and understand your available operations. Every endpoint—what it does, what it needs, and what it returns—must be clearly described for seamless interaction.
2. **Integrate Security from the Start:**
Build in robust authentication, define who can access which resources, and ensure all sensitive operations are protected. Security isn’t an afterthought—it's a core part of your API design.
3. **Connect and Configure:**
Once your API and security layers are ready, add your MCP server (including authentication details) to the configuration of your OpenAI API call. This tells OpenAI where to find your server and how to interact with it securely.
From there, your service is ready to be used by any compatible AI assistant—present or future.
## Real-World Use Case: Effortless Conversational Travel Planning
Imagine this as a traveler:
You simply talk to your AI assistant—over the phone or in chat—and say,
"*I want to book a trip to Berlin next weekend. Find me the best train or flight, a hotel in the city center, and tickets for a museum and a concert.*"
The AI does everything:
- Finds and books your transport.
- Reserves your hotel.
- Buys activity tickets.
- Organizes your itinerary and sends reminders.
**For companies, this is a game-changer:**
You don’t need to build or maintain the AI “brain.” Just expose your service as a standardized API (following the MCP specification), describe your operations, and integrate security.
Now, any AI assistant can discover your API, understand how to interact with it, and offer your services to users—without you having to create a custom integration for every AI platform out there.
This means your business is instantly accessible to a new generation of users who expect to interact with services naturally, through conversation—not by filling out endless forms or navigating multiple websites.
## The Exciting Part: Interoperability and Future-Proof Flexibility
Here’s what truly sets MCP server integration apart:
**Companies no longer need to build and maintain dozens of separate integrations for every AI platform or assistant on the market**. Instead, you simply expose your services through a standardized API, and any compatible AI—now or in the future—can discover, understand, and interact with your offering automatically.
This means:
- **No more one-off integrations:** Build your API once, and you’re ready for any AI your customers choose, from OpenAI to whatever comes next.
- **Seamless interoperability:** Your service becomes instantly accessible to a broad ecosystem of AI assistants, apps, and platforms.
- **Regulatory alignment:** This standardized, open approach is exactly what regulatory authorities have been asking for—greater transparency, portability, and user control over how data and services interact.
In short: MCP server integration isn’t just a technical upgrade—it’s a strategic move that future-proofs your business, reduces integration headaches, and positions you at the forefront of the next wave of AI-powered user experiences.
## But Wait—Let’s Talk About Security
MCP server integration is powerful, but it comes with important security responsibilities. As OpenAI puts it:
> “The MCP tool permits you to connect OpenAI to services that have not been verified by OpenAI and allows OpenAI to access, send and receive data, and take action in these services. All MCP servers are third-party services that are subject to their own terms and conditions.”
### What does this mean for you?
- **If you’re using an ‘off-the-shelf’ MCP server:** Always connect to official servers hosted by the service providers themselves (e.g., Stripe’s official MCP server). If you use a third-party or aggregator, do your due diligence and understand how they handle your data.
- **If you’re building your own:** Ensure robust authentication, access controls, and careful API design from the start.
Always review what data you’re sharing, log interactions, and periodically check how your data is being used. OpenAI has built-in safeguards, but as with any powerful tool, a little extra vigilance goes a long way.
## Getting Started
Ready to explore? Here’s what to do next:
1. **Read the [official OpenAI MCP documentation](https://platform.openai.com/docs/guides/tools-remote-mcp?ref=thibaultmilan.com)** for setup details and best practices.
2. **Identify workflows** in your business that could benefit from AI-powered automation or real-time data access.
3. **Start small:** Test with trusted, official servers and review all data flows before scaling up.
4. **Stay vigilant:** Keep security and privacy top of mind as you build.
## Final Thoughts
As someone who’s passionate about making AI practical and accessible for real businesses, I see MCP server integration as a huge leap forward. It’s a chance to build smarter, more responsive, and truly customized solutions—without reinventing the wheel or locking yourself into a single AI ecosystem.
**Just remember:** With great flexibility comes great responsibility. Be excited, but be smart.
If you’re curious how this could fit into your business or want to brainstorm ideas, feel free to reach out or drop a comment below!
---
Photo by [Igor Omilaev](https://unsplash.com/fr/@omilaev?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash) on [Unsplash](https://unsplash.com/fr/photos/une-enseigne-au-neon-qui-se-trouve-sur-le-cote-dun-mur-9XtKSci9crg?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash)
### Exploring Ecosystem Partnerships
URL: https://thibaultmilan.com/talks/exploring-ecosystem-partnerships/
Last updated: 2025-05-15T06:45:00.000Z
Last week, I had the opportunity to host a table at a Luxembourg Open Innovation Club (LOIC) event, where I shared my experience on driving innovation through startup collaboration. LOIC brings together corporates, startups, and research partners to foster open innovation across sectors in Luxembourg.
The session began with Peter Räke from Encevo Group, who provided valuable insights into decision-making strategies—specifically, when to build, buy, or collaborate. This set the stage for breakout discussions on four key partnership types: networks, calls for projects/research, startup collaboration, and corporate venturing.
At my table, I focused on the unique dynamics of working with startups:
How corporates can effectively engage with early-stage companies to accelerate innovation and bring fresh perspectives.
The importance of building trust, setting clear expectations, and creating win-win scenarios for both startups and established organizations.
Real-world challenges, such as aligning timelines and managing risk, and how to overcome them through transparent communication and agile processes.
We also discussed how leveraging networks like the Enterprise Europe Network (EEN) can enhance technology sourcing and partnership opportunities.
My main takeaway: open innovation thrives on diverse perspectives and strong partnerships. By working closely with startups, corporates can stay agile, experiment with new ideas, and drive meaningful business transformation.
If you’re interested in learning more about open innovation or how to foster successful startup collaborations, feel free to reach out!
### The hidden cost of "cheap ease
URL: https://thibaultmilan.com/the-hidden-cost-of-cheap-ease/
Last updated: 2025-05-01T12:06:30.000Z
While reading the editorial of *[Friends of Dense Discovery #335](https://www.densediscovery.com/issues/335?ref=thibaultmilan.com)*, where Kai shared his experience trying to order a pizza from a local restaurant—only to discover the delivery was outsourced to a service like DoorDash—I couldn’t help but reflect on the broader implications of our reliance on these platforms. This reflection deepened as I revisited Anne Helen Petersen’s article, "*The Gig Economy Is a Trap.*"
---
The gig economy promises us convenience: just a few clicks, and life feels a little easier. But have you ever stopped to think about what it really costs?
Anne Helen Petersen sums it up perfectly: this business model thrives on making things cheap and fast for consumers, but it does so by taking a big cut from workers and classifying them as "independent contractors." No benefits, no protections, no stability.
Economist David Weil calls this the "**fissured workplace**"—a system where the pursuit of convenience and low prices comes at the expense of workers’ rights and the quality of the service itself.
## Blame the System, Not the Worker
When something goes wrong—a delayed delivery, a bad experience—what’s the first thing we do? We blame the worker.
We call them lazy, unmotivated, or rude. But the truth is, the system sets them up to fail. It prioritizes speed and profit over fairness and quality, and then leaves workers to take the heat when things fall apart.
## Why Do We Keep Using These Services?
Here’s the hard truth: we rely on these exploitative systems because we’re stuck in the same economy that created them.
We’ve been conditioned to believe our time should always be spent working or recovering from work. Tasks like helping a friend build furniture or shopping in person now feel like luxuries we can’t afford. So, we turn to convenience—not because we want to, but because we feel like we have to.
And as a society, we’ve decided we want **more for less**:
- More convenience.
- More technology.
- More stuff.
But none of it at prices that feel out of reach. The problem? Making something cheaper and more accessible almost always makes it worse—for the workers, for the product, and for us.
## How Do We Break the Cycle?
If we want better services, fairer workplaces, and a more sustainable economy, we need to stop blaming individuals and start questioning the systems.
It’s not an easy shift, but it starts with small choices:
- Supporting businesses that treat workers fairly.
- Reflecting on our own habits and choosing quality over convenience when we can.
- Pushing for systemic changes that protect workers and create sustainable business models.
Convenience isn’t inherently bad, but the way it’s built today often is. If we want a better future, we need to rethink how we consume—and how we value the people behind the services we rely on.
What do you think? How do you balance convenience with fairness in your own life?
---
Picture from [Precious Madubuike](https://unsplash.com/fr/@preciousm?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash) on [Unsplash](https://unsplash.com/fr/photos/une-personne-a-velo-avec-un-sac-sur-le-dos-Qbg83NW14Qg?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash)
### Why I’m Dedicating 1% of My Revenue to Carbon Elimination 🌍
URL: https://thibaultmilan.com/i-m-dedicating-1-revenue-carbon-elimination/
Last updated: 2025-04-21T16:29:28.000Z
For me, sustainability isn’t just a buzzword—it’s a deeply personal commitment. Since **2022**, I’ve been supporting **Direct Carbon Capture (DCC)** technologies as part of my individual efforts to combat climate change. Now, I’m proud to reflect this engagement in my professional work by dedicating **1% of all my business revenue to carbon elimination**, in partnership with [Stripe Climate](https://climate.stripe.com/pUhGw6?ref=thibaultmilan.com).
## Why Carbon Removal Matters to Me
The fight against climate change is one of the defining challenges of our time. I’ve always believed that everyone has a role to play, and for me, that started with supporting DCC—a technology that directly captures CO2 from the atmosphere and stores it safely.
DCC represents innovation at its best: using cutting-edge science to tackle a global problem. As someone who works in tech and innovation, I’m inspired by its potential to create a sustainable future.
## Extending My Commitment to My Business
This personal commitment has naturally influenced my professional approach. By allocating **1% of my revenue to Stripe Climate**, I’m ensuring that every project I take on contributes to meaningful climate action. Whether it’s a WordPress website, AI consulting, or 3D modeling, my clients can know that their projects are part of a larger mission to reduce CO2 levels.
## Sustainability Beyond Business
My engagement doesn’t stop there. Since **2024**, I’ve worked to ensure that my non-profit projects are fully carbon neutral, covering:
- **Travel and accommodation** for artists and performers.
- **Printed materials** for events and campaigns.
These efforts reflect my belief that sustainability should permeate all aspects of life—professional, personal, and community-driven.
## Join Me in This Journey
I share this journey not just to inform, but to inspire. If you’re curious about DCC, Stripe Climate, or ways to integrate sustainability into your work, I’d love to connect. Together, we can amplify our impact and create a future we’re proud of.
🌱 Learn more about the initiative: [Stripe Climate](https://climate.stripe.com/pUhGw6?ref=thibaultmilan.com)
### Automating Context Reminders Before Meetings (When You're Managing 15 Projects with an ADHD Brain)
URL: https://thibaultmilan.com/automatiser-les-rappels-avant-les-reunions-efficaces/
Last updated: 2025-04-13T13:39:07.000Z
As a neurodivergent person with an **ADHD profile**, one of my biggest challenges at work isn't skill or motivation — it's **managing attention and cognitive load**.
Each week, I juggle **over fifteen different projects**, spread across multiple clients and agencies. Even when I’ve prepared my meetings in advance, I often find myself wondering at the last minute:
> “What was that meeting about again? Did I forget something critical? Was I supposed to bring something?”
This need for **last-minute contextual reassurance** is common among people with ADHD: even when everything is in place, the brain seeks to reassemble key details just before an interaction to feel secure. When repeated 5 to 10 times a day, this becomes a serious productivity drain.
👉 If you’re interested in broader strategies for managing meetings with ADHD, I also wrote about that here: [Mindful meeting management: planning meetings with ADHD](https://thibaultmilan.com/blog/2024/11/21/mindful-meeting-management-planning-meeting-with-adhd/)
## 🤖 Automating Away the Friction
Rather than creating more reminders or to-dos for myself, I built a small **automated workflow using n8n**.
It helps **relieve the mental load** of having to chase context manually.
## 🎯 The Goal
> Automatically send a short message to the organizer of meetings **without a description**, **where I’m just a participant**, the **day before** the meeting.
## ⚙️ How It Works
[](https://thibaultmilan.com/img/2025/04/Screenshot-2025-04-13-16.37.47.png)
Here’s how the **n8n workflow** is structured:
**Trigger every morning at 7:30am**
→ To scan for the next day’s meetings.
**Read my Google Calendar**
→ Retrieve all events between tomorrow 00:00 and 23:59.
**Smart Filtering**
→ Keep only meetings:
\- where I’m **not the organizer**,
\- that are **non-recurring** (to avoid weekly check-ins),
\- that have **no description** (since the description usually provides enough context).
**Send an automatic email to the organizer**
→ Politely asking for a bit of context if it hasn’t been shared yet.
**Send a Telegram notification to myself**
→ So I know the message went out.
## 📧 Sample Email Sent
Here's the automated message my colleagues receive:
```html
Hi there 👋🏻
🤖 I'm Thibault’s friendly email bot, reaching out to gather a bit of context about our upcoming meeting — it seems there’s no description provided.
If the title is self-explanatory, feel free to ignore this message. But if it’s just a project or client name, a short overview would be super helpful 🙏
Thibault is currently juggling meetings across ~15 different clients for various agencies, so a quick reminder of what this one’s about would make his prep much smoother ✨
Thanks a lot in advance!
– Thibault’s email automation bot 🤖
```
## 🎁 Benefits
- ✅ Less mental overhead
- ✅ Lower risk of forgetting something important
- ✅ No more procrastination about reaching out
- ✅ Better mental readiness for meetings
## 💡 What About You?
If you’re neurodivergent — or simply juggling too much context — this kind of automation can **make a real difference in your daily comfort**.
I’d be happy to share the full n8n workflow or help you adapt it to your stack (Slack, Outlook, Notion, etc.). Feel free to reach out!
### Agent2Agent Protocol: Transforming AI Collaboration Today
URL: https://thibaultmilan.com/agent2agent-protocol-transforming-collaboration-today/
Last updated: 2025-04-12T18:35:31.000Z
# From Context to Collaboration: The Rise of Agent2Agent (A2A) Protocol
[In a recent article](https://thibaultmilan.com/blog/2025/04/12/enhancing-ai-with-mcp-servers-for-secure-interactions/), I introduced the **Model Context Protocol (MCP)** — a key advancement that allows large language models (LLMs) to securely access enterprise data and interact with tools in real time. MCP adds a layer of contextual understanding that transforms how AI systems operate within business environments.
Today, I want to explore the next logical step: collaboration between AI agents.
## Introducing the Agent2Agent Protocol (A2A)
[Announced by Google](https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/?ref=thibaultmilan.com), the **Agent2Agent (A2A) protocol** is a new open standard designed to enable seamless communication and task-sharing between AI agents. Developed with contributions from over 50 technology partners — including Atlassian, LangChain, Salesforce, SAP, and ServiceNow — [A2A](https://github.com/agentprotocol/a2a?ref=thibaultmilan.com) sets the foundation for a new era of multi-agent ecosystems.
While MCP focuses on connecting models to *context*, A2A addresses how agents *coordinate and collaborate*.
### Key Features of A2A
A2A introduces a common language and task lifecycle that enables agents to:
- **Advertise their capabilities** using JSON-based "Agent Cards"
- **Delegate and manage tasks** between agents
- **Exchange contextual messages and data artifacts**
- **Negotiate user interaction modes**, such as text, voice, or visual interfaces
The protocol is designed to be vendor-neutral, extensible, and open — ideal for enterprise environments looking to break out of platform silos.
## MCP and A2A: Better Together
These two protocols are complementary:
- **MCP** enables secure, contextual data access for AI models.
- **A2A** allows agents to collaborate and orchestrate actions across systems.
Imagine an HR onboarding assistant that securely retrieves employee data via MCP, then coordinates with IT, payroll, and facilities agents using A2A to execute the complete onboarding workflow.
This is the promise: a shift from isolated tools to intelligent ecosystems.
## Why It Matters
Today’s AI agents are often task-specific and siloed, limited in scope and unable to communicate beyond their own domain.
Protocols like A2A enable:
- Cross-platform agent collaboration
- Scalable architectures where specialized agents interact
- Multi-agent reasoning for more advanced problem-solving
We’re moving from AI tools to AI **teams**.
## Limitations and Early-Stage Considerations
As with any emerging protocol, A2A is in its early days. Adoption will require experimentation, community involvement, and likely multiple iterations. But the foundation is promising, and its open nature should accelerate innovation.
## Further Reading
If you're curious to learn more:
- [My deep dive on the Model Context Protocol (MCP)](https://thibaultmilan.com/blog/2025/04/12/enhancing-ai-with-mcp-servers-for-secure-interactions/)
- [Google’s official announcement of A2A](https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/?ref=thibaultmilan.com)
- [Agent2Agent GitHub Repository](https://github.com/agentprotocol/a2a?ref=thibaultmilan.com)
## Final Thoughts
MCP showed us how to give models context. A2A shows us how to make them collaborate.
Together, they form a powerful foundation for the future of enterprise AI — secure, contextual, and cooperative.
Have you started exploring these protocols in your own projects? I'd love to hear your thoughts.
Photo de [Shubham Dhage](https://unsplash.com/fr/@theshubhamdhage?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash) sur [Unsplash](https://unsplash.com/fr/photos/une-image-abstraite-dun-objet-en-forme-detoile-O1rxducLjN0?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash)
### Enhancing AI with MCP Servers for Secure Interactions
URL: https://thibaultmilan.com/enhancing-ai-with-mcp-servers-for-secure-interactions/
Last updated: 2025-04-12T18:05:47.000Z
The explosion of generative AI use-cases brings an essential question: **How can we enable artificial intelligence models to better understand enterprise data contexts and dynamically interact with external resources, all while ensuring security and confidentiality?**
## 🔍 What exactly is an MCP server?
The **Model Context Protocol (MCP)** is an innovative approach that allows businesses to dynamically integrate their own datasets or business contexts into AI models—like large language models (LLMs). Beyond mere data integration, MCP servers provide AI models with the ability to dynamically access and interact with external resources such as files, programs, or APIs—even those previously unknown to the model—using built-in auto-discovery mechanisms.
In short, MCP acts as an intermediary layer, enabling secure and efficient interaction not just between internal enterprise data and large language models, but also facilitating active engagement with various external tools and services.
## 🚀 Why is MCP so promising?
**Enhanced contextual accuracy:** By integrating specific, real-time data, the AI model's responses become significantly more relevant and tailored to user or business needs.
**Dynamic interactions:** Models can automatically discover and interact with external tools—such as directly manipulating Figma files—greatly expanding their applicability.
**Improved security:** Sensitive data remains within the organization's boundary, drastically reducing the risks of leaks or compromises.
**Increased flexibility:** MCP allows models to quickly adapt to various use cases or business contexts without the need for extensive training or deep AI expertise.
## ⚠️ Nuances and maturity considerations
MCP technology is still emerging and requires experimentation, refinement, and greater standardization. While the potential use-cases are promising, they're also still developing. It’s crucial to approach MCP solutions pragmatically, clearly assessing benefits against current constraints and maturity.
## 💡 Immense potential, but a long journey ahead
The possibilities offered by MCP are vast, but substantial work remains. The time to explore and experiment with MCP is now, ensuring you're prepared for tomorrow's opportunities.
Have you tested or considered using MCP servers in your AI projects?
## 🔗 Official Resources
**Introduction to Model Context Protocol:** A clear presentation of MCP's architecture and key use cases.👉 [modelcontextprotocol.io/introduction](https://modelcontextprotocol.io/introduction?ref=thibaultmilan.com)
**Complete Technical Specification:** Dive deep into the protocol's details, including primitives like tools, resources, and prompts.👉 [modelcontextprotocol.io/specification](https://modelcontextprotocol.io/specification?ref=thibaultmilan.com)
**Official GitHub Repository:** Includes SDKs (Python, TypeScript, Java, C#, Kotlin), server examples, and implementations.👉 [github.com/modelcontextprotocol](https://github.com/modelcontextprotocol?ref=thibaultmilan.com)
## 🧠 Articles and Insights
**Official Announcement by Anthropic:** An overview of MCP, its objectives, and early integrations.👉 [anthropic.com/news/model-context-protocol](https://anthropic.com/news/model-context-protocol?ref=thibaultmilan.com)
**Simplified Explanation of MCP:** An article comparing MCP to a USB-C port for AI applications, facilitating connections to diverse data sources and tools.👉 [Model Context Protocol explained simply](https://modelcontextprotocol.io/explained-simply?ref=thibaultmilan.com)
**Security Threat Analysis for MCP:** An academic study examining security risks associated with MCP usage and strategies for mitigation.👉 [arxiv.org/abs/2503.23278](https://arxiv.org/abs/2503.23278?ref=thibaultmilan.com)
Explore these resources to deepen your understanding and leverage MCP servers effectively in your AI strategies!
### Exploring the Studio Ghibli AI Phenomenon
URL: https://thibaultmilan.com/exploring-the-studio-ghibli-ai-phenomenon/
Last updated: 2025-03-29T12:04:34.000Z
The world of generative AI continues to push boundaries, and its latest playground is none other than the enchanting universe of Studio Ghibli. From breathtaking landscapes to whimsical characters, the Ghibli aesthetic has captivated millions for decades. Now, with the advent of OpenAI’s GPT-4.o image generation model, this beloved style is being reimagined in ways we’ve never seen before. But as AI tools become more sophisticated, they also bring with them a wave of ethical and creative debates.
## A New Era of Generative AI
The GPT-4.o image generation model represents a significant leap forward in AI capabilities. Unlike its predecessor, DALL·E, this new model excels in **style transfer** techniques, allowing it to mimic complex artistic styles such as Studio Ghibli’s with remarkable accuracy. It also handles intricate details and text far better, opening up new possibilities for creators.
However, this technological advancement comes with controversy. OpenAI’s shift toward more lenient content filtering, a policy change dating back to the Trump administration era, has enabled users to explore creative requests that were previously restricted. While this has unlocked exciting opportunities, it has also sparked concerns about **intellectual property infringement**—especially when it comes to recreating iconic styles like Studio Ghibli’s.
## The Role of Generative AI in the Ghibli Trend
The rise of Studio Ghibli-inspired AI art owes much to the accessibility of tools like GPT-4.o. However, it’s worth noting that access to **this model requires a pro subscription**, which raises ethical questions. Is it appropriate for companies to profit from tools that can indirectly facilitate copyright infringement, especially when they are perfectly aware of the issue? This question looms large, especially as these tools gain popularity among both professional and amateur creators.
Social media has played a pivotal role in amplifying this trend. Platforms like TikTok, Instagram, and X (formerly Twitter) have become hubs for sharing AI-generated Ghibli-style art in the last couple of days. From serene landscapes to reimagined memes, these creations have captured the imagination of millions.
## Why Did the Trend Take Off?
The sudden surge in Ghibli-inspired AI art can be attributed to several factors:
1. **Cultural Nostalgia**: Studio Ghibli’s aesthetic is universally beloved, evoking feelings of warmth, wonder, and nostalgia. This makes it a perfect candidate for reinterpretation through AI tools.
2. **Meme Culture**: The trend gained viral traction as users began reimagining popular memes in the Ghibli style. For instance, the “bro explaining” meme was turned into a whimsical Ghibli-style illustration, blending humor with nostalgia. These playful creations resonated widely, sparking a wave of similar reinterpretations.
3. **Social Media Amplification**: The trend’s visibility was supercharged by social media platforms, where creators shared their AI-generated art and engaged audiences in discussions about the process and results.
## What does Miyazaki Say?
While the trend has taken off, it’s important to consider how Studio Ghibli itself might respond. Hayao Miyazaki, the legendary co-founder of Studio Ghibli, has been an outspoken critic of generative AI. In his own words, he finds AI-generated art to be “*an insult to life itself.*” He has described such creations as *“creepy*” and “*grotesque*,” emphasizing that they lack the soul and humanity that define true art.
In interviews, Miyazaki has expressed his refusal to incorporate AI into his work, stating, “*I would never wish to incorporate this technology.*” For him, art is deeply personal and should reflect human emotions and experiences. He has also criticized the broader implications of AI, suggesting that its focus should be on solving real-world problems like curing diseases or addressing climate change, rather than replacing human creativity.
This stark opposition highlights the tension between Miyazaki’s philosophy of hand-drawn, emotionally rich art and the automated, algorithm-driven approach of generative AI.
## Ethical and Creative Implications
As the Ghibli AI trend continues to evolve, it raises important questions about the future of creativity and the role of technology in art. While generative AI can produce stunning visuals, it also challenges our understanding of authorship and originality. The line between inspiration and imitation becomes blurred, leading to debates about the ethical implications of using AI to recreate established styles.
- **Copyright Concerns**: Many argue that using AI to replicate Ghibli’s style crosses ethical boundaries, as it involves training models on copyrighted works without explicit permission.
- **Commercialization**: The fact that access to advanced AI tools requires a paid subscription has drawn criticism. Some see this as companies profiting from tools that enable potential copyright infringement.
- **Tribute or Exploitation?**: While some view the trend as a heartfelt tribute to Studio Ghibli, others see it as an exploitation of its unique artistic style. This debate underscores the need for clearer guidelines and ethical considerations in the use of generative AI.
## A Personal Take
I find the trend both fascinating and troubling.
On one hand, it’s exciting to see how technology is evolving so fast and get so good at handling concepts that were, before, only our own to manipulate. The details are now sharper and more accurate. The text, which was a long lasting battle since genAI model finally got to generate hands properly, is now perfectly handled.
On the other hand, it’s crucial to respect the original creators and ensure that these tools are used responsibly. The Ghibli aesthetic is not just a style; it’s a reflection of the values and emotions that Miyazaki and his team poured into their work. Thoses artists never agreed to have their work used in this way. OpenAI (and other companies) are exploiting the work of artists without their consent. Artists should be free to decide how their work is used, and AI-generated art should not come at the expense of their rights.
Generative AI isn’t just making it easier to replicate creative works—it’s enabling us to do so with precision and at an unprecedented scale. On the internet, reproduction rights have always been a murky area, with memes, images, and other content often reused without credit or permission. What generative AI does is amplify this issue, allowing anyone to recreate or reinterpret copyrighted works effortlessly. While this opens up exciting creative possibilities, it also raises serious concerns about the erosion of originality and respect for intellectual property. As creators, we must ask ourselves: are we honoring the art that inspires us, or are we contributing to a culture of exploitation?
P.S: I’m not a lawyer, and this is not legal advice. If you have questions about copyright or intellectual property, it’s best to consult a legal professional.
### Comment Récupérer l'Accès Administrateur à un Site WordPress
URL: https://thibaultmilan.com/comment-recuperer-lacces-administrateur-a-un-site-wordpress/
Last updated: 2025-03-15T22:48:11.000Z
Perdre l'accès administrateur à son site WordPress peut être stressant, mais plusieurs solutions existent pour le récupérer. Que ce soit via l'interface, la base de données ou des outils comme FTP, voici les étapes détaillées pour résoudre ce problème.
## 1\. Réinitialiser le mot de passe via l'URL
La première méthode, souvent la plus simple, consiste à réinitialiser le mot de passe depuis la page de connexion WordPress :
1. Rendez-vous sur la page de connexion : `https://votresite.fr/wp-admin/?action=lostpassword.`
2. Entrez votre adresse email associée au compte administrateur.
3. Suivez les instructions pour recevoir un lien de réinitialisation par email.
Cette méthode est rapide si vous avez encore accès à l'adresse email liée à votre compte. Mais bon, on ne va pas se voiler la face, si vous êtes ici à lire c'est que vous n'avez sans doute pas d'accès admin (genre on vous a piraté votre site et supprimé l'utilisateur).
## 2\. Ajouter un nouvel administrateur via PhpMyAdmin
Si vous avez accès à la base de données de votre site via PhpMyAdmin, vous pouvez créer un nouvel utilisateur administrateur :
1. Connectez-vous à PhpMyAdmin depuis votre hébergeur.
Exécutez les requêtes SQL suivantes en remplaçant les valeurs par vos informations personnelles :
``` ``sql INSERT INTO ```wp\_users`(`user\_login`,`user\_pass`,`user\_nicename`,`user\_email`,`user\_status\`)
VALUES ('nouveau\_login', MD5('nouveau\_mot\_de\_passe'), 'nom', 'email@exemple.com', '0');
INSERT INTO `wp_usermeta`(`umeta_id`, `user_id`, `meta_key`, `meta_value`)
VALUES (NULL, (SELECT MAX(ID) FROM wp\_users), 'wp\_user\_level', '10');
INSERT INTO `wp_usermeta`(`umeta_id`, `user_id`, `meta_key`, `meta_value`)
VALUES (NULL, (SELECT MAX(ID) FROM wp\_users), 'wp\_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}');
\`\`\`
Une fois les requêtes exécutées, connectez-vous avec les nouveaux identifiants.
## 3\. Créer un administrateur via FTP
Si vous avez un accès FTP à votre site, cette méthode permet de créer un compte administrateur directement dans le code :
1. Accédez au fichier `functions.php` de votre thème actif via un client FTP.
2. Ajoutez le code suivant au fichier :
`php (\$_SERVER['REMOTE_ADDR'] === 'VOTRE_ADRESSE_IP' && isset($_GET['add_admin'])) { $username = 'nouveau_admin'; $password = 'mot_de_passe'; $email = 'email@example.com'; if (!username_exists($username) && !email_exists($email)) { $user_id = wp_create_user($username, $password, $email); $user = new WP_User($user_id); $user->set_role('administrator'); echo 'Compte administrateur créé avec succès.'; } else { echo 'Le compte existe déjà.'; } die(); }`
3. Accédez à l’URL suivante : `https://votresite.fr?add_admin=true.`
## 4\. Contacter l’hébergeur
Si aucune des solutions précédentes ne fonctionne, il est temps de contacter votre hébergeur. Voici ce que vous pouvez faire :
- Demandez une restauration depuis une sauvegarde récente de votre site.
- Fournissez les informations nécessaires, comme votre nom de domaine et vos identifiants client.
## Conseils pour éviter ce problème à l’avenir
Une fois l'accès récupéré, il est essentiel de sécuriser votre site pour prévenir de futures pertes :
- **Utilisez des mots de passe forts :** Combinez lettres, chiffres et caractères spéciaux.
- **Activez l’authentification à deux facteurs (2FA) :** Cela ajoute une couche de sécurité supplémentaire.
- **Effectuez des sauvegardes régulières :** Utilisez des plugins comme UpdraftPlus ou des solutions d’hébergement intégrées.
- **Surveillez les accès :** Configurez des alertes pour détecter les connexions suspectes.
---
En suivant ces étapes, vous devriez pouvoir récupérer l'accès à votre site WordPress rapidement et efficacement. Si vous avez des questions ou besoin d’aide supplémentaire, n’hésitez pas à me contacter.
---
Photo de [Fikret tozak](https://unsplash.com/fr/@tozakfikret?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash) sur [Unsplash](https://unsplash.com/fr/photos/moniteur-allume-rfNLa1HL7eY?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash)
### Exploring AI Adoption at UX-Meet: IA Experience
URL: https://thibaultmilan.com/exploring-ai-adoption-at-ux-meet-ia-experience/
Last updated: 2025-01-09T12:35:29.000Z
# Navigating the AI Revolution: Key Insights from UX-Meet's AI Experience Conference
"*Is AI going to replace UX designers?*" The question hung in the air as I took the stage at UX-Meet's AI Experience conference. The packed room of designers, developers, and innovators waited expectantly for answers. As Innovation Director at Smile, I've witnessed firsthand the anxiety and excitement that AI brings to our industry. But what I was about to share wasn't just another AI hype story - it was a practical roadmap for companies navigating the AI revolution, learned through real experimentation and occasional failure.
My presentation, "*How to Fix AI Adoption in Your Company,*" tackled these concerns head-on. Rather than offering empty promises about AI's capabilities, I shared battle-tested strategies drawn from real-world successes and failures. The room's energy shifted as I revealed how careful experimentation, thoughtful data management, and strategic change leadership could transform AI from a looming threat into a powerful ally. What followed was not just a presentation, but a vibrant exchange of ideas with fellow innovators who shared their own stories of AI integration - both the triumphs and the pitfalls.
## A Gathering of Innovators
The "UX-Meet: AI Experience" gathered 200 participants from diverse backgrounds - UX/UI experts, students from 42 School, and IT professionals - all united by a common curiosity about AI's role in transforming UX practices. The event created an intimate setting where experienced practitioners shared their real-world experiences integrating AI into their daily workflows. Rather than dwelling on theoretical possibilities, speakers focused on practical applications, demonstrating how AI tools enhance their teams' capabilities without replacing human creativity and expertise.
A recurring theme throughout the presentations was the emphasis on human-centered design: AI as an assistant rather than a replacement. Speakers shared candid insights about their journey with AI adoption, from initial skepticism to discovering valuable use cases that amplify their teams' potential. The message was clear and reassuring: AI is not here to replace UX professionals but to augment their capabilities, allowing them to focus on the uniquely human aspects of design - empathy, creativity, and strategic thinking.
The atmosphere was electric with optimism as attendees discovered how AI could streamline routine tasks and open new possibilities for innovation in UX design. This wasn't just another technical conference; it was a gathering of professionals eager to embrace AI as a powerful ally in their creative process, while maintaining the human touch that makes UX design truly impactful.

## My talk: How to fix AI adoption in your company?
[My presentation](https://speakerdeck.com/thibaultmilan/ux-meet-how-to-fix-ai-adoption-in-your-company?ref=thibaultmilan.com) focused on the nuanced journey of adopting AI within organizations. The talk, titled "How to Fix AI Adoption in Your Company," underscored the importance of a strategic and measured approach to integrating AI technologies. Drawing from my experience leading the "LLM4Dev" study at Smile - a six-month experimental initiative to select and implement AI tools for developers - I demonstrated how careful experimentation leads to tangible results. This pilot, which is now in its rollout phase, has already shown measurable gains in developer productivity and provides clear metrics on return on investment.
I dedicated a significant portion of the presentation to the critical aspect of data management, drawing from our extensive experience implementing AI tools across Smile's teams. Through numerous projects and initiatives, we've developed robust protocols for data sharing and privacy that have become cornerstones of our AI strategy. I emphasized two crucial aspects: first, the importance of thoroughly understanding the implications of sharing data with AI tools, and second, maintaining complete transparency through regular monitoring of terms of service and usage conditions. These foundational practices ensure our teams can leverage AI capabilities while maintaining strict compliance and protecting sensitive information.
Lastly, I addressed the vital role of change management in AI adoption. By fostering a culture of innovation and providing comprehensive training, organizations can empower their workforce to effectively utilize AI tools. Our own rollout experience at Smile serves as a testament to how this approach enhances efficiency and aligns with strategic objectives.
### Key takeaways
- **Experimentation is Key:** Take time to explore various AI tools through pilot phases without rushing into decisions. This helps identify the tools that truly add value and align with your company's goals.
- **Start with the Obvious:** Begin AI adoption with clear and straightforward use cases to gain traction and reduce barriers, even if the initial ROI is modest.
- **Data Management:** Be vigilant about data privacy and understand the terms of service of AI tools. Transparency with users and clients about data usage is crucial.
- **Change Management:** Invest in acculturation and training for all employees to ensure a solid understanding of AI's potential and limitations. This will foster a culture of innovation.
- **Share and Learn:** Engage in open discussions about your AI experiments to position your brand as a leader in innovation, facilitating valuable exchanges with peers.
- **Consider the Bigger Picture:** Look for AI solutions that offer benefits at every level of the organization. Integrate them into daily processes for enhanced efficiency.

## A Journey of Discovery: Personal Insights from the Event
Reflecting on the "*UX-Meet: IA Experience*," I found myself truly inspired by the wealth of knowledge and creativity shared by the speakers. One of the standout moments for me was [Cesar Miguel](https://www.linkedin.com/in/cesarmiguel/?ref=thibaultmilan.com)'s (CPO of 42 School Paris) engaging live demonstration on using AI to *not write* code. This experiment-driven approach highlighted the fun and innovative spirit of AI and showcased its potential to empower individuals and small teams with limited resources. This, applied to discovering some of the mecanics of how 42 School is working (like their economy of P2P reviews), was particularly fascinating.
Another highlight was [Cyrille Magnetto](https://www.linkedin.com/in/cyrillemagnetto/?ref=thibaultmilan.com) (VP Innovation at AXA), whose presentation was packed with insightful use cases and feedback on implementing Generative AI within his team. His depth of knowledge and enthusiasm for the subject were contagious, and I found myself wishing his talk could continue for hours. Cyrille's work is something to monitor closely, and I hope to bring him to Luxembourg for a future AI conference.
I must also commend all the other speakers who contributed their expertise and perspectives, enriching the event with diverse insights. A special thanks to my colleagues at UX Republic for organizing such a well-executed and thought-provoking affair. Their efforts in bringing together a community of innovators made the "*UX-Meet: IA Experience*" a memorable occasion.
---
"*UX-Meet: AI Experience*" demonstrated the transformative impact of AI on UX design. The event highlighted the importance of thoughtful AI adoption to maximize its benefits. The exchanges confirmed the essential role of collaboration in the evolution of AI technologies. I'm enthusiastic about AI's potential to enhance user experience and optimize resources for small teams. I plan to apply these learnings in my work and maintain dialogue with this dynamic community to collectively address future challenges of AI in UX design.
### Plan Your Year with Intention
URL: https://thibaultmilan.com/plan-your-year-with-intention/
Last updated: 2025-01-03T22:32:52.000Z
Are you ready to make 2025 your most organized and intentional year yet? With the right tools and mindset, you can truly transform your approach to the upcoming year!
I’ve just launched something I’m super excited about: Year Compass: Your Quarterly Planner for 2025! 🎉 This planner is not just another tool; it’s a carefully crafted resource designed to help you navigate through the year with purpose and clarity.
This simple yet powerful 4-page PDF planner is specifically designed to help you visualize your year one quarter at a time. Whether you’re managing big goals, tracking important deadlines, or simply trying to find a sense of balance in your busy life, this planner is your perfect companion for all your planning needs.
## What Makes Year Compass Special?
- 🌟 Quarterly Focus: Break down your year into manageable chunks for better clarity and understanding of your progress. Each quarter allows you to hone in on specific goals and achievements, so you can celebrate small victories along the way.
- 🗓️ Minimalistic Design: The clean and easy-to-use layout leaves plenty of room for your creativity and thoughts while eliminating unnecessary distractions. This simplicity ensures that your focus remains on what truly matters.
- 🧘 Reflection-Friendly: Take a moment to thoughtfully map out your goals, priorities, and key moments without feeling overwhelmed by the details. This planner encourages mindfulness and reflection, allowing you to stay grounded throughout the year.
The best part? It’s available on a pay-what-you-want basis. That’s right—you decide the value! You can invest what feels right to you, making this resource accessible for everyone who wants to enhance their planning experience.
## Why I Created This Planner
Living with ADHD, I often find myself navigating a world that feels overwhelmingly reactive. In 2024, I experienced a constant cycle of responding to whatever was happening around me, which ultimately left me feeling stressed and unbalanced most of the time. It was a challenging year, and I knew something needed to change.
With the invaluable support of my coach, I’ve been working hard to cultivate a more intentional approach to my life this year. This journey of self-improvement required me to think a bit ahead about what the upcoming year might look like, even if just roughly. To facilitate this process, I realized I desperately needed a yearly planner that could cater specifically to my unique needs.
Despite my efforts to find something that suited me perfectly, I struggled to locate a tool that resonated with my requirements—this included even seeking assistance from ChatGPT! 😁 After exploring all available options and coming up short, I decided to take matters into my own hands and create a planner that would work for me.
While my planner isn’t foolproof, it has been designed through rapid iterations as I used it, allowing me to refine it based on real experiences and practical feedback. I wanted to share this resource with everyone who might be in a similar situation—those who need a little extra help in planning their lives intentionally while managing challenges like ADHD. My hope is that it offers guidance and support for anyone looking to create a sense of order in their busy lives.
## Get Your Copy Now
Click here to check it out: [Download Year Compass 2025](https://buymeacoffee.com/thibault/e/353214?ref=thibaultmilan.com)
Your support on Buy Me a Coffee means so much and helps me continue creating tools that simplify life and boost productivity for everyone who seeks organization and clarity.
Let’s make 2025 a year of clarity, balance, and success—together! Join me in this journey toward a more intentional and fulfilling year ahead!
### Year Compass 2025
URL: https://thibaultmilan.com/projects/year-compass-planner/
Last updated: 2025-09-22T11:23:01.000Z
## The Personal Challenge
Living with ADHD in 2024 meant constantly navigating a world that felt overwhelmingly reactive. I experienced a continuous cycle of responding to whatever was happening around me, leaving me stressed and unbalanced most of the time. With invaluable support from my coach, I knew I needed to cultivate a more intentional approach to life in 2025.
Despite searching extensively—even enlisting ChatGPT's help—I couldn't find a yearly planner that catered to my unique needs as someone with ADHD. So I decided to create my own.
## What Year Compass Offers
### Core Features
- **Quarterly Focus**: Breaking the year into manageable 3-month chunks for better clarity and progress tracking
- **Minimalist Design**: Clean, distraction-free layout that leaves room for creativity while maintaining focus
- **Reflection-Friendly**: Thoughtful structure for mapping goals and priorities without overwhelming detail
- **ADHD-Optimized**: Designed specifically for neurodivergent planning needs and executive function support
### Design Philosophy
The planner embraces simplicity over complexity, recognizing that the best planning tools are those you actually use. Each quarter allows users to:
\- Hone in on specific goals and achievements
\- Celebrate small victories along the way
\- Maintain focus on what truly matters
\- Practice mindfulness and reflection throughout the year
## Development Process
### Rapid Iteration Methodology
This isn't just a theoretical design—it's a product built through real-world use and continuous refinement:
- **Personal Testing**: Created and used the planner personally throughout development
- **Iterative Refinement**: Modified design based on actual usage patterns and friction points
- **ADHD-Specific Optimization**: Adjusted layout and structure based on executive function challenges
- **Accessibility Focus**: Ensured the design works for different cognitive processing styles
### User-Centered Approach
The development process prioritized practical usability over aesthetic perfection, resulting in a tool that actually serves its intended purpose rather than just looking good.
## Accessibility & Inclusivity
### Pay-What-You-Want Model
Recognizing that financial barriers shouldn't prevent access to helpful tools, Year Compass uses a pay-what-you-want pricing model. Users decide the value, making this resource accessible to everyone who wants to enhance their planning experience.
### ADHD-Friendly Features
- **Reduced cognitive load** through minimalist design
- **Quarterly structure** prevents overwhelming annual overviews
- **Flexible format** accommodating different planning styles
- **Visual clarity** supporting attention and focus challenges
## Impact & Reception
### Target Audience
- Individuals with ADHD seeking better organization strategies
- People pursuing intentional living and mindful planning
- Anyone struggling with traditional planning methods
- Those seeking accessible productivity tools
### Distribution Strategy
Published through Buy Me a Coffee platform, creating a direct connection with users while maintaining affordability and accessibility. This approach allows for:
\- Direct user feedback and iteration
\- Community building around intentional planning
\- Sustainable model for continued development
## Technical Innovation
### Design Constraints
Working within PDF format limitations while maintaining:
\- **Cross-platform compatibility** across all devices
\- **Print-friendly formatting** for physical use
\- **Screen-readable design** for digital planning
\- **Minimal file size** for easy sharing and access
### Accessibility Standards
- High contrast design elements
- Clear, readable typography
- Logical information hierarchy
- Space for different writing tools and styles
## Future Development
### Planned Enhancements
- Additional quarterly variations based on user feedback
- Companion resources for specific ADHD challenges
- Integration with digital planning ecosystems
- Community-driven template variations
### Long-term Vision
Year Compass represents the beginning of a broader initiative to create inclusive, accessible productivity tools designed by and for the neurodivergent community. The goal is building resources that actually work for people who think and process differently.
## Social Impact
By offering this tool on a pay-what-you-want basis, Year Compass demonstrates that productivity resources can be both high-quality and accessible. It challenges the traditional model where the best organizational tools are often behind significant paywalls.
The project also contributes to greater awareness and accommodation of ADHD needs in productivity tool design, potentially inspiring other creators to consider neurodivergent users in their development process.
[**Get Your Copy**](https://buymeacoffee.com/thibault/e/353214?ref=thibaultmilan.com) \- Support the continued development of accessible planning tools while getting a resource designed to actually help you thrive.
### UX-MEET : IA Experience
URL: https://thibaultmilan.com/talks/ux-meet-ia-experience/
Last updated: 2024-12-12T16:30:00.000Z
Je suis ravi de vous annoncer ma participation à un événement passionnant, UX-MEET : IA Experience, qui se tiendra **le 12 décembre** à la célèbre **École 42 à Paris**. Cet événement est une occasion unique d'explorer le pouvoir transformateur de l'intelligence artificielle dans le domaine de l'expérience utilisateur.
## Pourquoi Participer ?
UX-MEET : IA Experience promet d'être une soirée enrichissante où des leaders du secteur partageront leurs idées et expériences sur la manière dont l'IA redéfinit les pratiques UX. Des études de cas aux perspectives tournées vers l'avenir, cet événement offrira un aperçu complet du rôle de l'IA dans le design et l'interaction utilisateur.
## Les Temps Forts de l'Événement
- **Conférenciers de Renom** : Nous écouterons des experts tels que Cyrille Magnetto, VP Innovation, et Julien Clément, Directeur du Design et de l'Expérience Client chez Carrefour France et Groupe, entre autres.
- **Table Ronde** : Une discussion stimulante sur "Comment l'IA redéfinit le design aujourd'hui et demain", animée par la journaliste Barbara Haddad.
- **Opportunité de Networking** : Engagez-vous avec d'autres passionnés d'UX et leaders du secteur lors du cocktail dinatoire.
## Ma Contribution
Je présenterai sur la méthodologie de déploiement de l'IA dans les entreprises, en mettant l'accent sur la gestion du changement. Ce sujet est crucial alors que les entreprises naviguent entre les défis et les opportunités présentés par l'intégration de l'IA. Je partagerai des stratégies et des idées sur comment gérer efficacement le changement et exploiter le potentiel de l'IA pour améliorer les expériences utilisateur.
## Réservez Votre Place
L'événement est gratuit, mais les places sont limitées, alors assurez-vous de [réserver votre place tôt](https://info.smile.eu/ux-meet-ia-experience?ref=thibaultmilan.com). J'ai hâte de vous y voir et d'échanger des idées sur l'avenir de l'UX et de l'IA.
N'hésitez pas à me contacter si vous avez des questions ou besoin de plus d'informations. Faisons de cette soirée une source d'inspiration !
### Code Less, Create More: Unleashing AI Secret Weapons for Lazy(?) Developers!
URL: https://thibaultmilan.com/talks/code-less-create-more-unleashing-ai-secret-weapons-for-lazy-developers/
Last updated: 2024-12-06T15:20:00.000Z
As I gear up for [SymfonyCon 2024 in Vienna](https://live.symfony.com/2024-vienna-con/?ref=thibaultmilan.com), I'm thrilled to share that I'll be presenting a talk titled "[Code Less, Create More: Unleashing AI's Secret Weapons for Lazy Developers](https://live.symfony.com/2024-vienna-con/schedule/code-less-create-more-unleashing-ai-secret-weapons-for-lazy-developerslocation:?ref=thibaultmilan.com)." This event is a fantastic opportunity for developers and tech enthusiasts to gather and explore the latest innovations in the Symfony community.
In my session, I'll be diving into how AI is transforming the way we approach development. AI is no longer just a futuristic concept; it's a practical tool that can significantly enhance our productivity and creativity. As developers, we often find ourselves bogged down by repetitive tasks. That's where AI comes in, acting as a powerful ally to streamline these processes and free up our time for more creative pursuits.
During the talk, I'll be sharing some of the AI tools that have become indispensable in my workflow. These tools not only make coding more efficient but also open up new avenues for innovation. I'll provide practical examples of how AI can be integrated into everyday development tasks, making the process not just faster but also more enjoyable.
One of the key messages I want to convey is that AI is accessible to everyone, not just tech giants or AI specialists. Whether you're a seasoned developer or just starting out, there's something in this talk for you. By embracing AI, we can all become "lazy developers" in the best sense of the term—working smarter, not harder.
I'm looking forward to connecting with fellow developers at SymfonyCon, exchanging ideas, and learning from each other. It's always inspiring to see how others are using technology to push boundaries and create incredible things.
If you're attending SymfonyCon 2024, I hope you'll join me for this session. Let's explore how we can harness AI's potential to code less and create more. See you in Vienna!
### Transformez la performance de vos équipes avec l'IA Gen
URL: https://thibaultmilan.com/talks/retex-llm4dev-transformez-la-performance-de-vos-quipes-avec-l-ia-gen/
Last updated: 2024-11-27T10:45:00.000Z
Chez [Smile](https://smile.fr/?ref=thibaultmilan.com), l'innovation est au cœur de notre ADN. En tant qu'entreprise technologique, nous sommes constamment à la recherche de solutions qui non seulement augmentent notre compétitivité, mais améliorent également l'efficacité et la satisfaction de nos équipes. C'est dans cet esprit que nous avons récemment exploré l'intégration de ces modèles d'IA pour nos développeurs.
Lors de ce webinaire, découvrez notre retour d’expérience sur l’intégration de ces modèles de langage, les méthodes employées, les résultats obtenus et les enseignements clés tirés de cette initiative.
[Visionnez le replay](https://smile.eu/fr/publications-et-evenements/replay-retex-llm4dev?ref=thibaultmilan.com) pour explorer comment l'IA générative peut transformer les performances au sein de vos équipes de développement et renforcer votre compétitivité.
### Mindful Meeting Management: Planning meeting with ADHD
URL: https://thibaultmilan.com/mindful-meeting-management-planning-meeting-with-adhd/
Last updated: 2024-11-21T19:09:26.000Z
Living with ADHD presents unique challenges, especially when it comes to managing time and commitments. One of the hurdles I face is not being able to be always concious about the amount of time things will take, and how much I can do in a day, making it difficult to balance meetings and tasks. Most of the time, I end up saying yes to too many things and stress over having to call back people and moving meeting, causing me stress and taking more additionnal time to figure out alternative solutions. To navigate this, I've adopted a mindful approach to managing meeting requests, which, I hope, will significantly improved my productivity and well-being.
## Hide those Meeting Request I cannot see
So, my main issue is that, when I'm going over all my emails, I have some meeting request in them. And I tend to treat it more through thoses filters:
1. Is it something interesting to do ?
2. Am I free when they request a meeting ?
And that's it. Which is terrible since it doesn't take into account if I already have a bunch of meeting that day (which I try to limit to 3, I'll write on that another time), or if I didn't had a heavy week planned, or sometimes even if I'll be able to attend it because of transportation. Yep. That might sound silly to neurotypical people. I know.
To address this, I've implemented a simple yet effective strategy using Gmail filters. This approach helps me manage meeting requests more mindfully, freeing up mental space to focus on what truly matters.
Here's the filter I use:
`filename:ics has:attachment -filename:pdf -subject:"Re"`
I'll explain why all are importants. All the meeting request have an *.ics* file attached. But I also get an *.ics* with a *.pdf* for my train ticket from Trainline. So, I need to explude emails that has also a PDF. And sometimes, someone answer back directly to the invite, so I need to remove all the answers that re-include the *.ics*.
Then, I apply those set of actions:
- skip inbox (archive) *which is my main goal here to hide those emails*
- mark as read *so I'll not have unread archived emails*
- apply a label *so I'll have a neat folder in IMAP with all of thoses invites*
- never marked as important *this one is more optional if you're not using this Gmail feature*
## The Benefits: Clarity and Control
Now, all my meeting request invited are hidden from my inbox and I can manage them directly from my calendar software.
I hope this mindful approach has brought a sense of clarity and control to my day-to-day life. With my inbox review should be less chaotic, I'll can better focus on tasks and manage my time more effectively. Viewing all my meetings in the calendar app helps me visualize my day and week, making it easier to plan and prioritize.
### Exploring the NoCode Summit 2024
URL: https://thibaultmilan.com/exploring-the-nocode-summit-2024-a-deep-dive-into-innovation-and-trends/
Last updated: 2025-12-30T13:11:19.000Z
The NoCode Summit 2024, held at the iconic Station F in Paris, was a landmark event that brought together a diverse community of no code enthusiasts from across the globe. Over two days, the summit became a hub of learning and networking, drawing in more than 1,000 passionate individuals eager to explore the possibilities of no code technology. As a speaker on the concluding panel, I had the unique opportunity to share insights and engage with thought leaders shaping the future of this dynamic field.
## Immersive Experience and Key Highlights
The summit was a whirlwind of activity, featuring over 50 international speakers and experts who illuminated the stage with their knowledge and experience. Attendees were treated to more than 30 workshops and hands-on sessions, providing practical insights into the latest no code tools and methodologies. The event was not just a showcase of technology but a celebration of community, fostering connections among entrepreneurs, developers, and professionals.
## Core Themes and Discussions
The discussions at the summit revolved around several pivotal themes that are shaping the no code landscape:
- **Business Process Automation**: The ability to automate complex business processes without writing code is transforming how companies operate, making efficiency and innovation accessible to all.
- **Application Development Without Code**: no code platforms are democratizing application development, empowering individuals to create solutions that were once the domain of seasoned developers.
- **Enterprise Integration**: Integrating no code tools within existing business frameworks was a central theme, with experts sharing best practices and lessons learned from real-world implementations.
- **Best Practices and Case Studies**: Attendees had the opportunity to learn from the successes and challenges of others, gaining valuable insights into effective no code adoption.
- **Future Trends**: The summit explored the evolving trends in no code technology, highlighting its potential to disrupt industries and drive digital transformation.

## Panel Participation: NoCode REX
I had the privilege of participating in the "NoCode REX" panel, a highlight of the summit that delved into the real-world applications and experiences of no code technology. The panel brought together experts to discuss the practical implications and success stories of implementing no code solutions across various industries. It was an enriching experience to share insights and learn from fellow panelists about the transformative power of no code. For those who missed it, I highly recommend [checking out the replay of the panel here](https://youtu.be/pBUlFRy0mUQ?ref=thibaultmilan.com).
## Insights from the NoCode Market
The no code/low-code market is experiencing rapid growth in France and Europe, fueled by a shortage of developers, accelerated digital transformation, and the democratization of development tools. Major players like Bubble, Webflow, and Airtable are expanding their footprint in Europe, while local solutions such as Bravo Studio and AppSheet are gaining popularity. According to Gartner, the European low-code market is projected to reach €45.5 billion by 2025, with an annual growth rate exceeding 20%. This surge is driven by the demand from SMEs, mid-sized companies, and large enterprises seeking to quickly digitize their processes and develop department-specific applications.
## Key Trends Identified
- **Emergence of Open Source Solutions**: Open-source no code solutions are gaining traction due to their flexibility, cost-effectiveness, and the ability to enhance digital sovereignty. While proprietary solutions dominate the market, the interest in open-source alternatives is growing.
- **Public Sector Engagement**: A significant revelation at the summit was the increasing adoption of no code by the public sector. Organizations like the CNES, tax authorities, and educational institutions are exploring no code to empower employees and address unique challenges.
- **Focus on Digital Sovereignty**: The quest for digital sovereignty is a critical concern, with many seeking solutions that ensure data control and security. This presents a golden opportunity for integrators to offer open-source solutions that align with these needs.
- **Maturity of Enterprise Solutions**: no code tools are evolving to meet enterprise requirements, offering advanced security features, compliance capabilities, and seamless integration options. This maturity is crucial for large organizations seeking robust governance and scalability.
- **no code as an Employable Skill**: The demand for no code skills is on the rise, with companies actively seeking professionals adept in these tools. Training programs and certifications are emerging, positioning no code as a valuable and employable skill set.
## Reflections and Takeaways
Attending the NoCode Summit 2024 was an enlightening experience, offering a window into the future of no code technology and its potential to reshape industries. While no code may not directly align with our core offerings at Smile, understanding its trajectory is essential for strategic alignment and growth. The summit reinforced the importance of staying informed about industry trends and evaluating our positioning within the value chain.
As no code continues to evolve, it promises to unlock new possibilities for innovation and career advancement, fostering a new wave of "citizen developers" who are reshaping the digital landscape. The event underscored the transformative power of no code, highlighting its role in democratizing technology and enabling individuals and organizations to achieve more with less.
### Essential WordPress Fixes for Common Issues
URL: https://thibaultmilan.com/essential-wordpress-fixes-for-common-issues/
Last updated: 2024-10-06T20:21:09.000Z
Hello, fellow WordPress enthusiasts! As a service and UX designer with over a decade of experience, I've seen firsthand how empowering it can be for clients to resolve their own WordPress issues. That's why I've developed a comprehensive troubleshooting guide to help you tackle common challenges with confidence. Let's dive in!
## Why Troubleshooting Matters
WordPress is a powerful tool, but like any technology, it can sometimes throw a wrench into your plans. Whether it's the dreaded White Screen of Death or a pesky login issue, knowing how to troubleshoot these problems can save you time, money, and a lot of frustration.
## Common WordPress Issues and Solutions
### White Screen of Death (WSOD)
This issue often leaves your site blank, with no error message to guide you. To resolve it, start by increasing your PHP memory limit.
1. Access your website's root directory via FTP
2. Locate the *wp-config.php* file
3. Add the line
```php
define('WP_MEMORY_LIMIT', '64M');
```
If this doesn't work, deactivate all plugins by renaming the plugins folder to "plugins\_old" and then reactivate them one by one to identify the culprit. Lastly, switch to a default theme like Twenty Twenty-One to rule out theme-related issues.
### Internal Server Error (500 Error)
This error is typically due to a corrupted *.htaccess* file or exhausted PHP memory limit.
1. First, access your site’s root directory via FTP and rename the *.htaccess* file to *.htaccess\_old*.
2. Refresh your site to see if the issue is resolved.
3. If not, try increasing your PHP memory limit by editing the *wp-config.php* file and adding
```php
define('WP_MEMORY_LIMIT', '64M');
```
If the error persists, consider re-uploading core files from a fresh WordPress installation.
### Error Establishing Database Connection
This error often indicates incorrect database credentials. To fix it
1. access your *wp-config.php* file via FTP and verify the database name, username, password, and host. Ensure these details match those provided by your hosting provider.
2. If the credentials are correct, try repairing your database by adding to your *wp-config.php* file and visiting http://yoursite.com/wp-admin/maint/repair.php.
```php
define('WP_ALLOW_REPAIR', true);
```
### WordPress Login Issues
If you're unable to log in, it could be due to cookies being disabled or a corrupted login file.
1. First, ensure cookies are enabled in your browser settings.
2. Next, clear your browser cache and cookies.
3. If the issue persists, access your site via FTP and rename the plugins folder to "plugins\_old" to deactivate all plugins.
4. Try logging in again, and if successful, reactivate your plugins one by one to find the problematic one.
### Slow Loading Times
A slow website can deter visitors and affect your SEO.
1. Start by optimizing images using plugins like [Smush](https://wordpress.org/plugins/wp-smushit/?ref=thibaultmilan.com) or [EWWW Image Optimizer](https://wordpress.org/plugins/ewww-image-optimizer/?ref=thibaultmilan.com).
2. Next, install a caching plugin such as [W3 Total Cache](https://wordpress.org/plugins/w3-total-cache/?ref=thibaultmilan.com) or [WP Humingbird](https://wordpress.org/plugins/hummingbird-performance/?ref=thibaultmilan.com) to improve loading times.
3. Finally, minimize the use of resource-heavy plugins and consider upgrading your hosting plan if your site continues to lag.
## Advanced Troubleshooting Techniques
### Enable Debug Mode
Debugging is a crucial step in identifying errors. To enable it, access your *wp-config.php* file and add the following line
```php
define('WP_DEBUG', true);
```
This will display error messages on your site, helping you pinpoint the issue. Remember to set it back to false once you've resolved the problem to ensure your site's security.
### Check Server Logs
For more detailed error information, access your server logs. If you're using cPanel, navigate to "Metrics" and select "Errors" to view recent logs. Alternatively, you can find error logs in the "logs" directory of your server. Analyze these logs to identify patterns or specific errors that need addressing.
### Identify Plugin Conflicts
Plugins can often conflict with each other, causing issues. To identify the problematic plugin:
1. deactivate all plugins by renaming the plugins folder to "plugins\_old".
2. Then, reactivate them one by one, checking your site after each activation to see if the issue reappears.
3. Once identified, consider finding an alternative plugin or contacting the plugin developer for support.
Alternatively, you can use the **Wordpress Recovery mode** which is a super convenient tool since it's just changing the way your website behave *FOR YOU*. So it's safe to use on a production website. To do so
1. Navigate to the *YOUR\_DOMAIN/wp-login.php?action=entered\_recovery\_mode*
2. Follow instruction to deactivate all plugins
3. Then, reactivate them on by one, checking your site after each activation to see if the issue reappers.
4. Once identified, consider finding an alternative plugin or contacting the plugin developer for support.
### Resolve Theme Compatibility Issues
Sometimes, a theme may not be compatible with the latest WordPress version or other plugins. To check, switch to a default theme like Twenty Twenty-One by going to "Appearance" > "Themes" in your WordPress dashboard. If the issue resolves, your theme may be the problem. Update it, or consider using a different theme that's regularly maintained and updated.
## When to Call in the Experts
While this guide is designed to help you resolve many issues on your own, there are times when professional help is warranted. If you suspect a security breach, experience persistent errors despite troubleshooting, or face major site functionality issues, it's time to reach out for expert assistance. As a seasoned WordPress consultant, I'm here to help you navigate these challenges. [Contact me](#) today to ensure your website remains secure and fully operational.
## The Value of Proactive Maintenance
Preventive care is key to keeping your WordPress site running smoothly. With my WordPress monitoring and maintenance services, you can rest easy knowing your site is in good hands. I offer regular updates, security checks, and performance optimizations to catch potential issues before they become problems. This proactive approach not only saves you from unexpected downtime but also ensures your site delivers the best user experience possible. Learn more about how my services can benefit your business.
---
By empowering yourself with troubleshooting knowledge, you're not only saving time and resources but also enhancing your WordPress experience. Remember, I'm here to support your journey every step of the way. Stay tuned for more insights and tips on optimizing your digital presence. And as always, feel free to reach out if you need assistance or just want to chat about all things WordPress!
Photo de [Fikret tozak](https://unsplash.com/fr/@tozakfikret?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash) sur [Unsplash](https://unsplash.com/fr/photos/personne-en-t-shirt-noir-et-blanc-a-laide-dun-ordinateur-Zk--Ydz2IAs?utm%5Fcontent=creditCopyText&utm%5Fmedium=referral&utm%5Fsource=unsplash)
### OpenAI Unveils the o1 Model: A Leap Towards Reasoning AI
URL: https://thibaultmilan.com/openai-unveils-the-o1-model-a-leap-towards-reasoning-ai/
Last updated: 2024-09-16T08:57:43.000Z
OpenAI has officially launched the highly anticipated o1 model, marking a significant milestone in the evolution of artificial intelligence. This new model, affectionately dubbed the "Strawberry" model by insiders, is a part of OpenAI's ambitious series of reasoning models aimed at tackling more complex queries with enhanced accuracy and speed. The launch of o1 is not just a technical upgrade; it represents a pivotal step in OpenAI's overarching goal of advancing AI capabilities to more closely mimic human-like reasoning.
## A New Era of Problem Solving
The o1 model stands out with its remarkable ability to handle intricate problems, particularly in fields requiring high-level cognitive functions such as coding and mathematics. This advancement is a significant leap from its predecessors like GPT-4o, which set the stage but did not fully realize the potential of AI in these domains. The o1 model employs a completely novel optimization algorithm and an expansive training dataset, enabling it to solve multistep problems and write code with unprecedented efficiency. OpenAI's research lead, Jerry Tworek, has emphasized that the model's training involves reinforcement learning techniques that allow it to process queries with a "chain of thought" approach. This mimics the step-by-step problem-solving methods used by humans, offering a more intuitive interaction for users and positioning the model as a groundbreaking tool for developers and researchers.
## Enhanced Accuracy and Reasoning
One of the most notable improvements in the o1 model is its reduced tendency to "hallucinate," or provide incorrect information, a common challenge that has plagued AI models in the past. While OpenAI acknowledges that hallucinations are not entirely eliminated, the o1 model shows significant progress in accuracy. This advancement is particularly evident in its performance on tasks such as the AP math test and the International Mathematics Olympiad, where it scored impressively high compared to previous models. The model's ability to understand and process complex information more accurately is a testament to its sophisticated architecture and the rigorous training it underwent. This capability not only enhances its utility in academic and professional settings but also bolsters its reliability as a tool for everyday users.
## Critical Perspective: The Illusion of Reasoning
Despite the impressive capabilities of the o1 model, it's important to recognize that the model does not truly "think" or "reason" in the human sense. Rather, it leverages advanced prompting mechanisms, known as "chain of thought" processes, to achieve better results. This approach allows the model to simulate reasoning by breaking down complex tasks into manageable steps, enhancing its effectiveness in problem-solving scenarios. Historically, OpenAI has abstracted some of the complexities involved in using large language models (LLMs) to produce optimal results, particularly in the transition from using ChatGPT online to its API. Users often find that the experience differs between these platforms, and the o1 model seems to follow a similar path. While OpenAI promises that the o1 model will offer consistent features across both ChatGPT and the API, the true extent of this integration remains to be seen. This abstraction has been a double-edged sword: while it simplifies user interaction, it may also obscure the underlying complexities and limitations of the model, leading to potential misunderstandings about its capabilities.
## Access and Pricing
OpenAI is offering access to the o1-preview and the smaller, more affordable o1-mini model to ChatGPT Plus and Team users immediately, with plans to extend access to Enterprise and Edu users soon. However, the pricing for developer access is notably steep, reflecting the model's advanced capabilities. Despite its cost, the o1 model's potential for solving complex problems makes it a valuable tool for developers and researchers alike. The pricing strategy reflects the model's positioning as a premium solution for those who require cutting-edge AI capabilities. For businesses and individuals considering investing in the o1 model, the decision will likely hinge on the specific needs and potential return on investment. OpenAI's pricing strategy is designed to balance accessibility with the need to recoup the significant investment in research and development that such an advanced model entails.
## Looking Ahead
As OpenAI continues to push the boundaries of AI technology, the o1 model represents a crucial step towards achieving reasoning capabilities akin to human intelligence. While its current abilities are not yet at the level of autonomous decision-making, the foundation laid by o1 paves the way for future developments in AI-driven problem-solving and decision-making. The launch of the o1 model is not just an upgrade in AI technology; it's a glimpse into the future of what AI can achieve. As OpenAI continues to innovate, the possibilities for AI applications in various fields, from medicine to engineering, are boundless. The journey towards truly intelligent AI is just beginning, and the o1 model is leading the charge. This model is a testament to the rapid advancements in AI technology and a harbinger of the transformative changes that AI will bring to industries worldwide. As we look to the future, the o1 model serves as both a landmark achievement and a stepping stone towards the next generation of AI innovations.
### The integration of Gen AI in the company is becoming vital
URL: https://thibaultmilan.com/l-int-gration-de-l-ia-g-n-rative-dans-l-entreprise-devient-vital-mon-retour-d-exp-rience/
Last updated: 2024-09-10T11:36:27.000Z
At [Smile](https://smile.eu/?ref=thibaultmilan.com), innovation is at the heart of our DNA. As a technology company, we are constantly seeking solutions that not only increase our competitiveness but also improve the efficiency and satisfaction of our teams. It is in this spirit that we have recently explored the integration of large language models (LLM) for our developers. This article details our feedback (REX) on this bold initiative, the methods we employed, the results obtained, and the lessons we learned.
## Why did we explore the use of LLM for developers?
The integration of artificial intelligence (AI) technologies in the world of software development is no longer just a trend but a necessity to stay competitive. At [Smile](https://smile.eu/?ref=thibaultmilan.com), we undertook this experimentation with several objectives in mind.
First, we wanted to prove that AI can truly transform the way developers work by saving them time on repetitive tasks, providing them with code suggestions on the fly, and enhancing code documentation, ideally making it easier for developers to write unit tests.
Secondly, by adopting advanced technologies, we aim not only to match but surpass our competitors in the market. It is clear that the entire industry is closely following this trend, but few companies communicate about it. Everyone is waiting to see who will take the first step in communicating their business strategy in light of these new tools. In the meantime, we need to do all the necessary work to be ready when the market sends a strong signal of acceptance of this new way of working.
Finally, it was essential for us to assure our employees that we are committed to providing them with modern tools that not only facilitate their work but also prepare them for the future of software development. Equally important, we need to manage shadow-IT usage that could arise if we do not provide tools to our developers; and support our developers and the rest of our teams in transforming their jobs, disrupted by the explosion of LLMs.
## How did we conduct this experiment?
To ensure the success of this initiative, we established a structured and multidisciplinary organization. A task force was formed, involving representatives from management, IT, and legal, to address all aspects of LLM integration, including the impact on jobs and legal compliance.
We started by identifying relevant use cases where AI could add value (code completion, code documentation, chatbot assistant to help with more complex tasks like refactoring, or more generally, assistance in thinking with code as context). Next, we tested several AI solutions to find the one that best met our needs in terms of return on investment (ROI), security, and compliance.
This initial phase allowed us to experiment and gather valuable data on the actual use of LLMs by our teams, both qualitative (how developers feel about the tool's impact on their work, their appreciation of the tool, their "ah-ha moments" and frustrations) and quantitative (how much time saved through code completion based on the developer's usual typing speed, applied by task types and technologies).
## The results obtained
The results of our experiment were very promising.
To cite just a few figures: about 80% of developers reported significant perceived time savings thanks to the use of LLM-based tools, 60% of these people will continue to use LLM tools even if it involves shadow-IT. We also observed an overall improvement in coding time of 15% on the projects concerned, averaging across all studied technologies and task types. Of course, we conducted a more detailed split for our internal needs.
One of the main perceived advantages of LLMs is their ability to automate repetitive tasks, allowing developers to focus on more complex and creative tasks. In a sense, we indeed observed a considerable time saving allowing this, but it was not really on the repetitive tasks we imagined, but rather a succession of savings on all tasks that, when added together, form a considerable time saving.
Additionally, the use of LLMs encouraged better documentation practices, either by systematically generating it in the proposed code or by requiring the developer to write some documentation to provide context and guide the tool to generate the desired code, which had a positive impact on the overall quality of the code. These results show that LLMs do not replace developers but act as facilitators, increasing both their efficiency and the quality of their work.
## What lessons did we learn?
Our adventure with LLMs has been rich in lessons. We learned that, although AI is powerful, it cannot do everything alone. It is crucial to keep humans in the loop to make informed decisions and oversee the suggestions made by AI. Thus, AI behaves more like assistants for developers, and this is an important point to communicate to the developer population to reassure them about the future of their profession and to dispel the reluctance that has arisen from hearing in the media that they will all be replaced by AI.
The adoption of these technologies requires continuous adaptation and particular attention to user feedback. Bi-weekly follow-up sessions are important initially to help appropriate these new types of tools. We also confirmed our hypotheses about training and support being essential, especially for junior developers who need time and support to master these new tools, even more so than more experienced developers.
Quite counterintuitively, although junior developers have the most room for improvement, it is the more experienced developers who quickly understand how to take advantage of this new tool, formulate their requests more clearly, and thus achieve better results.
From the perspective of programming languages and frameworks used, we observed disparate quality in suggestions, making the tool less relevant and of lower quality in its suggestions for certain technologies. We are currently exploring how fine-tuning strategies could be implemented to correct this disparity.
Finally, we found that to maximize the benefits of LLMs, it is essential to continuously monitor the quality of the generated outputs and be ready to adjust models and processes based on the changing needs of the team.
## Conclusion
The integration of LLMs at [Smile](https://smile.eu/?ref=thibaultmilan.com) has been a decisive step towards innovation and improving our operational efficiency. The results we have obtained demonstrate the immense potential of these technologies to transform software development. We are determined to continue exploring and adopting AI tools that not only increase our productivity but also support our employees in their professional development.
In the future, we plan to extend the use of LLMs to other areas of the company to fully leverage this revolutionary technology. We are already deploying to a small community of testers a secure sandbox where employees can use generative AI models without fear that any client or personal data entered will be used to train a public model or risk causing sensitive data leaks. We have named it SmileGPT, and we will tell you more about it very soon.
At [Smile](https://smile.eu/?ref=thibaultmilan.com), we believe that continuous innovation and investment in our teams are essential to offer cutting-edge solutions to our clients and stay at the forefront of our industry.
If you are interested in our AI integration approach or wish to discuss how these technologies can transform your business, do not hesitate to contact me. I am Thibault Milan, Director of Innovation at [Smile](https://smile.eu/?ref=thibaultmilan.com), and I would be delighted to discuss these exciting topics with you.
### Generative AI: a revolution for the public sector
URL: https://thibaultmilan.com/l-ia-g-n-rative-une-r-volution-pour-le-secteur-public/
Last updated: 2024-08-05T13:07:04.000Z
Since the end of 2022, the revolution of large language models (LLM) has reshaped interactions with natural language and text content generation. The public sector is not exempt from this transformation. Public administrations, traditionally considered rigid and slow to adopt new technologies, now have a unique opportunity to reinvent themselves through generative AI. By leveraging the power of advanced linguistic models, public entities can streamline processes, improve citizen services, and foster innovation in ways previously unimaginable.
The integration of LLMs into government operations paves the way for better communication with the public, personalized services, and more effective decision-making. These models can analyze large volumes of data, extract information, and generate human-like text, allowing officials to draft policies, reports, and responses with greater precision and speed. Moreover, by harnessing AI-driven language generation capabilities, public sector organizations can enhance accessibility, inclusivity, and transparency, ultimately strengthening citizen trust and engagement.
By embracing the potential of generative AI, public administrations are moving towards a more agile, responsive, and citizen-focused government. Leveraging the capabilities of LLMs, agencies can automate routine tasks, reduce bureaucratic hurdles, and provide services that meet the evolving needs of the population. This shift towards AI-powered governance marks a significant milestone in the modernization of public services and the promotion of a more effective and efficient public sector for the benefit of all.
## A profound transformation of processes
Generative Artificial Intelligence, with its ability to handle a multitude of tasks and learn autonomously, is revolutionizing the world of public administration. It offers unprecedented opportunities to optimize administrative processes and improve public services. These technologies not only simplify and automate repetitive tasks but also provide precise and contextual responses in real-time. They can be used to minimize human errors, increase efficiency, and improve service quality.
Imagine a chatbot capable of handling thousands of citizen requests simultaneously. It would be like having a dedicated virtual assistant for every citizen, capable of answering questions, guiding them through administrative processes, and providing quick and efficient service 24/7\. This technology could also facilitate communication between citizens and the administration, reducing misunderstandings and improving user satisfaction.
Furthermore, an intelligent system capable of generating detailed reports from raw data in seconds could transform how organizations manage and use information. Instead of spending hours analyzing and interpreting data, staff could focus on more strategic tasks and let generative AI handle the data processing. This would not only save time but also yield more precise and detailed insights, leading to better decisions and resource management. Generative AI thus has the potential to radically change how public services operate, making them more efficient, accurate, and citizen-centric.
## Security and data sovereignty: crucial issues
The adoption of generative artificial intelligence in the public sector is a complex and delicate subject that comes with numerous challenges. The main concerns revolve around security and data sovereignty issues. Indeed, the public sector is often responsible for managing large volumes of sensitive and confidential data. Therefore, administrations must implement strict measures to ensure that this data remains protected under all circumstances, which is essential to maintain public trust and comply with legal obligations.
In addition to data security, public administrations must also ensure that the generative AI solutions they use comply with all applicable regulations. This includes, for example, the General Data Protection Regulation (GDPR) in Europe, which imposes strict rules on the collection, storage, and processing of personal data. Non-compliance with these regulations can not only result in significant penalties but also damage the organization's reputation and lead to a loss of public trust.
The white paper, titled "[Generative AI for Public Administrations](https://smile.eu/fr/publications-et-evenements/l-ia-gen-pour-les-administrations-publiques?ref=thibaultmilan.com)," addresses these issues in depth. It provides a detailed analysis of the challenges faced by public administrations in adopting generative AI and offers concrete strategies for the secure and compliant integration of these technologies. These strategies include recommendations on best practices for data management, security technologies to use, and how to ensure compliance with current regulations while maximizing the benefits of generative AI.
## Concrete benefits for developers and administrations
Large language models are not only revolutionizing interactions with the public but are also reshaping how developers work, significantly increasing their productivity. By automating code generation, these models reduce the workload by eliminating repetitive tasks and minimizing human errors. Additionally, they provide relevant suggestions in real-time, helping developers find effective and innovative solutions to complex problems.
This valuable assistance offered by language models allows developers to focus more on complex and creative tasks. Instead of spending hours writing and revising code, they can devote more time to designing and improving product features. Consequently, they can not only enhance their productivity but also the quality of their work, resulting in a better user experience and greater customer satisfaction.
Ultimately, the use of large language models can also help improve the quality of public services. By automating certain coding tasks, developers can focus on creating solutions that truly meet citizens' needs. For example, they can work on applications that facilitate access to government services or on tools that make public data more accessible and understandable to the general public. Thus, large language models play an important role in creating a future where technology serves citizens, not the other way around.
## An essential guide for decision-makers
At [Smile](https://smile.eu/?ref=thibaultmilan.com), we have created a white paper titled "[Generative AI for Public Administrations](https://smile.eu/fr/publications-et-evenements/l-ia-gen-pour-les-administrations-publiques?ref=thibaultmilan.com)" to help decision-makers, technical directors, and heads of transformation and innovation navigate this rapidly evolving landscape. This document explores how cutting-edge AI tools can improve productivity, reduce costs, and ensure compliance with strict regulations.
[Download our White Paper](https://smile.eu/fr/publications-et-evenements/l-ia-gen-pour-les-administrations-publiques?ref=thibaultmilan.com)
### Uber & Webtaxi: A New Era for Luxembourg Mobility
URL: https://thibaultmilan.com/uber-webtaxi-era-luxembourg-mobility/
Last updated: 2024-05-09T10:02:39.000Z
Uber's innovative approach to ride-sharing has transformed urban mobility across the globe. With its latest move into Luxembourg, in partnership with the local taxi service Webtaxi, Uber is setting a new standard for transportation services in the region. This partnership brings not just convenience and advanced technology to the local populace but also a host of broader economic and societal implications.
## The Partnership's Core
Uber has chosen a unique entry strategy into the Luxembourg market by partnering with Webtaxi rather than deploying its fleet. This approach leverages Uber’s robust technology platform while supporting local business, a fusion that benefits both entities and consumers. Here's what the partnership entails:
- **Exceptional User Experience**: Uber's app is renowned for its user-friendly interface, providing ease of use and accessibility that significantly enhance customer interactions compared to previous local options.
- **Global Branding Meets Local Service**: The collaboration introduces Webtaxi to Uber's vast global user base, potentially increasing demand and elevating the local taxi company to international standards.
- **Expansion and Data Insights**: Uber will not only expand its geographical footprint but will also gather valuable data on user behavior and pricing trends in Luxembourg. This information could dictate future business strategies and marketing approaches.
## Cultural and Economic Reflections
There's a palpable disappointment among some users who had hoped for lower pricing akin to other Uber-dominated markets. This reaction sheds light on the cultural expectations of ride-sharing costs versus the reality of sustainable business practices:
- **The Pricing Dilemma**: It’s intriguing to see the community's reaction to Uber's pricing strategy, which aligns more closely with standard taxi fares rather than undercutting them significantly. This aligns with Luxembourg's high standards for wages and living conditions, promoting a fair compensation model for drivers.
- **Sustainability vs. Cost**: The debate around pricing opens up a larger conversation about what consumers value more—lower costs or sustainable practices that support the local economy and ensure fair wages for workers.
Uber's partnership with Webtaxi in Luxembourg is more than just a business deal; it is a potential shift in how we perceive and value local services against the backdrop of global technology-driven brands. As consumers, it challenges us to think about the true costs of convenience and the type of economic practices we want to support.
What are your thoughts on Uber’s approach to entering new markets? Do you see this partnership as a positive development for Luxembourg? Share your views in the comments below or on social media using #UberLuxembourg and #SustainableMobility.
### Révolutionnez votre expérience bancaire ING Luxembourg avec Apple Pay et Google Pay grâce à Curve!
URL: https://thibaultmilan.com/utiliser-apple-pay-google-pay-ing-luxembourg/
Last updated: 2022-12-20T21:21:45.000Z
Dans un monde où la technologie évolue à une vitesse vertigineuse, nos habitudes bancaires ne font pas exception. Avec l'arrivée des paiements mobiles, le confort et la sécurité de nos transactions financières ont été transformés. Mais pour les clients d'**ING Luxembourg**, une ombre persiste : l'absence de compatibilité de leur banque préférée avec les géants du paiement mobile, **Apple Pay** et **Google Pay**. Alors, comment profiter de la modernité des paiements sans contact tout en restant fidèle à ING Luxembourg ?
La réponse se trouve dans une innovation remarquable : **[Curve](https://www.curve.com/join?ref=thibaultmilan.com#BGO1N)**. Cette plateforme révolutionnaire agit comme un pont entre votre banque traditionnelle et les technologies de paiement les plus avancées. Curve n'est pas seulement un outil de paiement, c'est une véritable clé ouvrant les portes d'une expérience bancaire sans limites. Dans cet article, nous allons explorer comment Curve peut non seulement combler le fossé technologique pour les clients d'ING Luxembourg, mais aussi enrichir de manière significative leur expérience bancaire quotidienne.
## ING Luxembourg
[ING Luxembourg](https://www.ing.lu/?ref=thibaultmilan.com), une institution financière de renom, s'est taillée une solide réputation grâce à son approche innovante en matière de services bancaires. Avec un héritage riche et une présence forte dans la région, ING s'est distinguée par son offre complète allant des comptes courants aux solutions d'épargne, en passant par les crédits et les investissements. **Récemment, ING a franchi un pas significatif en renouvelant ses cartes de débit, passant de V Pay à des cartes Visa Debit complètes**. Ce changement majeur, succédant à l'abandon de Bancontact et Visa Electron, dote enfin les clients d'ING de cartes avec un numéro permettant les transactions en ligne, ouvrant ainsi de nouvelles possibilités dans l'univers du commerce électronique.
Le point fort de cette banque réside dans son application de webbanking, unanimement reconnue pour son interface utilisateur intuitive et ses fonctionnalités avancées, facilitant la gestion quotidienne des finances pour un grand nombre de clients. Cependant, malgré ces atouts considérables, **un élément manque à l'appel : la compatibilité de ses cartes bancaires avec les systèmes de paiement mobile les plus prisés, Apple Pay et Google Pay**. Dans un monde où le paiement sans contact est devenu roi, cette lacune peut sembler déconcertante pour les clients qui cherchent à maximiser la commodité et la sécurité de leurs transactions. Heureusement, l'évolution récente des cartes de débit d'ING Luxembourg coïncide avec l'opportunité inespérée d'utiliser une solution innovante, Curve, qui va permettre de rendre compatible Apple Pay et Google Pay avec votre carte de débit ING.
## Curve
[Curve](https://www.curve.com/join?ref=thibaultmilan.com#BGO1N) n'est pas une banque, mais un facilitateur de paiement innovant qui réinvente la façon dont nous utilisons nos cartes bancaires. En tant que carte "proxy", Curve permet à ses utilisateurs de regrouper plusieurs cartes de débit et de crédit en une seule carte physique et dans une application mobile. Ce service, qui est **gratuit pour jusqu'à trois cartes différentes**, offre une flexibilité inégalée, permettant de choisir facilement quelle carte utiliser pour chaque transaction via l'application.
Mais Curve ne s'arrête pas là. Il propose également des fonctionnalités intelligentes, telles que la possibilité de définir des règles de routage spécifiques. Par exemple, vous pouvez configurer Curve pour qu'il utilise automatiquement votre carte de crédit pour les transactions supérieures à 200€, optimisant ainsi la gestion de vos dépenses et de votre budget. De plus, toutes les transactions effectuées avec votre carte Curve sont instantanément catégorisées et suivies dans l'application, offrant une visibilité claire sur vos finances.
Pour les clients d'ING Luxembourg, Curve représente plus qu'une simple commodité ; c'est une porte d'entrée vers les paiements mobiles modernes. **En ajoutant vos cartes ING à Curve, vous pouvez les rendre instantanément compatibles avec Apple Pay et Google Pay**, contournant ainsi les limitations actuelles de la banque en termes de paiement mobile. Enfin, pour les lecteurs intéressés à explorer Curve, je partage [ici un lien d'inscription](https://www.curve.com/join?ref=thibaultmilan.com#BGO1N) (programme de recommendation[1](#fn:1)), qui vous permettra de découvrir par vous-même les avantages de cette plateforme.
## Intégration d’ING avec Apple Pay et Google Pay
L'intégration de vos cartes ING Luxembourg à Apple Pay et Google Pay grâce à Curve est un processus simple et direct. Commençons par la première étape : l'ajout de vos cartes de débit et de crédit ING à l'application Curve.
**Ajout des Cartes ING à Curve**:
- **[Téléchargez et installez](https://www.curve.com/join?ref=thibaultmilan.com#BGO1N)** l'application Curve sur votre smartphone.
- **Créez un compte** Curve si vous n'en avez pas déjà un.
- **Ajoutez vos cartes de débit et de crédit ING** à Curve en suivant les instructions à l'écran. Vous devrez entrer les détails de la carte et éventuellement passer par une étape de vérification.
Après avoir ajouté vos cartes ING dans l'application Curve, il est important de noter que vous recevrez votre carte physique Curve par la poste. Cette livraison peut prendre environ une semaine. La carte physique Curve offre les mêmes fonctionnalités que l'intégration avec Apple Pay et Google Pay, y compris la possibilité de faire des achats sans contact.
**Ajout de Curve à Apple Pay et Google Pay**:
- **Ouvrez l'application Apple Pay ou Google Pay** sur votre téléphone.
- **Sélectionnez l'option pour ajouter une nouvelle carte**.
- Au lieu d'ajouter directement une carte ING, **ajoutez votre carte Curve**.
- **Suivez les instructions** pour compléter le processus de vérification.
Désormais, lorsque vous effectuez des paiements avec Apple Pay ou Google Pay, Curve agira comme un intermédiaire, vous permettant de choisir quelle carte ING sera utilisée pour la transaction. Cette fonctionnalité est particulièrement utile pour gérer de manière intelligente vos dépenses et tirer parti des avantages spécifiques de vos cartes ING.
En conclusion, grâce à Curve, les clients d'ING Luxembourg peuvent désormais profiter pleinement des avantages des paiements sans contact via Apple Pay et Google Pay, une solution élégante pour une expérience bancaire moderne et sans friction.
## Conclusion
En résumé, **Curve offre une solution élégante et pratique pour combler le fossé entre les cartes bancaires traditionnelles d'ING Luxembourg et les technologies de paiement mobile avancées telles qu'Apple Pay et Google Pay.** Cette intégration permet non seulement d'accéder à la commodité des paiements sans contact, mais aussi de gérer intelligemment vos finances en sélectionnant la carte appropriée pour chaque transaction. Avec la réception de votre carte physique Curve et son intégration dans les applications de paiement mobile, vous disposez désormais d'une flexibilité sans précédent pour vos transactions quotidiennes.
**L'adoption de Curve par les clients d'ING Luxembourg représente plus qu'une simple mise à jour technologique ; c'est un pas vers une expérience bancaire plus intégrée, efficace et adaptée aux besoins du monde moderne.** Alors que nous continuons à naviguer dans l'ère du numérique, des solutions comme Curve démontrent comment la technologie peut non seulement simplifier, mais aussi enrichir notre vie financière.
Je vous encourage à explorer cette option et à découvrir par vous-même les avantages qu'elle peut offrir. N'hésitez pas à partager vos expériences et vos conseils dans les commentaires ci-dessous, et si vous êtes prêt à essayer Curve, pensez à utiliser le lien d'inscription partagé plus tôt dans cet article.
---
Programme d'invitation, si vous faites 5 transactions de plus de 5€ j'obtiendrais 5€. [↩](#fnref:1)
### How to create a RSS feed bot for Mastodon
URL: https://thibaultmilan.com/how-to-create-a-rss-feed-bot-for-mastodon/
Last updated: 2022-12-20T21:21:45.000Z
Everything started from [a toot from Joël](https://chaos.social/@jollysea/109544971382423186?ref=thibaultmilan.com) about the new [StroumMonitor](https://zesumme-spueren.lu/resources/stroum-monitor/?ref=thibaultmilan.com) from Creos. It's basically a forecast of the electricity network load, and it should help the Luxembourgish residents to adapt their usage depending of it. The forecast comes as a widget you can embed on several websites like [zesumme spueren](https://zesumme-spueren.lu/resources/stroum-monitor/?ref=thibaultmilan.com) (save \[energy\] together), an API and a RSS feed.
I took the liberty to [put all of those resources on data.public.lu](https://data.public.lu/fr/datasets/stroummonitor-la-meteo-de-lelectricite-pour-une-consommation-responsable/?ref=thibaultmilan.com), the open-data initiative from Luxembourg. If someone from Creos reads this, just create an account, then an organisation, and ping me so I can transfert the dataset to you 🙃.
Ok so, Joël was wondering if we could make a bot, on Mastodon, that would toot about the forecast. I immediately thought about this RSS feed and start assembling something with my favorites no-code tools: Zapier & IFTTT.
## The bot account
First, you need to create a new Mastodon account for your bot. I made one on my own Mastodon instance but you can make it on any server. It’s perfectly fine.
Then, and that’s important Mastodon etiquette here, mark the account as a bot. On Settings -> Profile, check the « this is a bot » checkbox. I would rather recommend too to complete the profile so people will get more confortable with following you.
Now, we need to create a new « app » for our account , in order to get an API key. Still on Settings -> Development -> New app.
You just need a name and to uncheck all the permission except `write`. More specifically, you can only check `write:statuses`. Leave all the other fields as it is and save.
You now have the application created, and on the details you can see App ID, Secret and Access token. That’s what we gonna need later!
## The no-code service
Okay so, here’s the deal. My favorite service to do that would have been [Zapier](https://zapier.com/?ref=thibaultmilan.com). Unfortunately, using Webhooks to post content on Mastodon is a premium feature. While I do have a premium account, I want to show you how to do it for free. So we gonna use the more simple platform [IFTTT](https://ifttt.com/join?referral%5Fcode=DPqXQkwEOeVzx-z84a8IlV8il7veJg6P&ref=thibaultmilan.com) .
Let’s click « Create »

And choose **RSS** for the « If This » part

Then « New feed item » and paste the RSS url `https://www.creos-net.lu/rss/stroumMonitor` and click « Create trigger »

Now select Add in the « Then That » part and choose **Webhooks** and « Make a web request ». Now fill those fields like instructed below:
- **URL** is `[your instance url]/api/v1/statuses?access_token=[the access token we talked before]`. In my case it’s then `https://m.thibau.lt/api/v1/statuses?access_token=[mytoken]`
- **Method** should be `POST`
- **Content Type** should be `application/json`
- **Additional Headers** should be empty
- **Body** should be your text, using the « add ingredient » button. In my case it’s `[EntryTitle] pour le [EntryContent]`. Why that? Simply because `EntryTitle` contain the text « Prévisions de la charge nationale » and the `EntryContent` is date and forecast like « Mardi - 20 décembre 2022 - Statut vert : Système électrique en équilibre - Soyons toutefois conscients de notre consommation »
Save and … TADAAAA
So, bit of explanation here. For every new RSS item, IFTTT will send a `POST` request to your Mastodon instance, to the statuses (toots) endpoint, using your access token so the server will know where to write the toot. That’s all.
## Going further & ressources
Obviously you can adapt this with any kind of trigger you want, thanks to the power of IFTTT. New tweet, new Facebook Status, new email received … or new reading in some smart IoT device.
I put under the ressources to the Creos open-data on the Luxembourgish portal, and my reuse. If you wanna check on it 😃.
- [StroumMonitor, la météo de l'électricité pour une consommation responsable](https://data.public.lu/fr/datasets/stroummonitor-la-meteo-de-lelectricite-pour-une-consommation-responsable/?ref=thibaultmilan.com)
- [StroumMonitor Mastodon Bot](https://data.public.lu/fr/reuses/stroummonitor-mastodon-bot/?ref=thibaultmilan.com)
**Disclamer**
IFTT Link are referral, I’ll get 10% off my subscription if and only if you subscribe for a paid plan.
### How much I gonna pay that iPhone 14 at POST ?
URL: https://thibaultmilan.com/how-much-i-gonna-pay-that-iphone-14-at-post/
Last updated: 2022-09-16T23:59:29.000Z
Every \~\~year\~\~ time Apple is releasing a new set of iPhones, my cell operator is listing them, alongside with incentives that seems too good to be true to enjoy. And we are use to it now, marketing is, most of the time, deceptive. We promise you a bargain but we make money on you. The pinnacle of it being dropshipping.
But let’s get back to [POST](https://post.lu/?ref=thibaultmilan.com). Years ago, I start publishing a Google Sheet to see if it worth it to buy an iPhone though POST or if it’s better to buy it aside. At that time, it was clear POST was making money on your back, selling you 2 years contracts and options that will makes you pay more than the price you would by hacking a contract without phone and buying it from Apple.
Last year, I improved my calculation, taking into account my current plan. The idea behind it is to know if it worth to change contract as well as buying the phone, and how much I’ll gonna pay for this change (phone + contract over the length of the contract + financing option). With the fact that, my plan is okay right now for my need, so the change would be just to help me finance the phone. Downgrading would make me needing to be more data consuming conscious,.
## The sheet
So I made a Google Sheet for iPhone 14 pro and iPhone 14 pro max (not iPhone 14 nor iPhone plus since I didn’t found them sold by POST, but I may didn’t searched a lot I confess).
[See the Google Sheet](https://docs.google.com/spreadsheets/d/1AN6bWyq8YQ40To-R3tW%5FN1dewdNC3bSvGEj9dQAAwOg/edit?usp=sharing&ref=thibaultmilan.com)
### How to use it?
1. Copy it into your drive
2. On the « My current plan » tab, change the `B2` cell, by entering your current monthly payment for your contract.
3. Browse the tabs, depending on which model and storage you want.
## What did I learned?
### POST public retail price of iPhone are overpriced (a little)
First of all, POST have a retail price for iPhones that are a bit more expensive than Apple. I’m talking about the price they say the phone cost. To me it’s a false advertising to say « this was the price and we are selling it now this much » since the « former price » is decided by yourself and is **not** the manufacturer retail price.
### POST wants me to commit
Second is, POST sell all those phones at FUCKING LOST just to have me engaged for 12 months (or more). If I’m going for a XS plan (well Ill not be able to enjoy much my phone over cellular but 🤷🏻♂️), it gonna cost me 921,12€ for an iPhone 14 Pro 128Gb.
- 1089 € for a phone of a public retail price of 1 285,07 €
- 29€ \* 12 month of plan
- 0€ of financing option
- \-42,99€ \* 12 month of my current plan.
If I’m willing to commit to 24 months, it gonna even cost me only 653,24 €, whatever the financing option I’m choosing (none or any of it).
### POST client acquisition / retention cost is 483 €
That’s the max saving I can make on a phone, without changing my plan size, for a 24month commitment.
That’s for an iPhone 14 Pro 512Gb.
### POST is fair
I was **very** pleased to observe that, whatever you’re using the financing option or not, you’ll not pay more money! That’s true. 0% interest! That’s really something we can appreciate as consumer those days.
The only exception, which I believe an error in their pricing since it’s happening only in that specific configuration, is for an iPhone 14 Pro 128Gb with an XL or Max contract, it gonna cost you respectively 61€ and 111€ more choosing the 25€/month financing instead of any other options, for a 24 month commitment.
That’s not the case for an iPhone 14 Pro 256Gb, 512Gb, or any iPhone 14 Pro Max.
---
I took me several hours to craft this Google Sheet, so if you want to tip me for this, you can [buy me a coffee](https://www.buymeacoffee.com/thibault?ref=thibaultmilan.com)!
Photo by [Victor Carvalho](https://unsplash.com/@chamavito?utm%5Fsource=unsplash&utm%5Fmedium=referral&utm%5Fcontent=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/iphone-14?utm%5Fsource=unsplash&utm%5Fmedium=referral&utm%5Fcontent=creditCopyText)
### How to fix Google Drive authorization issues
URL: https://thibaultmilan.com/how-to-fix-google-drive-authorization-issues/
Last updated: 2021-09-11T11:38:35.000Z
When you upgrade Google File Stream to Google Drive, especially on Big Sur, authorization problems may arise. This is how to fix it.
---
When I upgraded to Mac OS Big Sur, at the same time, Google decided to decommission Google File Stream in profit of Google Drive, which should be a nice addition since Google Drive include several new features such as multiple accounts and the ability to sync some of your computer folder with Google Drive (without needing to move those into Google Drive folder).
## So what's the tea?
Well, after upgrading Google File Stream to Google Drive and launching it, you got such an error message :

This tells you that you need to authorize some sub-program from Google Drive to run. Since a couple of major versions of Mac OS, Apple now enforce app to be signed or delivered from the Mac App Store to be run without any message. Google chose not to do it (they did do just a self-signature; in fact, which requires you to approve the first run), so that's why you need to confirm the first run.
But, apparently, Google reuses the same app id (*com.google.drive*), so mac OS doesn't display any authorization into the Privacy and Security panel. I thought at first of some app cache issues, but I did remove and clean the leftover of the app and reinstall it to have the same issues.
## How to fix it?
It's pretty straightforward but doesn't feel right at first. Let me explain.
1. Run the new Google Drive app
2. Close the error message
3. On the menubar, select Google Drive and log out. You should find a message inviting you to do so.
4. The app should restart. If not, close it and re-open it.
5. Log in back
6. The app should restart.
7. It works!
Why all of this is working? I don't know to be honest. Ghost in the shell, maybe? I suspect there's some server-side configuration at Google which the app load and your account seem using an old configuration for Google File Stream and not Google Drive.
### Covid Tracker Customer Registry Update
URL: https://thibaultmilan.com/covid-tracker-customer-registry-update/
Last updated: 2021-04-11T13:54:25.000Z
That's a while now I didn't post about the project but, behind the scene, I worked on the last bits that was missing in the app.
## Automation
If the automation still can be done with Zapier, I wanted a FREE option to do so. So the app can be 100% FREE if some venues want to use it but can't afford putting money in a solution. That's why I removed, for now, the email notification and wrap everything into Google App Script function.
I planned to add a bit of code to use G.A.S. email notification service (but it would mostly go through your Google Account used for setting up the sheet & the scripts). Not perfect but will still free to use.
## Documentation
I shoot and edited [a 10min video](https://www.youtube.com/watch?v=0Yx8EsiL4Ak&ref=thibaultmilan.com) to show in detail how all of this work. That was a necessary step if I wanted to push my app into the Glide Marketplace. Now waiting for their approval (I hope so 😁). It offer the app also free of charge through their marketplace.
If video is not your thing, I put also online a help center with everything to know about the app, how-to and some extra ressources. That's the place I'll add content if some questions received worth sharing.
## Support my work
First, I offer to setup the app for you and have a 30min video call with you to demonstrate how to use the app. If you're uneasy doing all the installation by yourself, it can be a good option to have the app for just 100€ and support me at the same time. I'll be more than happy to share with you some extra stuff for free as well 😃
Another option is to use my [buy me a coffee page](https://buymeacoffee.com/thibault?ref=thibaultmilan.com) which will give you access to some exclusive content, not just for this app 😃
### #nocode Thursday: Eurovision Song Contest
URL: https://thibaultmilan.com/talks/nocode-thursday-eurovision-song-contest/
Last updated: 2021-04-08T21:00:00.000Z
Tout les jeudis, j'organise [un stream sur Twitch](http://twitch.tv/thibault%5Fnocode?ref=thibaultmilan.com) où j'explore une des idées ci-dessous et construit, à l'aide d'outil no-code ou low-code une solution. C'est l'occasion de vous faire découvrir ou re-découvrir des outils simples et intuitifs pour démarrer vos projets, mais aussi d'avoir des conversations franches à propos des limites qui peuvent exister.
---
Cette fois ci [je vous ai demandé sur Twitter](https://twitter.com/thibaultmilan/status/1378734024315826176?s=20&ref=thibaultmilan.com) sur ce que vous aimeriez voir dans mon prochain live et c'est une application de vote [Eurovision Song Contest](https://eurovision.tv/?ref=thibaultmilan.com) entre amis qui l'emporte à 57,1% !
Alors qu'il ne reste que 47 jours (enfin à l'heure où j'écris ce post) avant la finale du 🇪🇺concours de l'Eurovision (les 18, 20, 22 Mai). Alors oui, il existe une app mobile officielle mais cette app ne permet de voter que si vous êtes dans un pays qui peut voter ce soir là.
Du coup, chaque année, plein de gens sur les réseaux sociaux partagent en direct leur commentaires et, pour certains [les plus assidus](https://twitter.com/WillMachinTruc?ref=thibaultmilan.com), font même des fiches de votes. Alors pourquoi ne pas voir ce qu'on pourrait digitaliser un peu là dedans?
### COVID-19 Customer Registry
URL: https://thibaultmilan.com/covid-19-customer-registry/
Last updated: 2021-03-20T14:12:14.000Z
Today I'm happy to push online the [COVID-19 Customer Registry page](https://covidluxembourg.app/contact-tracing?ref=thibaultmilan.com) on my website dedicated to smart and affordable solutions for small business during the sanitary crisis.
In some countries (like Belgium) those kind of registry are legally mandatory. In France I think it's still optional as well as in Luxembourg. But it's a nice addition to your efforts you are making to fight the spread and I'm sure your customers will be sensible to it.
But mostly what I saw are pen & paper solution, made quickly and without any investment (because a digital solution would be expensive). But during pandemic, asking people to use paper and sometimes even share a pen doesn't seems right isn't it?
**Introducing, the 🆓 COVID-19 Customer Registry !**
Made in an hour during my [#nocode Thursday](https://www.notion.so/nocode-Thursday-f3cc13b34cd94d479e9f0f915fc637cc?ref=thibaultmilan.com) steams over Twitch, where I'm exploring using no code tools to solve practical problem and needs, I spend a bunch of extra hours outside of it in order to package it properly and release it to whoever want to use it.
### #nocode Thursday: Simple contact tracing
URL: https://thibaultmilan.com/talks/nocode-thursday-simple-contact-tracing-2-2/
Last updated: 2021-03-11T20:00:00.000Z
Tout les jeudis, j'organise [un stream sur Twitch](http://twitch.tv/thibault%5Fnocode?ref=thibaultmilan.com) où j'explore une des idées ci-dessous et construit, à l'aide d'outil no-code ou low-code une solution. C'est l'occasion de vous faire découvrir ou re-découvrir des outils simples et intuitifs pour démarrer vos projets, mais aussi d'avoir des conversations franches à propos des limites qui peuvent exister.
---
Pour cette session, on va continuer avec l'app de 🦠 contact tracing que l'on a conçue la semaine dernière et on va explorer comment ajouter un peu de logique, d'automatisation, à l'aide de plusieurs outils.
- Zapier, plateforme vous permettant d'executer des "actions" à la suite de "déclencheurs"
- Google App Script, qui permet en écrivant quelques lignes de code de manipuler rapidement notre feuille Google Spreadsheet
Vous l'aurez compris, ici nous mettrons en parallèle une approche purement no-code avec une approche low-code.
📱L'app de la semaine dernière [est dispo ici](https://contacttracing.glideapp.io/?ref=thibaultmilan.com) si vous voulez jouer avec en attendant-
La feuille Google Spreadsheet est dispo ici
[Ici vous trouverez le "zap" utilisé](https://zapier.com/shared/2ad0e66265f81d765f3600c99850192d27118596?ref=thibaultmilan.com) par l'app pour supprimer automatiquement les données au bout de 21 jours. Vous pouvez le copier mais il vous faudra un compte payant (même le plus petit) pour utiliser le multi-step.
[Et le code pour le Google App Script est le suivant](https://gist.github.com/clawfire/dc215283007e258f16d4e20c027540be?ref=thibaultmilan.com) (avec en 1er mon petit fichier utilitaire).
### #nocode Thursday: Simple contact tracing
URL: https://thibaultmilan.com/talks/nocode-thursday-simple-contact-tracing/
Last updated: 2021-03-04T20:00:00.000Z
Tout les jeudis, j'organise [un stream sur Twitch](http://twitch.tv/thibault%5Fnocode?ref=thibaultmilan.com) où j'explore une des idées ci-dessous et construit, à l'aide d'outil no-code ou low-code une solution. C'est l'occasion de vous faire découvrir ou re-découvrir des outils simples et intuitifs pour démarrer vos projets, mais aussi d'avoir des conversations franches à propos des limites qui peuvent exister.
---
Pour cette session nous allons partir sur un sujet d’actualité, une application de 🦠 contact tracing #covid19 relativement simple. L'idée est de coller aux obligations faites dans plusieurs pays, notamment en 🇧🇪Belgique, de collecter les données des clients qui viennent en point de présence physique. Sauf que, tenir un registre papier ou demander aux gens de remplir un billet sur formulaire papier à donner ensuite aux équipes de ventes (coucou KFC) c'est vraiment pas top en temps de pandémie non?
On va donc faire un truc assez simple:
1. Tout commencera avec un QR code qui permettra de lancer l’app. Il pourra être placé à l’entrée ou alors sur chaque table. Il y aura un champs libre sur le QR code où le responsable de l’établissement pourra mettre un numéro de place.
2. Le client saisi ses coordonnées pour la traçabilité. On lui confirme l’enregistrement par email.
3. 21 jours plus tard, comme on aime bien respecter la 🇪🇺 #GDPR, on supprime automatiquement ses donnés. On pourra lui envoyer un email aussi pour lui confirmer (et travailler au passage la confiance du client dans la marque).
J'ai aussi rencontré ce genre de dispositif à l’aéroport d’ 🇳🇱 Amsterdam l'année dernière et j’ai trouvé cela super bien fait, simple et rapide d’utilisation. C’était sur base volontaire mais j’ai participé de bon coeur.
En attendant, si vous voulez un peu tester Glide, je vous propose de commencer ici [https://www.glideapps.com/r/baMac2hqbxPgACaVLPnR](https://www.glideapps.com/r/baMac2hqbxPgACaVLPnR?ref=thibaultmilan.com) (lien affilié, non rémunéré).
### #nocode Thursday: Mes petites plantes
URL: https://thibaultmilan.com/talks/nocode-thursday-mes-petites-plantes/
Last updated: 2021-02-25T08:00:00.000Z
Tout les jeudis, j'organise [un stream sur Twitch](http://twitch.tv/thibault%5Fnocode?ref=thibaultmilan.com) où j'explore une des idées ci-dessous et construit, à l'aide d'outil no-code ou low-code une solution. C'est l'occasion de vous faire découvrir ou re-découvrir des outils simples et intuitifs pour démarrer vos projets, mais aussi d'avoir des conversations franches à propos des limites qui peuvent exister.
---
🗓Ce jeudi à 19h, retrouvez moi pour la toute première session de #NoCode Thursday.
1h de live streaming où je vous montrerais comment utiliser l'excellent Glideapps pour créer une application mobile #pwa à partir d'un simple feuille GoogleSheets ! Et pour commencer doucement, on va faire une petite app pour gérer vos 🌱petites plantes de maison. Je sais pas pour vous mais moi, avec le confinement, j'ai commencé à faire une collection 🪴
🇫🇷 Ca sera dans la langue de Molière
💬 Il y aura un chat pour échanger
👉 [http://twitch.tv/thibault\_nocode](http://twitch.tv/thibault%5Fnocode?ref=thibaultmilan.com)
### Replacing my pi-hole with Ad Guard Home
URL: https://thibaultmilan.com/replacing-my-pi-hole-with-ad-guard-home/
Last updated: 2020-10-03T19:57:47.000Z
Nobody likes ads. But they are EVERY-FUCKING-WHERE nowadays, sadly. I was using the [adGuard browser extension](https://adguard.com/en/adguard-browser-extension/overview.html?ref=thibaultmilan.com) for chrome (but it's available for all browsers) for a long time and tried [pi-hole](https://pi-hole.net/?ref=thibaultmilan.com) project to clean my entire network at home.
The idea is simple. On a raspberry pi (on any other computer but a raspberry pi zero is 20€ and powered by USB and so tiny I can hide it somewhere and power it with my tv USB port or my router ...), you install a piece of software which is doing a proxy for DNS resolution. It looks on each request, compare it to a list of known ad platform or malware domain names. If it matches, it replies with an empty response; otherwise, it forwards it to the DNS of your choice ([Google Public DNS](https://developers.google.com/speed/public-dns?ref=thibaultmilan.com) for me, because Cloudflare had much more ethics issues than Google regarding DNS poisoning and what they are doing with your data).
Sadly, pi-hole seems to have some issues when it refreshes the list periodically, ending with a corrupted database and failing to answer DNS requests from your devices on your network. So I had to reinstall it from scratch and reconfigure everything on my raspberry every month or so. At some point, I stop doing it.
But a couple of weeks ago, I noticed on Twitter a discussion about someone ditching pi-hole for [adGuard Home](https://adguard.com/en/adguard-home/overview.html?ref=thibaultmilan.com), which is basically the same idea but a product made by adGuard themself. You can also install it directly on your mac or pc if you want, but since they are not always on, in my case, I went for the install on the raspberry pi. Which was super easy:
1. Install the raspberry as you would do for any regular project. Flash your card with the `raspian headless` (light), enable SSH access (just put a `ssh` file on the root of sd card) and configure your `wpa_supplicant.conf` at the root too.
2. Follow [the installation steps](https://github.com/AdguardTeam/AdGuardHome/wiki/Raspberry-Pi?ref=thibaultmilan.com), which are mainly copy-pasting two snippets of code. One is to download and unzip the program, the second to install and register it as a service (so it will run when you reboot your raspberry pi).
3. Open the browser to `your-raspberry-pi-IP:3000` and follow the little wizard. That's it!
Then you make your router always give the same IP to your raspberry pi and use it as a DNS resolver on your devices. On a computer, it's easy. On iOS, it's kind of too. But on Android 9 and above, it isn't very easy. Android 9 and above let you specify dedicated DNS on each network you are using, but you need a primary server and secondary server on both IPV4 and IPV6, which you don't have with this method 🙁.
But it also introduced VPN APIs, which can be used by apps to create a local VPN on your phone and do whatever they want with the entire traffic, like just handling the DNS request to some resolver you decide 😃 . After a quick search on the internet, I found some apps doing this but also spying on you or asking for a subscription to work ... like ... why? They don't even provide DNS resolving services, so ... WTF ?!
Then I found [DNS Changer - Lilly](https://t.co/b8DuwmxwJl?amp=1&ref=thibaultmilan.com), made by [AYKUT ÇEVIK](https://aykutcevik.com/?ref=thibaultmilan.com), on the only purpose of being able to use services like AdGuard with a free of ads experience. And I cannot thanks him much for his work on this app. It even features a quick setting tile to turn on and off the DNS redirection, which is very useful for me since my DNS resolver is just accessible from home.
### JAMStack
URL: https://thibaultmilan.com/talks/upcoming-talk-to-js-meetup-jamstack/
Last updated: 2020-09-20T11:12:45.000Z
You probably heard of it; there’s this movement of people saying obvious things like « bare HTML and CSS are faster than your CMS » or using adjectives like « blazing fast ». Ok, but what’s the JAMStack except for Javascript, API, and Mark-up? What are the advantages? Why it changes the paradigm of a lot our website creation process for the past ten years, and how to embrace it super quickly?
In this talk, we’ll quickly go through the 101 of JAMStack, see there’s nothing to fear about what you can do with JAMStack, and how you can transition from your present architecture sleekly. I’ll paint a swift and not exhaustive picture of the ecosystem you may want to look at to start.
### Github Actions
URL: https://thibaultmilan.com/talks/upcoming-talk-to-js-meetup-github-actions/
Last updated: 2020-07-01T19:00:00.000Z
On Wednesday, July 1, 2020
Github actions are the integrated way of doing CI/CD and automate anything related to your code repository on Github. From closing those 2 years old bug reports, pinging people on their PR when they are missing something (testing maybe?) to build and deploy your code into your cloud infra, let’s see some possibilities of Actions on Github.
This is the URL to join our event:
[live.luxembourgjs.com/b/adm-7am-efn](https://live.luxembourgjs.com/b/adm-7am-efn?ref=thibaultmilan.com)
The URL of the meetup community: [meetup.com/luxembourgjs/events/270910908/](https://www.meetup.com/luxembourgjs/events/270910908/?ref=thibaultmilan.com)
### Blockchain Usecase : Communication véhicule à véhicule
URL: https://thibaultmilan.com/talks/blockchain-usecase-communication-v2v/
Last updated: 2020-04-28T12:00:00.000Z
Faciliter la recharger de véhicule électrique en milieu urbain partagé est un "lightning talk" de 20min au cours duquel j'explore un cas pratique que j'ai monté chez [Smile](https://smile.eu/?ref=thibaultmilan.com) pour **EDF** et le **Pays de la Loire** sur l'utilisation d'une blockchain *de consortium* mais ouverte pour permettre de faciliter l'utilisation de réseau électrique de *rechargement lent* déjà existant et permettre d'améliorer l'image de leur utilisation par les utilisateurs de véhicules électriques.
Vous pouvez [retrouver mes slides sur mon Speakerdeck](https://speakerdeck.com/thibaultmilan/introduction-a-la-blockchain-et-cas-dusage?slide=22&ref=thibaultmilan.com) et retrouver la conférence complète ci-dessous:
### Blockchain Usecase : Recharge de véhicule électrique en milieu urbain partagé
URL: https://thibaultmilan.com/talks/blockchain-usecase-recharge-vehicule-electrique/
Last updated: 2020-04-21T12:00:00.000Z
Faciliter la recharger de véhicule électrique en milieu urbain partagé est un "lightning talk" de 20min au cours duquel j'explore un cas pratique que j'ai monté chez [Smile](https://smile.eu/?ref=thibaultmilan.com) pour **EDF** et le **Pays de la Loire** sur l'utilisation d'une blockchain *de consortium* mais ouverte pour permettre de faciliter l'utilisation de réseau électrique de *rechargement lent* déjà existant et permettre d'améliorer l'image de leur utilisation par les utilisateurs de véhicules électriques.
Vous pouvez [retrouver mes slides sur mon Speakerdeck](https://speakerdeck.com/thibaultmilan/introduction-a-la-blockchain-et-cas-dusage?slide=22&ref=thibaultmilan.com) et retrouver la conférence complète ci-dessous:
### Blockchain 101
URL: https://thibaultmilan.com/talks/blockchain-101/
Last updated: 2020-04-15T12:00:00.000Z
Blockchain 101 est un "lightning talk" de 20 au court duquel je vais tenter de vous expliquer simplement et rapidement ce qu'est la blockchain, afin que l'on puisse aborder dans d'autres mini-conférences, les futurs que ce genre de technology peut apporter.
Vous pouvez [retrouver mes slides sur mon Speakerdeck](https://speakerdeck.com/thibaultmilan/introduction-a-la-blockchain-et-cas-dusage?ref=thibaultmilan.com) et retrouver la conférence complète ci-dessous:
### L'IA de demain
URL: https://thibaultmilan.com/talks/l-ia-de-demain/
Last updated: 2020-04-10T12:00:00.000Z
L'IA de demain est un "lightning talk" en 2 x 20min au cours duquel j'explore les capacité de l'intelligence artificielle d'aujourdhui sous forme d'Etat de l'Art, puis où je tente de nous projeter dans les capacité de demain, en ayant un focus par secteur.
Vous pouvez [retrouver mes slides sur mon Speakerdeck](https://speakerdeck.com/thibaultmilan/quattendre-de-lia-aujourdhui-et-demain?ref=thibaultmilan.com) et retrouver la conférence complète ci-dessous:
### Upcoming Webinars
URL: https://thibaultmilan.com/upcoming-webinars/
Last updated: 2020-03-29T17:58:28.000Z
That's now 2 weeks we are staying home in Luxembourg to flatten the curve and prevent COVID-19 to spread. At Smile, especially in the Innovation Squad, we are already the rest of the year a remote team expect we are working in clusters of 2-3 peoples together on different agencies or remote sites. The only change now is we're staying home and are a little bit more alone.
To fight the growing feeling of disconnection and loneliness (which is perfectly normal to feel), Smile thought giving one webinar every day could be a fun idea. At 1:30 pm, every day, a Smile expert will tell you during 15min about an interesting topic.
In this spirit, I'm giving four 15 min lightning talk: one about AI and 3 about blockchain. It will be in French but we can arrange some English-speaking session if people want it.
If you're interested, just heads up on the [registration page](https://www.smile.eu/fr/groupeevenements/quick-talk-tech-smile?ref=thibaultmilan.com) to secure your seat, it's 💯% free!




### Rebuilding my Portfolio Serie
URL: https://thibaultmilan.com/rebuilding-my-portfolio-serie/
Last updated: 2020-03-21T13:19:49.000Z
A couple of years ago, I signed up on Medium.com, joining the promised of a platform focused on content and promoting the writers. The promise is still strongly held I think, but a lot of issues surface as the company struggle with securing a recurring income. They introduce a lot of annoying modal boxes, limiting users to 3 stories per days (which I find fair, to be honest), etc.
So, I still love the platform for the good people on it producing really interesting content (even is the recommendation engine suck BIG TIME), but it's become not what I want for my online presence as a professional. Not for my main source of presence. For writing some publication as I do for [Smile](https://smile.eu/?ref=thibaultmilan.com) with [Smile's Innovation](https://medium.com/smileinnovation?ref=thibaultmilan.com), it's perfect; but not for representing me online.
That's why I decide to migrate back my content to something I own.
Follow me in that process 😉.
1. Choosing your stack
2. Migrating content from Medium
3. Deploying JAMStack (spoilers)
### Innovation Morning
URL: https://thibaultmilan.com/projects/innovation-morning/
Last updated: 2025-09-21T13:13:36.000Z
Working as Innovation Evangelist at Smile, it's not always easy to get in touch with our customers or leads, let's say all our business relations, to talk about innovation topics such Blockchain, A.I., computer vision, or new methodologies such as Lego® Serious Play®.
I'm already involved in marketing events some agencies are doing every year or on a 6-month basis but it's just a small time-window to deliver a lot of content. Usually, during those, I'm doing our inspirational "*State of Innovation*" speech, which we update every time, and showcase some proof-of-concept or prototypes after.
My colleague Fabien Gasser started a movement in our French HQ in Asnières, inviting startups we sourced and want to work with to make them meet with our salespersons, our tech team, to chat about what they are doing. It's just a couple of hours, every month, and it started to get some traction. He leverages on that and organise small events like this with clients & leads in our Marseille's agency. And to support the talk of our invitee, he starts pitching where we are, what we are doing at Smile and what's the state of the art of the technology linked to this start-up.
## Topics
That's where I joined in the project, to speak about the state of the art of A.I. today, in terms of usage, of projects, and what will be achieved in the upcoming months. You can find more details about this [here](https://thibaultmilan.com/project/ia-today-and-tomorrow).
Since we are both certified LEGO® Serious Play® facilitator, we are also organising LSP introduction workshops during those events.
## Cities
So far, I did it in Nantes (FR) and Lille (FR). Fabien did a couple of time in Marseille (FR). But we can do it in every city where Smile has an agency. Let's get in touch if you're interested. Just hit the “Get in Touch” button below ⬇️
- Paris (FR)
- Nantes (FR)
- Bordeaux (FR)
- Toulouse (FR)
- Montpelier (FR)
- Marseille (FR)
- Grenoble (FR)
- Lyon (FR)
- Genève (CH)
- Lausanne (CH)
- Luxembourg (LU)
- Bruxelles (BE)
- Utrecht (NL)
### What to expect from AI today and for tomorrow?
URL: https://thibaultmilan.com/projects/ia-today-and-tomorrow/
Last updated: 2019-12-15T12:00:00.000Z
## It change the way we interact with digital content
Artificial Intelligence is a good way to reduce friction for end-user, by giving them more context aware interfaces, getting rid of mouse and keyboard, freeing them from the input devices to interact with "computers". Just like Theofore,the main character of [HER](https://en.wikipedia.org/wiki/Her%5F%28film%29?ref=thibaultmilan.com), talking to his AI assistant and getting vocal feedback and having a small screen with camera in his shirt pocket.
Using voice, and now our mind, is getting more and more natural. Because it lower barriers we have to interact with computer, A.I., digital content.
## It had impact on transportation, at large
From autonomous cab expirimentation conducted by [Lyft](https://self-driving.lyft.com/?ref=thibaultmilan.com) or [Uber](https://www.uber.com/us/en/atg/technology/?ref=thibaultmilan.com), or the more impressive [Waymo](https://waymo.com/?ref=thibaultmilan.com), to autonomous delivery of your groceries and parcels, ground transportation is changing at a rapid pace.
A lot of startups are already runing business in dedicated area at a scale of a city where you can order a cab through the dedicated app and an autonomous vehicule comes to pick you up.
Ground drone delivery is also getting more traction with well established company such FedEx or Amazon Prime experimenting in real life their technology. Rakuten, on their side, seems to have elevated the game by moving lockers and not just individual delivery.
## It revolutionize the healthcare
It's the easy one but still. Screening dozen of files from MRI or scanner is time consuming and human operator are not very good at doing time-consuming, repetitive tasks. The MIT leaded the path with breast cancer screening, with the heartbreaking realisation 5 years after the study that false-positive detected by the A.I. were real positive just undetectable for human capability at that time. Now Google release every months or so new models trained to [detect lung cancer](https://www.blog.google/technology/health/lung-cancer-prediction/?ref=thibaultmilan.com) or [diabetic retinopathy](https://ai.googleblog.com/2016/11/deep-learning-for-detection-of-diabetic.html?ref=thibaultmilan.com).
## It change the way people can interact with their world
Google, well known for their automatic subtitling service on Youtube, alongside an automatic translation service, is already making a good use of machine learning for the good of accessibility. They also have an app called "Live Transcribe" which works locally, on the device of the user and offline and display on screen everything said around the user, including cues like "laugh" or "dog noise". They also bring realtime live transcribtion with vocalisation on Google Translate on mobile. Next is [using the user own voice to vocalise the translation in the target language](https://google.github.io/tacotron/publications/speaker%5Fadaptation/?ref=thibaultmilan.com).
Apple, on OSX and iOS, automatically fill the alt attribute of every pictures on safari for screen reader using local computer vision to guess what's on the pictures.
At Smile, [we trained a model called KODA](https://innovation.smile.eu/2019/08/27/koda-giving-a-voice-to-vocally-impaired-people.html?ref=thibaultmilan.com) that use your smartphone or laptop camera to "see" people signing and convert it to speach, enabling people who cannot talk to be understand by people who don't sign.
## It change the way we are doing legal actions
[Do not Pay](https://www.theverge.com/2019/11/20/20973830/robot-lawyer-donotpay-ai-startup-license-agreements-sign-arbitration-clauses?ref=thibaultmilan.com) is a robot lawyer which started by helping you get away form parking fines, and now expand to let you cancel any kind of subscribtion by finding loophole in contract, get away of waiting line while calling public or private services, take appointment with administration for you, got on small court trial and automatically analyse contract and expenses you have on your cards and bank account to reclaim money.
The startup LawGeex [conducted a study](https://www.lawgeex.com/resources/AIvsLawyer/?ref=thibaultmilan.com) comparing the effectiveness of lawyers with artificial intelligence in assessing the quality of non-disclosure agreements. The study involved 20 lawyers with dozens of years of experience in companies such as Goldman Sachs, Cisco and others, as well as LawGeex’s proprietary AI platform. Participants evaluated the risks contained in five different NDA agreements by searching for 30 specific legal points.
## It help people getting decision making in Investment
Eurekahedge’s January [study](Eurekahedge’s January study of 23 hedge funds using artificial intelligence showed that they had much better results than those managed by people.) of 23 hedge funds using artificial intelligence showed that they had much better results than those managed by people.
## It will help us protecting our Environment
Google is testing trash sorting in their facility to prevent contamination and help the recycling system to work more efficiently. They also use computer vision to get information about beehives and study impact of decisions at a scale of a city on thoses.
## My complete keynote
Want to discover all about A.I., the good, the bad, the ugly? Let's chat to find where we are doing this talk near you! Just hit the "Get in Touch" button below
Meanwhile, you can find my entire keynote slides below:
### #GEN2019
URL: https://thibaultmilan.com/gen2019/
Last updated: 2019-09-23T12:00:00.000Z
Ça faisait 5 ans que je n’étais pas retourné au [GEN](https://gen.grandestnumerique.org/?ref=thibaultmilan.com), évènement incontournable de la Tech dans la région Grand Est. Peut être parce que trop éloigné ou juste que mon précédent job me tenait éloigné de tous ses super évènements, ne pouvant communiquer sur ce que l’on faisait de super chouette, Big4 oblige.
Du coup, cette année avec [Fabrice Dewasmes](https://medium.com/u/3d0e2c6e2b7e?ref=thibaultmilan.com) on est parti à l’aventure en terre messine pour découvrir et redécouvrir l’évènement. Déjà, le lieu. Le centre des congrès à 2 pas (littéralement) de la gare est un très bel écrin pour accueillir ce genre d’évènement.
Le #GEN c’est un évènement qui mets en avant le savoir-faire des entreprises, rends accessible les avancées technologie et essaie de permettre à tout à chacun, entreprises, étudiants, collectivités, de trouver les clés pour comprendre mieux ce qui se dessine dans un futur proche. Du coup, avec ma casquette de quelqu’un qui baigne dans ses sujets tous les jours, j’ai eu un peu de mal à accrocher aux conférences de vulgarisations, mais j’ai pris grand plaisir sur les conférences inspirationelles, surtout celles de [Jamy Gourmaud](https://fr.wikipedia.org/wiki/Jamy%5FGourmaud?ref=thibaultmilan.com), [Marie-Cécile Godwin Paccard](https://medium.com/u/40d31271ad4e?ref=thibaultmilan.com) et [Maxime VALETTE](https://medium.com/u/910f002db4d0?ref=thibaultmilan.com).

*Mes notes de la conférence de [Marie-Cécile Godwin Paccard](https://medium.com/u/40d31271ad4e?ref=thibaultmilan.com)*
Je vous propose donc un petit retour sous forme de snack, 1 société, 1 initiative de transformation numérique et 1 rendez-vous intéressant.
#### La société : [MIST Studio](http://miststudio.fr/?ref=thibaultmilan.com)

Créateur d’expérience en réalité (augmentée et) virtuelle, ils conçoivent des environnements 3D photoréalistes bluffant, notamment pour faire de la formation d’employés. [Fabrice Dewasmes](https://medium.com/u/3d0e2c6e2b7e?ref=thibaultmilan.com) s’est prêté au jeu et a donc appris à monter … une pompe? Un moteur? Quelque chose avec un joint et des vis, mais en respectant une procédure standardisée et les règles de sécurité. L’important étant l’immersion fort réaliste pour des coûts très raisonnables. Ils ont la bonne idée de travailler à la fois la partie 3D, mais aussi l’équipement.
#### L’initiative: [pole-emploi.io](http://pole-emploi.io/?ref=thibaultmilan.com)
Plateforme open-data du pôle emploi (en France donc), ils mettent à dispo des jeux de données temps réel sur les annonces, et permettent de référencer les services et produits qui les utilisent. Mais ce n’est que la 1ere brique, car l’initiative permet d’être :
- incubé dans « la Fabrik » comme startup d’état (c’est comme ça qu’ils ont créé pôle-emploi connect, des générateurs de cv super sexy, etc.)
- de venir pitcher son idée pour travailler avec pôle emploi (10'10'10' pitch, Q&A, délibération)
- de tester son business modèle et son produit/service avec des usagers (demandeurs d’emploi, employé pôle-emploi…)
- diffuser (là c’est plus de la pub/marketing, être invité sur des évènements…).

*Mes notes du mini-talk de pole-emploi.io et de la présentation de la startup d’État “Trait d’union”*
#### L’évènement: L’Odyssée de l’Innovation le 2 dec. à Nancy
L’idée est de faire du matchmaking entre des entrepreneurs, des startups, des entreprises prêtent à travailler en co-innovation avec des chercheurs qui ont fait des découvertes/travaillent sur des problématiques, mais qui ont du mal à trouver comment dépasser ce stade et imaginer une application produit/service. C’est organisé par la [CCI de Meurthe-et-Moselle](http://www.nancy.cci.fr/?ref=thibaultmilan.com), en partenariat avec [BPI France](https://www.bpifrance.fr/?ref=thibaultmilan.com) (qui à annoncé investir 800 millions € dans 2000 startups #deeptech d’ici 2023, 5 milliards € avec les effets de levier), le @CNRS, Grand E-Nov, Grand Nancy Innovation, l’institut Carnot, l’INRIA, l’INPI, SAYENS et plusieurs incubateurs de la région.

*La #deeptech c’est quoi ?*
Alors on en pense quoi du #GEN 5 ans après ? Le salon a gagné en professionnalisme et en attractivité avec de beaux intervenants, de beaux sponsors et des sujets toujours d’actualité. J’ai pus renouer avec une bonne partie d’amis et de relations professionnelles du Grand Est ([Frederic Schnur](https://medium.com/u/e99fcf9f2621?ref=thibaultmilan.com), [Stephane Tauziede](https://medium.com/u/95c08ab94aa9?ref=thibaultmilan.com) …) et prendre contact pour proposer un track #opensource lors de la prochaine édition, mais aussi blockchain, machine learning, computer vision, chatbot et assistants vocaux, toutes ses merveilleuses choses qu’on fait chez [Smile](https://medium.com/smileinnovation?ref=thibaultmilan.com).
### Blockchain for Vehicule 2 Anything connectivity
URL: https://thibaultmilan.com/projects/blockchain-v2v/
Last updated: 2019-06-18T12:00:00.000Z
In 2019, I was asked to develop use cases around blockchain for the [Cap'Tronic](https://www.captronic.fr/?ref=thibaultmilan.com) program. Funded by CEA and Bpifrance, Cap'Tronic organise workshops around new technology where specialists comes and share with the company members insight from new tech, what can be done and ask Q&A around their respective topics. I was invited to talk about **blockchain** technology following my use case developped for EDF and the Région Pays de la Loire for E.V. charging in shared space such as residences.
> In 2016, ⅕ cars sold worldwide could be plugged to internet. By 2020, it will be ¾ of them.
The only data considered as "personal data" and falling under consumer protection are:
\- blackbox data (the last seconds before an accident):
\- speed
\- seatbelt buckled or another
So only cops, judge, law enforcement can access those data. But what about
- LiDAR data
- obstacle detection data
- car diagnostic data
- hands on wheel position
- eye movment of the driver
- electronic payment at toll
- telematic such onStar system
- infotainment usage data
- passengers and driver weight
- car's internet cell data
- all data from smartphones connected by cable or bluetooth to the cars

> We are not far from when 100% of all new cars will come equipped with data model
Car manufacturers are the main data collector heres. [Mc Kinsey](https://www.mckinsey.com/~/media/McKinsey/Industries/Automotive%20and%20Assembly/Our%20Insights/Monetizing%20car%20data/Monetizing-car-data.ashx?ref=thibaultmilan.com) estimate the auto data market can reach between $450 billion and **$750 billion** in 2030\. **More than 200 data points** are collected everyday, and at least 140 of them have a commercial value. **But only 15% are used.**
## How to share those data between all the actors and users ?
It will require hardware, software, and a lot of legal paperwork. But it's not impossible. Because, so far, there's no enable to create new services. No percieve benefit for the end user; the scope is too narrow; how data is collected and aggregated is completly hidden.
.pn)
)
## Blockchain, as a communication enabler
Why it will change everything? It will benefit everyone, without discrimination; it will be transparent by design; it will be open to everyone (eventually).
## What are the use cases ?
- Car sharing, with vehicules which are no one property
- Toll payment, road usage and convoy
- E.V. charging, shared charging and grid services
- Usage based insurance
- Leasing & financing based on the Usage
- Digital Ledger for service book and car identity
- Preventing kilometric fraud
- Freight and tracking
- Vehicule datapoint sharing, marketplace
- Safer OTA update for vehicule, especially autonomous ones
Mobility wallet
Usage based & Autonomy
Fraud prevention
.pn)
)
## How does it create value?
### It create an ecosystem
One of the biggest restraint so far is the fact that data are in proprietary silos, hidden from everyone. We need to open it, using a teechnology standard to facilitate information exchange. It's also a completly new paradigm, fairer, where the data producer can finaly take advantage from his activity.
### Real time
Data freshness will be a key enabler for designing new services and product. At a global scale. No need to rely on outdated data generated hours ago.
### Secure and sustainable
No central and hegemonic authority, information is more fluid, visible to all, unalterable and cannot be taken offline by an actor who would like to stop playing the game.
## There's already big player in the competition
Without any big surprise, car manufacturers lire Renault, Toyota, Daimler are already on it. Visa, as a payment provider is looking after it. Some big Blockchain solution providers such BigchainDB, IOTA, Omnichain and, of course, some market initiative such VX Network.
.pn)
)
## My complete keynote
Want to know more ? Have question? Let's chat! Just hit the "Get in Touch" button below
### Vapid hosting on Heroku
URL: https://thibaultmilan.com/vapid-hosting-on-heroku/
Last updated: 2019-04-23T12:00:00.000Z
#### How to deploy a Vapid website on Heroku and configure the database, transfer your data but still have the file storage issue.
[Vapid](https://www.vapid.com/?ref=thibaultmilan.com) is a CMS that provide a dashboard to enter content, run with a lot of different kind of databases and let you do all of that from the HTML you are writing (thanks to [Mustache](http://mustache.github.com/?ref=thibaultmilan.com)/[Handlebars](https://handlebarsjs.com/?ref=thibaultmilan.com) like syntax). It’s my new go for any little side project even if I have one main issue there: Going to production.
Because Vapid is a node package that let you spaw a dev server and works on it but when it comes to production, you have the official paid service (starting at 7$/month/site) which support the dev of the software of course but seems a bit expensive when you compare to all the solutions you have nowadays: Now.sh, Heroku, AWS, …
And since a lot of people are looking about how to deploy on those kinds of services, I gave it a try with Heroku. Here’s my journey.
### Creating a new app

Let’s start by creating a new app, with the free tiers offered by the services.
That’s enough to start deploying, but then I recommend to switch to a paid plan to keep your site running, otherwise it’s paused between activity period and takes time to boot up again).
Once done, you should add a free *PostgreSQL* add-on. Go into the *Ressources* tab and search for postgres . Take *Heroku Postgres* and choose the *Hobby Dev — free* version.

### Preparing the vapid install
Now, I assume you already have a vapid site locally made and just want to deploy it.
#### Editing the package.json file
Since we’ll use *PostgreSQL* we need to tell vapid that we are using something else than the default *SQLite* database. And since it seems vapid check when starting we are installing the node packages for it (even if we don’t need it here) we’ll add it too.
You should add the dialect config inside vapid section. And we’ll use the environment variable DATABASE\_URL passed by default by Heroku to the application for connexion string.
See the pg dependency? It’s the *PostgreSQL* package I told you before. Sadly I didn’t find a way to get rid of it so far. I opened a bug on Vapid’s Github repo.
#### Deploying the app
Heroku provide 3 deployment methods :
- Using Heroku’s GIT
- Using Github
- Using a container registry
I choose the first one because it’s basically just adding a Heroku remote to your project and you are free to push there whenever you want. Which is really convenient I find.
It takes just a `heroku git:remote -a APPNAME` . That’s it.
Now, I just have to run a git push heroku master and wait a few seconds. My app is now deployed and accessible to the public 🥳.
### Optional: Importing your data
Since I already have some data I input into my Vapid website and didn’t want to have to re-create everything here’s how I did:
1. Connect to SQLite and export data into several CSV files
2. Connect to PostgreSQL and import my files
#### Exporting Data
I’m on a Mac, so I look quickly on the internet and find an SQLite client with GUI called [DB Browser for SQLite](https://sqlitebrowser.org/?ref=thibaultmilan.com) which is free 💰.
Open the `data/vapid.sqlite` and then browse each table and export them. I personally went for tableName.csv inside the same data folder. Just to keep organized.
#### Importing Data
That’s a little bit trickier but, don’t panic. First, you have to visit your deployed website and create an admin account. It which build the dashboard and create the different tables into the DB.
Go back on the Heroku admin panel of your app. Find the *Ressources* tab. You should have your *Heroku Postgres* add-on. Click on it to open, in a new window, the admin of this add-on.

Into *Settings* tab, you should find a *View Credentials…* button. Click on it!
At the point, I used [Postico](https://eggerapps.at/postico/?ref=thibaultmilan.com) which is shareware but works to import my data without having to pay for it. Using the credentials I connect to my Heroku DB and import my CSV files into each table of the PostgreSQL.
That’s all 👍🏼
### The elephant in the room
Nope, I’m not gonna talk about PHP 😅 but fact that you can’t use image datatype with this method. Why? Because [the file storage is ephemeral in Heroku](https://help.heroku.com/K1PPS2WM/why-are-my-file-uploads-missing-deleted?ref=thibaultmilan.com). That means each time your app is put in sleep, the file storage is deleted. In fact, your entire app is deleted until someone try to reach it again and then a new container is created and served. Your data into the DB are safe because the DB is not stored on that container but an independent, persistent, service.
What to do then? Storing files on separate file storage seems a good way to go. Unfortunately Vapid doesn’t provide at that time some mechanism to be able to upload elsewhere the data. It shouldn’t be too difficult to do but if they want to be really open to everyone tastes, they will need to develop a connector method or rely on a third-party tool like they did for the database abstraction to be compatible with AWS S3 and other providers.
### Formater en CLI sous OSX
URL: https://thibaultmilan.com/formater-en-cli-sous-osx/
Last updated: 2019-03-02T12:00:00.000Z
## Comment virer cette putain de partition Linux invisible par mon OS de ma clé USB et récupérer sa taille d’origine
TL;DR; vous pouvez utiliser diskutil eraseDisk \[format\] \[nom\] \[disk\] pour formater tout un disque avec un seul nouveau volume dans un format spécifique.
Tout à commencé quand j’ai monté le Google Voice Kit qu’on a commandé au boulot et que j’ai voulu jouer avec. Comme je suis plutôt studieux j’ai suivi les conseils du guide et j’ai été chercher la dernière image de la carte SD pour reflasher celle préchargée livrée avec le kit. Sauf que, comme je débutais avec Etcher (un super soft pour flasher des cartes) et que leur UX est un peu spéciale, j’ai commencé à flasher ma carte SD et une clé USB qui était branchée également.
Du coup, j’annule, je débranche la clé, flash uniquement la carte SD et me dit que je verrais ce souci de clé plus tard.
Plus tard donc, je découvre que OSX « cache » à l’utilisateur (du moins en interface graphique) les partitions Linux. Impossible de reformater ma clé et de récupérer ses 8 Go depuis Utilitaire Disque. Donc je me suis tourné vers une solution en ligne de commande. Et j’ai un peu cherché.
Tout d’abord il s’agit de trouver sous quelle référence votre disque (votre clé USB / Carte SD / whatever) est monté. Rien de plus simple on lance l’Utilitaire Disque, on sélectionne un des Volumes sur ce disque à gauche et on regarde la référence que je vous ai mise en rouge ci-après.

*Dans le cas présent ce sera donc le disk2, s1 indiquant que le volume C SD est en 1er position sur le disque.*
OK donc maintenant on lance un terminal et on va manipuler Utilitaire Disque en ligne de commande (car il est 20x plus puissant en CLI qu’en interface graphique).
diskutil list va vous permettre de confirmer le disque que vous allez utiliser, en vous indiquant les volumes qui y sont présents, et ce, même ceux que l’interface graphique ne voit pas 🙏🏼
diskutil eraseDisk exfat Trololo disk2 va me permettre de tout récupérer en moins de temps qu’il n’en faut pour le dire. J’explique. Je formate donc tout le disque disk2 en un seul volume au format exfat que j’appelle Trololo.
Voilà c’est tout, c’était plutôt rapide, mais je pense que ça peut dépanner certains d’entre vous un jour. Si vous avez apprécié mon article, vous pouvez le partager sur vos réseaux, ça me fera plaisir.
### Installer Google Drive File Stream sur macOS
URL: https://thibaultmilan.com/installer-google-drive-file-stream-sur-macos/
Last updated: 2018-05-03T12:00:00.000Z
J’ai récemment eu un nouveau mac pour le taf, et bien que j’utilise [homebrew](http://brew.sh/?ref=thibaultmilan.com) pour tout installer rapidement sur mon mac, en plus qu’[un petit dépot de code avec mes dotfiles](http://github.com/clawfire/dotfiles?ref=thibaultmilan.com), j’ai eu un petit soucis quand il est venu le temps de lancer l’outil de synchronisation Google Drive : Google Drive File Stream.
Celui ci demande à utiliser des fonction d’accessibilité avancée pour faire la synchronisation en tache de fond, ce qui est normal, et macOS bloque par défaut ce genre d’autorisations. Vous devez explicitement donner au logiciel des droits pour manipuler vos fichier. Normal.
Cependant il doit y avoir un bug dans le processus de la version actuelle de Google Drive File Stream qui fait qu’il plante lorsqu’on clique sur le bouton du message qu’il nous explique pourquoi il faut donner les droits. Du coup l’app ne tourne plus et impossible de l’autoriser dans le panneau de préférence Sécurité de macOS.
Voici donc le workaround que j’ai trouvé :
1. Lancez Google Drive File Stream
2. Lorsque le message (buggué en français d’ailleurs) de l’app s’affiche, ne cliquez pas sur le bouton mais lancez > Préférences Système > Sécurité
3. Là vous devriez voir un bouton Autoriser en bas de la fenêtre avec le non de Google à gauche. Cliquez dessus.
4. Revenez au message de l’app Google Drive File Stream, cliquez sur le bouton, l’app plante.
5. Allez quitter l’app via l’icône dans la barre macOS en haut puis relancez l’app. Ca marche !
Laborieux mais ça fonctionne ;)
*Originally published at* [*clawfire.net*](https://clawfire.net/2018/05/03/installer-google-drive-stream-file-sur-macos.html?ref=thibaultmilan.com) *on May 3, 2018.*
### Collections dans Jekyll et filtre where_exp
URL: https://thibaultmilan.com/collections-dans-jekyll-et-filtre-where-exp/
Last updated: 2018-01-14T12:00:00.000Z
Après avoir acheté un thème à 20 $ sur [Themeforest](https://themeforest.net/?ref=clawfire) histoire de dire qu’on a un travail assez pro (OK le code HTML & CSS ne sont pas toujours supra propres, mais ça fait le job largement) pour le site de mon mec, [DJ José Sanchez](http://djsanchez.eu/?ref=thibaultmilan.com).
Dans un premier temps j’ai modifié la page HTML et uploadé le tout sur un hosting Gandi vite fait bien fait. Mais la mise à jour, c’est un truc chiant, on ne va pas se mentir. Tout ce qui est contenu qui a propension à expirer assez rapidement et à être produit en quantité va donc nécessiter beaucoup de travail.
J’ai donc choisi d’utiliser Jekyll pour gérer le contenu, un truc de base et rapide donc, que je peux utiliser depuis n’importe quel périphérique avec une connexion internet et mon accès GIT.
Bref, un petit coup de `jekyll new` et hop on a les bases. On créé des helpers, on fait un fichier `home.html` de layout et hop. J’ai reproduit le site.
### Les Collections
Les collections c’est un truc super pratique de Jekyll qui permet de faire plus que des pages et des posts. Il suffit de déclarer dans le `config.yml` la collection comme suit :
```
collection
- events
```
Ensuite il suffit de mettre vos fichiers `.md` dans un dossier `_events` dans mon cas (donc `_` \+ nom de la collection) et tout sera dispo dans `site.events` (donc `site.[collectionName]`).
### Itérer sur les collections
La manière la plus simple est de faire un `{% for event in site.events %}` (une boucle) et on récupère dans event les infos de chaque fichier `.md` et les données du FrontMatter.
Mais dans mon cas je voudrais pouvoir :
1. Trier par date (bah oui ce sont des évènements)
2. N’afficher seulement que les évènements qui ne sont pas passés. Pour cela on pourra compter sur la variable site.time qui renvoie la datetime actuelle.
Pour atteindre cela on doit passer par le stockage dans une variable intermédiaire, via `{% assign ... %}` . Cette fonction supporter qu’on la chaine avec des filtres.
Le filtre `| sort: ...` est la réponse à mon premier point. En effet par défaut c’est le nom de fichier `.md` qui donne l’ordre. Et à moins d’être à 100% sur de se donner une hygiène de convention de nommage, il est plus sur de trier.
Le filtre `| where: ...` semble de prime abord être une bonne solution. Mais il ne permet qu’une comparaison avec l’opération `==` . Dans mon cas j’ai besoin d’utiliser `>=` . Mais pas de panique, Jekyll inclus depuis quelques versions maintenant le filtre `| where_exp: ...` qui va nous donner tout ce que l’on veut.
#### where\_exp
Alors OK, mais comment il marche ce super filtre ? Parce que la documentation est quand même super chiche sur le sujet. C’est très accès “it just works” …
Sauf que dans mon cas, cela ne marchait pas … car je n’avais pas compris que le premier argument devait être la variable dans laquelle on va pouvoir effectuer une comparaison. Je soupçonne d’ailleurs que cette variable puisse être soumise à collision. Dans l’exemple ci-dessous, j’avais utilisé event à la place de item et cela ne marchait plus du tout.
Ci-dessous, le code fonctionnel pour ne prendre que les évènements non encore passés et triés par date :
```
{% assign eventList = site.events | where_exp: 'item', 'item.date >= site.time' | sort: 'date' %}
{% for event in eventList %}
{% endfor %}
```
### That’s it !
Ce post vous a aidé ? N’hésitez pas à me le dire sur [Twitter](https://twitter.com/thibaultmilan?ref=thibaultmilan.com) , à commenter et partager cet article sur tout vos réseaux 😉.
Photo by [Kevin](https://unsplash.com/photos/w7ZyuGYNpRQ?utm%5Fsource=unsplash&utm%5Fmedium=referral&utm%5Fcontent=creditCopyText) on [Unsplash](https://unsplash.com/search/photos/code?utm%5Fsource=unsplash&utm%5Fmedium=referral&utm%5Fcontent=creditCopyText)
### Configurer l’APN POST (Luxembourg) sur Android
URL: https://thibaultmilan.com/configurer-l-apn-post-luxembourg-sur-android/
Last updated: 2017-05-04T12:00:00.000Z
J’ai enfin récupéré mon Nexus 6P tout beau tout neuf (merci l’échange par Google/POST) et, comme lorsque je l’avais acheté, la connexion internet mobile était super lente. Genre 40Kbits/S, j’ai testé sur [Fast.com](http://fast.com/?ref=thibaultmilan.com) 😖
Du coup, je me suis rappelé que POST pousse des configuration d’APN mobile toutes pourries pour … du WAP 🙀 Et le pire c’est que lorsque vous les appelez pour demander les settings à insérer soit vous tomber sur quelqu’un qui vous dis que ce sont les bon (lol) soit que tout est ok de leur côté qu’il n’y a pas de configuration à faire du votre 🙄.
- **APN :** web.pt.lu
- **Proxy :** laisser vide
- **Port :** laisser vide
- **Nom d’utilisateur :** laisser vide
- **Mot de passe :** laisser vide
- **Serveur :** laisser vide
Pensez à sauvegarder, par défaut lorsque vous quittez l’écran Android **annule** les modifications !
Et voila, à vous l’internet mobile à plus de 15 Mbits/s 🎉
### Updating Attendize
URL: https://thibaultmilan.com/updating-attendize/
Last updated: 2017-01-19T12:00:00.000Z
After having hard time to get it work, I found nearly 0 documentation about how to update it…
I’m using the super duper [Attendize](http://attendize.com/?ref=thibaultmilan.com), a open-source ticketing system, for some of my activities. After having hard time to get it work, I found nearly 0 documentation about how to update it.
Fortunately, as it’s an open-source software, I was able to open an issue and ask the developer community around this software how to do it.
[Update procedure · Issue #285 · Attendize/Attendize I have 0.8 installed, 1.0 is out but no update procedure anywhere. Any clues ?](https://github.com/Attendize/Attendize/issues/285?ref=thibaultmilan.com#issuecomment-272705469)
So, in order to update your installation you have to :
1. Copy over files with the newer version (via SFTP)
2. Log-in with `ssh` to your server and enter `php artisan migrate` into the root folder to launch the database migration.
That’s it 🙌🏼.
I’m a little bit concerned about the FTP / SSH thing in 2017 so I’m gonna look to a better way to do it, with some CI tools to automate the file deployment and command running to migrate DB. Keep you posted 😉
### Student Guide Dec. 2016
URL: https://thibaultmilan.com/student-guide-dec-2016/
Last updated: 2016-11-24T12:00:00.000Z
Dans le cadre de mon activité de mentoring pour [NumericAll](http://www.numericall.com/?ref=thibaultmilan.com), je suis amené à suivre, accompagner et transmettre mon savoir à des personnes en reconversions qui souhaitent évoluer vers un métier de l’IT, au Grand Duché de Luxembourg pour la plupart.
Voici un guide que je leur destine, avec mes vérités, mes astuces, mes conseils et mes pistes pour bien démarrer dans le monde de l’IT dans la Grande Région.
### Personal Branding
Le marketing de soi est un point important pour tout nouvel arrivant sur le marché. Si un site internet, un portfolio et un compte Twitter ou LinkedIn bien approvisionné en contenu pertinent professionnellement sont un must à atteindre, il y a moyen d’avoir de la visibilité “à moindre effort” sur plusieurs sites ou plateformes.
- [LinkedIn Student](https://students.linkedin.com/?ref=producthunt)
- [Monster](http://monster.lu/?ref=thibaultmilan.com)
- [Github](http://github.com/?ref=thibaultmilan.com)
- [Stack Overflow Career](https://careers.stackoverflow.com/?ref=thibaultmilan.com)
- [ICT Job](http://ictjob.lu/?ref=thibaultmilan.com)
- [Moovijob](http://www.moovijob.com/?ref=thibaultmilan.com)
#### Fact #1
Vous n’êtes pas unique, votre portfolio ne sera pas le truc le plus fou de l’univers qu’un recruteur va voir. Ne passez pas trop de temps dessus. En général vous devez retenir que :
- Un wordpress avec un template à 40$ sur [Themeforest](http://themeforest.net/search?as=1&referrer=search&type=c&term=portfolio&category=wordpress&ref=clawfire) fait largement l’affaire. Mais si vous êtes développeurs, privilégiez une page d’accueil simple avec vos coordonnées et un lien vers votre cv et votre compte Github. Pour l’hébergement pareil, un pack hosting + mail coute 2€ / mois chez [Gandi](https://gandi.net/?ref=thibaultmilan.com) si vous prenez un nom de domaine chez eux (\~17€ / an). Sinon pour un site statique, [Github Pages](https://pages.github.com/?ref=thibaultmilan.com) est gratuit !
- Il existe des tas d’outils en ligne pour faire un cv attrayant rapidement : [Resume Creator](https://resume-builder.qwilr.com/?ref=thibaultmilan.com), [hack my resume](http://please.hackmyresume.com/?ref=producthunt), [I need a resume](http://ineedaresu.me/?ref=producthunt#/producthunt) (mon préféré), [jobCV](http://www.jobcv.me/?ref=thibaultmilan.com) et bien d’autres.
- Votre CV doit être disponible **aussi bien en Français qu’en Anglais**. De nombreuses entreprises vous demanderont des versions anglaises pour leurs clients.
- Vous. Devez. Parler. Anglais. N’ayez pas peur de faire des fautes ou d’avoir un accent qui vous donne l’air ridicule. Ce n’est pas ce qui compte et les gens en face de vous ne vont pas se mettre à vous rire au nez. Ils verront au contraire que vous faites des efforts. Vous serez sans doute testé sur votre niveau d’aisance en anglais lors d’entretiens.
#### Fact #2
Votre réseau est votre atout le plus précieux. Vous devez le travailler, le faire grandir, le développer. Participez à des événements communautaires, des conférences, des formations. Aidez sans attendre en retour votre réseau, les gens se sentiront redevable et vous aideront à leur tour le moment venu.
Ne jugez pas mais soyez conscient que vous serez jugé. Cela est valable pour l’attitude, la façon de s’exprimer, la critique que vous pourriez formuler ou votre tenue vestimentaire.
Tout le monde est gentil, tout le monde est beau. Ne parlez jamais en mal de quelqu’un ou d’une entreprise. Nuancez vos propos. Soyez critique sans critiquer.
Le Luxembourg est un marché très petit mais dense. Tout le monde connait tout le monde, si je devais juger au doigt mouillé je dirais que tout le monde connait tout le monde par 2 degrés de séparation.
#### Fact #3
Vous ne trouverez pas le job de vos rêves du premier coup. C’est normal et il n’y a pas de honte à cela. Votre but est de trouver un job dans votre nouveau domaine d’activité puis de vous forger une réputation, des bagages. Vous devez envisager votre carrière comme un voyage, une aventure. Vous n’êtes qu’au commencement.
### Places to be as a student
#### Meetup groups
Meetup.com est une plateforme permettant aux gens de créer des groupes d’intérêt dans lesquels des évènements peuvent être créés. Son utilisation a explosé ses deux dernières années et l’on trouve pas mal de groupes plus ou moins actifs. J’essaie de tenir cette liste à jour en fonction des nouveaux arrivants et des sortants qui sont devenus inactifs.
- [Antenne AFUP Luxembourg](http://www.meetup.com/fr-FR/afup-luxembourg-php/?ref=thibaultmilan.com) **#php**
- [Brussels PHP Meetup](http://www.meetup.com/fr-FR/BrusselsPHP/?ref=thibaultmilan.com) **#php**
- [ReactJS Meetup](https://www.meetup.com/fr-FR/ReactJS-Luxembourg?ref=thibaultmilan.com) **#react**
- [AWS User Group Luxembourg](http://www.meetup.com/fr-FR/AWSLuxGroup/?ref=thibaultmilan.com) : groupe d’utilisateurs de solutions **#amazon** web services **#aws**
- [JS Luxembourg](http://www.meetup.com/fr-FR/JSLuxembourg/?ref=thibaultmilan.com) : groupe à destination d’utilisateurs de **#javascript** mais aussi plus généralement du web **#css #sass #grunt #gulp #semantic**
- [Docker Luxembourg](http://www.meetup.com/fr-FR/Docker-Luxembourg/?ref=thibaultmilan.com) **#docker**
- [Luxembourg co-founder meetup](http://www.meetup.com/fr-FR/Luxembourg-Co-founders-Meetup/?ref=thibaultmilan.com) **#startup #cofounder** exposer son idée, travailler son pitch, partager des retours d’expérience et trouver un co-fondateur
- [InnoMates Luxembourg](http://www.meetup.com/fr-FR/Innomate-Luxembourg-Innovation-and-Creativity-in-Business/?ref=thibaultmilan.com) **#investors #entrepreneurs**
- [Luxembourg Entrepreneur & Startup Community](https://www.meetup.com/fr-FR/The-Luxembourg-Entrepreneur-Startup-Community/?ref=thibaultmilan.com) **#startup**
- [Startup Grind Luxembourg](http://www.meetup.com/fr-FR/Startup-Grind-Luxembourg/?ref=thibaultmilan.com) **#startup** groupe d’évènements un peu plus premium autour de l’entreprenariat et du monde des startups.
- [FinTech Luxembourg](http://www.meetup.com/fr-FR/FinTech-Luxembourg/?ref=thibaultmilan.com) **#fintech**
- [Coinplus](https://www.meetup.com/fr-FR/Meetup-Bitcoins-Blockchains-Luxembourg/?ref=thibaultmilan.com) **#blockchain**
#### Events
Certains évènements incontournables dans le monde de l’IT ponctuent l’année au Luxembourg. Que ce soit des initiatives privées ou publiques, il est toujours bon de savoir ce que sont ces évènements, à qui ils s’adressent et s’il peuvent vous être utiles.
- [Techup](http://www.techup.lu/?ref=thibaultmilan.com) : plateforme un peu en perte de vitesse ces derniers temps qui permet à tout à chacun de lister les évènements autour des technologies qui se passent au Luxembourg et dans la Grande Région.
- [Luxembourg Internet Days](http://www.luxembourg-internet-days.com/?ref=thibaultmilan.com) : évènement assez haut niveau pour les “élites” qui montrent la direction que prennent les “grands” au Luxembourg, ainsi que celle du pays.
- [ICT Spring](http://www.ictspring.com/?ref=thibaultmilan.com) est un évènement regroupant conférences, hackathon réservés aux étudiants européens (la Morpheus Cup), stands d’entreprises et de startups qui sont là pour recruter comme pour promouvoir leurs produits. Les conférences sont souvent plutôt de la vulgarisation avec pas mal d’invités internationaux, pas toujours super innovants mais qui permettent de voir où l’on en est à l’autre bout du monde.
#### Hackathon & co
Les hackathons sont des évènements intéressants car ils vous permettent de rencontrer d’autres développeurs et de mettre en avant vos compétences. Attention cependant, certains hackathons sont plus orientés business que développement, soit parce que le jury ne compte aucune personne pouvant apprécier le travail d’un développeur soit parce que ce n’est pas le but (je pense aux startup weekends par exemple)
- [Grand Est Numérique](http://grandestnumerique.fr/?ref=thibaultmilan.com) organise des hackathons dans toute la Grande Région tout au long de l’année sur des thèmes divers et variés.
- [BBQ GameJam](http://bbq.extra-coin.org/?ref=thibaultmilan.com). Les BBQ GameJam sont des versions raccourcies des GameJam, organisées à l’initiative de l’association [Extra Coin](http://www.extra-coin.org/fr/?ref=thibaultmilan.com).
- [GlobalGameJam](http://ggj.extra-coin.org/?ref=thibaultmilan.com) organisées chaque années par [Extra Coin](http://www.extra-coin.org/fr/?ref=thibaultmilan.com). Les Global Game Jams sont des sortes de défis de code et de créativité sur un laps de temps donné. Comme un hackathon.
- [Startup Weekend Luxembourg](http://www.up.co/communities/luxembourg/luxembourg?ref=thibaultmilan.com) : relevez le défi de faire émerger un concept de startup en un week-end. Attention de ne pas tomber dans le piège de vouloir faire du code à tout prix. C’est votre esprit d’analyse, de créativité et de pensée “out of the box” qui est mis à l’épreuve. Sans oublier vos talents de communiquant. Si vous vous sentez plus à l’aise avec du code, n’ayez crainte, les développeurs sont très prisés dans les équipes ;)
#### Stay hungry
- [ProductHunt](http://producthunt.com/?ref=thibaultmilan.com) : plateforme permettant de découvrir de nouveaux produits ou de nouveaux services. Souvent avant tout le monde. Souvent en beta.
- [Hacker News](https://news.ycombinator.com/?ref=thibaultmilan.com) : si vous trouvez ce site moche, vous avez raison. Néanmoins cela reste une des bibles en matières d’actualité et de nouveautés.
#### Stay foolish
- [StickerMule](http://stickermule.com/?ref=thibaultmilan.com) : le temple des stickers pour votre ordinateur qui représente votre techno ou service préféré. Cela vous démarquera lors des conférences, workshop en plus d’être cool et un peu décalé.
Vous avez apprécié cet article ? Vous voulez me faire parvenir un commentaire ? Vous pouvez me retrouver sur [Twitter](https://twitter.com/thibaultmilan?ref=thibaultmilan.com), [LinkedIn](https://www.linkedin.com/in/thibaultmilan?ref=thibaultmilan.com) ou [par email](mailto:hello@thibaultmilan.com). J’édite également [une newsletter](https://www.getrevue.co/profile/thibault?ref=thibaultmilan.com) avec pleins de web app, trucs & astuces pour développeurs, product designer, entrepreneurs, … N’hésitez pas à y jeter un oeil !
### Fixing homebrew on macOS Sierra
URL: https://thibaultmilan.com/fixing-homebrew-on-macos-sierra/
Last updated: 2016-08-07T12:00:00.000Z
Une nouvelle version de macOS (bye bye os X au passage) viens forcément tout exploser au niveau de homebrew. Comme toujours. Sans compter que si, comme moi, vous n’aviez pas encore déplacer vos casks depuis `/opt/homebrew-cask/` vers `/usr/local/Caskroom/` cela va nécessiter une petite étape supplémentaire apparemment dû à une restriction des droits sur `/usr/local/`.
### Step 1 : Mettre à jour homebrew
```
brew update
```
### Step 2 : Fixer les droits & réinstaller les build tools
```
sudo chown -R $(whoami) /usr/local
```
A ce moment là vous pouvez aussi vérifier que *brew doctor* ne vous retourne rien de mauvais. Ensuite il faut réinstaller les build tool natifs de macOS :
```
xcode-select --install
```
### Step 3 : Bouger vos casks dans le nouveau répertoire
```
mv /opt/homebrew-cask/Caskroom/* /usr/local/Caskroom/
```
Ensuite vous pouvez virer l’ancien dossier sans remords :
```
rmdir /opt/homebrew-cask/Caskroom
```
Et voila ! Vous pouvez installer sans aucun soucis vos cask et les mettre à jour. Un petit coup de brew upgrade pour la route et vous êtes bon 😉
### Mobilité Décentralisé
URL: https://thibaultmilan.com/mobilit-d-centralis/
Last updated: 2016-06-17T12:00:00.000Z
Ce weekend j’ai participé à un hackathon à [Level2](http://level2.lu/?ref=thibaultmilan.com) qui se trouvait être un “B-Side”. Mon interprétation de ce terme, appliqué au Hackathon sera “alternatif” dans le sens DIY, fun, sans se prendre vraiment au sérieux. Ca a donc été l’occasion de retrouver des partenaires de code, et de faire naitre un petit projet qui me trottait dans la tête depuis un moment.
## Mobilité centralisé
Il existe un organisme au Grand Duché, nommé la [centrale de la mobilité](http://mobiliteit.lu/?ref=thibaultmilan.com) dont le but est assez vague pour le public. De manière pragmatique, c’est une identité visuelle commune aux solutions de mobilité douce (bus, train, vélo, …). Ils fournissent aussi un centre d’appel pour de l’assistance. Enfin. Assistance est un bien grand mot. Disons qu’il vont plutôt faire des recherches pour vous sur leur site internet concernant des horaires. Si vous appelez pour demander des renseignements sur un retard, ou pire, vous plaindre, vous serez toujours accueillis par un “ce n’est pas nous, on ne sait pas”.
Couramment donc, je me plains sur Twitter des retards des bus / trains au Grand Duché en mentionnant la centrale de la mobilité puisqu’ils assument le rôle de communication centralisé. Bon, twitter pour eux c’est un flux RSS, ils l’indiquent d’ailleurs, [aucune réponse ne vous sera donné et vous ne serez même pas lu](https://twitter.com/mobiliteit%5Flu?ref=thibaultmilan.com).
## Décentraliser tout cela
Puisque l’organisme en charge de centraliser les informations n’offre pas à nous, utilisateur, satisfactions, nous avons décidé de nous ré-approprier la chaine de signalement.
Présentation qui ne se prends pas trop au sérieux du concept#### Comment cela fonctionne ?
Comme nous n’avions que 48h, et que les compétences en développement faisait défaut, nous sommes partit sur [Typeform](http://typeform.com/?ref=thibaultmilan.com) qui permet de faire de magnifiques formulaire qui passent super bien sur mobile, très riche & interactifs.

Comme on ne voulais pas payer un compte pro+ pour envoyer les données vers un autre service web (via webhook) on a utilisé [Zapier](https://zapier.com/?ref=thibaultmilan.com). C’est une sorte de IFTT, on manipule des blocs logiques qui font des choses.
*Exemple :* A chaque nouvel enregistrement dans le formulaire Typeform, envoyer certaines données à un service web (webhook).

Les données arrivent donc dans un service web, [Stamplay](https://editor.stamplay.com/register?refCode=41289e26&ref=thibaultmilan.com) . Stamplay c’est un service (encore un) qui permet de ne plus avoir de backend. Le backend est la partie cachée d’une application web. Et bien plutôt que de devoir la développer, on va utiliser un service qui nous permet de faire (je ne liste que ce qu’on a utilisé) :
- Sauver des données dans une base de données et les lire
- Manipuler des données ( via du code NodeJS )
- Créer des workflow de fonctionnement de manière graphique


*Gestion des utilisateur (y compris via facebook et twitter connect), modèle de données, stockage des données, workflows dans Stamplay.*


A ce stade, nous avons donc, sans avoir écrit une ligne de code, créé un formulaire permettant de saisir des données sur un rapport et de les transmettre à un système de stockage, qui va permettre de servir les données via une API, le tout automatiquement.
Reste donc à faire la partie affichage des rapports. J’ai utilisé [EmberJS](https://guides.emberjs.com/?ref=thibaultmilan.com) pour sa simplicité à utiliser les résultats d’une API directement comme modèle, et [SemanticUI](http://semantic-ui.com/?ref=thibaultmilan.com) qui apporte une touche moins “vu partout” que Bootstrap. Le code est disponible sous [licence MIT](https://github.com/clawfire/mobiliteit-decentral/blob/master/LICENSE?ref=thibaultmilan.com) sur Github.
[clawfire/mobiliteit-decentral](https://github.com/clawfire/mobiliteit-decentral?ref=thibaultmilan.com)
En plus de la liste des rapport, j’ai également commencé, sans avoir eu le temps de finaliser, une page permettant aux administrations d’indiquer que les rapports sont traités.


*La page d’acceuil qui affiche la liste des rapports & Le détail d’un rapport*
## What’s next ?
Est ce qu’on va continuer le projet ? Oui je pense. Il ne reste plus grand chose à faire pour que cela soit opérationnel et que l’on puisse le mettre en ligne.
Coté amélioration, j’aimerais remplacer le formulaire Typeform par une page de l’application qui liste les données, afin de pouvoir récupérer plus facilement la géolocalisation (et ne pas se baser uniquement sur les données EXIF de la photo) ainsi que pouvoir de manière interactive suggérer arrêt, ligne et n° de bus à l’utilisateur qui complète un rapport.
Et vous ? Qu’aimeriez vous avoir ?
### OSX 10.11 et l’option sans racine (rootless)
URL: https://thibaultmilan.com/osx-10-11-et-l-option-sans-racine-rootless/
Last updated: 2015-06-12T12:00:00.000Z
Avec la nouvelle version d’OS X, Apple introduit une nouvelle fonction de sécurité : le démarrage sans racine. L’idée est de contrer les malwares en passant certains dossiers comme */usr/bin* ou */usr/local* en immutable.
Il ne semble pas s’agir de ne pas avoir les droits en écriture, d’ailleurs si vous jetez un oeil ses dossiers sont accessibles en écriture. Non il semble que ce soit un nouvel état.
#### Comment faire ?
Plusieurs solutions circulent sur internet notamment celle de désactiver dans la *nvram* l’état *rootless*.
```
sudo nvram boot-args=”rootless=0"
```
#### Et si ça marche pas ?
Malheureusement dans mon cas, même après un reboot je suis toujours en *rootless*. Alors, comment faire ?
Mon souci principal est d’avoir *brew* et *vagrant* de fonctionnel. On peut installer *vagrant* via *cask* avec *brew* comme ceci :
```
brew cask install vagrant
```
Mais avant tout il faut rendre à nouveau */usr/local* accessible en écriture, réinstaller les outils CLI de *xcode* et mettre à jour l’intégralité de *brew*.
Quelques liens pour aller plus loin :
- [Vagrant ne peut plus fonctionner](https://github.com/mitchellh/vagrant-installers/issues/54?ref=thibaultmilan.com)
- [Cabal ne fonctionne plus](https://github.com/haskell/cabal/issues/2653?ref=thibaultmilan.com)
- [Le thread Reddit qui va bien](https://www.reddit.com/r/apple/comments/3994os/rootless%5Ffeature%5Fis%5Fin%5Fos%5Fx%5F1011%5Fand%5Fit%5Fdisallows/?ref=thibaultmilan.com)
### Do apps @ Hackathon GEN Metz
URL: https://thibaultmilan.com/do-apps-hackathon-gen-metz/
Last updated: 2015-05-08T12:00:00.000Z
Le weekend dernier se tenait le second hackathon organisé par l’association [Grand Est Numérique](http://grandestnumerique.org/?ref=thibaultmilan.com) à Metz aux Trinitaires. Cette année le thème était le commerce en centre ville avec les questions suivants :
- En quoi **le numérique peut se mettre au service du commerce traditionnel** d’une ville dans un contexte de transformation des modes d’achats et de consommation ?
- Quelles **opportunités le numérique peut-il apporter aux commerçants** qui doivent changer leur façon de travailler pour s’adapter au mieux?

Jour 2, 11:30 — Les équipes en plein développement dans le caveau des TrinitairesLes participants de ce tournoi de développement avaient 48 h pour trouver une idée, la prototyper et lui donner vie. Le tout autour de données précédemment ouvertes par la mairie de Metz, des collectivités territoriales et de la fédération des commerçants de Metz.

Jour 1, 22:07 Brainstorming en cours
[Thibault](https://lu.linkedin.com/in/thibaultmilan?ref=thibaultmilan.com) & son équipe ont choisi de partir sur la problématique de commander facilement & rapidement des repas en livraison. Après avoir écarté le radar à croissant ou kebab pour les sorties de boites de nuit, ils se sont orientés sur une application de commande en un clic.Les officiels & la presse étaient également au rendez-vous et ont pu prendre la mesure du potentiel d’une révolution numérique pas toujours bien appréhendée par le grand public ou les décideurs institutionnels.

Jour 2, 14:08 — La visite des officiels et de la presseAprès 48h dont quelques heures de sommeil, il est temps de monter sur scène pour pitcher son idée en 10min devant un jury composé d’entrepreneurs, de représentants de la ville de Metz, de l’université ainsi que de la fédération des commerçants.

Jour 2, 17:23 — Pitch (merci à @toutmetz pour la photo )Les grands vainqueurs sont [Emptio](https://www.behance.net/gallery/25737369/Emptio?ref=thibaultmilan.com), une application qui propose au client, géolocalisé, un parcours reliant le maximum de commerces pour des critères donnés (mots-clés sur le type de produit recherché, et temps disponible pour faire ses achats) et en fonction du point géographique d’arrivée dans la ville.
Thibault & son équipe, [la COGIP](https://twitter.com/hellgy/status/592413057999097856?ref=thibaultmilan.com), finiront 3es et remportent un prix de 250€.
Photo de @hellgy.
Lire [le compte rendu de Tout Metz](http://tout-metz.com/laureats-hackathon-gen-metz-2015-6723.php?ref=thibaultmilan.com) ou faites [une recherche sur Twitter](https://twitter.com/hashtag/HACKGENMETZ?ref=thibaultmilan.com) pour en savoir plus sur cet évènement
### Root Honnor 6 ( H60-L04 )
URL: https://thibaultmilan.com/root-honnor-6-h60-l04/
Last updated: 2014-11-16T12:00:00.000Z
J’ai récemment fait l’acquisition d’un superbe Honor 6 version EU (H60-L04) en remplacement de mon Nexus 5\. Je ne reviendrais pas sur le pourquoi du comment mais me concentrerais aujourd’hui sur comment passer root sur le Honor 6 version EU
#### Pré-requis
- adb & fastboot (brew install android-platform-tools)
- Unlock Code
- wget (brew install wget)
- SuperSU ([Download](http://s.thibau.lt/YYlS?ref=thibaultmilan.com))
#### Faire une copie de sauvegarde
C’est toujours important de faire un backup, surtout quand on flash.
adb backup -apk -shared -allou
- Démarrer en recovery
- Sélectionner Backup & Restore
- Sélectionner Bakcup to /sdcard
- Prendre un café, un second, un troisième
#### Récupérer son code OEM Unlock
A l’instar du Nexus 5 il nous faut un code pour unlock notre smartphone. Huawai as mis [une page web](http://en.club.vmall.com/emotiondownload.php?mod=unlock&action=pre&ref=thibaultmilan.com) en place pour le demander. Seulement petit soucis, le H60-L04 n’est pas disponible dans la liste. Pas de panique, vous pouvez éditer le select avec votre inspecteur web pour modifier n’importe quel `` avec la valeur `H60-L04` et hop ça tourne. C’est du javascript derrière qui génère votre code.
Le product SN est disponible dans Settings > About Phone > Status et bam ! le serial est là. L’IMEI aussi.
Pour le product ID il faudra composer un code service sur le clavier de composition d’appel : `*#*#1357946#*#*`
Notez le code pour la manipulation qui suit, dans un terminal.
```
adb devices
adb reboot-bootloader
// Attendez que le téléphone affiche un droid
fastboot oem unlock [YOUR-CODE]
// La mention unlock doit apparaître maintenant en rouge en dessous du droid
fastboot reboot#### Installer un recovery alternatif
```
**ATTENTION, installer un recovery alternatif empêche toute mise à jour OTA via l’outil EMUI Update**
Maintenant que nous avons déverrouillé le téléphone afin de permettre des modifications des partitions systèmes, nous allons installer un recovery alternatif. Celui de clockwordmod par exemple. Il en existe d’autre. Dans mon précédent [tuto sur FirefoxOS pour Nexus5](http://thibaultmilan.com/blog/2014/11/01/firefox-os-sur-mon-nexus-5/) je vous avais parlé d’un sympa également avec interface tactile. Bref. Pour installer cela on va télécharger ClockWordMod Recovery :
```
wget
mkdir Recovery
mv 0ByQQKrZjTB9laGVBN3FSUVpyd1U?e=download Recovery/CWM\_6.0.5.0.imgEnsuite on va l’installer
adb devices
adb reboot-bootloader
// On attends que le téléphone ai redémarré. On peut le tester avec :
fastboot devices
// on flash
fastboot flash recovery ./Recovery/CWM\_6.0.5.0.img
// une fois le flash terminé, on redemarre
fastboot reboot**Attention** Si le recovery vous demander si vous voulez redémarrer en utilisant le binaire root, dites oui !
```
#### I’m am Root
Ne vous reste plus qu’a installer un programme qui vous permet de gérer la délégation des droits roots aux applications lorsque celles ci le demandent.
Redémarrer en recovery (appuyer sur Volume Up + Down + Power).
Choisissez *Install Zip from SD Card* et choisissez depuis SideLoad puis :
```
adb sideload SuperSu.zip
```
Une fois l’installation terminée, allez au menu principal et sélectionnez reboot. Si l’utilitaire vous demander si vous voulez restaurer le root **dites non**.
Voila maintenant vous pouvez aussi aller sur le PlayStore pour aller mettre a jour SuperSU au besoin ;)
**Crédits**
[Post XDA pour Windows](http://forum.xda-developers.com/android/general/huawei-honor-6-india-variant-h60-l04-t2898080?ref=thibaultmilan.com)
### Firefox OS sur mon Nexus 5
URL: https://thibaultmilan.com/firefox-os-sur-mon-nexus-5/
Last updated: 2014-11-01T12:00:00.000Z
A cause de [Paris Web](http://paris-web.com/?ref=thibaultmilan.com) la semaine dernière, j’ai été conditionné grâce aux metres de stickers ( facile 10 mètre ) Firefox OS à vouloir tester cet OS mobile. D’ailleurs si vous en voulez, un petit commentaire , un [petit mail](mailto://stickersFirefoxOs@thibaultmilan.com) où tu me laisse ton adresse et hop !
Je savais qu’il était possible de l’installer sur mon Nexus 5 et je m’étais laissé dire qu’il y avait même un build officiel de la ROM pour Nexus 5.
**MENSONGES**. Le Nexus 5 n’[est que Tiers 3](https://developer.mozilla.org/en-US/Firefox%5FOS/Firefox%5FOS%5Fbuild%5Fprerequisites?ref=thibaultmilan.com) ce qui veut dire qu’il recevra des mises à jours pour corriger ses problèmes spécifiques avec FirefoxOS que si les périphériques Tiers 1 ( ceux qui ont nativement FirefoxOS ) et Tiers 2 ( le Samsung Nexus S qui va juste avoir 5 ans ).
**1er reproche :** Cibler des téléphones de pauvre ou obsolètes. Faire un peu son libriste élitiste snob qui ne veux pas trop que tu utilise son projet tu comprends. Il le fait pour lui et c’est deja super qu’il te laisse poser le regard dessus. Tu devrais être subjugué par l’honneur qu’il te fais. Lors d’une récente interview, les gars en charge du projet chez Mozilla annonçaient qu’il ne sert à rien d’être le 3e OS, qu’ils visent la seconde place, pour commencer. Mais mec si tu pense que des gens vont acheter des téléphones bas de gamme juste pour avoir Firefox OS tu te fou le doigt dans l’oeil et tu traverse ta tête … Espérons que celle liste évolue.
#### Faire une sauvegarde de vos applications & réglages
Connectez votre téléphone en USB et avec adb :
adb backup -apk -shared -allSi vous n’avez pas ADB : brew install android-platform-tools
Plus tard vous pourrez restaurer au besoin via
adb restore backup.ab#### Débloquer son bootloader
Si ce n’est pas déjà fait vous devrez déverrouiller le bootloader
adb reboot bootloader
fastboot oem unlockSuivez les instructions sur votre téléphone. **Cela effacera toutes les données du téléphone pour des raisons de sécurité évidentes**
#### Rootez votre Nexus 5
Personnellement le mien l’était deja depuis un moment mais vous pouvez utiliser [CF-Auto-Root](http://cfautoroot.com/?ref=thibaultmilan.com) si vous êtes sous Windows. La version pour Nexus 5 se trouve [ici](http://www.devfiles.co/download/dEHWyjmo/CF-Auto-Root-hammerhead-hammerhead-nexus5.zip?ref=thibaultmilan.com). En utilisant fastboot vous faites :
unzip CF-Auto-Root-hammerhead-hammerhead-nexus5.zip
fastboot boot image/CF-Auto-Root-hammerhead-hammerhead-nexus5.imgIl ne vous reste plus qu’à suivre les instructions
#### Pré-requis pour Compiler FirefoxOS
Le Mozilla Developper Network a publié des [instructions pour la compilation](https://developer.mozilla.org/en-US/Firefox%5FOS/Building%5Fand%5Finstalling%5FFirefox%5FOS?ref=thibaultmilan.com). En gros il vous faut :
- Git
- gpg
- ccache
- yasm
- autoconf 2.13
- gcc 4.6
- gnu-tar
- homebrew
Pour cela Mozilla mets à disposition un script :
curl -fsSL [https://raw.github.com/mozilla-b2g/B2G/master/scripts/bootstrap-mac.sh](https://raw.github.com/mozilla-b2g/B2G/master/scripts/bootstrap-mac.sh?ref=thibaultmilan.com) | bash**2e reproche :** Pourquoi fixer des versions ? Surtout pour autoconf. Ca fait juste chier les gens qui, comme moi, on deja autoconf d’installé … Du coup sur OSX Yosemite j’ai en plus du installer gcc 4.6 avec [brew](http://brew.sh/?ref=thibaultmilan.com) brew install gcc46
et changer la version de autoconf car je l’avais deja installé et il était déjà à jour :
brew tap homebrew/versions
brew unlink autoconf
brew link autoconf123Notez que si vous n’avez pas xCode, il faudra l’installer. Il est gratuit sur l’app store. Si vous obtenez un message comme quoi votre version n’est pas à jour, vérifiez avec la commande xcode-select -print-path si vous n’obtenez pas /Developer . Si c’est le cas, pas de panique, la commande suivante arrangera tout :
sudo xcode-select -switch /Applications/Xcode.app#### Pré-requis pour OSX
OSX c’est génial tout ça tout ça, mais le système de fichier est, par défaut, insensible à la casse. Pas de quoi fouetter un chat, surtout quand on sait que Adobe n’est pas foutu de faire fonctionner Creative Cloud sur un système de fichier sensible à la casse …
Pourtant si, \~\~comme moi\~\~ vous êtes développeur vous pouvez avoir vite de mauvaises surprises avec les systèmes de fichiers insensible à la casse. Et compiler FirefoxOS ne va pas faire exception. Mais bon pas de panique, [cela me connais maintenant](http://thibaultmilan.com/blog/2013/05/10/case-sensitive-mac-osx/).
Nous allons d’abord créer un volume sensible à la casse
hdiutil create -volname 'firefoxos' -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g \~/firefoxos.sparseimageEnsuite on la monte & on se positionne dedans
open \~/firefoxos.sparseimage
cd /Volumes/firefoxos/**Si vous êtes sous Montain Lion** et que vous recevez une erreur lors de l’installation des dépendances un petit coup de brew install mpfr — use-gcc devrait résoudre votre problème. Relancez la commande qui plante.
#### Compiler FirefoxOS (enfin)
Les commandes suivantes vont cloner le dépôt github de FirefoxOS, configurer le build pour Nexus 5, et enfin lancer la compilation. Attention, à ce moment là vous allez télécharger l’entièreté des Internets et lancer une simulation de la vie sur votre ordinateur. Non sérieusement j’ai bien du mettre 1h pour tout télécharger et 30min pour builder. Prenez un café, lisez un bouquin, glandez … ça va être long.
git clone git://github.com/mozilla-b2g/B2G b2g
cd b2g
./config.sh nexus-5
PRODUCTION=1 MOZILLA\_OFFICIAL=1 ./build.shSi tout se passe bien maintenant vous êtes en posession de quoi flasher votre téléphone avec adb et fastboot. Mais je ne voulais pas l’installer en écrasant mon OS mais juste le tester, alors on va créer une archive pour [MultiROM Manager](https://play.google.com/store/apps/details?id=com.tassadar.multirommgr&ref=thibaultmilan.com) (Installez et lancer l’app pour suivre la procédure d’installation).
#### Créer la ROM Firefox OS pour MultiROM Manager
On commence par créer un dossier et copier ce dont on a besoin dedans
mkdir rom
cd rom
rsync -rL ../out/target/product/hammerhead/system .
rsync -rL ../out/target/product/hammerhead/data .
cp ../out/target/product/hammerhead/boot.img .Pour information ici on utilise rsync pour éviter de copier les symlinks mais bien les fichiers liés. Il semble qu’il y ai des bugs sinon mais je n’ai pas trop compris pourquoi.
Ensuite une ROM Android a besoin d’un dossier META-INF qui contient le nécessaire pour effectuer l’installation / mise a jour. Les commandes suivantes vont créer ce dossier, y copier le script ainsi que le lanceur.
mkdir -p META-INF/com/google/android/
cp ../tools/update-tools/bin/gonk/update-binary META-INF/com/google/android/
curl [http://bluishcoder.co.nz/b2g/updater-script](http://bluishcoder.co.nz/b2g/updater-script?ref=thibaultmilan.com) \>META-INF/com/google/android/updater-scriptLe script de mise à jour est celui de [bluishcoder](http://bluishcoder.co.nz/2014/06/11/dual-booting-android-and-firefox-os.html?ref=thibaultmilan.com) et fonctionne très bien.
Enfin dernière étape, créer le zip qui va bien
zip -r9 b2g.zip \*
java -jar ../prebuilts/sdk/tools/lib/signapk.jar
../build/target/product/security/testkey.x509.pem
../build/target/product/security/testkey.pk8
b2g.zip signed\_b2g.zip
adb push signed\_b2g.zip /sdcard/TADAAAAA ! Vous avez votre zip poussé sur votre carte SD (ou le répertoire virtuel correspondant). Il n’y a plus qu’a utiliser MultiROM Manager pour l’installer et configurer le multi-boot.
Commencez par redémarrer votre téléphone avec adb reboot recovery, choisissez Advanced puis MultiROM et enfin Add ROM. Suivez les indications à l’écran en prenant soin de sélectionner Android, votre ZIP et zou !
Lors de vos prochains boot, par défaut au bout de quelques secondes votre téléphone démarrera votre OS régulier mais vous pourrez choisir Cancel pour sélectionner ce nouvel OS (nommé au départ signed\_b2g.zip).
### Apple SIM, pourquoi je vois cela d’un mauvais oeuil
URL: https://thibaultmilan.com/apple-sim-pourquoi-je-vois-cela-d-un-mauvais-oeuil/
Last updated: 2014-10-19T12:00:00.000Z
Apple a très récemment fait fuit une fonctionnalité nommée très sobrement Apple SIM[1](#fn-1911-1) permettant de ne plus avoir besoin de carte SIM et de changer facilement en quelques tapotements sur son écran d’opérateur. Si cela semble séduisant, il est important de rappeler que le 1er iPhone ne disposait pas de compartiment pour recevoir une carte SIM et qu’il a fallut attendre d’autres modèles avant de pouvoir les utiliser en Europe. Apple ferait donc machine arrière ?
**EDIT** @DandumontP me fait remarquer que seul l’iPhone4 CDMA n’as pas eu de compartiment SIM. Je dois délirer.
Regardons deja les points positifs avant de sortir mon argumentaire contre cette solution que je vois pour le moment d’un mauvais oeil.
#### Plus simple pour l’utilisateur
Il est vrai que d’aller acheter une carte SIM, se faire enfler par [des opérateurs téléphoniques un peu voleurs](http://orange.fr/?ref=thibaultmilan.com) sur les bords ou juste [pas professionnels du tout](http://orange.lu/?ref=thibaultmilan.com) avec du [personnel peu qualifié voir complètement à la ramasse](http://www.editus.lu/fr/orange-shop-esch-sur-alzette-383606?ref=thibaultmilan.com) c’est toujours un peu moche. Du coup la tentation de passer par son iPad / iPhone pour changer d’opérateur semble séduisante. Adieu le discours commercial, place aux chiffres et à la souscription en ligne.
#### Fin du blocage SIM
On peut espérer que la fin de la carte SIM verra du coup la fin du blocage SIM, technique utilisée par les opérateurs pour retenir captif leurs clients parcequ’ils sont trop gentils et t’on fait un prix sur ton téléphone ( en fait inclus dans ton forfait et qu’ils veulent récupérer ) . Même si en Europe une directive prévois que ce délais de blocage ne peut dépasser 6 mois et qu’en France on peut demander le déblocage gratuitement passé se délai, le plus simple reste de ne pas bloquer en premier lieu.
#### Roaming plus simple
Si on peut facilement acheter une carte SIM dématérialisée, le roaming, même s’il est appelé à disparaitre, sera grandement facilité. Fini les frais facturés par votre opérateur et place à un opérateur local. Tu va voir que ça va vite faire réagir les opérateurs qui vont revoir leurs tarifs de roaming à la baisse pour éviter un exode des utilisateurs
#### Une Compétition Internationale
Qui dit facilité de changement d’opérateur dis plus de concurrence. Il est ainsi tout a fait possible d’imaginer que l’on prenne un opérateur danois alors qu’on ne va jamais dans ce pays. Juste pvrcequ’il a des tarifs plus intéressants ou des services qui nous correspondent mieux. Un peu comme on peu le faire avec l’assurance maladie ( mais pas trop en France qui tiens à son monopole de la sécurité sociale ).
Il existe bien un projet déjà implémentée dans les iPhones & iPad ( et nul part ailleurs n’en déplaise aux détracteurs de la marque ) de possibilité d’utiliser **Internet EU** pour le roaming. TL;DR; Cela permet de passer pour internet sur l’opérateur qui coute le moins cher automatiquement mais c’est dispo qu’en Lituanie & Slovénie car les opérateurs vont se goinfrer jusque décembre 2015, date buttoir pour l’entrée en vigueur du dispositif. [2](#fn-1911-2)
Au dela de tous ses avantages, il y a un inconvénient majeur, qui efface tout les bénéfices possible selon moi.
#### Quid de la sécurité ?
La grande inconnue de l’équation est de la sécurité, car rappelons le, la carte SIM est un processeur cryptographique, et donc gère les différentes clés de chiffrement requise par le téléphone ainsi que la partie chiffrement des flux de communication.[3](#fn-1911-3) En clair c’est le composant qui assure le chiffrement de vos communications entre la tour relais de votre opérateur et votre téléphone. Bon après certains opérateurs, français par exemple, disons au hasard Orange, ne le faisait pas avant de s’être fait chopper. Mais bon.
Donc la carte SIM chiffre vos communication mais aussi un espace de stockage sur la carte pour, par exemple, les applications réseaux, votre carnet de contact, etc [4](#fn-1911-4) … Même si l’on dispose du fameux composant de sécurité qui assure les services TouchID & ApplePay, on ne peut en rien s’avancé sur sa capacité à assurer les services offerts par la carte SIM où la volonté d’Apple d’assurer ses services. Sans oublier que la carteSIM permettant d’assurer cela de manière bas niveau, ce que ne permettra sans doute pas de faire le composant de sécurité piloté par l’OS.
1. [http://www.theverge.com/2014/10/16/6990525/the-sim-card-is-about-to-die](http://www.theverge.com/2014/10/16/6990525/the-sim-card-is-about-to-die?ref=thibaultmilan.com) [↩](#fnref-1911-1)
2. [https://discussions.apple.com/thread/6541651](https://discussions.apple.com/thread/6541651?ref=thibaultmilan.com) [↩](#fnref-1911-2)
3. [https://fr.wikipedia.org/wiki/Carte\_SIM](https://fr.wikipedia.org/wiki/Carte%5FSIM?ref=thibaultmilan.com) [↩](#fnref-1911-3)
4. [http://www.fftelecoms.org/articles/presentation-du-profil-de-protection-de-la-carte-sim](http://www.fftelecoms.org/articles/presentation-du-profil-de-protection-de-la-carte-sim?ref=thibaultmilan.com) [↩](#fnref-1911-4)
### Airport Utility 5.x sous Maverick & Yosemite
URL: https://thibaultmilan.com/airport-utility-5-x-sous-maverick-yosemite/
Last updated: 2014-10-01T12:00:00.000Z
Alors qu’Apple nous a [supprimé depuis maintenant un bon moment](http://support.apple.com/kb/ht1731?ref=thibaultmilan.com) la possibilité de nous servir de notre bonne vieille Airport Express 1ère & seconde génération pour faire un pont entre notre réseau Wi-Fi et le port Ethernet, il se trouve que je ne sois pas tout à fait de cet avis …
Parce que prendre ses clients pour des cons ça va deux minutes. L’airport express a toujours su se comporter comme un client Wi-Fi qui permet de connecter des périphériques sur son port Ethernet, et donc de faire un pont entre les deux interfaces réseaux.
Donc quand Apple viens te dire que ta borne [n’est pas compatible](http://support.apple.com/kb/ht1731?ref=thibaultmilan.com) et va [désactiver son interface ethernet](http://support.apple.com/kb/ht1731?ref=thibaultmilan.com) si tu l’a connecte en client Wi-Fi, ça m’agace un peu. Surtout que tout cela viens de la mise à jour du logiciel de gestion des bornes Airport qui arrête de prendre en charge cette option de configuration, alors même que le logiciel de la borne, lui même mis à jour, continu d’en être capable.
#### Utiliser l’ancien utilitaire
Ca c’est la solution si vous tournez sous une version d’os x antérieure à Maverick. Il vous suffit d’avoir conserver l’ancien logiciel ou alors de le re-télécharger, il est encore [disponible chez Apple](http://support.apple.com/downloads/?ref=thibaultmilan.com#peripherals).
Si par contre tu as fait ta mise à jour vers Maverick ou Yosemite, trop de composants internes à l’OS on été mis à jour, notamment tout le mécanisme de signature du code avec Gatekeeper, et tu ne peux pas installer et / ou utiliser tel quel le logiciel
#### Utiliser un lanceur
[Un mec génial](http://coreyjmahler.com/?ref=thibaultmilan.com), Corey J. Mahler a eu l’idée, non pas d’aller bidouiller l’exécutable, ce qui serait possible, mais de créer [un lanceur](http://coreyjmahler.com/2013/10/24/airport-utility-5-6-1-on-os-x-10-9-mavericks/?ref=thibaultmilan.com) pour que ce dernier ai tout ce dont il ai besoin pour passer Gatekeeper et s’exécuter.
Ce mec est un génie ! Et il nous permet de télécharger gratuitement le [lanceur avec une copie de Airport Utility 5](http://coreyjmahler.com/2013/10/24/airport-utility-5-6-1-on-os-x-10-9-mavericks/?ref=thibaultmilan.com) sur son site. Cela fonctionne sur Maverick & Yosemite sans problème. Pensez juste à faire clic droit, ouvrir pour passer Gatekeeper et voila !
J’aimerais juste m’attarder sur un point super important pour moi. Ce mec ne s’est pas contenté de solutionner un problème à l’arrache et de repartager cela avec la communauté, il l’as fait de la bonne façon, sans altérer le logiciel éxistant, de manière à ce que vous puissiez utiliser le votre ou tout simplement vérifier le md5 de l’application originale pour voir que rien n’est modifié. Il le fait de façon à ce que vous puissiez être en confiance, en sécurité, et nous permet de nous rendre compte que plus de choses devraient être faites ainsi.
### Installer SVN 1.7 sur Debian Wheezy
URL: https://thibaultmilan.com/installer-svn-1-7-sur-debian-wheezy/
Last updated: 2014-09-15T12:00:00.000Z
Bien que je sois d’accord avec le fait que les gens qui utilisent encore SVN devraient être pendus sur la place publique éduqués quand à l’existence de système décentralisés comme [GIT](http://git-scm.com/?ref=thibaultmilan.com), mais il arrive parfois que vous aillez besoin de SVN.
Mon cas est assez simple, j’ai un client qui bosse sur un projet open-source avec presque 10 ans d’existence. Il y a donc encore quelques reliquats en SVN qui sont très, mais alors très rarement, mis à jours. Sauf que quand ça arrive et que composer te lâche dans les dents que tu as une version trop vieille de SVN ( 1.6 étant livrée avec Debian ) tu as l’air fin.
Et Debian ne propose pas plus que 1.6.x. Bien que 1.7.x & même 1.8.x existent. Dans mon cas j’ai été assez bête pour mettre à jour vers 1.8.x alors que le dépôt était en 1.7.x . Grossière erreur, ne pouvait checkout le dépôt je ne peux pas le mettre à jour vers 1.8.x et donc pas le checkout ( le serpent qui se mort la queue cette histoire). Ne voulant pas déranger mes collègues, j’ai donc désinstallé SVN 1.8.x et essayé de trouver comme installer SVN en 1.7.x … Du coup petit article pour que tu n’aies plus à chercher, futur moi, et toi aussi qui serait tombé par ici au hasard d’une recherche Google ou d’un flux RSS que tu pensais mort.
[Source](http://s.thibau.lt/XXUZ?ref=thibaultmilan.com)
### CNA : Les CMS sont nos amis
URL: https://thibaultmilan.com/cna-les-cms-sont-nos-amis/
Last updated: 2013-11-26T12:00:00.000Z
Le **jeudi 28 novembre à 19 h** j’aurais la joie d’être accueilli par le [Café Numérique Arlon](http://www.cafenumerique.org/arlon/?ref=thibaultmilan.com) pour lighting talk à propos des **CMS**. J’ai intitulé cela **Les CMS sont nos amis**.
Au programme :
- Présentation des CMS : qui, quoi, pourquoi, comment ?
- Avant/après les CMS
- Les différents types de CMS
- Les leaders du marché
- Les challengers
- Self Hosted vs SASS
#### Les slides
[Les CMS](http://thibaultmilan.com/wp-content/uploads/2013/11/Les-CMS.pdf) ( PDF avec mes notes )
[La vidéo de mes slides](https://vimeo.com/80605517?ref=thibaultmilan.com) pour ceux qui préfèrent
### It just works
URL: https://thibaultmilan.com/it-just-works/
Last updated: 2013-10-13T12:00:00.000Z
Il y a des sujets parfois délicats dans le monde du travail. Celui de la productivité ou de la qualité du travail fourni en est un.
Il y a des sujets parfois délicats dans le monde de l’informatique. Celui du respect des standards et des bonnes pratiques en est un.
S’il est bon de se fixer pour objectif d’être productif et de respecter les bonnes pratiques lors de notre travail, à nous développeurs informatique, je pense qu’il est bon de garder aussi un oeil sur une métrique importante. Ce que veut le client. Et le fonctionnement de ce que l’on est censé produire.

Overthinking by Maddi Gabriel — [http://flic.kr/p/bECNui\[/caption\]](http://flic.kr/p/bECNui[/caption]?ref=thibaultmilan.com)
**Est-ce que ça fonctionne ?**
La question principale à se poser avant de faire “mieux”. Il faut d’abord faire en sorte que cela fonctionne. Ne pas partir sur trop complexe, ne pas trop anticiper un changement futur ou vouloir trop de maintenabilité. Typiquement, il faut éviter à ce stade de faire du réutilisable. Attention, il n’est pas nécessaire pour autant de faire un truc sale. Bien au contraire. L’idée est de faire un truc qui fonctionne. Un [MVP](http://en.wikipedia.org/wiki/Minimum%5Fviable%5Fproduct?ref=thibaultmilan.com) en quelque sorte.
**Est-ce que cela répond au besoin du client ?**
Deuxième étape, s’assurer que ce qu’on a fait réponds au besoin du client. Pas au besoin qu’on pense que le client va avoir. Pas à celui dont on est sûr qu’il a voulu exprimer. Celui qu’il a exprimé.
**Est-ce qu’on a besoin de faire mieux ?**
Là c’est plus délicat. Il faut prendre en compte plusieurs paramètres, dont le temps restant par rapport au temps estimé. Si le client n’a jamais de temps pour revoir, refacturer et embellir son code; Il est possible, parce que nous avons pris une approche “It Just Work” d’avoir du temps à la fin de la réalisation de notre tache pour retravailler et faire mieux. C’est seulement à ce moment-là qu’on peut revoir le code. Et il n’y a pas de considération du genre “oui, mais on rogne sur notre marge” à avoir. Non. La marge a été ajoutée par rapport à l’estimation que vous avez faite sur cette tache. S’il vous reste du temps, utilisez-le pour faire mieux les choses, tout en conservant votre minimum viable fonctionnel (c’est là que vous pouvez vous amuser avec des branches GIT :) ).
**Facebook et son code procédural immonde**
Il se trouve qu’en 2007 apparemment suite à une mauvaise configuration de leur serveur, le module PHP n’ayant pas été installé une partie du code de [la page d’accueil de Facebook se soit retrouvé exposé](https://gist.github.com/nikcub/3833406?ref=thibaultmilan.com). Et il réapparait aujourd’hui sur [un GIST Github](https://gist.github.com/nikcub/3833406?ref=thibaultmilan.com) où tout le monde s’empresse de dire “Oh mon dieu que c’est sale” ( sans oublier quelques trolls PHP ). Alors oui c’est du procédural et on pourrait dire que c’est sale. Mais en cela fonctionnait.
Facebook est aujourd’hui le plus grand réseau social du monde qui compte 1 150 millions d’utilisateurs (octobre 2013), cotés en bourse, avec 5 100 millions de revenus en 2012 et dont le rang Alexa est 2, et qui connait sans doute les moindres recoins de votre intimité.
Alors oui c’est peut-être sale. Mais ça fait le job. Et ça le fait plutôt bien, je crois.
### #GEN 1
URL: https://thibaultmilan.com/gen-1/
Last updated: 2013-10-10T12:00:00.000Z
Mardi prochain, je participerai à **#GEN1** à Metz, organisé par l’association [Grand est numérique](http://grandestnumerique.org/?ref=thibaultmilan.com) où je vous parlerais de [Quantified Self](http://en.wikipedia.org/wiki/Quantified%5Fself?ref=thibaultmilan.com), de fitbit, de bracelets UP … de toutes ses données qu’on adore ( OK que j’adore ) collecter sur nous ( moi ) et ce qu’on peut en faire avec.
Pour en savoir plus, n’hésitez pas à consulter leur site internet, pour voir le programme et acheter un billet :)
### #GEN1 c’est quoi ?
# GEN1 c’est 1 journée, 6 tables rondes, plus d’une vingtaine d’intervenants professionnels, 200 participants… Infrastructures, e-commerce, Sécurité, Réseaux sociaux, business sur le web, visibilité, et bien d’autres…### #GEN1 c’est pour qui ?
- Acteurs du numérique
- Cadres et dirigeants d’entreprises du territoire
- Professionnels et étudiants dont le quotidien comporte des interactions essentielles avec les nouvelles technologies.### #GEN1 c’est où ?
> Chez notre partenaire Sem Metz Technopôle (CESCOM). De par son expérience depuis près de 25 ans et son positionnement au coeur de l’agglomération de Metz, la Sem Metz Technopôle est le carrefour des Rencontres professionnelles et la partenaire des Clubs et des Réseaux.
[#GEN1](http://grandestnumerique.org/gen1?ref=thibaultmilan.com) • [Réserver votre Billet](http://grandestnumerique.org/gen1?ref=thibaultmilan.com)
### PRISM
URL: https://thibaultmilan.com/prism/
Last updated: 2013-06-08T12:00:00.000Z
On a lu beaucoup de choses à propos de PRISM dans la presse ses derniers jours comme dans [Libération](http://www.liberation.fr/ecrans/2013/06/07/le-fbi-a-acces-aux-comptes-facebook-google-yahoo%5F909023?ref=thibaultmilan.com) qui principalement reprends la dépêche AFP concernant ce dispositif légal et le bruit ambiant que tout cela suscite. Décryptage.
\[alert-red\] Cet article traite de faits récents et / ou encore en train de se produire. Les données peuvent rapidement se révéler erronées ou dépassées. Vous êtes encouragés à contribuer via les commentaires.\[/alert-red\]
#### PRISM saykoi ?
PRISM est un dispositif légal, une loi, qui a été lancé par Bush et entériné par Obama qui permet d’aller se servir tranquilou pépère sur les serveurs des boites US, que les serveurs soient au USA ou non ( contrairement au Patriot Act qui permet la saisie de toute information stockée sur le sol US, ambassade compris ), si et seulement si cela **ne concerne pas** un citoyen US. Oui oui vous avez bien entendu le droit US dit que c’est OK de chopper les infos sur n’importe quel putain denfoiré d’ étranger bolchevique si ses infos sont récoltées / stockées par une boite US.
Alors pour le moment ce ne serait pas TOUTES les sociétés mais seulement une liste assez restreinte de poids lourds qui ont rejoins le programme petit à petit depuis son lancement en 2007, Microsoft en tête puisque c’est avec lui que c’est ouvert le bal. Tu penses bien, cher M$, que cela fait doucement rire [ta publicité qui sent le poisson pour dénoncer les méthodes de Google](http://thibaultmilan.com/blog/2013/02/17/scroogled/) qui n’aurait rejoint le programme que 5 ans après toi mon petit.
#### Quelles sociétés ?
Quelques poids lourds comme :
- Microsoft le premier dès 2007 avec qui le programme à commencé
- Yahoo en 2008
- Google en 2009
- Facebook en 2009
- Paltalk en 2009
- Youtube en 2010 ( historiquement Youtube a toujours été un peu “détaché” du reste de l’écosystème de Google )
- Skype en 2011, dont on pourrait consulter les chats **et sessions de vidéoconférence en direct** ( en même temps depuis qu’ils ont commencé à [supprimer les supernodes pour des serveurs en dur](http://arstechnica.com/business/2012/05/skype-replaces-p2p-supernodes-with-linux-boxes-hosted-by-microsoft/?ref=thibaultmilan.com), puis le rachat par M$ …)
- AOL en 2011
- Apple le dernier en date en 2012
- Des rumeurs parlent de Dropbox qui pourrait rejoindre la petite sauterie.
Retrouvez plus de détails et une [reproduction de la présentation powerpoint présentant PRISM](http://www.rue89.com/2013/06/07/cette-fois-big-brother-regarde-vrai-243067?ref=thibaultmilan.com) hideuse IMO qui a été [envoyé au WashingtonPost](http://www.washingtonpost.com/wp-srv/special/politics/prism-collection-documents/?ref=thibaultmilan.com) en tout premier.
#### Quel est le danger ?
En dehors de ce qui était déjà possible via le Patriot Act et qui touche toutes données hébergées au USA ( et Dieu créa les cluster Amazon EC2 et S3 en Europe ) cela concerne :
1. TOUS les non Américain uniquement
2. Toutes les données collectées par les sociétés citées ci-dessus
3. Un accès sans autorisation préalable, automatique, plein et entier, aux données.
4. Un accès par la NSA *( mais que fait le FBI ?? Mulder ? Scully ? Y a quelqu’un ? )*
Le danger est donc bien présent, surtout qu’on sait que l’Europe, et encore plus la France, ne se cachent pas de pratiquer de l’échange d’information avec les USA donc rien ne nous garantie qu’une fois les informations récupérées par la NSA elle ne va pas être refilées à un autre service puis transmises en dehors de la juridiction US.
#### Que répondent les intéressés ?
A ma connaissance, seul Google [s’est exprimé via la personne de son CEO Larry Page](http://googleblog.blogspot.fr/2013/06/what.html?ref=thibaultmilan.com) ( [version Fr dispo ici](https://plus.google.com/103432069351201228862/posts/WekSEmWFenB?ref=thibaultmilan.com) par l’aimable +[Maxime MARAIS](https://plus.google.com/103432069351201228862?ref=thibaultmilan.com) ) pour dire qu’ils n’ont jamais eu connaissance d’un tel dispositif. Décryptons d’un point de vue sceptique :
> nous n’avons rejoint aucun programme qui pourrait donner au gouvernement américain — ou aucun autre gouvernement — un accès direct aux serveursOui enfin bon regarde je place un portail web qui permet de faire des recherches et hop, plus d’accès direct, mais ça revient au même.
> En effet, le gouvernement américain n’a pas d’accès direct ou de “back door”A condition qu’on oublie les backdoors dans le noyau UNIX ou SELinux ?
> nous fournissons des données personnelles aux gouvernements uniquement en respect de la loi.Cool parce que justement c’est dans le respect de la loi ce truc tu vois. C’est légal. Moralement et éthiquement répréhensible ( c’est d’ailleurs pour cela que l’informateur a balancé le morceau ) mais légal.
#### Et donc ?
Donc à moins d’un rebondissement extraordinaire genre un discours d’Obama qui reconnaît la grosse boulette et promet de mettre fin à tout cela, je pense qu’on se trouve en présence d’un terreau fertile de nouvelles théories conspirationistes dont on ne saura pas le fin mot, qui officiellement n’existerons pas et où les quelques personnes qui oseront dire avoir des preuves seront traitées d’illuminées finies.
Personellement je trouve que c’est trop gros pour être vrai, mais je sais en même temps que le gouv. US à déjà la possibilité d’obtenir tout pleins d’informations. Pas aussi facilement. Mais c’est possible légalement et techniquement. Donc quoi ? Toute la presse découvre le pot aux roses ? Pour moi rien de neuf sous le soleil, et il se pourrait bien que ce powerpoint soit un vulgaire faux.
Edit : Parce que [Martin Vidberg](http://vidberg.blog.lemonde.fr/?ref=thibaultmilan.com) m’as fait bien sourire :

### Case Sensitive & Mac OSX
URL: https://thibaultmilan.com/case-sensitive-mac-osx/
Last updated: 2013-05-10T12:00:00.000Z
Cet article est le premier d’une série concernant mon environnement de développement. Aujourd’hui nous allons aborder le cas du [système de fichier sensible à la casse](http://fr.wikipedia.org/wiki/Sensibilit%C3%A9%5F%C3%A0%5Fla%5Fcasse?ref=thibaultmilan.com). PHP est sensible à la casse et de ce fait lorsque vous chargez des fichiers il faut faire attention à la casse dans le nom du fichier mais aussi dans le nom utilisé dans votre code. Sinon vous allez développer, tester, croire que tout passe et une fois déployé BAM ! Tout explose.
### Pourquoi ?
Pourquoi Mac OS est case insensitive ? Cela semble être une conner bétise sans nom non ? Historiquement Mac OS (< OS X) était case insensitive mais préservait la casse. Depuis Léopard (peut être Tiger même) la gestion des File System Case Sensitive à été ajouté à l’utilitaire disque (alors que HFS+ supporte le case sensitive depuis Panther). Cependant certaines applications ne sont pas compatible avec de tels systèmes de fichiers comme FileMaker Pro ou World of Warcraft (qui ne tourne sous aucun FS Case Sensitive d’ailleurs …). Et puis soyons sérieux. Pour le commun des mortels le case sensitive c’est juste … pain in the ass
### Créer un conteneur Case Sensitive
Plutot que de reformater tout votre disque en HFS+ sensible à la casse , ce que vous pouvez tout a fait faire avec l’utilitaire disque, je vous propose de créer un conteneur sensible à la casse pour y stocker vos fichiers de dev.
1. Ouvrez l’utilitaire disque
2. Choisissez nouvelle image

1\. Sélectionnez la taille maxi (ici 4.6 Go nous suffira)
1. Sélectionnez Un format sensible à la casse (journalisé si vous le souhaitez, pour vous servir de TimeMachine plus facilement)

1\. Format SparseBundle. Cela nous permettra de ne prendre que la place nécessaire sur le disque, donc éviter de pré-allouer l’espace ;)

Après cela vous choisissez où l’enregistrer, cela n’as pas vraiment d’importance.
### Monter le conteneur
Le montage de toute image disque sur OSX est aussi simple qu’un double clic. Sauf que cela ne nous laisse pas le choix du point de montage. Ce qui n’est pas du tout pratique.
#### Une fois
L’utilitaire hdiutil nous permet de faire cela en ligne de commande :
#### Au démarrage
La première fois je me suis dit “hey si je faisais un script automator ?” . Je peux en faire un .app qui peut être lancé au démarrage et dans les actions disponibles je peux exécuter un script shell (celui ci dessus) donc ça me paraissait pas trop mal. Et puis je me suis dit qu’on pouvait optimiser cela nan ? Les manipulations suivantes sont à faire avec votre image montée (double cliquez dessus simplement), peu importe où.
Maintenant vous pouvez éjecter votre volume et l’ajouter à vos éléments de démarrage via les Préférences Système, Utilisateurs et groupes , Ouverture . Voila :)
[Credit Photo](http://www.flickr.com/photos/35805601@N07/6946546976/?ref=thibaultmilan.com)
### URL Rewriting sous NGINX
URL: https://thibaultmilan.com/url-rewriting-sous-nginx/
Last updated: 2013-02-24T12:00:00.000Z
Suite à mon post sur [l’installation de NGINX](http://thibaultmilan.com/blog/2012/09/16/installer-nginx-avec-php5/) avec le support de PHP5, il est intéressant de voir comment faire ce qu’on fait le plus souvent avec un .htaccess sous Apache : de l’url rewriting.
#### Pourquoi de ne pas juste utiliser un .htaccess ?
Si la question semble pertinente de prime abord, la page qui [réponds à cette question](http://wiki.nginx.org/LikeApache-htaccess?ref=thibaultmilan.com) sur le wiki de NGINX démontre qu’il n’en est rien. En effet utiliser un .htaccess c’est comme se tirer une balle dans le pieds dans notre recherche de rapidité. Imaginez. A chaque appel de page, le serveur doit aller chercher dans tout les dossiers et sous dossiers du site à la recherche de fichiers .htaccess pour aller les parser et interpréter leur contenu, en fusionnant les instructions avec la config du serveur, celle de php et les éventuels autres fichiers .htaccess.
Voyez la perte de temps …
#### Le module Rewrite
Comme on peut le voir dans la [documentation concernant le mod rewrite](http://wiki.nginx.org/HttpRewriteModule?ref=thibaultmilan.com) de NGINX, la syntaxe est assez simple à utiliser. A base de if suivit d’une confition et de quelques mots clés, il est alors assez simple de mettre en place ses propres règles, directement dans le fichier vhost de votre domaine, dans la section server.
#### Conversion automatique
Mais pour les plus frileux / fainéants d’entre nous , il existe un outil qui se charge de faire notre conversion tout seul et de nous donner les instructions à insérer dans notre vhost. Il s’agit de [apache2nginx](https://github.com/mow/apache2nginx?ref=thibaultmilan.com) disponible sur github sous licence libre ( pas de précision sur quelle licence, mais c’est une condition nécessaire il me semble ) et il existe un page en ligne [prêt à l’emploi](http://www.anilcetin.com/convert-apache-htaccess-to-nginx/?ref=thibaultmilan.com).
### Scroogled !
URL: https://thibaultmilan.com/scroogled/
Last updated: 2013-02-17T12:00:00.000Z
Kesako ?! [Scroogled](http://www.scroogled.com/?ref=thibaultmilan.com) est un terme inventé par Microsoft lors de sa campagne de promotion de outlook.com , nouvelle version de son service de messagerie en ligne, gratuite (ou pas), pour *dénoncer* le fait que Google fait du commerce avec nos emails.
Donc Microsoft dénonce, mais quoi ? Le fait que Google propose de la publicité contextuelle à vos emails en trompant l’utilisateur, et j’insiste sur le coté fallacieux et la tromperie, car comme le suggère leurs vidéos, Google accéderait au contenu de vos emails.
Ce qui n’est pas tout a fait vrai. Déjà , personne ne lit vos emails, contrairement à ce qu’on peut se laisser suggérer par [leur video commerciale](http://www.bing.com/videos?mkt=en-us&vid=daf3e70b-2c71-4ba2-b792-f975eadbc2e0&from=sharepermalink&src=v5:share:sharepermalink:&from=mpl%5Fen-us&ref=thibaultmilan.com). C’est un algorithme automatisé qui analyse les emails afin d’y déceler une dominante et d’afficher des publicités pertinentes. De la même façon qu’on vous affiche de la publicité contextuelle lorsque vous surfez sur internet et effectuez des recherches dans Google ( ou Bing! hein … ).
Ensuite, Google ne nous prend pas en traite. Leur service d’email est gratuit **PARCE QU’IL EST MONETISE PAR DE LA PUB**. C’est le modèle du “gratuit” sur internet, en contrepartie de publicité. Car rien n’est gratuit sur internet. On est pas chez Emmaüs bordel, Google est une société, elle ne fait pas de la charité (enfin si mais quand ça lui permet de rafler des déductions fiscales). Google annonce clairement la couleur dès le début et en dessous de chaque pub “Why these ads ?” …
#### Et Microsoft ?
Bah contrairement à ce qu’ils annoncent, quand on lit les [privacy policies](http://privacy.microsoft.com/en-us/default.mspx?ref=thibaultmilan.com) de outlook on retrouve :
- La collecte d’information et le croisement de ses informations avec d’autres données d’autres sociétés externes ou service de Microsoft
- **L’utilisation de ses données dans le but de service des publicités contextuelles et personnalisés**
- La non revente de vos données **mais leurs partages avec des sociétés partenaires**
- L’envoi d’emails promotionnels de la part de Microsoft, ou de courriers, ou d’appels.
So ? Google ne m’envoit pas d’email publicitaires et ne m’appelle par pour me proposer un de ses produits lui. Du reste on est dans ce que Google fait, **rien de moins** .
Je ne vois pas trop où Microsoft veut aller avec ce genre de publicité qui :
1. les fait passer pour des gros blaireaux sur la toile, il suffit de regarder #scroogled sur Twitter
2. montre bien à quel point ce sont des gros crève-la-faim qui sont prêts à prendre leurs utilisateurs pour des gros pigeons, encore une fois, juste pour (essayer d’) écraser la concurrence.
Et puis bien sûr on ne parlera pas des sujets qui fachent comme l’antivirus gratuit de Microsoft qui supprime les programmes concurrents en les déclarant comme virus, ou de son programme Microsoft Genuine qui va juste user d’espions dans votre ordinateur pour savoir si vous avez une version authentique de Microsoft (entre autre).
### Le foutage de gueule de Tapbot
URL: https://thibaultmilan.com/le-foutage-de-gueule-de-tapbot/
Last updated: 2013-02-03T12:00:00.000Z
Comme beaucoup d’utilisateurs de Twitter sur iOS j’utilise TapBot sur mon iPhone et j’en suis ravis. La vison iPad est tout aussi satisfaisante et permet de faire tellement plus que le client Twitter officiel si basique, qui n’as pas été mis à jour depuis plus d’un an à part pour supporter les changements dans les API, qu’il est aujourd’hui impensable que je fasse machine arrière.
Alors forcément quand Tapbot annonce la bêta de son client pour Mac, je me jette dessus. Même si la première version a l’air d’une alpha, je me plaît a retrouver sur mon ordinateur toutes ses fonctions essentielles comme le filtre des clients Twitter (adieu twitcam), ou les hashtag, sans parler de la possibilité d’utiliser mon propre raccourcissent d’url. Bref je m’égare.
#### Tapbot tu chies dans la colle
On le savait des le début et c’est bien normal, la version finale de Tapbot sera payante. Et j’étais même ravi de payer pour un software de si bonne facture. Seulement comme beaucoup quand j’ai vu le prix, je suis tombé de haut.
**16,00€ pour un client Twitter.**
Mais ce n’est pas tant le prix que sa justification qui me foutent les glandes. En effet Tapbot justifie cela par le fait que les tokens API Twitter sont limités et qu’ils n’auront que peu de temps pour faire leur blé et rentabilise le développement de leur application
#### Les tokens Twitter
Sous couvert de vouloir donner priorités aux applications à forte valeur ajoute, Twitter ne donne plus qu’un nombre limite de token par application, de sorte à empêcher naturellement les clients twitters de prospérer. Parceque oui c’est chiant ses clients twitters qui n’affichent pas la pub que l’on envois via les tweets sponsorises et les trendings topics sponsorises …. Qui sont ils pour se permettre cela. Et en plus ils font mieux que nous avec toujours plus de service et d’ergonomie ? Non mais on a pas acheté tweetie y a 3 ans pour se faire dépassé quand même. Comment ça on n’as abandonné le développement du client officiel depuis plus d’un an ? Et alors ?
Donc voilà, maintenant une application peut être autorisé sur un nombre limite de compte. Et tant que les comptes ne retirent pas les autorisations de l’App sur leur compte, ils bloquent un token.
#### Comment sont gérés les tokens chez tweetbot ?
D’après ce qu’on pouvait lire dans une première version en ligne, Tweetbot gère de manière uniformise ses tokens entre les clients iPhones, iPad et iMac. Choix très judicieux, cela permet de ne consommer qu’un token pour 3 périphériques simultanés.
Cependant dans la justification du prix de l’application, Tapbot revient sur ses propos et annonce que les tokens sont gérés par application ( ils ont donc crées trois applications différentes chez Twitter ) ce qui fait qu’ils prévoient un pic important de nouvelles consommations au fur et a mesures que les utilisateurs arriverons. C’est une stratégie comme une autre, se défaire des utilisateurs existant pour se concentrer que sur les utilisateurs iMac, cela permet de faire repartir les compteurs à zéro.
Enfin pas vraiment. En effet toujours d’après le blog post, les utilisateurs bêta utiliseraient des tokens de l’application iMac et sont priés de révoquer l’application pour les libérer s’ils n’achètent pas l’application finale. Outre le fait que c’est totalement faux puisque nous n’avons pas eu à re-autorise l’application à accéder a notre compte Twitter , ce qui aurais été le cas si ils avaient effectivement fait une nouvelle application chez Twitter pour l’iMac.
Enfin le problème avec cette gestion, c’est qu’il va être assez difficile d’avoir une projection fiable de la consommation des tokens. En partant d’une application avec déjà des tokens consommes, on s’assure de ne pas en re-attribuer et d’avoir un faible taux de nouveaux utilisateurs. Avec une nouvelle application, on va avoir un pic et puis après quoi ? Comment évaluer et prévoir la consommation ? Impossible …
#### La limitation de tokens Twitter, une vrai limitation ?
On peut se poser la question. En effet les solutions ne manquent pas pour palier à ce problème. Comme par exemple contacter Twitter pour leur demander d’augmenter la limite des tokens. Tout simplement. C’est même une des solutions propose par Twitter eux mêmes. Il est également possible de procéder à un enregistrement simplifié & assisté d’une application pour chaque utilisateur, afin qu’ils utilisent leur propre clé API.
Mais non, Tapbot aime se réfugier derrière le grand méchant Twitter ( ce qui n’est pas faux ce l’on moi, Twitter deviens un truc un peu limite gerbant dans son rapport a son écosystème ) mais c’est trop simpliste de leur part. Et c’est décevant de la part d’une société qui a fait de si bon produit, au on aurait été ravis de payer massivement 5€ pour pouvoir l’utiliser sur notre Mac.
#### Une stratégie commerciale
Pur conclure j’évoquerais simplement l’hypothèse commerciale. Le problème n’est pas de l’argent à faire vote rentrer pour rentabiliser l’application, bien au contraire. Le but est d’amortir sur le plus long terme possible l’application. Avec un prix élevé, on réduis la demande pour l’application. Ainsi en restreignant le public, on peut vendre pendant plus longtemps l’application. Donc on est visible plus longtemps.
Et accessoirement on prends nos utilisateurs pour des cons en leur racontant n’importe quoi. Mais ça …
### Utiliser localStorage sur tout les navigateurs
URL: https://thibaultmilan.com/utiliser-localstorage-sur-tout-les-navigateurs/
Last updated: 2012-09-19T12:00:00.000Z
### Introduction
Avec l’arrivée d’HTML5, de superbes nouvelles techniques trop cool ont débarqués. **LocalStorage** en fait partit. **LocalStorage** permet de stocker sur la machine de l’utilisateur, dans une sandbox accessible uniquement par le site qui crée les données, des données pour ensuite les lires / éditer / supprimer.
> “Tu veux dire comme des cookies ?”Pas vraiment non. **LocalStorage** s’affranchit des limites des cookies ( 4kb max de donnée, chargement a chaque fois des données même si on ne s’en sert pas). De plus, puisque les cookies ont longtemps été utilisé pour espionner les gens, de plus en plus les désactivent dans leur navigateur, ou les efface. Du coup on perd les données enregistrés par effet de bord à cause des annonceurs peu scrupuleux (mais bon c’est leur boulot après tout). **LocalStorage** ne connaît pas ce problème.
\[alert-green\] Vous pouvez aller à la fin de la page pour retrouver un screencast qui couvre l’essentiel des points que j’aborde ici. \[/alert-green\]
### Comment ça marche ?
C’est juste le truc le plus simple que j’ai jamais vu en javascript. Il suffit d’utiliser les méthodes setItem() et getItem() .
- Si l’on veut stocker bar dans foo : localStorage.setItem(‘foo’,’bar’);
- Si l’on veut lire la valeur foo : var foo = localStorage.getItem(‘foo’); // -> “bar”
- Si l’on veut supprimer une valeur ? : localStorage.removeItem(‘foo’);
Voila c’est aussi simple.
### Persistance des données
Les données que l’on mets dans **LocalStorage** persistent tant qu’elles ne sont pas retirées par le site ou l’utilisateur, si vous voulez utiliser des données valables pour une session, devinez quoi ? Il suffit d’utiliser **sessionStorage** .
### Compatibilités et problèmes rencontrés
Ok ça semble être juste super simple et magique, mais vous allez me demander où est le piège ?
1. Ce n’est disponible que sur les navigateurs modernes , exit FF 2 et IE6 (plus d’infos sur la compatibilité ici)
2. C’est un stockage clé/valeur texte. Ce n’est pas du JSON. Exit la possibilité de typer ce que l’on stocke
Solutions
Si l’on avait juste à composer avec le fait de ne pas pouvoir stocker des données typées, je vous aurais recommandé d’utiliser JSON.stringify() et JSON.parse() afin de faire une sorte de sérialisation et de pouvoir conserver vos types. Mais l’on doit aussi composer avec le problème des anciens navigateurs, et il n’est pas question de passer par des cookies (on cherche à ne pas avoir de req. serveur pour cela, et de ne pas recharger les données a chaque chargement de page je vous rappelle !) . Comment faire ?
C’est là que Store.js arrive à la rescousse. Ce petit wrapper va nous permettre non seulement d’être compatible avec tout les navigateurs (oui oui tous, même IE6 … bon ok mais pas lynx ni netscape 2 ) mais aussi de sérialiser / déréaliser à la volée les données que l’on enregistre. Et sans rien perdre de la facilité d’utilisation de **localStorage** :
// Store 'marcus' at 'username'
store.set('username', 'marcus')
// Get 'username'
store.get('username')
// Remove 'username'
store.remove('username')
// Clear all keys
store.clear()
// Store an object literal - store.js uses JSON.stringify under the hood
store.set('user', { name: 'marcus', likes: 'javascript' })
// Get the stored object - store.js uses JSON.parse under the hood
var user = store.get('user')
alert(user.name + ' likes ' + user.likes)Pour la peine je vous partage même une petite video qui montre comment s’en servir (mais bon on vient d’en faire le tour, c’est plus pour l’aspect “hey cool un screencast”).
[localStorage and Store.js](http://vimeo.com/44159609?ref=thibaultmilan.com) from [The JavaScript Playground](http://vimeo.com/javascript?ref=thibaultmilan.com) on [Vimeo](http://vimeo.com/?ref=thibaultmilan.com).
\[alert-white\] Cet article a été écris dans le cadre de mon travail pour [VA Consulting](http://vaconsulting.lu/?ref=thibaultmilan.com)\[/alert-white\]
### 20min STFU
URL: https://thibaultmilan.com/20min-stfu/
Last updated: 2012-08-26T12:00:00.000Z
Aujourd’hui je tombe sur un tweet d’un ancien collègue qui partage [un article de 20min](http://www.20minutes.fr/web/982383-internet-vers-fin-mots-passe?ref=thibaultmilan.com) au nom aguicheur : **“Internet: Vers la fin des mots de passe ?”** . Et comme il faut s’y attendre, c’est beaucoup de bullshit, de merde, de non sens sepoudré d’incompétence et d’inexpérience crasse. Florilège …
> Devenu une source d’exaspération pour les utilisateurs (non seulement il faut trouver des mots de passe complexes et différents pour chaque site, mais en changer régulièrement), le mot de passe n’est plus suffisant aujourd’hui.Premier paragraphe & déjà 2 choses à dire. **NON** un mot de passe ce n’est pas compliqué à trouvé, ce n’est pas chiant, il y a des outils pour cela comme [LastPassword](http://laspass.com/?ref=thibaultmilan.com) qui est gratuit, multi-plateforme et multi-browser et qui va non seulement générer des mots de passe fort (et sécurisé) mais aussi les stocker pour vous, de manière sécurisée & cryptée, et vous permettre de les utiliser en toute simplicité. **Non** le mot de passe est suffisant, ce qui ne l’est pas, c’est les pratiques et procédures de sécurité employées par les entreprises sus-cité, qui de plus ne semblent pas du tout former leur personnels à la sécurité. Car oui la sécurité n’est pas une solution clé en main , **c’est un process**.
#### Utilisation du mobile à la place du mot de passe
Les solutions les plus farfelues existent, mais là on parle surtout de token unique généré sur le téléphone comme réponse au “les gens ne veulent pas s’identifier en deux fois” . C’est vrai que s’identifier uniquement avec un téléphone ca ouvre à :
- Le piratage via des applications malicieuses sur le téléphone, terminal peu protégé et vulnérable
- Le vol du téléphone, entrenant l’impossibilité d’accéder au service mais aussi permettant au voleur d’accéder au service. Pas de mot de passe en plus d’un token unique oblige
- L’impossibilité de se connecter si ton téléphone n’as plus de batterie, si tu ne l’as pas sur toi, potentiellement s’il ne capte pas (oui car je doute que le truc soit bien fait, venant d’une banque française … déja que les banques Luxembourgeoises oublient l’authentification en 2 étapes …)
#### Une clé
On parle donc d’une authentification physique, mais ne necessitant pas de code. Déjà que Verisign se fait pirater son système de stockage “invulnérable” de certificat basé sur le même modèle, là on se passe complétement du mot de passe. La clé pouvant être utilisé partout, on ne peut meme pas garantir un couple clé / machine … Quel interet donc ?
#### Un code visuel
On parle ici du code de déverrouillage d’android donc . Le truc qui à la place de 10^n combinaison ou n est le nombre de chiffre d’un code PIN, on ne peut utiliser 2 fois le meme noeud et on ne peut lier que des noeud contigus ? Ou alors du “smile to unlock” qui fait le plus de faux négatif de l’histoire des tests dans quelque domaine qu’il soit ?
#### Une phrase récité à haute voix
Avec toutes les possibilités de nos jours d’écouter, d’enregistrer, à votre insue vos conversations, avez vous *VRAIMENT* envie de cela ? Genre c’est plus sécurisé qu’un mot de passe connu de vous seul ?
#### La biométrie
Cf “un code visuel” , sans parler qu’on sait maintenant tromper tout les systèmes d’analyse biométrique existant. Reconaissance de visage, de l’iris, des empreintes digitales.
#### Un geste
C’est encore la seule idée fiable que je trouve dans le lot, cependant cela implique :
1. un périphérique d’entrée utilisateur tactile, potentiellement multi-entrée (multi-touch)
2. avoir le même mot de passe pour tout, et que ca soit reconnu par l’os, qui gere ensuite un mot de passe par application / site, donc en fait … oh ba oui un gestionnaire de mot de passe comme cela existe déjà aujourd’hui tiens non ?
#### Votre facon de taper
Là je crois qu’on touche le fond. Reconnaitre la facon de taper d’un utilisateur va necessiter une masse d’échantillonage tellement important qu’il y a de grandes chances pour que l’utilisateur ai accès à des informations avant meme de pouvoir être reconnu comme utilisateur valide ou non . Dans le cas où on pense limiter l’utilisateur à un taux suffisant, cela revient à demander à l’utilisateur de taper du texte dans le vide avant d’accéder à son contenu ? Et c’est moins frustrant que ce rappeler un mot de passe ? ou d’utiliser un logiciel de gestion de mot de passe ? Vraiment ?
Voila donc en somme merci à [Anaelle Grondin](http://www.anaelle-grondin.com/?ref=thibaultmilan.com) pour son article qui à le mérite de passer en revue tout ce qui existe actuellement pour gérer votre mot de passe et qy’il ne faut pas utiliser, à tout pris, jamais.
### Revue du Web #1
URL: https://thibaultmilan.com/revue-du-web-1/
Last updated: 2012-08-04T12:00:00.000Z
Beaucoup beaucoup d’actualité cette semaine, et peu de temps pour parler en détails de chaque, mais je voulais tout de même partager ma revue du web, la première ici. Au programme : révolution de l’email tel qu’on le conçoit et que l’on l’utilise aujourd’hui, Premiers outils google drive, Mountain lion & son lot de ressource pour mieux comprendre PowerNap mais aussi assurer une transition en douceur entre growl et le centre de notification, en passant par la ré-activation du partage web.
### Clients Emails
Avec [l’Acquisition de Sparrow par Google](#) récemment le paysage des clients emails alternatifs, innocents et bien pensé semblais être réduit au néant (NDLR : Thunderbird arrêtant son dev, il ne restait que MS Outlook, osX Mail ou Eudora … #Eudoratroll). Cela était sans compter sur quelques projets qui emmerdent parsi par là .
#### [Mailpilot](http://mail-pilot.com/?ref=thibaultmilan.com)
Mailpilot est le fruit de la réflexion de deux jeunes entrepreneurs / développeurs de 21 ans (je réalise qu’en perspective, je suis vieux … mon dieu … bref) sur le mode de consommation actuel de l’email, et là façon dont il doit se réinventer s’il veut survivre dans notre quotidien ou le temps nous est compté & où lire ses emails devient une corvée. Je vous laisse découvrir sur leur site la via [kickstarter](http://www.kickstarter.com/projects/1380180715/mail-pilot-email-reimagined?ref=thibaultmilan.com), car oui tout est partit de ce magnifique site une fois de plus :)

\#### [.Mail](http://dotmailapp.com/?ref=thibaultmilan.com)
> Emails aren’t just emails anymore. Mark as read is useless & not fit for a modern creative workflowC’est ce qu’on peut [lire en introduction du concept](http://www.vanschneider.com/work/mail/?ref=thibaultmilan.com) par le concepteur derrière cette idée, que dis je , cet ensemble d’idée. Car pour revoir complètement l’email, le processus de réflexion passe par plusieurs points :
- Clean & cluster free interface
- Perfect spacing and clean typographie
- Only show what you really need
- Managing attachments from a dedicated view
- Social / Brand integration
- Actions Steps
Et c’est sans contexte ce dernier point qui est le plus génial. De nos jours, nous trions nos emails. Nous ne nous contentons pas de les lire, et bien souvent ce n’est pas notre première action lorsque l’on lance son client email. Nous faisons le tri entre les emails dont on peut se débarrasser de suite (newsletter, note de service, … tout ce qui ne nécessite pas un temps élevé pour assimiler l’information et/ou qui ne nécessite pas une réponse qu’on ne saurais formuler en moins de une minute) de ce qui nécessite une attention particulière, que nous n’avons pas nécessairement immédiatement.
De la même manière que des services comme [Instapaper](http://instapaper/?ref=thibaultmilan.com) , [Pocket (Read it later)](http://getpocket.com/?ref=thibaultmilan.com) ou encore la [liste de lecture de Safari](http://www.apple.com/osx/apps/?ref=thibaultmilan.com#safari) pour mettre de coté une page web que l’on ne saurais analyser / traiter immédiatement, on ne sait pas en faire autant à l’heure actuelle, de manière simple et surtout , permettant de donner un ordre d’importance à ses derniers. Les *ActionSteps* sont là pour cela. Elles nous permettrons ainsi d’avoir une liste de mails a traiter, automatiquement rangé par priorité.
### Google Drive

\#### [Archy](http://www.archyapp.com/?ref=thibaultmilan.com) *Mac osX*
Avec l’essor de *Google Drive*, il nous manquait quelques petits utilitaires pratiques qui nous faciliter la vie & le partage de ressource. C’est maintenant chose faite avecA*chy*.
Ce petit utilitaire va vous permettre de :
- Gérer facilement qui peut accéder à quoi, avec une interface conviviale
- Partager avec un simple drag’n’drop un document ou un dossier
- Utiliser votre bon vieux raccourcis Espace pour afficher un aperçu
- Editer avec n’importe quelle application de votre mac
- Avoir des notifications sur les éditions, nouveaux fichiers, upload de document …
Et bonne nouvelle, L’application est compatible Mountain Lion, utilise [Grand Central Dispatch](http://en.wikipedia.org/wiki/Grand%5FCentral%5FDispatch?ref=thibaultmilan.com) et [Core Data](http://en.wikipedia.org/wiki/Core%5FData?ref=thibaultmilan.com) pour vous offrir des performances maximales. Et cerise sur le gâteau, il est *gratuit*.
### Mountain Lion
Personne n’a pus échapper à la sortie de Mountain Lion et sont lot de nouvelles fonctionnalités, de nouvelles contraintes et déjà d’utilisateurs mécontent. Rapide tour des problèmes & solutions que nous pouvons trouver sur internet
#### PowerNap
Power Nap est une nouvelle fonction proposé sous Mountain Lion qui est en fait basée sur une technologie déjà existante sous Snow Léopard qui tire partie des puces intel à faible consommation pour exécuter votre OS sans faire fonctionner ni l’écran ni les ventilateurs ni le GPU. Ici cela ne fonctionne qu’avec un SSD pour des raisons de consommation électrique et vous permet d’avoir un mac toujours a jour, puisque celle ci se font quand vous n’êtes pas sur votre machine. De même celle ci continue a recevoir email, photo, contact, mise a jour de calendrier, de notes, de rappels, fait sa sauvegarde TimeMachine et Fait ses mises a jour sur l’appStore. Ah oui il indexe le disque pour Spotlight et réponds a Find My Mac ou aux accès VPN . Pour plus d’information, Le journal du lapin nous gratifie d’un [article de description complet](http://www.journaldulapin.com/2012/07/27/power-nap-explications-precisions/?ref=thibaultmilan.com) mais surtout d’une [astuce pour activer PowerNap sur les Macbook Air 2010](http://www.journaldulapin.com/2012/07/29/activer-power-nap-sur-les-macbook-air-2010/?ref=thibaultmilan.com). En effet contrairement à ce qui avait été annoncé lors de la keynote, les macbook air 2010 ne sont pas supporté, seules les toutes dernières machines sont officiellement capable d’accéder à cette fonction.
#### Partage Web
Avec Mountain Lion, on voit disparaitre une fonctionnalité bien pratique pour les développeurs un peu fainéant qui ne souhaitent pas bosser avec une machine virtuelle : le partage web.
Derrière ce nom se cache en fait tout simplement un serveur apache activé à la volée et super optimisé pour le mac. Et vous savez quoi ? Il est toujours présent sur Mountain Lion, il n’y a juste plus d’interface utilisateur graphique pour le gérer. Qu’à cela ne tienne, voici [un petit prefPane](http://clickontyler.com/blog/2012/02/web-sharing-mountain-lion/?ref=thibaultmilan.com) qui se charge de faire là même chose, et qui à pus être codé grâce au code openSourcé de [virtualhostx](http://clickontyler.com/virtualhostx/?ref=thibaultmilan.com) logiciel de gestion de virtual host pour mac osX (pas trop mal au demeurant, 30j d’essai gratuit).
#### Centre de notification et Growl
Avant le centre de notification, il y avait Growl (qui était honteusement devenu payant avec l’arrivée du MacAppStore) qui permettais d’afficher des notifications sur votre bureau, avec pleins de styles différents, que n’importe qui maîtrisant HTML, CSS et Javascript pouvait éditer, créer, et ensuite partager avec tout l’Internet.
Mais voila le centre de notification est là et des applications ne sont pas encore prêtes pour envoyer leurs notifications dedans, et continue de les envoyer à Growl (qui fonctionne soit comme app résidente installé par l’utilisateur, soit comme add on de l’app disponible via un SDK). [Hiss](http://collect3.com.au/hiss/?ref=thibaultmilan.com) va vous permettre de forwarder ses notifications de Growl vers le centre de notification en replaçant Growl. En gros Hiss se fait passer pour Growl, reçoit les notifications et les envois au Centre de Notification. Parfait pour une transition en douceur non ?
### Wordpress Flickr Manager 3.0.1
URL: https://thibaultmilan.com/wordpress-flickr-manager-3-0-1/
Last updated: 2012-07-08T12:00:00.000Z
Wordpress Flickr Manager, [dont j’avais déjà fait un portage / correction ici](http://thibaultmilan.com/blog/2009/08/03/flickr-manager-wordpress-2-8/), n’est plus disponible sur les dépôts Wordpress depuis peu. Pire la dernière version qui a jamais été disponible publiquement était la version 2.X alors qu’une version 3.0 & 3.0.1 sont sorties.
Comment faire pour récupérer la dernière version me dirais vous ? Simple :
1. Rendez vous sur [le dépot miroir sur github](https://github.com/crowdfavorite/mirror-wp-wordpress-flickr-manager?ref=thibaultmilan.com)
2. Téléchargez le plugin via le bouton “ZIP” ( [ou cliquez ici](https://github.com/crowdfavorite/mirror-wp-wordpress-flickr-manager/zipball/master?ref=thibaultmilan.com))
3. Désactivez le plugin dans wordpress
4. Ecrasez les fichiers en envoyant le tout avec votre logiciel de FTP favori
5. Réactivez le plugin
Voila, normalement le plugin conserve toute les options y compris la connexion à l’api flickr. Cette mise à jour apporte le support avec les dernières versions de Wordpress mais aussi de nouveaux modes d’affichage des images (y compris la méthode native Wordpress), mais aussi la possibilité de mettre un lien vers la photo flickr d’origine, le partage des photos sur les réseaux sociaux, …
### Sélectionner des données dans des arbres en jQuery
URL: https://thibaultmilan.com/s-lectionner-des-donn-es-dans-des-arbres-en-jquery/
Last updated: 2012-07-06T12:00:00.000Z
Le besoin du jour rencontré dans le cadre de mon travail chez [absolu payment](http://www.absolu-payment.com/fr/?ref=thibaultmilan.com) est d’avoir une méthode de sélection multiple de donnée dans une liste, depuis un arbre de données.
Ne pouvant utiliser puisque bien que le W3C encourage les user agents à supporter une version imbriquée (*nested*) en pratique aucun navigateur ne supporte cela à ce jour, impossible donc d’avoir une balise autre que .
Découverte après quelques recherches du très bon plugin intégré plus ou moins à bootstrap, [chosen](http://harvesthq.github.com/chosen/?ref=thibaultmilan.com), malheureusement celui ci se base sur une implémentation à base de et l’on retombe vite sur les mêmes problématiques.
Autre option plus ou moins satisfaisante, passer par des select boxs multiples, générés dynamiquement, avec un [plugin jQuery](http://kotowicz.net/jquery-option-tree/demo/demo.html?ref=thibaultmilan.com) très bien fait. Possible mais écarté du fait de l’encombrement que va vite prendre cette solution si l’on veux pouvoir sélectionner plusieurs éléments.
Après quelques recherches supplémentaires, je tombe sur le plugin [jstree](http://www.jstree.com/?ref=thibaultmilan.com) qui permet de manipuler un arbre de données (typiquement ce que j’ai en termes de structure de données et qui semble parfaitement convenir à mes besoins, d’autant que celui ci supporte :
- Un flux d’entrée en [JSON](http://www.jstree.com/documentation/json%5Fdata?ref=thibaultmilan.com), XML ou HTML
- Du [multi-checkbox](http://www.jstree.com/documentation/checkbox?ref=thibaultmilan.com)
- La possibilité d’[internationaliser](http://www.jstree.com/documentation/languages?ref=thibaultmilan.com) les champs affichés
### SocialSharePrivacy , plugin jQuery
URL: https://thibaultmilan.com/socialshareprivacy-plugin-jquery/
Last updated: 2012-06-09T12:00:00.000Z
[Précédemment](http://thibaultmilan.com/blog/2012/05/26/cookie-directive-europeenne/) je vous ai parlé des problématiques de cookies qui surviennent ses derniers temps en Europe. Et nous avons découvert quelques solutions pratiques, généralistes.
Cependant, on peut aussi voir la problématique d’un point de vue confidentialité. En effet, comme on l’as vu , les réseaux sociaux comme Google+, Twitter & Facebook tracent notre activité via les boutons de partage. Et en tant que distributeur de contenu, éditeur de site, etc … nous souhaitons peut être permettre à nos lecteurs de faire le choix de se faire “fliquer” ou non; de ne pas leur imposer cela par défaut.
Dans cette optique, j’ai découvert récemment le plugin jQuery [SocialSharePrivacy](http://www.heise.de/extras/socialshareprivacy/?ref=thibaultmilan.com) qui permet d’afficher une version désactivée des boutons Twitter, Facebook & Google+ , que l’utilisateur pourra activer via un interrupteur. A ce moment là le (ou tous) “vrai” bouton de partage est chargé et l’utilisateur peut l’utiliser comme d’habitude. De plus un cookie est enregistré pour se rappeler du choix de l’utilisateur d’activer tel ou tel bouton de partage sur votre site (oui sinon ça deviendrais vite chiant). Et comme c’est une action utilisateur qui déclenche l’enregistrement du cookie, [les nouvelles restrictions que l’on à vu précédemment](http://thibaultmilan.com/blog/2012/05/26/cookie-directive-europeenne/) ne s’appliquent pas. Elle est pas belle la vie ?
Bon donc voila, je vous faire découvrir le plugin mais vous vous rendez compte que tout est en allemand. Comme la licence est une MIT, je me suis dit que je pourrais faire un fork en anglais / français et le proposer librement, sous cette même licence. Mais bon, seulement si certains d’entre vous y manifestent un intérêt certains, sinon … Donc n’hésitez pas à me dire si cela vous intéresse en commentaire.
**EDIT :** Apparement il existe deja une version anglaise sur [github](https://github.com/patrickheck/socialshareprivacy?ref=thibaultmilan.com)
### Histoire de Cookie
URL: https://thibaultmilan.com/histoire-de-cookie/
Last updated: 2012-05-26T12:00:00.000Z
En application de la directive européenne 2009/136/CE transcrites dans plusieurs pays européens (dont la Grande-Bretagne, la France & le Luxembourg) il va être obligatoire de demander à l’internaute sont consentement pour stocker tout cookies qui aurait pour autre finalité que stocker les préférences linguistiques, la mémorisation d’un mot de passe, la résolution d’une video visionné en ligne, un cookie flash ou la mémorisation d’un panier d’achat.
Concrètement la commission européenne souhaite limiter les possibilités de stocker des cookies tierce partie ; qu’ils soient de réseaux sociaux (via la bouton twitter, like de Facebook, +1 de Google, …) ou de régies publicitaires (doubleClick, AdSence, …) et oblige donc les éditeurs de site internet de demander expressément à l’internaute d’autoriser l’implantation de cookie. Ce choix étant mémorisé via un cookie … Comble de l’ironie non ? Surtout quand on pense aux nombreux internautes qui ont pris la bonne habitude de supprimer leurs cookies à la fin de leur session de surf & qui devront donc encore et toujours reconfirmer leur choix …
#### Solution Coté Éditeur
Il existe deja des scripts comme cPrompt pour afficher un message à l’internaute, stocker la réponse dans un cookie s’il n’as pas déjà répondu et afficher les éléments qui vont stocker des cookies dans son navigateur s’il l’autorise. Cependant cela souffre de graves problèmes d’UX. Qui n’as jamais pesté lorsqu’il arrive sur un site et se mange une pop-up / disclamer avant d’accéder au contenu ?
#### Solution Coté Navigateur
Il y a aussi un autre problème selon moi, ce réglage devrait être le fait du navigateur, pas de l’internaute. Pleins de navigateurs permettent deja de choisir entre :
- Accepter tout les cookies
- Accepter les cookies du site mais pas les cookies tiers
- Refuser tout les cookies
Et en plus ils gèrent des listes d’exception. Il suffirait donc de revoir un peu l’interface qui permet de jouer avec ses réglages, comme en facilitant la possibilité d’ajouter des exceptions à la volée.
#### Responsabilité des services tiers
Et concernant les cookies tiers, il me semblerais juste que ce soit au service tiers de requérir l’autorisation de l’internaute de placer des cookies. Cela permettrais de ne pas requérir sur chaque site l’implantation de cookies tiers d’un même service tiers, mais aussi de simplifier l’application de la loi.
#### Mini FAQ
#### Cette loi est elle donc mauvaise ?
En soit non, c’est une belle avancée dans la protection de la vie privée des internautes, il est juste regrettable de voir que sur l’autel de la sécurité on sacrifie l’expérience utilisateur (et qu’une fois de plus on préfère légiférer plutôt qu’éduquer un minimum les gens).
#### Qu’encoure t on ?
Dans les pays où le délais impartit à l’application du dispositif, comme la Grande Bretagne, il vous en coutera £500 000 d’amende. En France comptez €300 000 , mais rassurez vous le délais de mise en place n’est pas encore dépassé.
#### Est ce applicable ?
Personnellement je pense que non. Comme toute lois qui tente de contraindre les Internets, il ne faut pas oublier que le cadre des lois est difficilement mondial, alors que les Internets le sont. Contraindre une partie des Internet n’as pas de sens en soit et est quasi impossible.
#### Est ce contournable ?
Je crois entrevoir une possibilité de contournement de la loi, via notamment ce qui est appelé un “cookie flash”. En effet Flash gère lui même ses cookies dans un espace sandboxé en dehors du navigateur. Ainsi si vous supprimez les cookies de votre navigateur, les cookies flash persistent. Ce n’est pas la seul technologie qui fait cela, Silverlight en fait autant, Java aussi il me semble. Quoi qu’il en soit en autorisant les cookies flash, il suffira aux éditeurs de passer sur ce genre de solutions pour contourner la loi, ou sur [bien pire](http://samy.pl/evercookie/?ref=thibaultmilan.com).
#### Plus d’infos
- Plus d’information sur [Owni](http://owni.fr/2012/05/25/aucun-site-ou-presque-ne-respecte-la-loi?ref=thibaultmilan.com)
- [Directive Européenne](http://www.legilux.public.lu/leg/directives/archives/2009/2009D0136.html?ref=thibaultmilan.com)
- [Transposition dans le droit luxembourgeois](http://www.legilux.public.lu/leg/a/archives/2011/0172/2011A2938A.html?ref=thibaultmilan.com)
- [Transposition en droit Francais](http://www.vie-publique.fr/actualite/panorama/ordonnances/ordonnance-du-24-aout-2011-relative-aux-communications-electroniques.html?ref=thibaultmilan.com)
- [Plus d’infos sur le script coté site web](http://michaelwright.me/cPrompt?ref=thibaultmilan.com)
[Credit Photo](http://www.flickr.com/photos/pomofo/4342155360/?ref=thibaultmilan.com)
### Fedora : Rhythmbox et fichiers audios
URL: https://thibaultmilan.com/fedora-rhythmbox-et-fichiers-audios/
Last updated: 2012-05-16T12:00:00.000Z
Depuis mon installation fraiche de Fedora je n’ai jamais réussis à lire des fichiers audio avec rhythmbox. Pourtant GStreamer est bien présent. Jusque maintenant j’utilisais VLC mais ce dernier à décider de ne plus fonctionner de manière optimum. Je me suis donc penché sur mon pb de codec non présent bien que GStreamer m’assurais le contraire
\[alert-red\] Attention, je ne pourrais être tenu responsable de dommages subits par votre machine suite à ses manipulations. Les instructions sont fournis « en l’état » et peuvent ne pas marcher, surtout si cet article date un peu. \[/alert-red\]
Il se trouve que la version livré avec Fedora, par défaut, n’inclus aucun codec. Un peu comme si vous aviez le moteur mais pas l’essence. Ou un porte mine mais pas les mines … Bref. Pour remédier à cela, un petit coup de commande magique :
Et le tour est joué :)
### Google Drive
URL: https://thibaultmilan.com/google-drive/
Last updated: 2012-04-25T12:00:00.000Z
Google Drive. Dernier né de la galaxie Google, qui n’est ni plus ni moins qu’un dropbox like qui ne fait que rendre accessible via un dossier le contenu de votre compte Google Doc, donc au final ne fait que faire ce que pleins de softs faisaient déjà comme GoogleFS pour ne citer que lui. Mais passons, là n’est pas le pourquoi de ce billet aujourd’hui.
Aujourd’hui j’aimerais juste mettre les points sur les i, avec tout ses pêtes b… casse co… emmerdeurs qui viennent crier au loup en lisant les conditions générales d’utilisation (CGU) du service.
Le problème est que si on se contente de voir passer ce genre de capture d’écran sur Twitter on se dit “oh mais ses enfoirés de chez Google ils veulent me voler toutes mes données”. Sauf que non. Et voici pourquoi
#### La dé-duplication des données
Comme nous l’explique très bien notre bon ami [Gonzague](http://pd.tc/31d35?ref=thibaultmilan.com) sur un post au moins aussi énervé que moi, Google et tout les autres services qui stockent des données en ligne procèdent dès qu’il le peuvent à la dé-duplication des données. Si Danielle mets dans son espace de stockage en ligne une photo de notre cher président, et que Manon en fait autant; en fait le système ne stocke le fichier qu’une seule fois et lie le fichiers aux deux comptes. Ainsi on peut faire pas mal d’économie en ne duplicant pas les fichiers identiques. Et c’est pour ce faire que de tels services ont besoin de lire vos données (pour vérifier), de les modifier (n’enregistrer qu’un lien et non votre fichier), les déplacer (faire un lien vers un de vos fichier vers un autre compte qui a déposé le meme fichier), …
#### Le but de Google Drive
Si on s’arrête un instant sur le fonctionnement de Google Drive, on se rends compte qu’il diffèrent dans de nombreux point de Dropbox ou S3 d’Amazon. Pourquoi ? Parce qu’il est prévu pour pouvoir stocker des fichiers, utilisables dans les applications Google et tierces parties (via un SDK mis à disposition) et surtout , sur Chrome OS qui pour le moment ne dispose pas d’espace de stockage de fichier autre que Google Docs. That’s it. Pas moyens de partager un fichier a part entre utilisateurs de google docs ou via un service google, rien donc de direct et d’universel comme peut le proposer la concurrence.
#### Lire les CGU en entier
Car oui, Google précise également que l’utilisateur reste, à tout moment, le propriétaire de ses données. Google n’as besoin des pleins pouvoirs sur les documents que pour des besoins de fonctionnement. Pour les partager entre les services, pour les répliquer entre ses serveurs …
#### Pensez par vous même
Chose utile, faites vous votre propre opinions, arréter de croire bêtement les média où les gens sur Twitter. Allez voir. Vérifiez vos sources. Si vous lisez ce blog, je pense que vous avez déjà cesser de croire bêtement que ce le journal de 20h de TF1 vous raconte alors pourquoi ne pas exercer le même secpticisme face aux informations qui circulent sur internet ? Internet est un moyen formidable de propager des idée, mais aussi les pires bétises.
#### Vos comportements avant tout
Maintenant qu’on a été clair sur ses points, il est intéressant de noter que la plupart de ses gens, vous peut êtres, publient déjà l’intégralité de leur vie de tout les jours sur Twitter, ou pire sur Facebook (qui au passage se donne le droit d’utiliser a des fins commerciales toutes vos données, y compris pour faire de la publicité …), utilisent le même mot de passe sur tout les sites parceque c’est tellement dur d’utiliser des [trucs gratuits](http://lastpass.com/?ref=thibaultmilan.com) pour générer des mots de passe unique et tous les enregistrer dans un endroit sùr, qui ne protègent pas avec des mots de passes leur smartphones qui contient bien plus que 3 pauvres docs et une présentation powerpoint …
Pour tous cela, merci d’arrêter de dire n’importe quoi, ça vous fera passer pour moins bête que vous êtes.
Merci
### Supprimer un fichier avec la touche “suppr” sous Fedora
URL: https://thibaultmilan.com/supprimer-un-fichier-avec-la-touche-suppr-sous-fedora/
Last updated: 2012-02-29T12:00:00.000Z
Le truc le plus chiant que j’ai vu sous Fedora, c’est le fait que la touche pour effacer un fichier sélectionné il faut faire CRTL-Suppr . Dans la mesure ou la suppression n’est pas directe mais passe par la corbeille, je trouve que c’est une perte de temps. L’astuce du jour consiste donc à changer ce raccourcis clavier au profit de la touche suppr (ou toute autre combinaison de touche).
\[alert-red\] attention, je ne pourrais être tenu responsable de dommages subits par votre machine suite à ses manipulations. Les instructions sont fournis “en l’état” et peuvent de pas marcher, surtout si cet article date un peu. \[/alert-red\]
Voici donc les commandes dont nous allons avoir besoin :
La première permet d’activer la modification des raccourcis, la seconde permet de quitter le mode d’édition. Voici donc comment nous allons procéder :
1. Lancez la première commande dans un terminal, pas besoin de droit root.
2. Ouvrez votre navigateur de fichier, Nautilus.
3. Sélectionnez un fichier / dossier à supprimer
4. Allez avec votre souris sur le menu Edition et laissez votre souris sur “envoyer à la corbeille”
5. Appuyer sur la touche suppr **deux fois** . La première pour supprimer le raccourcis, la seconde pour enregistre le nouveau raccourcis clavier.
6. Exécutez la seconde commande dans le terminal.
\[alert-white\] Vous noterez au passage qu’avec cette méthode il est théoriquement possible d’assigner un raccourcis clavier à n’importe quel item d’un menu \[/alert-white\]
[Photo de kopp38](http://flic.kr/p/4chZoi?ref=thibaultmilan.com) sous CC by-nc-sa 2.0
### Gnome 3, drivers ATI Canonical
URL: https://thibaultmilan.com/gnome-3-drivers-ati-canonical/
Last updated: 2011-11-24T12:00:00.000Z
Lors d’un précédent article sur l’[installation de Gnome 3 et des drivers qui vont bien](http://thibaultmilan.com/blog/2011/10/17/gnome-shell-ubuntu-oeneiric-driver-ati/) nous avons vu qu’il fallait compiler/packager nous même nos drivers pour que tout fonctionne et certains lecteurs ont émis des reserves quand à l’update vers des versions futures, stables, distribuées par Canonical et cette méthode.
D’autres se sont également inquiété de bugs qui restaient non résolus avec mon tutos ou de l’impossibilité de tourner sur un nouveau kernel sans devoir repackager le drivers à chaque fois sous peine de voir x11 ne jamais démarrer.
Que tous se rassurent, ils peuvent maintenant mettre a jour les drivers pour repasser sur un canal de distribution “traditionnel” et bénéficier de la résolution de beaucoup de bugs graphiques restant avec l’installation manuelles des drivers de chez ATI. Il suffira de faire tourner les commandes suivantes et d’attendre la réinstallation de tout une tripoté de paquets (et la désinstallation **automatique** des anciens drivers) :
Et voila un reboot plus tard tout fonctionne parfaitement.
### scrollTo() jQuery sans plugin ?
URL: https://thibaultmilan.com/scrollto-jquery-sans-plugin/
Last updated: 2011-10-27T12:00:00.000Z
Aujourd’hui j’ai eu besoin de me passer du (apparemment seul) plugin qui permet de faire un .scrollTo(position) en jQuery pour la simple et bonne raison qu’il plante avec ma méthode de détection de Chrome et du numéro de version.
(oui j’arrive à détecter chrome / safari indépendamment et leur version, et non “webkit”)
Ni une ni deux quelques recherches sur internet et me voilà qui bricole un script **jQuery** natif, qui **n’utilise pas de plugin** et qui permet de **lancer un scroll de l’utilisateur** pour l’amener à **une position précise de la page**, le tout avec une animation.
Voici donc ce que cela donne, j’ai volontairement zappé la structure de la page dans ce code, puisque c’est simplement pour vous montrer comment j’ai procédé, de même qu’il ne faudra pas oublier d’initialiser jQuery & jQuery UI et de faire tourner le bout de code après un $(document).ready() hein ;)
[Voir la démo sur JSFIDDLE](http://jsfiddle.net/clawfire/FKndZ/?ref=thibaultmilan.com)
[Crédit Photo](http://www.flickr.com/photos/dmitry-baranovskiy/2378867408/?ref=thibaultmilan.com)
### Update Ubuntu 11.10 Oneiric : Unable to connect to system bus
URL: https://thibaultmilan.com/update-ubuntu-11-10-oneiric-unable-to-connect-to-system-bus/
Last updated: 2011-10-18T12:00:00.000Z
Lors de ma récente mise à jour d’Ubuntu vers 11.10, je me suis retrouvé au reboot suivant avec l’impossibilité de lancer une session. en choisissant au boot une console de récupération je tombe sur un message d’erreur bien étrange :
> Unable to connect to system bus : Fail to connect to socket /var/run/dbus/system\_bus\_socketBon ok et ensuite ? Après quelques recherches il s’avère que lors de la mise à jour de Ubuntu vers 11.10, les dossiers /var/run et /var/lock ont été déplacé vers /run et /run/lock. Cependant dans de rares cas, le script de mise à jour ne crée pas le lien symbolique permettant aux applications non préparés à ce changement de continuer à fonctionner. Il faut donc intervenir manuellement.
\[alert-red\] Attention, ma responsabilité ne pourra être engagée si d’avenir votre machine se comporte anormalement ou subis un quelconque dommage. Vous effectuez vos manipulations à vos propres risques. \[/alert-red\]
#### 0\. Prérequis
Il vous faudra avant tout arriver à une console, un terminal. Personnellement j’ai au boot choisis de démarrer sur l’option de récupération (recovery) d’Ubuntu. Il vous faudra attendre le message d’erreur et patienter pour que le système vous donne une invite de commande.
\[alert-red\] Vous aurez besoin des droits ROOT user (administrateur) de votre machine. \[/alert-red\]
#### 1\. Créer les nouveaux répertoires
Attention il est possible que le script de mise à jour ai réussis cette étape. Dans ce cas surtout **ne supprimez pas les répertoires existants.** Passez simplement à l’étape suivante
#### 2\. Déplacer le contenu restant vers les nouveaux répertoires
Attention, il est possible que vous ayez besoin de préfixer par sudo.
#### 3\. Créer les liens entre les anciens & nouveaux dossiers
On supprime donc les anciens répertoires afin de créer des liens symboliques, véritables raccourcis qui permettrons aux application codées pour aller chercher dans les anciens répertoires de trouver le contenu en toute transparence.
Et voila il ne vous reste plus qu’a redémmarer votre machine et tout devrais fonctionner à nouveaux.
Source :
- [\[ubuntu\] unable to connect to system bus — Ubuntu Forums](http://ubuntuforums.org/showthread.php?t=1590618&ref=thibaultmilan.com)
- [Bug #811441 in dbus (Ubuntu): “Unable to connect to the system bus: Failed to connect to socket /var/run/dbus/system\_bus\_socket: Connection refused (oneiric)”](https://bugs.launchpad.net/ubuntu/+source/dbus/+bug/811441?ref=thibaultmilan.com)
### Gnome-Shell sous Ubuntu Oneiric et driver ATI propriétaires
URL: https://thibaultmilan.com/gnome-shell-sous-ubuntu-oneiric-et-driver-ati-propri-taires/
Last updated: 2011-10-17T12:00:00.000Z
Si comme moi vous êtes (aussi) sous Ubuntu et que vous venez de passer sur Ubuntu Oneiric 11.10 , vous avez peut être voulu tester gnome-shell (gnome 3) mais vous vous êtes heurté à divers bugs graphiques dont une police floue / cryptée et une barre de tache arc en ciel. Pas de panique non seulement on sait d’ou viens le problème, mais aussi comment le résoudre.
\[alert-red\] Attention, ma responsabilité ne pourra être engagée si d’avenir votre machine se comporte anormalement ou subis un quelconque dommage. Vous effectuez vos manipulations à vos propres risques. \[/alert-red\]
#### Situer le problème : Les drivers Propriétaires ATI & Unity
Si l’on en crois les nombreux retours que l’on peut lire sur internet concernant cette mise à jour, deux problèmes apparaissent :
1. Unity crée des fichiers de configuration qui interfèrent avec Gnome-shell
2. Il manque une couche d’abstraction de rendu dans les dépendances de Gnome-shell
3. Les drivers ATI pré-compilé sont foireux
Voyons donc comment en 3 étapes simples on répare tout cela …
#### 1\. Installer Mutter
première manipulation, on va installer Mutter, qui semble être une couche d’abstraction entre la carte graphique et gnome-shell, un peu comme compiz pour Unity.
\[alert-orange\] Pensez à activer les dépos universe, multiverse et les partner canonical. \[/alert-orange\]
Ensuite on remplace Compiz par Mutter pour le rendu de l’image. Votre écran devrais clignoter quelques fois et se stabiliser.
#### 2\. Désinstaller toutes traces de drivers propriétaires
Afin de supprimer toutes traces de précédentes installations et téléchargements, lancez ses deux commandes l’unes après l’autre :
#### 3\. Télécharger, Compiler & Installer les drivers ATI Propriétaires
Il va falloir oublier ici l’installation classique en ligne de commande ou via l’interface graphique dont vous pouvez être familier, pour télécharger les sources et compiler vous même le driver. Vous allez voir c’est très simple, rassurez vous.
\[alert-orange\] Pensez à activer les dépos universe, multiverse et les partner canonical. (Paramètres Systèmes -> système -> Sources de logiciels) \[/alert-orange\]
Si vous êtes sur une architecture 64 bits , il faudra aussi ajouter :
Ensuite on crée un .deb pour l’installer , puis on l’installe :
#### 4\. Réinitialisation de la configuration du gestionnaire de fenetre
Et voila. il ne vous reste plus qu’a initialiser une nouvelle configuration de X11, le moteur de rendu des fenêtres puis de vous déconnecter / reconnecter ou redemarrer pour que les changements prennent effet.
Malheureusement, il n’est pas possible de générer à coup sùr une configuration qui réponde à vos besoins (multi-écran, rotation d’écran …); c’est pourquoi je vous partage un exemple ci dessous pour un dualscreen d’écran de même taille. Vous pouvez faire un tour du coté de[ ce site pour avoir quelques exemples](http://wiki.cchtml.com/index.php/Ubuntu%5FOneiric%5FInstallation%5FGuide?ref=thibaultmilan.com#Generate%5Fa%5Fnew%5F.2Fetc.2FX11.2Fxorg.conf%5Ffile), et que je remercie au passage pour leur tuto en anglais. Le fichier à modifier est bien sur /etc/X11/xorg.conf , notez au passage que la commande précédente vous a fait une copie de votre ancienne config, dont vous pouvez vous inspirer voir copier coller des pans entiers :)
Sources :
1. [Wiki CCHTML](http://wiki.cchtml.com/index.php/Ubuntu%5FOneiric%5FInstallation%5FGuide?ref=thibaultmilan.com)
2. [Forum Ubuntu : Gnome Shell bug d’affichage](http://forum.ubuntu-fr.org/viewtopic.php?id=668531&ref=thibaultmilan.com)
3. [Forum Ubuntu : Ubuntu 11.10 et gnome 3](http://forum.ubuntu-fr.org/viewtopic.php?id=669731&ref=thibaultmilan.com)
### Ouverture du support
URL: https://thibaultmilan.com/ouverture-du-support/
Last updated: 2011-07-25T12:00:00.000Z
Juste un petit message pour annoncer l’ouverture du [la section support](http://support.thibaultmilan.com/?ref=thibaultmilan.com) de mon activité, suite à la mise en ligne des roadmap de deux projets de **plugins wordpress** je souhaitais mettre à disposition un espace d’aide adéquat. Ayant essayé plusieurs solutions en **SaaS** je n’ai rien trouvé qui me convenait alors ni une ni deux, un wordpress, un **template** qui utilise les **custom post type** et le tour est joué.
Pour rappel vous trouvez les **roadmap** de mes projets de **plugin wordpress** ici :
- [I like this Wordpress Plugin](http://roadma.ps/LD?ref=thibaultmilan.com)
- [LiveFyre custom Domain Wordpress Plugin](http://roadma.ps/BE?ref=thibaultmilan.com)
### Livefyre Wordpress Comment
URL: https://thibaultmilan.com/livefyre-wordpress-comment/
Last updated: 2011-07-11T12:00:00.000Z
Vous devez tous connaître Disqus, géant du commentaire non auto-hébergé, vous proposant de centraliser tous les commentaires fait sur les différentes plateformes sociales (blog, twitter, facebook, …). Et bien j’ai découvert il y a peu Livefyre. Un peu dans le même esprit (centralisé & externalisé) le service offre des commentaires en temps réels avec la possibilité pour vos utilisateurs de s’identifier avec leur compte google, facebook ou twitter (ou leur compte sur votre plateforme comme “avant”). Disposant également de fonctions de partage twitter / facebook lors du post des commentaires j’ai été tout de suite séduit par l’interface plutôt clean et clairement moins lourde que Disqus.
Pour un projet d’empowebo.com j’ai donc été amené à voir ce qu’on pouvais faire avec eux niveau intégration et il se trouve qu’ils ont quelques fonctions de Single Sign On plutôt intéressante quand on veut utiliser ses propres accès api à twitter et facebook et ne pas dupliquer les identifications sur ses services pour nos utilisateurs. Acte donc, si un plugin Wordpress existe pour les versions standard, rien n’existe pour les versions un peu plus “prenium”.
#### Livefyre Wordpress Comment
Acte donc, je me suis lancé dans le développement d’un plugin wordpress alternatif à la version officielle. Alternatif car il n’as pas pour vocation de remplacer le plugin officiel et n’intégrera même pas dans les premières versions un support des comptes basiques.
#### Fonctions :
Dans l’ordre des priorités
- Replacement des commentaires wordpress
- Synchronisation des utilisateurs wordpress avec le Remote Profile Managment de Livefyre
- Création d’un endpoint pour le RPM afin de fournir au format JSON les infos des utilisateurs
- Auto-Enregistrement du site et auto-configuration du plugin
- Forcer l’utilisateur à être identifié / s’enregistrer
- Utiliser Facebook et Twitter pour se connecter et partager
- Supporter les comptes free et prenium
#### Suivre le projet
Si vous souhaitez contribuer ou simplement suivre le projet :
[Voir sur Github](https://github.com/clawfire/livefyre-customdomain-wordpress-plugin?ref=thibaultmilan.com)
Attention, la branche principale corresponds à la branche de dev, il faudra attendre des tag de version pour avoir une version fonctionnelle.
### Prixtel, aiguilleur d’appel
URL: https://thibaultmilan.com/prixtel-aiguilleur-d-appel/
Last updated: 2011-06-27T12:00:00.000Z
Vendredi dernier alors que je profitais d’une journée de repos (faire le pont, tout ça …) un numéro en 01 cherche à me joindre par téléphone. Ayant quelques amis en IDF, je me dit que l’un a changé de numéro et qu’il cherche a me joindre. Je décroche donc et là bam je tombe directement sur une voix féminine, avec un fort accent étranger, qui commence a me demander **si je suis bien client SFR …**
“Merde encore une plateforme d’appel”. Et puis je me rappelle vite que SFR n’utilise plus de plateforme d’appel délocalisé et ne semble avoir que du personnel ayant une diction parfaite et quasi aucun accent. J’écoute donc et là je découvre pour qui notre charmante opératrice travaille : [**Prixtel**](http://www.prixtel.com/?ref=thibaultmilan.com).
Elle me demande alors quelle est ma consommation mobile , si j’en suis satisfait, si je fais du hors forfait. Je comprends rapidement que c’est pour essayer de me refourguer un nouveau forfait ou pire, un nouvel opérateur (car oui Prixtel, bien que s’en défendant totalement au téléphone, est bien un **MVNO** !
\[alert-white\] Un opérateur de réseau mobile virtuel, également connu sous le sigle MVNO pour l’anglais Mobile Virtual Network Operator, est un opérateur de téléphonie mobile qui, ne possédant pas de concession de spectre de fréquences ni d’infrastructure de réseau propres, contracte des accords avec les opérateurs mobiles possédant un réseau mobile pour leur acheter un forfait d’utilisation et le revendre sous sa propre marque à ses clients. \[/alert-white\]
J’indique donc gentiment à mon interlocuteur que j’ai bien compris qui ils étaient et que cela ne m’intéressaient pas. Je suis personnellement contre les MVNO, tout simplement car je ne pense pas qu’ils peuvent apporter une qualité de service suffisante à mes besoins et que leur SAV est encore plus catastrophique que celui des opérateurs historiques. Mais en bonne vendeuse elle me vente le mérite de leur offre d’**aiguilleurs de forfaits**. Car ils ne sont pas des NVMO mais bien des **aiguilleurs de forfait qui te font bénéficier du forfait le moins cher en fonction de ta consommation.** Pas besoin de dessin pour sentir l’embrouille, si une société avait pour but de minimiser ses marges & profits, ça s’appellerait le secours populaire.
Mais bon un **aiguilleur de forfait** ça consiste en quoi pour **Prixtel** ? A **sélectionner pour toi, le forfait le moins cher** parmi tout les forfaits qui existent chez **Orange**, **SFR** & **BouyguesTelecom**. Alors qu’on soit bien clair, jamais Orange, SFR ou Bouygues ne vont vous facturer, c’est juste que plutôt que de bâtir une offre, ils utilisent tout simplement les offres construites par les autres opérateurs … en apparence. **Car il y a bien sur une arnaque :**
- **Prixtel est un NVMO, de ce fait il achète des minutes, de la data, des sms, … chez un, et un seul, opérateur historique : SFR. en tant que client prixtel, vous êtes donc sur le réseau SFR. Me démarcher alors que je suis déjà chez SFR me pose un grave problème d’éthique, mais apparemment pas pour Prixtel, l’éthique de nos jours …**
- **Ensuite proposer de vous faire payer un forfait crée par Orange, ou Bouygues, alors que vous êtes chez un autre opérateur et surtout sur le réseau SFR, ça n’as aucun sens. Et à mon avis les opérateurs historiques devraient attaquer en justice Prixtel pour utilisation abusive de leur marque. En effet JAMAIS ce n’est un forfait Orange, Bouygues ou SFR, c’est un simple équivalent en minutes !**
#### **Détaillons un peu l’arnaque des forfaits**
Oui parceque au delà de proposer son système d’**aiguillage de forfait** , Prixtel semble avoir quelques offres, dont une offre pour iPhone (qui est en fait une offre pour smartphone, pas pour iPhone , ignorant au passage les besoins spécifiques de ce genre de terminal, au détriment du client et surtout alors que les opérateurs historiques se sont déjà cassé les dents dessus).
#### **Le forfait ultimo iPhone 4**

[](http://www.prixtel.com/particulier/offre-telephone-mobile/forfait-illimite-ultimo/appels-sms-internet-illimite?ref=thibaultmilan.com)[Disponible ici ](http://www.prixtel.com/particulier/offre-telephone-mobile/forfait-illimite-ultimo/appels-sms-internet-illimite?ref=thibaultmilan.com), il est très intéressant de faire un tour dans les petites lignes en bas de l’offre, surtout quand le prix de départ est de 59,99 € / mois, donc plus cher déjà que [ce que propose SFR](http://www.sfr.fr/mobile/offres/toutes-les-offres-sfr?vue=000029&ref=thibaultmilan.com) … :
1. Illimité 24/24 **dans la limite de 50 correspondant par mois et de 2h par appel, au dela 0,37€ la minute**
2. SMS illimité **dans la limite de 99 correspondants par mois**
3. Surf & mails illimités **dans la limité de 500Mo ( 40 Mo pour les BlackBerry )**
4. **Facturation de 0,20€ / MO au dela de la limite ET BRIDAGE DU DEBIT** . Nous n’avons plus affaire à du fair use, mais bien à **de l’illimité qui ne l’est pas**.
5. MMS facturé 0,30€ l’unité
6. Appel visio (genre y a encore des smartphones qui peuvent faire cela) à 0,35€ / min
\[alert-red\] Les Appel visio ne sont pas des Facetime ou appels SIP avec visio via une application tierce partie mais bien une fonction que les opérateurs avaient lancé dans les années 2000 et qui n’avait pas rencontré le succès escompté .\[/alert-red\]
#### Le forfait ADSL

En plus d’être un NVMO, il semble que **Prixtel** fasse aussi dans la **marque blanche de forfait ADSL, avec le matériel SFR**. Je ne savais même pas que SFR permettais cela. Mais détaillons aussi l’**offre petit prix** que vous [retrouvez ici sur leur site](http://www.prixtel.com/particulier/offre-Internet-adsl/selection-offre-adsl?ref=thibaultmilan.com) :
1. **On annonce fièrement un prix de 19,99 €** , mais c’est de **l’ADSL nu, juste pour avoir internet.**
2. **Il faut ajouter 5,00 € pour le téléphone illimité vers les fixes**
3. **Ajouter encore 5,00 € pour le téléphone illimité vers les mobiles en France métropolitaine**
4. **16,00 €** de **location de ligne** (abonnement France telecom)
5. **3,00 €** de **location de box**
\[alert-red\] **Coût total , sans télévision par adsl, ni enregistreur numérique : 48,99 €** \[/alert-red\]
**En comparaison, SFR propose une offre à 37,90 € par mois, tout compris**, avec assistance et télévision par ADSL, enregistreur numérique et tout et tout … Et personnellement cela ne me coûte que 27,90 € via diverses remises exceptionnelles et primes d’ancienneté, multi-pack, …
#### L’offre Microsoft Office Famille & étudiant

Parcequ’il n’y a pas de petits profits, **Prixtel** essaye lors de la vente d’un forfait ADSL de vous caler une offre de location / vente de licence Microsoft Office Famille & étudiant pour seulement 5 € / mois pendant 24 mois. Après ses 24 mois la licence est à vous. C’est cadeau.
Oui sauf que 5 € x 24 mois = **120 € alors que Office famille & étudiant** [**ne coute que 86,99 € …**](http://www.amazon.fr/gp/product/B0037Z8DQI/ref=as%5Fli%5Fss%5Ftl?ie=UTF8&tag=clasblo-21&linkCode=as2&camp=1642&creative=19458&creativeASIN=B0037Z8DQI&ref=thibaultmilan.com)

\#### **Pour conclure …**
Je dirais qu’entre pratiques commerciales douteuses et sa publicité mensongère sur ses offres , Prixtel ne m’inspire pas du tout confiance et ce n’est pas le genre de société qui va redorer un peu l’image que j’ai des NVMO. Quand aux “VIP” comme Faudel , Elisa Tovati , Mia Frye, Slimmy , Marilou Berry, Karine Lima, Hélène Segara, Bernard Montiel et autre Corinne Touzet qui se sont fait avoir et apparaissent dans [la video](http://www.prixtel.com/particulier/prixtel-vip/?ref=thibaultmilan.com) (qui fait très amateur) de la soirée de lancement de l’offre, c’est également dommage pour eux de s’être fait avoir.
PS : nous faire croire que des “stars” utilisent un opérateur de téléphonie low-cost , sérieusement ? Y a des gens payés pour sortir des concepts aussi 1995 ?
### Adieu Plyce
URL: https://thibaultmilan.com/adieu-plyce/
Last updated: 2011-03-05T12:00:00.000Z
[Plyce](http://plyce.com/?ref=thibaultmilan.com) est un service similaire à [foursquare](http://foursquare.com/?ref=thibaultmilan.com) et [gowala](http://gowalla.com/?ref=thibaultmilan.com) mais qui a le mérite d’être français. Et comme on ne soutient jamais assez les entrepreneurs français, j’ai toujours, jusqu’à maintenant, soutenu se projet et utilisé ce service alors que la concurrence disposais de fonctionnalité plus intéressantes et d’un panel d’utilisateurs plus étendu.
\[callout title=”Mais voila aujourd’hui, tout les utilisateurs ont reçu un email annonçant des changements radicaux dans les services :”\]
- Suppression des contacts / amis
- Suppression des localisations / Ajouts de lieux perso
- Localisation restreinte aux enseignes commerciales
- Réception de “bon plan” lors des localisation
\[/callout\]
Plyce deviens donc un système de push-spam localisé, un peu à la facebook deals avec facebook place, mais en supprimant totalement la dimension sociale ( oui les mecs, un bouton “share on twitter” spa du social hein … des amis, une interactivité ça oui ).
C’est donc très déçu de ce revirement de situation que je leur envoi une demande de suppression de compte (oui car naturellement impossible de supprimer son compte depuis le service …) en faisant valoir mes droits sur mes informations personnelles et en leur exprimant mon mécontentement.
Du coup [retour sur Gowala](http://gowalla.com/checkins/29892936?ref=thibaultmilan.com), service qui lui c’est bonifié depuis mon départ pour plyce il y a qq mois …
### WP Plugins, un AppStore pour WordPress
URL: https://thibaultmilan.com/wp-plugins-un-appstore-pour-wordpress/
Last updated: 2009-11-13T12:00:00.000Z
Les appstores sont à la mode en ce moment. Lancé par Apple pour son iPhone, ont a rapidement vu débarquer des appStore pour Android, LG, SFR, Microsoft, etc … Mais on ne bénéficiais pas encore d’appstore pour application web, c’est désormais chose faite !
**Un AppStore pour WP ? WTF ?!**
Ce fut ma première réaction pour tout vous dire, puis après j’ai trouvé l’idée potentiellement interessante. Aujourd’hui dans la galaxie wordpress on retrouve énormément de sites où des auteurs ou des groupes d’auteurs publient leur thèmes, parfois leurs plugins mais plus rarement, dont certains sont excellent comme [eleganttheme](http://www.elegantthemes.com/affiliates/idevaffiliate.php?id=260&ref=thibaultmilan.com) qui propose régulièrement des thèmes de qualité et très complet.
Le principal problème donc et la non fédération de ce contenu, de tout ses sites qui vendent des thèmes et plugins pour **Wordpress**. Si certains sont incontournables, je ne peut m’empêcher de penser que je passe à coté de petites merveilles à chaque fois que je visite ses sites.
Pour en revenir à ce qui nous interesse et qui est l’objet de ce post [WP Plugin](http://wpplugins.com/?ref=thibaultmilan.com) est donc un nouveau site qui à pour vocation de proposer aux développeurs de plugins wordpress qui souhaitent commercialiser leur oeuvre, de les mettre en vente sur leur site. L’idée à mon avis étant d’avoir un endroits commun qui devienne une référence puisque l’intégralité des revenus sont reversés aux auteurs. Et c’est justement là tout l’enjeux d’une telle entreprise. Pour que cela marche, il faut **UN site de référence**, **UN UNIQUE endroit ou trouver ses ressources**. Loin de moi l’idée qu’un monopole favorise la créativité et la concurrence, mais au moins les gens savent où aller.
Je me pose cependant la question de savoir si le fait que ce soit une société n’ayant aucun rapport avec **AUTOMATIC** ou **Wordpress** ne peut pas poser de problème et freiner l’entreprise. En effet si la société ou la communauté qui sort un produit (wordpress en l’occurrence) propose un moyen unifié de trouver des thèmes et des plugins, alors pourquoi pas, la communauté étant derrière, cela va prendre. Mais dans le cas où c’est quelqu’un qui n’as rien a voir avec tout cela ?
Alors certes vous allez me dire que le dépôts de plugin existe pour wordpress, sauf que on ne peut pas vendre de plugin. Et même si l’on pouvais le faire, cela nécessiterais un gros travail de redesign pour rendre le dépôt de thème et plugins moins austère. Pour ma part je trouve que WP-Plugins est un peu too much au niveau design, et qu’il gagnerais à revoir un peu sa charte graphique, mais il à au moins le mérite de proposer une solution à un problème existant et le temps nous dira si ce sera un simple site de plus sur le web, ou si cela prendra et qu’il deviendra une vrai plateforme de vente, un vrai appstore . En attendant je vous invite à vous y rendre, [à visiter](http://wpplugins.com/?ref=thibaultmilan.com) et vous faire un avis par vous même et de laisser vos impression ici , en commentaire.
[Visiter WP Plugin](http://wpplugins.com/?ref=thibaultmilan.com)
### Freelance VS Salarié : le bilan
URL: https://thibaultmilan.com/freelance-vs-salari-le-bilan/
Last updated: 2009-11-08T12:00:00.000Z
Voila maintenant quelques mois que j’ai décidé de laisser de coté mon travail de freelance pour rejoindre l’équipe d’Empowebo.com au Luxembourg . Décision dont je n’ai pas vraiment souhaité parler ici jusqu’à présent, hormis dans la présentation de [la home de ce site](http://thibaultmilan.com/). Petit bilan sur ses premiers mois :
#### La qualité de vie
Elle s’en retrouve grandement améliorée. En plus d’avoir une stabilité financière qui me permet de me tourner vers de nouveaux projets, c’est aussi plus de temps pour moi, le soir et la découverte des week-end. En semaine, programme un peu plus chargé puisqu’avec les transports je me lève à 6:15 pour partir à 7:40 et reprendre le train de 18:30, arrivée en gare de Metz prévue aux alentours de 19:20\. Ca fait donc de grosses journées, mais le soir, je rentre et je me jette dans le canapé.
Moins de temps pour soi en semaine donc, mais moins de pression concernant les impératifs, moins d’astreintes qu’auparavant ( oui un freelance est environ disponible 25h sur 24 ). Je dis moins car si j’ai considérablement ralentit mes activités de *web & creative developer* freelance, j’assume toujours un service d’hosting pour le compte de mes clients, service dont je vous reparlerais surement plus tard avec la migration prévue du serveur principal .
#### Les projets
Pour le moment je n’ai pas à me plaindre de ce coté, car j’avoue c’était ma plus grande peur, tomber sur des projets fades, sans grands intérêts. Pour le moment donc rien de tout cela en vue puisque je termine gentiment le design complet Site + Blog d’[empowebo](http://empowebo.com/?ref=thibaultmilan.com) tout en travaillant sur des projets en parallèle aussi divers que variés. Le niveau est à peu près équivalent à ce que je pouvais avoir comme travail en freelance donc pas de problème tout va bien. Je vous invite au passage à surveiller le site d’[empowebo.com](http://empowebo.com/?ref=thibaultmilan.com) dans les semaines à venir, car ça devient presque bon.
#### Et les clients existants dans tout ca ?
Et bien je reste à leur disposition, tout comme je reste à la votre. En effet comme je le dis précédemment je continue mes activités de hosting et vous prépare un site dédié à cela avec au programme, une refonte de l’interface d’administration pour les clients, et une automatisation de la plupart des tâches encore plus avancée, le paiement via paypal qui au lieu de nécessiter une confirmation de ma part comme actuellement, permettra de disposer des services immédiatement ! Pour plus d’infos je vous invite à me laisser un message via le [formulaire de contact](http://thibaultmilan.com/contact/), où à vous rendre sur la homepage et profiter du widget google talk pour entrer en contact avec moi.
[Credit Photo](http://www.flickr.com/photos/jeremylim/4651679037/?ref=thibaultmilan.com)
### Orange Metz Serpenoise, la pire des boutiques orange ?
URL: https://thibaultmilan.com/orange-metz-serpenoise-la-pire-des-boutiques-orange/
Last updated: 2009-10-22T12:00:00.000Z
En tout cas si vous avez une idée précise du forfait et du téléphone qu’il vous faut, je vous recommande chaudement de ne pas y aller. En effet sous un l’amabilité et les beaux sourires des commerciaux de l’agence se cache une ignorance des plus totales des forfaits et de leurs contenu, notamment en termes de services associés.
\[alert-red\] Depuis ce post, grâce à la loi Chatel, j’ai pus résilier mon abonnement et repartir chez SFR avec un HTC Desire HD sous Android. \[/alert-red\]
L’action se déroule il y a une semaine. Ayant décroché un poste au Luxembourg dans une web agency aussi sympathique que dynamique, et après m’être fait traité comme un malpropre par le service client SFR, je décide de résilier mon forfait chez ce dernier et d’aller voir la concurrence. Je connaissais déjà ce que me propose SFR et ne voulais pas aller chez bouyguestelecom, je me suis donc naturellement tourné vers orange, malgré mes appréhensions concernant ce dernier. Grand bien m’en à pris.
Je me rends donc en boutique la plus proche de mon appartement, c’est à dire **Metz Serpenoise**, tombe sur une conseillère toute souriante, fort sympathique. Pas d’attente, je lui explique mes besoins : 3h de communications , tout le reste en illimité en France puisque iPhone (que j’achèterais d’ailleurs chez eux par là même occasion), et surtout une offre prenant en charge l’international en supprimant les frais de roaming.
L’ignorante de conseillère me propose alors le forfait **le plus cher** (comme par hasard) qui selon elle répond à mes attentes puisque **celui ci comprends le roaming des appels entrant** (ceux que je reçois depuis la France lorsque je suis à l’étranger) et mes appels sortants sont décompté de mon forfait dans la mesure d’une tarification nationale, soit 0,38 c la minute ou un truc comme cela. (vous en profiterais pour vous rendre compte que la minute nationale est quand même disons le, atrocement chère ! ).
Je souscrit donc au-dit forfait qui me coutera la bagatelle d’environ **120 euros par mois**, mais qui m’assure de ne quasi pas dépasser mon forfait ni d’avoir de hors forfait lié à l’utilisation à l’étranger. Ce super forfait Origami Jet comprends entre autre une super assurance pour l’iPhone et assure un renouvellement annuel GRATUIT du téléphone. En plus , toujours selon la conseillère, “***toutes les options sont activé immédiatement***”.
Je sais que des services comme la messagerie vocale visuelle, chez la concurrence prends environ **48h à être activé**, le temps que la boite vocale “standard” soit déplacé vers les serveurs de répondeur “MVV”. Mais soit, pourquoi pas, c’est Orange, ils ont l’iPhone depuis 1 an de plus que tout le monde, on peut penser que le process à été optimisé.
Je repart avec mon nouveau téléphone, et c’est là que ça commence à coincé :
- La messagerie vocale visuelle mets plus de 72H (non ouvrable) **à être activé,** bon ce n’est pas un besoin énormissime, c’est du confort plus qu’autre chose, je passe.
- **L’option international**, elle, **n’est activé sur votre ligne que 48h ouvrables après votre souscription. Puis 48h après elle sera effective.** En gros on prends 2j pour cocher une option dans votre dossier, et ensuite on attends deux jours pour voir si tout c’est bien répliqué chez les opérateurs des autres pays, très pro non ?
- Cependant petit bonus il faut le reconnaitre, orange bénéficie d’accords avec les 3 opérateurs de téléphonie luxembourgeois ce qui permet de ne pas se soucier sur quel réseau on se connecte et surtout d’avoir une couverture optimale.
- Le meilleur pour la fin : depuis le premier octobre, **PLUS AUCUN FORFAIT ORANGE NE PEUT INCLURE UN DÉCOMPTE DE L’INTERNATIONAL DU FORFAIT**, car il y a eu trop de problème de personnes qui revenaient de l’étranger avec un forfait complètement bouffé par l’international. Je n’ai pas bien compris l’argument et le trouve un peu léger, si les clients utilisent leur téléphone à l’international, ils doivent bien se douter que si ça prends sur leur forfait, leur forfait va se retrouvé consommé non ? Enfin les gens normaux quoi ? ils sont logique ? ou alors orange prendrais ses clients pour des cons ?
Je me retrouve donc avec une ligne qui ne sera activé que aujourd’hui à l’étranger, ce qui est très pro de ne pas être joignable depuis le début de la semaine … et surtout qui ne couvre pas du tout mes besoins.
Une seule chose à dire : Bravo Orange …
\[alert-white\] Credit Photo : [Oranges](http://www.flickr.com/photos/wgyuri/501884430/?ref=thibaultmilan.com) par [WGyuri](http://www.flickr.com/photos/wgyuri/?ref=thibaultmilan.com) \[/alert-white\]
### Push Mail iPhone avec Gmail
URL: https://thibaultmilan.com/push-mail-iphone-avec-gmail/
Last updated: 2009-10-02T12:00:00.000Z
Utilisant déjà le push calendar et contact avec Gmail, mais depuis quoi, quelques jours, le push mail est sortit sur l’iPhone. Ni une ni deux, je coupe l’IMAP et j’active le push mail. Puisque j’avais deja le push calendar et contact, c’est juste un switch à actionner, rien de bien compliqué. Alors après plus d’une semaine d’utilisation qu’est ce que je retire de ce service sur iPhone ?
**Le push sur l’iphone :**
Déjà une notion à bien se mettre en tête c’est que le push sur l’iPhone c’est pas pareil que du simple push traditionnel, Apple dans sa grande bonté à fournit un ensemble de règle pour ses application que Mail.app ne va pas se passer de respecter à la lettre. Donc ne vous attendez pas à recevoir une notification sur écran comme pour les SMS, ca n’arrivera pas. Les mails sont bien pushé vers votre iPhone mais vous n’entendrez que la notification sonore (qui je dois dire reste très voir trop discrète), un petit coup de vibreur éventuellement et l’icône Mail qui verra sont indicateur croitre.
**Le push, par Google**
De son coté Google à toujours eu une vision particulière des services de messagerie. Déjà avec son IMAP qui ne respecte aucun “standard” comme les autres services de messagerie peuvent le faire. Bien sur la fonction Imap Control du Labs a vite fait de remédier au problème.
Donc concernant son push, l’intégralité des dossier est pushé vers votre iPhone. Tout les dossiers et Messages. Cela provoque donc au moment de la première activation un embouteillage monstre dans votre iPhone qui rends indisponibles les données non encore pushé. Votre iPhone perds tout contrôle sur ses données et attends gentillement que Gmail veuille bien lui envoyer.
Dans un monde parfait, la première vague de push passé, il ne devrais plus y avoir de problème, mais bien sùr c’était sans compter sur un problème de taille, qui vient de l’iPhone ou de Gmail je n’en sais rien, qui fait que votre INBOX et surement d’autres dossiers, se retrouvent complètement vide … Il faut alors attendre que Gmail repush le contenu du dossier vers votre iPhone.
De même il arrive assez couramment que des entêtes de message soient pushé vers l’iPhone mais pas le corps du mail. Vous voyez donc un nouveau message dans votre iPhone mais le corps du mail n’est pas envoyé. Et comme c’est du push (à la Google ?) votre iPhone n’arrivera pas à aller télécharger le corps du mail sur le serveur et vous devrez attendre que Gmail se rende compte du bordel et veuille bien repusher le mail.
**Conclusion**
Si en pratique le push mail est un avantage indéniable dans le milieux professionel et devrais, à mon avis, vous faire gagner en autonomie au niveau de votre périphérique mobile (et encore avec l’iPhone il y a moyen que ce soit plus gourmand que d’aller chercher les mails en IMAP toutes les 15 min), en pratique ici cela génère trop d’inconfort et d’indisponibilité pour être utilisé dans la vie de tout les jours. Pour ma part je songe très sérieusement à repasser sur du mail classique en IMAP et abandonner le Push GMAIL.
Et vous ? Quelle est votre expérience ? Avez vous testez le service, des retours ?
[Creadits Photo](http://www.flickr.com/photos/jeremy%5Fvandel/4279050335/?ref=thibaultmilan.com)
### TimThumbs Beta , support des url externes
URL: https://thibaultmilan.com/timthumbs-beta-support-des-url-externes/
Last updated: 2009-08-04T12:00:00.000Z
Timthumbs qu’on ne présente plus, est pour moi LE numéro un des utilitaires permettant de redimenssioner / zoomer / croper les photos dynamiquement via un simple appel de fichier php avec les paramètres qui vont bien. Le principal problème de cette technique était que le fichier source devais se trouver sur le serveur qui allais réaliser les actions. Du coup impossible de l’utiliser en stockant vos photos sur Flickr ou autre.
Après plusieures recherches j’ai donc trouvé une version béta du script qui autorise l’utilisation d’image distantes, depuis un certains nombres de sites d’hébergement d’image seulement (je n’ai aucune idée de pourquoi cette limitation). Si cela vous intéresse c’est par ici que cela se passe :
[Télécharger](http://www.binarymoon.co.uk/2009/07/timthumb-beta-test/?ref=thibaultmilan.com)
### Flickr Manager pour WordPress 2.8.x
URL: https://thibaultmilan.com/flickr-manager-pour-wordpress-2-8-x/
Last updated: 2009-08-03T12:00:00.000Z
Travaillant actuellement sur un projet de folio pour photographe j’ai été confronté à la délicate tâche de trouver un plugin flickr qui correspondrais aux besoins, à savoir pouvoir uploader des images directement sur un compte flickr pro et utiliser flickr comme hébergeur des fichiers volumineux pour ensuite créer les fichiers miniatures ici, sur le serveur.
Mon choix c’est porté sur l’excellent Flickr Manager mais celui ci ne marchais plus à cause d’une méthode de sélection jQuery qui est maintenant dépreciated et qui ne marche plus comme le créateur du plugin l’utilise. Il en résulte qu’il est impossible d’insérer l’image dans le corps du billet et que le manager boucle sur lui même ce qui est particulièrement agacent.
**Ce module est maintenant déprécié.**
Pensez à faire votre mise à jour et à bien aller valider les settings du plugin.
Voici donc Flickr Manager corrigé pour 2.8 :
[Télécharger](http://thibaultmilan.com/wp-content/uploads/2009/08/wordpress-flickr-manager.zip)
[Credit Photo](http://www.flickr.com/photos/luvi/2336546045/?ref=thibaultmilan.com)
### DIVINE — Photoshop to wordpress, very easy !
URL: https://thibaultmilan.com/divine-photoshop-to-wordpress-very-easy/
Last updated: 2009-08-03T12:00:00.000Z
Finit les longues heures à devoir découper et intégrer un fichier photoshop pour pouvoir l’utiliser en tant que thème wordpress, [DIVINE](http://www.divine-project.com/?ref=thibaultmilan.com) est là et nous promet rien de moins que de permettre en une minute de réaliser notre découpage de thème, d’insérer toutes les variables qui vont bien, et d’exporter le tout sous forme de template près à être activé, directement sur le ftp de notre site sous Wordpress.
Quelques captures d’écran pour vous faire une idée de la puissance du plugin photoshop (oui car cela se présente comme un plugin Photoshop) :
**1\. Démarrer un projet**

****2\. Insérer les balises Wordpress**

****3\. Convertir et publier**

****4\. Admirer le résultat**

### Codeur.com et le statut membre pro
URL: https://thibaultmilan.com/codeur-com-et-le-statut-membre-pro/
Last updated: 2009-07-26T12:00:00.000Z
**Codeur.com** , que vous devez déjà connaitre, est un site d’**appel d’offre** concernant des projet de **développement** (pour faire simple). Participant souvent aux appels d’offres de ce site, je découvre cette après-midi une nouveauté, les offres réservées aux membres pro.
Pour information ce site fonctionne sur le principe de **prendre une commission sur les projets remportés,** et propose en plus d’un statut “free” trois statuts payant “membre pro”. **Allant de 75 à 150 euros par mois**, ces statuts vous permettent par exemple de recevoir par email les coordonnées des porteurs de projets ou de les contacter directement ou encore permettre que vos coordonnées soient insérées dans les offres que vous faites.
Et donc voila qu’**on peut maintenant empêcher les personnes ne versant pas 75 euros par mois minimum à codeur.com de faire un offre**, sans doute en croyant que si les personnes investissent cette somme, c’est qu’elles sont sérieuses et font du bon travail. Parceque oui, codeur.com est devenu le repaire de gros branleurs anonyme autoproclamé développeur, spammant à coeur joie la même réponse en guise d’offre sans même prendre le temps de lire et encore mieux, comprendre le besoin du client, il faut donc bien trouver un moyen de faire le tri entre les gens compétents et les autres.
Maintenant je me pose une question, **en quoi payer un tel tribu est il garantit d’un travail soigné, propre, rapide**, … Non parceque 75 euros sur le budget d’une boite de com’ c’est rien, et ca ne garantit pas qu’elle vous refile **une royale bouse en guise de site web, assortit d’un contrat vous liant à elle pour 5 ans à 250 euros le mois** … sous couvert de faire de la “maintenance” et des actions “SEO” plus ou moins (plus moins que plus) utiles.
Ce n’est pas tant **codeur.com** qu’il faut blâmer toutefois, car le site ne fait sans doute que **répondre à une demande venant des utilisateurs**, mais bien le porteur de projet qui se ferme à des propositions qui viendront de personnes dont on à aucune garantie de sérieux et de compétence.
*\[alert-green\] NDLR: En revanche le système de karma de codeur, représentatif des bonnes pratiques d’un utilisateur, est plutôt bien foutu et pour le coup, plus représentatif. \[/alert-green\]*
### Lister les liens WP en dehors de WP
URL: https://thibaultmilan.com/lister-les-liens-wp-en-dehors-de-wp/
Last updated: 2009-06-30T12:00:00.000Z
Il arrive que parfois on ai besoin de passer des requetes en dehors du moteur wordpress, et comme c’est mon cas aujourd’hui je vous livre le bout de code qui permet de lister les liens dans la blogroll sans passer par WP :
query("SELECT \* FROM wp\_links;");// on passe la requete
echo "\* [“.$row\[‘link\_name’\].”](%22.$row[)
";//on ferme
$db->close();//on oublie aps de fermer l'acces a la bdd !
?>Bien sur vous pouvez aussi télécharger le fichier php qui va bien ici : [WP\_LINK\_GRABBER](http://lageeknote.com/wp-content/uploads/2009/06/requete.php?ref=thibaultmilan.com)

### Rencontre SEO Camp à Metz
URL: https://thibaultmilan.com/rencontre-seo-camp-metz/
Last updated: 2009-06-04T12:00:00.000Z
Ce Samedi 6 juin se déroulera à Metz un SEO Camp, rencontre entre différents acteurs du web et du référencement. Les dicutions tourneront, vous l’aurais compris, autour de la SEO mais aussi des projets de l’association comme la certification référencement.
L’accès est gratuit même pour les non adhérents et se déroulera au Bar L’Estanquet à Metz de 14:00 à 20:00 .
Le tout organisé par [Fred](http://www.blogdefred.com/?ref=thibaultmilan.com), vous pouvez consulter le plan [Google Map](http://maps.google.fr/maps?q=estanquet+27+rue+des+roches+metz&ie=UTF8&t=h&z=16&ref=thibaultmilan.com), et les inscriptions se passent sur [Facebook](http://www.facebook.com/event.php?eid=100542607528).
### Crash Air France — Réflexion Personnelle
URL: https://thibaultmilan.com/crash-air-france-r-flexion-personnelle/
Last updated: 2009-06-01T12:00:00.000Z
*\[alert-orange\] Le billet qui suit n’est qu’un sentiment personnel, ne visant pas à soulever une polémique mais juste à faire réfléchir un peu les internautes qui le liront. \[/alert-orange\]*
Aujourd’hui [on apprends qu’un avion d’air France ne réponds plus sur les échos radar](http://twitter.com/BreakingNews/status/1989796930?ref=thibaultmilan.com), n’as pas signalé sa position au dernier passage de méridien. Ce genre d’accident est il fréquent, je n’ai pas la prétention d’avoir une quelconque réponse. Mais quand je vois comment les gens sur Twitter sont excité par ce genre d’info croustillante, comment elle se répands comme une traînée de poudre, on se croirais devant des journalistes de Canal+ .
Alors ok ,231 personnes (équipage compris) sont portées disparues, un PC de crise est mis en place à AirFrance, le ministre des transports et détaché sur place, toussa. Mais certains avant de se masturber sur Twitter avec cette news devraient juste se rappeler deux secondes que aujourd’hui , dans le monde, c’est **18000 enfants qui meurent de faim CHAQUE JOUR** , c’est **1 personne contaminé toute les 6 secondes par le virus du SID**A, et j’en passe … pourtant, toutes ses personnes, personne n’en parle sur Twitter, encore moins à la Télévision.
Sources : [Aides](http://www.aides.org/?ref=thibaultmilan.com) et [NotrePlanete](http://www.notre-planete.info/actualites/actu%5F1034%5F18000%5Fenfants%5Fmeurent%5Fchaque%5Fjour.php?ref=thibaultmilan.com)
[Crédit Photo](http://www.flickr.com/photos/yakusa77/4494796344/?ref=thibaultmilan.com)
### Jailbreak iPhone OSX 10.5.7
URL: https://thibaultmilan.com/jailbreak-iphone-osx-10-5-7/
Last updated: 2009-05-22T12:00:00.000Z
Le jailbreak d’un iPhone / iPod n’a jamais été aussi facile mais avec 10.5.6 cela peut un petit peu se compliquer. Voici la marche à suivre pour rapidement et simplement Jailbreaker votre périphérique :
1. Repasser les drivers USB de votre Mac en 10.5.5 en utilisant soit le site officiel Apple dev Center, soit en utilisant directement le fichier que je mets à votre dispo (c’est le même, mais ca vous évite de devoir ouvrir un compte Apple Developper) [Download iousbfamily315.4.1log.dmg (Mirrors (8): RapidShare, MegaUpload, NetLoadIn, FileFactory, EasyShare, Badongo, LoadTo, and 2Shared)](http://www.gazup.com/0sjPt-iousbfamily315.4.1log.dmg-download-mirrors?ref=thibaultmilan.com)
2. Reboot de votre machine, **A CE STADE NE BRANCHEZ RIEN D’AUTRE QUE VOTRE IPHONE OU VOTRE IPOD SOUS PEINE D’OBTENIR UN KERNEL PANIC.** Lancez [Quickpown](http://blog.iphone-dev.org/post/74278878/close-the-stable-door?ref=thibaultmilan.com) qui détectera automatiquement quel est votre périphérique et le jailbreakera en conséquence. Suivez bien toute les instructions.
3. Déconnectez le périphérique et faite la [Combo Update 10.5.7](http://support.apple.com/downloads/Mac%5FOS%5FX%5F10%5F5%5F7%5FCombo%5FUpdate?ref=thibaultmilan.com) pour revenir a des drivers USB corrects.
Voila c’est fini ! Vous avez jailbreaké votre périphérique et votre système est redevenu tout bon. Just easy as 1–2–3 !
[Credit Photo](http://www.flickr.com/photos/williamhook/2830322349/in/photostream/?ref=thibaultmilan.com)
### WWDC09 — Apple Design Award
URL: https://thibaultmilan.com/wwdc09-apple-design-award/
Last updated: 2009-04-29T12:00:00.000Z
Lors de la WWDC ’09 se déroulera également le concours Apple Design Award. Concours qui récompense les meilleurs designs et applications pour Mac et iPhone les plus époustouflante. Chaque année nous livre de nouveaux futures applications à succés comme enigmo ou Guitar Hero 3.
Et pour cette année il vous reste jusqu’au 4 Avril pour inscrire votre projet, si vous êtes étudiant vous pouvez aussi inscrire votre projet sur la liste d’attente étudiante ( les inscriptions étant closes).
Pour en savoir plus : [Apple Design Award](http://developer.apple.com/wwdc/ada/index.html?ref=thibaultmilan.com)
[Credit Photo](http://www.flickr.com/photos/frijole/3607820628/in/photostream/?ref=thibaultmilan.com)
### Sunday Morning — la traduction simplifié en ajax
URL: https://thibaultmilan.com/sunday-morning-la-traduction-simplifi-en-ajax/
Last updated: 2009-04-17T12:00:00.000Z
La traduction des pages d’un site à toujours été la préoccupation quasi #1 des sites dit “Worldwide”, comprendre un site qui s’addresse à un publique mondial. Et de plus en plus les petits sites, afin d’offrir un confort d’utilisation pour les éventuels visiteurs qui apparaissent comme cela, tout seul, et qui ne parlent pas un mot de la langue du site.
Mais comment faire cela de façon smart, sexy, en AJAX et simplement ? Avec Sunday Morning !
Je vous invite donc à filer directement [découvrir Sunday Morning](http://sundaymorning.jaysalvat.com/?ref=thibaultmilan.com), le plugin JQUERY pour la traduction automatique des pages web, tester, adopter.
Pour ceux qui s’interessent, sous le capot c’est propulsé par Jquery (on l’aura deviné), l’api google translate et un bookmarklet si vous ne sohaitez pas intégrer le JS dans le site complet.
### La Fin de Twitter ?
URL: https://thibaultmilan.com/la-fin-de-twitter/
Last updated: 2009-04-17T12:00:00.000Z
Titre volontairement provocateur, rassurez vous, Twitter à encore de beaux jours devant lui. Non ce matin j’ai envie de partager une petite reflexion commencé sur Twitter ([pensez à me suivre](http://twitter.com/thibaultmilan?ref=thibaultmilan.com)).
Ashton Kutcher vient de dépasser le million de followers, soit plus d’1/5 des gens sur twitter qui le suivent. Oprah Winfrey, la seule, l’unique, maitresse incontesté du Talk Show en Amérique, alors qu’elle n’a encore rien posté, atteint les 58285 (à l’heure où j’écrit ce billet).
Jusque là, rien de bien méchant, mais imaginez deux seconde. Twitter n’est pas connu pour être le modèle de fiabilité (en même temps c’est ruby-powered). Imaginez Oprah, Ashton, se parlerons en direct à la TV US. Moi je dit, à cet instant précis, Twitter s’éfondrera et se désintégrera sans un bruit dans le vide du cyberespace. Pouf !
### Installer Ubuntu sur un Macbook Blanc
URL: https://thibaultmilan.com/installer-ubuntu-sur-un-macbook-blanc/
Last updated: 2009-04-17T12:00:00.000Z
Je ne sais pas pour vous, mais j’ai souvent été tenté d’installer ubuntu sur mon superbe macbook tout neuf. Mais voila le gros problème : Comment on fait ? Non parceque sur un ordinateur normal, c’est pas bien compliqué : on lance le liveCD, on lance l’installeur et en avant la musique. Mais sur un Macbook ?
Alors apparemment c’est assez périlleux, il faut changer le bootloader intégré au mac pour un Grubloader qui permettra de lancer un peu n’importe quel os. Si ça vous intéresse vraiment et que vous n’avez pas froid au yeux, c’est par ici :
[How-To install Ubuntu on Macbook](https://help.ubuntu.com/community/How%20to%20install%20Ubuntu%20on%20MacBook%20using%20live%20CD?ref=thibaultmilan.com)
### Lancer Gmail Offline dans Webkit et Non Safari
URL: https://thibaultmilan.com/lancer-gmail-offline-dans-webkit-et-non-safari/
Last updated: 2009-03-22T12:00:00.000Z
Si vous avez suivit mes conseil concernant Safari4 et Wordpress, vous devez déjà être sur Webkit plutôt que Safari. Outre le fait que Webkit est mis à jour quotidiennement (lui) je le trouve en général plus stable. Seul bémol , cela serait la pris ene compte un peu hasardeuse des plugins mais comme il n’y en a pas des masses, cela passe.
Bref, donc avec webkit, je ne peut lancer Gmail Offline, car mes raccourcis pointent vers Safari. J’ai donc trouvé l’astuce pour changer cela, tout simple mais il fallait y penser. il suffit de changer le script de lancement en éditant un fichier. Pour mieux comprendre, voici là vidéo qui va bien . Je vous conseille de la lancer en plein écran tout de même.
[Credits Photo](http://www.flickr.com/photos/opacity/4483056782/in/photostream/?ref=thibaultmilan.com)
### Concours Dotclear/Mozilla
URL: https://thibaultmilan.com/concours-dotclear-mozilla/
Last updated: 2009-03-22T12:00:00.000Z
Dotclear en partenariat avec Mozilla (ou inversement, c’est comme on le sent) organisent un grand concours de création de thème. Thème Dotclear 2 bien sùr, il est ouvert à tous.
> Débutants ou initiés, vous êtes tous invités à participer à ce jeu : créez votre propre thème de blog, inspiré de la thèmatique Mozilla, Dotclear, de l’Open Web, des Logiciels Libres … et remportez de superbes lots !Coté dotations , il y a quand même du lourd :
- 1ere place : Une tablette graphique Wacom Intuos3 A5 Wide
- 2e place : Une sonde de calibration d’écran Spyder 2 Express
- 3e place : Un super sac Firefox
Les trois gagnants recevront aussi un livre « CSS2 Pratique du design web », dédicacé par son auteur Raphaël Goetter . Les 10 premiers recevront également tous un T-shirt Mozilla.
Concours plutôt sympa, si vous êtes tentez, rendez vous [ici](http://themes.dotaddict.org/post/Aorakits?ref=thibaultmilan.com) pour aller chercher les gabarits afin de vous aider à créer un thème, et [ici](http://themes.dotaddict.org/infos/Concours-Mozilla?ref=thibaultmilan.com) pour déposer votre création !
### JeFaismesdevoirs
URL: https://thibaultmilan.com/jefaismesdevoirs/
Last updated: 2009-03-06T12:00:00.000Z
FaitMesDevoirs.com le très controversé site permettant moyennant finance de faire les devoirs de nos chères têtes blondes, viens d’annoncer sa fermeture. Ce n’est pas grave car JEfaismesdevoirs.com ouvre ses portes. Ce site d’entraide communautaire pour faire ses devoirs et autrement plus éthique, et possède un design qui me rends totalement fan !
N’Hésitez pas à faire un tour sur [Jefaismesdevoirs.com](http://jefaismesdevoirs.com/?ref=thibaultmilan.com) au plus vite !
### World Builder
URL: https://thibaultmilan.com/world-builder/
Last updated: 2009-03-05T12:00:00.000Z
Une vidéo trouvé sur le blog de pilo-tee, juste magnifique . Cela parle d’un homme qui crée une ville, dans une hollochambre, pour celle qu’il aime, qui n’est pas tout a fait présente dans notre monde.
### Spotwitfy
URL: https://thibaultmilan.com/spotwitfy/
Last updated: 2009-03-05T12:00:00.000Z
Vous conaissez tous Spotify, cette magnifique application de lecture de musique en streaming, un deezer like, mais en 200 millions de fois plus pratique ? Et Twitter ? Oui ? Et bien voici Spotwifty qui mixe les deux, pour vous offrir un suivit en temps réel des échanges de playlist sur twitter, à travers le monde entier.
Bon l’intérêt semble plutôt limité vous allez me dire, malgré la fonction de recherche, cet outils ne semble pouvoir tracker que les url que l’on ne réduis pas (un peu logique) mais du coup ca doit louper 90% des playlist qui sont raccourcies par un service de short url.
Quoi qu’il en soit ca se passe ici : [spotwitfy](http://spotwitfy.com/?ref=thibaultmilan.com)
### Salon des nouvelles technologies et des Entrepreneurs
URL: https://thibaultmilan.com/salon-des-nouvelles-technologies-et-des-entrepreneurs/
Last updated: 2009-03-05T12:00:00.000Z
Le 29 et 30 otctobre 2009, se tiendra à Colmar le 3e Salon des nouvelles technologies et des Entrepreneurs.
> Il réunit sur deux journées 5000 visiteurs dirigeants d’entreprises de la région Alsace et des régions avoisinantes, de la TPE au Grand Compte en passant par les décideurs des collectivités locales se posant les problématiques actuelles liées aux TIC :
> \- comment devenir plus compétitif grâce à ces nouveaux outils,
> \- comment les mettre en place de manière optimale,
> \- quels sont les meilleures solutions,
> \- à quels prix…
> L’évènement médiatique, réseau et Business, les journées d’échanges où il faut être présent.Et à l’occasion de se salon se dérouleront des conférences, des échanges entre blogueurs et professionnels, afin de faire découvrir les outils de communications qui pour certains sont devenus outils de tout les jours, et de ce que cela peut leur apporter. Et devinez quoi ? Je suis invité en tant qu’intervenant ! Avec Steph’ et Chris’ (à confirmer) on sera donc là haut le 29 et/ou 30\. Et vous ?
[Le site Web du Salon](http://www.colmar-multimedia.com/client/1?ref=thibaultmilan.com)
### Interface D’administration
URL: https://thibaultmilan.com/interface-d-administration/
Last updated: 2009-03-05T12:00:00.000Z
Lors de la réalisation de projets, il n’est pas rare de devoir faire une interface d’administration. Quand il s’agit de services web, il est tout à fait possible, voir recommandé, d’utiliser le design du site, mais lorsqu’il s’agit d’un CMS ?
Je suis en effet en train de travailler sur un projet de CMS pour le tourisme et il m’est indispensable d’avoir une interface d’administration agréable et ergonomique. Après quelques recherches j’ai trouvé 2 interface disponibles gratuitement, et quelques unes sur ThemeForest plutôt bien foutues je dois dire, et je me laisserais bien tenté …
### Admin Template
Thème 3 colonnes, créer pour un projet par un editeur de webresourcesdepot.com, ce thème est disponible gratuitement.
[Démo](http://webresourcesdepot.com/wp-content/uploads/file/admin-template/index.html?ref=thibaultmilan.com) — [Téléchargement](http://www.webresourcesdepot.com/free-admin-template-for-web-applications/?ref=thibaultmilan.com)
### Admin Template (encore un …)
Un thème à navigation par onglets exclusivement cette fois. Il a la particularité d’être fournit avec une partie publique et une partie privée !
[Démo publique](http://www.bloganje.com/admin%5Ftemplate/?ref=thibaultmilan.com) — [Démo Privée](http://www.bloganje.com/admin%5Ftemplate/?ref=thibaultmilan.com) — [Téléchargement](http://www.bloganje.com/free-admin-template.html?ref=thibaultmilan.com)
### Clean Website Administration Template
Vendu 12,00 $ ce thème est décliné en 4 couleurs qui sauront s’adapter à la plupart des besoins en termes de projet. C’est un des templates pour le quel je craque en ce moment, et que je vais sûrement acheter :D.
[Démo](http://www.curtziegler.com/sitedemo/admin01/?ref=thibaultmilan.com) — [Plus d’infos](http://themeforest.net/item/clean-website-administration-template/26500?ref=clawfire)
### Admin Nano
Simple et claire, j’ai été séduit par cette interface pour son coté très clean, très propre. De plus elle respecte les standarts avec sa validité XHTML 1.0 strict . Autre petit plus ? Le PSD est fournit pour pouvoir décliner le thème à l’infini !
[Voir le thème](http://themeforest.net/item/adminnano/20408?ref=clawfire) (prix : 10$)
### Advance Admin Panel 01
Bénéficiant d’un design très élaboré et ô combien sexy, je n’ai pas retenu cette inerface pour mon projet, mais je doit avouer qu’elle à franchement de la gueule, pour seulement 12$ !
[Voir le thème](http://themeforest.net/item/advanced-admin-panel-01/23804?ref=clawfire)
### Flexiadmin control Panel
Pour finir, voici de l’interface de compétition, du lourd, très très complète, trop pour mon projet, je ne pouvais quand même pas passer à coté de ce désign décliné en 4 versions de couleurs. Le support est assuré via un forum pour ce thème, ce qui peut être un petit plus, le design est fluide et non fixe (chacun ses goûts) et l’auteur assure qu’avec les éléments fournis vous pourrez construire n’importe quelle page dont vous pouvez avoir besoin, rien que ça !
[Voir le thème](http://themeforest.net/item/flexiadmin-control-panel-liquid-4-skins/25627?ref=clawfire) (prix : 15$)
Voila qui conclut le tour des interfaces d’administrations que j’avais retenue pour mon projet, le choix n’est pas encore fait, mais vous pouvez vous en retrouver bien plus sur [themeforest](http://themeforest.net/category/site-templates/admin-skins?ref=clawfire) !
### Corriger le bug TinyMCE de Wordpress avec Safari 4
URL: https://thibaultmilan.com/corriger-le-bug-tinymce-de-wordpress-avec-safari-4/
Last updated: 2009-03-05T12:00:00.000Z
Si vous utilisez safari 4 Beta, et que vous bloguez sous Wordpress, vous avez sans doute rencontré une erreur particulièrement enquiquinante, celle de l’insertion des liens avec TinyMCE, puisque celui si affiche la fenêtre de lien DERRIERE la trame grise qui empêche de cliquer sur la page. Il devient donc impossible de faire quoi que ce soit et donc vous perdez votre travail non sauvegardé.
La solution ? Mettre à jour le moteur d’affichage Safari : Webkit . Et comment ? très simplement en allant sur la [page de téléchargement des nightly du projet Webkit](http://nightly.webkit.org/?ref=thibaultmilan.com) et de télécharger la version correspondant à votre OS. Vous lancez le programme, en ayant Safari de fermé, et le moteur de rendu devrais être mis à jour.
Dès lors vous pouvez désinstaller l’application webkit, la supprimer, pas de problème, votre moteur de rendu devrais avoir été mis à jour !
[Via](http://chaodam.niloo.fr/index.php/2009/03/03/astuce-corriger-le-bug-tinymce-sous-wordpress-avec-safari-4/?ref=thibaultmilan.com)
### SimpleNewsletter 1.0 beta
URL: https://thibaultmilan.com/simplenewsletter-1-0-beta/
Last updated: 2009-02-27T12:00:00.000Z
Voila en attendant une page dédié, je publie ici un petit script de newsletter tout bête. Il va aller chercher une page web et l’expédier par mail. Idéal si vous souhaitez gérer une newsletter avec un simple template personnalisé via votre CMS que vous utilisez tout les jours.En pratique, vous décompressez l’archive sur votre serveur, naviguez vers ./install et suivez les instructions !
#### 2 modes de fonctionnement :
1. Vous passez par la page d’acceuil index.php et pouvez modifier le titre de l’objet du mail tout à loisir
2. Vous accedez à la page ./core/send.php via une tache cron. L’objet sera automatiquement “Newsletter du \[DATE DU JOUR\]”
Pour le moment l’importation des contacts se fait via un fichier ./importer.php qui va aller chercher un fichier texte pour sauvegarder toute les adresses mails s’y trouvant.
Le fichier doit s’appeler list.txt et comporter une adresse email par ligne. Les doublons ne seront pas importés !
#### Fonctionnalités à venir :
- Configurateur afin déviter l’edition du fichier de config
- Optimisation de l’importateur afin qu’il fasse moins de requêtes à la BDD
- Plugin Wordpress
- Importer depuis une bdd existante
#### Téléchargement
[Télécharger SimpleNewsletter Version 1.0 Beta ZIP](http://thibaultmilan.com/wp-content/uploads/2009/02/simplenewsletter-10-beta.zip)
### Réinitialiser les mot de passe Dotclear
URL: https://thibaultmilan.com/r-initialiser-les-mot-de-passe-dotclear/
Last updated: 2009-02-22T12:00:00.000Z
Il arrive toujours qu’on perde un mot de passe. Et comme c’est le cas avec dotclear, il est crypté dans la base de donnée donc irrécupérable. Voici donc un petit script dont je ne suis pas du tout l’auteur mais qui peu bien servir.
Enjoy it !
[Telecharger Recover.php](http://lageeknote.com/wp-content/uploads/2009/02/recover.php?ref=thibaultmilan.com)

### 4 Tutos toujours utiles — Edt. 1
URL: https://thibaultmilan.com/4-tutos-toujours-utiles-edt-1/
Last updated: 2009-02-22T12:00:00.000Z
Besoin d’une petite zone membre rapidos pour votre site que vous avez codé vous même mais pas trop d’idée de comment faire ça proprement et de manière un minimum sécurisé ? Pas de panique, Nettuts vole à votre secours[ avec ce petit tuto super bien fait comme toujours](http://nettuts.com/tutorials/php/user-membership-with-php/?ref=thibaultmilan.com).
En bonus ? On peut télécharger directement un zip avec tout les fichiers sources (dispo [ici](http://nettuts.s3.amazonaws.com/108%5FuserMembershipWithPHP/sample.zip?ref=thibaultmilan.com))
Les formulaires de contacts c’est bien, mais avec la validation des champs ça peut vite devenir méga chiant à coder, enjoy voici [une sélections de 16 petits snippets de code](http://www.webresourcesdepot.com/16-free-ajax-contact-forms-for-a-better-user-experience/?ref=thibaultmilan.com), voir de tutos pour certains, vous allez forcement trouver votre bonheur.
Votre Site web monte en charge, et vous cherchez un système de cache ? Mieux, vous souhaitez installer Nginx ? Et bien voici [un petit tuto](http://www.parenthese.be/2009/02/07/installation-de-nginx-sur-un-vps-gandi/?ref=thibaultmilan.com) signé Parenthèse.be.
Marre de ce petit bonhomme tout gris ? Voici comment [changer le gravatar par défaut sous Wordpress](http://buildinternet.com/2009/02/how-to-change-the-default-gravatar-in-wordpress/?ref=thibaultmilan.com).
### Compositio : Thème WordPress Gratuit
URL: https://thibaultmilan.com/compositio-th-me-wordpress-gratuit/
Last updated: 2009-02-21T12:00:00.000Z
En voila un thème qu’il est beau. Compositio de son petit nom à le mérite d’être gratuit. Mais comme gratuit ne rime pas forcement avec bâclé, vous pourrez admirer ici un thème qui à tout ce que les “grands” (comprendre ceux que l’on achète) peuvent avoir.
Fournit avec un système permettant de changer facilement le logo (PSD à la bonne taille fournit) ce thème est bien évidemment widget-ready, avec la particularité que la créatrice, Elena, à tenté d’adapter au mieux la css pour que tout les widgets s’intègrent facilement d’un point de vue graphique.
Les plugins dont le thème aurait éventuellement besoin sont eux totalement intégré via le fichier functions.php, il ne vous sera donc pas demandé de les installer, mis à part flickrRss, si vous souhaitez utiliser ses fonctions.
Pour finir, le travail est sous CC Attribution-Share Alike 3.0, n’hésitez donc pas à modifier le thème et à nous laisser un commentaire, nous serons ravis de montrer votre création !
- [Apercu complet du thème](http://lageeknote.com/wp-content/uploads/2009/02/large-preview.png?ref=thibaultmilan.com)
- [Démo](http://designdisease.com/preview/compositio?ref=thibaultmilan.com) (le serveur à tendance à saturer)
- [Télécharger le thème](http://designdisease.com/download-manager.php?id=12&ref=thibaultmilan.com)
- [Voir le post sur SmashingMag’](http://www.smashingmagazine.com/2009/02/18/compositio-clean-beautiful-and-free-wordpress-theme/?ref=thibaultmilan.com)
### One Day — One Projet
URL: https://thibaultmilan.com/one-day-one-projet/
Last updated: 2009-02-13T12:00:00.000Z
Aujourd’hui c’est le One Day — One project, j’ai donc décidé de réaliser un projet de fac que j’avais mis de coté, en un jour seulement, parceque ça me semble faisable. Il s’agit d’un gestionnaire de contenu pour agence de voyage.
Au programme gestion de catégorie, d’offre, de rédacteurs, et paiement en ligne si j’ai le temps.
### Les Sims 3 le rendez vous Episode 6
URL: https://thibaultmilan.com/les-sims-3-le-rendez-vous-episode-6/
Last updated: 2009-02-09T12:00:00.000Z
Dans l’épisode 6 du documentaire français des Sims 3, les développeurs nous donnent un aperçu du monde ouvert dans le jeu. Une révolution pour les Sims et les joueurs !
Au programme de cette vidéo : découverte de l’interface dejeu en mode voisinage. Très bonne impression, la gestion du graphisme semble nettement optimisée avec des chargements dynamiques de textures, ce qui optimise grandement la fluidité du jeu.
[**“Les Sims 3 LE rendez-vous” épisode 6**](http://www.dailymotion.com/video/x88qx6%5Fles-sims-3-le-rendezvous-episode-6%5Fvideogames?ref=thibaultmilan.com)
*envoyé par* [*lessims*](http://www.dailymotion.com/lessims?ref=thibaultmilan.com)
### [Test] DestroyTwitter , client twitter AIR
URL: https://thibaultmilan.com/test-destroytwitter-client-twitter-air/
Last updated: 2009-02-09T12:00:00.000Z
DestroyTwitter est un client Twitter tournant avec AdobeAir, donc compatible avec à peut près toutes les plates-formes non mobile (et peu être Androïd, je crois qu’il y a un portage Air mais je ne suis pas sûr).
D’un design très sombre, ce petit logiciel possède une interface utilisateur très intuitive selon moi. Très design, très paramétrable, il me plais bien. Malheureusement il n’outrepasse pas la limite API comme Toro mais il semble très prometteur.
Autre point positif, contrairement à de nombreuses applications Air, il possède une intégration complète, sous mac en tout cas, et propose un vrai menu comme toute autre application, via la menubar, et donc tout les raccourcis claviers qui vont bien.
Quelques petites captures d’écran :
\[gallery link=”file” orderby=”post\_name”\]
Si vous aussi ça vous tente, rendez vous sur le site web de [DestroyTwitter](http://www.destroytoday.com/index.php?p=Project&id=DestroyTwitter&ref=thibaultmilan.com) .
### Les Sims 3 le rendez vous
URL: https://thibaultmilan.com/les-sims-3-le-rendez-vous-45/
Last updated: 2009-02-08T12:00:00.000Z
“Berceau de la culture Sims, San Francisco est une ville à la culture riche et passionnante. C’est dans cette région de Californie que le Studio Sims créé le jeu depuis ses débuts et poursuit le développement des Sims 3.
Dans ce nouvel épisode, Ben Bell producteur exécutif des Sims 3, présente le jeu aux 5 joueurs français. Un aperçu montrant la ville ouverte et des options de personnalisation.
Dans les Sims 3, vous pouvez suivre vos Sims comme avant, mais aussi dézoomer pour observer l’ensemble de la ville et atteindre plus facilement certains endroits ou certaines options. Le monde des Sims sera vivant en permanence, offrant ainsi une expérience de jeu plus intéressante et plus profonde.”
[**“Les Sims 3 LE rendez-vous” épisode 5**](http://www.dailymotion.com/video/x7xyk0%5Fles-sims-3-le-rendezvous-episode-5%5Fvideogames?ref=thibaultmilan.com)
*envoyé par* [*lessims*](http://www.dailymotion.com/lessims?ref=thibaultmilan.com)
### Les Sims 3 le rendez vous Ep 4
URL: https://thibaultmilan.com/les-sims-3-le-rendez-vous-ep-4/
Last updated: 2009-02-06T12:00:00.000Z
Cette semaine : visite du campus EA de Redwood et du studio Sims ! Une première pour des joueurs français ! Avant d’entrer dans le vif du sujet (la découverte du jeu à proprement dit), nos 5 français visitent le Campus Electronic Arts au cœur duquel Les Sims 3 sont développés !
[**“Les Sims 3 LE rendez-vous” épisode 4**](http://www.dailymotion.com/video/x7tcmn%5Fles-sims-3-le-rendezvous-episode-4%5Fvideogames?ref=thibaultmilan.com)
*envoyé par* [*lessims*](http://www.dailymotion.com/lessims?ref=thibaultmilan.com)
### Jailbreak iPod Touch 2.2.1 ?
URL: https://thibaultmilan.com/jailbreak-ipod-touch-2-2-1/
Last updated: 2009-02-02T12:00:00.000Z
Aujourd’hui je me susi fait proposer la mise à jours 2.2.1 pour mon iPod Touch. Mise à jour qui était déjà disponible depuis un bon moment pour les possesseurs d’iPhone et dont on se demandais si elle ne verrais jamais le jours sur iPod Touch. Et bien c’est chose faite. Mais si comme moi vous êtes utilisateurs d’un iPod Touch Jailbreak, lisez ce qui suit …
Pour commencer vous n’êtes pas sans savoir que Apple avec la mise à jour Mac OsX 10.5.6 à changer les fichiers de gestion des ports usb pour empêcher votre mac de reconnaître un iPod/iPhone en mode DFU, mode indispensable pour installer un firmware jailbreaké.
**La première étape** consiste donc à changer cela. Il vous suffit pour cela de télécharger l’image [iousbfamily315.4.1log.dmg](http://rapidshare.com/files/192884085/iousbfamily315.4.1log.dmg?ref=thibaultmilan.com) (rapidshare). Installez le et rebootez votre machine. Attention, l’image contient 2 package, n’installez que la version contenant le mot “log” dans son nom !
Une fois redémarré, lancez iTunes pour “télécharger seulement” le firmware si ce n’est pas déjà fait. Puis fermez le complètement (Q). Lancez Quickpown ([PC](http://miphone.ca/iphone-dev/QuickPwn225-2.zip?ref=thibaultmilan.com) — [Mac](http://iphone-dev.fgv6.net/QuickPwn%5F2.2.5.dmg?ref=thibaultmilan.com)), connectez votre iPod et roulez jeunesse !
C’est tout, rien d’autre ! **Attention** cependant, **je constate de GROS problèmes** en jailbreak sur ce firmware : Cydia qui n’arrive pas à résoudre les dépendances correctements, ssh qui déconne, SBSetting qui ne s’installe pas … A tel point que je pense sérieusement downgrader :s .
De plus je vous avertit, je n’ai pas réussit à produire un firmware installable avec [**PwnageTool**](http://rapidshare.com/files/192892854/PwnageTool%5F2.2.5.dmg?ref=thibaultmilan.com), sans doute un problème de patch du firmware …
### What’s this Sound ?!
URL: https://thibaultmilan.com/what-s-this-sound/
Last updated: 2009-02-01T12:00:00.000Z
What’s This Sound est un webzine musicale ayant la particularité de proposer la plupart du temps du contenu libre de droit et téléchargeable gratuitement.
Travail de recherche graphique, intégration et modification du thème. Je suis également en train de préparer une nouvelle charte graphique, intégrant un nouvel header, plus fournit.
Coté codage, personnalisation de certaines fonctions wordpress et préparation à un futur travail de SEO.
### Lageeknote
URL: https://thibaultmilan.com/lageeknote/
Last updated: 2009-02-01T12:00:00.000Z
Lageeknote est un blog/webzine proposant des astuces de codeur / dev web et présentant des services web bien utiles . J’ai travaillé ici à l’intégration du design + réalisation du logo. Mise en conformité du thème et modification du module de gestion des images.
### iPhone Apps Gratuites ?
URL: https://thibaultmilan.com/iphone-apps-gratuites/
Last updated: 2009-01-10T12:00:00.000Z
C’est en effet ce qu’il est possible de faire en théorie. Comment vous allez me dire ? Tout simplement en patchant le fichier d’installation des Applications présent dans votre iPhone ou votre iPod.
### Pré-requis
Alors il va vous falloir remplir quelques conditions :
- Un iPhone ou un iPod Touch Jailbreaké
- Avoir installé OpenSSH (Dans Cydia : Rechercher -> OpenSSH)
- Un client FTP supportant le FTP over SSH (pour Windows et Linux : [FileZilla](http://www.filezilla.fr/?ref=thibaultmilan.com), pour Mac : [CyberDuck](http://cyberduck.ch/?ref=thibaultmilan.com) ou [Transmit](http://www.panic.com/transmit/?ref=thibaultmilan.com))
### Prêt ? C’est partit !
1. Connectez vous en SSH et déplacez vous vers /System/Library/PrivateFrameworks/MobileInstallation.framework/
2. Renommez le fichier Mobileinstallation en Mobileinstallation.bak , ca nous permettera d’avoir une sauvegarde en cas de plantage
3. Téléchargez le fichier Mobileinstallation qui va bien [ici](http://rapidshare.com/files/181651425/2.1.MI.patched.zip?ref=thibaultmilan.com) , et placez le dans le dossier où l’on vient de renommer le fichier.
4. Changez les permissions du fichier en 777.
5. Si vous avez déjà patché Mobileinstallation par le passé, cela devrais être bon, sinon allez dans /var/mobile et créez un dossier Documents.
6. Donnez lui les permissions 777.
7. Redemarrez l’iPhone / iPod Touch (indispensable)
### Et Maintenant ?
Et bien maintenant il ne vous reste plus qu’a glisser des fichiers .ipa vers iTunes et lancer la synchro. Le nouveau Mobileinstallation les installera automatiquement et tout bien, sans poser de problème.
### Ok mais mes apps gratos ?
En principe, il ne vous manque plus qu’à trouver des fichiers .ipa et les glisser/déposer dans iTunes pour les installer. PAs besoin de vous rappeler que télécharger c’est mal, qu’il faut payer ses apps et tout. On pourra dire donc que cette méthode permet d’installer des apps dont les développeurs n’ont pas les moyens de payer l’inscription sur l’appStore.
Credit photo : [crazyoctopus](http://www.flickr.com/photos/crazyoctopus/5334337561/?ref=thibaultmilan.com)
### [TUTO] Une gallerie PHP/CSS qui scanne un dossier
URL: https://thibaultmilan.com/tuto-une-gallerie-php-css-qui-scanne-un-dossier/
Last updated: 2009-01-04T12:00:00.000Z
Avec mes cours (ridiculeusement peu intéressant je dois l’admettre), on à du faire l’autre jour une petite galerie en HTML/CSS mais pas un truc sympa, juste quelque chose où on entre les images en dur dans le code. Alors j’ai pensé à optimiser un peu ça, en passant tout en PHP pour pouvoir scanner le contenu d’un dossier et tout faire tout seul, sympa non ?
### Comment ça va marcher ?
C’est simple, prenez une capture d’écran de ce qui vous voulez ajouter, d’une taille de 500px par 350px et placez là dans le dossier images/featured, puis une image plus petite qui sera utilisé comme preview, de 50px par 50px. Placez là dans images/tn .
### Le Code HTML/PHP
Scanning Directories with PHP### Some Portfolio
$featured\_dir = 'images/featured/';
$scan = scandir($featured\_dir);
echo '';
?>$dir = 'images/tn/';
$scan = scandir($dir);for ($i=0; $i if ($scan\[$i\] != '.' && $scan\[$i\] != '..') {
echo '';
}
}
?>### La CSS
html
{
background: #828282 url(images/bg.jpg) no-repeat 50% 0;
}body
{
font-family: helvetica, georgia, sans-serif;
text-align: center;
}#container
{
text-align: left;
width: 500px;
margin: auto;
}#container h1
{
color: #474747;
margin: .4em 0;
}#featured
{
position: relative;
height: 378px;
overflow: hidden; / *might remove* /
}#featured h2
{
position: absolute;
bottom: 0;
margin: 0;
line-height: 1.3em;
padding: .2em;
background: black;
color: white;
text-align: center;
width: 100%;
filter: alpha(opacity=60);
\-moz-opacity: 60;
opacity: .6;
}ul#options
{
background: #e3e3e3 url(images/bottom.jpg) repeat-x 0 100%;
overflow: hidden;
height: 1%;
margin: 1em 0 0 0;
padding: .5em;
border-top: 1px solid #8a8a8a;
border-bottom: 1px solid #f5f5f5;
}#options li
{
float: left;
width: 60px;
height: 60px;
list-style: none;
cursor: pointer;
}#options li:hover img
{
border: 2px solid gray;
}#options li img
{
width: 50px;
}.selected
{
border: 2px solid gray;
}#options a
{
outline: none;
}a img
{
border: none;
}IE6 sucksBa oui IE6 va vous poser des problèmes, si vous avez vraiment envie de parfaire la chose, il suffit de compenser le fait que un élément flottant va contenir des éléments non flottants. Les navigateurs modernes compense cela magnifiquement bien avec un overflow:hidden; mais pour IE6 il faudra ajouter ceci à votre feuille de style :ul#options {
...le style deja en place...
height: 1%;
}### Le Javascript
$(function() {
$.preloadImage = function(path) {
$("#featured img").attr("src", path);
}$('ul#options li img').click(function() {
$('ul li img').removeClass('selected');
$(this).addClass('selected');var imageName = $(this).attr('alt');$.preloadImage('images/featured/' + imageName);var chopped = imageName.split('.');
$('#featured h2').remove();
$('#featured')
.prepend('' + chopped\[0\] + '').children('h2').fadeIn(500).fadeTo(200, .6);
});$('ul#options li a').click(function() {
return false;
});
});FinalementVoila, vous avez un truc sympa qui marche avec Jquery (mon framework ajax préféré au passage). si vous utilisez ce script, merci de faire un ptit retour, ca peut servir. Un grand merci aussi à [Nettuts](http://nettuts.com/videos/screencasts/scanning-folders-with-php/?ref=thibaultmilan.com), très bon site de tutos, dont lequel je me suis librement inspiré (voire totalement) mais pourquoi ré-inventer la roue quand ça existe déjà ?
### Switcher entre CSS en PHP
URL: https://thibaultmilan.com/switcher-entre-css-en-php/
Last updated: 2009-01-02T12:00:00.000Z
Quand on développe des thèmes, des sites, des services web, on a souvent envie de proposer plusieures css, et il faut donc un moyen de pouvoir switcher entre les différentes css. Nous allons voir comment switcher entre plusieurs css dans ce mini tuto, avec une bonne dose de PHP, pas un gramme de JS et sans prise de tête !
### Etape 1 : Mémoriser les styles
La première étape consiste à créer un nouveau fichier sur votre server, nommé switcher.php dans lequels vous mettez le code suivant :
setcookie ('sitestyle', $set, time()+31536000,'/', 'yourdomain.com', '0');
header("Location: $HTTP\_REFERER");
?>Lorsqu’il sera appelé, ce fichier écrira un cookie avec les détails concernant le style préféré par l’utilisateur. Bien sur tout cela se passe du coté invisible de la force, l’utilisateur final ne verra rien de ce fichier. Attention à ne pas oublier de remplacer “yourdomain.com” par votre nom de domaine sous peine que le cookie ne fonctionne pas correctement !
Appeler ce fichier est super simple, il vous suffira d’utiliser des liens comme vous en avez déjà fait des centaines surrement :
[clic ici pour passer au style RED !](./switcher.php?set=red)Dans notre cas donc, “red” est le nom de la feuille de style que l’on veut appeler. Pas besoin de mettre le “.css” à la fin, on va s’en charger en automatique par la suite. Notre lien appelle donc le switcher et lui demande de passer sur le “RED”, en laissant donc le switcher faire tout le travail comme un grand. Une alternative aux liens HREF est d’utiliser un formulaire pour sélectionner entre plusieurs styles sans avoir plusieurs liens :
DefaultCrazy RedExperimental Style### Etape 2 : Détection des styles
Laisser les utilisateurs choisir le style qu’ils souhaitent utiliser c’est bien, mais récupérer ce choix une fois mémorisé dans le cookie, c’est mieux ! Ainsi, pour chaque page de votre site qui doit utiliser une feuille de style définie par l’utilisateur, il vous faudra inclure ce code dans la zone de vos pages :
(!$sitestyle)?'defaultstyle':$sitestyle ?>.css">;Attention, ce code est en une seule ligne ! De plus si vous ressentez le besoin d’utiliser le nom de la feuille de style utilisé, vous pouvez utiliser le code PHP suivant :
;Notre petit script va donc détecter le style présent dans le cookie de l’utilisateur et afficher le résultat. Si rien n’est définit il va charger defaultstyle.css, vous êtes bien sur tout a fait libre de changer “defaultstyle” par ce que vous voulez :D
Voila vous êtes l’heureux possesseur d’une solution fonctionnant sur toute plateforme, tout os, tout navigateur, rétro compatible et futuro compatible (oui j’invente des mots ? Et alors ?), bref un ptit bout de code léger qui va bien.
N’hésitez pas à me donner votre avis sur ce tutos, c’est un des premiers que je vais, je suis preneur de toute idée pour l’améliorer.
### 3 ptits thèmes et puis s’en vont — DC2 Version
URL: https://thibaultmilan.com/3-ptits-th-mes-et-puis-s-en-vont-dc2-version/
Last updated: 2009-01-02T12:00:00.000Z
Allez hop, un petit cadeau de noël pour les dotclear user, 3 petits thèmes pour dotclear 2, parcequ’il en faut toujours plus, surtout quand c’est des thèmes des qualité.
On commence avec ce thème très noël spirit puisqu’il s’agit de [Christmas-08](http://pixials.power-heberg.com/galerie/index.php/post/2008/12/28/Christmas-08?ref=thibaultmilan.com). Sobre, dans les couleurs de saison, on notera l’utilisation d’un petit javascript qui fait tomber une discrète neige sur le blog. Adorable et totalement de saison !
Résolument plus dark, [Pixeled](http://pixials.power-heberg.com/galerie/index.php/post/2008/12/29/Pixeled?ref=thibaultmilan.com) est quand à lui un portage pour dotclear du thème wordpress de Samk. A noter : un effet transparent très élégant.
Et on termine avec [iNovclear](http://pixials.power-heberg.com/galerie/index.php/post/2008/12/28/iNovclear?ref=thibaultmilan.com), un thème dotclear inspiré de MacZone. Super clean, super classe, idéal pour un blog un peu pro, une version magasine de ce thème serait une splendeur !
### Plugins Windows Live Writer : Digg, Flickr et Tweeter
URL: https://thibaultmilan.com/plugins-windows-live-writer-digg-flickr-et-tweeter/
Last updated: 2008-12-29T12:00:00.000Z
Windows Live Writer, ce logiciel de la nouvelle suite “Live” de Microsoft, séduit de plus en plus de gens, voir même des blogueur “pro”. Simplicité d’utilisation, possibilité d’utilisation en mode offline, gestion automatique des média (enfin gestion, faut le dire vite), et surtout pleins de plugins.
Maps, Amazon S3, Fichier media, Video youtube, voici maintenant 3 nouveaux plugins que je voulais vous faire découvrir :
[**DiggThis**](http://gallery.live.com/liveItemDetail.aspx?li=4abe398d-5568-4485-bb59-50abbc4a34ed&bt=9&pl=8&ref=thibaultmilan.com) — Premier plugin, il vous permettra d’installer un compteur Digg sur votre billet , sélection du style, de l’alignement, dynamique ou non, très personnalisable donc.
[**Twitter notify**](http://gallery.live.com/liveItemDetail.aspx?li=6b2b5ffe-936a-4cb3-869c-c01de29de176&bt=9&pl=8&ref=thibaultmilan.com) — Celui là c’est un homologue du plugin twit this pour wordpress, il publiera sur votre compte twitter un message que vous pouvez paramètrer, avantage, on peut envoyer des DM ou des @, pas seulement des messages normaux.
[**Flickr Uploader**](http://gallery.live.com/liveItemDetail.aspx?li=4d65ba39-74c5-4c57-a679-9301d757f8cb&bt=9&pl=8&ref=thibaultmilan.com) — On connaissait son grand frère intégré à WLW par défaut qui permettais de récupérer des photos de notre compte Flickr pour les publier ensuite dans nos billets, ici c’est un peu l’inverse, ce plugin permet d’envoyer une image sur flickr en plus de l’insérer dans votre billet.
[Source](http://www.nirmaltv.com/2008/12/23/new-plugins-windows-live-writer/?ref=thibaultmilan.com)
### Joyeux Noël
URL: https://thibaultmilan.com/joyeux-no-l/
Last updated: 2008-12-25T12:00:00.000Z
Toute l’équipe (donc moi :D) vous souhaite une excellente fête de Noël, et au plaisir de vous retrouver encore longtemps j’espères, sur ce blog.
Et merci à Hellgy pour [ses superbes cartes de voeux](http://weblog.redisdead.net/main/2008/12/16/2129-cartes-de-noel-et-bonne-annee?ref=thibaultmilan.com)
### Gandi lance Gandi SiteMaker
URL: https://thibaultmilan.com/gandi-lance-gandi-sitemaker/
Last updated: 2008-12-22T12:00:00.000Z
Après le lancement de son offre d’hbergement dédié partagée (mais pas mutualisé, enfin si mais pas trop :D) Gandi lance une offre à destination des grands débutants de la conception de siteWeb, Gandi SiteMaker.
Service déjà proposé depuis belle lurette par 1and1 (puissent il disparaître en enfer ceux là), la version de Gandi à elle été développé en interne par une filiale bretonne de Gandi. N’ayant pas eu l’occasion de tester le service, j’ai toutefois pus le découvrir [en video ici](http://www.lebardegandi.net/post/2008/12/18/Gandi-et-le-faiseur-de-Site?ref=thibaultmilan.com), et je dois dire que je suis agréablement surpris par la qualité finale du produit. On croirais retrouver iWeb mais dans son navigateur (Pour ceux qui ne connaissent pas, c’est un éditeur simplifié de site internet sous mac os, très intuitif et idéal pour les néophytes).
Mais ce n’est pas un simple éditeur de site web basique puisque Gandi Sitemaker offre la possibilité d’intégrer une foule de widget plus ou moins basiques : lecteur video, audio, gallerie d’image, formulaire de contact mais aussi forum, bon de commande et solution de paiement en ligne.
Si vous possédez déjà un domaine chez Gandi, vous pouvez activer 2 jusqu’à 2 packs free, limités à 2 pages, ce qui est assez pour tester le produit, surtout qu’il n’y a pas de limites de durée pour cette offre. Après l’on trouve pour ceux qui sont convaincus du produit, un pack Starter à 4,00€ HT/mois, incluant 50 pages et un stockage de 500 Mo, ainsi que tous les widgets exceptés les fonctionnalités de commerce électronique réservées au pack pro. Ce derniers est disponible pour 8,00 € HT/mois et offre un nombre de page illimité et 2 Go de stockage.
Vous l’aurez compris cette offre s’adresse aux grands débutants de la création de site web, puisqu’elle intègre l’outils de création ainsi que l’hébergement dans la même offre, inutile donc d’avoir déjà un hébergement chez Gandi, un domaine suffit !
### Utiliser Google pour ses librairies AJAX
URL: https://thibaultmilan.com/utiliser-google-pour-ses-librairies-ajax/
Last updated: 2008-12-19T12:00:00.000Z
Dans un course à l’optimisation, il est toujours intéressant de pouvoir externaliser un service, à condition que le moyen vers lequel on l’externalise soit plus performant que le notre. En pratique, il peut être intéressant d’utiliser des architectures puissantes comme Amazon S3 ou autre pour un accès plus rapide à des média. La règle de base en matière de temps de chargement, c’est que plus c’est proche de l’utilisateur, plus ça sera rapide à charger, et encore plus si c’est en cache !
En temps normal quand vous loadez un Framework AJAX quelconque, vous utilisez cette méthode :
Donc vous chargez le média depuis votre serveur. Consommation de bande passante et surtout latente dépendant de la localisation entre votre serveur et le client de l’internaute au final. Bien alors le concept, c’est de ne pas loader le framework depuis son propre server mais depuis … Google ! Avec tout ses serveurs répartis à travers le monde, qui mieux que google peu être apte à optimiser la distance entre le serveur et le client ? De plus, quand on pense à la bande passante de google, et du fait que tout ceci soit entièrement gratuit, pourquoi s’en priver ? Sans compter que même pour un déploiement en intranet, énormément d’infrastructures autorisent l’accès aux ressources google …
Enfin un des nombreux autres intérêts dont on ne listera pas ici tout les points, c’est que en passant par google, si le client a déjà accédé à un site utilisant cette méthode d’appel de Framework AJAX, son navigateur ira chercher directement la version en cache plutôt que de passer par un re-téléchargement, puisque le fichier est inchangé et présent sur la machine cliente.
Bon maintenant après vous avoir vanté les mérites de cette solution, voici comment l’implémenter en utilisant la fonction google.load() :
Bien que cette méthode marche et soit valide, il semblerais que la fonction google.load() soit un peu longue parfois à s’exécuter. Quand je dis longue je pense a 1.10 de seconde à peine, rien de plus. On peut pour cela un peu cheater et faire donc comme la bonne vieille méthode, à condition de savoir où aller chercher le .js :
Bon tout ca sur le papier c’est bien joli, mais si vous avez envie de tester sans pour autant devoir remplacer tout les appels à la main sur votre blog wordpress, j’ai , encore une fois la solution : le plugin [http://blog.clearskys.net/2008/05/28/google-ajax-libraries-api-plugin/](http://blog.clearskys.net/2008/05/28/google-ajax-libraries-api-plugin/?ref=thibaultmilan.com) qui s’installe comme tout plugin wordpress, en deux clics, et qui va remplacer automatiquement TOUT les scripts présents sur les serveurs Google par son équivalent. Car oui, google ne supporte pas que jquery mais une dizaine de framework différents, et peut être bien plus prochainement.
[source](http://blog.websourcing.fr/blog/2008/12/13/optimisez-le-temps-de-chargement-de-vos-pages-en-utilisant-linfrastructure-de-google/?ref=thibaultmilan.com)
[Credit Photo](http://www.flickr.com/photos/thomashawk/256622412/?ref=thibaultmilan.com)
### Les Sims 3 le rendez vous Ep 3
URL: https://thibaultmilan.com/les-sims-3-le-rendez-vous-ep-3/
Last updated: 2008-12-19T12:00:00.000Z
Episode 3, Tout s’accélère, on se rapproche du moment où l’on va vraiment découvrir les studios des Sims. Les 5 frenchy sont désormais dans les studios et nous font partager leur craintes les plus fortes : l’interactivité accrue promise par les traits de caractères et autres nouvelles fonctionnalités rendra t elle le jeu trop complexe à jouer ? Faudra t il un ordinateur super-puissant ? Mon Pc Actuel tiendra t il le coup ? Va t on retrouver cet humour décalé et les situations loufoques propre aux Sims ? Toutes ses questions et leurs réponses dans la vidéo.
[**“Les Sims 3 LE rendez-vous” episode 3**](http://www.dailymotion.com/video/x7qsvd%5Fles-sims-3-le-rendezvous-episode-3%5Fvideogames?ref=thibaultmilan.com)
*envoyé par* [*lessims*](http://www.dailymotion.com/lessims?ref=thibaultmilan.com)
### Les Sims 3 le rendez vous Ep2
URL: https://thibaultmilan.com/les-sims-3-le-rendez-vous-ep2/
Last updated: 2008-12-18T12:00:00.000Z
Après l’épisode 1 où l’on à découvert les 5 “frenchy”, direction San Fransisco, ville natale des Sims et véritable source d’inspiration intarissable pour les concepteurs du jeu. Petit tour par le Golden Gate et Ballade en Trolley Bus, aucun cliché n’est évité ;). Premières impressions des français en découvrant les lieux et foule de références aux Sims, comme si tout dans San Francisco était en lien direct avec les Sims …
[**“Les Sims 3 LE rendez-vous” episode 2**](http://www.dailymotion.com/video/x7oa2k%5Fles-sims-3-le-rendezvous-episode-2%5Fvideogames?ref=thibaultmilan.com)
*envoyé par* [*lessims*](http://www.dailymotion.com/lessims?ref=thibaultmilan.com)
### SongBird
URL: https://thibaultmilan.com/songbird/
Last updated: 2008-12-17T12:00:00.000Z
Peu d’entre vous connaissent ou utilisent Songbird. Songbird c’est quoi ? C’est à la fois un lecteur de musique, comme iTunes ou Windows Media Player, mais aussi un navigateur Web en même temps ! Rien que cela.
L’installation est toute simple, sous Mac comme sur Pc ou Linux. Compatible avec tout système d’exploitation (en gros) il est désigné par certains comme un potentiel iTunes Killer.
Ce qu’il faut retenir c’est que c’est avant tout une base Firefox. On a donc construit un lecteur multimédia autour d’un navigateur internet, pourquoi pas ma foie. On retrouve donc le système d’extensions additionnelles. Certaines vous seront même proposées à l’installation pour notamment pouvoir gérer les iPods, les flux radio Shoutcast, LastFm, les videos Quicktime, etc … Par défaut depuis la dernière version on retrouve même le support des musiques sous DRM achetées via l’iTunes Store ce qui n’était pas le cas jusqu’à maintenant.
Si vous êtes MacUser (ou que vous utilisez iTunes sous windows) vous serez heureux d’apprendre que SongBird propose une fonction permettant de se synchroniser et de le rester avec iTunes. Ainsi si vous faites des achats, changez des infos d’album, ou ajoutez de la musique sur iTunes, ses actions seront prises en compte dans SongBird, un bon moyen de concilier une utilisation des deux logiciels.
Coté navigation Web, tout fonctionne comme sur Firefox, on retrouve d’ailleurs les mêmes plugins et extensions qui restent compatible avec Songbird. L’avantage de Songbird sur firefox ? Outre de gérer votre bibliothèque musicale, il pourra sur les sites comportant des musiques, les détecter, les lister, et vous offrir les possibilités de les lires, les télécharger, les acheter en ligne, fournir des infos sur les musiciens,etc … Plutôt complet mais encore à travailler, en effet pour que cette dernière fonction marche correctement, une petite manip est nécessaire coté site web, dommage.
En tout cas je ne peut que vous inviter fortement à essayer songbird, qui reste selon moi un très bon logiciel, même si je garde mon itunes à coté :D
[TELECHARGER SONGBIRD](http://getsongbird.com/?ref=thibaultmilan.com)
### Lorem Ipsum Snipet
URL: https://thibaultmilan.com/lorem-ipsum-snipet/
Last updated: 2008-12-17T12:00:00.000Z
Le Lorem Ipsum, ce texte ayant pour but de tester la mise en forme de nos pages et surtout de remplir un site pour nous permettre de régler tout les petits problèmes en attendant que le véritable contenu arrive. Alors jusqu’à maintenant divers sites nous permettais de copier coller différentes tailles de ce texte, mais voila que celui sortit par csstricks nous propose des Coda Clips, Textmate bundles et une Application sous la forme d’une menu bar.
\[caption id=”attachment\_186" align=”aligncenter” width=”378" caption=”Rendu sous Coda”\]
\[/caption\]
Réservé actuellement aux applications Mac et Disponible sous la forme de Snippet pour Linux, les utilisateurs Windows sont donc un peu oubliés, mais si vous utilisez Coda ou Textmate, vous allez être ravi ! A télécharger d’urgence !
[VISITER LE SITE HTML IPSUM POUR TELECHARGER](http://html-ipsum.com/?ref=thibaultmilan.com)
### Les Sims 3 le rendez vous
URL: https://thibaultmilan.com/les-sims-3-le-rendez-vous/
Last updated: 2008-12-17T12:00:00.000Z
Pour la sortie en février prochain des Sims3, 5 fans de chez fans partent à San Francisco pour découvrir le berceau de la création Sims. Présentation des 5 veinards : Alice 18 ans étudiante, Grégory 24 ans étudiant lui aussi, Linda 34 ans psychologue au travail, Benjamin 17 ans lycéen et Corinne 44 ans fonctionnaire.
Pour cette première vidéo, petite présentation de l’équipe d’exploration, véritable portrait du joueur, découvrez nos 5 compatriotes qui vont nous faire découvrir les studios de création du jeu de simulation de vie sûrement le plus joué à travers le monde :D. Et vous, accro ?
[**“Les Sims 3 LE rendez-vous” episode 1**](http://www.dailymotion.com/video/x7le4a%5Fles-sims-3-le-rendezvous-episode-1%5Fvideogames?ref=thibaultmilan.com)
*envoyé par* [*lessims*](http://www.dailymotion.com/lessims?ref=thibaultmilan.com)
### Empêcher le hotlinking des videos
URL: https://thibaultmilan.com/emp-cher-le-hotlinking-des-videos/
Last updated: 2008-12-17T12:00:00.000Z
Ca nous arrive tous un jour, on se fait hotlinker les images ou les videos. Concernant les images on verra cela plus tard, aujourd’hui c’est des vidéos que l’on va parler. On peut penser que un mec qui nous pompe une video e direct streaming ce n’est pas bien gràve, le problème c’est que ce genre de pratique se généralise de plus en plus. Voici donc une manière simple et radicale d’empecher se bordel qui risque de vous pomper toute votre bande passante et de générer des frais de dépassement de celle ci.
Ouvrez ou créez un fichier .htaccess à la racine de votre site/blog/autre et insérez y ceci :
RewriteEngine On
RewriteCond %{HTTP\_REFERER} !^$
RewriteCond %{HTTP\_REFERER} !^http://domain.fr/.*$ \[NC\]*
*RewriteCond %{HTTP\_REFERER} !^http://(www.)?netvibes.com(/)?.*$ \[NC\]
RewriteCond %{HTTP\_REFERER} !^http://(www.)?google.fr(/)?.*$ \[NC\]*
*RewriteCond %{HTTP\_REFERER} !^http://(www.)?google.com(/)?.*$ \[NC\]
RewriteCond %{HTTP\_REFERER} !^http://(www.)?netvibes.com(/)?.*$ \[NC\]*
*RewriteCond %{HTTP\_REFERER} !^http://(www.)?google.fr(/)?.*$ \[NC\]
RewriteCond %{HTTP\_REFERER} !^https//feeds.feedburner.com(/)?.*$ \[NC\]*
*RewriteRule .*.(flv)$ [http://domain.tld/videoalternative.flv](http://domain.tld/videoalternative.flv?ref=thibaultmilan.com) \[NC,R,L\]Passons aux explications :
- La 1er ligne est optionnelle, en effet elle peut déjà être présente dans votre fichier htaccess, cependant si elle ne l’est pas il faut la mettre pour activer la ré-écriture d’url (url rewriting).
- Les lignes 3 à 9 correspondents aux sites que l’on souhaite autoriser à afficher les video, à savoir votre site et les principaux services comme google reader, netvibes et feedburner
- La dernière ligne stipule que toute demande de fichier flv (on peut le remplacer par un autre format de fichier) par un site qui n’est pas dans la liste renverra vers, et l’on précise une autre vidéo.
On enregistre le tout, on upload, on vide son cache et tadaaa la video s’affiche correctement sur votre site mais pas ailleurs !
### Forcer la soumission sécurisé des formulaires
URL: https://thibaultmilan.com/forcer-la-soumission-s-curis-des-formulaires/
Last updated: 2008-12-16T12:00:00.000Z
Lorsque l’on fait un site tout **sécurisé**, genre e-commerce, il y a souvent un truc qui flanche dans la chaîne du tout sécuritaire, c’est l’envoi du formulaire. En effet les pages on beau être en https, certains transferts peuvent planter, en fait certains navigateurs peuvent ne pas traiter l’**action url** en mode sécurisé, alors que toute la page est ok.
Le plus simple reste de changer le **submit url** du formulaire, mais si l’on utilise un cms, un gestionnaire de caddie ou autre ce n’est pas toujours évident, c’est pourquoi on peut utiliser une petit bout de JS qui va forcer le passage sur une url https plutôt que http pour le **form submit**.
$(function(){
var $form = $("form#specificForm");
var newAction = $form.attr("action");
newAction = newAction.replace(/http/,"https");
$form.attr("action", newAction);
});Et voila grâce à ce petit bout de code va aller chercher le sélecteur, récupéré la variable à changer et effectuer la modification.
Merci [CSS-trick](http://css-tricks.com/force-secure-form-submission/?ref=thibaultmilan.com)
### Une police de caractère écolo
URL: https://thibaultmilan.com/une-police-de-caract-re-colo/
Last updated: 2008-12-10T12:00:00.000Z
C’est [chez Pilou](http://www.chezpilou.info/post/2008/12/09/%5BEnvironnement%5D-Une-police-de-caractere-%C3%A9colo?ref=thibaultmilan.com) que j’ai découvert ce truc écologeek, une police de caractère dite “écolo”. Tout le secret résiderais dans une économie d’encre du fait que la police est conçue pour vider au maximum l’intérieur des caractères et donc necessite moins d’encre à l’impression.
Certes ce n’est pas top idéal pour lees documents officiels comme nous la fait remarqué [Pilou](http://twitter.com/chezpilou?ref=thibaultmilan.com) mais pour les documents plus perso, pourquoi pas. Maintenant il faudrait trouver un moyen pour pouvoir remplacer à la volée la police de caractère lors de l’impression, certaines imprimantes le font ? des logiciels ? vous avez des pistes ?
Pour ceux qui veuelnt tenter l’aventure, rendez vous ici pour [TELECHAGER LA POLICE](http://www.ecofont.eu/downloads%5Fen.html?ref=thibaultmilan.com), c’est gratuit et pour mac & pc !

### Soocial, ou comment tout synchroniser
URL: https://thibaultmilan.com/soocial-ou-comment-tout-synchroniser/
Last updated: 2008-12-09T12:00:00.000Z
Marre de chercher des outils qui fonctionnent plus ou moins bien, plus ou moins compatibles avec vos périphériques, et plus hasardeux à utiliser les uns que les autre ? [Soocial](http://www.soocial.com/?ref=thibaultmilan.com) est fait pour vous. Mais comment ça marche ? Rapide tour en image du service et explications :
Le site web pour commencer. C’est la première étape ! après la création du compte et sa validation ( moins d’une minute ), vous accéderez à votre carnet d’adresse partagée entre tous vos périphériques. Vous allez donc pouvoir le connecter avec des carnets existants (Carnet d’adresse d’Apple, [Microsoft](http://www.microsoft.com/?ref=thibaultmilan.com), votre téléphone portable, [Gmail](http://gmailblog.blogspot.com/?ref=thibaultmilan.com), votre blackberry, …). Pour cela il faut se rendre sur la page des connexions et demander un ajout.
Il faut ensuite suivre la procédure d’ajout, très bien imagée et expliquée. Le gros avantage de ce service, vous l’aurez compris n’est pas tan la disponibilité des données en ligne, mais plutôt le support étendu de diverses sources. En effet je peut enfin synchroniser mes contacts entre mon téléphone portable (Sagem S500i), mon MacBook, et mon compte Gmail.
Il faut savoir que la synchro Mac et PC nécessite le téléchargement d’un programme, qui dans le cas de [MacOSX](http://www.apple.com/macosx/?ref=thibaultmilan.com) se traduit par un simple prefpan que l’on ajoute et qui s’intègre à [iSync](http://www.apple.com/macosx/features/isync/?ref=thibaultmilan.com). On rentre les paramètres du compte et hop, c’est partit !
Pour la synchronisation avec Gmail, c’est là que les affaires se corsent. Si la synchro est très bien faite et ,comme étant exécutée toute les X minutes/heures, il est possible de la déclenchée manuellement, je ne pourrais que vous recommander **d’ajouter votre compte Gmail en premier !**. En effet j’ai eu pas mal de problème de fusions de données lors de mon ajout ultérieur a une synchronisation avec mon téléphone et mon macbook. Mais sinon tout marche bien.
Autre fonction intéressante, c’est la possibilité de faire des sauvegardes de vos contacts et ensuite d’exporter/importer ses sauvegardes. De plus il est bon de noter que l’ensemble du contenu du carnet d’adresse GMAIL est sauvegardé avant importation (connaissance des bugs que cela engendre parfois ? ou simple précaution d’usage ?).
Après près de deux mois d’utilisation, je recommande vivement se service, qui peut être intégré aisément dans une politique de remplacement de [MobileMe](http://www.apple.com/mobileme/?ref=thibaultmilan.com) qui reste trop chère pour moi. Le seul reproche que j’aurais à faire c’est l’indisponibilité d’une synchronisation directe avec l’[iPhone](http://www.apple.com/?ref=thibaultmilan.com)/iPod touch, mais cela devrais venir tout naturellement à mon sens. Le support de l’iPhone et de l’iPod Touch est maintenant assuré par la dernière version en date de l’application pour OSX seulement. De plus une version windows mobile est en cours de préparation !

### Mario et Zelda 3D en fond d’écran
URL: https://thibaultmilan.com/mario-et-zelda-3d-en-fond-d-cran/
Last updated: 2008-12-09T12:00:00.000Z
Trouvé aux détours du web sur je ne sais plus quel site (qu’il se fasse connaitre lui ou l’auteur des images), ses magnifiques images de Mario et Zelda mais en 3D. J’ai trouvé cela telement génial que j’ai voulu en faire des fonds d’écran. Première expérience pour moi concernant la déclinaison en plusieures résolutions, dites moi ce que vous en pensez !
Coté technique on à donc 3 zip avec dans chaque les fond d’écran en plusieures résolutions : 1900x1600 , 1900x1440 , 1680x1080 , 1440x900 , 1280x1024 , 1280x800, 1200x800 (je doute de l’éxistance réelle de cette résolution mias bon, dans le doute …) et 1024x600 .
Voila vous pouvez donc télécharger :
- [Le Wallpaper Zelda](http://lageeknote.com/wp-content/uploads/2008/12/zelda.zip?ref=thibaultmilan.com)
- [Le Wallpaper Mario blanc](http://lageeknote.com/wp-content/uploads/2008/12/mario2.zip?ref=thibaultmilan.com)
- [Le Wallpaper Mario euh … l’autre](http://lageeknote.com/wp-content/uploads/2008/12/mario.zip?ref=thibaultmilan.com) :D
Pour ce que est des visuels, les voici :

### Tagada, le gestionnaire APT-GET indispensable !
URL: https://thibaultmilan.com/tagada-le-gestionnaire-apt-get-indispensable/
Last updated: 2008-12-08T12:00:00.000Z
Alors que je me baladais tranquillement au détour du web je suis tombé sur [ce billet](http://whereisbryan.wordpress.com/2008/08/29/tagada-ou-comment-egayer-la-gestion-de-programmes-en-console/?ref=thibaultmilan.com) du blog whereisbryan (rien que le nom me fait presque éclater de rire) qui nous fait découvrir un utilitaire qui nous permet d’utiliser la célèbre commande [apt-get](http://en.wikipedia.org/wiki/Advanced%5FPackaging%5FTool?ref=thibaultmilan.com) de manière … différente.
Alors pour ceux qui ne connaissent pas encore, APT-GET est un gestionnaire de paquet pour les distributions linux basée sur debian (ubuntu et tout …) qui permet d’installer, mettre à jour, désinstaller des logiciels. Bref, la commande standard est normalement apt-get install , apt-get remove, etc …
Et bien là, Tagada change la donne :
- pour installer un paquet : tagada tsoin tsoin
- pour mettre à jour les paquets : tagada pouet
- pour supprimer un paquet : tagada pabo
- pour supprimer et purger un paquet : tagada trépabo
- pour chercher un paquet : tagada konépa
Et ce n’est que quelques exemples parmis les fonctions apt supportées ! C’est tellement énorme que Même [la documentation officielle](http://doc.ubuntu-fr.org/tagada?ref=thibaultmilan.com) d’Ubuntu mentionne le projet. Si ca vous interesse, rendez vous sur [la page du projet](http://www.codingteam.net/tagada-aff%5Ffr.html?ref=thibaultmilan.com) .

### Digg deviendra t il payant ?
URL: https://thibaultmilan.com/digg-deviendra-t-il-payant/
Last updated: 2008-12-07T12:00:00.000Z
Pour ceux qui ne connaissent pas encore [digg](http://www.digg.com/?ref=thibaultmilan.com) et autre (que l’on nomme digg-like) le principe est simple. Vous postez le lien de votre billet, votre article, et la communauté, les internautes, peuvent voter pour (et contre parfois). L’intérêt ? Ramener du monde chez vous. En effet plus votre score est élevé plus vous allez apparaitre dans le début de liste des diggs, voir même en page d’accueil. Très communautaire donc.
Mais voila qu’une nouvelle qui risque de faire l’effet d’une petite bombe, puisque le fait d’être en “home” deviendrais payant, rien de moins. En effet il s’avère que de nombreux services se sont développés autour de ce petit monde et que de nombreuses sociétés proposent, comme [SocialElves](http://www.socialelves.com/?ref=thibaultmilan.com) qui, pour 300$, assure que votre article soit en home.
Mais qui va payer pour ce service vous allez me dire ? Pleins de gens, et oui ! Car malgré ce que certains peuvent penser, ceux qui se sont déjà essayer aux digglike savent que un article en home ramène beaucoup de trafic et de visibilité, vraiment beaucoup parfois. Et si vous monétisez un tant soi peu votre blog, et bien ça peut rapporter gros, voir très gros, donc 300$ , pour certains blogueurs ce n’est pas si énorme.
Et vous, vous seriez pret à payer ?
A lire aussi : [Payer pour être sur digg](http://www.jeanbaptistebeaux.fr/payer-pour-etre-sur-digg?ref=thibaultmilan.com)

### Optimiser son robot.txt Wordpress
URL: https://thibaultmilan.com/optimiser-son-robot-txt-wordpress/
Last updated: 2008-12-06T12:00:00.000Z
On est tous dingue de référencement, que l’on l’admette ou non. Et dans cette course à l’optimisation du contenu pour un indexage optimale, [Google](http://google.com/?ref=thibaultmilan.com) [avait déjà publié un livret blanc pour nous aider](http://www.nowhereelse.fr/google-nous-rappelle-les-bases-de-loptimisation-du-rfrencement-12895/?ref=thibaultmilan.com). Un des points importants de cette optimisation est la bonne rédaction du fichier robot.txt. ce petit fichier va en effet définir les droits que vous donnez aux robots d’indexion de google, mais aussi des autres, gràce à l’[user-agent](http://en.wikipedia.org/wiki/User%5Fagent?ref=thibaultmilan.com).
Lorsqu’on utilise un blog, [Wordpress](http://wordpress.org/?ref=thibaultmilan.com) mais aussi autre, on est souvent confronté à des adresses multiples pour un seul article. Alors certes des plugins existent afin d’éviter que les robots interprètent cela comme du duplicate content, en utilisant de la ré-écriture d’url, mais dans un soucis toujours d’être bien sur de ce qui se passe, voici un fichier type de robot.txt qui interdit notamment l’accès aux fichiers sources (le cœur) de Wordpress (qui normalement n’est plus indexé puisque necessite une identification, mais bon là encore, prudence). De plus les urls alternatives, commentaires, tracbacks et compagnies seront également exclues de l’indexage.
User-agent:
*Disallow: /cgi-bin*
*Disallow: /wp-admin*
*Disallow: /wp-includes*
*Disallow: /wp-content/plugins*
*Disallow: /wp-content/cache*
*Disallow: /wp-content/themes*
*Disallow: /trackback*
*Disallow: /feed*
*Disallow: /comments*
*Disallow: /category/*/
*Disallow:* /trackback
Disallow: */feed*
*Disallow:* /comments
Disallow: /*?*
Disallow: /*?*
*Allow: /wp-content/uploads# Google Image*
*User-agent: Googlebot-Image*
*Disallow:*
*Allow: /*\# Google AdSense
User-agent: Mediapartners-Google
*Disallow:*
*Allow: /*\# Internet Archiver Wayback Machine
User-agent: ia\_archiver
Disallow: /# digg mirror
User-agent: duggmirror
Disallow: /Sitemap: [http://www.domain.tld/sitemap.xml](http://www.domain.tld/sitemap.xml?ref=thibaultmilan.com)Merci à [Parenthèse.be](http://www.parenthese.be/2008/12/03/wordpress-seo-optimiser-le-fichier-robotstxt/?ref=thibaultmilan.com) pour l’info !

### Importer une base de donnee MYSQL en ligne de commande
URL: https://thibaultmilan.com/importer-une-base-de-donnee-mysql-en-ligne-de-commande/
Last updated: 2008-12-06T12:00:00.000Z
Parce que ça peut toujours servir, on dit merci au [mister](http://www.parenthese.be/2008/10/13/memo-importer-une-base-de-donnee-mysql-en-ligne-de-commande/?ref=thibaultmilan.com) et on admire :
mysql -u username -ppassword database\_name < /path/to/backup.sql
### La Boulette Apple Antivirus
URL: https://thibaultmilan.com/la-boulette-apple-antivirus/
Last updated: 2008-12-05T12:00:00.000Z
La grosse boulette d’apple de la semaine c’est leur politique concernant les antivirus. En effet le 1er Decembre l’on voit apparaitre dans la FAQ Apple un article encourageant l’utilisation de solution antivirus sous Mac OSX.
Mais cela allais plus loin que la simple recommandation, puisqu’Apple annonçait aussi la liste des Antivirus qu’il recommandait ([Intego](http://www.intego.com/?ref=thibaultmilan.com)’s [VirusBarrier X5](http://en.wikipedia.org/wiki/VirusBarrier%5FX5?ref=thibaultmilan.com), [McAfee](http://www.mcafee.com/?ref=thibaultmilan.com)’s [VirusScan](http://www.mcafee.com/?ref=thibaultmilan.com) for Mac, and [Symantec](http://www.symantec.com/?ref=thibaultmilan.com)’s [Norton Anti-Virus](http://www.symantec.com/norton/index.jsp?ref=thibaultmilan.com) 11.). Bien sur sans remettre en cause complétement le model Apple, cela fesait tomber une argument en faveur des Mac : l’absence de virus, vantée dans leur publicités et par les utilisateurs.
Alors si l’on y réfléchit cela parrais logique, Apple grignottant des parts de marché de plus en plus, il est tout à fait logique que les virus vont finir par débarquer, et faire adopter les bon reflexes à ses utilisateurs dès maintenant est , en soi, très responsable. Mais cette info à fait scandalle immédiatement après son annonce. Les blogs, les sites, les forums, tout le monde criait au scandale.
2 jours plus tard, Apple retirais l’article incriminé pour laisser place au message suivant :
> The Mac is designed with built-in technologies that provide protection against malicious software and security threats right out of the box.Alors quoi penser de tout cela ? Apple se laisse t il faire par la communauté ? Erreur d’une personne pourtant bien attentionnée ? Personellement je pense que sur le fond c’était une bonne chose, de faire prendre conscience que cela finira par venir, mais peut être que sur la forme, ce n’était pas la meilleure solution, surtout pour ne pas frustrer le petit mac user qui vit dans son monde tout blanc tout doux ;)

### Fond D’ecran Apple Virus
URL: https://thibaultmilan.com/fond-d-ecran-apple-virus/
Last updated: 2008-12-05T12:00:00.000Z
Voila en rédigeant le précédent article, j’ai eu trop envie de faire un petit Wallpaper avec l’image illustrant le billet et je vous la livre donc, si cela vous interesse, en 1280\*800 (oui c’est la résolution de mon MacBook :D).
Si vous souhaitez d’autres résolutions, n’hesitez pas à demander :D
[TELECHARGER LE FOND D’ECRAN](http://lageeknote.com/wp-content/uploads/2008/12/mac%5Fvirus%5F1280-800.jpg?ref=thibaultmilan.com)

### Faites vous passer par un employé de chez Microsoft
URL: https://thibaultmilan.com/faites-vous-passer-par-un-employ-de-chez-microsoft/
Last updated: 2008-12-05T12:00:00.000Z
Avec le bluebadge, a vous toute les fonctions cachées disponiblent uniquement aux developpeurs microsoft ! [Windows](http://www.microsoft.com/WINDOWS?ref=thibaultmilan.com) 7 par exemple contient plusieures fonctions cachées et verrouillées, non encore disponible. Entre autre, la nouvelle [UI](http://en.wikipedia.org/wiki/User%5Finterface?ref=thibaultmilan.com) superbe et toujours aussi gourmande en ressource.
Blue Badge est donc une application qui va patcher les fichiers systèmes (après avoir faire un backup) et ainsi débloquer les fonctions cachées. Voici la liste des fichiers modifiés :
- \\Windows\\Explorer.exe
- \\Windows\\System32\\wisptis.exe
- \\Windows\\System32\\ieframe.dll
- \\Windows\\System32\\shell32.dll
- \\Windows\\System32\\stobject.dll
- \\Windows\\System32\\TabletPC.cpl
- \\Windows\\System32\\themecpl.dll
- \\Windows\\System32\\themeui.dll
- \\Windows\\System32\\powercfg.cpl
Je ne rapellerais jamais assez que cette procédure comporte des risques et que je ne pourrais être tenu responsable des bugs que cela va engendrer (en même temps tourner sur un système d’exploitation, [Microsoft](http://www.microsoft.com/?ref=thibaultmilan.com), et considéré par M$ comme encore en beta, c’est un peu fou non ?). De plus ce n’est disponible que pour la version x86 du système !
[Download Blue Badge \[x86 version\]](http://www.withinwindows.com/files/upf/BlueBadge%5Frev1%5Fx86.zip?ref=thibaultmilan.com)

### Concept Apple : Un MacBook Pro en Lego
URL: https://thibaultmilan.com/concept-apple-un-macbook-pro-en-lego/
Last updated: 2008-12-05T12:00:00.000Z
Dans le genre de prototypes complétements délirants et abracadabrantesques, voici un macbook pro composé de briques Lego ! ni plus ni moins (oui j’aime cette expression). Alors bien sur ce ne serais pas n’importe quel LEGO mais des briques spéciales, un peu à l’idée des briques Lego MindStorm qui permettent une intéraction entre différents éléments. L’idée de pouvoir construire son macbook selon son humeur et ses envie m’enchante au plus au point pas vous ?
Sinon on passage on notera d’autre délires de graphistes, on trouve un Macbook avec trois écran, ou plutôt deux paneaux qui s’ouvrent de chaque coté de l’écran, mais aussi une station d’acceuil permettant de jouer avec des manètes pour un gameplay plus simple. Enfin on admirera la magnifique tablette internet, rève de tout mac-user, dont Apple nous prive depuis trop longtemps ! (un pétition pour une tablette internet apple ca vous tente ?)

### 7 Inspirations pour vos sites web
URL: https://thibaultmilan.com/7-inspirations-pour-vos-sites-web/
Last updated: 2008-12-05T12:00:00.000Z
Parceque quand on fait des designs de site web, l’inspiration c’est toujours bon, et que rien ne se perds, rien ne se crée, tout se transforme, voici une petite selection de designs de sites web que je trouve super sympa :
[Mortgages](http://www.azmoney.co.uk/mortgages?ref=thibaultmilan.com) est un thème [Wordpress](http://wordpress.org/?ref=thibaultmilan.com) d’un effet intéressant, très coloré, idéal pour des artistes oeuvrants tout de même du coté obscur de la force car très sombre comme thème.
[Lucino & Gene](http://www.lucino-gene.com/?ref=thibaultmilan.com) est un site d’une boite qui touche le domaine des combustibles, huiles et tout … enfin bref voila pour le coté histoire du site. Ce qui m’as plus, outre le design super propre, c’est que le site est volontairement concu pour être trop grand pour le navigateur. Les barres de scroll sont zappées via js je pense et quand on clic sur les liens, on se déplace grâce à un ptit coup de js dans le site. Pas un pet de flash, tout reste un chef d’oeuvre du référencement et du design, j’adore !
[Pbwiki](http://pbwiki.com/?ref=thibaultmilan.com) est un moteur de wiki, et à travers son site on peut soit créer un wiki auto-hebergé ou bien acheter le système pour l’utiliser sur nos propres serveurs. Outre utiliser de magnifiques icones Apple (si l’un d’entre vous à un lien, je suis preneur), j’adore le design, très clair, très frais, très harmonieux et résolument 2.0.
[Salvemosalarbol](http://www.salvemosalarbol.com/?ref=thibaultmilan.com) est lui un site d’une boite de com’ qui propose des envois de cartes virtuelles, campagnes de mailing, etc … et qui a parfaitement réussit son site web, si ce n’est 3 bouts de flash ci et là (le flash saymal !). Un design trop sympa, très coloré.
[Flesh Artist](http://www.freshartists.org/?ref=thibaultmilan.com) quand a lui est un site qui donne la chance aux enfants défavorisé de vendre leurs “oeuvres d’art” à des sociétés ou des particuliers. Les bénéfices générés vont directement au petits n’enfants pour améliorer leur quotidien. Outre l’aspect noble de la chose, le site est super beautifull. Sur un theme très vert, le tou reste super classe et très clean.
[Smart web design](http://esmartsweb.com/?ref=thibaultmilan.com) est une boite … de design/com’ , comme sont nom l’indique, original non ? Donc forcement leur design poutre sévère, perso j’adore, c’est magnifique, très pro, tout ce qu’il faut !
[Ondrejvertat](http://www.ondrejvertat.cz/?ref=thibaultmilan.com) est el website d’un createur de thème pour site web, qui fait un travail extra-ordinaire. Avec des références comme des thèmes dexter-killer ou de site de jeux videos, ce site web possède un design original, avec son coté old school comme on les aime. c’est donc mon coup de coeur pour cette selection, une petite adaptation pour wordpress ca tente quelqu’un ?

### [TUTO] Faire un netvibes
URL: https://thibaultmilan.com/tuto-faire-un-netvibes/
Last updated: 2008-12-05T12:00:00.000Z
Si l’interface [Netvibes](http://en.wikipedia.org/wiki/Netvibes?ref=thibaultmilan.com) vous à toujours laissé sur le cul, alors cet article devrais vous plaire. En effet vous allez apprendre comment faire cette interface de A à Z !
Au menu, la creation du template en xhtml de la page, l’application du css puis un bonne grosse couche d’ajax par dessus ! Mais comme je ne serais égaler le travail qui a été fait sur Nettuts, je vous laisse découvrir le tuto complet ici, mais aussi la démo du travail fini et les sources. Bonne lecture !
- [Tutorial complet](http://nettuts.com/tutorials/javascript-ajax/inettuts/?ref=thibaultmilan.com)
- [Démonstration du rendu](http://nettuts.s3.amazonaws.com/127%5FiNETTUTS/demo/index.html?ref=thibaultmilan.com)
- [Télécharger les sources](http://nettuts.s3.amazonaws.com/127%5FiNETTUTS/source.zip?ref=thibaultmilan.com)

### De l’infra-rouge pour aider le multitouch
URL: https://thibaultmilan.com/de-l-infra-rouge-pour-aider-le-multitouch/
Last updated: 2008-12-04T12:00:00.000Z
Le multitouch c’est bien mais c’est pas encore ultra précis comme truc, et ca consomme un max, c’est pourquoi [Apple](http://www.apple.com/?ref=thibaultmilan.com) propose d’utiliser une grille de capteurs IR pour détecter ou plutot pré-détecter le futur contact.
Quand on réfléchi à toute les applications possible, c’est tout simplement génial. Déja cela va permettre de mettre en sommeil une partie ou tout l’écran tactile, puisque celui ci n’est pas utilisé, et de le réactiver dès qu’il va être solicité. Ensuite mettre en surbrillance le bouton qui va être activé, plutot que l’animation actuelle “ce bouton est pressé” pourrait être interessant également. Sans compter toute les applications que l’on pourrais faire d’un contrôle de proximité sans contact.
Apple qui aurais apparement déjà breveter la technologie prévoit une grille de recepteur IR, monté devant un emmeteur. Cela permetterais d’avoir une detection en deux dimension de l’emplacement qui va être sollicité.
[source](http://www.appleinsider.com/articles/08/12/04/apple%5Fproposes%5Finfrared%5Fmatrix%5Fto%5Faid%5Flarger%5Fmulti%5Ftouch%5Fdesigns.html?ref=thibaultmilan.com)

### 4 Superbes Thèmes Dotclear
URL: https://thibaultmilan.com/4-superbes-th-mes-dotclear/
Last updated: 2008-12-04T12:00:00.000Z
Les Thèmes dotclear 2 ca ne court pas les rues, mais en plus quand il sont magnifique, on ne va pas s’en priver. Laisser moi donc vous présenter 4 thèmes dotclear so beautifull :p .
[Notepad Chaos](http://buzz.educ-envir.org/post/Notepad-Chaos-une-adaptation-pour-Dotclear?ref=thibaultmilan.com), une très réussie adaptation du theme pour [Wordpress](http://wordpress.org/development/?ref=thibaultmilan.com), très classe, idéal pour un blog perso dans le vent et un peu brouillon sans forcemment l’être, perso j’adore, forcemment je travaillais sur un projet de portage analogue !
[Outdoorsy](http://pixials.power-heberg.com/galerie/index.php/post/2008/11/18/Outdoorsy?ref=thibaultmilan.com) est un thème aussi adapté de Wordpress du thème Function. Très floral, avec son coté note perso (vive le crayon). Idéal pour mettre un peu de lumière dans son blog en ses périodes de pluie et de froid !
[ColorPaper](http://pixials.power-heberg.com/galerie/index.php/post/2008/11/23/Colorpaper?ref=thibaultmilan.com) est l’adaptation de FTL Wordpress Theme qui a l’avantage de permettre de changer la couleurs des liens via un petit module JQuery tout sympatique. Son coté bois et papier est très sympa !
[Leoclear](http://pixials.power-heberg.com/galerie/index.php/post/2008/10/28/Leoclear?ref=thibaultmilan.com) est quand à lui un thème qui conviendra à tout fan d’[Apple](http://www.apple.com/?ref=thibaultmilan.com). Complètement inspiré de Léopard, il permet, en outre, de choisir le fond d’écran parmis 4 différents et le CoverFlow peut être remplacé par une image ou tout simplement retiré. vous remarquerez le rendu impec sous Safari !

### Steam sur Linux ? Ou Pas !
URL: https://thibaultmilan.com/steam-sur-linux-ou-pas/
Last updated: 2008-12-03T12:00:00.000Z
Dans la dernière démo de [Left 4 Dead](http://en.wikipedia.org/wiki/Left%5F4%5FDead?ref=thibaultmilan.com), des petits malins on en effet trouvé un petit executable nommé steamclient\_linux.so, un nom plutôt équivoque non ? Mais voila qu’il disparais dans la version finale & commerciale du jeu. Mais voila les rumeurs ca va , ca vient, et il semblerais q’il ne s’agissait tout simplement que des serveurs de jeux sous linux, serveurs qui datent un peu de plus.
C’est assez dommage, car cela aurais été synonyme de portabilité accrue et d’un début du passage de nombreux jeux sous Linux. Il faudra malheureusement se contenter de l’émulation de Steam et autres via [Wine](http://www.winehq.org/?ref=thibaultmilan.com) en atendant de voir un réel portage soit du SteamEngine, soit carrément de DirectX (on peut réver non ?).

### De la VOD gratuite !
URL: https://thibaultmilan.com/de-la-vod-gratuite/
Last updated: 2008-12-03T12:00:00.000Z
La vidéo à la demande gratuite n’est plus un mythe, Cdiscount nous le prouve !
Initialement prévu pour septembre, c’est aujourd’hui, 3 décembre, que Cdiscount lance son service de vidéo à la demande gratuit, financé exclusivement par la publicité contenant une partie du catalogue UGC et quelques autres distributeurs.
Bon naturellement il ne faut pas réver, pas question de retrouver le box-office du moment, ses films seront exclusivement des titres parus depuis au moins un an au cinéma et qui on une notoriété insufisante pour faire du tort aux bouquets [VOD](http://en.wikipedia.org/wiki/Video%5Fon%5Fdemand?ref=thibaultmilan.com) payants.
Pour regarder un film, vous derais vous farcir une publicité de 30 secondes avant le visionage et supporter l”incrustation d’un logo (celui de l’annonceur) en haut de l’ecran (à gauche ou à droite) pendant le visionage du film.
A l’image des accords qui ont été passé entre les majors et les sites de [streaming audio](http://en.wikipedia.org/wiki/Streaming%5Fmedia?ref=thibaultmilan.com) comme deezer, Cdiscount à du sortir son chéquier et mettre plein de zero au bout. Cdiscount estime que cela en vaut la peine et prévoit 400 000 visionages par semaine et proposera 4 nouveautés par mois, histoire de fidéliser les internautes.
Ah oui autre hic, ca ne sera disponible que sur PC à l’instart des autres géants de la VOD qui sont disponibles via notre décodeur TV ou notre bouquet ADSL.

### DmScoop
URL: https://thibaultmilan.com/dmscoop/
Last updated: 2008-12-01T12:00:00.000Z
DmScoop est un service d’envoi en masse de Direct message twitter à une liste de contact.
Recherche graphique et développement d’une interface de présentation / inscription / login pour le moment. Projet suspendu faute de temps. Vous pouvez néanmoins aller voir ce que cela donne pour le moment, on en reparlera prochainement !
\[caption id=”attachment\_43" align=”alignnone” width=”300" caption=”Logo”\]

\[/caption\]
### Desimlocker physiquement son iPhone ?
URL: https://thibaultmilan.com/desimlocker-physiquement-son-iphone/
Last updated: 2008-12-01T12:00:00.000Z
C’est ce que propose cette société vietniamiene. Pour la modique somme de 80$ environ, votre iPhone ira faire une petite promenade du coté du soleil levant pour se faire désimlocker à la mode barbare.
Car oui la spécialité des vietnamiens c’est le désimlockage physique. Rien de bien compliqué nous rassurent ils. Il suffit d’ouvrir l’iPhone, démonter la carte mère, désouder le BaseBand (c’est le controleur entre le téléphone et le réseau) qui est en général noyé sous 3t de colle, lire la puce le contenant, sauvegarder le fichier puis le modifier avec un editeur hexa pour le desimlocker. Enfin on remonte tout et c’est repartit.
Si vous voulez tout de même en savoir plus ca se passe [ici](http://news.cnet.com/8301-17938%5F105-10107580-1.html?part=rss&tag=feed&subj=Crave&ref=thibaultmilan.com) via [BoingBoing](http://gadgets.boingboing.net/2008/12/01/unlocking-an-iphone.html?ref=thibaultmilan.com) . Personellement je doute avoir assez confiance, car un seul petit faux pas pendant le desassemblage ou le ré-assemblage du tlééphone et pouf ! A plus !

### GTA 4 utilise encore des DRM SecuRom
URL: https://thibaultmilan.com/gta-4-utilise-encore-des-drm-securom/
Last updated: 2008-11-30T12:00:00.000Z
[Grand Theft Auto IV](http://en.wikipedia.org/wiki/Grand%5FTheft%5FAuto%5FIV?ref=thibaultmilan.com) utilisera surrement encore des DRM SecuRom. Et la je dis , franchement, il y a encore des boites qui ont de l’argent à jeter par la fenêtre ! Les protéections SecuRom ont toujours été les plus rapidement craquées à chaque nouvelle génération, car les plus contraignante. Un nombre important de hackers s’atelent à la tache et hop, le crack Securom sort quelques semaines à peine après la release de la nouvelle version.
Pour information, la protection [SecuROM](http://en.wikipedia.org/wiki/SecuROM?ref=thibaultmilan.com) est un système de protection contre la copie des [CD](http://fr.wikipedia.org/wiki/CD-ROM?ref=thibaultmilan.com)/[DVD](http://fr.wikipedia.org/wiki/DVD?ref=thibaultmilan.com). Il est developpé par [Sony DADC](http://fr.wikipedia.org/wiki/Sony?ref=thibaultmilan.com) et est le plus souvent utilisé pour les jeux vidéos PC. SecuROM a pour but de résister aux périphériques de copie professionnels et personnels, ainsi qu’aux tentatives de [rétro-ingénierie](http://fr.wikipedia.org/wiki/R%C3%A9tro-ing%C3%A9nierie?ref=thibaultmilan.com).
La dernière version de Securom inclus également une protection contre le copie 1:1 des disques mais pourtant les très connus Deamon tool et YASU (Yet Another Securom Utility) arrivent toujours à émuler cette protéction et donc faire tourner des images CD, images CD qu’il est quand même possible de faire gràce à DeamonTool Pro.
D’un point de vue utilisateur final, le Securom est une plaie sans nom. Dans ses dernières déclinaisons (bioshock, spore, red alert 3, …) les processus d’installations necessitent une activation en ligne, et le nombre d’activation est limité. L’utilisateur doit donc posséder une connexion internet pour jouer à un jeux qui ne proposer aucun mode online, et aussi devra motiver sa demande d’activation supplémentaire auprès du service technique.
Alors quand on sait que les protections sont contournées dès le jour de la sortie du jeu, on peut se demander pourquoi les grosses sociétées éditrices de jeux vidéos continuent à utiliser ce genre de protection, plutot liberticide pour le consommateur légal.

### Empêcher le redimensionnement de la page sur l’iPhone
URL: https://thibaultmilan.com/emp-cher-le-redimensionnement-de-la-page-sur-l-iphone/
Last updated: 2008-11-29T12:00:00.000Z
Le navigateur web de l’iPhone et de l’iPod Touch est bien connu pour sa possibilité d’agrandir le texte, le redimenssioner pour qu’il soit lisible quelque soit le niveau de zoom appliqué. Bien que très interessante, cette fonction peut parfois détruire les plus beaux design de vos sites, mais heuresement il existe une instruction css pour empécher cela :
\-webkit-text-size-adjust: none;A appliquer sur tout le body ou seulement certains éléments.
Merci à [CSS Tricks](http://css-tricks.com/prevent-iphone-text-enlargement/?ref=thibaultmilan.com) !
### Project Polaroïd iPhone
URL: https://thibaultmilan.com/project-polaro-d-iphone/
Last updated: 2008-11-27T12:00:00.000Z
\[caption id=”” align=”alignright” width=”240" caption=”Image by Andrew Mason via Flickr”\]

\[/caption\]
Prenez des photos avec votre [iPhone](http://en.wikipedia.org/wiki/IPhone?ref=thibaultmilan.com) et donnez leur un effet polaroïd, le tout gratuitement, que demander de mieux ?
Après l’application pour Mac Osx, le Polaroïd refait surface avec une application iPhone, permettant de donner ce petit effet vintage qui nous fait tant rester nostalgique.
L’application est disponible pour iPhone ET [iPod touch](http://en.wikipedia.org/wiki/IPod%5FTouch?ref=thibaultmilan.com), à [CETTE ADRESSE](http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=296621814&mt=8&ref=thibaultmilan.com) .
[Via](http://www.maxiapple.com/2008/11/projectpolaroid-sur-iphone-effets.html?ref=thibaultmilan.com)

### Helvetireader, votre Google Reader tout en Helvetica
URL: https://thibaultmilan.com/helvetireader-votre-google-reader-tout-en-helvetica/
Last updated: 2008-11-27T12:00:00.000Z
[Helvetireader](http://www.helvetireader.com/?ref=thibaultmilan.com) est un petit script GreaseMonkey qui vous permet de modifier toute l’apparence de votre Google Redear pour y inclure votre police préféré. On se retrouve avec une interface minimaliste très jolie.
Pour commencer il vous faudra [GreaseMonkey](https://addons.mozilla.org/en-US/firefox/addon/748?ref=thibaultmilan.com) (firefox) ou [GreaseKit](http://8-p.info/greasekit/?ref=thibaultmilan.com) (Safari). Après avoir redémarré votre navigateur, il vous faudra [INSTALLER HELVETIREADER](http://www.helvetireader.com/helvetireader.user.js?ref=thibaultmilan.com) . Et voila !
### Bientot une version MAC de Picassa
URL: https://thibaultmilan.com/bientot-une-version-mac-de-picassa/
Last updated: 2008-11-27T12:00:00.000Z
\[caption id=”” align=”alignright” width=”250" caption=”Image by via CrunchBase”\]
\[/caption\]
Après une version native sur Windows, une version émulé sous Linux, une application native de [Picassa](http://picasa.google.com/?ref=thibaultmilan.com) serait en train d’être testée.
En effet Picassa brillait surtout par son abscence jusque maintenant sur mac, on possédais déjà de plusieures applications, éternellement en Beta comme à l’habitude de [Google](http://en.wikipedia.org/wiki/Google?ref=thibaultmilan.com), mais rien coté retouche photo, et il fallait se contenter de [iPhoto](http://en.wikipedia.org/wiki/IPhoto?ref=thibaultmilan.com) (qui est néanmoins très bien :D).
Au programme de cette application , ni plus ni moins que la prise en charge des “gestures”, ses commandes par geste effectué sur le trackpad nouveaux macbook, l’upload vers les albums photos en ligne (encore heureux !) et toute les fonctionnalités existantes sous Windows.
En attandant d’en savoir plus, vous pouvez toujours vous consoler avec le [module d’upload picasa pour iPhoto](http://picasa.google.com/mac%5Ftools.html?ref=thibaultmilan.com) ;)

### TimeXchange
URL: https://thibaultmilan.com/timexchange/
Last updated: 2008-11-02T12:00:00.000Z
Interface Client Web Based pour un logiciel de gestion d’emplois du temps pour l’IUT UPVM. Permet de consulter les derniers emplois du temps publiés par promo. Une fois identifié, on accède à une Timeline sur le principe du flux rss ou chaque modification ou ajout d’emplois du temps est listé.
Un cookie permet de gérer les éléments déjà vus. Le tout utilise une structure MVC (Modèle Vue Contrôleur) permettant de séparer le code. Le moteur de template utilisé est smarty et un fichier de classes sql à été réalisé par mes soins pour gérer la partie modèle.
\[caption id=”attachment\_47" align=”alignnone” width=”200" caption=”Vue de la page d’acceuil (non identifié)”\]

\[/caption\]