Sign in

Nathan Manceaux-Panot

@cykele.ro
113 followers 72 following 225 posts

Loves building tools, making art. Doesn't know how to compromise. Values kindness greatly. Making @retcon.app, the macOS app for effortlessly rewriting Git history. Blog: pending.design Links: cykele.ro

PostsRepliesMedia
Nathan Manceaux-Panot @cykele.ro · 22/09/2026
Just played SubDuctis for like 10 minutes, and holy crap is it elegant. Visually it's impressive—very restrained yet super original, and full of life—and the central mechanic is interesting and full of promise.
010
Nathan Manceaux-Panot @cykele.ro · 22/09/2026
Looks like Ice doesn't work on Golden Gate. What's everyone using to hide extra menu bar icons, these days? Looked at: Bartender (shady), Thaw (LLM readme is a bad sign), Barbee (free trial seems broken for me), Vanilla (broken on GG, icons hide randomly).
001
Nathan Manceaux-Panot @cykele.ro · 21/09/2026
Spent last week in Logroño for @nsspain.bsky.social! Met many fantastic peeps, got heaps of effusive feedback on my Retcon talk, got depressed by the sheer amount of AI buy-in, and laughed as I was crushed by crowds at the wine festival. I had a great time, and am very thankful I was selected :)
010
Nathan Manceaux-Panot @cykele.ro · 16/09/2026
You can make your commits easier to find by using emoji prefixes. You have to be very, very deliberate, though, for these to be effective at all. Here are some thoughts on that.
pending.design
Making a bouquet: Picking commit emojis
Emoji prefixes are a good idea that’s hard to get right.
011
Nathan Manceaux-Panot @cykele.ro · 12/09/2026
Just looked at the docs, and they say that “Move without reparenting” is Space. I think I tried to memorize that I some point but it didn’t stick? Will retry though, because that’d be a relief haha www.sketch.com/docs/shortcu...
sketch.com
Mac app shortcuts
Discover the full list of Sketch keyboard shortcuts to speed up your workflow. Start optimizing your time to do better work, faster.
110
Nathan Manceaux-Panot @cykele.ro · 12/09/2026
I see what you mean! They’re pushing for these automatic ways of doing layout, which meaning relearning a lot. I’m also still trying to fully understand it all. Dragging layers without reparenting them is still tricky for me too! I think there’s a key modifier for that, but I keep forgetting?
111
Nathan Manceaux-Panot @cykele.ro · 11/09/2026
They have a Discord, now, and are quite actively discussing things with people there. Maybe you could try voicing your concerns there? (as a bystander, and Sketch lover, I’m pretty curious about what your frustrations are, too. me I’ve been very happy, but obviously everyone’s taste is different!)
110
Nathan Manceaux-Panot @cykele.ro · 10/09/2026
NSSpain just announced their schedule! There's a familiar face at the very end of Day 1. What's that about a retcon? 2026.nsspain.com/
TALK 17:00
Nathan Manceaux-Panot

Reimplementing Git: What’s hard about making things easy

A virtualized version of your Git history, that’s fully malleable; a custom negotiation algorithm for safely undoing pushes; a cleanly reversible pipeline for modifying an entire repository at once. Come hear about the technical challenges of creating Retcon—the Git app for rewriting history faster—and the intricate algorithms that make it all work. By the end of the session, you’ll have seen a very different way of interacting with Git, told through animated graphs and development stories.
011
Nathan Manceaux-Panot @cykele.ro · 10/09/2026
"how about you write an app where rapidly, continuously straining the hinge is a core interaction" now that's confidence in your hinge reliability (from youtu.be/Biqw19XiqQY?t=87 )
A guitar vector illustration on an iPhone Duo. A subtitle reads “I have an idea to use the hinge to drive a pitch bend like a whammy bar.”
000
Nathan Manceaux-Panot @cykele.ro · 10/09/2026
Cool view of all the possible poses
Six shots of the iPhone Duo. Various combinations of: portrait or landscape orientation; open, close, or half-open. The app on screen, Mail, adapts differently to each, sometimes with a toolbar, sometimes not.
010
Nathan Manceaux-Panot @cykele.ro · 10/09/2026
Apple's design and dev video, timestamped:
youtu.be
Design for iPhone Duo | Apple
iPhone Duo is the first folding iPhone and comes with a reimagined iOS. Get to know the design principles behind the updated software, explore how controls move between different poses, and learn where your layout needs to adapt and why. 00:00 - Introduction 00:28 - Design principles 03:42 - Adapting your design 05:07 - Positioning controls 06:33 - Designing for the outer display 07:34 - Designing for the inner display 08:36 - Sheet behavior 09:28 - Fold avoidance 10:01 - Conclusion More Apple Developer resources: Video sessions: https://apple.co/VideoSessions Documentation: https://apple.co/DeveloperDocs Forums: https://apple.co/DeveloperForums App: https://apple.co/DeveloperApp
100
Nathan Manceaux-Panot @cykele.ro · 10/09/2026
In the Duo dev video, they describe how text buttons can't be moved to the new vertical sidebar, as opposed to icon buttons. I wonder if that's one of the reasons Liquid Glass pushed hard for icon buttons, even though these are harder to understand; they make the vertical layout possible at all.
Snapshot from Apple dev vide, showing a regular iPhone side-by-side with a folded iPhone Duo.

On the regular iPhone, the top toolbar contains a few buttons: a back arrow button, a dot-dot-dot button, and a button that says “Select”.

On the iPhone Duo, the back and dot-dot buttons are in a toolbar placed vertically along the right edge, but the Select button is still in an area along the top edge.
150
Nathan Manceaux-Panot @cykele.ro · 09/09/2026
What cursed sort of slide is this, you ask
Build Order window from macOS Keynote. Many builds. Half of them are for arrows with very windy and silly paths. The others are for text layers, with names like “Write stage”, “Move head”, “Write/clear recovery…”, “Create, delete branc…”, or “Update virtual head”.
000
Nathan Manceaux-Panot @cykele.ro · 08/09/2026
No bird, no plane, just Superman.
001
Nathan Manceaux-Panot @cykele.ro · 07/09/2026
A friend was trying to show me something, and instead I got gaslit by screen-sharing software
Screenshot of a Discord call window. Someone is sharing their screen. The image, however, only shows a tiny window, that reads “You are sharing your entire screen”.
000
Reposted by Nathan Manceaux-Panot
Retcon @retcon.app · 31/08/2026
Retcon is now ready for macOS 27 Golden Gate. Update from the app for a handful of welcome bug fixes. Nothing exciting!!!!
021
Nathan Manceaux-Panot @cykele.ro · 31/08/2026
A skill, and also a terrible curse I’m sure
010
Nathan Manceaux-Panot @cykele.ro · 30/08/2026
I was honestly not prepared for how fun it is to draw these things! The constraints (16×16 pixel art, limited number of colors per sprite) really help with not getting lost in possibilities. Not super happy with green and yellow but that’s good for now.
Five pixel art eggs. Each is of a single color: red with stripes; green with squiggly lines; blue with uhh patterns; yellow with faint patterns; and purple with polka dots. Also, there's what should look like a warren: a circle of dirt, a dark hole in the middle, and two eyes looking out.
010
Nathan Manceaux-Panot @cykele.ro · 28/08/2026
What gorgeous presentation! ASCII art, but in subtle, tasteful 3D. (Rangedrifter is a roguelike, apparently only available for Linux and Windows though, somehow)
youtube.com
Rangedrifter 0.50 Trailer
Update 0.50 is now available on Steam! Consider buying the game to support me and it's development! Hi, I am Max, the creator of the Rangedrifter, a roguelike where you fight your way through a hand-crafted world on a procedural path, trying to reach its lost center. The game is available for Linux and Windows systems and played with controller or keyboard. Consider buying the game early to support me and it's development! Buy the Game: https://store.steampowered.com/app/4595710 Visit the Website: https://www.rangedrifter.com Join the Discord: https://discord.gg/xdMgB7HkMk Join the Streams: https://www.twitch.tv/rangedrifter
000
Nathan Manceaux-Panot @cykele.ro · 28/08/2026
A whole article on people opposing Flock surveillance cameras in the USA. Blocking them, destroying them, removing them. And then, people steadfastly supporting anyone who's caught and charged. It's a very nice read!
theverge.com
Americans are cheering for vigilantes who take down Flock cameras
The surveillance cameras have become another flashpoint of growing bipartisan anger against tech industry excess.
010
Nathan Manceaux-Panot @cykele.ro · 22/08/2026
Suggestions wanted: I have an old PHP-powered website that I want to keep running, but my current host tripled its prices. Is there a reasonably-priced, straightforward PHP host I could switch to? Ideally I don't want to manage a Linux VPS, just, give me FTP access and PHP preinstalled.
010
Nathan Manceaux-Panot @cykele.ro · 18/08/2026
Explaining undo/redo is hard?! This is a rough exploration draft that explains a very simple sequence ("move main branch to commit B, then undo, then redo") and it's already a mess. The *actual* undo/redo scenarios I want to explain are going to require a very different approach, looks like.
A table. Four rows: actions, phys, undo, and redo. The action row contains four actions (“set main to B”, undo, and redo). The other rows see their contents change as the actions are executed, and arrows show how state flows. (for instance, the first action causes the initial value of phys to move from phys to undo).
000
Nathan Manceaux-Panot @cykele.ro · 18/08/2026
Oop, that second image was suppose to move
120
Nathan Manceaux-Panot @cykele.ro · 18/08/2026
Started drawing sprites for a small game we're making with a friend. I decided to imitate the style of Link's Awakening, which really helps a pixel art newbie like me: that's a lot fewer decisions to make!
Pixel art depictions of some kind of orange bird, a rooster, and two frames of a rabbit running.A rabbit running.
150
Nathan Manceaux-Panot @cykele.ro · 17/08/2026
Neat idea: @furnacecreek.bsky.social’s Pixen has a “what should we add?” field in its feature announcement screen.
A “What’s new in Pixen” dialog in Pixen, a Mac app. It lists a few new features—scripting, MacPaint format support, and an iPhone release—and then there’s an empty text field. It’s titled “Request a Feature or Enhancement”, and its placeholder text is “Add a jetpack”.
010
Nathan Manceaux-Panot @cykele.ro · 15/08/2026
Totally agree with these strengths; integration with the editor makes it so good. On the other hand, it’s very painful to express anything a bit sophisticated (e.g. manipulate lists of stuff). Been loving/hating GDScript for a year, and now looking forward to trying Godot+Swift for the next project
000
Nathan Manceaux-Panot @cykele.ro · 15/08/2026
This reminds me this talk by Joachim Kurz. I like what he suggests, and he says it well! www.youtube.com/watch?v=A1vz...
youtube.com
UIKonf18 – Day 1 – Joachim Kurz – MVC is Not Your Problem
YouTube video by UIKonf
110
Nathan Manceaux-Panot @cykele.ro · 15/08/2026
⌘P used to stand for "Print…", now it's really "PDF…"
000
Nathan Manceaux-Panot @cykele.ro · 14/08/2026
Friday evening: the perfect time to release a (beta) update. Enable beta updates in Retcon settings to get a bunch of small fixes, mostly for Golden Gate.
000
Nathan Manceaux-Panot @cykele.ro · 14/08/2026
Also that "compatible with Apple AirTag" is just smart marketing. All CR2032 batteries are compatible, but in doubt, people will grab the ones that explicitly state that compatibility.
000
Nathan Manceaux-Panot @cykele.ro · 14/08/2026
Love how "extra repulsive taste" is, in certain contexts, a feature!
Duracell button battery packaging. Below the specs it says, “Baby Secure: extra repulsive taste”
100
Nathan Manceaux-Panot @cykele.ro · 14/08/2026
Just made Retcon crash, and feeling SO good. That mix of relief and excitement of finally getting a good repro 😌
010
Nathan Manceaux-Panot @cykele.ro · 06/08/2026
Gorgeous dirt, might I add
010
Nathan Manceaux-Panot @cykele.ro · 06/08/2026
From a @daringfireball.bsky.social post. A deeply misguided take, really. What’s expected from Apple is not revenue; that’s just means to an end. What we love(d) Apple for is firm values, and outstanding products. Under Cook, they’ve steadily worsened on both. Apple didn’t do alright, they decayed.
Screenshot from a Daring Fireball post.

First, a quote:
A day after Cook took over in August 2011, Apple’s stock price was $13.35 (split-adjusted). Today, it opened at $304.81, a roughly 23× increase.

Then, commentary by John Gruber:
Apple did alright under Cook.
020
Nathan Manceaux-Panot @cykele.ro · 06/08/2026
LLM-generated READMEs on GitHub are so tiring. They're a smear of… stuff. An oddly-phrased description of the project, then a list of features where "written in Rust" is listed right alongside "UI has green buttons", then endless instructions and implementation details with no discernible structure.
030
Nathan Manceaux-Panot @cykele.ro · 06/08/2026
The way you draw linking books has this indescribable quality that I love. Something about how expressive the lines are, flowing out from the spine. Makes the book feel more alive!
110
Nathan Manceaux-Panot @cykele.ro · 06/08/2026
Aw, thank you! It’s surprisingly not easy to say anything about Retcon because I’m always a bit afraid of making bad promises, etc. But it turns out it’s always a nice time when I do post something, so I try to do so more!
010
Reposted by Nathan Manceaux-Panot
NSSpain XIV @nsspain.bsky.social · 03/08/2026
NSSpain XIV afterparty is set 🍷 Sept 17th @ Bodegas Amézola de la Mora, La Rioja’s first ever château. 19th century bodega, vineyards all around, a room full of iOS devs. See you there 🤩 #NSSpain26
Aerial view of a vineyard estate surrounded by rows of grapevines, a winery building, winding country roads, and a dense green forest under warm golden evening light.Guests gather outside a modern winery tasting room with large white umbrellas, enjoying a social event overlooking the surrounding vineyards on a sunny day.Historic underground wine cellar with vaulted stone and brick arches, warm lighting, and rows of wine bottles stacked on metal racks for aging.
374
Nathan Manceaux-Panot @cykele.ro · 02/08/2026
Anyway, the shader layers are really really cool, and so is Papaya in the first place! Even if I don’t personally rely on it, I always really enjoy seeing your updates :)
000
Nathan Manceaux-Panot @cykele.ro · 02/08/2026
And more generic to all of Papaya: - ⌘Z undoes, but couldn’t find redo (⇧⌘Z didn’t work, and ⌘Y is Safari’s history shortcut). A shortcut list would be helpful! (maybe I just didn’t find it) - Default doc says “Start editing the one below” but the bitmap was empty for me.
Empty state says “Start editing the one below” but there's no image
100
Nathan Manceaux-Panot @cykele.ro · 02/08/2026
- It'd be nice to have a bit more in the default shader code. At least a pass-through for the first sublayer, even if commented out initially; I think that’s a common use case. - Maybe link to a (pre-existing) cheat sheet of HLSL basics? Makes it more readily usable for peeps like me.
100
Nathan Manceaux-Panot @cykele.ro · 02/08/2026
Just gave it a quick test. It *is* fun to have a direct way to write shader for an image! The fact it instantly updates for every character press feels really good, too. A couple of ideas: - When there’s a compile error, maybe it should keep displaying the last valid build, to reduce flicker.
const float OFFSET = 300.0;
const float TURBULENCE_SCALE = 30.0;
const float TURBULENCE_MAGNITUDE = 100.0;

void mainImage(out vec4 fragColor, in vec2 fragCoord) {
    vec4 sourceColor = texture(iChannel0, fragCoord / iResolution.xy);
    float distorsionAmount = pow(1.0 - sourceColor.r, 0.7);
    
    vec4 sampledColor = texture(
        iChannel0,
        (
            fragCoord
            + vec2(0.0, OFFSET * distorsionAmount)
            + sin(fragCoord.x / TURBULENCE_SCALE) * TURBULENCE_MAGNITUDE * distorsionAmount
            + sin(fragCoord.y / TURBULENCE_SCALE * 1.0) * TURBULENCE_MAGNITUDE * distorsionAmount
        ) / iResolution.xy
    );
    
    fragColor = sampledColor;
    fragColor.rg *= mix(1.0, 0.0, distorsionAmount);
    fragColor.b *= mix(1.0, 0.4, distorsionAmount);
}
111
Nathan Manceaux-Panot @cykele.ro · 01/08/2026
In a small 2D game we’re making with a friend, we did add fog of war! The intent was to make exploration a bit slower, when looking for valuables; but it does add some immersion, even though the game is currently super ugly. There’s this automatic sense of mystery when you can’t see everything
A top-down shooter with very crude visuals. Part of the map is in complete darkness. Two players are there, revealing through the black fog
010
Nathan Manceaux-Panot @cykele.ro · 01/08/2026
Did a very quick interaction prototype for showing which commits are local-only, in @retcon.app. It’s something I’d really like to show, but I haven’t been happy with anything so far. Maybe this will do?
030
Reposted by Nathan Manceaux-Panot
Apoorva Joshi @apoorvaj.io · 30/07/2026
This is a super fun feature. You can just paste in most ShaderToy effects. What's a better way to add bling to your graphics programmer CV than literally add a shader in there, and then just export to PDF? 😅
131
Nathan Manceaux-Panot @cykele.ro · 31/07/2026
Decades ago, I wanted to print wrapping paper with squiggly stripes, but didn’t know how to generate such a thing. Ended up writing a filter in Quartz Composer, and used it in Pixelmator, which supported them natively. Same idea, but a bunch more steps!
110
Nathan Manceaux-Panot @cykele.ro · 31/07/2026
Ohhh I love that. When it’s that integrated it makes it so much easier to do simple things that you’d know how to express in code, but not with the other tools.
110
Nathan Manceaux-Panot @cykele.ro · 31/07/2026
Whoa, that movement looks so natural! You can feel the physicality so well.
010
Nathan Manceaux-Panot @cykele.ro · 31/07/2026
The other day my friends coaxed me into playing a mobile Gacha game, and I can't stop thinking about this quest it gave me
A conversation interface in a game. It shows a villager called Illinois. She says “I’ve lost my Gravel. Can you help me?”.

The two response options are:
- “Do you remember when it was last used? (Accept Quest)”
- “Apologies, I'm busy at the moment. (Decline Quest)”
000
Nathan Manceaux-Panot @cykele.ro · 28/07/2026
Nine sleeps? OK, doing my part, taking a nap right now
001