<?xml version='1.0' encoding='utf-8'?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Beyond the Stack · EN</title>
    <link>https://deslypeter.com/</link>
    <description>Technology, film reviews, photography and stories by Desly Peter.</description>
    <language>en</language>
    <atom:link href="https://deslypeter.com/feed.xml" rel="self" type="application/rss+xml" />
    <lastBuildDate>Mon, 26 Oct 2026 10:18:21 +0100</lastBuildDate>
    <item>
      <title>UGREEN Uno Qi2 charger — a little robot with a useful job</title>
      <link>https://deslypeter.com/writing/ugreen-uno-qi2-charger-review</link>
      <guid>https://deslypeter.com/writing/ugreen-uno-qi2-charger-review.html?lang=en</guid>
      <description>A playful robot design, magnetic phone charging and a place for your earbuds. The UGREEN Uno makes an everyday accessory more interesting. My rating: 8/10.</description>
      <pubDate>Mon, 26 Oct 2026 10:18:21 +0100</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;The UGREEN Uno 2-in-1 Magnetic Wireless Charger gets 8/10 from me. A charger is usually something you hide behind a desk. This one has enough personality to deserve a place on it. The robot shape and expressive display are the immediate attraction, but the more interesting question is whether the design serves an everyday purpose. With a magnetic phone stand and a second wireless charging area for earbuds, there is a practical idea behind the little face.&lt;/p&gt;&lt;h2&gt;A design that makes me smile&lt;/h2&gt;&lt;p&gt;The robot styling is what I like most about the Uno. The small face gives a familiar accessory a sense of character, while the grey and black finish keeps the overall appearance tidy. It feels like the sort of gadget that belongs beside a monitor: visible, useful and a little fun.&lt;/p&gt;&lt;p&gt;The screen also provides visual charging feedback. That gives the playful design a purpose beyond decoration. I appreciate accessories that make an ordinary routine more enjoyable without demanding a whole new routine of their own.&lt;/p&gt;&lt;h2&gt;Magnetic charging with a useful stand&lt;/h2&gt;&lt;p&gt;UGREEN specifies Qi2 wireless phone charging at up to 15W. The magnetic attachment helps position a compatible phone over the charging coil, while the raised stand leaves the screen available for checking notifications or keeping a clock in view. That combination is the main appeal for a desk.&lt;/p&gt;&lt;p&gt;The adjustable head adds flexibility to the viewing angle. Being able to position the phone for portrait or landscape use makes the stand useful beyond simply holding a device while its battery fills. Compatibility still matters: the phone and case need to suit the magnetic charging setup. A thick or unsuitable case can get in the way.&lt;/p&gt;&lt;p class="specs-note"&gt;&lt;a href="https://uk.ugreen.com/products/ugreen-uno-2-in-1-magnetic-wireless-charger-15w"&gt;UGREEN — Uno Qi2 — product details&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;Phone and earbuds in one place&lt;/h2&gt;&lt;p&gt;The second wireless charging area supports compatible earbud cases at up to 5W. Giving the phone and earbuds a regular place to sit is a small convenience that can make a desk feel more organised. It also means the stand offers more than a single phone charging surface.&lt;/p&gt;&lt;p&gt;There is a side USB-C output for connecting a separate Apple Watch charger. The distinction is worth making clear: the Uno does not contain a built-in Apple Watch charging puck. If watch charging is part of the plan, that accessory is an additional requirement.&lt;/p&gt;&lt;p class="specs-note"&gt;&lt;a href="https://uk.ugreen.com/products/ugreen-uno-2-in-1-magnetic-wireless-charger-15w"&gt;UGREEN — Uno Qi2 — product details&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;What I would keep in mind&lt;/h2&gt;&lt;p&gt;The 15W figure is a maximum supported wireless phone charging rate. Actual charging depends on the phone, its software, battery level, temperature and power supply. I see this as a convenient place to leave a phone during the day, rather than a reason to expect the quickest possible top-up. No timed charging measurements are presented here.&lt;/p&gt;&lt;p&gt;The stand also needs an external USB-C power supply; it is not a battery-powered charging station. Check the adapter requirements and the contents of the particular bundle before buying, since a cable and a wall adapter are different things. The robot design is appealing, but the practical match with your devices matters more than the face on the front.&lt;/p&gt;&lt;h2&gt;Why it earns my 8/10&lt;/h2&gt;&lt;p&gt;What wins me over is the combination of personality and purpose. The Uno gives a phone a useful viewing position, brings compatible earbuds into the same charging spot and adds a little character to the desk. Those are modest improvements, but they are improvements to something used every day.&lt;/p&gt;&lt;p&gt;My rating is 8/10. The wireless charging ceiling and the separate watch charger requirement keep expectations grounded. For someone who likes the design and has compatible devices, this is an appealing way to make charging feel less like a collection of loose cables.&lt;/p&gt;&lt;p class="specs-note"&gt;Features checked against UGREEN’s product information. Charging rates are manufacturer maxima; no measured charging times or temperature tests are claimed.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;8/10. An appealing combination of robot personality, a magnetic phone stand and earbud charging. A cheerful desk accessory, provided its 15W phone charging and device compatibility fit your needs.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Yamaha RX-V683 — an Atmos receiver with room to grow</title>
      <link>https://deslypeter.com/writing/yamaha-rx-v683-review</link>
      <guid>https://deslypeter.com/writing/yamaha-rx-v683-review.html?lang=en</guid>
      <description>Dolby Atmos, sensible calibration and a generous range of connections. A capable foundation for a home cinema, with some older HDMI limits to keep in mind. My rating: 8/10.</description>
      <pubDate>Mon, 26 Oct 2026 10:18:21 +0100</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;The Yamaha RX-V683 gets 8/10 from me. What appeals to me is the idea of a proper home-cinema hub: one component that brings your sources, speakers and room setup together, while leaving you choices about how the system develops. Dolby Atmos is the headline attraction, but the broader flexibility matters just as much. This is a receiver built for people who want to put together a system around their own room.&lt;/p&gt;&lt;h2&gt;Atmos with a clear channel limit&lt;/h2&gt;&lt;p&gt;The RX-V683 has seven amplified channels and supports Dolby Atmos and DTS:X. For an Atmos layout, the useful configuration to understand is 5.1.2: five conventional speakers, a subwoofer and two height channels. It can also serve a conventional 7.1 layout. Those are alternative uses of its amplification; it cannot power a full 7.1.2 arrangement at the same time.&lt;/p&gt;&lt;p&gt;That distinction makes its strengths easier to appreciate. The attraction is the opportunity to build an immersive system with actual speakers placed around the room and height effects above the listening position. The results depend on the speakers, their layout, the content and the room. Atmos decoding is the starting point, and taking care with the physical setup is what gives it a chance to work well.&lt;/p&gt;&lt;p class="specs-note"&gt;&lt;a href="https://manual.yamaha.com/av/17/rxv683/en/pages/c3_sf2_ss1.html"&gt;Yamaha — Speaker configurations&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;YPAO makes setup more approachable&lt;/h2&gt;&lt;p&gt;Yamaha’s YPAO R.S.C. automatic calibration is one of the features I value in this kind of receiver. A surround system involves more than connecting the right wires. Levels, distance settings and the room’s effect on the sound all need attention. Having a guided calibration process gives the owner a practical starting point.&lt;/p&gt;&lt;p&gt;I would still treat calibration as a starting point rather than a substitute for sensible placement. Get the speakers into suitable positions, use the microphone as directed and check the result. The positive is having a receiver that offers tools for the room you actually have, rather than expecting every living space to behave like an ideal listening room.&lt;/p&gt;&lt;p class="specs-note"&gt;&lt;a href="https://europe.yamaha.com/en/audio/home-audio/products/av-receivers-amps/rx-v683/"&gt;Yamaha — RX-V683&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;More than a movie-only component&lt;/h2&gt;&lt;p&gt;MusicCast, network playback, AirPlay and Bluetooth give the RX-V683 a broader role than simply switching film sources. A phono input also makes it relevant to a compatible turntable setup. That range is part of its appeal: a home-cinema receiver can be the centre of music listening as well as movie nights.&lt;/p&gt;&lt;p&gt;There is value in having different ways to use the same speaker system. Wired inputs, network sources and everyday wireless playback cover different situations. I would check the current availability of any particular online music service before relying on it, since regional access and third-party services can change. The physical connections remain an important part of the receiver’s versatility.&lt;/p&gt;&lt;p class="specs-note"&gt;&lt;a href="https://europe.yamaha.com/en/audio/home-audio/products/av-receivers-amps/rx-v683/"&gt;Yamaha — RX-V683&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;Connections that give a system options&lt;/h2&gt;&lt;p&gt;Six HDMI inputs and one HDMI output give you space for several sources and a main display. There are also analogue and digital audio inputs, plus two mono subwoofer outputs. A receiver like this makes sense when you want one place to manage a collection of equipment instead of repeatedly moving cables between devices.&lt;/p&gt;&lt;p&gt;Powered Zone 2 and bi-amping are useful configuration options, but they share the available amplifier channels. I would plan the main-room layout before assigning those channels elsewhere. The number of speaker terminals on the back does not mean every possible combination can play at once. Knowing that makes the flexibility genuinely useful rather than confusing.&lt;/p&gt;&lt;p class="specs-note"&gt;&lt;a href="https://manual.yamaha.com/av/17/rxv683/en/pages/c6_sf9.html"&gt;Yamaha — Owner’s manual&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;The limits to understand today&lt;/h2&gt;&lt;p&gt;The video specification belongs to the 4K/60 generation. Yamaha lists HDR10, Dolby Vision and HLG compatibility, which covers an important range of film and television sources. It is not a 4K/120 video-switching receiver, so a modern high-refresh-rate console or PC setup needs a different connection plan.&lt;/p&gt;&lt;p&gt;It is also a substantial component: Yamaha lists a width of 435 mm, a height of 171 mm, a depth of 378 mm and a weight of 10 kg. Allow suitable shelf space and ventilation rather than treating it like a small streaming box. A receiver is the centre of a wired system, and the equipment space and cable planning are part of that choice.&lt;/p&gt;&lt;p class="specs-note"&gt;&lt;a href="https://uk.yamaha.com/en/products/audio_visual/av_receivers_amps/rx-v683/specs.html"&gt;Yamaha — Specifications&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;Why it earns my 8/10&lt;/h2&gt;&lt;p&gt;The RX-V683 brings together the things that make an AV receiver worth considering: Atmos and DTS:X decoding, useful calibration, several kinds of input and the ability to choose your own speakers. Its appeal is that the system can be built around your priorities rather than being fixed inside one all-in-one product.&lt;/p&gt;&lt;p&gt;My rating is 8/10. It is a capable, flexible foundation for a sensibly planned home cinema. I would judge it on those strengths while being realistic about its seven-channel amplification and older video capabilities. Match the receiver to the room, sources and speaker layout you want, and its purpose is easy to understand.&lt;/p&gt;&lt;p class="specs-note"&gt;Feature information is checked against Yamaha’s documentation. This review discusses the receiver’s capabilities; it does not present room-specific listening tests or measurements.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;8/10. A versatile home-cinema receiver with Dolby Atmos, DTS:X and useful setup tools. Particularly appealing for a planned 5.1.2 system, provided its channel count and 4K/60 video capabilities fit your needs.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Bose SoundTouch 20 — a compact speaker with lasting appeal</title>
      <link>https://deslypeter.com/writing/bose-soundtouch-20-review</link>
      <guid>https://deslypeter.com/writing/bose-soundtouch-20-review.html?lang=en</guid>
      <description>Room-filling music, a compact design and controls that make sense. The SoundTouch 20 earns my 9/10, even as its software platform moves into a different chapter.</description>
      <pubDate>Mon, 26 Oct 2026 09:53:05 +0100</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;The Bose SoundTouch 20 gets a 9/10 from me. What I value about it is the combination: a compact speaker built around music, a design that feels comfortable in a home, and controls you can understand without turning listening into a project. Its appeal goes beyond a list of connected features. A speaker can be satisfying because the basic idea is right.&lt;/p&gt;&lt;h2&gt;A lot of music in a modest space&lt;/h2&gt;&lt;p&gt;The main attraction is room-filling sound from a single, compact enclosure. That is how Bose described the SoundTouch 20 Series III at launch, and it captures what makes this speaker appealing: a proper home-music system without a rack of equipment or separate speaker stands. There is an elegance to giving music a dedicated place while keeping the setup manageable.&lt;/p&gt;&lt;p&gt;For me, the positive here is the balance between presence and practicality. A speaker should make you want to put music on. The SoundTouch 20’s straightforward, music-first approach is a big part of why I rate it so highly. It is a different proposition from building a carefully positioned hi-fi system, and that simplicity has a value of its own.&lt;/p&gt;&lt;p class="specs-note"&gt;&lt;a href="https://www.bose.com/pressroom/bose-announces-next-generation-soundtouch-wireless-systems-with-bluetooth-and-wi-fi"&gt;Bose — SoundTouch introduction&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;A design that belongs in the room&lt;/h2&gt;&lt;p&gt;The restrained cabinet, front grille and central display give it an identity without demanding all the attention. It looks like a home speaker, with the information and controls where you expect them. I like that sense of purpose: the design serves the music rather than becoming another thing to manage.&lt;/p&gt;&lt;p&gt;The Series III’s published dimensions are approximately 18.8 × 31.4 × 10.4 cm. That gives a useful idea of its footprint: wide enough to feel substantial, but compact enough to consider for a shelf or sideboard. This is a mains-powered home system, so its strength is fitting into a room rather than being a battery-powered travel companion.&lt;/p&gt;&lt;h2&gt;Physical controls are still a good idea&lt;/h2&gt;&lt;p&gt;One of the nicest parts of the SoundTouch design is that interaction does not begin and end with a phone screen. The top-panel buttons and remote provide direct access to everyday controls, and the front display makes the system’s state visible. There is something reassuring about being able to reach for a volume button or a remote.&lt;/p&gt;&lt;p&gt;The six numbered preset buttons were a distinctive part of the original SoundTouch idea. They show how much thought went into making a connected speaker feel familiar. Their current usefulness depends on the service changes described below, but the broader design lesson still holds: convenient hardware controls make a speaker more approachable.&lt;/p&gt;&lt;h2&gt;Useful connections give the hardware a longer life&lt;/h2&gt;&lt;p&gt;The 3.5 mm AUX input is an important positive. A wired audio path keeps the speaker useful with a compatible external source, without requiring every listening session to depend on the original streaming platform. It is a simple connection, but simple connections often age well.&lt;/p&gt;&lt;p&gt;Generation matters when discussing wireless features. Bluetooth is available on the SoundTouch 20 Series III; earlier SoundTouch 20 models should not automatically be assumed to have the same feature set. Check the exact version when matching a speaker to a phone or streamer. That distinction leaves the review fair to the whole SoundTouch 20 family.&lt;/p&gt;&lt;p class="specs-note"&gt;&lt;a href="https://assets.bose.com/content/dam/Bose_DAM/Web/consumer_electronics/global/products/speakers/soundtouch_20_seriesiii_wireless_music_system/pdf/801086_og_soundtouch-20-wireless-music-system-bundle_en.pdf"&gt;Bose — SoundTouch 20 Series III owner’s guide&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;The current SoundTouch situation&lt;/h2&gt;&lt;p&gt;Bose ended SoundTouch cloud services on 6 May 2026. The updated app retains local setup, control and grouping, but in-app music browsing is gone, presets are limited, and security updates have ended. AUX and supported Bluetooth remain useful. This changes the connected experience, so I would check the current Bose guidance before buying a used unit.&lt;/p&gt;&lt;p class="specs-note"&gt;&lt;a href="https://www.bose.com/soundtouch-end-of-life"&gt;Bose — SoundTouch service guidance&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;Why I still give it 9/10&lt;/h2&gt;&lt;p&gt;The SoundTouch 20’s strongest qualities are easy to appreciate: a compact home-friendly design, the promise of substantial music from one box, a visible display, physical controls and a wired input that keeps its usefulness from being entirely tied to cloud services. Those are practical strengths, not just features for a specification sheet.&lt;/p&gt;&lt;p&gt;My 9/10 reflects how positively I feel about the speaker itself. The software story deserves an honest mention, but it does not erase the appeal of the hardware. I like products with a clear purpose, and the SoundTouch 20 has one: make listening to music at home feel welcoming and uncomplicated.&lt;/p&gt;&lt;p class="specs-note"&gt;Product information: Bose launch announcement and Series III owner’s guide. Current service status: Bose SoundTouch guidance. Connectivity differs by generation.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;9/10. A compact, thoughtfully designed home speaker with strong everyday appeal. Its music-first approach and direct controls are the positives I value most; check the exact series and current service support when considering one today.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Dorothy — Karthik Subbaraj does it again</title>
      <link>https://deslypeter.com/writing/dorothy-2026-review</link>
      <guid>https://deslypeter.com/writing/dorothy-2026-review.html?lang=en</guid>
      <description>Karthik Subbaraj does it again. The feeling of Iraivi, Vettai Muthukumar’s surprising Whistle Veeraiyya, and Ilaiyaraaja’s deeply moving music make Dorothy a film that stays with me. 9/10.</description>
      <pubDate>Sat, 24 Oct 2026 15:20:43 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Karthik Subbaraj has done it again. Dorothy left me with that feeling of having watched a filmmaker return to something that matters deeply to him. There is a force to the film that makes me want to talk about it afterwards, and a large part of my response comes from the people inside its rough, unforgiving world. This is a 9/10 film for me.&lt;/p&gt;&lt;h2&gt;The feeling of Iraivi&lt;/h2&gt;&lt;p&gt;The film brought back something of the feeling of Iraivi, which remains one of the best films Karthik Subbaraj has made. It is a comparison I mean as a compliment. What connects them for me is the discomfort around men, the power they assume they have, and the damage that can follow when pride becomes more important than another person.&lt;/p&gt;&lt;p&gt;Dorothy is set around Madurai in the 1990s and follows the friendship between Subbu and Karthi. Their lives take shape in a community governed by caste divisions, family authority and rigid expectations of masculinity. That setting gives the friendship a difficult question to carry: how much room is there for someone you love to become a person you did not expect?&lt;/p&gt;&lt;p&gt;This is where the Iraivi feeling stayed with me. The attraction is not simply to a dark story or to characters making terrible choices. It is to a filmmaker looking closely at the ideas people inherit and the cost of refusing to question them. I like Karthik Subbaraj most when the drama gives those ideas a human consequence. Dorothy belongs in that conversation for me.&lt;/p&gt;&lt;h2&gt;Why this subject matters now&lt;/h2&gt;&lt;p&gt;The subject feels relevant well beyond the period in which the film is set. Caste prejudice, the policing of masculinity, and the belief that a family can decide how someone must live are not comfortably distant problems. A change of decade does not automatically change those attitudes. That is why the film’s questions about identity and acceptance matter to me now: they concern the freedom to live with dignity, without having to earn it through obedience.&lt;/p&gt;&lt;p&gt;For me, the difficult question is what acceptance looks like when it asks something of us. It is easy to support the idea of compassion while still expecting another person to fit our familiar categories. Can we listen when their experience unsettles those expectations? Can affection survive the loss of control? I value Dorothy for bringing that discomfort into a film people will watch and argue about together. A film cannot settle these issues, but it can make avoiding them harder.&lt;/p&gt;&lt;h2&gt;Sananth and Rishikanth feel like one of us&lt;/h2&gt;&lt;p&gt;Sananth and Rishikanth give the subject a personal weight. As Subbu, Sananth has to make vulnerability feel like part of a whole person, rather than a quality attached to an argument. Rishikanth’s Karthi carries the strain of trying to reconcile affection with what he has been taught to believe. Their performances give the friendship its emotional stakes. I wanted to stay with these people even when the relationship became uncomfortable.&lt;/p&gt;&lt;p&gt;There is another reason I felt close to the leads: they feel like one of us. Watching them take on these roles brought the satisfaction of seeing people who have kept trying finally get a part that lets them show what they can do. I am rooting for them as actors as well as following their characters. Their performances deserve recognition on their own, and knowing something of the road behind them makes that recognition feel more personal.&lt;/p&gt;&lt;p&gt;That feeling has a real background. In their interview with The News Minute, both actors spoke about years of short-film work, patience and waiting for a breakthrough. Rishikanth also described his roughly fifteen-year journey from Thanjavur to leading roles in The Hollywood Reporter India. Those accounts help explain my sense of connection. A career built over years can look sudden from the audience’s side; I am glad Dorothy gives their work this visibility.&lt;/p&gt;&lt;p&gt;Keerthy Suresh plays Dorothy, whose presence introduces compassion into this harsh household. Her role is important to the way the film sets tenderness against the rules surrounding its characters. It also helps explain why the story needs more than violence to make its point. The possibility of care has to exist within the world that is trying to crush it.&lt;/p&gt;&lt;h2&gt;Vettai Muthukumar’s Whistle Veeraiyya&lt;/h2&gt;&lt;p&gt;Vettai Muthukumar was a real surprise for me as Whistle Veeraiyya. He is the performance I particularly wanted to mention after watching the film. The character’s attachment to authority and family pride gives the role a threatening weight, and Muthukumar makes that presence difficult to dismiss. I was struck by how strongly he came through in a film with so much else going on.&lt;/p&gt;&lt;p&gt;A role like this matters because the pressure on the central characters needs a human face. Whistle Veeraiyya represents a way of thinking that treats obedience as a duty and difference as a challenge to power. Muthukumar’s portrayal gave me a strong reason to pay attention to the supporting cast as well as the leads. It is one of the things I will remember about Dorothy.&lt;/p&gt;&lt;h2&gt;Ilaiyaraaja gives the emotion its music&lt;/h2&gt;&lt;p&gt;Ilaiyaraaja’s music is one of the things I loved about Dorothy. His score brings an emotional depth that sits beautifully alongside the performances. There is tenderness in it, but also the weight this harsh world needs. The music makes room for the characters’ vulnerability and gives their relationships another way to reach us.&lt;/p&gt;&lt;p&gt;What I appreciate most is how the score connects the film’s roughness with its compassion. The tension matters, but so do the moments when we are allowed to feel close to these people. Ilaiyaraaja gives those feelings a musical life of their own. His contribution is a major part of why Dorothy’s emotional pull stays with me after the film is over.&lt;/p&gt;&lt;p&gt;I would also love to experience Dorothy with Santhosh Narayanan’s music. That is an additional version I would be curious to watch, because I enjoy his musical connection with Karthik Subbaraj. It takes nothing away from my admiration for Ilaiyaraaja’s work here; I can love this score and still be excited by what another composer might bring to the same film.&lt;/p&gt;&lt;h2&gt;Why it is a 9/10 for me&lt;/h2&gt;&lt;p&gt;The film’s visual approach also gives it a distinct identity, with colour and monochrome separating different parts of the story. I will leave the larger narrative turns alone; this is a film I would rather discuss in detail after someone has watched it. My strongest response is already clear: the Iraivi connection, the central friendship, and Muthukumar’s surprising presence give me plenty to return to.&lt;/p&gt;&lt;p&gt;9/10. Dorothy reminded me why I keep looking forward to Karthik Subbaraj’s work. The leads make the central relationship matter, Vettai Muthukumar is a striking surprise, and Ilaiyaraaja’s music deepens the feeling throughout. Alongside its relevant subject and the connection I felt to Iraivi, those are the reasons I recommend it so enthusiastically.&lt;/p&gt;&lt;p class="specs-note"&gt;Background reading: &lt;a href="https://scroll.in/reel/1095926/review-karthik-subbarajs-dorothy-has-to-be-seen-to-be-believed"&gt;Scroll — Nandini Ramnath&lt;/a&gt; · &lt;a href="https://timesofindia.indiatimes.com/entertainment/tamil/movie-reviews/dorothy/etmoviereview/134479982.cms"&gt;The Times of India — M Suganth&lt;/a&gt; · &lt;a href="https://m.rediff.com/movies/review/dorothy-review-bold-evocative-confused/20260926.htm"&gt;Rediff — Sreeju Sudhakaran&lt;/a&gt; · &lt;a href="https://indianexpress.com/article/entertainment/movie-review/dorothy-movie-review-karthik-subbarajs-film-will-make-everyone-uncomfortable-10894208/"&gt;The Indian Express — Anandu Suresh&lt;/a&gt; · &lt;a href="https://www.thenewsminute.com/flix/dorothy-made-us-better-humans-interview-with-stars-sananth-and-rishikanth"&gt;The News Minute — interview with Sananth and Rishikanth&lt;/a&gt; · &lt;a href="https://www.hollywoodreporterindia.com/features/interviews/exclusive-rishikanth-on-dorothy-and-filming-climax-with-sananth-we-didnt-realise-the-magnitude-of-that-kiss"&gt;The Hollywood Reporter India — Rishikanth interview&lt;/a&gt;&lt;/p&gt;&lt;p class="specs-note"&gt;2026 · Tamil. &lt;a href="https://www.rottentomatoes.com/m/dorothy_2026"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.rottentomatoes.com/m/dorothy_2026"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Karthik Subbaraj does it again. The feeling of Iraivi, Vettai Muthukumar’s surprising Whistle Veeraiyya, and Ilaiyaraaja’s deeply moving music make Dorothy a film that stays with me. 9/10.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Building an internal developer platform without a big team</title>
      <link>https://deslypeter.com/writing/internal-developer-platform-small-team</link>
      <guid>https://deslypeter.com/writing/internal-developer-platform-small-team.html?lang=en</guid>
      <description>You don't need fifty engineers to build a platform. You need one good golden path.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;When people hear "internal developer platform", they picture something huge. A shiny portal, dozens of integrations, a team of twenty, a year-long roadmap. No wonder smaller companies think it isn't for them.&lt;/p&gt;
&lt;p&gt;I think that picture is wrong. A platform isn't a portal. It's whatever makes it easy for developers to get their code into production safely, without opening a ticket. That can start very small.&lt;/p&gt;
&lt;h2&gt;What a platform actually is (and isn't)&lt;/h2&gt;
&lt;p&gt;An internal developer platform is a set of tools, templates and automation that lets developers serve themselves. Typical building blocks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A way to create new services&lt;/strong&gt; from a template, with a repo, pipeline and basic config already wired up.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI/CD&lt;/strong&gt; that works the same way for every service.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Environments&lt;/strong&gt; that can be created and destroyed without asking anyone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observability&lt;/strong&gt; that is on by default: logs, metrics and traces without extra work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A catalog&lt;/strong&gt; that answers "who owns this service, and where does it run?"&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What a platform isn't: a tool you install. Buying Backstage or any other portal doesn't give you a platform, just like buying a gym membership doesn't make you fit.&lt;/p&gt;
&lt;h2&gt;The smallest platform that's still useful&lt;/h2&gt;
&lt;p&gt;If I had to start from zero with a small team, I'd begin with one thing: a &lt;strong&gt;golden path&lt;/strong&gt; for the most common type of service in the company.&lt;/p&gt;
&lt;p&gt;Say most of your services are small HTTP APIs in one language. The golden path could be:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A repository template with the code skeleton, a Dockerfile and a health endpoint.&lt;/li&gt;
&lt;li&gt;A shared pipeline that builds, tests, scans and deploys it.&lt;/li&gt;
&lt;li&gt;A Helm chart or Kustomize base with sane defaults for resources, probes and security.&lt;/li&gt;
&lt;li&gt;Dashboards and alerts that appear automatically when the service is deployed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That's it. No portal yet. A developer runs one command or clicks "use this template" on GitHub, and twenty minutes later their service is running in a test environment with monitoring.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A platform is successful when developers choose it because it's easier, not because they're forced to.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Build or buy: Backstage, Port and friends&lt;/h2&gt;
&lt;p&gt;Once the golden path works and you have more than one, a portal starts to make sense. It gives the templates a home and adds a catalog.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Backstage&lt;/strong&gt; is open source and very flexible. It's also real software you have to run, upgrade and extend, often with TypeScript.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Port, Cortex, OpsLevel&lt;/strong&gt; and others are SaaS. Faster to start, less control, monthly bill.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A simple wiki page plus GitHub templates&lt;/strong&gt; is a perfectly fine first version. Seriously.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My rule: don't introduce a portal until you have something worth putting in it.&lt;/p&gt;
&lt;h2&gt;How I'd measure if anyone uses it&lt;/h2&gt;
&lt;p&gt;A platform is a product, and products need feedback. A few numbers I'd track:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Time to first deploy&lt;/strong&gt; for a new service. Days becoming minutes is the headline win.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adoption&lt;/strong&gt;: how many services use the golden path versus custom setups.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tickets to the ops team&lt;/strong&gt; for routine requests. This should drop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Developer satisfaction&lt;/strong&gt;: a short survey every quarter. Ask what's annoying, not just what's good.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And talk to developers. Sit with someone while they create a new service. Every place they hesitate or ask a question is a bug in your platform.&lt;/p&gt;
&lt;h2&gt;What I'd tell someone starting today&lt;/h2&gt;
&lt;p&gt;Start with the most painful, most frequent task. Automate that properly. Make it so good that people ask for more. Then pick the next thing.&lt;/p&gt;
&lt;p&gt;Don't try to cover every edge case. Keep an escape hatch so teams with unusual needs can still do their own thing. A platform that blocks people becomes the new wall DevOps was supposed to tear down.&lt;/p&gt;
&lt;h2&gt;So, can a small team do it?&lt;/h2&gt;
&lt;p&gt;Yes. A small team can't build everything, but it doesn't need to. One golden path that really works beats a portal full of half-finished features.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: start with one road, pave it well, and let people's footsteps tell you where to build the next one.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>I set up Backstage. Here's what happened</title>
      <link>https://deslypeter.com/writing/backstage-hands-on</link>
      <guid>https://deslypeter.com/writing/backstage-hands-on.html?lang=en</guid>
      <description>A software catalog, a template and docs in one place. And the parts nobody warns you about.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Backstage comes up in almost every conversation about platform engineering. Spotify built it, open-sourced it, donated it to the CNCF, and now it's the default answer to "how do we build a developer portal?"&lt;/p&gt;
&lt;p&gt;I wanted to know what it's really like to get running, beyond the conference demos. So I set it up from scratch with a realistic goal: a service catalog, one software template, and documentation in the same place.&lt;/p&gt;
&lt;h2&gt;Why I tried it&lt;/h2&gt;
&lt;p&gt;The problem Backstage solves is very real. In most companies, nobody can answer simple questions quickly. Who owns this service? Where is its documentation? Which pipeline deploys it? What does it depend on?&lt;/p&gt;
&lt;p&gt;The answers are scattered across wikis, spreadsheets, Slack threads and people's memory. Backstage promises one place to find all of it.&lt;/p&gt;
&lt;h2&gt;Getting the catalog running&lt;/h2&gt;
&lt;p&gt;Getting a local instance up is easy. You need Node.js and Yarn, then:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;npx @backstage/create-app@latest
cd my-backstage-app
yarn start
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A few minutes later there's a portal on &lt;code&gt;localhost:3000&lt;/code&gt;. The first surprise: what you've created isn't a product you configure. It's an application you own. You'll be maintaining a TypeScript codebase from now on.&lt;/p&gt;
&lt;p&gt;The catalog works by reading a small YAML file from each repository:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: shop-api
  description: Handles orders and payments
  annotations:
    github.com/project-slug: my-org/shop-api
spec:
  type: service
  lifecycle: production
  owner: team-checkout
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Add this &lt;code&gt;catalog-info.yaml&lt;/code&gt; to each repo, point Backstage at your GitHub organisation, and services start appearing. This part felt genuinely good. Seeing every service, its owner and its links in one list is already useful.&lt;/p&gt;
&lt;h2&gt;My first software template&lt;/h2&gt;
&lt;p&gt;Templates are where Backstage becomes a platform instead of a directory. A template is a form plus a set of steps: ask the developer a few questions, copy a skeleton, fill in the values, create a repository, register it in the catalog.&lt;/p&gt;
&lt;p&gt;The template YAML takes some getting used to, but the result is great: a developer fills in a name and a team, clicks "Create", and gets a new repo with a pipeline and a catalog entry. That's the golden path in action.&lt;/p&gt;
&lt;h2&gt;The plugins worth installing&lt;/h2&gt;
&lt;p&gt;The plugin ecosystem is large. The ones I'd add first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;: shows the pods and deployments for each service.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt; (or your CI): recent pipeline runs right on the service page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TechDocs&lt;/strong&gt;: Markdown docs from the repo, rendered inside Backstage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search&lt;/strong&gt;: makes the whole thing usable once you have more than a handful of services.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Backstage is less like installing an app and more like adopting a pet. It's lovely, but it needs feeding every week.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What annoyed me&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;It's a framework, not a product.&lt;/strong&gt; Anything beyond the basics means writing TypeScript and React. If your team has no frontend skills, plan for that.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Upgrades take effort.&lt;/strong&gt; Backstage moves fast. Keeping up with releases, and the migration to its newer backend and frontend systems, is ongoing work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The catalog drifts.&lt;/strong&gt; Owners change, services get retired, YAML files go stale. Without someone caring about data quality, the catalog slowly becomes the next out-of-date wiki.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Authentication and permissions&lt;/strong&gt; need real configuration before you can roll it out beyond a demo.&lt;/p&gt;
&lt;h2&gt;Would I recommend it?&lt;/h2&gt;
&lt;p&gt;For a company with many teams and dozens of services, yes. Once it's set up, it's a strong foundation, and nothing else open source comes close.&lt;/p&gt;
&lt;p&gt;For a small team with ten services, probably not yet. A good README template and a list of services in your wiki might give you 80% of the value for 5% of the effort. And if you want a portal without running one, look at the SaaS options.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: Backstage is a great platform for building your portal, not a portal you just switch on. Go in knowing that, and it's worth it.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>A fresh environment for every pull request</title>
      <link>https://deslypeter.com/writing/preview-environments-every-pr</link>
      <guid>https://deslypeter.com/writing/preview-environments-every-pr.html?lang=en</guid>
      <description>Shared staging slows everyone down. Preview environments fix that, if you control the cost.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Almost every team I've worked with has had a "staging" environment. And almost every team has had the same conversation in Slack: "Who deployed to staging? My changes are gone." "Can you not deploy for an hour, I'm testing something?" "Staging is broken again, does anyone know why?"&lt;/p&gt;
&lt;p&gt;One shared environment for many developers creates a bottleneck. Preview environments eliminate that bottleneck.&lt;/p&gt;
&lt;h2&gt;Why shared staging hurts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Changes collide.&lt;/strong&gt; Two feature branches deployed to the same place overwrite each other.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It's always slightly broken.&lt;/strong&gt; Someone's half-finished change is always there.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feedback is slow.&lt;/strong&gt; Reviewers, testers and product managers can't see a change until it's merged.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nobody trusts it.&lt;/strong&gt; And an environment nobody trusts is an environment nobody tests in properly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How preview environments work&lt;/h2&gt;
&lt;p&gt;The idea is simple. When a pull request is opened, the pipeline creates a temporary copy of the application just for that branch, with its own URL like &lt;code&gt;pr-142.preview.example.com&lt;/code&gt;. When the pull request is merged or closed, the environment is deleted.&lt;/p&gt;
&lt;p&gt;On Kubernetes, there are a few common ways to build this:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A namespace per pull request.&lt;/strong&gt; The simplest approach. The pipeline creates a namespace, deploys the Helm chart with the branch's image tag, and sets up an ingress or HTTPRoute for the preview hostname.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Argo CD ApplicationSets with the pull request generator.&lt;/strong&gt; Argo CD watches your repository and automatically creates an Application for every open pull request, and removes it when the PR closes. No custom scripts.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: shop-previews
spec:
  generators:
  - pullRequest:
      github:
        owner: my-org
        repo: shop
      requeueAfterSeconds: 120
  template:
    metadata:
      name: 'shop-pr-{{number}}'
    spec:
      project: previews
      source:
        repoURL: https://github.com/my-org/shop
        targetRevision: '{{head_sha}}'
        path: deploy/chart
        helm:
          parameters:
          - name: image.tag
            value: '{{head_sha}}'
          - name: ingress.host
            value: 'pr-{{number}}.preview.example.com'
      destination:
        server: https://kubernetes.default.svc
        namespace: 'shop-pr-{{number}}'
      syncPolicy:
        automated: { prune: true }
        syncOptions: [CreateNamespace=true]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Virtual clusters (vCluster).&lt;/strong&gt; When teams need cluster-level resources like CRDs, a virtual cluster per pull request gives full isolation without paying for a real cluster each time.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The best review comment is "I clicked through it and it works", and preview environments make that possible before merging.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Data and secrets: the hard part&lt;/h2&gt;
&lt;p&gt;Deploying the app is the easy bit. The tricky questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Databases.&lt;/strong&gt; Options range from a small database container seeded with test data, to a shared database with a separate schema per PR, to snapshots of an anonymised dataset. Never copy production data with personal information into previews.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;External services.&lt;/strong&gt; Payment providers, email, third-party APIs. Use sandbox accounts or mocks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secrets.&lt;/strong&gt; Previews should get their own limited credentials, ideally through External Secrets or your secret manager, not copies of staging secrets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wildcard DNS and TLS.&lt;/strong&gt; A wildcard record like &lt;code&gt;*.preview.example.com&lt;/code&gt; and a wildcard certificate (cert-manager handles this) make new hostnames work instantly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Cleaning up so the bill stays small&lt;/h2&gt;
&lt;p&gt;Preview environments can quietly become expensive. Fifty open pull requests means fifty copies of your app.&lt;/p&gt;
&lt;p&gt;What helps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Delete on close, always.&lt;/strong&gt; ApplicationSets do this automatically. With scripts, make sure the cleanup job runs even when the pipeline fails.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time-to-live.&lt;/strong&gt; Delete previews that haven't been updated for a few days, even if the PR is still open.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Small resources.&lt;/strong&gt; Previews don't need production sizing. One replica, low requests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spot or preemptible nodes&lt;/strong&gt; for the preview node pool.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scale to zero&lt;/strong&gt; at night with a simple scheduled job, or with tools that wake environments up on the first request.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, is it worth it?&lt;/h2&gt;
&lt;p&gt;For teams with more than a few developers working in parallel, yes. Reviews get better, testing happens earlier, and the "who broke staging" messages disappear. Start with a namespace per PR, add data and cleanup properly, and grow from there.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: give every change its own little world. It's cheaper than the time your team loses waiting for staging.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Kubernetes as a control plane for everything: Crossplane v2</title>
      <link>https://deslypeter.com/writing/crossplane-v2-control-plane</link>
      <guid>https://deslypeter.com/writing/crossplane-v2-control-plane.html?lang=en</guid>
      <description>What if developers could order a database the same way they deploy an app?</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Here's a common situation. A developer needs a database for a new service. They open a ticket. Someone on the ops team writes some Terraform, opens a pull request, waits for review, applies it, and sends back the connection details. Two days later, the developer can finally start.&lt;/p&gt;
&lt;p&gt;Crossplane asks a different question: what if the developer could just write a small YAML file, the same way they deploy their app, and get a properly configured database a few minutes later?&lt;/p&gt;
&lt;h2&gt;The idea in one paragraph&lt;/h2&gt;
&lt;p&gt;Kubernetes is very good at one thing: you describe what you want, and controllers keep working until reality matches. Crossplane extends that idea beyond containers. It adds controllers that create and manage cloud resources: databases, buckets, queues, networks, DNS records. You write YAML, Crossplane talks to AWS, Azure or Google Cloud, and keeps the resource in the state you described.&lt;/p&gt;
&lt;p&gt;The really interesting part isn't managing raw cloud resources. It's &lt;strong&gt;building your own APIs&lt;/strong&gt; on top of them.&lt;/p&gt;
&lt;h2&gt;Compositions: your own platform API&lt;/h2&gt;
&lt;p&gt;With Crossplane, the platform team defines a simple, company-specific resource, for example &lt;code&gt;Database&lt;/code&gt;, with only the fields developers should care about:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: platform.example.com/v1alpha1
kind: Database
metadata:
  name: orders-db
  namespace: shop
spec:
  engine: postgres
  size: small
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Behind the scenes, a &lt;strong&gt;Composition&lt;/strong&gt; turns that into everything the company requires: an RDS instance with the right version, encryption, backups, a subnet group, security group rules, monitoring, and a Kubernetes secret with the connection details. The developer sees five lines. The platform team controls the other two hundred.&lt;/p&gt;
&lt;p&gt;The schema of that custom resource is defined in a &lt;strong&gt;CompositeResourceDefinition (XRD)&lt;/strong&gt;. That's where you set what's allowed: maybe only &lt;code&gt;small&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt; and &lt;code&gt;large&lt;/code&gt;, maybe only Postgres.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Crossplane lets the platform team turn "how we do databases here" into an API instead of a wiki page.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What changed in v2&lt;/h2&gt;
&lt;p&gt;Crossplane v2 simplified the model in a few important ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Namespaced resources by default.&lt;/strong&gt; In v1, you usually needed a cluster-scoped composite resource plus a namespaced "claim". v2 lets composite resources live directly in a team's namespace, so the claim layer mostly goes away.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compose anything.&lt;/strong&gt; Compositions can now include any Kubernetes resource, not just Crossplane-managed cloud resources. You can bundle a Deployment, a Service and a cloud database into one higher-level "App" API.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Composition functions are the standard way&lt;/strong&gt; to write the logic, in YAML templates, Go, Python or KCL, instead of the old patch-and-transform style.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you tried Crossplane a few years ago and found it heavy, v2 is worth a second look.&lt;/p&gt;
&lt;h2&gt;Crossplane or Terraform?&lt;/h2&gt;
&lt;p&gt;This question always comes up, and the honest answer is: they're good at different things.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Terraform (or OpenTofu)&lt;/strong&gt; is great for infrastructure that the platform team owns and changes deliberately: networks, clusters, accounts. It runs when you run it, shows a plan, and stops.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Crossplane&lt;/strong&gt; is great for self-service resources that many teams need, many times: databases, buckets, queues per service. It runs continuously, fixes drift automatically, and fits into GitOps with Argo CD or Flux.&lt;/p&gt;
&lt;p&gt;Many teams use both. Terraform builds the foundation, including the cluster that runs Crossplane. Crossplane offers the self-service layer on top.&lt;/p&gt;
&lt;h2&gt;Building a "give me a database" API&lt;/h2&gt;
&lt;p&gt;If I were trying Crossplane for the first time, I'd keep the scope tiny:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install Crossplane with Helm into a test cluster.&lt;/li&gt;
&lt;li&gt;Install the provider for your cloud, and give it credentials through workload identity rather than static keys.&lt;/li&gt;
&lt;li&gt;Write an XRD for a &lt;code&gt;Database&lt;/code&gt; with two fields.&lt;/li&gt;
&lt;li&gt;Write a Composition that creates a small managed database and a connection secret.&lt;/li&gt;
&lt;li&gt;Create one &lt;code&gt;Database&lt;/code&gt; in a namespace and watch it appear in your cloud console.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Then show it to a developer and ask whether it's useful. That conversation is more valuable than any architecture diagram.&lt;/p&gt;
&lt;h2&gt;What to watch out for&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Debugging&lt;/strong&gt; is harder than reading a Terraform plan. Learn &lt;code&gt;kubectl describe&lt;/code&gt; and Crossplane's trace tooling early.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deletion is real.&lt;/strong&gt; Deleting the YAML deletes the database. Use deletion policies and protect production resources.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Provider size.&lt;/strong&gt; Some providers install hundreds of CRDs. Use the smaller "family" providers for only the services you need.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;My take: Crossplane shines when you treat it as a way to build your own platform API, not just another way to write infrastructure.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>AI agents in my pipeline: what actually works</title>
      <link>https://deslypeter.com/writing/ai-agents-in-my-pipeline</link>
      <guid>https://deslypeter.com/writing/ai-agents-in-my-pipeline.html?lang=en</guid>
      <description>Agents that fix builds and open pull requests are real now. Here's how I let them in, safely.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;In &lt;a href="https://deslypeter.com/writing/will-ai-take-my-devops-job.html"&gt;Will AI take my DevOps job?&lt;/a&gt; I wrote that AI is like a very fast junior engineer who never gets tired and never quite knows when it's wrong. I also said a new part of my job would be building guardrails for AI agents.&lt;/p&gt;
&lt;p&gt;This post is the practical follow-up. Not "will AI change DevOps", but: which tasks can you hand to an agent today, and how do you set it up so a mistake stays small?&lt;/p&gt;
&lt;h2&gt;What changed&lt;/h2&gt;
&lt;p&gt;A year or two ago, AI in DevOps mostly meant autocomplete in the editor, or pasting an error into a chat window. Useful, but you were always in the driver's seat.&lt;/p&gt;
&lt;p&gt;Agents are different. Tools like Claude Code, GitHub Copilot's coding agent, Cursor's background agents and others can take a task, read the repository, run commands, look at the results, try again, and open a pull request. They work in a loop, not a single answer.&lt;/p&gt;
&lt;p&gt;That makes them much more useful, and much more important to control.&lt;/p&gt;
&lt;h2&gt;Tasks I'm comfortable handing to agents&lt;/h2&gt;
&lt;p&gt;The pattern is: well-defined, easy to verify, and reviewed before it reaches production.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fixing a failing build.&lt;/strong&gt; "The pipeline fails on this test, find out why and propose a fix." The agent reads the logs, reproduces the failure, and suggests a change. A human reviews the pull request.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dependency upgrades that need code changes.&lt;/strong&gt; Renovate opens the upgrade, the tests fail because an API changed, the agent updates the call sites.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Boring infrastructure changes.&lt;/strong&gt; Adding a new environment variable across services, updating resource requests in Helm values, renaming a label everywhere.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Writing first drafts.&lt;/strong&gt; A new pipeline, a Dockerfile, a Terraform module skeleton, a runbook from an incident timeline.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Explaining and documenting.&lt;/strong&gt; "What does this old script do?" turned into a README.&lt;/p&gt;
&lt;h2&gt;The permissions I give them (and don't)&lt;/h2&gt;
&lt;p&gt;This is the part that matters most. My rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agents work on branches, never on main.&lt;/strong&gt; Every change goes through a pull request and normal review.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No production credentials. Ever.&lt;/strong&gt; Agents run in CI or a sandbox with access to the repository and test environments only.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Short-lived, narrow tokens.&lt;/strong&gt; A GitHub token that can push to branches and open pull requests, not one that can change repository settings or approve its own PRs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Branch protection does the enforcement.&lt;/strong&gt; Required reviews and required checks apply to agents exactly like they apply to people.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Network limits where possible.&lt;/strong&gt; An agent fixing a unit test doesn't need to reach the whole internet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Everything is logged.&lt;/strong&gt; What the agent ran, what it changed, who started it.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Treat an AI agent like a new contractor on their first day: helpful, eager, and with exactly the access the task needs, nothing more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Where they still fail&lt;/h2&gt;
&lt;p&gt;Agents are impressive, but I see the same failure patterns again and again:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Making the test pass instead of fixing the bug.&lt;/strong&gt; Sometimes the "fix" is changing the test's expectation. Read the diff carefully.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Missing context.&lt;/strong&gt; The agent doesn't know that setting exists because of an outage three years ago. It will happily "clean it up".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Overly broad permissions&lt;/strong&gt; in generated IAM policies or Kubernetes RBAC. &lt;code&gt;*&lt;/code&gt; is always tempting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompt injection.&lt;/strong&gt; An agent reading issues, logs or web pages can be tricked by text written to manipulate it. Never give an agent that reads untrusted input the power to do something irreversible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Confidence.&lt;/strong&gt; It always sounds sure. That's not the same as being right.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;My setup, step by step&lt;/h2&gt;
&lt;p&gt;If you want to try this on your team, here's a safe starting point:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pick one repository with good test coverage.&lt;/li&gt;
&lt;li&gt;Create a dedicated bot identity with branch-only push rights.&lt;/li&gt;
&lt;li&gt;Run the agent in CI (or a container) triggered by a label or comment, for example adding &lt;code&gt;agent:fix&lt;/code&gt; to a failing PR.&lt;/li&gt;
&lt;li&gt;Give it a clear instructions file in the repo: how to build, how to test, what not to touch.&lt;/li&gt;
&lt;li&gt;Require human review for every pull request it opens.&lt;/li&gt;
&lt;li&gt;Track results for a month: how many PRs merged, how many needed rework, how many were wrong.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After a month you'll know where it actually saves time on your team, which beats any vendor benchmark.&lt;/p&gt;
&lt;h2&gt;So, is it worth it?&lt;/h2&gt;
&lt;p&gt;Yes, for the right tasks. Agents remove a lot of small, annoying work, and they're getting better quickly. But the value depends entirely on the guardrails around them. Good tests, good reviews and narrow permissions turn an agent from a risk into a very productive teammate.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: let agents propose, let pipelines check, and let humans decide. Same rule as before, now with real tools behind it.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Can AI help at 3 a.m.? AI in incident response</title>
      <link>https://deslypeter.com/writing/ai-in-incident-response</link>
      <guid>https://deslypeter.com/writing/ai-in-incident-response.html?lang=en</guid>
      <description>AI can read logs faster than me. But who decides whether to roll back?</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;In &lt;a href="https://deslypeter.com/writing/will-ai-take-my-devops-job.html"&gt;Will AI take my DevOps job?&lt;/a&gt; I said two things about incidents. AI is very good at reading logs. And humans still have to own the decision. This post goes deeper into what that looks like in practice, step by step through an incident.&lt;/p&gt;
&lt;h2&gt;A typical incident, with AI in the loop&lt;/h2&gt;
&lt;p&gt;Let's walk through a realistic scenario. Error rates on the checkout service jump at 03:12. The on-call engineer gets paged.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Minute 0 to 5: understanding what's happening.&lt;/strong&gt; Without AI, this means opening dashboards, checking recent deployments, grepping logs. With an AI assistant connected to observability tools (through MCP or a vendor integration), you can ask: "What changed in the checkout service in the last hour, and what do the error logs say?"&lt;/p&gt;
&lt;p&gt;A good assistant will come back with something like: a deployment at 03:05, a new error appearing at 03:11 (connection timeouts to the payments database), and a spike in database connection count. In a few seconds, it did what used to take ten minutes of clicking.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Minute 5 to 15: forming a hypothesis.&lt;/strong&gt; The AI suggests the new release changed the connection pool settings. It points to the diff. That's useful, and it might be right.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Minute 15: the decision.&lt;/strong&gt; Roll back the release, or increase the database connection limit? Wake up the database team? Tell customers? This is where the human takes over. The AI can list options and their risks. It can't take responsibility for choosing.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI shortens the time to understand an incident. It doesn't shorten the time it takes to be accountable for the fix.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What AI is genuinely good at during incidents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Summarising huge amounts of data.&lt;/strong&gt; Thousands of log lines, dozens of alerts, multiple dashboards, condensed into "here's what's unusual".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correlating with changes.&lt;/strong&gt; Linking errors to recent deployments, config changes or feature flag flips.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Searching past incidents.&lt;/strong&gt; "Have we seen this error before?" across old postmortems and tickets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keeping the timeline.&lt;/strong&gt; Recording what happened, who did what, and when, while people focus on fixing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drafting status updates.&lt;/strong&gt; A clear, calm customer-facing message, ready for a human to approve.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What it gets wrong&lt;/h2&gt;
&lt;p&gt;I've seen AI make the same kinds of mistakes in incident scenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Blaming the most recent change&lt;/strong&gt; even when it's a coincidence. Correlation is not cause.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Missing the real cause outside its view.&lt;/strong&gt; If it can only see application logs, it won't notice the cloud provider's network issue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hallucinating details&lt;/strong&gt;: a config value or a metric that doesn't exist.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sounding certain&lt;/strong&gt; when the evidence is thin.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the rule for on-call engineers: treat AI conclusions as hypotheses to verify, not answers to act on. Ask it to show the evidence: the log line, the metric, the diff.&lt;/p&gt;
&lt;h2&gt;Checking AI's conclusions&lt;/h2&gt;
&lt;p&gt;A simple routine that works well:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ask the AI what it thinks happened.&lt;/li&gt;
&lt;li&gt;Ask it for the specific evidence behind each claim.&lt;/li&gt;
&lt;li&gt;Check that evidence yourself in the original tool.&lt;/li&gt;
&lt;li&gt;Ask it what else could explain the same symptoms.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That fourth question is underrated. It helps you avoid locking onto the first theory, which is a classic human mistake during incidents too.&lt;/p&gt;
&lt;h2&gt;Writing the postmortem together&lt;/h2&gt;
&lt;p&gt;After the incident, AI is a big help with the part nobody enjoys: writing it up.&lt;/p&gt;
&lt;p&gt;Give it the incident channel, the timeline and the relevant graphs, and ask for a first draft of a blameless postmortem: summary, impact, timeline, root cause, contributing factors, action items. Then edit it properly. The AI gives you structure, but the insights about why the system allowed this to happen need human thinking.&lt;/p&gt;
&lt;h2&gt;Tools worth a look&lt;/h2&gt;
&lt;p&gt;Many incident and observability platforms now include AI features: incident.io, Rootly, PagerDuty, Datadog, Grafana, New Relic and others. There's also a new wave of "AI SRE" products that investigate alerts on their own. Try them on past incidents first: replay an old incident and see whether the AI would have found the cause.&lt;/p&gt;
&lt;h2&gt;So, can AI help at 3 a.m.?&lt;/h2&gt;
&lt;p&gt;Yes, a lot. It makes the first fifteen minutes of an incident much faster and less stressful. But the person holding the pager still makes the calls, and that's how it should be.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: let AI do the reading, and keep the deciding for yourself. Especially at 3 a.m.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>From a container to Kubernetes: serving models for real</title>
      <link>https://deslypeter.com/writing/serving-models-on-kubernetes</link>
      <guid>https://deslypeter.com/writing/serving-models-on-kubernetes.html?lang=en</guid>
      <description>Next step in my MLOps journey: running models on Kubernetes, with GPUs and autoscaling.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;In &lt;a href="https://deslypeter.com/writing/ai-mlops-from-the-ground-up.html"&gt;AI &amp;amp; MLOps, from the ground up&lt;/a&gt;, I described my 24-week plan: a notebook, then a tested package, a tracked pipeline, an API with FastAPI, a container, and eventually a deployment in the cloud with monitoring.&lt;/p&gt;
&lt;p&gt;A container is a great milestone. But a single container on a laptop isn't how models run in production. This post looks at the next step: what changes when you move model serving onto Kubernetes, and what's different when the model is a large language model that needs GPUs.&lt;/p&gt;
&lt;h2&gt;Where my project stands&lt;/h2&gt;
&lt;p&gt;The plan's core project is a classic machine learning model: scikit-learn, served by FastAPI, packaged with Docker. For that kind of model, Kubernetes deployment is close to any other web service. A Deployment, a Service, health checks, resource requests, and a HorizontalPodAutoscaler.&lt;/p&gt;
&lt;p&gt;LLMs are a different world. The model files are gigabytes, they need GPUs, they load slowly, and one request can take seconds. That's where the interesting DevOps problems are.&lt;/p&gt;
&lt;h2&gt;Why Docker alone isn't enough anymore&lt;/h2&gt;
&lt;p&gt;A single container can't:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scale&lt;/strong&gt; with traffic, up or down.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restart&lt;/strong&gt; itself on another machine if the machine dies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Roll out&lt;/strong&gt; a new model version gradually and roll back if quality drops.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Share&lt;/strong&gt; expensive GPU machines between workloads.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kubernetes handles all of that. The model becomes just another workload, using the same pipelines, monitoring and security as everything else.&lt;/p&gt;
&lt;h2&gt;vLLM, KServe and the other options&lt;/h2&gt;
&lt;p&gt;The serving stack for LLMs on Kubernetes usually has two layers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The inference engine&lt;/strong&gt; actually runs the model:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;vLLM&lt;/strong&gt; is the most popular open-source engine. It's fast thanks to clever memory management and batching, and exposes an OpenAI-compatible API.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hugging Face TGI&lt;/strong&gt;, &lt;strong&gt;SGLang&lt;/strong&gt; and &lt;strong&gt;NVIDIA Triton / TensorRT-LLM&lt;/strong&gt; are alternatives with different strengths.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ollama&lt;/strong&gt; is great on a laptop and for small setups, less so for heavy production traffic.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The serving platform&lt;/strong&gt; manages the engine on Kubernetes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;KServe&lt;/strong&gt; gives you an &lt;code&gt;InferenceService&lt;/code&gt; resource: you describe the model and runtime, and it handles deployment, scaling and routing, including scale to zero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;llm-d&lt;/strong&gt; is a newer project focused on distributed LLM inference on Kubernetes, with smart routing that sends requests to the replica most likely to have the right data cached.&lt;/li&gt;
&lt;li&gt;Or just a plain &lt;strong&gt;Deployment&lt;/strong&gt; running vLLM, which is a perfectly fine way to start.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A minimal vLLM deployment looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: llm
spec:
  replicas: 1
  selector:
    matchLabels: { app: llm }
  template:
    metadata:
      labels: { app: llm }
    spec:
      containers:
      - name: vllm
        image: vllm/vllm-openai:latest   # pin a specific version in real use
        args: ["--model", "Qwen/Qwen2.5-1.5B-Instruct"]
        ports:
        - containerPort: 8000
        resources:
          limits:
            nvidia.com/gpu: 1
        readinessProbe:
          httpGet: { path: /health, port: 8000 }
          initialDelaySeconds: 60
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Serving a model is the easy demo. Serving it reliably, cheaply and at scale is the actual MLOps job.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;GPUs: scheduling and cost&lt;/h2&gt;
&lt;p&gt;GPUs change how you run Kubernetes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Device plugins / GPU Operator.&lt;/strong&gt; The NVIDIA GPU Operator installs drivers and the device plugin so pods can request &lt;code&gt;nvidia.com/gpu&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dedicated node pools&lt;/strong&gt; with taints, so only GPU workloads land on expensive GPU nodes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sharing GPUs&lt;/strong&gt; with MIG (splitting one GPU into isolated slices) or time-slicing for smaller models.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dynamic Resource Allocation (DRA)&lt;/strong&gt;, now stable in Kubernetes, gives a more flexible way to request specific kinds of GPUs and devices.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And cost: an idle GPU node can cost more per day than an entire small web application per month. Monitoring GPU utilisation (the DCGM exporter for Prometheus) is not optional.&lt;/p&gt;
&lt;h2&gt;Scaling on demand&lt;/h2&gt;
&lt;p&gt;CPU-based autoscaling doesn't work well for LLMs. A GPU can be fully busy while the CPU is idle. Better signals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Queue length or pending requests&lt;/strong&gt; in the inference engine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tokens per second&lt;/strong&gt; or time to first token.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KEDA&lt;/strong&gt; can scale on these metrics from Prometheus.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also plan for &lt;strong&gt;slow starts&lt;/strong&gt;. Downloading and loading a model can take minutes. Caching model files on a persistent volume or node-local storage, and keeping at least one warm replica, makes scaling far less painful.&lt;/p&gt;
&lt;h2&gt;What's next in the series&lt;/h2&gt;
&lt;p&gt;Next on my list: monitoring the model in production, including the quality of its answers, not just its uptime. That's where tools like Prometheus, Grafana and Evidently come in.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: Kubernetes doesn't make AI simple, but it makes AI workloads look like the rest of your infrastructure. And that's half the battle.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>I asked AI to write my Terraform. A reality check</title>
      <link>https://deslypeter.com/writing/ai-wrote-my-terraform-reality-check</link>
      <guid>https://deslypeter.com/writing/ai-wrote-my-terraform-reality-check.html?lang=en</guid>
      <description>Looks right, runs fine, and opens your database to the world. What linters catch that AI doesn't.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;In &lt;a href="https://deslypeter.com/writing/will-ai-take-my-devops-job.html"&gt;Will AI take my DevOps job?&lt;/a&gt; I warned that AI writes configuration that looks perfect and is subtly broken. A permission that's far too open. A setting that works in testing and falls over under real traffic.&lt;/p&gt;
&lt;p&gt;It's easy to say. This post shows what it actually looks like and the workflow I use to stop it from getting into production.&lt;/p&gt;
&lt;h2&gt;The prompt&lt;/h2&gt;
&lt;p&gt;Here's the kind of request I'd give an AI assistant on an average day:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;"Write Terraform for an AWS PostgreSQL database for a small web app, plus a security group so the app can connect."&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Short, realistic, and missing a lot of context. Which is exactly how most of us write prompts.&lt;/p&gt;
&lt;h2&gt;What came back&lt;/h2&gt;
&lt;p&gt;The answer is usually a clean, well-formatted block of Terraform. It creates an RDS instance, a security group, and some variables. It probably works on the first try. But it often includes several of these issues:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-hcl"&gt;resource "aws_security_group" "db" {
  name = "db-sg"

  ingress {
    from_port   = 5432
    to_port     = 5432
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]   # anyone on the internet
  }
}

resource "aws_db_instance" "main" {
  engine              = "postgres"
  instance_class      = "db.t3.micro"
  allocated_storage   = 20
  username            = "admin"
  password            = "ChangeMe123!"   # hardcoded secret
  publicly_accessible = true
  skip_final_snapshot = true
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nothing here is a syntax error. &lt;code&gt;terraform plan&lt;/code&gt; is happy. And yet:&lt;/p&gt;
&lt;h2&gt;The mistakes, one by one&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;The database is reachable from the whole internet.&lt;/strong&gt; &lt;code&gt;0.0.0.0/0&lt;/code&gt; on port 5432, plus &lt;code&gt;publicly_accessible = true&lt;/code&gt;. The app needed access, not the world.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A hardcoded password&lt;/strong&gt; that will end up in Git and in the Terraform state.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No encryption at rest&lt;/strong&gt; (&lt;code&gt;storage_encrypted&lt;/code&gt; is missing).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No backups to speak of.&lt;/strong&gt; No retention period set, and &lt;code&gt;skip_final_snapshot = true&lt;/code&gt; means deleting the resource deletes your data with no snapshot.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No deletion protection.&lt;/strong&gt; One wrong &lt;code&gt;terraform destroy&lt;/code&gt; and it's gone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No version pinned&lt;/strong&gt; for the engine or the provider, so the next run might behave differently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No tags&lt;/strong&gt;, so cost tracking and ownership are unclear.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To be fair, if you ask the AI "is this secure?", it will usually find most of these problems. But that's the point: it gave you the insecure version first, and confidently.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI writes Terraform the way a tutorial does: optimised to work on the first try, not to survive an audit.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What the linters catch&lt;/h2&gt;
&lt;p&gt;This is where boring tools earn their place. I ran this kind of code through:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;terraform validate&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;terraform fmt&lt;/code&gt;&lt;/strong&gt;: syntax and formatting. Necessary, but they catch none of the security problems above.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tflint&lt;/strong&gt; with the AWS ruleset: invalid instance types, deprecated arguments, missing best practices.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Checkov&lt;/strong&gt; or &lt;strong&gt;Trivy&lt;/strong&gt; (config scanning): these catch the important ones. Open ingress, public database, missing encryption, missing backups, hardcoded secrets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secret scanning&lt;/strong&gt; (gitleaks, GitHub push protection): catches the password before it's even pushed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What they don't catch is whether the design fits your company's needs. Should this be Aurora instead? Will &lt;code&gt;db.t3.micro&lt;/code&gt; handle real traffic? Does it belong in this VPC? That still needs a human who knows the context.&lt;/p&gt;
&lt;h2&gt;My workflow: generate, lint, test, review&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Generate with context.&lt;/strong&gt; Give the AI your conventions: "use our module X, never public, always encrypted, secrets from AWS Secrets Manager, tag with owner and cost-center." A rules file in the repo helps a lot here, so you don't have to repeat it every time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lint automatically.&lt;/strong&gt; Pre-commit hooks for fmt, validate, tflint and Checkov, and the same checks in CI as required status checks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plan in CI&lt;/strong&gt; and read the plan, not just the code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test where it matters&lt;/strong&gt;: &lt;code&gt;terraform test&lt;/code&gt; or a policy test for the rules that must never be broken.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Human review&lt;/strong&gt; focused on design and intent, since the tools already checked the patterns.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Even better: point the AI at your existing, reviewed modules instead of letting it write raw resources. "Use our &lt;code&gt;rds-postgres&lt;/code&gt; module" produces far safer results than "write me a database".&lt;/p&gt;
&lt;h2&gt;So, should you use AI for Terraform?&lt;/h2&gt;
&lt;p&gt;Yes. It's a big time saver for boilerplate, refactoring and explaining unfamiliar code. Just never treat its output as finished. Put it through the same pipeline you'd put a new colleague's first pull request through, because that's roughly what it is.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: AI is a great first draft writer for infrastructure. Your linters, your policies and your review are the editors, and in infrastructure, the editor matters most.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Watching an AI app in production</title>
      <link>https://deslypeter.com/writing/watching-an-ai-app-in-production</link>
      <guid>https://deslypeter.com/writing/watching-an-ai-app-in-production.html?lang=en</guid>
      <description>Next in my MLOps journey: tracing prompts, tokens, cost and quality.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;My &lt;a href="https://deslypeter.com/writing/ai-mlops-from-the-ground-up.html"&gt;MLOps learning plan&lt;/a&gt; ends with monitoring dashboards, using Prometheus, Grafana and Evidently. When I wrote that plan, I thought of monitoring the way I do in DevOps: is it up, is it fast, is it throwing errors?&lt;/p&gt;
&lt;p&gt;The more I learn, the clearer it gets that AI systems need a second layer. A model can be up, fast and error-free, and still give terrible answers. This post is about watching that second layer.&lt;/p&gt;
&lt;h2&gt;What to watch in an AI system&lt;/h2&gt;
&lt;p&gt;I think of it in three levels.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. The usual service health.&lt;/strong&gt; Everything we already monitor: request rate, error rate, latency, resource use. An AI service is still a service.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Model-specific operations.&lt;/strong&gt; For LLM applications especially:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tokens&lt;/strong&gt; in and out per request&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost&lt;/strong&gt; per request, per user, per feature&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time to first token&lt;/strong&gt; and total response time&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Which model and which prompt version&lt;/strong&gt; handled each request&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool calls&lt;/strong&gt; made by agents, and whether they succeeded&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. Quality.&lt;/strong&gt; The hard one:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Are the answers correct and helpful?&lt;/li&gt;
&lt;li&gt;For classic ML models: is the input data drifting away from what the model was trained on? Are predictions shifting?&lt;/li&gt;
&lt;li&gt;For LLMs: hallucinations, refusals, off-topic answers, unsafe content.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;For normal software, "no errors" means it's working. For AI, "no errors" just means it's confidently doing something.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Tracing an LLM request&lt;/h2&gt;
&lt;p&gt;A single request to an AI feature can involve many steps: retrieving documents, building a prompt, calling a model, calling tools, calling the model again. When the answer is bad, you need to see every step.&lt;/p&gt;
&lt;p&gt;That's exactly what distributed tracing does. Each step becomes a span, with the inputs, outputs, tokens, cost and timing attached. When a user complains, you can open the trace and see that, for example, the retrieval step returned the wrong documents.&lt;/p&gt;
&lt;h2&gt;OpenTelemetry for AI&lt;/h2&gt;
&lt;p&gt;OpenTelemetry, which many of us already use for normal services, has &lt;strong&gt;semantic conventions for generative AI&lt;/strong&gt;: standard attribute names for things like the model used, token counts and operation type. Libraries like &lt;strong&gt;OpenLLMetry&lt;/strong&gt; add automatic instrumentation for popular LLM SDKs and frameworks.&lt;/p&gt;
&lt;p&gt;The benefit: AI traces can flow into the same backend as the rest of your traces (Tempo, Jaeger, Datadog, Honeycomb and so on), so you see the AI step inside the full user request.&lt;/p&gt;
&lt;p&gt;One important warning: prompts and responses can contain &lt;strong&gt;personal data&lt;/strong&gt;. Decide carefully what you record, mask sensitive fields, and set retention limits.&lt;/p&gt;
&lt;h2&gt;Tools I'd look at&lt;/h2&gt;
&lt;p&gt;Besides general observability tools, there's a group of tools built for LLM applications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Langfuse&lt;/strong&gt;: open source, can be self-hosted. Traces, prompt management, cost tracking and evaluations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arize Phoenix&lt;/strong&gt;: open source, strong on tracing and evaluation, built on OpenTelemetry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evidently&lt;/strong&gt;: for classic ML, strong on data drift and model quality reports, and it now covers LLM evaluations too.&lt;/li&gt;
&lt;li&gt;Many APM vendors now have LLM features built in.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For my learning project, I'd start with Evidently for the classic model (it's already in the plan) and try Langfuse or Phoenix once an LLM is involved.&lt;/p&gt;
&lt;h2&gt;Evaluations in CI&lt;/h2&gt;
&lt;p&gt;Monitoring tells you about problems after users see them. &lt;strong&gt;Evaluations&lt;/strong&gt; try to catch them before.&lt;/p&gt;
&lt;p&gt;The idea: keep a set of test questions with good expected answers. Every time you change a prompt, a model or the retrieval logic, run the set and score the results, automatically or with another model as a judge. If quality drops, the pipeline fails, just like a failing unit test.&lt;/p&gt;
&lt;p&gt;It's not perfect, because "good answer" is fuzzy. But a basic evaluation set catches a surprising number of regressions, especially when switching models.&lt;/p&gt;
&lt;h2&gt;What's next in the series&lt;/h2&gt;
&lt;p&gt;With monitoring in place, the loop is complete: build, test, deploy, watch, improve. Next, I want to look at what to do when monitoring shows drift: retraining, versioning and safe rollouts of new model versions.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: monitor AI systems twice. Once like any service, and once like a new colleague whose work you still need to check.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Scaling on Kubernetes: HPA, VPA, KEDA and Karpenter</title>
      <link>https://deslypeter.com/writing/kubernetes-autoscaling-hpa-vpa-keda-karpenter</link>
      <guid>https://deslypeter.com/writing/kubernetes-autoscaling-hpa-vpa-keda-karpenter.html?lang=en</guid>
      <description>Four autoscalers, each with its own job. When to use which, and how they work together.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;"Kubernetes scales automatically" is one of those sentences that's true and misleading at the same time. Kubernetes can scale automatically, but only if you set it up, and there are several different autoscalers that do very different things.&lt;/p&gt;
&lt;p&gt;Here's how I explain them, and how they fit together.&lt;/p&gt;
&lt;h2&gt;Pods vs nodes&lt;/h2&gt;
&lt;p&gt;The first thing to understand: there are two levels of scaling.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pod scaling&lt;/strong&gt;: running more copies of your app (horizontal) or giving each copy more resources (vertical).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node scaling&lt;/strong&gt;: adding or removing machines so there's room for the pods.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You usually need both. The pod autoscaler creates pods, but if there's no room for them, they stay &lt;code&gt;Pending&lt;/code&gt; until a node autoscaler adds capacity.&lt;/p&gt;
&lt;h2&gt;HPA: more copies when it gets busy&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;Horizontal Pod Autoscaler&lt;/strong&gt; is built into Kubernetes. It watches a metric and changes the number of replicas.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: shop-api
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: shop-api
  minReplicas: 2
  maxReplicas: 20
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;CPU-based scaling works well for stateless web services. Two things to know:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Utilisation is measured &lt;strong&gt;relative to the pod's CPU request&lt;/strong&gt;. Without requests, HPA can't work.&lt;/li&gt;
&lt;li&gt;You can scale on custom metrics (requests per second, latency) with a metrics adapter, but that needs extra setup.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;VPA: the right size for each pod&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;Vertical Pod Autoscaler&lt;/strong&gt; watches actual resource use and recommends, or sets, better requests and limits.&lt;/p&gt;
&lt;p&gt;It's very useful in &lt;strong&gt;recommendation mode&lt;/strong&gt;: run it for a week and it tells you what your pods actually need. In automatic mode it historically had to restart pods to change their resources. With in-place pod resize now stable in Kubernetes, that's getting much less disruptive.&lt;/p&gt;
&lt;p&gt;Important: &lt;strong&gt;don't use VPA and HPA on the same CPU metric&lt;/strong&gt; for the same workload. They'll fight each other.&lt;/p&gt;
&lt;h2&gt;KEDA: scaling on events&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;KEDA (Kubernetes Event-Driven Autoscaling)&lt;/strong&gt; is a CNCF project that extends HPA with dozens of event sources: queue length in RabbitMQ, Kafka lag, SQS messages, Prometheus queries, cron schedules, and many more.&lt;/p&gt;
&lt;p&gt;Its killer feature: &lt;strong&gt;scaling to zero&lt;/strong&gt;. A worker that processes a queue can have zero pods when the queue is empty, and scale up when messages arrive.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: order-worker
spec:
  scaleTargetRef:
    name: order-worker
  minReplicaCount: 0
  maxReplicaCount: 30
  triggers:
  - type: rabbitmq
    metadata:
      queueName: orders
      mode: QueueLength
      value: "20"
    authenticationRef:
      name: rabbitmq-auth
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For background workers, KEDA is almost always a better fit than CPU-based HPA. CPU tells you how busy the workers are. Queue length tells you how much work is waiting.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Scale on the signal that represents the work, not the side effect of doing it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Cluster Autoscaler vs Karpenter&lt;/h2&gt;
&lt;p&gt;For nodes, there are two main options.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cluster Autoscaler&lt;/strong&gt; is the classic. It works with node groups you define in advance. When pods are pending, it adds a node to a matching group. When nodes are underused, it removes them. Reliable, supported almost everywhere.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Karpenter&lt;/strong&gt; started at AWS and is now a Kubernetes SIG project, with support for AWS and Azure. Instead of fixed node groups, it looks at the pending pods and picks the best instance type for them on the spot. It's faster, often cheaper, and good at &lt;strong&gt;consolidation&lt;/strong&gt;: moving pods around so it can remove underused nodes or replace them with cheaper ones. It also handles Spot instances nicely.&lt;/p&gt;
&lt;p&gt;On AWS, I'd choose Karpenter today. Elsewhere, use what your provider supports best, often their managed autoscaler.&lt;/p&gt;
&lt;h2&gt;Stopping the flapping&lt;/h2&gt;
&lt;p&gt;Autoscaling can oscillate: scale up, scale down, scale up again. Ways to calm it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stabilisation windows&lt;/strong&gt; in the HPA &lt;code&gt;behavior&lt;/code&gt; section, especially for scale-down (five minutes is a common start).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sensible min replicas.&lt;/strong&gt; At least two for anything user-facing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correct resource requests.&lt;/strong&gt; Wrong requests make every autoscaler make wrong decisions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PodDisruptionBudgets&lt;/strong&gt;, so node consolidation doesn't take down all replicas at once.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Readiness probes&lt;/strong&gt; that really reflect readiness, so new pods only get traffic when they can handle it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Putting it together&lt;/h2&gt;
&lt;p&gt;A setup I like for a typical cluster:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HPA&lt;/strong&gt; on CPU or requests per second for web services.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KEDA&lt;/strong&gt; for queue workers and scheduled jobs, with scale to zero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VPA in recommendation mode&lt;/strong&gt; to keep requests honest.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Karpenter or Cluster Autoscaler&lt;/strong&gt; to add and remove nodes as needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;My take: autoscaling is a team sport. Get the requests right first, choose the right signal for each workload, and let the node autoscaler handle the rest.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Requests and limits: the settings everyone gets wrong</title>
      <link>https://deslypeter.com/writing/requests-and-limits</link>
      <guid>https://deslypeter.com/writing/requests-and-limits.html?lang=en</guid>
      <description>Why your pod got killed, why it's slow, and whether CPU limits are a good idea at all.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;If I had to pick the one Kubernetes setting that causes the most confusion, it would be resource requests and limits. They look simple: a few numbers in a YAML file. But they decide where your pod runs, how fast it is, whether it gets killed, and how much your cluster costs.&lt;/p&gt;
&lt;p&gt;Let's go through what they actually do.&lt;/p&gt;
&lt;h2&gt;What requests and limits mean&lt;/h2&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;resources:
  requests:
    cpu: 250m
    memory: 256Mi
  limits:
    cpu: "1"
    memory: 512Mi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Requests&lt;/strong&gt; are what the pod is guaranteed. The scheduler uses them to decide which node has room. A node with 4 CPUs can fit pods whose CPU requests add up to about 4, regardless of how much they actually use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limits&lt;/strong&gt; are the maximum the pod is allowed to use.&lt;/p&gt;
&lt;p&gt;The key insight: &lt;strong&gt;CPU and memory behave completely differently when you hit the limit.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;What actually happens when you hit a limit&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;CPU is compressible.&lt;/strong&gt; If a container tries to use more CPU than its limit, it gets &lt;strong&gt;throttled&lt;/strong&gt;. It doesn't crash, it just slows down. The kernel only lets it run for a certain share of each time slice. This shows up as mysterious latency spikes, often without high average CPU usage.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Memory is not compressible.&lt;/strong&gt; If a container uses more memory than its limit, the kernel kills it. That's the famous &lt;strong&gt;OOMKilled&lt;/strong&gt; status. The pod restarts, and if it keeps happening, you see &lt;code&gt;CrashLoopBackOff&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;kubectl describe pod shop-api-7d9f
# Last State: Terminated
#   Reason:   OOMKilled
#   Exit Code: 137
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There's also eviction: if a node runs out of memory overall, the kubelet evicts pods, starting with those using the most beyond their requests.&lt;/p&gt;
&lt;h2&gt;QoS classes, simply&lt;/h2&gt;
&lt;p&gt;Kubernetes puts every pod in one of three Quality of Service classes, based on its requests and limits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Guaranteed&lt;/strong&gt;: requests equal limits for CPU and memory in every container. Last to be evicted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Burstable&lt;/strong&gt;: requests are set but lower than limits (or only some are set). The most common class.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BestEffort&lt;/strong&gt;: no requests or limits at all. First to be evicted when the node is under pressure.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For important services, avoid BestEffort. For critical workloads, consider Guaranteed for memory at least.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Requests decide where your pod lives. Limits decide how it dies.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The CPU limits debate&lt;/h2&gt;
&lt;p&gt;This is where engineers argue. Should you set CPU limits at all?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The case against CPU limits:&lt;/strong&gt; throttling hurts latency, sometimes even when the node has plenty of idle CPU. Without a limit, a pod can use spare CPU when it's available, and requests still guarantee everyone their fair share under contention. Many experienced teams set CPU requests but no CPU limits.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The case for CPU limits:&lt;/strong&gt; predictability. In multi-tenant clusters, or when you need to prevent one noisy workload from hogging everything, limits give hard boundaries. Some runtimes and licensing models also depend on them.&lt;/p&gt;
&lt;p&gt;My default: &lt;strong&gt;always set CPU requests, set memory requests and memory limits, and only set CPU limits when there's a specific reason.&lt;/strong&gt; For memory, I usually set the limit equal to the request, or close to it, so pods don't get surprise-evicted.&lt;/p&gt;
&lt;h2&gt;Finding the right numbers&lt;/h2&gt;
&lt;p&gt;Guessing is how most teams start, and it's usually wrong in both directions: some pods starve, others reserve resources they never use (and you pay for that).&lt;/p&gt;
&lt;p&gt;Better approaches:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Look at real usage&lt;/strong&gt; in Prometheus or your monitoring tool over at least a week. A common starting point: requests near typical usage (for example the 90th percentile), memory limit with some headroom above the peak.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VPA in recommendation mode&lt;/strong&gt; calculates suggestions for you.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Goldilocks&lt;/strong&gt; (from Fairwinds) runs VPA in recommendation mode and shows the results per namespace in a dashboard.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Check for throttling&lt;/strong&gt; with the &lt;code&gt;container_cpu_cfs_throttled_periods_total&lt;/code&gt; metric. High throttling with low average usage is a sign the CPU limit is too tight.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Language runtimes matter.&lt;/strong&gt; Java, Node.js and Go each have their own relationship with container memory and CPU limits. Make sure your runtime knows its limits (modern JVMs detect container limits automatically, for example).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Guardrails for the whole cluster&lt;/h2&gt;
&lt;p&gt;To stop pods without any settings from sneaking in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LimitRange&lt;/strong&gt; sets default requests and limits per namespace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ResourceQuota&lt;/strong&gt; caps the total a namespace can request.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Policy tools&lt;/strong&gt; like Kyverno can require requests on every pod.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, what should you do today?&lt;/h2&gt;
&lt;p&gt;Check which of your workloads have no requests at all. Fix those first. Then look at OOMKills and throttling metrics, and adjust based on real data instead of guesses.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: set requests honestly, treat memory limits with respect, and think twice before throttling your own CPU.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Kubernetes errors I see every week, and how I fix them</title>
      <link>https://deslypeter.com/writing/kubernetes-errors-and-fixes</link>
      <guid>https://deslypeter.com/writing/kubernetes-errors-and-fixes.html?lang=en</guid>
      <description>CrashLoopBackOff, ImagePullBackOff, Pending. A practical fix list, with a cheat sheet.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Kubernetes error messages have a special talent: they tell you that something is wrong, in capital letters, without telling you why. &lt;code&gt;CrashLoopBackOff&lt;/code&gt;. &lt;code&gt;ImagePullBackOff&lt;/code&gt;. &lt;code&gt;Pending&lt;/code&gt;. If you work with Kubernetes, you'll see these every week.&lt;/p&gt;
&lt;p&gt;The good news: the same few causes explain most of these errors. Here's my usual debugging process and the fixes I try first.&lt;/p&gt;
&lt;h2&gt;My debugging routine&lt;/h2&gt;
&lt;p&gt;Whatever the error, I start with the same three commands:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;kubectl get pods -n shop                 # what state is it in?
kubectl describe pod &amp;lt;pod&amp;gt; -n shop       # events at the bottom tell the story
kubectl logs &amp;lt;pod&amp;gt; -n shop --previous    # logs from the crashed container
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;strong&gt;Events&lt;/strong&gt; section at the bottom of &lt;code&gt;kubectl describe&lt;/code&gt; is the most underrated debugging tool in Kubernetes. Nine times out of ten, the answer is there.&lt;/p&gt;
&lt;p&gt;For the bigger picture:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;kubectl get events -n shop --sort-by=.lastTimestamp
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;The usual suspects, one by one&lt;/h2&gt;
&lt;h3&gt;CrashLoopBackOff&lt;/h3&gt;
&lt;p&gt;The container starts, crashes, Kubernetes restarts it, it crashes again, and Kubernetes waits longer and longer between attempts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Common causes:&lt;/strong&gt;
- The application itself fails at startup: missing config, wrong environment variable, can't reach the database.
- A missing secret or ConfigMap key.
- Liveness probe kills the container before it finishes starting.
- Out of memory at startup (check for &lt;code&gt;OOMKilled&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; &lt;code&gt;kubectl logs --previous&lt;/code&gt; shows why the last run died. If the logs are empty, the process probably crashed before logging anything: check the command, the entrypoint, and the image.&lt;/p&gt;
&lt;h3&gt;ImagePullBackOff / ErrImagePull&lt;/h3&gt;
&lt;p&gt;Kubernetes can't download the container image.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Common causes:&lt;/strong&gt;
- Typo in the image name or tag.
- The tag doesn't exist (it was never pushed, or was deleted).
- Private registry without an &lt;code&gt;imagePullSecret&lt;/code&gt;, or an expired one.
- Rate limits from the registry.
- The node can't reach the registry (network, proxy, firewall).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; the event message usually says exactly which one: "not found", "unauthorized", or "toomanyrequests".&lt;/p&gt;
&lt;h3&gt;Pending&lt;/h3&gt;
&lt;p&gt;The pod was created but no node will run it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Common causes:&lt;/strong&gt;
- Not enough CPU or memory on any node for the pod's &lt;strong&gt;requests&lt;/strong&gt;.
- Node selectors, affinity rules or taints that no node matches.
- A PersistentVolumeClaim that can't be bound (wrong StorageClass, wrong zone).
- The cluster autoscaler hasn't added a node yet, or can't.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; &lt;code&gt;kubectl describe pod&lt;/code&gt; shows a message like "0/5 nodes are available: 3 Insufficient memory, 2 node(s) had untolerated taint". That tells you exactly what to change.&lt;/p&gt;
&lt;h3&gt;OOMKilled&lt;/h3&gt;
&lt;p&gt;The container used more memory than its limit and was killed. Exit code 137.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; check actual memory usage, then either raise the limit or fix the leak. Make sure the language runtime knows about the container's memory limit.&lt;/p&gt;
&lt;h3&gt;Evicted&lt;/h3&gt;
&lt;p&gt;The node ran low on memory or disk and removed pods to protect itself.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; set proper memory requests, check for pods writing huge logs or temporary files, and look at node disk usage. Clean up old evicted pods with &lt;code&gt;kubectl delete pod --field-selector=status.phase=Failed&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;CreateContainerConfigError&lt;/h3&gt;
&lt;p&gt;Usually a referenced Secret or ConfigMap (or a key inside it) doesn't exist. The event names it.&lt;/p&gt;
&lt;h3&gt;Readiness probe failed / 0/1 Ready&lt;/h3&gt;
&lt;p&gt;The container runs but Kubernetes doesn't send traffic to it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; check the probe path and port, and test it from inside the pod. Make sure the probe doesn't depend on external services that might be slow.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Kubernetes almost always tells you what's wrong. It just puts the answer at the bottom of &lt;code&gt;kubectl describe&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;When it's the network&lt;/h2&gt;
&lt;p&gt;"It works in the pod but not through the service" is its own category.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;# Does the Service have endpoints?
kubectl get endpointslices -n shop -l kubernetes.io/service-name=shop-api

# Test from inside the cluster
kubectl run tmp --rm -it --image=busybox:1.36 -- sh
# then: wget -qO- http://shop-api.shop.svc.cluster.local:8080/health
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Common causes:&lt;/strong&gt;
- &lt;strong&gt;No endpoints&lt;/strong&gt;: the Service selector doesn't match the pod labels. Very common after a rename.
- &lt;strong&gt;Wrong port&lt;/strong&gt;: &lt;code&gt;port&lt;/code&gt; vs &lt;code&gt;targetPort&lt;/code&gt; mix-up.
- &lt;strong&gt;NetworkPolicy&lt;/strong&gt; blocking traffic. If any policy selects a pod, everything not explicitly allowed is denied.
- &lt;strong&gt;DNS&lt;/strong&gt;: check that CoreDNS pods are healthy, and use the full service name across namespaces.&lt;/p&gt;
&lt;h2&gt;Debugging tools worth knowing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;kubectl debug&lt;/code&gt;&lt;/strong&gt; starts an ephemeral debug container in a running pod, even if the image has no shell. Essential for distroless images.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;kubectl exec&lt;/code&gt;&lt;/strong&gt; for images that do have a shell.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;kubectl port-forward&lt;/code&gt;&lt;/strong&gt; to test a service from your laptop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;k9s&lt;/strong&gt; for a fast terminal UI over everything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;stern&lt;/strong&gt; for following logs from many pods at once.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The cheat sheet&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;First thing to check&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CrashLoopBackOff&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl logs --previous&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ImagePullBackOff&lt;/td&gt;
&lt;td&gt;Event message: name, tag, credentials, rate limit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pending&lt;/td&gt;
&lt;td&gt;&lt;code&gt;describe&lt;/code&gt; events: resources, taints, PVC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OOMKilled&lt;/td&gt;
&lt;td&gt;Memory usage vs limit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evicted&lt;/td&gt;
&lt;td&gt;Node memory/disk pressure, missing requests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CreateContainerConfigError&lt;/td&gt;
&lt;td&gt;Missing Secret/ConfigMap or key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Not Ready&lt;/td&gt;
&lt;td&gt;Readiness probe path, port and dependencies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Service unreachable&lt;/td&gt;
&lt;td&gt;Endpoints, selector labels, ports, NetworkPolicy, DNS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;My take: learn to read events and previous logs, and most Kubernetes mysteries solve themselves in minutes.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Smaller, safer container images</title>
      <link>https://deslypeter.com/writing/smaller-safer-container-images</link>
      <guid>https://deslypeter.com/writing/smaller-safer-container-images.html?lang=en</guid>
      <description>Your image is probably ten times bigger than it needs to be. How I shrink and harden mine.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Run &lt;code&gt;docker images&lt;/code&gt; on almost any project and you'll find images of 800 MB, 1 GB, sometimes more, for an application whose actual code is a few megabytes. The rest is a full operating system, compilers, package managers, shells, debugging tools and leftover files.&lt;/p&gt;
&lt;p&gt;Big images take longer to build, pull and start. Plus, every extra package adds a security risk. Here's how I make mine smaller and safer.&lt;/p&gt;
&lt;h2&gt;Multi-stage builds&lt;/h2&gt;
&lt;p&gt;The biggest win, by far. Use one stage with all the build tools to compile your app, then copy only the result into a minimal final image.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-dockerfile"&gt;# Build stage
FROM golang:1.25 AS build
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o /app ./cmd/server

# Final stage
FROM gcr.io/distroless/static-debian12:nonroot
COPY --from=build /app /app
USER nonroot
ENTRYPOINT ["/app"]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The final image contains the binary and almost nothing else. No shell, no package manager, no compiler. For a Go app, that can mean going from around a gigabyte to around twenty megabytes.&lt;/p&gt;
&lt;p&gt;The same pattern works for other languages: build with the full SDK image, run with a slim runtime image.&lt;/p&gt;
&lt;h2&gt;Choosing a base image&lt;/h2&gt;
&lt;p&gt;The base image decides most of your image's size and its vulnerability count.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Full distro images&lt;/strong&gt; (&lt;code&gt;ubuntu&lt;/code&gt;, &lt;code&gt;debian&lt;/code&gt;, &lt;code&gt;node&lt;/code&gt;, &lt;code&gt;python&lt;/code&gt;): convenient, big, lots of packages you don't need.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slim variants&lt;/strong&gt; (&lt;code&gt;python:3.13-slim&lt;/code&gt;, &lt;code&gt;node:22-slim&lt;/code&gt;): a good middle ground.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alpine&lt;/strong&gt;: very small, but uses musl instead of glibc, which occasionally causes subtle compatibility or performance issues.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distroless&lt;/strong&gt; (Google): only your app and its runtime dependencies. No shell.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hardened minimal images&lt;/strong&gt;: Chainguard Images (built on Wolfi), Docker Hardened Images and similar offerings are rebuilt frequently and aim for zero or near-zero known vulnerabilities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A note on &lt;strong&gt;Bitnami&lt;/strong&gt;: many teams relied on Bitnami's free container images and Helm charts. In 2025, Broadcom changed the free catalogue significantly, moving most versioned images to a legacy repository that no longer gets updates. If your charts or Dockerfiles still reference Bitnami images, check them now and move to supported alternatives.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Every package in your image is a package you'll have to patch. The easiest vulnerability to fix is the one you never shipped.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Faster builds with caching&lt;/h2&gt;
&lt;p&gt;Docker builds layers in order, and reuses cached layers until something changes. So order matters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Copy dependency files first&lt;/strong&gt; (&lt;code&gt;package.json&lt;/code&gt;, &lt;code&gt;go.mod&lt;/code&gt;, &lt;code&gt;requirements.txt&lt;/code&gt;), install dependencies, then copy the rest of the code. Code changes then don't invalidate the dependency layer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use a &lt;code&gt;.dockerignore&lt;/code&gt;&lt;/strong&gt; to keep &lt;code&gt;node_modules&lt;/code&gt;, &lt;code&gt;.git&lt;/code&gt;, test data and local secrets out of the build context.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use BuildKit cache mounts&lt;/strong&gt; for package manager caches:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class="language-dockerfile"&gt;RUN --mount=type=cache,target=/root/.cache/pip \
    pip install -r requirements.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;ol start="4"&gt;
&lt;li&gt;&lt;strong&gt;Use registry caching in CI&lt;/strong&gt; (&lt;code&gt;--cache-to&lt;/code&gt; and &lt;code&gt;--cache-from&lt;/code&gt; with &lt;code&gt;docker buildx&lt;/code&gt;), so pipelines reuse layers from earlier builds.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Hardening checklist&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Run as a non-root user.&lt;/strong&gt; Set &lt;code&gt;USER&lt;/code&gt; in the Dockerfile and &lt;code&gt;runAsNonRoot: true&lt;/code&gt; in Kubernetes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pin base images&lt;/strong&gt; by version, ideally by digest, and let Renovate update them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No secrets in images.&lt;/strong&gt; Use build secrets (&lt;code&gt;--mount=type=secret&lt;/code&gt;) for anything needed at build time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read-only root file system&lt;/strong&gt; in Kubernetes where possible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drop Linux capabilities&lt;/strong&gt; you don't need.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add labels&lt;/strong&gt; for source, version and maintainer (OCI annotations).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Scanning before shipping&lt;/h2&gt;
&lt;p&gt;Scan images in CI and fail the build on serious, fixable vulnerabilities:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;trivy image --severity HIGH,CRITICAL --ignore-unfixed \
  --exit-code 1 registry.example.com/shop-api:1.4.2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Trivy&lt;/strong&gt; and &lt;strong&gt;Grype&lt;/strong&gt; are both excellent open-source scanners. Docker Scout and most registries also scan automatically.&lt;/p&gt;
&lt;p&gt;Two tips: use &lt;code&gt;--ignore-unfixed&lt;/code&gt; (or similar) so you're not blocked by vulnerabilities nobody can fix yet, and rescan images regularly, not just at build time, because new vulnerabilities are found in old images every day.&lt;/p&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Take your biggest image. Add a multi-stage build and a slim or distroless base. Run Trivy before and after. The difference in size and security is usually so big that the rest of the team will want it too.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: ship your app, not a whole operating system. Smaller images are faster, cheaper and safer, all at once.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Kubernetes at home: Talos, k3s and a homelab</title>
      <link>https://deslypeter.com/writing/kubernetes-homelab-talos-k3s</link>
      <guid>https://deslypeter.com/writing/kubernetes-homelab-talos-k3s.html?lang=en</guid>
      <description>A small cluster on cheap hardware, and what it teaches you about production.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;At work, Kubernetes usually comes pre-built. A managed service, a platform team, a few clicks or a Terraform module, and the cluster exists. That's great for productivity, and terrible for learning how things actually work underneath.&lt;/p&gt;
&lt;p&gt;A homelab fixes that. A few small machines on a shelf, a cluster you built yourself, and nobody to blame but you when it breaks. It's one of the best learning investments I know.&lt;/p&gt;
&lt;h2&gt;Why build a homelab&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;You learn the layers managed services hide&lt;/strong&gt;: networking, storage, certificates, the control plane, upgrades.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You can break things freely.&lt;/strong&gt; No change tickets, no customers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You can try tools&lt;/strong&gt; before proposing them at work: GitOps, service meshes, observability stacks, policy engines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It's genuinely useful.&lt;/strong&gt; Many people run their home services (media, backups, home automation, password managers) on it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It looks good on a CV&lt;/strong&gt;, especially when you write about it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What hardware?&lt;/h2&gt;
&lt;p&gt;You don't need much:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mini PCs&lt;/strong&gt; (Intel NUC style or similar) are the most popular choice: quiet, efficient, x86, enough RAM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Raspberry Pi&lt;/strong&gt; boards work well with lightweight distributions, but ARM and SD card storage add some quirks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One old laptop or desktop&lt;/strong&gt; with virtual machines is a perfectly fine start.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Three nodes is a good target: enough to learn high availability and what happens when a node dies. Plan for at least 8 GB of RAM per node, and use SSDs rather than SD cards for anything you care about.&lt;/p&gt;
&lt;h2&gt;Talos vs k3s&lt;/h2&gt;
&lt;p&gt;Two distributions stand out for homelabs, and they have very different philosophies.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;k3s&lt;/strong&gt; is a lightweight, fully compliant Kubernetes distribution from Rancher (SUSE). A single binary, installed on a normal Linux system with one command:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;curl -sfL https://get.k3s.io | sh -
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It comes with sensible defaults built in: a container runtime, networking, a local storage provisioner and an ingress controller. It's the fastest way to a working cluster, and very forgiving.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Talos Linux&lt;/strong&gt; takes a radical approach: it's an operating system built only to run Kubernetes. No SSH, no shell, no package manager. Everything is configured through an API with &lt;code&gt;talosctl&lt;/code&gt; and a YAML machine configuration. The OS is immutable, so nodes can't drift, and upgrades are atomic.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;talosctl gen config homelab https://192.168.1.10:6443
talosctl apply-config --insecure --nodes 192.168.1.10 --file controlplane.yaml
talosctl bootstrap --nodes 192.168.1.10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;My take: &lt;strong&gt;k3s if you want to learn Kubernetes quickly&lt;/strong&gt;, &lt;strong&gt;Talos if you want to learn how production-grade, immutable infrastructure feels&lt;/strong&gt;. Talos is stricter and has a steeper start, but once it clicks, it's hard to go back to SSH-ing into nodes.&lt;/p&gt;
&lt;p&gt;Other options worth knowing: &lt;strong&gt;k0s&lt;/strong&gt;, &lt;strong&gt;MicroK8s&lt;/strong&gt;, and plain &lt;strong&gt;kubeadm&lt;/strong&gt; if you want to do everything the hard way at least once.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A homelab teaches you more in one broken weekend than a managed cluster teaches you in a year.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;A stack worth building&lt;/h2&gt;
&lt;p&gt;Once the cluster runs, here's a learning path that mirrors real production setups:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;GitOps&lt;/strong&gt; with Argo CD or Flux. Everything in Git from day one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Networking&lt;/strong&gt; with Cilium, and &lt;strong&gt;MetalLB&lt;/strong&gt; or Cilium's own load balancer support to get real IPs for services at home.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gateway API&lt;/strong&gt; with cert-manager and Let's Encrypt for HTTPS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage&lt;/strong&gt; with Longhorn or a simple NFS provisioner.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observability&lt;/strong&gt;: Prometheus, Grafana, Loki.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secrets&lt;/strong&gt; with External Secrets or SOPS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backups&lt;/strong&gt; with Velero to an external disk or cloud storage.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Each step teaches something you'll use at work.&lt;/p&gt;
&lt;h2&gt;Lessons for real work&lt;/h2&gt;
&lt;p&gt;The things a homelab taught me that managed clusters never did:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Networking is most of the difficulty.&lt;/strong&gt; IP ranges, DNS, load balancers, MTU problems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage is the hardest part of reliability.&lt;/strong&gt; Losing a disk in a homelab makes backups very real.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upgrades need practice.&lt;/strong&gt; Doing them regularly on your own cluster makes production upgrades much less scary.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Immutable infrastructure is worth it.&lt;/strong&gt; Rebuilding a node from config beats fixing it by hand.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write things down.&lt;/strong&gt; Future you will not remember why that one setting exists.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, is it worth it?&lt;/h2&gt;
&lt;p&gt;If you work with Kubernetes, or want to, absolutely. It costs a few hundred euros, or nothing if you reuse old hardware, and some evenings. In return you get a deep understanding of the system you work with every day.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: build it yourself at least once. You'll understand every managed cluster you touch afterwards a little better.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Locking down GitHub Actions after real attacks</title>
      <link>https://deslypeter.com/writing/locking-down-github-actions</link>
      <guid>https://deslypeter.com/writing/locking-down-github-actions.html?lang=en</guid>
      <description>One compromised action leaked secrets from thousands of repos. What I changed in mine.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;For a long time, I treated GitHub Actions workflows as plumbing. Copy a workflow from a README, add &lt;code&gt;uses: some-org/some-action@v3&lt;/code&gt;, and move on. Most of us did.&lt;/p&gt;
&lt;p&gt;In March 2025, the popular &lt;code&gt;tj-actions/changed-files&lt;/code&gt; action was hacked. Attackers changed its version tags to point at malicious code that leaked CI secrets into build logs. Thousands of repos used it. Many had public logs. It was a wake-up call: our pipelines run third-party code with access to our most sensitive credentials, and we rarely think about it.&lt;/p&gt;
&lt;p&gt;Here's what I changed, and what I'd recommend to anyone using Actions.&lt;/p&gt;
&lt;h2&gt;What happened, simply&lt;/h2&gt;
&lt;p&gt;When you write &lt;code&gt;uses: tj-actions/changed-files@v45&lt;/code&gt;, &lt;code&gt;v45&lt;/code&gt; is a Git tag. Tags can be moved. If an attacker gets write access to the action's repository, they can point existing tags at a malicious commit. Every workflow using that tag runs the new code on its next run, without any change in your repository.&lt;/p&gt;
&lt;p&gt;The investigation later showed the hack was itself linked to another compromised action. Supply chain attacks chain.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Your pipeline is only as trustworthy as the least trustworthy action it runs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;1. Pin actions to a full commit SHA&lt;/h2&gt;
&lt;p&gt;Instead of a tag, reference the exact commit:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;# Before
- uses: actions/checkout@v4

# After
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A commit SHA can't be moved. Keep the version as a comment so humans can read it, and let &lt;strong&gt;Dependabot&lt;/strong&gt; or &lt;strong&gt;Renovate&lt;/strong&gt; update the SHA (and the comment) when a new version is released, through a normal pull request you can review.&lt;/p&gt;
&lt;p&gt;GitHub also lets organisations enforce SHA pinning in their allowed actions policy, so unpinned actions fail.&lt;/p&gt;
&lt;h2&gt;2. Restrict the GITHUB_TOKEN&lt;/h2&gt;
&lt;p&gt;Every workflow gets an automatic &lt;code&gt;GITHUB_TOKEN&lt;/code&gt;. Its default permissions depend on your settings, and in older repositories they're often far too broad.&lt;/p&gt;
&lt;p&gt;Set the organisation or repository default to read-only, and grant only what each workflow needs:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;permissions:
  contents: read

jobs:
  release:
    permissions:
      contents: write   # only this job can push tags
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A leaked read-only token is a much smaller problem than a leaked write token.&lt;/p&gt;
&lt;h2&gt;3. Stop storing long-lived cloud keys&lt;/h2&gt;
&lt;p&gt;The secrets that leaked in these attacks were often cloud access keys that are valid until someone rotates them. Replace them with &lt;strong&gt;OIDC&lt;/strong&gt;: the workflow requests a short-lived token from GitHub, and your cloud provider exchanges it for temporary credentials, but only for the specific repository and branch you allow.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;permissions:
  id-token: write
  contents: read

steps:
  - uses: aws-actions/configure-aws-credentials@&amp;lt;sha&amp;gt; # v4
    with:
      role-to-assume: arn:aws:iam::123456789012:role/deploy-shop
      aws-region: eu-central-1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;AWS, Azure, Google Cloud, HashiCorp Vault and many others support this. No secret to steal, and the token expires in minutes.&lt;/p&gt;
&lt;h2&gt;4. Be careful with dangerous triggers&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;pull_request_target&lt;/code&gt; and &lt;code&gt;workflow_run&lt;/code&gt; run with access to secrets, even for pull requests from forks. Combined with checking out the untrusted code from the pull request, they're a classic way for attackers to steal secrets. Avoid them unless you really understand the risk.&lt;/p&gt;
&lt;p&gt;Also watch out for &lt;strong&gt;script injection&lt;/strong&gt;: using untrusted input like a pull request title directly in a &lt;code&gt;run:&lt;/code&gt; step.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;# Dangerous: the title can contain shell commands
- run: echo "${{ github.event.pull_request.title }}"

# Safer: pass it through an environment variable
- env:
    TITLE: ${{ github.event.pull_request.title }}
  run: echo "$TITLE"
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;5. Limit which actions can run at all&lt;/h2&gt;
&lt;p&gt;In organisation settings, allow only:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Actions created by GitHub&lt;/li&gt;
&lt;li&gt;Actions from verified creators&lt;/li&gt;
&lt;li&gt;A specific allow list of actions you've reviewed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fewer third-party actions means fewer things that can be compromised. For simple tasks, a few lines of shell are often safer than an action.&lt;/p&gt;
&lt;h2&gt;6. Use tools that check your workflows&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;zizmor&lt;/strong&gt;: a static analysis tool for GitHub Actions that finds unpinned actions, injection risks, dangerous triggers and excessive permissions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenSSF Scorecard&lt;/strong&gt;: rates your repository's security practices, including workflow hygiene.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;StepSecurity Harden-Runner&lt;/strong&gt;: monitors and can restrict network access from your runners, which would have blocked many exfiltration attempts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dependabot / Renovate&lt;/strong&gt; for keeping pinned actions up to date.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Add zizmor to your CI and fix what it finds. It's an eye-opening first run.&lt;/p&gt;
&lt;h2&gt;7. Protect the runners&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Prefer &lt;strong&gt;GitHub-hosted&lt;/strong&gt; or &lt;strong&gt;ephemeral self-hosted runners&lt;/strong&gt; (a fresh VM or container per job). Persistent self-hosted runners can be poisoned by one malicious job and affect the next.&lt;/li&gt;
&lt;li&gt;Never use self-hosted runners for public repositories where anyone can open a pull request.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;If you only do three things this week: set the default token to read-only, pin your third-party actions to SHAs with Renovate updating them, and replace one long-lived cloud key with OIDC. Then run zizmor and work through the list.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: CI pipelines hold the keys to everything. Treat every &lt;code&gt;uses:&lt;/code&gt; line like a dependency, because that's exactly what it is.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>My CI/CD pipeline, from commit to production</title>
      <link>https://deslypeter.com/writing/cicd-pipeline-commit-to-production</link>
      <guid>https://deslypeter.com/writing/cicd-pipeline-commit-to-production.html?lang=en</guid>
      <description>Build, test, scan, deploy, verify. A complete pipeline you can copy.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Ask ten DevOps engineers to draw a CI/CD pipeline and you'll get ten different drawings. But underneath, good pipelines share the same shape. They give fast feedback, they catch problems early, and they make deploying boring.&lt;/p&gt;
&lt;p&gt;Here's the pipeline I'd use for a typical containerised web service, step by step, with a working example in GitHub Actions.&lt;/p&gt;
&lt;h2&gt;The stages and why&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Lint and unit tests.&lt;/strong&gt; Fast checks first. If these fail, there's no point doing anything else.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build.&lt;/strong&gt; Create the container image once, tagged with the commit SHA.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scan.&lt;/strong&gt; Check dependencies, the image and the infrastructure code for known problems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integration tests.&lt;/strong&gt; Test the built image with its real dependencies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publish.&lt;/strong&gt; Push the image to the registry, signed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploy to staging.&lt;/strong&gt; Automatically, on every merge to main.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verify.&lt;/strong&gt; Smoke tests against staging.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploy to production.&lt;/strong&gt; Same artifact, after approval or automatically, with a gradual rollout.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verify again.&lt;/strong&gt; Watch metrics and roll back if they get worse.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The most important principle hides in step 2: &lt;strong&gt;build once, deploy the same artifact everywhere.&lt;/strong&gt; Never rebuild for production. What you tested is what you ship.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A good pipeline makes the right thing automatic and the risky thing visible.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The full example&lt;/h2&gt;
&lt;p&gt;A trimmed-down version of what this looks like in GitHub Actions:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;name: ci-cd

on:
  pull_request:
  push:
    branches: [main]

permissions:
  contents: read

env:
  IMAGE: ghcr.io/my-org/shop-api

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@&amp;lt;sha&amp;gt; # v4
      - uses: actions/setup-go@&amp;lt;sha&amp;gt; # v5
        with:
          go-version-file: go.mod
          cache: true
      - run: go vet ./...
      - run: go test ./... -race -coverprofile=coverage.out

  build:
    needs: test
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
      id-token: write          # for keyless signing
    outputs:
      digest: ${{ steps.push.outputs.digest }}
    steps:
      - uses: actions/checkout@&amp;lt;sha&amp;gt; # v4
      - uses: docker/setup-buildx-action@&amp;lt;sha&amp;gt; # v3
      - uses: docker/login-action@&amp;lt;sha&amp;gt; # v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - id: push
        uses: docker/build-push-action@&amp;lt;sha&amp;gt; # v6
        with:
          push: ${{ github.event_name == 'push' }}
          tags: ${{ env.IMAGE }}:${{ github.sha }}
          cache-from: type=gha
          cache-to: type=gha,mode=max
      - name: Scan image
        uses: aquasecurity/trivy-action@&amp;lt;sha&amp;gt;
        with:
          image-ref: ${{ env.IMAGE }}:${{ github.sha }}
          severity: HIGH,CRITICAL
          ignore-unfixed: true
          exit-code: "1"

  deploy-staging:
    if: github.event_name == 'push'
    needs: build
    runs-on: ubuntu-latest
    environment: staging
    steps:
      - run: echo "Update the staging GitOps repo to ${{ github.sha }}"
      - run: ./scripts/smoke-test.sh https://staging.example.com

  deploy-production:
    needs: deploy-staging
    runs-on: ubuntu-latest
    environment: production      # requires approval in repo settings
    steps:
      - run: echo "Update the production GitOps repo to ${{ github.sha }}"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(Replace &lt;code&gt;&amp;lt;sha&amp;gt;&lt;/code&gt; with pinned commit SHAs, as described in my post on locking down GitHub Actions.)&lt;/p&gt;
&lt;p&gt;A few details worth noticing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Environments&lt;/strong&gt; (&lt;code&gt;staging&lt;/code&gt;, &lt;code&gt;production&lt;/code&gt;) can require approvals and hold their own secrets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deployment updates a GitOps repo&lt;/strong&gt; rather than calling &lt;code&gt;kubectl&lt;/code&gt; directly. Argo CD or Flux applies the change, which keeps credentials out of CI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pull requests run tests and build&lt;/strong&gt; but don't push or deploy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Making it fast&lt;/h2&gt;
&lt;p&gt;Slow pipelines make developers lose trust. A few habits keep things moving quickly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Run the fastest checks first&lt;/strong&gt; and in parallel.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache dependencies&lt;/strong&gt; and Docker layers (the &lt;code&gt;cache-from&lt;/code&gt; / &lt;code&gt;cache-to&lt;/code&gt; lines above).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Only run what changed&lt;/strong&gt; in monorepos, using path filters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep integration tests focused.&lt;/strong&gt; Test the important paths, not everything.&lt;/li&gt;
&lt;li&gt;Aim for &lt;strong&gt;under ten minutes&lt;/strong&gt; from push to "ready to merge".&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How I roll back&lt;/h2&gt;
&lt;p&gt;A rollback should be as easy as a deployment, and practised:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;With GitOps, a rollback is a &lt;strong&gt;revert commit&lt;/strong&gt; in the deployment repo. Argo CD and Flux apply it like any other change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Progressive delivery&lt;/strong&gt; tools like Argo Rollouts or Flagger can roll back automatically when metrics get worse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Database changes&lt;/strong&gt; need to be backward compatible (expand and contract), so rolling back the app doesn't break on the new schema.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feature flags&lt;/strong&gt; let you turn off a broken feature without redeploying at all.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, what's the minimum?&lt;/h2&gt;
&lt;p&gt;If your pipeline does nothing else, make it do this: run tests on every pull request, build one image per commit, scan it, deploy that exact image to staging automatically, and promote the same image to production. Everything else is improvement on top.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: build once, test early, deploy the same thing everywhere, and always know how to go back.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Releasing without fear: canary, blue-green and feature flags</title>
      <link>https://deslypeter.com/writing/canary-blue-green-feature-flags</link>
      <guid>https://deslypeter.com/writing/canary-blue-green-feature-flags.html?lang=en</guid>
      <description>Ship to 5% first, watch, then decide. How progressive delivery works.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;There's a particular kind of silence in a team chat right after a big production deployment. Everyone's watching dashboards. Nobody wants to be the first to say "is it just me, or are errors going up?"&lt;/p&gt;
&lt;p&gt;Progressive delivery replaces that silence with a plan: release to a few users first, track what happens, and only then decide whether to continue. If something's wrong, only a small group notices, and the system can undo the change automatically.&lt;/p&gt;
&lt;h2&gt;The strategies compared&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Rolling update.&lt;/strong&gt; Kubernetes' default: replace pods a few at a time. Simple, but once the rollout starts, new and old versions mix and you have little control over who sees what.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Blue-green.&lt;/strong&gt; Run the new version (green) next to the old one (blue). Test green, then switch all traffic at once. Rolling back is just switching back. The cost: double resources during the switch, and a "big bang" moment for users.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Canary.&lt;/strong&gt; Send a small percentage of traffic to the new version, for example 5%, then 25%, then 50%, then 100%, checking metrics at each step. Slower, but the safest way to catch problems that only appear under real traffic.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Feature flags.&lt;/strong&gt; Deploy code with the new feature switched off, then turn it on for specific users, a percentage, or everyone, without deploying again. This separates &lt;strong&gt;deploying&lt;/strong&gt; (getting code into production) from &lt;strong&gt;releasing&lt;/strong&gt; (letting users see it).&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Rolling&lt;/th&gt;
&lt;th&gt;Blue-green&lt;/th&gt;
&lt;th&gt;Canary&lt;/th&gt;
&lt;th&gt;Feature flags&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Control over exposure&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;All or nothing&lt;/td&gt;
&lt;td&gt;Gradual by traffic&lt;/td&gt;
&lt;td&gt;Very fine, by user&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rollback speed&lt;/td&gt;
&lt;td&gt;Slow&lt;/td&gt;
&lt;td&gt;Instant&lt;/td&gt;
&lt;td&gt;Fast&lt;/td&gt;
&lt;td&gt;Instant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extra infrastructure&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Double during switch&lt;/td&gt;
&lt;td&gt;Some&lt;/td&gt;
&lt;td&gt;Flag service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Low-risk changes&lt;/td&gt;
&lt;td&gt;Big switches&lt;/td&gt;
&lt;td&gt;Risky backend changes&lt;/td&gt;
&lt;td&gt;Product features&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;Deploying should be boring. Releasing should be a decision.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Argo Rollouts in practice&lt;/h2&gt;
&lt;p&gt;On Kubernetes, &lt;strong&gt;Argo Rollouts&lt;/strong&gt; (and &lt;strong&gt;Flagger&lt;/strong&gt;, its counterpart in the Flux ecosystem) adds canary and blue-green strategies with automatic analysis.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;Rollout&lt;/code&gt; replaces a &lt;code&gt;Deployment&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: shop-api
spec:
  replicas: 10
  strategy:
    canary:
      steps:
      - setWeight: 5
      - pause: { duration: 5m }
      - analysis:
          templates:
          - templateName: error-rate
      - setWeight: 25
      - pause: { duration: 10m }
      - setWeight: 50
      - pause: { duration: 10m }
  selector:
    matchLabels: { app: shop-api }
  template:
    # same pod template as a Deployment
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;strong&gt;analysis&lt;/strong&gt; step runs a Prometheus query, for example the error rate of the canary, and compares it with a threshold:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
  name: error-rate
spec:
  metrics:
  - name: error-rate
    interval: 1m
    count: 5
    successCondition: result[0] &amp;lt; 0.01
    provider:
      prometheus:
        address: http://prometheus.monitoring:9090
        query: |
          sum(rate(http_requests_total{app="shop-api",version="canary",code=~"5.."}[2m]))
          /
          sum(rate(http_requests_total{app="shop-api",version="canary"}[2m]))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If the error rate goes above 1%, the rollout is aborted and traffic goes back to the stable version. Nobody had to be awake.&lt;/p&gt;
&lt;p&gt;For precise traffic percentages, Rollouts integrates with Gateway API implementations, service meshes and ingress controllers. Without them, it approximates weights using replica counts.&lt;/p&gt;
&lt;h2&gt;Feature flags with OpenFeature&lt;/h2&gt;
&lt;p&gt;Feature flags used to mean either a homemade &lt;code&gt;if&lt;/code&gt; statement reading an environment variable, or a commercial service with its own SDK everywhere. &lt;strong&gt;OpenFeature&lt;/strong&gt;, a CNCF project, standardises the API: your code uses one SDK, and you can plug in different flag providers behind it (flagd, LaunchDarkly, Flagsmith, Unleash, GrowthBook and others).&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-go"&gt;enabled, _ := client.BooleanValue(ctx, "new-checkout", false, evalCtx)
if enabled {
    return newCheckout(w, r)
}
return oldCheckout(w, r)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Good flag habits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Give every flag an owner and an expiry date.&lt;/strong&gt; Old flags become technical debt fast.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clean up&lt;/strong&gt; once a feature is fully released.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep flags out of critical paths&lt;/strong&gt; where the flag service being down would break things, or use sensible defaults.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Automatic rollback on SLO breach&lt;/h2&gt;
&lt;p&gt;The best setups link releases to your service level objectives. If a new version uses up the error budget faster than normal, the rollout stops and reverses. That turns "watch the dashboards nervously" into an automatic safety net based on what users actually experience.&lt;/p&gt;
&lt;h2&gt;So, which should you use?&lt;/h2&gt;
&lt;p&gt;Start with feature flags for product changes, they're the easiest win. Add canary releases with automatic analysis for your most important services. Use blue-green when you need a clean switch, like a major version change. And keep rolling updates for everything low-risk.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: release in small steps, let metrics make the first decision, and make sure going back is always one click away.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Faster CI pipelines: from 40 minutes to 8</title>
      <link>https://deslypeter.com/writing/faster-ci-pipelines</link>
      <guid>https://deslypeter.com/writing/faster-ci-pipelines.html?lang=en</guid>
      <description>The caching, splitting and runner tricks that make the biggest difference.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;A slow pipeline costs more than compute time. Developers switch to something else while waiting, lose focus, batch up changes to avoid waiting again, and start merging with "it'll probably pass". A forty-minute pipeline quietly makes everything worse: bigger changes, slower reviews, more risk.&lt;/p&gt;
&lt;p&gt;Most projects can cut their pipeline time from around forty minutes to under ten. Here are the techniques that make the biggest difference, roughly in the order I'd try them.&lt;/p&gt;
&lt;h2&gt;Finding the slow parts&lt;/h2&gt;
&lt;p&gt;Don't optimise blindly. First, measure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Look at the &lt;strong&gt;duration of each job and step&lt;/strong&gt; over the last few weeks. GitHub Actions, GitLab and most CI tools show this.&lt;/li&gt;
&lt;li&gt;Find the &lt;strong&gt;critical path&lt;/strong&gt;: the chain of jobs that determines total time. Speeding up a job that runs in parallel with a slower one changes nothing.&lt;/li&gt;
&lt;li&gt;Check how much time goes into &lt;strong&gt;setup&lt;/strong&gt;: installing tools, downloading dependencies, pulling images. It's often a surprisingly large share.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Usually, three or four steps take most of the time. Focus there.&lt;/p&gt;
&lt;h2&gt;Caching everything that can be cached&lt;/h2&gt;
&lt;p&gt;The biggest win for most pipelines.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dependency caches.&lt;/strong&gt; Package downloads (npm, pip, Maven, Go modules) shouldn't happen from scratch every run. Most setup actions have a built-in cache option keyed on the lock file:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;- uses: actions/setup-node@&amp;lt;sha&amp;gt; # v4
  with:
    node-version: 22
    cache: npm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Docker layer caching.&lt;/strong&gt; With BuildKit, cache layers between runs, in the CI provider's cache or a registry:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;- uses: docker/build-push-action@&amp;lt;sha&amp;gt; # v6
  with:
    cache-from: type=registry,ref=ghcr.io/my-org/shop-api:buildcache
    cache-to: type=registry,ref=ghcr.io/my-org/shop-api:buildcache,mode=max
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Combined with a well-ordered Dockerfile (dependencies first, code last), image builds often drop from many minutes to well under one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Build caches.&lt;/strong&gt; Tools like Gradle, Bazel, Nx and Turborepo can cache build and test outputs remotely, so unchanged modules aren't rebuilt or retested at all.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The fastest work is the work your pipeline doesn't have to do again.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Running in parallel&lt;/h2&gt;
&lt;p&gt;Many pipelines run steps one after another out of habit. Look for independent work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lint, unit tests, and security scans can usually run &lt;strong&gt;at the same time&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Use a &lt;strong&gt;matrix&lt;/strong&gt; to test multiple versions or components in parallel.&lt;/li&gt;
&lt;li&gt;Start the image build while slower test suites are still running, if your process allows it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Splitting tests and quarantining flaky ones&lt;/h2&gt;
&lt;p&gt;Tests are often the longest step. Two techniques:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Test splitting.&lt;/strong&gt; Divide the test suite across several parallel jobs, ideally based on historical timing so each job takes about the same time. Many test frameworks and CI tools support this, either natively or with small helper tools.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flaky test quarantine.&lt;/strong&gt; A test that fails randomly forces reruns of the whole pipeline. That's pure waste. Track flaky tests, move them to a separate non-blocking job, and fix them with a deadline. Never just add automatic retries everywhere and forget about it.&lt;/p&gt;
&lt;p&gt;Also ask: does every test need to run on every commit? Long end-to-end suites can run on merge to main or nightly, while pull requests run a focused subset.&lt;/p&gt;
&lt;h2&gt;Only running what changed&lt;/h2&gt;
&lt;p&gt;In monorepos, rebuilding and retesting everything for a one-line change is the biggest source of waste:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Path filters&lt;/strong&gt; trigger jobs only when relevant folders change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Affected-only builds&lt;/strong&gt; with Nx, Turborepo, Bazel or Pants use the dependency graph to find exactly which projects a change touches.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Better runners&lt;/h2&gt;
&lt;p&gt;Sometimes the machine is the bottleneck:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bigger runners&lt;/strong&gt; with more CPU and memory can be cheaper overall if they cut time significantly. Measure cost per pipeline, not cost per minute.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-hosted ephemeral runners&lt;/strong&gt;, for example with &lt;strong&gt;Actions Runner Controller&lt;/strong&gt; on Kubernetes, give you control over machine size and keep caches close to the runners. Make them ephemeral, one job per runner, for security.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Faster third-party runner services&lt;/strong&gt; exist too, often with better caching built in.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Smaller wins that add up&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Shallow Git clones (&lt;code&gt;fetch-depth: 1&lt;/code&gt;) unless you need history.&lt;/li&gt;
&lt;li&gt;Pre-built CI images with your tools already installed.&lt;/li&gt;
&lt;li&gt;Cancelling outdated runs when a new commit is pushed to the same branch (&lt;code&gt;concurrency&lt;/code&gt; with &lt;code&gt;cancel-in-progress&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Removing steps nobody looks at anymore.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, what's a good target?&lt;/h2&gt;
&lt;p&gt;Under ten minutes from push to a green check for a pull request is a good goal for most services. Under five feels fantastic. Start by measuring, add caching, parallelise, deal with flaky tests, and you'll be surprised how much time disappears.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: treat pipeline speed as a feature. Every minute you save is saved again by every developer, on every commit.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Pipelines in real code with Dagger</title>
      <link>https://deslypeter.com/writing/pipelines-in-real-code-dagger</link>
      <guid>https://deslypeter.com/writing/pipelines-in-real-code-dagger.html?lang=en</guid>
      <description>Tired of YAML that only works in CI? Write your pipeline in Go or Python and run it anywhere.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Here's a loop every DevOps engineer knows. Change the pipeline YAML. Commit. Push. Wait for CI. It fails on a typo. Fix. Commit "fix ci". Push. Wait. Fail. "fix ci again". Twenty commits later, it works, and the Git history looks like a cry for help.&lt;/p&gt;
&lt;p&gt;The main issue is that most pipelines can only run inside the CI system. You can't run them on your laptop, debug them properly, or reuse logic without copying YAML. Dagger tries to fix that.&lt;/p&gt;
&lt;h2&gt;The YAML problem&lt;/h2&gt;
&lt;p&gt;CI YAML has grown into a programming language nobody designed as one. Conditions, loops, variables, templating, expressions inside strings. But without a debugger, tests, type checking or a decent way to share code.&lt;/p&gt;
&lt;p&gt;And every CI system has its own dialect. A pipeline written for GitHub Actions doesn't run on GitLab, Jenkins or your laptop.&lt;/p&gt;
&lt;h2&gt;What Dagger does&lt;/h2&gt;
&lt;p&gt;Dagger, created by some of the original Docker team, lets you write pipelines as &lt;strong&gt;code in a real programming language&lt;/strong&gt;: Go, Python, TypeScript, and others. Every step runs in a container, using a BuildKit-based engine. The same pipeline runs identically on your laptop and in any CI system.&lt;/p&gt;
&lt;p&gt;Your CI configuration shrinks to "install Dagger, run this function".&lt;/p&gt;
&lt;h2&gt;My first Dagger pipeline&lt;/h2&gt;
&lt;p&gt;A small example in Go: build and test an app, then build a container image.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-go"&gt;package main

import (
    "context"
    "dagger/shop/internal/dagger"
)

type Shop struct{}

// Run the tests
func (m *Shop) Test(ctx context.Context, source *dagger.Directory) (string, error) {
    return dag.Container().
        From("golang:1.25").
        WithMountedCache("/go/pkg/mod", dag.CacheVolume("go-mod")).
        WithDirectory("/src", source).
        WithWorkdir("/src").
        WithExec([]string{"go", "test", "./..."}).
        Stdout(ctx)
}

// Build the production image
func (m *Shop) Build(source *dagger.Directory) *dagger.Container {
    binary := dag.Container().
        From("golang:1.25").
        WithDirectory("/src", source).
        WithWorkdir("/src").
        WithEnvVariable("CGO_ENABLED", "0").
        WithExec([]string{"go", "build", "-o", "/app", "./cmd/server"}).
        File("/app")

    return dag.Container().
        From("gcr.io/distroless/static-debian12:nonroot").
        WithFile("/app", binary).
        WithEntrypoint([]string{"/app"})
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then, from your terminal:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;dagger call test --source=.
dagger call build --source=. publish --address=ghcr.io/my-org/shop-api:dev
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It's normal Go code. You get autocompletion, types, functions, loops, error handling, and you can test your pipeline logic like any other code.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The best CI pipeline is one you can run, debug and fix on your own machine before anyone else sees it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Same pipeline locally and in CI&lt;/h2&gt;
&lt;p&gt;In GitHub Actions, the workflow becomes tiny:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;- uses: dagger/dagger-for-github@&amp;lt;sha&amp;gt;
  with:
    verb: call
    args: test --source=.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Move to GitLab or Jenkins tomorrow, and only those few lines change. The pipeline itself stays the same.&lt;/p&gt;
&lt;p&gt;Caching is built in: every step is cached by its inputs, so unchanged steps are skipped, locally and in CI (if the CI runner keeps the cache or uses Dagger's cloud caching).&lt;/p&gt;
&lt;h2&gt;Reusing modules&lt;/h2&gt;
&lt;p&gt;Dagger has a module system. You can call modules others have written (for example for linting, scanning or deploying) or share your own across your organisation. That's a much nicer way to share pipeline logic than copying YAML snippets between repositories.&lt;/p&gt;
&lt;h2&gt;When it's overkill&lt;/h2&gt;
&lt;p&gt;Dagger isn't for every project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Simple pipelines&lt;/strong&gt;: if your pipeline is "run tests, build image, push", plain CI YAML is fine and easier for everyone to understand.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Team skills&lt;/strong&gt;: everyone who touches the pipeline needs to be comfortable with the chosen language.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Another tool to learn and run&lt;/strong&gt;: the Dagger engine needs to be available wherever pipelines run, and it's still evolving.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI-native features&lt;/strong&gt; like matrix builds, environments and approvals still come from your CI system, so you'll use both.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Where it shines: complex pipelines, monorepos with many components, teams tired of "fix ci" commits, and organisations using more than one CI system.&lt;/p&gt;
&lt;h2&gt;So, is it worth trying?&lt;/h2&gt;
&lt;p&gt;If your pipelines have grown into hundreds of lines of YAML that nobody wants to touch, yes. Start by moving one complex job into a Dagger function and run it locally. If the "push and pray" loop disappears, you'll know.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: pipelines are software. Dagger lets you finally treat them that way, with the tools we use for every other piece of code.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Database changes that don't break deployments</title>
      <link>https://deslypeter.com/writing/database-changes-safe-deployments</link>
      <guid>https://deslypeter.com/writing/database-changes-safe-deployments.html?lang=en</guid>
      <description>Code rolls back easily. Databases don't. How to change schemas safely.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Most of the scariest deployments I can think of had one thing in common: a database change. The code part was fine. You can roll code back in seconds. But once you've dropped a column, renamed a table, or migrated a million rows, there's no quick undo.&lt;/p&gt;
&lt;p&gt;Database changes need their own spot in your delivery process. Here's how to make them routine.&lt;/p&gt;
&lt;h2&gt;Why migrations break things&lt;/h2&gt;
&lt;p&gt;A few classic ways schema changes cause outages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The new code expects a column that doesn't exist yet&lt;/strong&gt;, because the migration ran after the deploy, or failed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The old code breaks on the new schema&lt;/strong&gt;, because during a rolling update both versions run at the same time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A rollback of the code&lt;/strong&gt; leaves the database in the new shape, and the old code doesn't understand it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A long-running migration locks a table&lt;/strong&gt;, and everything waiting on it times out.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Someone changed the database by hand&lt;/strong&gt;, and the migration fails because reality doesn't match expectations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The common theme: code and database change at different moments, and for a while, both old and new versions of the code talk to the same database.&lt;/p&gt;
&lt;h2&gt;Expand, then contract&lt;/h2&gt;
&lt;p&gt;The single most useful pattern for safe database changes is &lt;strong&gt;expand and contract&lt;/strong&gt; (also called parallel change). Instead of one breaking change, you make a series of compatible ones.&lt;/p&gt;
&lt;p&gt;Example: renaming a column from &lt;code&gt;name&lt;/code&gt; to &lt;code&gt;full_name&lt;/code&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Expand&lt;/strong&gt;: add the new column &lt;code&gt;full_name&lt;/code&gt;. Old code ignores it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write to both&lt;/strong&gt;: deploy code that writes to both &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;full_name&lt;/code&gt;, and reads from &lt;code&gt;name&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backfill&lt;/strong&gt;: copy existing data from &lt;code&gt;name&lt;/code&gt; to &lt;code&gt;full_name&lt;/code&gt;, in batches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Switch reads&lt;/strong&gt;: deploy code that reads from &lt;code&gt;full_name&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stop writing the old column&lt;/strong&gt;: deploy code that only uses &lt;code&gt;full_name&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contract&lt;/strong&gt;: later, once you're confident, drop the &lt;code&gt;name&lt;/code&gt; column.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;More steps, sure. But at every stage, both the current and previous code versions work, so every deployment can be undone safely.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Never make a database change that the previous version of your code can't survive.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Rules of thumb&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Additive changes are safe&lt;/strong&gt;: new tables, new nullable columns, new indexes (created concurrently where your database supports it).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Destructive changes need a waiting period&lt;/strong&gt;: dropping or renaming columns and tables only after no running code uses them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Avoid long locks&lt;/strong&gt;: big data migrations in batches, not one giant transaction. Know which operations lock tables in your database.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Separate schema changes from data migrations&lt;/strong&gt; where possible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migrations are forward-only in production.&lt;/strong&gt; "Down" migrations are useful in development, but in production, fix forward with a new migration.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tools: Atlas, Flyway, Liquibase&lt;/h2&gt;
&lt;p&gt;You need a tool that applies migrations in order and records what's been applied:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Flyway&lt;/strong&gt;: simple, SQL-file based, widely used, especially in the Java world.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Liquibase&lt;/strong&gt;: changesets in SQL, XML, YAML or JSON, with rich features for enterprises.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Atlas&lt;/strong&gt;: a newer tool with a declarative approach. You describe the desired schema, and Atlas plans the migration, like Terraform for databases. It also lints migrations for dangerous changes, like dropping a column or adding a non-nullable column without a default.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Framework tools&lt;/strong&gt;: Django migrations, Rails migrations, Alembic, Prisma, EF Core. Fine to use if your app framework has them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;When to run migrations&lt;/h2&gt;
&lt;p&gt;Common options in a Kubernetes world:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A Kubernetes Job before the deployment&lt;/strong&gt;, for example a Helm pre-upgrade hook or an Argo CD sync wave / pre-sync hook. The deployment only continues if the migration succeeds.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An init container&lt;/strong&gt; in the app pod. Simple, but with many replicas, several may try to migrate at once. Use a tool with locking.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A separate pipeline step&lt;/strong&gt; before deploying the new version.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Whichever you choose, the migration must succeed &lt;strong&gt;before&lt;/strong&gt; the new code needs it, and must not break the old code still running.&lt;/p&gt;
&lt;h2&gt;Testing migrations in CI&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Run all migrations from scratch&lt;/strong&gt; on a fresh database in CI, to make sure the chain works.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run new migrations against a copy of production-like data&lt;/strong&gt; (anonymised) to catch performance problems and locks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lint migrations&lt;/strong&gt; for risky operations (Atlas, squawk for PostgreSQL, and similar tools).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test both code versions&lt;/strong&gt; against the new schema if you can.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, how do you make database changes boring?&lt;/h2&gt;
&lt;p&gt;Use a migration tool, make every change backward compatible with expand and contract, run migrations automatically before the code that needs them, and test them in CI with realistic data. It's more steps, but each step is small and safe.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: databases have long memories. Change them slowly, in small compatible steps, and they'll forgive you.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Version numbers and changelogs on autopilot</title>
      <link>https://deslypeter.com/writing/versions-and-changelogs-on-autopilot</link>
      <guid>https://deslypeter.com/writing/versions-and-changelogs-on-autopilot.html?lang=en</guid>
      <description>Let commit messages decide the version and write the changelog.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Releasing used to involve a little ritual. Someone decides it's time. They look through the commits since the last release, try to remember what changed, guess whether it's a minor or major version, write a changelog by hand, tag it, and hope they didn't forget anything.&lt;/p&gt;
&lt;p&gt;Automating that process usually gives better results than what we managed by hand.&lt;/p&gt;
&lt;h2&gt;Semantic versioning, simply&lt;/h2&gt;
&lt;p&gt;Most projects use &lt;strong&gt;Semantic Versioning (SemVer)&lt;/strong&gt;: &lt;code&gt;MAJOR.MINOR.PATCH&lt;/code&gt;, like &lt;code&gt;2.4.1&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PATCH&lt;/strong&gt; (&lt;code&gt;2.4.1&lt;/code&gt; → &lt;code&gt;2.4.2&lt;/code&gt;): bug fixes, nothing new, nothing broken.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MINOR&lt;/strong&gt; (&lt;code&gt;2.4.1&lt;/code&gt; → &lt;code&gt;2.5.0&lt;/code&gt;): new features, backward compatible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MAJOR&lt;/strong&gt; (&lt;code&gt;2.4.1&lt;/code&gt; → &lt;code&gt;3.0.0&lt;/code&gt;): breaking changes. Users may need to change something.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The version number is a promise to your users. A minor upgrade should be safe. A major one deserves attention.&lt;/p&gt;
&lt;h2&gt;Conventional Commits&lt;/h2&gt;
&lt;p&gt;The trick to automating versions is making commit messages machine-readable. &lt;strong&gt;Conventional Commits&lt;/strong&gt; is a simple convention:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;feat: add Apple Pay to checkout
fix: handle empty cart in order summary
docs: explain retry configuration
chore: update dependencies
feat!: remove deprecated v1 payment API
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;feat&lt;/code&gt; means a new feature, so a &lt;strong&gt;minor&lt;/strong&gt; bump.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fix&lt;/code&gt; means a bug fix, so a &lt;strong&gt;patch&lt;/strong&gt; bump.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;!&lt;/code&gt; or a &lt;code&gt;BREAKING CHANGE:&lt;/code&gt; footer means a &lt;strong&gt;major&lt;/strong&gt; bump.&lt;/li&gt;
&lt;li&gt;Other types (&lt;code&gt;docs&lt;/code&gt;, &lt;code&gt;chore&lt;/code&gt;, &lt;code&gt;refactor&lt;/code&gt;, &lt;code&gt;test&lt;/code&gt;, &lt;code&gt;ci&lt;/code&gt;) don't trigger a release by themselves.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can add a scope too: &lt;code&gt;fix(api): ...&lt;/code&gt;, &lt;code&gt;feat(ui): ...&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To keep everyone consistent, add &lt;strong&gt;commitlint&lt;/strong&gt; as a check, or use squash merges where the pull request title follows the convention, which is often easier for teams.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If your commit history is clear enough for a machine to understand, it's clear enough for your future self too.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;release-please in action&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;release-please&lt;/strong&gt;, from Google, is my favourite tool for this. It watches your main branch and keeps an open "release pull request" that contains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The next version number, calculated from the commits since the last release.&lt;/li&gt;
&lt;li&gt;An updated &lt;code&gt;CHANGELOG.md&lt;/code&gt;, grouped into features, bug fixes and breaking changes.&lt;/li&gt;
&lt;li&gt;Version bumps in files like &lt;code&gt;package.json&lt;/code&gt;, &lt;code&gt;pyproject.toml&lt;/code&gt; or a Helm &lt;code&gt;Chart.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you're ready to release, you merge that pull request. release-please creates the Git tag and the GitHub release. Your normal pipeline sees the tag and builds and publishes the artifacts.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;name: release-please
on:
  push:
    branches: [main]

permissions:
  contents: write
  pull-requests: write

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: googleapis/release-please-action@&amp;lt;sha&amp;gt; # v4
        with:
          release-type: go
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What I like: a human still decides &lt;strong&gt;when&lt;/strong&gt; to release, by merging the PR. The tool just does all the bookkeeping.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;semantic-release&lt;/strong&gt; is a popular alternative that releases fully automatically on every merge. Great for libraries with frequent small releases, a bit too eager for some applications.&lt;/p&gt;
&lt;h2&gt;Changelogs people actually read&lt;/h2&gt;
&lt;p&gt;Generated changelogs are only as good as your commit messages. A few tips:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Write commit (or PR) titles &lt;strong&gt;for users&lt;/strong&gt;, not for yourself: "fix: show correct price for discounted items", not "fix bug".&lt;/li&gt;
&lt;li&gt;Mark breaking changes clearly and explain migration steps in the commit body.&lt;/li&gt;
&lt;li&gt;Edit the release PR's changelog before merging if something needs more explanation. It's just a file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Trunk-based or GitFlow?&lt;/h2&gt;
&lt;p&gt;Automated versioning works best with &lt;strong&gt;trunk-based development&lt;/strong&gt;: short-lived branches, merged often into main, with main always releasable. Releases are just tags on main.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GitFlow&lt;/strong&gt;, with long-lived develop, release and hotfix branches, was designed for a world of infrequent, big releases. It still makes sense for some products (like software shipped to customers who install specific versions), but for most web services it adds complexity without much benefit.&lt;/p&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Agree on Conventional Commits for pull request titles, enforce it with a simple check, and add release-please to one repository. After a few releases, nobody will want to go back to writing changelogs by hand.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: let the robot count and write. Keep the humans for deciding when it's time to ship.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Keeping dependencies up to date without the pain</title>
      <link>https://deslypeter.com/writing/dependency-updates-renovate</link>
      <guid>https://deslypeter.com/writing/dependency-updates-renovate.html?lang=en</guid>
      <description>Renovate and Dependabot can update everything. The setup that keeps it calm.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Every project starts with fresh dependencies. A year later, half of them are outdated. Two years later, upgrading one library requires upgrading five others, the framework, and the language version, and suddenly a "small update" is a three-week project.&lt;/p&gt;
&lt;p&gt;The fix isn't heroic upgrade sprints. It's small, constant, automated updates. Renovate and Dependabot make that possible, if you set them up so they help instead of flooding you with pull requests.&lt;/p&gt;
&lt;h2&gt;Why updates pile up&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nobody owns them.&lt;/strong&gt; Updates are important but never urgent, until a vulnerability makes them urgent.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fear of breaking things.&lt;/strong&gt; Without good tests, every update feels risky.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Too many at once.&lt;/strong&gt; Turning on a bot in an old repo produces fifty pull requests on day one, and people just ignore them all.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Dependabot vs Renovate&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Dependabot&lt;/strong&gt; is built into GitHub. Easy to switch on, handles security alerts and version updates for the most common ecosystems. Good enough for many projects.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Renovate&lt;/strong&gt; (by Mend, open source) is more powerful and flexible:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supports far more package managers and file types: Dockerfiles, Helm charts, Kubernetes manifests, Terraform, GitHub Actions, and custom regex-based matching for almost anything.&lt;/li&gt;
&lt;li&gt;Very flexible &lt;strong&gt;grouping, scheduling and automerge&lt;/strong&gt; rules.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Dependency Dashboard&lt;/strong&gt; issue showing everything pending.&lt;/li&gt;
&lt;li&gt;Works on GitHub, GitLab, Bitbucket, Azure DevOps and more.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For infrastructure-heavy repositories, I prefer Renovate, because it can update image tags, chart versions and pinned action SHAs too.&lt;/p&gt;
&lt;h2&gt;My Renovate config&lt;/h2&gt;
&lt;p&gt;A calm starting configuration:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-json"&gt;{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:recommended", ":dependencyDashboard"],
  "schedule": ["before 7am on monday"],
  "timezone": "Europe/Berlin",
  "prConcurrentLimit": 5,
  "minimumReleaseAge": "3 days",
  "packageRules": [
    {
      "matchUpdateTypes": ["patch", "minor"],
      "matchCurrentVersion": "!/^0/",
      "groupName": "non-major dependencies",
      "automerge": true
    },
    {
      "matchManagers": ["github-actions"],
      "groupName": "github actions",
      "pinDigests": true
    },
    {
      "matchDatasources": ["docker"],
      "pinDigests": true
    }
  ],
  "vulnerabilityAlerts": {
    "schedule": ["at any time"],
    "labels": ["security"]
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What this does:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Weekly schedule&lt;/strong&gt; so updates arrive in one batch, not all week long.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A limit of five open PRs&lt;/strong&gt; so nobody gets flooded.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;minimumReleaseAge&lt;/code&gt;&lt;/strong&gt; waits a few days after a release before proposing it. Many malicious package versions are discovered and removed within days, and so are many broken releases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Groups non-major updates&lt;/strong&gt; into one PR, and &lt;strong&gt;automerges&lt;/strong&gt; them if all checks pass.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pins GitHub Actions and Docker images to digests&lt;/strong&gt;, and keeps those digests updated.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security fixes skip the schedule&lt;/strong&gt; and arrive immediately.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Small updates every week are boring. A giant upgrade every two years is a project. Choose boring.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Automerge, safely&lt;/h2&gt;
&lt;p&gt;Automerging dependency updates might sound risky, but it's what keeps the process manageable. The rules are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Good tests&lt;/strong&gt; that run on every PR. Automerge without tests is gambling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Required status checks&lt;/strong&gt; in branch protection, so nothing merges unless CI is green.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Only for low-risk updates&lt;/strong&gt;: patch and minor versions of stable (1.0+) packages, dev dependencies, linters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Never automerge major versions.&lt;/strong&gt; Those get a human review.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Handling breaking changes&lt;/h2&gt;
&lt;p&gt;Major updates need attention:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Renovate includes &lt;strong&gt;release notes&lt;/strong&gt; in the PR. Read them.&lt;/li&gt;
&lt;li&gt;Update &lt;strong&gt;one major at a time&lt;/strong&gt;, not five together.&lt;/li&gt;
&lt;li&gt;For big frameworks, set up a separate group and schedule time for it, like any other piece of work.&lt;/li&gt;
&lt;li&gt;AI coding agents are increasingly useful here: when an upgrade breaks the build because an API changed, an agent can propose the code changes in the same PR.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Images and charts too&lt;/h2&gt;
&lt;p&gt;Application dependencies are only part of the story. Infrastructure has dependencies as well:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Base images&lt;/strong&gt; in Dockerfiles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Helm chart versions&lt;/strong&gt; in your GitOps repos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Container image tags&lt;/strong&gt; in Kubernetes manifests&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terraform providers and modules&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt; versions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Renovate handles all of these. Keeping base images current is one of the easiest ways to reduce vulnerabilities in your containers.&lt;/p&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Turn on Renovate (or Dependabot) in one repository with a weekly schedule and a PR limit. Enable automerge for patch updates once you trust your tests. Expand to minor updates, then to infrastructure files. Within a month, staying up to date becomes background noise instead of a project.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: dependencies go off like milk, not wine. Let a bot keep them fresh, a little every week.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>How I structure Terraform projects</title>
      <link>https://deslypeter.com/writing/structuring-terraform-projects</link>
      <guid>https://deslypeter.com/writing/structuring-terraform-projects.html?lang=en</guid>
      <description>Modules, environments and state, organised so the next person can understand them.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Every Terraform project starts clean. One folder, a &lt;code&gt;main.tf&lt;/code&gt;, a few resources. Then a second environment arrives. Then a few more services, a shared network, a second region. Two years later, there's a 3,000-line &lt;code&gt;main.tf&lt;/code&gt;, a state file nobody dares to touch, and a plan that takes ten minutes.&lt;/p&gt;
&lt;p&gt;Structure makes the difference between infrastructure code that grows smoothly and code that becomes everyone's least favourite part of the repo. This is the layout I keep using. (Everything here works for OpenTofu too.)&lt;/p&gt;
&lt;h2&gt;The principles&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Small state files.&lt;/strong&gt; Split infrastructure into independent pieces, each with its own state. Smaller blast radius, faster plans, fewer people blocking each other.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Separate by lifecycle.&lt;/strong&gt; Things that change rarely (networks, accounts) shouldn't share state with things that change daily (app resources).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Environments look the same.&lt;/strong&gt; Staging and production should use the same code with different inputs, not copied folders that slowly drift apart.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reusable logic lives in modules.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;A layout that works&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;infrastructure/
  modules/
    network/
    eks-cluster/
    rds-postgres/
  live/
    staging/
      network/
        main.tf
        backend.tf
        terraform.tfvars
      cluster/
      databases/
    production/
      network/
      cluster/
      databases/
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;modules/&lt;/code&gt;&lt;/strong&gt; contains reusable building blocks with no environment-specific values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;live/&lt;/code&gt;&lt;/strong&gt; contains the actual deployments. Each folder is one state file, calling modules with environment-specific inputs.&lt;/li&gt;
&lt;li&gt;Each live folder is small and focused: the network, the cluster, the databases.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Later components can read outputs from earlier ones with &lt;code&gt;terraform_remote_state&lt;/code&gt; or, better, by looking up resources with data sources or a shared parameter store.&lt;/p&gt;
&lt;h2&gt;Folders vs workspaces&lt;/h2&gt;
&lt;p&gt;Terraform has &lt;strong&gt;workspaces&lt;/strong&gt;, which let one configuration have multiple states. It's tempting to use them for environments: &lt;code&gt;terraform workspace select production&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I prefer &lt;strong&gt;separate folders&lt;/strong&gt; for environments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It's visible in the code which environment you're working on.&lt;/li&gt;
&lt;li&gt;Production can have its own backend, its own permissions and its own pipeline.&lt;/li&gt;
&lt;li&gt;Accidentally applying to the wrong workspace is a classic and painful mistake.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Workspaces are still handy for making many identical copies of the same thing, like a stack for each customer or for preview environments.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you have to run a command to find out which environment you're about to change, the structure is working against you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Remote state and locking&lt;/h2&gt;
&lt;p&gt;Never keep state on a laptop. Use a remote backend with locking:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-hcl"&gt;terraform {
  backend "s3" {
    bucket       = "acme-terraform-state"
    key          = "production/network/terraform.tfstate"
    region       = "eu-central-1"
    encrypt      = true
    use_lockfile = true
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The S3 backend now supports native locking with a lock file, so the separate DynamoDB table is no longer required. Azure Storage and Google Cloud Storage backends lock natively too.&lt;/p&gt;
&lt;p&gt;Protect the state bucket: versioning on, encryption on, access limited to the people and pipelines that need it. State often contains secrets.&lt;/p&gt;
&lt;h2&gt;Terragrunt or Stacks?&lt;/h2&gt;
&lt;p&gt;The folder layout above has one annoying side effect: lots of repeated boilerplate. Every folder needs its backend config and provider config.&lt;/p&gt;
&lt;p&gt;Tools that help:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Terragrunt&lt;/strong&gt; (from Gruntwork) keeps configurations DRY: backend and provider settings are defined once and inherited, and you can run commands across many folders with dependencies between them. Very popular for exactly this layout.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terraform Stacks&lt;/strong&gt; (HashiCorp, with HCP Terraform) is the official answer for orchestrating many components and deployments together.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenTofu's early variable evaluation&lt;/strong&gt; removes some of the need for wrappers, since variables can now be used in backend configuration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure automation platforms&lt;/strong&gt; (Spacelift, env0, Scalr, HCP Terraform) manage stacks and dependencies in their own way.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For a small team, plain folders with a bit of repetition are fine. Once you have dozens of components, Terragrunt or a platform pays off.&lt;/p&gt;
&lt;h2&gt;Naming and tags&lt;/h2&gt;
&lt;p&gt;Small things that save a lot of confusion:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Consistent resource names&lt;/strong&gt;: &lt;code&gt;&amp;lt;env&amp;gt;-&amp;lt;service&amp;gt;-&amp;lt;purpose&amp;gt;&lt;/code&gt;, like &lt;code&gt;prod-shop-db&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Default tags&lt;/strong&gt; in the provider block, so every resource gets them automatically:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-hcl"&gt;provider "aws" {
  region = "eu-central-1"
  default_tags {
    tags = {
      environment = "production"
      owner       = "team-platform"
      managed_by  = "terraform"
      repository  = "acme/infrastructure"
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pin provider and module versions&lt;/strong&gt;, and commit the &lt;code&gt;.terraform.lock.hcl&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Format and validate&lt;/strong&gt; in CI (&lt;code&gt;terraform fmt -check&lt;/code&gt;, &lt;code&gt;terraform validate&lt;/code&gt;, tflint).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, what's the most important thing?&lt;/h2&gt;
&lt;p&gt;Keep state files small and separated by lifecycle and environment. Almost every other problem, slow plans, scary applies, merge conflicts, people blocking each other, gets easier once that's in place.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: structure your Terraform for the person who joins next year. If they can find their way around, you did it right.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Testing infrastructure code</title>
      <link>https://deslypeter.com/writing/testing-infrastructure-code</link>
      <guid>https://deslypeter.com/writing/testing-infrastructure-code.html?lang=en</guid>
      <description>We test application code. Why not infrastructure? The tools and the trade-offs.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Ask a developer whether they'd merge application code without tests, and they'll look at you strangely. Ask the same about Terraform, and many teams shrug: "we run &lt;code&gt;plan&lt;/code&gt; and look at it."&lt;/p&gt;
&lt;p&gt;Reading a plan is useful, but it's not the same as testing. It doesn't show if the module works as intended, if a change breaks something else, or if security rules are followed. Infrastructure code needs tests too, just a different kind.&lt;/p&gt;
&lt;h2&gt;The testing pyramid for infrastructure&lt;/h2&gt;
&lt;p&gt;Like application testing, infrastructure testing has layers, from cheap and fast to slow and expensive:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Static checks&lt;/strong&gt;: formatting, validation, linting, security scanning. Seconds, no cloud needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Policy tests&lt;/strong&gt;: rules that every plan must follow. Seconds, using the plan output.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unit-style tests&lt;/strong&gt;: checking module logic against a plan, or with mocked providers. Fast.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integration tests&lt;/strong&gt;: actually creating real resources in a test account, checking them, and destroying them. Minutes, costs money.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Most of the value comes from the first two layers. The last one is worth it for important shared modules.&lt;/p&gt;
&lt;h2&gt;Cheap checks first&lt;/h2&gt;
&lt;p&gt;These tests should run with every commit, preferably as pre-commit hooks and in CI:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;terraform fmt -check -recursive
terraform validate
tflint --recursive
checkov -d .          # or: trivy config .
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;fmt&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;validate&lt;/code&gt;&lt;/strong&gt; catch syntax and formatting issues.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tflint&lt;/strong&gt; catches provider-specific mistakes: invalid instance types, deprecated arguments, missing tags.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Checkov&lt;/strong&gt; or &lt;strong&gt;Trivy&lt;/strong&gt; catch security misconfigurations: public buckets, open security groups, missing encryption.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They're fast, free and catch a surprising number of real problems.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The best infrastructure bug is the one caught before &lt;code&gt;terraform plan&lt;/code&gt; ever talks to your cloud.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;terraform test&lt;/h2&gt;
&lt;p&gt;Since version 1.6, Terraform has a built-in testing framework (OpenTofu has an equivalent with &lt;code&gt;tofu test&lt;/code&gt;). Tests are written in HCL, in &lt;code&gt;.tftest.hcl&lt;/code&gt; files:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-hcl"&gt;# tests/bucket.tftest.hcl
variables {
  name        = "acme-test-logs"
  environment = "staging"
}

run "bucket_is_private_and_encrypted" {
  command = plan

  assert {
    condition     = aws_s3_bucket_public_access_block.this.block_public_acls == true
    error_message = "Bucket must block public ACLs."
  }

  assert {
    condition     = aws_s3_bucket.this.tags["environment"] == "staging"
    error_message = "Bucket must be tagged with its environment."
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With &lt;code&gt;command = plan&lt;/code&gt;, tests run against the plan, without creating anything. With &lt;code&gt;command = apply&lt;/code&gt;, they create real resources and destroy them afterwards. You can also &lt;strong&gt;mock providers&lt;/strong&gt;, which makes unit-style tests fast and free.&lt;/p&gt;
&lt;p&gt;For module authors, this is the easiest way to start testing. No new language, no extra tools.&lt;/p&gt;
&lt;h2&gt;Terratest&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Terratest&lt;/strong&gt;, from Gruntwork, is a Go library for integration testing. It deploys real infrastructure, runs checks against it (HTTP requests, SSH commands, API calls), and tears it down.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-go"&gt;func TestWebModule(t *testing.T) {
    opts := &amp;amp;terraform.Options{TerraformDir: "../examples/web"}
    defer terraform.Destroy(t, opts)
    terraform.InitAndApply(t, opts)

    url := terraform.Output(t, opts, "url")
    http_helper.HttpGetWithRetry(t, url, nil, 200, "OK", 30, 10*time.Second)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It's powerful because it tests whether the infrastructure actually works, not just whether it's configured correctly. It's also slower, needs Go knowledge, and costs real money for every run.&lt;/p&gt;
&lt;h2&gt;Policy tests&lt;/h2&gt;
&lt;p&gt;Policies answer "is this allowed?" for every change, regardless of who wrote it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OPA / Conftest&lt;/strong&gt; with policies written in Rego, run against the plan in JSON format.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Checkov custom policies&lt;/strong&gt; in Python or YAML.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sentinel&lt;/strong&gt; in HCP Terraform, or &lt;strong&gt;OPA&lt;/strong&gt; integration in other platforms.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example rules: no public S3 buckets, all resources must have an owner tag, only approved instance types, production databases must have deletion protection.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;terraform plan -out=plan.out
terraform show -json plan.out &amp;gt; plan.json
conftest test plan.json --policy policies/
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paying for test environments&lt;/h2&gt;
&lt;p&gt;Integration tests cost money. Ways to keep it under control:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A dedicated test account&lt;/strong&gt; with budgets and alerts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Always destroy&lt;/strong&gt; after tests, and run a nightly cleanup job (tools like cloud-nuke or aws-nuke) for anything left behind.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Small, cheap resource sizes&lt;/strong&gt; in test examples.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run integration tests on merge or nightly&lt;/strong&gt;, not on every commit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test modules, not whole environments.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Add static checks to CI today. Write a few &lt;code&gt;terraform test&lt;/code&gt; assertions for your most-used module. Add one or two policies for your most important rules. Only add Terratest when a module is critical enough to justify the time and cost.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: infrastructure fails in expensive ways. A few cheap tests now save a very expensive lesson later.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Pulumi, Terraform or CDK?</title>
      <link>https://deslypeter.com/writing/pulumi-terraform-or-cdk</link>
      <guid>https://deslypeter.com/writing/pulumi-terraform-or-cdk.html?lang=en</guid>
      <description>The same infrastructure written three ways, and what I learned.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Infrastructure as code has split into two camps. One says infrastructure should be described in a declarative configuration language, like Terraform's HCL. The other says: we already have great programming languages, why not use them? That's the idea behind Pulumi and the AWS CDK.&lt;/p&gt;
&lt;p&gt;The best way to compare them is to write the same thing in all three. So here's a simple S3 bucket with versioning, in each.&lt;/p&gt;
&lt;h2&gt;Terraform (HCL)&lt;/h2&gt;
&lt;pre&gt;&lt;code class="language-hcl"&gt;resource "aws_s3_bucket" "assets" {
  bucket = "acme-assets-prod"
  tags   = { environment = "production" }
}

resource "aws_s3_bucket_versioning" "assets" {
  bucket = aws_s3_bucket.assets.id
  versioning_configuration {
    status = "Enabled"
  }
}

output "bucket_name" {
  value = aws_s3_bucket.assets.bucket
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Pulumi (TypeScript)&lt;/h2&gt;
&lt;pre&gt;&lt;code class="language-typescript"&gt;import * as aws from "@pulumi/aws";

const assets = new aws.s3.BucketV2("assets", {
    bucket: "acme-assets-prod",
    tags: { environment: "production" },
});

new aws.s3.BucketVersioningV2("assets", {
    bucket: assets.id,
    versioningConfiguration: { status: "Enabled" },
});

export const bucketName = assets.bucket;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;AWS CDK (TypeScript)&lt;/h2&gt;
&lt;pre&gt;&lt;code class="language-typescript"&gt;import { Stack, StackProps, Tags, CfnOutput } from "aws-cdk-lib";
import * as s3 from "aws-cdk-lib/aws-s3";
import { Construct } from "constructs";

export class AssetsStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    const assets = new s3.Bucket(this, "Assets", {
      bucketName: "acme-assets-prod",
      versioned: true,
      encryption: s3.BucketEncryption.S3_MANAGED,
      blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
    });

    Tags.of(assets).add("environment", "production");
    new CfnOutput(this, "BucketName", { value: assets.bucketName });
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;HCL vs real languages&lt;/h2&gt;
&lt;p&gt;The examples look similar for a single bucket. The differences show up as things grow.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HCL (Terraform, OpenTofu)&lt;/strong&gt; is deliberately limited. Loops and conditions exist (&lt;code&gt;for_each&lt;/code&gt;, &lt;code&gt;count&lt;/code&gt;, ternaries), but it's not a full programming language. That's a feature: configurations are easy to read, even for people who aren't developers, and there's less room for clever code nobody understands.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pulumi&lt;/strong&gt; lets you use TypeScript, Python, Go, C#, Java or YAML. You get real loops, functions, classes, packages, IDE autocompletion and unit tests with familiar frameworks. Great for complex logic, and for developers who don't want to learn another language. The risk: infrastructure code that's too clever.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AWS CDK&lt;/strong&gt; also uses real languages, but its strength is &lt;strong&gt;constructs&lt;/strong&gt;: high-level building blocks with good defaults. Notice how the CDK bucket above got encryption and blocked public access almost for free. Higher-level constructs can create a whole load-balanced container service in a few lines. It generates CloudFormation underneath and is &lt;strong&gt;AWS only&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;HCL limits what you can write. Real languages limit nothing, which is both their strength and their danger.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;State, compared&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Terraform/OpenTofu&lt;/strong&gt;: state file in a backend you manage (S3, GCS, Azure Storage) or in HCP Terraform and other platforms.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pulumi&lt;/strong&gt;: state in Pulumi Cloud by default, or self-managed in an object storage bucket.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDK&lt;/strong&gt;: no separate state file. CloudFormation tracks the stack's state in AWS. Simpler, but you inherit CloudFormation's speed and limitations.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What fits which team&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Choose Terraform or OpenTofu&lt;/strong&gt; if:
- You work across multiple clouds and SaaS providers (the provider ecosystem is the largest).
- Your team includes ops people who aren't primarily developers.
- You want the most widely known tool, with the most examples and hiring options.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Choose Pulumi&lt;/strong&gt; if:
- Your team is developer-heavy and prefers TypeScript, Python or Go.
- Your infrastructure has complex logic that's painful in HCL.
- You want to test infrastructure code with normal unit testing tools.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Choose AWS CDK&lt;/strong&gt; if:
- You're all-in on AWS and plan to stay there.
- You like high-level constructs with good defaults.
- Your team already knows CloudFormation, or is happy to rely on it.&lt;/p&gt;
&lt;h2&gt;What I learned&lt;/h2&gt;
&lt;p&gt;Writing the same infrastructure three times made one thing clear: the language matters less than the discipline. Good module or component design, small state boundaries, consistent naming, tests and reviews matter in all three.&lt;/p&gt;
&lt;p&gt;For most teams I work with, Terraform or OpenTofu remains the default because of its ecosystem and readability. But for developer-led teams, I've seen Pulumi make infrastructure feel much more approachable.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: pick the tool your team will read and maintain happily. Infrastructure code is read far more often than it's written.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Someone clicked in the console: fixing drift</title>
      <link>https://deslypeter.com/writing/fixing-infrastructure-drift</link>
      <guid>https://deslypeter.com/writing/fixing-infrastructure-drift.html?lang=en</guid>
      <description>When reality doesn't match your code. How to find drift, and stop it happening.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;It's 4 p.m. on a Friday. Production is slow. Someone opens the cloud console and bumps the database instance size, just to get through the weekend. It works. Everyone goes home relieved.&lt;/p&gt;
&lt;p&gt;Three weeks later, someone runs &lt;code&gt;terraform apply&lt;/code&gt; for an unrelated change. Terraform sees the database is bigger than the code says, and helpfully shrinks it back. Production slows down again, and nobody understands why.&lt;/p&gt;
&lt;p&gt;That's drift: the difference between what your infrastructure code says and what actually exists.&lt;/p&gt;
&lt;h2&gt;Where drift comes from&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Manual hotfixes&lt;/strong&gt; in the console during incidents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quick experiments&lt;/strong&gt; that were supposed to be temporary.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Other tools&lt;/strong&gt; changing the same resources: autoscalers, cloud-managed defaults, security tools adding tags.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;People who don't know&lt;/strong&gt; a resource is managed by code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failed or partial applies&lt;/strong&gt; that left things half-changed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some drift is harmless. Some is dangerous: a security group opened "temporarily", an encryption setting turned off for debugging.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Drift isn't a technical problem. It's a gap between how people work under pressure and how your process expects them to work.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Finding it&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Scheduled plans.&lt;/strong&gt; The simplest approach: run &lt;code&gt;terraform plan&lt;/code&gt; on a schedule (nightly is common) for every state, and alert if it shows changes. Use the exit code:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;terraform plan -detailed-exitcode -lock=false
# exit code 0 = no changes
# exit code 1 = error
# exit code 2 = changes detected (drift, or unapplied code)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A small CI job that runs this across your stacks and posts to Slack is often enough.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Refresh-only plans.&lt;/strong&gt; &lt;code&gt;terraform plan -refresh-only&lt;/code&gt; shows only what changed in the real world, without mixing in changes from your code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Platforms.&lt;/strong&gt; HCP Terraform, Spacelift, env0, Scalr and others have drift detection built in, with dashboards and scheduled checks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cloud-native tools.&lt;/strong&gt; AWS Config, Azure Policy and similar services can flag changes to resources and non-compliant configurations, including resources that aren't managed by code at all.&lt;/p&gt;
&lt;h2&gt;Fixing it&lt;/h2&gt;
&lt;p&gt;When you find drift, there are two directions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Code wins&lt;/strong&gt;: the manual change was a mistake. Run &lt;code&gt;apply&lt;/code&gt; to restore the declared state.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reality wins&lt;/strong&gt;: the manual change was right (like the bigger database). Update the code to match, then &lt;code&gt;apply&lt;/code&gt; shows no changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The important part is deciding deliberately. Never just run &lt;code&gt;apply&lt;/code&gt; blindly on a drifted stack without understanding what will change. Read the plan.&lt;/p&gt;
&lt;p&gt;For resources created entirely by hand, bring them under management with &lt;strong&gt;import blocks&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-hcl"&gt;import {
  to = aws_s3_bucket.legacy_logs
  id = "acme-legacy-logs"
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then &lt;code&gt;terraform plan -generate-config-out=generated.tf&lt;/code&gt; can even write a first draft of the configuration for you.&lt;/p&gt;
&lt;h2&gt;Preventing it&lt;/h2&gt;
&lt;p&gt;Detection is good. Prevention is better:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Read-only console access by default.&lt;/strong&gt; Most people don't need write access in production consoles. Use break-glass roles for emergencies, with logging and alerts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A fast path for urgent changes.&lt;/strong&gt; If changing code and applying takes an hour, people will use the console. Make the code path fast enough for incidents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Follow up after incidents.&lt;/strong&gt; If someone made a manual fix, the postmortem includes "update the code".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tag managed resources&lt;/strong&gt; (&lt;code&gt;managed_by = terraform&lt;/code&gt;) so people know not to touch them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Policies&lt;/strong&gt; with AWS SCPs, Azure Policy or similar to block the most dangerous manual changes entirely.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use &lt;code&gt;ignore_changes&lt;/code&gt; carefully&lt;/strong&gt; for attributes that other systems legitimately manage, like an autoscaling group's desired capacity.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-hcl"&gt;lifecycle {
  ignore_changes = [desired_capacity]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;So, how much drift is acceptable?&lt;/h2&gt;
&lt;p&gt;Some drift will always happen, especially during incidents. The goal isn't zero drift. It's knowing about it within a day, and resolving it deliberately. A nightly drift check plus a habit of updating code after manual fixes gets you most of the way.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: the console isn't the enemy. Forgetting what you did in it is. Detect drift early and make the code the place where the truth lives.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Terraform state, explained</title>
      <link>https://deslypeter.com/writing/terraform-state-explained</link>
      <guid>https://deslypeter.com/writing/terraform-state-explained.html?lang=en</guid>
      <description>The file that knows everything about your infrastructure, and how to keep it safe.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;When people start with Terraform, they focus on the &lt;code&gt;.tf&lt;/code&gt; files. The resources, the modules, the variables. The state file is just something that appears after the first &lt;code&gt;apply&lt;/code&gt;, and most people don't think about it until something goes wrong.&lt;/p&gt;
&lt;p&gt;And something always goes wrong eventually. A lost state file, a corrupted one, two people applying at once, a secret leaked through state. Understanding state is what separates using Terraform from trusting it. (OpenTofu works the same way.)&lt;/p&gt;
&lt;h2&gt;What state actually is&lt;/h2&gt;
&lt;p&gt;Terraform's state is a JSON file that maps your code to real-world resources.&lt;/p&gt;
&lt;p&gt;When you write &lt;code&gt;resource "aws_s3_bucket" "logs"&lt;/code&gt;, Terraform needs to remember that this particular block corresponds to the bucket with ID &lt;code&gt;acme-logs-prod&lt;/code&gt; in your AWS account. That mapping, plus the last known attributes of every resource, is the state.&lt;/p&gt;
&lt;p&gt;Terraform uses it to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Know what exists&lt;/strong&gt;, so it can update or delete the right resources.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calculate the plan&lt;/strong&gt; by comparing code, state and reality.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Track dependencies&lt;/strong&gt; and outputs between resources.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Speed things up&lt;/strong&gt;, by not looking up everything from scratch every time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Without state, Terraform doesn't know which resources it manages. Delete the state file, and Terraform will try to create everything again, while the old resources keep running, unmanaged.&lt;/p&gt;
&lt;h2&gt;Remote state, always&lt;/h2&gt;
&lt;p&gt;For anything beyond a personal experiment, keep state in a remote backend with locking:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;S3&lt;/strong&gt; (with native lock files), &lt;strong&gt;Google Cloud Storage&lt;/strong&gt;, &lt;strong&gt;Azure Blob Storage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HCP Terraform&lt;/strong&gt; or other infrastructure automation platforms&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Locking prevents two people (or pipelines) from applying at the same time and corrupting state. Versioning on the bucket gives you history to recover from mistakes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Your state file is the memory of your infrastructure. Lose it, and Terraform wakes up with amnesia in a house full of strangers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Keeping it secret&lt;/h2&gt;
&lt;p&gt;State files often include &lt;strong&gt;secrets in plain text&lt;/strong&gt;: database passwords, private keys, tokens, or anything a resource returns as an attribute. Even if you mark a variable as &lt;code&gt;sensitive&lt;/code&gt;, it's hidden in the plan output, not in the state file.&lt;/p&gt;
&lt;p&gt;Protect state like you protect secrets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Encryption at rest&lt;/strong&gt; on the storage bucket.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strict access control&lt;/strong&gt;: only the pipeline and a few admins can read production state.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Never commit state to Git.&lt;/strong&gt; Add &lt;code&gt;*.tfstate&lt;/code&gt; and &lt;code&gt;*.tfstate.backup&lt;/code&gt; to &lt;code&gt;.gitignore&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenTofu's client-side state encryption&lt;/strong&gt; encrypts the state before it leaves your machine or pipeline, using a KMS key.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terraform's ephemeral resources and write-only arguments&lt;/strong&gt; keep certain secret values out of state entirely.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generate secrets outside Terraform&lt;/strong&gt; where possible, in a secret manager, and only pass references around.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Moving and refactoring&lt;/h2&gt;
&lt;p&gt;Renaming a resource or moving it into a module changes its address. Without telling Terraform, it would destroy the old resource and create a new one. For a database, that's a disaster.&lt;/p&gt;
&lt;p&gt;Modern Terraform handles this in code with &lt;strong&gt;&lt;code&gt;moved&lt;/code&gt; blocks&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-hcl"&gt;moved {
  from = aws_s3_bucket.logs
  to   = module.logging.aws_s3_bucket.this
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The plan shows a move instead of destroy-and-create. Because it's in code, it's reviewed and works across every environment. Much safer than the older &lt;code&gt;terraform state mv&lt;/code&gt; command.&lt;/p&gt;
&lt;h2&gt;Importing existing resources&lt;/h2&gt;
&lt;p&gt;To bring a manually created resource under Terraform's management, use &lt;strong&gt;&lt;code&gt;import&lt;/code&gt; blocks&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-hcl"&gt;import {
  to = aws_s3_bucket.legacy
  id = "acme-legacy-bucket"
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Run &lt;code&gt;terraform plan -generate-config-out=generated.tf&lt;/code&gt; and Terraform even writes a first draft of the resource configuration. Clean it up, plan again, and apply.&lt;/p&gt;
&lt;h2&gt;Removing resources from management&lt;/h2&gt;
&lt;p&gt;Sometimes you want Terraform to stop managing a resource without deleting it, for example when handing it over to another stack. Use a &lt;strong&gt;&lt;code&gt;removed&lt;/code&gt; block&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-hcl"&gt;removed {
  from = aws_s3_bucket.handover

  lifecycle {
    destroy = false
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The resource stays in the cloud. Terraform just forgets about it.&lt;/p&gt;
&lt;h2&gt;When it breaks&lt;/h2&gt;
&lt;p&gt;A few situations and what to do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stale lock&lt;/strong&gt; after a crashed pipeline: &lt;code&gt;terraform force-unlock &amp;lt;lock-id&amp;gt;&lt;/code&gt;, but only after checking that nothing is actually running.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Corrupted or wrong state&lt;/strong&gt;: restore a previous version from the bucket's version history. This is why versioning matters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;State out of sync with reality&lt;/strong&gt;: &lt;code&gt;terraform plan -refresh-only&lt;/code&gt; shows the differences, and &lt;code&gt;terraform apply -refresh-only&lt;/code&gt; updates state to match reality without changing infrastructure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Need to inspect state&lt;/strong&gt;: &lt;code&gt;terraform state list&lt;/code&gt; and &lt;code&gt;terraform state show &amp;lt;address&amp;gt;&lt;/code&gt; are safe, read-only ways to look inside.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Avoid editing the JSON by hand. If you really must, take a backup first, and know that you're on your own.&lt;/p&gt;
&lt;h2&gt;So, what should you check today?&lt;/h2&gt;
&lt;p&gt;Is every state file remote, locked, versioned, and encrypted? Who has access to production state? Are you still using &lt;code&gt;state mv&lt;/code&gt; commands instead of &lt;code&gt;moved&lt;/code&gt; blocks? Those three questions cover most of the risk.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: treat state as the most sensitive file in your infrastructure. Protect it, version it, and never let it live on a laptop.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Terraform in CI: plan on PR, apply on merge</title>
      <link>https://deslypeter.com/writing/terraform-in-ci-plan-on-pr</link>
      <guid>https://deslypeter.com/writing/terraform-in-ci-plan-on-pr.html?lang=en</guid>
      <description>Stop running Terraform from laptops. How I automated it.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;In many teams, Terraform is still run from someone's laptop. They pull the latest code, run &lt;code&gt;plan&lt;/code&gt;, look at it, run &lt;code&gt;apply&lt;/code&gt;. It works, until it doesn't: someone applies an old branch, two people apply at once, the laptop has different provider versions, or the only person with production credentials is on holiday.&lt;/p&gt;
&lt;p&gt;The fix is a simple, well-known workflow: &lt;strong&gt;plan on pull request, apply on merge&lt;/strong&gt;. Here's how I set it up.&lt;/p&gt;
&lt;h2&gt;The workflow&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;A developer changes infrastructure code on a branch and opens a pull request.&lt;/li&gt;
&lt;li&gt;CI runs &lt;code&gt;terraform plan&lt;/code&gt; and posts the plan as a comment on the pull request.&lt;/li&gt;
&lt;li&gt;Reviewers look at both the code &lt;strong&gt;and&lt;/strong&gt; the plan.&lt;/li&gt;
&lt;li&gt;After approval, the pull request is merged.&lt;/li&gt;
&lt;li&gt;CI runs &lt;code&gt;terraform apply&lt;/code&gt; with the plan, from the main branch.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Everything is reviewed, everything is logged, nobody needs production credentials on their laptop, and the main branch always reflects what's deployed.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The plan is the real change. Review the plan as carefully as the code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Option 1: Atlantis&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Atlantis&lt;/strong&gt; is an open-source server built exactly for this workflow. It listens to pull request events, and you control it with comments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open a PR, and Atlantis automatically runs &lt;code&gt;plan&lt;/code&gt; and comments the output.&lt;/li&gt;
&lt;li&gt;Comment &lt;code&gt;atlantis apply&lt;/code&gt; and it applies, then comments the result.&lt;/li&gt;
&lt;li&gt;It locks the affected directories so two PRs can't change the same state at the same time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Atlantis runs in your own infrastructure (often on Kubernetes), so credentials never leave your environment. It's simple, battle-tested and free. You do have to host and maintain it.&lt;/p&gt;
&lt;h2&gt;Option 2: GitHub Actions (or any CI)&lt;/h2&gt;
&lt;p&gt;You can build the same workflow in your normal CI. A simplified GitHub Actions version:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;name: terraform

on:
  pull_request:
    paths: ["infrastructure/**"]
  push:
    branches: [main]
    paths: ["infrastructure/**"]

permissions:
  contents: read
  id-token: write
  pull-requests: write

jobs:
  terraform:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: infrastructure/live/production/network
    steps:
      - uses: actions/checkout@&amp;lt;sha&amp;gt; # v4
      - uses: hashicorp/setup-terraform@&amp;lt;sha&amp;gt; # v3
      - uses: aws-actions/configure-aws-credentials@&amp;lt;sha&amp;gt; # v4
        with:
          role-to-assume: arn:aws:iam::123456789012:role/terraform-${{ github.event_name == 'push' &amp;amp;&amp;amp; 'apply' || 'plan' }}
          aws-region: eu-central-1
      - run: terraform init -input=false
      - run: terraform plan -input=false -out=tfplan
      - if: github.event_name == 'pull_request'
        run: terraform show -no-color tfplan &amp;gt; plan.txt
        # post plan.txt as a PR comment with your preferred action
      - if: github.event_name == 'push'
        run: terraform apply -input=false tfplan
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Things to notice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Two different IAM roles&lt;/strong&gt;: a read-only role for plans on pull requests, and a role with write access only for applies from &lt;code&gt;main&lt;/code&gt;. The trust policy restricts which branch can assume which role.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OIDC&lt;/strong&gt;, no stored cloud keys.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use GitHub environments&lt;/strong&gt; with required reviewers for production applies if you want an extra approval step.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One subtlety: the plan on the pull request and the apply after merge can differ if main changed in between. Re-planning on merge (as above) and applying that plan is the safe way.&lt;/p&gt;
&lt;h2&gt;Option 3: TACOS&lt;/h2&gt;
&lt;p&gt;"TACOS" (Terraform Automation and Collaboration Software) is the nickname for platforms built for this: &lt;strong&gt;HCP Terraform&lt;/strong&gt;, &lt;strong&gt;Spacelift&lt;/strong&gt;, &lt;strong&gt;env0&lt;/strong&gt;, &lt;strong&gt;Scalr&lt;/strong&gt;, &lt;strong&gt;Harness IaCM&lt;/strong&gt; and others. They add:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Policy as code (OPA or Sentinel) on every plan.&lt;/li&gt;
&lt;li&gt;Drift detection and scheduled runs.&lt;/li&gt;
&lt;li&gt;Stack dependencies, cost estimation, approvals, audit logs.&lt;/li&gt;
&lt;li&gt;Self-service and RBAC for many teams.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They cost money, but save a lot of building and maintaining for larger organisations.&lt;/p&gt;
&lt;h2&gt;Approvals&lt;/h2&gt;
&lt;p&gt;Who can approve infrastructure changes? Some practical rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CODEOWNERS&lt;/strong&gt; so the right team reviews changes to their part of the infrastructure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Required reviews&lt;/strong&gt; in branch protection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extra approval for production applies&lt;/strong&gt;, through CI environments or the platform.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plans visible to reviewers&lt;/strong&gt;, ideally summarised: number of resources added, changed and destroyed. A "destroy" in production should stand out.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Secrets and OIDC authentication&lt;/h2&gt;
&lt;p&gt;Never store long-lived cloud keys in CI for Terraform. Use OIDC with every major cloud, and scope the roles tightly. Combine that with remote, encrypted, locked state, and the most sensitive parts of your setup never touch a developer's laptop.&lt;/p&gt;
&lt;h2&gt;So, how do I start?&lt;/h2&gt;
&lt;p&gt;Pick one Terraform stack, ideally a low-risk one. Set up plan-on-PR with a read-only role first, so the team gets used to reviewing plans. Then add apply-on-merge with a separate role. Once it works, roll it out to the other stacks and take away production write access from laptops.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: infrastructure changes deserve the same pipeline discipline as application code. Review the plan, merge, and let the robot apply.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Terraform modules others actually want to use</title>
      <link>https://deslypeter.com/writing/reusable-terraform-modules</link>
      <guid>https://deslypeter.com/writing/reusable-terraform-modules.html?lang=en</guid>
      <description>Reusable, documented, versioned, and not over-engineered.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Every platform team eventually builds a set of internal Terraform modules. A standard way to create a database, a bucket, a network, a cluster. The idea is great: encode the company's best practices once, and let everyone reuse them.&lt;/p&gt;
&lt;p&gt;In practice, many internal modules end up either ignored (teams copy resources instead) or hated (so many options that nobody understands them). Here's what makes a module people actually want to use.&lt;/p&gt;
&lt;h2&gt;Start with a clear purpose&lt;/h2&gt;
&lt;p&gt;A good module does one thing well, with an opinion. Not "a wrapper around every argument of &lt;code&gt;aws_db_instance&lt;/code&gt;", but "a PostgreSQL database configured the way we run databases here": encrypted, backed up, monitored, in the right network, with the right tags.&lt;/p&gt;
&lt;p&gt;If the module just passes through every argument of the underlying resource, it adds no value. Teams might as well use the resource directly.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A good module removes decisions. A bad module just moves them to a different file.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;A clean structure&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;modules/rds-postgres/
  main.tf
  variables.tf
  outputs.tf
  versions.tf
  README.md
  examples/
    basic/
      main.tf
  tests/
    defaults.tftest.hcl
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;versions.tf&lt;/code&gt;&lt;/strong&gt; pins the required Terraform version and provider versions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;examples/&lt;/code&gt;&lt;/strong&gt; shows real usage, and doubles as a test fixture.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;tests/&lt;/code&gt;&lt;/strong&gt; with &lt;code&gt;terraform test&lt;/code&gt; files.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Inputs, outputs and validation&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Few required inputs, good defaults for the rest.&lt;/strong&gt; The basic example should need only a handful of lines:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-hcl"&gt;module "orders_db" {
  source      = "git::https://github.com/acme/terraform-modules.git//rds-postgres?ref=v2.3.0"
  name        = "orders"
  environment = "production"
  size        = "medium"
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Validate inputs&lt;/strong&gt; so mistakes fail early with a clear message:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-hcl"&gt;variable "size" {
  description = "Database size: small, medium or large."
  type        = string
  default     = "small"

  validation {
    condition     = contains(["small", "medium", "large"], var.size)
    error_message = "size must be one of: small, medium, large."
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Translating &lt;code&gt;size = "medium"&lt;/code&gt; into a specific instance class inside the module also means you can change the underlying instance type later without every team changing their code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Useful outputs&lt;/strong&gt;: IDs, endpoints, ARNs, security group IDs, the name of the secret holding credentials. Think about what the next resource will need.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use precise types&lt;/strong&gt;: &lt;code&gt;object({...})&lt;/code&gt; with optional attributes instead of a generic &lt;code&gt;map(any)&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Versioning and a private registry&lt;/h2&gt;
&lt;p&gt;Modules change. Users need stability. So:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tag releases&lt;/strong&gt; with semantic versions: &lt;code&gt;v1.4.0&lt;/code&gt;, &lt;code&gt;v2.0.0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Always reference a version&lt;/strong&gt; (&lt;code&gt;?ref=v2.3.0&lt;/code&gt; for Git, or &lt;code&gt;version = "~&amp;gt; 2.3"&lt;/code&gt; for a registry). Never point at &lt;code&gt;main&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write a changelog&lt;/strong&gt;, and mark breaking changes clearly. A breaking change means a new major version.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publish to a private registry&lt;/strong&gt; if you can: HCP Terraform, GitLab, Artifactory, Spacelift and others offer them. It gives you version constraints, discovery and documentation in one place.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Let Renovate update module versions&lt;/strong&gt; in consuming repositories.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Docs that write themselves&lt;/h2&gt;
&lt;p&gt;Nobody wants to maintain a README by hand. &lt;strong&gt;terraform-docs&lt;/strong&gt; generates the inputs and outputs tables from your code:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;terraform-docs markdown table --output-file README.md --output-mode inject .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Run it in a pre-commit hook or CI, and the documentation stays in sync. Add a short human-written section on top: what the module is for, what it does by default, and a minimal example.&lt;/p&gt;
&lt;h2&gt;Testing modules&lt;/h2&gt;
&lt;p&gt;Even a few tests help a lot:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Plan-based tests&lt;/strong&gt; with &lt;code&gt;terraform test&lt;/code&gt; to check defaults: encryption on, deletion protection on, tags present.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validation tests&lt;/strong&gt; that check bad inputs are rejected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An apply test&lt;/strong&gt; in a sandbox account for critical modules, run on release rather than every commit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Static checks&lt;/strong&gt; (tflint, Checkov) on the module itself.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;When to stop abstracting&lt;/h2&gt;
&lt;p&gt;The most common mistake I see: modules wrapping modules wrapping modules, with dozens of variables, feature flags for every possible use case, and &lt;code&gt;count&lt;/code&gt; tricks everywhere.&lt;/p&gt;
&lt;p&gt;Signs you've gone too far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The module has more variables than the resources it creates have arguments.&lt;/li&gt;
&lt;li&gt;Nobody can explain what happens when you set a particular flag.&lt;/li&gt;
&lt;li&gt;Teams fork the module because changing it is too scary.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It's fine for a module to say no. If a team has a genuinely unusual need, they can use the resource directly or you can create a second, separate module. Not every use case belongs in the same one.&lt;/p&gt;
&lt;h2&gt;So, what makes a great module?&lt;/h2&gt;
&lt;p&gt;A clear opinion, few required inputs, validated variables, useful outputs, generated docs, real versions and a few tests. Built for the common case, with the humility to not cover everything.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: build modules that make the right way short and obvious. If people copy resources instead, the module isn't helping them yet.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Servers you never patch: golden images with Packer</title>
      <link>https://deslypeter.com/writing/golden-images-packer</link>
      <guid>https://deslypeter.com/writing/golden-images-packer.html?lang=en</guid>
      <description>Replace servers instead of fixing them. How immutable infrastructure works.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;There's an old way to run servers that many of us grew up with. You set up a machine, install your software, and then keep it alive for years. Patch it, tweak it, fix it by hand when something breaks. Over time, every server becomes slightly different, and nobody knows exactly what's on them. People call those servers "pets".&lt;/p&gt;
&lt;p&gt;You never change a running server. When something needs to change, you build a new image, start new servers from it, and throw the old ones away.&lt;/p&gt;
&lt;h2&gt;Pets vs cattle, revisited&lt;/h2&gt;
&lt;p&gt;The famous analogy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pets&lt;/strong&gt; have names, are unique, and get nursed back to health when sick.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cattle&lt;/strong&gt; have numbers, are identical, and get replaced when sick.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Containers made the cattle model normal for applications. But plenty of workloads still run on virtual machines: Kubernetes nodes themselves, databases, legacy apps, CI runners, appliances. Golden images bring the same idea to VMs.&lt;/p&gt;
&lt;h2&gt;What a golden image is&lt;/h2&gt;
&lt;p&gt;A golden image is a pre-built machine image (an AMI on AWS, a managed image on Azure, a custom image on Google Cloud, a template on VMware or Proxmox) that already contains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An up-to-date, hardened operating system&lt;/li&gt;
&lt;li&gt;Your monitoring and logging agents&lt;/li&gt;
&lt;li&gt;Security tools and configuration&lt;/li&gt;
&lt;li&gt;Sometimes the application itself&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A new server starts from it in seconds, already configured. No long setup scripts at boot, no drift between machines.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If a server needs fixing, don't fix it. Fix the image, and replace the server.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Building images with Packer&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Packer&lt;/strong&gt;, from HashiCorp, is the most common tool for building images. You describe the image in HCL, and Packer starts a temporary machine, runs your setup steps, and saves the result as an image.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-hcl"&gt;packer {
  required_plugins {
    amazon = {
      source  = "github.com/hashicorp/amazon"
      version = "~&amp;gt; 1.3"
    }
  }
}

source "amazon-ebs" "base" {
  region        = "eu-central-1"
  instance_type = "t3.small"
  ssh_username  = "ubuntu"
  ami_name      = "acme-base-{{timestamp}}"

  source_ami_filter {
    filters = {
      name                = "ubuntu/images/hvm-ssd-gp3/ubuntu-noble-24.04-amd64-server-*"
      virtualization-type = "hvm"
    }
    owners      = ["099720109477"] # Canonical
    most_recent = true
  }
}

build {
  sources = ["source.amazon-ebs.base"]

  provisioner "shell" {
    inline = [
      "sudo apt-get update",
      "sudo apt-get -y upgrade",
      "sudo apt-get -y install unattended-upgrades auditd"
    ]
  }

  provisioner "ansible" {
    playbook_file = "./playbooks/harden.yml"
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The same template can build images for several clouds at once. Provisioners can be shell scripts, Ansible playbooks, or other tools.&lt;/p&gt;
&lt;h2&gt;Image pipelines&lt;/h2&gt;
&lt;p&gt;Building images by hand defeats the purpose. Put it in a pipeline:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Build&lt;/strong&gt; the image on a schedule (weekly is common) and whenever the template changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test&lt;/strong&gt; it: boot an instance, run checks (services running, ports closed, hardening applied). Tools like Goss or InSpec help.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scan&lt;/strong&gt; it for vulnerabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publish&lt;/strong&gt; it, tagged with a version and date, and share it with the accounts that need it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Roll it out&lt;/strong&gt; by updating the image ID in your infrastructure code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clean up&lt;/strong&gt; old images after a retention period.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cloud providers also offer managed services for this, like &lt;strong&gt;EC2 Image Builder&lt;/strong&gt; on AWS and &lt;strong&gt;Azure VM Image Builder&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;How often I rebuild&lt;/h2&gt;
&lt;p&gt;Security patches are released constantly. With immutable infrastructure, patching means rebuilding the image and replacing servers.&lt;/p&gt;
&lt;p&gt;A weekly rebuild keeps images close to current. For critical vulnerabilities, trigger an extra build right away. The beauty of this model: patching is the same routine as any other change, fully automated and tested, instead of a stressful manual patch night.&lt;/p&gt;
&lt;h2&gt;Pairing with autoscaling&lt;/h2&gt;
&lt;p&gt;Golden images work best with autoscaling groups (or VM scale sets, or managed instance groups):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Build a new image.&lt;/li&gt;
&lt;li&gt;Update the launch template with the new image ID.&lt;/li&gt;
&lt;li&gt;Trigger a &lt;strong&gt;rolling instance refresh&lt;/strong&gt;: the group replaces old instances with new ones, a few at a time, waiting for health checks.&lt;/li&gt;
&lt;li&gt;If something's wrong, roll back to the previous launch template version.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Kubernetes node pools work similarly: managed node groups can be updated to a new image with a rolling replacement. Tools like &lt;strong&gt;Karpenter&lt;/strong&gt; go even further, regularly replacing nodes to keep them fresh.&lt;/p&gt;
&lt;h2&gt;What to watch out for&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Don't bake secrets into images.&lt;/strong&gt; Fetch them at boot from a secret manager.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep environment-specific config out&lt;/strong&gt; of the image too. Use instance metadata, tags or a config service at startup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stateful data&lt;/strong&gt; must live on separate volumes or services, so replacing a server doesn't lose anything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Image sprawl&lt;/strong&gt;: set a retention policy and clean up old images regularly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, is it worth it?&lt;/h2&gt;
&lt;p&gt;For any fleet of VMs that you run for more than a few weeks, yes. Fewer surprises, faster scaling, easier patching, and you always know exactly what's running.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: stop nursing servers. Build them right once, replace them often, and let the image carry the knowledge.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Stop putting secrets in CI variables</title>
      <link>https://deslypeter.com/writing/secrets-management-vault-openbao</link>
      <guid>https://deslypeter.com/writing/secrets-management-vault-openbao.html?lang=en</guid>
      <description>Vault, OpenBao and External Secrets: where secrets should really live.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Ask a team where their secrets are, and the honest answer is often "everywhere". Some in CI variables. Some in a &lt;code&gt;.env&lt;/code&gt; file that gets passed around. Some in Kubernetes secrets created by hand. A few in a password manager. At least one in a Git repository's history, from three years ago.&lt;/p&gt;
&lt;p&gt;Secrets sprawl is one of the most common security problems I see, and one of the easiest to fix.&lt;/p&gt;
&lt;h2&gt;Where secrets leak&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Git history.&lt;/strong&gt; Committed once, deleted later, still there forever unless the history is rewritten.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI logs.&lt;/strong&gt; A debug &lt;code&gt;echo&lt;/code&gt;, a verbose command, a compromised action printing environment variables.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI variables&lt;/strong&gt; with broad access: anyone who can edit a workflow can often read them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes secrets&lt;/strong&gt; in plain YAML in Git. Base64 isn't encryption.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terraform state&lt;/strong&gt; containing database passwords.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chat and tickets.&lt;/strong&gt; "Here's the password, delete this message after."&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The common thread: secrets are copied into many places, and every copy is a place they can leak from.&lt;/p&gt;
&lt;h2&gt;The goal: one source of truth&lt;/h2&gt;
&lt;p&gt;The better approach: keep secrets in &lt;strong&gt;one central secret store&lt;/strong&gt;, and have every consumer (apps, pipelines, people) fetch them from there with their own identity, only when needed. Ideally, secrets are short-lived or rotated automatically, so a leak expires quickly.&lt;/p&gt;
&lt;h2&gt;The options compared&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;HashiCorp Vault&lt;/strong&gt; is the most well-known. It stores secrets, but also generates them dynamically: database credentials created on demand, cloud credentials that expire after an hour, certificates from its own PKI. Very powerful, and real work to run well (high availability, unsealing, upgrades). Since 2023 it's under the Business Source License.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenBao&lt;/strong&gt; is the community fork of Vault from before the license change, now under the Linux Foundation. API-compatible with Vault for most use cases, open-source licensed, and developing its own features.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cloud secret managers&lt;/strong&gt;: AWS Secrets Manager, Azure Key Vault, Google Secret Manager. Fully managed, integrated with cloud IAM, easy to start with. Less flexible than Vault for dynamic secrets across many systems, but perfectly enough for many teams.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Encrypted files in Git&lt;/strong&gt;: &lt;strong&gt;SOPS&lt;/strong&gt; (with age or a cloud KMS) encrypts values inside YAML or JSON files, so you can commit them safely. Good for GitOps setups and small teams.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The best secret is one that doesn't exist yet, gets created when you need it, and expires before anyone can steal it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Getting secrets into Kubernetes&lt;/h2&gt;
&lt;p&gt;Applications in Kubernetes usually expect secrets as environment variables or files. Ways to get them there from a central store:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;External Secrets Operator (ESO)&lt;/strong&gt; syncs secrets from Vault, OpenBao, cloud secret managers and others into regular Kubernetes Secrets:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
  name: orders-db
  namespace: shop
spec:
  refreshInterval: 1h
  secretStoreRef:
    name: aws-secrets-manager
    kind: ClusterSecretStore
  target:
    name: orders-db-credentials
  data:
  - secretKey: password
    remoteRef:
      key: prod/shop/orders-db
      property: password
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your Git repository only contains a reference, never the secret itself. Apps keep reading a normal Kubernetes Secret.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Secrets Store CSI Driver&lt;/strong&gt; mounts secrets directly from the external store as files, optionally without creating a Kubernetes Secret at all.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vault Agent / OpenBao Agent&lt;/strong&gt; injection runs a sidecar that fetches and renews secrets for the pod.&lt;/p&gt;
&lt;p&gt;Whichever you choose, make sure Kubernetes Secrets are &lt;strong&gt;encrypted at rest&lt;/strong&gt; in etcd (managed clusters usually support KMS encryption), and limit who can read them with RBAC.&lt;/p&gt;
&lt;h2&gt;In CI pipelines&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;OIDC&lt;/strong&gt; to authenticate pipelines to your cloud and to Vault/OpenBao, instead of storing long-lived credentials.&lt;/li&gt;
&lt;li&gt;Fetch secrets &lt;strong&gt;at runtime&lt;/strong&gt;, only in the jobs that need them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mask&lt;/strong&gt; secrets in logs, and avoid printing environment variables.&lt;/li&gt;
&lt;li&gt;Scope CI secrets to &lt;strong&gt;protected branches and environments&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Rotation and dynamic secrets&lt;/h2&gt;
&lt;p&gt;A secret that never changes is a secret that eventually leaks. Options, from simple to advanced:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scheduled rotation&lt;/strong&gt; of static secrets (cloud secret managers can rotate database passwords automatically).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dynamic secrets&lt;/strong&gt; from Vault/OpenBao: each app instance gets its own credentials, valid for hours.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workload identity&lt;/strong&gt;: no secret at all. Pods authenticate to cloud services using their Kubernetes service account identity.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Find what already leaked&lt;/h2&gt;
&lt;p&gt;Before building the perfect system, scan for what's already out there:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;gitleaks&lt;/strong&gt; or &lt;strong&gt;TruffleHog&lt;/strong&gt; across your repositories, including history.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub secret scanning&lt;/strong&gt; with push protection enabled.&lt;/li&gt;
&lt;li&gt;Rotate everything you find. Deleting the commit isn't enough.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Pick a central store: your cloud's secret manager is the easiest start. Install External Secrets Operator. Move one application's secrets there, remove them from CI variables and Git, and rotate them. Then repeat, service by service.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: secrets should be fetched, not copied. Every copy is a future incident waiting for its date.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Security in the pipeline, not after it</title>
      <link>https://deslypeter.com/writing/security-in-the-pipeline</link>
      <guid>https://deslypeter.com/writing/security-in-the-pipeline.html?lang=en</guid>
      <description>Scanning code, dependencies and images on every commit, without annoying developers.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;For a long time, security worked like this: the team builds something for months, then a security review or penetration test happens just before launch, finds a list of problems, and everyone panics. Fixing things at the end is slow, expensive and stressful.&lt;/p&gt;
&lt;p&gt;"Shift left" means moving security checks earlier, into the developer's workflow and the CI pipeline. Problems are found minutes after they're introduced, when they're cheapest to fix. That's the heart of DevSecOps.&lt;/p&gt;
&lt;h2&gt;The scanner types, simply&lt;/h2&gt;
&lt;p&gt;There's an alphabet soup of security scanning. Here's what each one does:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SAST (Static Application Security Testing)&lt;/strong&gt;: reads your source code looking for insecure patterns. SQL injection, hardcoded secrets, unsafe functions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SCA (Software Composition Analysis)&lt;/strong&gt;: checks your dependencies for known vulnerabilities and license issues.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secret scanning&lt;/strong&gt;: looks for passwords, API keys and tokens in code and history.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IaC scanning&lt;/strong&gt;: checks Terraform, Kubernetes manifests, Helm charts and Dockerfiles for misconfigurations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Container image scanning&lt;/strong&gt;: finds vulnerable packages in your images.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DAST (Dynamic Application Security Testing)&lt;/strong&gt;: attacks a running application from the outside, like a (polite) hacker would.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The tools I use&lt;/h2&gt;
&lt;p&gt;You don't need expensive tools to start. Excellent open-source options:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Open-source tools&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SAST&lt;/td&gt;
&lt;td&gt;Semgrep, CodeQL&lt;/td&gt;
&lt;td&gt;CodeQL is free for public repos on GitHub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SCA&lt;/td&gt;
&lt;td&gt;Trivy, Grype, OSV-Scanner, Dependabot&lt;/td&gt;
&lt;td&gt;Dependabot is built into GitHub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Secrets&lt;/td&gt;
&lt;td&gt;gitleaks, TruffleHog, GitHub push protection&lt;/td&gt;
&lt;td&gt;Scan history once, then every push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IaC&lt;/td&gt;
&lt;td&gt;Checkov, Trivy, KICS&lt;/td&gt;
&lt;td&gt;Trivy covers images, deps and IaC in one tool&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Images&lt;/td&gt;
&lt;td&gt;Trivy, Grype&lt;/td&gt;
&lt;td&gt;Scan in CI and continuously in the registry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAST&lt;/td&gt;
&lt;td&gt;OWASP ZAP&lt;/td&gt;
&lt;td&gt;Run against staging or preview environments&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Commercial platforms (Snyk, GitHub Advanced Security, GitLab Ultimate, Wiz, Aikido and many others) bundle these with dashboards, prioritisation and fix suggestions.&lt;/p&gt;
&lt;h2&gt;A pipeline with security built in&lt;/h2&gt;
&lt;p&gt;A sensible layout:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Pre-commit&lt;/strong&gt; (on the developer's machine): secret scanning, fast linting. Catch the obvious before it's even pushed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pull request&lt;/strong&gt;: SAST, SCA, IaC scanning, with results as comments on the PR.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build&lt;/strong&gt;: image scanning, SBOM generation, signing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Staging / preview&lt;/strong&gt;: DAST against the running app.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continuously&lt;/strong&gt;: rescan images and SBOMs in production for newly discovered vulnerabilities.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Trivy alone covers a surprising amount:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;trivy fs --scanners vuln,secret,misconfig .
trivy image --severity HIGH,CRITICAL --ignore-unfixed registry.example.com/shop-api:1.4.2
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Security findings are like bugs. The sooner you find them, the cheaper they are, and the less anyone panics.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Handling false alarms&lt;/h2&gt;
&lt;p&gt;This is where most DevSecOps efforts fail. Turn on five scanners with default settings, and developers drown in hundreds of findings. Many are low-risk, unreachable or false positives. After a week, people ignore all of them.&lt;/p&gt;
&lt;p&gt;What helps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Start with high and critical findings only.&lt;/strong&gt; Expand later.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ignore unfixable vulnerabilities&lt;/strong&gt; for now (there's no patch yet), but track them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use reachability&lt;/strong&gt; where tools support it: is the vulnerable function actually called?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tune rules&lt;/strong&gt; and suppress false positives with a documented reason, in code (like &lt;code&gt;.trivyignore&lt;/code&gt; or inline comments).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Show only new findings in pull requests&lt;/strong&gt;, not the whole backlog. Fix the backlog separately.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One place for results&lt;/strong&gt;: GitHub Code Scanning, GitLab's security dashboard, or DefectDojo, instead of five different reports.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Block or just report?&lt;/h2&gt;
&lt;p&gt;Should security findings fail the pipeline?&lt;/p&gt;
&lt;p&gt;My approach:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Block&lt;/strong&gt; on things that are clear-cut and fixable: committed secrets, critical vulnerabilities with a fix available, severe misconfigurations like public buckets or privileged containers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Report&lt;/strong&gt; everything else, with visibility and a deadline for fixing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Start in report-only mode&lt;/strong&gt; for new scanners, tune them, then switch to blocking for the most important rules.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also give developers a way to accept a risk temporarily, with a reason and an expiry date. A hard block with no escape just leads to people disabling the scanner.&lt;/p&gt;
&lt;h2&gt;Make it a team habit&lt;/h2&gt;
&lt;p&gt;Tools are half the story. The other half:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Security champions&lt;/strong&gt; in each team who care a bit more and help others.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fix suggestions&lt;/strong&gt; in the pull request, so developers know what to do.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Celebrate fixes&lt;/strong&gt;, not just count findings.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Add secret scanning with push protection, Trivy for dependencies and images, and Semgrep or CodeQL for code. Report only high and critical issues at first. Once the noise is under control, start blocking on the most important ones.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: security works best when it's just another check in the pipeline, as normal as a failing test, and just as quick to fix.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>My Kubernetes security checklist</title>
      <link>https://deslypeter.com/writing/kubernetes-security-checklist</link>
      <guid>https://deslypeter.com/writing/kubernetes-security-checklist.html?lang=en</guid>
      <description>RBAC, network policies, runtime security. The settings I check on every cluster.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Kubernetes isn't insecure, but it isn't secure by default either. A fresh cluster lets pods run as root, talk to every other pod, and mount the host's file system if you ask. Most clusters I review have at least a few of these doors open.&lt;/p&gt;
&lt;p&gt;This is the order I check things on every cluster, from most important to less urgent.&lt;/p&gt;
&lt;h2&gt;1. Who can do what (RBAC)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No shared admin kubeconfigs.&lt;/strong&gt; People log in with SSO and get roles based on groups.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nobody uses &lt;code&gt;cluster-admin&lt;/code&gt; day to day.&lt;/strong&gt; Keep it for break-glass access, logged and alerted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Least privilege for service accounts.&lt;/strong&gt; Most applications don't need to talk to the Kubernetes API at all. Set &lt;code&gt;automountServiceAccountToken: false&lt;/code&gt; for those.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Watch for dangerous permissions&lt;/strong&gt;: access to &lt;code&gt;secrets&lt;/code&gt; across namespaces, &lt;code&gt;pods/exec&lt;/code&gt;, creating pods in &lt;code&gt;kube-system&lt;/code&gt;, &lt;code&gt;escalate&lt;/code&gt; and &lt;code&gt;bind&lt;/code&gt; verbs, and wildcards (&lt;code&gt;*&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review regularly.&lt;/strong&gt; Tools like &lt;code&gt;kubectl auth can-i --list&lt;/code&gt;, rbac-tool or KubiScan help find over-privileged accounts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;2. Locking down pods&lt;/h2&gt;
&lt;p&gt;Kubernetes has a built-in mechanism for this: &lt;strong&gt;Pod Security Admission&lt;/strong&gt;, with three levels: &lt;code&gt;privileged&lt;/code&gt;, &lt;code&gt;baseline&lt;/code&gt; and &lt;code&gt;restricted&lt;/code&gt;. Enable it per namespace with labels:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: v1
kind: Namespace
metadata:
  name: shop
  labels:
    pod-security.kubernetes.io/enforce: restricted
    pod-security.kubernetes.io/warn: restricted
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;restricted&lt;/code&gt; level requires pods to follow best practices. A compliant pod's security context looks like:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;securityContext:
  runAsNonRoot: true
  seccompProfile:
    type: RuntimeDefault
containers:
- name: app
  securityContext:
    allowPrivilegeEscalation: false
    readOnlyRootFilesystem: true
    capabilities:
      drop: ["ALL"]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aim for &lt;code&gt;restricted&lt;/code&gt; on all application namespaces. Keep &lt;code&gt;privileged&lt;/code&gt; only for system components that genuinely need it (CNI, storage drivers, monitoring agents), in their own namespaces.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A container running as root with every capability is one vulnerability away from owning the node.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;3. Network policies&lt;/h2&gt;
&lt;p&gt;By default, every pod can talk to every other pod in the cluster. If an attacker gets into one, they can reach everything.&lt;/p&gt;
&lt;p&gt;Start with a &lt;strong&gt;default deny&lt;/strong&gt; in each namespace, then allow what's needed:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
  namespace: shop
spec:
  podSelector: {}
  policyTypes: ["Ingress", "Egress"]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then add policies allowing, for example, the gateway to reach the API, the API to reach its database, and everything to reach DNS. Remember: network policies only work if your CNI supports them (Cilium, Calico and most modern CNIs do).&lt;/p&gt;
&lt;p&gt;Restricting &lt;strong&gt;egress&lt;/strong&gt; (outgoing traffic) is just as valuable: a compromised pod that can't reach the internet can't download tools or send data out easily.&lt;/p&gt;
&lt;h2&gt;4. Secrets&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Encrypt secrets at rest&lt;/strong&gt; in etcd, using KMS on managed clusters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don't store secrets in Git&lt;/strong&gt; in plain YAML. Use External Secrets, Sealed Secrets or SOPS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limit &lt;code&gt;get&lt;/code&gt; and &lt;code&gt;list&lt;/code&gt; on secrets&lt;/strong&gt; in RBAC. Listing secrets in a namespace reveals all of them.&lt;/li&gt;
&lt;li&gt;Prefer &lt;strong&gt;workload identity&lt;/strong&gt; over static cloud credentials in secrets.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;5. Image policy&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Only allow images from trusted registries.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No &lt;code&gt;latest&lt;/code&gt; tags.&lt;/strong&gt; Pin versions, ideally digests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Require signed images&lt;/strong&gt; (Cosign) for production.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scan images&lt;/strong&gt; in CI and continuously in the registry.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are enforced with an admission policy engine like &lt;strong&gt;Kyverno&lt;/strong&gt; or &lt;strong&gt;OPA Gatekeeper&lt;/strong&gt;, or with Kubernetes' built-in &lt;strong&gt;ValidatingAdmissionPolicy&lt;/strong&gt; for simpler rules.&lt;/p&gt;
&lt;h2&gt;6. Watching what runs (runtime security)&lt;/h2&gt;
&lt;p&gt;Preventive controls can be bypassed. Runtime security detects suspicious behaviour as it happens:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Falco&lt;/strong&gt; (CNCF) watches system calls and alerts on things like a shell spawned in a container, unexpected outbound connections, or writes to sensitive directories.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tetragon&lt;/strong&gt; (from the Cilium project) uses eBPF for observability and can also enforce policies, like killing a process that does something forbidden.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Send their alerts to the same place as your other alerts, and tune them, or they'll become noise.&lt;/p&gt;
&lt;h2&gt;7. The control plane and nodes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;API server not publicly exposed&lt;/strong&gt;, or at least restricted to known IP ranges.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audit logging enabled&lt;/strong&gt;, and logs shipped somewhere central.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep Kubernetes up to date.&lt;/strong&gt; Security fixes only land in supported versions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hardened node images&lt;/strong&gt;, minimal OS (like Bottlerocket, Talos or Container-Optimized OS), regularly replaced.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Block access to cloud metadata endpoints&lt;/strong&gt; from pods that don't need it, or enforce IMDSv2 on AWS.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;8. Benchmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CIS Kubernetes Benchmark&lt;/strong&gt;: a detailed set of recommendations. &lt;strong&gt;kube-bench&lt;/strong&gt; checks a cluster against it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubescape&lt;/strong&gt; and &lt;strong&gt;Trivy&lt;/strong&gt; (&lt;code&gt;trivy k8s&lt;/code&gt;) scan clusters for misconfigurations and map them to frameworks like NSA/CISA hardening guidance.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Run them regularly. Don't aim for 100%, aim for understanding every finding.&lt;/p&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;If you can only do three things: switch people to SSO with least-privilege RBAC, enforce Pod Security &lt;code&gt;restricted&lt;/code&gt; on application namespaces, and add default-deny network policies. That closes the biggest security gaps in most clusters.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: Kubernetes gives you all the locks you need. They just come unlocked in the box.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Rules as code: OPA, Kyverno and built-in policies</title>
      <link>https://deslypeter.com/writing/policy-as-code-opa-kyverno</link>
      <guid>https://deslypeter.com/writing/policy-as-code-opa-kyverno.html?lang=en</guid>
      <description>No more "please don't use the latest tag" in the wiki. Enforce it automatically.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Every organisation has rules. Containers must not run as root. Every deployment needs an owner label. Images must come from our registry. Production needs at least two replicas. Usually these rules live in a wiki page, and they're followed exactly as well as wiki pages are read.&lt;/p&gt;
&lt;p&gt;Policy as code turns those rules into something a computer enforces, on every change, without anyone having to remember them.&lt;/p&gt;
&lt;h2&gt;Why rules belong in code&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Consistent.&lt;/strong&gt; The rule applies to everyone, every time, including at 3 a.m.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fast feedback.&lt;/strong&gt; Developers learn about a problem the moment they try to deploy, with a clear message, not weeks later in an audit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Versioned and reviewed.&lt;/strong&gt; Policies live in Git, go through pull requests, and have a history.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testable.&lt;/strong&gt; You can write tests for your policies like any other code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auditable.&lt;/strong&gt; You can show exactly which rules apply and prove they're enforced.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Three ways to write them in Kubernetes&lt;/h2&gt;
&lt;p&gt;Kubernetes has &lt;strong&gt;admission control&lt;/strong&gt;: every create or update request can be checked (validated) or modified (mutated) before it's stored. Policy engines plug in there.&lt;/p&gt;
&lt;h3&gt;Kyverno: policies as Kubernetes YAML&lt;/h3&gt;
&lt;p&gt;Kyverno, a CNCF project, lets you write policies as Kubernetes resources. If you can read a Deployment, you can read a Kyverno policy:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: disallow-latest-tag
spec:
  validationFailureAction: Enforce
  rules:
  - name: require-image-tag
    match:
      any:
      - resources:
          kinds: ["Pod"]
    validate:
      message: "Images must use a specific version tag, not 'latest'."
      pattern:
        spec:
          containers:
          - image: "!*:latest"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Kyverno can also &lt;strong&gt;mutate&lt;/strong&gt; (add default labels or security settings), &lt;strong&gt;generate&lt;/strong&gt; resources (create a default NetworkPolicy in every new namespace), and &lt;strong&gt;verify image signatures&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;OPA Gatekeeper: policies in Rego&lt;/h3&gt;
&lt;p&gt;Open Policy Agent (OPA), also a CNCF project, is a general-purpose policy engine using a language called &lt;strong&gt;Rego&lt;/strong&gt;. &lt;strong&gt;Gatekeeper&lt;/strong&gt; integrates it with Kubernetes. Rego is very powerful and works far beyond Kubernetes (APIs, Terraform plans, CI pipelines), but it has a learning curve.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-rego"&gt;package k8srequiredlabels

violation[{"msg": msg}] {
  required := {"owner", "app"}
  provided := {label | input.review.object.metadata.labels[label]}
  missing := required - provided
  count(missing) &amp;gt; 0
  msg := sprintf("Missing required labels: %v", [missing])
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;ValidatingAdmissionPolicy: built into Kubernetes&lt;/h3&gt;
&lt;p&gt;Kubernetes now has its own policy mechanism, &lt;strong&gt;ValidatingAdmissionPolicy&lt;/strong&gt;, stable since version 1.30. Rules are written in &lt;strong&gt;CEL&lt;/strong&gt; (Common Expression Language) and run inside the API server, with no extra component to install:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicy
metadata:
  name: require-replicas-in-prod
spec:
  matchConstraints:
    resourceRules:
    - apiGroups: ["apps"]
      apiVersions: ["v1"]
      operations: ["CREATE", "UPDATE"]
      resources: ["deployments"]
  validations:
  - expression: "object.spec.replicas &amp;gt;= 2"
    message: "Production deployments need at least 2 replicas."
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(A &lt;code&gt;ValidatingAdmissionPolicyBinding&lt;/code&gt; then applies it to specific namespaces.)&lt;/p&gt;
&lt;p&gt;It's perfect for simple validation rules. For mutation, generation, image verification and reporting, Kyverno or Gatekeeper still offer more. Both engines are also adopting CEL themselves.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A rule in a wiki is a suggestion. A rule in an admission policy is a guarantee.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Policies I always add&lt;/h2&gt;
&lt;p&gt;A good starter set for most clusters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No &lt;code&gt;latest&lt;/code&gt; image tags.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Images only from approved registries.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Required labels&lt;/strong&gt;: &lt;code&gt;owner&lt;/code&gt;, &lt;code&gt;app&lt;/code&gt;, maybe &lt;code&gt;cost-center&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resource requests required&lt;/strong&gt; on every container.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No privileged containers&lt;/strong&gt;, no host networking, no host path mounts (outside system namespaces).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run as non-root.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Liveness and readiness probes&lt;/strong&gt; on deployments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Signed images&lt;/strong&gt; in production.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many of these are available ready-made in the Kyverno policy library and the Gatekeeper library.&lt;/p&gt;
&lt;h2&gt;Rolling out without breaking things&lt;/h2&gt;
&lt;p&gt;The fastest way to make enemies is to switch on twenty policies in enforce mode on a Friday. Instead:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Start in audit mode.&lt;/strong&gt; Kyverno's &lt;code&gt;Audit&lt;/code&gt;, Gatekeeper's &lt;code&gt;dryrun&lt;/code&gt; or &lt;code&gt;warn&lt;/code&gt;, or &lt;code&gt;Warn&lt;/code&gt;/&lt;code&gt;Audit&lt;/code&gt; actions for ValidatingAdmissionPolicy. Violations are reported, nothing is blocked.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Look at the reports.&lt;/strong&gt; Kyverno creates PolicyReports, Gatekeeper records violations. Fix existing workloads.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Communicate.&lt;/strong&gt; Tell teams which rules are coming, why, and how to comply.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enforce gradually&lt;/strong&gt;, rule by rule, namespace by namespace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Allow documented exceptions&lt;/strong&gt;, with an owner and an expiry date.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Testing policies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Kyverno has a &lt;strong&gt;CLI&lt;/strong&gt; (&lt;code&gt;kyverno test&lt;/code&gt;) to run policies against sample resources.&lt;/li&gt;
&lt;li&gt;OPA has &lt;strong&gt;&lt;code&gt;opa test&lt;/code&gt;&lt;/strong&gt; for Rego unit tests.&lt;/li&gt;
&lt;li&gt;Run the same policies &lt;strong&gt;in CI&lt;/strong&gt; against your manifests, so developers find out before they even reach the cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, which engine?&lt;/h2&gt;
&lt;p&gt;For most teams starting out, &lt;strong&gt;Kyverno&lt;/strong&gt; is the easiest: YAML policies, a big library, mutation and image verification included. Use &lt;strong&gt;ValidatingAdmissionPolicy&lt;/strong&gt; for simple rules where you don't want another component. Choose &lt;strong&gt;OPA&lt;/strong&gt; when you want one policy language across Kubernetes, Terraform, APIs and more.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: write the rules down once, in code, and let the cluster remember them for you.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Audits without screenshots: compliance as code</title>
      <link>https://deslypeter.com/writing/compliance-as-code</link>
      <guid>https://deslypeter.com/writing/compliance-as-code.html?lang=en</guid>
      <description>Turning SOC 2 and ISO 27001 controls into automatic checks.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;If you've been through a SOC 2 or ISO 27001 audit, you know the routine. Weeks before the audit, someone sends a spreadsheet of controls. Engineers stop their work to take screenshots: here's our MFA setting, here's our backup policy, here's proof we reviewed access in March. The auditor asks for more screenshots. Everyone is relieved when it's over, until next year.&lt;/p&gt;
&lt;p&gt;There's a better way: treat compliance like any other requirement. Express it in code, check it continuously, and generate evidence automatically.&lt;/p&gt;
&lt;h2&gt;Controls become checks&lt;/h2&gt;
&lt;p&gt;A compliance framework is a list of controls. Many of them are actually technical statements that can be checked automatically:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Control (simplified)&lt;/th&gt;
&lt;th&gt;Automated check&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Data is encrypted at rest&lt;/td&gt;
&lt;td&gt;All storage, databases and volumes have encryption enabled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Access requires MFA&lt;/td&gt;
&lt;td&gt;Identity provider enforces MFA for all users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Changes are reviewed&lt;/td&gt;
&lt;td&gt;Branch protection requires approvals on production repos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Systems are patched&lt;/td&gt;
&lt;td&gt;Images rebuilt weekly, no critical vulnerabilities older than X days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backups exist and are tested&lt;/td&gt;
&lt;td&gt;Backup jobs succeed, restore tests run monthly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logs are retained&lt;/td&gt;
&lt;td&gt;Audit logs enabled and retained for the required period&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Least privilege&lt;/td&gt;
&lt;td&gt;No users with admin rights outside an approved group&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Once written as checks, they can run every day instead of once a year.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If a control can be checked by a script, it shouldn't be checked by a screenshot.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The tools I use&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;For cloud configuration:&lt;/strong&gt;
- &lt;strong&gt;AWS Config&lt;/strong&gt;, &lt;strong&gt;Azure Policy&lt;/strong&gt;, &lt;strong&gt;Google Cloud Security Command Center&lt;/strong&gt;: continuous checks of cloud resources, with built-in rule packs for many frameworks.
- &lt;strong&gt;Prowler&lt;/strong&gt;: open-source security and compliance scanner for AWS, Azure, GCP and Kubernetes, with mappings to CIS, SOC 2, ISO 27001, PCI DSS and more.
- &lt;strong&gt;Cloud Custodian&lt;/strong&gt;: rules written in YAML that can find and even fix non-compliant resources automatically (for example, tag or stop untagged instances).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For infrastructure code:&lt;/strong&gt;
- &lt;strong&gt;Checkov&lt;/strong&gt;, &lt;strong&gt;Trivy&lt;/strong&gt;, &lt;strong&gt;OPA/Conftest&lt;/strong&gt; to block non-compliant changes before they're applied.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For Kubernetes:&lt;/strong&gt;
- &lt;strong&gt;Kyverno&lt;/strong&gt; or &lt;strong&gt;Gatekeeper&lt;/strong&gt; policies, and &lt;strong&gt;Kubescape&lt;/strong&gt; for framework-based scans.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For the bigger picture:&lt;/strong&gt;
- &lt;strong&gt;Compliance automation platforms&lt;/strong&gt; like Vanta, Drata and Secureframe connect to your cloud, identity provider, HR system and code hosting, map everything to controls, and collect evidence continuously. Very useful for smaller companies going through their first audit.&lt;/p&gt;
&lt;h2&gt;Prevent, detect, prove&lt;/h2&gt;
&lt;p&gt;I think about it in three layers:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prevent&lt;/strong&gt;: policies in CI and admission control stop non-compliant changes from ever being deployed. An unencrypted bucket never gets created.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detect&lt;/strong&gt;: continuous scanning finds anything that slipped through, or changed manually.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prove&lt;/strong&gt;: evidence is collected automatically and stored, ready for the auditor.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Prevention is the cheapest. Detection is the safety net. Proof is what the audit needs.&lt;/p&gt;
&lt;h2&gt;Git and CI as evidence&lt;/h2&gt;
&lt;p&gt;A huge amount of evidence already exists in your tools, if you set them up properly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Change management&lt;/strong&gt;: every production change is a pull request with an approval and a passing pipeline. Git history plus branch protection settings are the evidence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deployment records&lt;/strong&gt;: your CI/CD and GitOps tools log who deployed what, when.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure state&lt;/strong&gt;: Terraform plans and applies, logged in CI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Access reviews&lt;/strong&gt;: if group membership is managed as code (for example in Terraform or your identity provider's API), reviews become pull requests.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Auditors increasingly accept this kind of system-generated evidence, and often prefer it to screenshots, because it's complete and harder to fake.&lt;/p&gt;
&lt;h2&gt;Continuous compliance dashboards&lt;/h2&gt;
&lt;p&gt;Bring results together in one view: which controls pass, which fail, and since when. Share it with security, engineering and management. The conversation changes from "are we ready for the audit?" to "this control has been failing for three days, who's fixing it?"&lt;/p&gt;
&lt;h2&gt;What can't be automated&lt;/h2&gt;
&lt;p&gt;Not everything is technical. Policies need writing, people need training, risk assessments need human judgement, vendors need reviewing. Compliance as code doesn't remove that work. It removes the repetitive, error-prone part, so people can focus on the parts that need thinking.&lt;/p&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Take the control list from your last audit. Find the five technical controls that required the most screenshot work. Use your cloud's built-in tools or Prowler to automate checks for those. Next time, you'll show a dashboard instead of a folder full of images.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: compliance shouldn't be a yearly fire drill. Write the rules as code, check them every day, and let the audit become a formality.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>OpenTelemetry from the ground up</title>
      <link>https://deslypeter.com/writing/opentelemetry-from-the-ground-up</link>
      <guid>https://deslypeter.com/writing/opentelemetry-from-the-ground-up.html?lang=en</guid>
      <description>Traces, metrics and logs with one standard, and no vendor lock-in.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;For years, observability meant choosing a vendor and installing their agent everywhere. Then their SDK in your code. Then their query language in your head. Switching vendors meant re-instrumenting everything, so nobody switched, and prices went up.&lt;/p&gt;
&lt;p&gt;OpenTelemetry changed that. It's now the second most active CNCF project after Kubernetes, and the standard way to collect telemetry. If you're starting with observability today, start here.&lt;/p&gt;
&lt;h2&gt;Why OpenTelemetry&lt;/h2&gt;
&lt;p&gt;OpenTelemetry (often shortened to &lt;strong&gt;OTel&lt;/strong&gt;) is a set of open standards, SDKs and tools for generating and collecting telemetry data. The key idea: &lt;strong&gt;instrument once, send anywhere&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Your code and infrastructure produce data in a standard format. Where that data goes, Prometheus, Grafana, Jaeger, Datadog, Honeycomb, New Relic, Elastic or anything else, is just configuration. Change the backend, keep the instrumentation.&lt;/p&gt;
&lt;h2&gt;The four signals&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Traces&lt;/strong&gt; follow a single request through your system. A trace is made of &lt;strong&gt;spans&lt;/strong&gt;, one per operation: the HTTP request, the database query, the call to another service. Traces answer "where did the time go?" and "where did it fail?"&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Metrics&lt;/strong&gt; are numbers over time: request rate, error rate, latency percentiles, CPU usage, queue length. Cheap to store, great for dashboards and alerts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Logs&lt;/strong&gt; are timestamped events. OpenTelemetry can attach trace IDs to logs, so you can jump from a log line to the full trace of the request that produced it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Profiles&lt;/strong&gt; show which code is using CPU and memory. This is the newest signal in OpenTelemetry, still maturing.&lt;/p&gt;
&lt;p&gt;The magic happens when they're connected: a spike in a latency metric, linked to example traces, linked to the logs of the slow requests.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Metrics tell you something is wrong. Traces tell you where. Logs tell you why.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The building blocks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;API and SDKs&lt;/strong&gt; for each language (Java, Go, Python, JavaScript, .NET, Ruby, PHP, Rust and more) to create telemetry from code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auto-instrumentation&lt;/strong&gt; that captures common libraries (HTTP frameworks, database drivers, messaging clients) without code changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OTLP&lt;/strong&gt;, the OpenTelemetry Protocol, the standard wire format for sending data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Collector&lt;/strong&gt;, a standalone service that receives, processes and exports telemetry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semantic conventions&lt;/strong&gt;: standard names for attributes like &lt;code&gt;http.request.method&lt;/code&gt; or &lt;code&gt;db.system&lt;/code&gt;, so data looks the same everywhere.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;My first traces&lt;/h2&gt;
&lt;p&gt;The fastest way to see OpenTelemetry in action is auto-instrumentation. For a Python app:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;pip install opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap -a install

export OTEL_SERVICE_NAME=shop-api
export OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317
opentelemetry-instrument python app.py
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For Java, attach the agent with &lt;code&gt;-javaagent:opentelemetry-javaagent.jar&lt;/code&gt;. For Node.js, load the auto-instrumentation package at startup. On Kubernetes, the &lt;strong&gt;OpenTelemetry Operator&lt;/strong&gt; can even inject auto-instrumentation into pods with a single annotation.&lt;/p&gt;
&lt;p&gt;Within minutes, every incoming request, outgoing HTTP call and database query becomes a span.&lt;/p&gt;
&lt;p&gt;Then add a few &lt;strong&gt;manual spans&lt;/strong&gt; for important business operations:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;from opentelemetry import trace

tracer = trace.get_tracer("shop")

def place_order(order):
    with tracer.start_as_current_span("place_order") as span:
        span.set_attribute("order.items", len(order.items))
        # ... business logic
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;The Collector: the heart of the setup&lt;/h2&gt;
&lt;p&gt;I always send telemetry to a &lt;strong&gt;Collector&lt;/strong&gt; first, rather than directly from apps to a backend. It decouples apps from vendors and lets you process data centrally.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;receivers:
  otlp:
    protocols:
      grpc:
      http:

processors:
  memory_limiter:
    check_interval: 1s
    limit_percentage: 80
  batch:
  attributes:
    actions:
      - key: user.email
        action: delete      # don't ship personal data

exporters:
  otlp/tempo:
    endpoint: tempo:4317
    tls:
      insecure: true
  prometheusremotewrite:
    endpoint: http://prometheus:9090/api/v1/write

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [memory_limiter, attributes, batch]
      exporters: [otlp/tempo]
    metrics:
      receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [prometheusremotewrite]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A common pattern on Kubernetes: a Collector as a &lt;strong&gt;DaemonSet&lt;/strong&gt; on every node (receiving from local pods and collecting node data), sending to a central &lt;strong&gt;gateway&lt;/strong&gt; Collector that handles sampling, filtering and exporting.&lt;/p&gt;
&lt;h2&gt;Sending data anywhere&lt;/h2&gt;
&lt;p&gt;With the Collector in the middle, changing or adding a backend is a configuration change. Popular open-source destinations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prometheus&lt;/strong&gt; or &lt;strong&gt;Mimir&lt;/strong&gt; for metrics&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tempo&lt;/strong&gt; or &lt;strong&gt;Jaeger&lt;/strong&gt; for traces&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Loki&lt;/strong&gt; for logs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grafana&lt;/strong&gt; on top of all of them&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Or any commercial vendor that accepts OTLP, which today is almost all of them.&lt;/p&gt;
&lt;h2&gt;Tips from getting started&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Set &lt;code&gt;service.name&lt;/code&gt;&lt;/strong&gt; on everything. Without it, your data is a mess.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use resource attributes&lt;/strong&gt; for environment, version and cluster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Start with auto-instrumentation&lt;/strong&gt;, then add manual spans where business logic matters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mind the volume&lt;/strong&gt;: tracing every request in a busy system is expensive. Plan sampling early.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep personal data out&lt;/strong&gt;, using Collector processors to drop or mask sensitive attributes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, is it worth it?&lt;/h2&gt;
&lt;p&gt;Absolutely. OpenTelemetry is where the whole industry is going. Instrumenting with it today means you'll never have to re-instrument just because you changed vendors, and you get traces, metrics and logs that finally talk to each other.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: instrument once, with an open standard, and keep the freedom to change your mind about everything else.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>A monitoring stack with Prometheus 3 and Grafana</title>
      <link>https://deslypeter.com/writing/prometheus-3-and-grafana</link>
      <guid>https://deslypeter.com/writing/prometheus-3-and-grafana.html?lang=en</guid>
      <description>What's new in Prometheus 3, and the stack I'd set up today.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Prometheus has been the backbone of Kubernetes monitoring for almost a decade. It was the second project to join the CNCF after Kubernetes itself. Then, in late 2024, came Prometheus 3.0, the first major version in seven years.&lt;/p&gt;
&lt;p&gt;Here's what changed, and the monitoring stack I'd build today for a typical Kubernetes setup.&lt;/p&gt;
&lt;h2&gt;What's new in Prometheus 3&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;A new web UI.&lt;/strong&gt; Rebuilt from scratch, with a modern query editor, better autocompletion, and a "explain" view that breaks down PromQL queries. It finally feels like a tool from this decade.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenTelemetry support.&lt;/strong&gt; Prometheus can now receive metrics over &lt;strong&gt;OTLP&lt;/strong&gt; directly. Apps instrumented with OpenTelemetry can push metrics to Prometheus without an extra translation layer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UTF-8 metric and label names.&lt;/strong&gt; Prometheus used to allow only a limited set of characters in names. Now dots and other characters are allowed, which matters for OpenTelemetry's naming conventions like &lt;code&gt;http.server.request.duration&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Native histograms.&lt;/strong&gt; A more efficient and precise way to store latency distributions, without having to choose bucket boundaries in advance. They've been maturing over the 3.x releases and are well worth using for latency metrics.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Remote Write 2.0.&lt;/strong&gt; A more efficient protocol for sending data to long-term storage systems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Breaking changes&lt;/strong&gt; were kept small, but a few defaults changed (for example around scrape protocols and some flags). Read the migration guide before upgrading.&lt;/p&gt;
&lt;h2&gt;Setting it up&lt;/h2&gt;
&lt;p&gt;On Kubernetes, the easiest way to get a full stack is the &lt;strong&gt;kube-prometheus-stack&lt;/strong&gt; Helm chart:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install monitoring prometheus-community/kube-prometheus-stack \
  --namespace monitoring --create-namespace
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It installs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prometheus Operator&lt;/strong&gt;, which manages Prometheus with Kubernetes resources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prometheus&lt;/strong&gt; itself&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alertmanager&lt;/strong&gt; for routing alerts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grafana&lt;/strong&gt; with ready-made dashboards&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;node-exporter&lt;/strong&gt; for node metrics and &lt;strong&gt;kube-state-metrics&lt;/strong&gt; for Kubernetes object state&lt;/li&gt;
&lt;li&gt;A large set of default &lt;strong&gt;alerting rules&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then, to scrape your own apps, add a &lt;strong&gt;ServiceMonitor&lt;/strong&gt; or &lt;strong&gt;PodMonitor&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: shop-api
  namespace: shop
  labels:
    release: monitoring
spec:
  selector:
    matchLabels:
      app: shop-api
  endpoints:
  - port: http
    path: /metrics
    interval: 30s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The operator picks it up and configures Prometheus automatically. No editing of a central config file.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Prometheus is simple on purpose. It scrapes, stores and alerts, and it does those three things extremely well.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Keeping data longer&lt;/h2&gt;
&lt;p&gt;A single Prometheus server keeps data locally, usually for a few weeks. It's not designed for long-term storage or for a global view across many clusters. For that, there are three popular options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Thanos&lt;/strong&gt;: adds a sidecar to Prometheus that uploads data to object storage, plus components for querying across many Prometheus servers. Good if you already run Prometheus everywhere.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grafana Mimir&lt;/strong&gt;: a horizontally scalable metrics backend. Prometheus servers (or OTel Collectors) send data via remote write. Good for large, multi-tenant setups.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VictoriaMetrics&lt;/strong&gt;: known for efficiency and low resource use, with a simple single-binary option and a cluster version.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For a single small cluster, plain Prometheus with a few weeks of retention is perfectly fine. Add one of these when you need months of history or many clusters in one view.&lt;/p&gt;
&lt;h2&gt;Dashboards I actually look at&lt;/h2&gt;
&lt;p&gt;Grafana lets you make hundreds of dashboards, but most people never look at them again. The ones I actually use are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Service overview (RED)&lt;/strong&gt;: Rate, Errors and Duration for each service. One row per service, linked to details.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cluster capacity&lt;/strong&gt;: CPU and memory requests vs allocatable vs actual usage, per node pool. Shows both waste and pressure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SLO dashboard&lt;/strong&gt;: current error budget and burn rate for the most important services.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes workloads&lt;/strong&gt;: restarts, OOMKills, pending pods, failing deployments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dependencies&lt;/strong&gt;: databases, queues and caches, their latency and saturation.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Keep dashboards in Git (Grafana supports provisioning dashboards from files, and there's a Grafana Operator for Kubernetes), so they're versioned and reviewed like code.&lt;/p&gt;
&lt;h2&gt;Alerts that matter&lt;/h2&gt;
&lt;p&gt;The kube-prometheus-stack comes with many alerts. Some are excellent, some will be noise in your environment. Go through them, keep what's actionable, and add alerts based on &lt;strong&gt;symptoms&lt;/strong&gt; (error rates, latency, SLO burn rates) for your own services.&lt;/p&gt;
&lt;p&gt;Route them through &lt;strong&gt;Alertmanager&lt;/strong&gt; with grouping (one notification for related alerts), inhibition (don't alert on everything when a whole cluster is down) and different receivers for different severities.&lt;/p&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Install kube-prometheus-stack in a test cluster, add a ServiceMonitor for one of your apps, and build a single RED dashboard for it. Upgrade to Prometheus 3 if you haven't already, and try the new UI. Long-term storage can wait until you actually need it.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: Prometheus 3 keeps everything that made Prometheus great, and finally speaks OpenTelemetry. It's still the best place to start.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>When the monitoring bill beats the server bill</title>
      <link>https://deslypeter.com/writing/reducing-observability-costs</link>
      <guid>https://deslypeter.com/writing/reducing-observability-costs.html?lang=en</guid>
      <description>How to cut observability costs without flying blind.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;There's a moment many companies reach: someone in finance asks why the observability invoice is bigger than the compute bill for the systems being observed. It sounds absurd, but it happens a lot. Observability costs have quietly become one of the biggest line items in many infrastructure budgets.&lt;/p&gt;
&lt;p&gt;Most of that data isn't actually used. Cutting it doesn't mean losing sight of what's happening. It means being selective about what you keep.&lt;/p&gt;
&lt;h2&gt;Why it gets so expensive&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Logs everywhere.&lt;/strong&gt; Debug logging left on in production, verbose frameworks, health check logs, the same information logged by five layers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metric cardinality.&lt;/strong&gt; A metric with labels like &lt;code&gt;user_id&lt;/code&gt;, &lt;code&gt;request_id&lt;/code&gt; or full URLs creates a separate time series for every unique value. Millions of series, each one billed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tracing everything.&lt;/strong&gt; 100% of requests traced in a high-traffic system produces enormous volumes, most of them identical successful requests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Long retention by default.&lt;/strong&gt; Keeping everything for months, "just in case".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per-host or per-container pricing&lt;/strong&gt; combined with autoscaling and many small containers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duplicate data.&lt;/strong&gt; The same logs sent to two tools, metrics collected by two agents.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Know where the money goes&lt;/h2&gt;
&lt;p&gt;Before cutting anything, measure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which services produce the most logs, metrics and traces?&lt;/li&gt;
&lt;li&gt;Which metrics have the highest cardinality? (Prometheus has a TSDB status page showing this, and most vendors show usage per metric.)&lt;/li&gt;
&lt;li&gt;Which data is actually queried? Many tools can show which dashboards, alerts and queries use which data.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You'll almost always find that a handful of services and metrics account for most of the bill.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The cheapest telemetry is the telemetry you decided not to collect, because you knew nobody would miss it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Sampling traces&lt;/h2&gt;
&lt;p&gt;You don't need every trace. You need the interesting ones.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Head sampling&lt;/strong&gt; decides at the start of a request whether to keep it, for example 10% of requests. Simple and cheap, but it might throw away the one failed request you needed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tail sampling&lt;/strong&gt; decides after the trace is complete, so it can keep all errors, all slow requests, and only a small percentage of normal ones. The OpenTelemetry Collector supports this:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;processors:
  tail_sampling:
    decision_wait: 10s
    policies:
      - name: keep-errors
        type: status_code
        status_code: { status_codes: [ERROR] }
      - name: keep-slow
        type: latency
        latency: { threshold_ms: 1000 }
      - name: sample-the-rest
        type: probabilistic
        probabilistic: { sampling_percentage: 5 }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You keep everything useful for debugging, and drop 90%+ of the volume.&lt;/p&gt;
&lt;h2&gt;Filtering logs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Drop noise at the source&lt;/strong&gt;: health checks, readiness probes, successful static file requests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Set sensible log levels&lt;/strong&gt;: &lt;code&gt;info&lt;/code&gt; or &lt;code&gt;warn&lt;/code&gt; in production, &lt;code&gt;debug&lt;/code&gt; only when investigating, ideally switchable at runtime.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Structured logs&lt;/strong&gt; compress better and are cheaper to query.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filter in the pipeline&lt;/strong&gt;: the OTel Collector, Vector or Fluent Bit can drop, sample or truncate logs before they reach the expensive backend.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Turn repeated logs into metrics.&lt;/strong&gt; If you only ever count a log line, make it a counter instead.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tiered storage&lt;/strong&gt;: recent logs in fast, expensive storage, older logs in cheap object storage (or deleted).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Taming metric cardinality&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Never use unbounded values as labels&lt;/strong&gt;: user IDs, request IDs, email addresses, full URLs, timestamps.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Normalise paths&lt;/strong&gt;: &lt;code&gt;/orders/{id}&lt;/code&gt; instead of &lt;code&gt;/orders/12345&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drop unused metrics&lt;/strong&gt; with relabelling rules in Prometheus or the Collector. Many exporters expose hundreds of metrics, and you use ten.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aggregate before storing&lt;/strong&gt; with recording rules, keeping detailed data for a short time and aggregated data for longer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review new metrics&lt;/strong&gt; in code review: what labels does it have, and how many values could each take?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Open source vs SaaS&lt;/h2&gt;
&lt;p&gt;Commercial platforms are convenient and powerful, but pricing based on hosts, ingested gigabytes or custom metrics can grow quickly.&lt;/p&gt;
&lt;p&gt;Open-source stacks (Prometheus or Mimir, Loki, Tempo, Grafana, or ClickHouse-based tools like SigNoz) can be much cheaper at scale, especially with object storage. But they need people to run them, and that's a real cost too.&lt;/p&gt;
&lt;p&gt;Many companies end up with a mix: OpenTelemetry everywhere, the Collector routing data, high-value data to a commercial tool, bulk data to cheaper self-hosted storage. Because OTel is vendor-neutral, you can change that split whenever pricing changes.&lt;/p&gt;
&lt;h2&gt;Make cost visible&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Show observability costs &lt;strong&gt;per team or service&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;budgets and alerts&lt;/strong&gt; on ingestion.&lt;/li&gt;
&lt;li&gt;Make "what does this cost to monitor?" a normal question when launching a new service.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Find your top five data producers. Turn on tail sampling for traces, drop health check logs, and remove your highest-cardinality labels. Those three changes alone often cut the bill dramatically, and nobody notices any loss in visibility.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: observability should help you understand your system, not compete with it for budget. Collect with intention, keep what you use, and let the rest go.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Where should logs live? Loki, Elasticsearch or ClickHouse</title>
      <link>https://deslypeter.com/writing/loki-elasticsearch-clickhouse</link>
      <guid>https://deslypeter.com/writing/loki-elasticsearch-clickhouse.html?lang=en</guid>
      <description>Three ways to store logs, with very different bills.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Logs are the oldest form of observability and still the one everyone reaches for first when something breaks. They're also often the most expensive part of an observability setup, because there's so much of them.&lt;/p&gt;
&lt;p&gt;Where you store logs decides how fast you can search them, how much you pay, and how much work it is to keep the system running. Three approaches dominate today, and they're built on very different ideas.&lt;/p&gt;
&lt;h2&gt;How they differ&lt;/h2&gt;
&lt;h3&gt;Elasticsearch / OpenSearch: index everything&lt;/h3&gt;
&lt;p&gt;The classic. Elasticsearch (and its open-source fork &lt;strong&gt;OpenSearch&lt;/strong&gt;) builds a &lt;strong&gt;full-text index&lt;/strong&gt; of every log line. Every word becomes searchable, very fast.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Strengths&lt;/strong&gt;: powerful full-text search, rich queries and aggregations, mature ecosystem (Kibana, OpenSearch Dashboards), great for security analytics.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weaknesses&lt;/strong&gt;: indexing everything is expensive in storage, memory and CPU. Clusters need careful tuning (shards, replicas, heap sizes). At large volumes, cost and operational effort grow fast.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Grafana Loki: index only labels&lt;/h3&gt;
&lt;p&gt;Loki takes the opposite approach: it &lt;strong&gt;doesn't index the log content&lt;/strong&gt;, only a small set of labels (like namespace, app, pod, level). The log lines themselves are compressed and stored in cheap object storage. When you search, Loki finds the right streams by label, then scans through their content.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Strengths&lt;/strong&gt;: much cheaper storage and much simpler to run. Fits naturally with Prometheus (same label model) and Grafana. Works great for "show me logs from this service around this time".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weaknesses&lt;/strong&gt;: searching for a random string across all logs over a long time range is slower. High-cardinality labels (like user ID) hurt performance badly. Labels must be chosen carefully.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;ClickHouse: columnar analytics&lt;/h3&gt;
&lt;p&gt;ClickHouse is a &lt;strong&gt;columnar analytical database&lt;/strong&gt;, built for fast queries over huge amounts of structured data. It's become very popular for logs and traces, used directly or through tools like &lt;strong&gt;SigNoz&lt;/strong&gt;, &lt;strong&gt;HyperDX&lt;/strong&gt; (now part of ClickHouse), &lt;strong&gt;Uptrace&lt;/strong&gt; and others.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Strengths&lt;/strong&gt;: excellent compression, very fast aggregations and filtering on structured fields, SQL queries. Great for structured logs where you want analytics ("error rate per endpoint per customer over the last month").&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weaknesses&lt;/strong&gt;: you need to think about schema and table design. Pure full-text search is good but not Elasticsearch-level. Running ClickHouse clusters at scale requires expertise.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Elasticsearch asks "what words are in your logs?" Loki asks "where did they come from?" ClickHouse asks "what's in each field?"&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What it costs&lt;/h2&gt;
&lt;p&gt;Rough relative comparison for the same volume of logs (actual numbers depend heavily on configuration and retention):&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Elasticsearch / OpenSearch&lt;/th&gt;
&lt;th&gt;Loki&lt;/th&gt;
&lt;th&gt;ClickHouse&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Storage cost&lt;/td&gt;
&lt;td&gt;High (index + data)&lt;/td&gt;
&lt;td&gt;Low (compressed, object storage)&lt;/td&gt;
&lt;td&gt;Low (columnar compression)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compute for ingestion&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full-text search speed&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Fair over long ranges&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aggregations / analytics&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;Basic (LogQL metrics)&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operational effort&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Low to medium&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Managed versions exist for all three: Elastic Cloud, Amazon OpenSearch Service, Grafana Cloud Logs, ClickHouse Cloud, and many observability vendors build on one of these underneath.&lt;/p&gt;
&lt;h2&gt;Structured logs make everything better&lt;/h2&gt;
&lt;p&gt;Whatever you choose, &lt;strong&gt;structured logs&lt;/strong&gt; (JSON or logfmt) help enormously:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-json"&gt;{"ts":"2026-10-20T09:14:02Z","level":"error","service":"shop-api","trace_id":"4bf92f3577b34da6","route":"/orders","status":500,"duration_ms":1834,"msg":"payment provider timeout"}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Fields can be filtered and aggregated directly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;trace_id&lt;/code&gt;&lt;/strong&gt; links logs to traces, so you can jump from a log line to the full request.&lt;/li&gt;
&lt;li&gt;Consistent field names across services make cross-service searches possible.&lt;/li&gt;
&lt;li&gt;Avoid putting variable data in the message text when it can be a field.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How long to keep them&lt;/h2&gt;
&lt;p&gt;Retention drives cost more than anything else. Think in tiers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hot (days to a couple of weeks)&lt;/strong&gt;: fast, searchable, for debugging.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Warm or cold (weeks to months)&lt;/strong&gt;: cheaper storage, slower queries, for investigations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Archive (months to years)&lt;/strong&gt;: object storage, for compliance only.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Check legal requirements (security logs, audit logs, financial systems), and make sure &lt;strong&gt;personal data&lt;/strong&gt; in logs is minimised and deleted on schedule. GDPR applies to logs too.&lt;/p&gt;
&lt;h2&gt;My recommendations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes-heavy team already using Grafana and Prometheus&lt;/strong&gt;: start with &lt;strong&gt;Loki&lt;/strong&gt;. Cheap, simple, integrates beautifully.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security analytics, full-text search across everything, existing Elastic expertise&lt;/strong&gt;: &lt;strong&gt;Elasticsearch or OpenSearch&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Large volumes of structured logs, analytics questions, or a unified store for logs and traces&lt;/strong&gt;: look at &lt;strong&gt;ClickHouse&lt;/strong&gt;-based tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And collect logs with a vendor-neutral pipeline (the OpenTelemetry Collector, Vector or Fluent Bit), so you can change the storage later without touching every application.&lt;/p&gt;
&lt;h2&gt;So, where should your logs live?&lt;/h2&gt;
&lt;p&gt;Somewhere that matches how you actually search them, at a price you're comfortable with. For most teams starting fresh on Kubernetes, that's Loki. For teams with heavy search or analytics needs, the other two earn their extra cost or effort.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: choose your log storage by how you ask questions, not by habit. And remember that the cheapest log is still the one you never wrote.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Breaking things on purpose: chaos engineering</title>
      <link>https://deslypeter.com/writing/chaos-engineering</link>
      <guid>https://deslypeter.com/writing/chaos-engineering.html?lang=en</guid>
      <description>The best time to find a weakness is before your users do.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Every system has weaknesses nobody knows about. A timeout that's too long. A retry that turns a small problem into a big one. A failover that worked once in testing two years ago and never since. Usually, you discover them during a real outage, at the worst possible time.&lt;/p&gt;
&lt;p&gt;Chaos engineering is about finding weaknesses on purpose, in a controlled way, before they cause problems.&lt;/p&gt;
&lt;h2&gt;The idea&lt;/h2&gt;
&lt;p&gt;Netflix made chaos engineering famous with &lt;strong&gt;Chaos Monkey&lt;/strong&gt;, a tool that randomly terminated production servers. The idea sounded crazy, but the logic was simple: if servers will fail anyway, make sure your system handles it, by making failure a normal, everyday event.&lt;/p&gt;
&lt;p&gt;Today the practice is more careful and scientific than random destruction:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Define steady state&lt;/strong&gt;: what does "working normally" look like? Usually measured with metrics like error rate, latency or orders per minute.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Form a hypothesis&lt;/strong&gt;: "If one database replica fails, error rates stay below 0.5% and the app recovers within 30 seconds."&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Introduce a failure&lt;/strong&gt;: kill the replica.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observe&lt;/strong&gt;: did the steady state hold?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn and fix&lt;/strong&gt;: if not, you've found a weakness before it caused a real outage.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;Chaos engineering isn't about breaking things. It's about proving that your system can take a hit, and finding out where it can't.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What kinds of failures?&lt;/h2&gt;
&lt;p&gt;Common experiments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kill pods or nodes&lt;/strong&gt;: does Kubernetes reschedule correctly? Do clients reconnect?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add network latency&lt;/strong&gt;: what happens when a dependency becomes slow, not down? (Often worse than being down.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drop network traffic&lt;/strong&gt; between services, or to an external API.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fill disks&lt;/strong&gt; or exhaust memory and CPU.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fail a whole availability zone&lt;/strong&gt;: does traffic shift?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Break DNS&lt;/strong&gt; or certificates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make a dependency return errors&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Your first game day&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;game day&lt;/strong&gt; is a planned session where a team runs chaos experiments together. It's the best way to start.&lt;/p&gt;
&lt;p&gt;How I'd run one:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Pick a non-production environment&lt;/strong&gt; that's close to production, like staging.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Choose one service and one or two experiments.&lt;/strong&gt; For example: kill one pod of the checkout service, then add 500 ms latency to its database calls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write down the hypothesis&lt;/strong&gt; for each experiment before starting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Get everyone in a room or call&lt;/strong&gt;: the service owners, someone watching dashboards, someone running the experiment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run the experiment, watch the metrics, take notes.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Have a stop button&lt;/strong&gt;: know how to end the experiment immediately.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debrief&lt;/strong&gt;: what did we expect, what happened, what will we fix?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first game day often shows something unexpected: a missing alert, a dashboard that's confusing, an outdated runbook, or a retry storm. That alone makes it worth doing.&lt;/p&gt;
&lt;h2&gt;Tools to try&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chaos Mesh&lt;/strong&gt; (CNCF): a Kubernetes-native tool with a nice UI. Experiments are Kubernetes resources: pod kill, network delay, stress, I/O faults, time skew and more.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LitmusChaos&lt;/strong&gt; (CNCF): Kubernetes chaos with a large hub of ready-made experiments and workflows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AWS Fault Injection Service&lt;/strong&gt; and &lt;strong&gt;Azure Chaos Studio&lt;/strong&gt;: managed services for injecting failures into cloud resources, including AZ-level disruptions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gremlin&lt;/strong&gt;: a commercial platform with safety controls and a good UI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Toxiproxy&lt;/strong&gt;: a simple proxy for simulating network conditions in tests.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A Chaos Mesh experiment adding latency:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
metadata:
  name: checkout-db-latency
  namespace: shop
spec:
  action: delay
  mode: all
  selector:
    namespaces: ["shop"]
    labelSelectors:
      app: checkout
  delay:
    latency: "500ms"
    jitter: "100ms"
  direction: to
  target:
    mode: all
    selector:
      labelSelectors:
        app: orders-db
  duration: "5m"
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Starting small, staying safe&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Start in staging&lt;/strong&gt;, with small blast radius: one pod, one service.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make experiments reversible&lt;/strong&gt; and time-limited.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitor closely&lt;/strong&gt; and abort if things go further than expected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tell people&lt;/strong&gt; before you run experiments, especially at first.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Move to production carefully&lt;/strong&gt;, only once you trust your monitoring and rollback, and start with the least risky experiments during working hours.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Did it help?&lt;/h2&gt;
&lt;p&gt;Measure the effect over time:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Number of weaknesses found and fixed.&lt;/li&gt;
&lt;li&gt;Incidents caused by failure modes you'd already tested (should go down).&lt;/li&gt;
&lt;li&gt;Recovery time in real incidents.&lt;/li&gt;
&lt;li&gt;Team confidence during incidents, which is hard to measure but very real.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, should you try it?&lt;/h2&gt;
&lt;p&gt;Yes, even on a small scale. One game day on staging, with one simple experiment, teaches a team more about their system than months of reading architecture diagrams.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: every system has a breaking point. Better to find it on a calm Tuesday afternoon than on a busy Saturday night.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Profiling in production: where the CPU actually goes</title>
      <link>https://deslypeter.com/writing/continuous-profiling-production</link>
      <guid>https://deslypeter.com/writing/continuous-profiling-production.html?lang=en</guid>
      <description>Metrics say something is slow. Profiles say why.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Here's a familiar situation. A dashboard shows a service using way more CPU than it should. Latency is creeping up. You look at the metrics: yes, CPU is high. You look at the traces: requests are slow, but inside the service, not in its dependencies. You look at the logs: nothing unusual.&lt;/p&gt;
&lt;p&gt;What you really want to know is: &lt;strong&gt;which code&lt;/strong&gt; is using all that CPU? That's what profiling answers. And continuous profiling answers it all the time, in production.&lt;/p&gt;
&lt;h2&gt;What profiling shows&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;profile&lt;/strong&gt; records where a program spends its resources, down to individual functions and lines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CPU profiles&lt;/strong&gt;: which functions are running on the CPU, and how much.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memory (heap) profiles&lt;/strong&gt;: which code allocates memory, and how much is still held.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Allocation profiles&lt;/strong&gt;: how often memory is allocated, which drives garbage collection overhead.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lock and goroutine/thread profiles&lt;/strong&gt;: where code waits.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Profiles are usually shown as &lt;strong&gt;flame graphs&lt;/strong&gt;: each bar is a function, its width shows how much time it took, and functions it called are stacked on top. Wide bars are where the time goes. You can see at a glance that, for example, 30% of CPU goes into JSON serialisation, or a regex compiled on every request.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Metrics tell you that your service is slow. A flame graph points at the line of code making it slow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Why continuous profiling&lt;/h2&gt;
&lt;p&gt;Developers have profiled code for decades, but usually locally, for a few minutes, with special tools. The problem: production behaves differently. Different data, different traffic, different load.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Continuous profiling&lt;/strong&gt; collects profiles from production all the time, with low overhead, and stores them so you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Look at any point in the past: "what was this service doing during yesterday's spike?"&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compare&lt;/strong&gt; time periods or versions: "what changed in CPU usage after release 2.4?"&lt;/li&gt;
&lt;li&gt;See the whole fleet, not just one instance.&lt;/li&gt;
&lt;li&gt;Link profiles to traces, so a slow span shows exactly which code was running.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grafana Pyroscope&lt;/strong&gt;: open source, integrates with Grafana, supports many languages through SDKs and eBPF.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parca&lt;/strong&gt;: open source, eBPF-based, profiles everything on a node without code changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenTelemetry profiling&lt;/strong&gt;: profiles are becoming the fourth OpenTelemetry signal, with an eBPF-based profiling agent donated to the project. Still maturing, but it's clearly where things are going.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Commercial&lt;/strong&gt;: Datadog, Elastic, Google Cloud Profiler, Polar Signals and others.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are two ways to collect:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;eBPF-based&lt;/strong&gt;: an agent on each node profiles every process, in any language, with no code changes. Easy to roll out widely. Best support for compiled languages, and growing support for interpreted ones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SDK-based&lt;/strong&gt;: a library in your application. Gives richer information for some runtimes (like memory profiles in Go or Java), at the cost of adding a dependency.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The overhead&lt;/h2&gt;
&lt;p&gt;The usual first question: does profiling slow down production? Modern continuous profilers sample, for example looking at the stack a hundred times per second, instead of tracing every function call. The overhead is typically small, often around 1% of CPU, depending on the tool and settings.&lt;/p&gt;
&lt;p&gt;Compared to the savings it often finds, that's a very good deal. But test it on your workloads, and start with a few services.&lt;/p&gt;
&lt;h2&gt;How profiling cuts CPU costs&lt;/h2&gt;
&lt;p&gt;This is where continuous profiling pays for itself. Common findings when teams first look at fleet-wide flame graphs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Expensive logging&lt;/strong&gt;: string formatting and serialisation for debug logs that are never shipped.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inefficient serialisation&lt;/strong&gt;: JSON encoding and decoding dominating CPU in API services.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regexes compiled repeatedly&lt;/strong&gt; instead of once.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unnecessary allocations&lt;/strong&gt; causing high garbage collection overhead.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chatty libraries&lt;/strong&gt;: an HTTP client or ORM doing much more work than expected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hot loops&lt;/strong&gt; in code nobody looked at in years.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fixing a single wide bar in the flame graph of a service that runs on hundreds of cores can save real money. That's why profiling is increasingly part of FinOps conversations, not just performance tuning.&lt;/p&gt;
&lt;h2&gt;A simple way to start&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Install an eBPF-based profiler (Pyroscope's agent, Parca, or the OTel profiling agent) on a test cluster.&lt;/li&gt;
&lt;li&gt;Open the flame graph for your most CPU-hungry service.&lt;/li&gt;
&lt;li&gt;Look for the widest bars that aren't your core business logic.&lt;/li&gt;
&lt;li&gt;Pick one, fix it, deploy, and &lt;strong&gt;compare&lt;/strong&gt; before and after.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That first comparison, a visibly narrower bar and a lower CPU graph, is usually what convinces the rest of the team.&lt;/p&gt;
&lt;h2&gt;So, is it worth it?&lt;/h2&gt;
&lt;p&gt;For any team running services at scale, yes. Continuous profiling fills the gap between "the service is slow" and "here's why", and it regularly finds savings that pay for the whole observability stack.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: don't guess where your CPU goes. Look. The flame graph is usually more honest than any of us.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Cutting the cloud bill by a third</title>
      <link>https://deslypeter.com/writing/cutting-the-cloud-bill</link>
      <guid>https://deslypeter.com/writing/cutting-the-cloud-bill.html?lang=en</guid>
      <description>The quick wins and long-term habits that make a cloud bill smaller.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Cloud bills have a way of growing quietly. A test environment nobody deleted. A database sized for a launch that never needed it. Snapshots from 2022. Data transfer charges nobody understands. Each one is small. Together, they add up to a bill that makes finance ask uncomfortable questions.&lt;/p&gt;
&lt;p&gt;Industry surveys often say that a big chunk of cloud spending—usually a quarter to a third—is wasted. From my experience, cutting a typical bill by 20 to 30% is realistic without hurting performance. Here's how.&lt;/p&gt;
&lt;h2&gt;The FinOps idea&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;FinOps&lt;/strong&gt; is the practice of bringing financial accountability to cloud spending. The FinOps Foundation describes a simple cycle:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Inform&lt;/strong&gt;: make costs visible. Who's spending what, on which service?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimise&lt;/strong&gt;: reduce waste and get better prices.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operate&lt;/strong&gt;: make cost part of everyday decisions, continuously.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The most important idea: cost isn't just finance's problem. Engineers make the decisions that create costs, every time they choose an instance size or a storage class. So engineers need to see the numbers.&lt;/p&gt;
&lt;h2&gt;Where the money goes&lt;/h2&gt;
&lt;p&gt;Before making cuts, look at the data. Every cloud provider has cost tools (AWS Cost Explorer, Azure Cost Management, Google Cloud Billing reports). Group costs by service, account or project, and tags.&lt;/p&gt;
&lt;p&gt;Usually, a few categories dominate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compute&lt;/strong&gt; (VMs, Kubernetes nodes)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Databases&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage&lt;/strong&gt; (block, object, snapshots)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data transfer&lt;/strong&gt; (often a surprise)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Managed services&lt;/strong&gt; like logging and monitoring&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And make sure resources are &lt;strong&gt;tagged&lt;/strong&gt; with owner, team, environment and service. Without tags, you can't tell who owns what, and nobody feels responsible.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A cloud bill nobody looks at is a cloud bill that only grows.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Quick wins&lt;/h2&gt;
&lt;p&gt;These usually take days, not months:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Delete unused resources&lt;/strong&gt;: unattached disks, old snapshots, idle load balancers, unused elastic IPs, forgotten test environments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Right-size&lt;/strong&gt;: many VMs and databases run at 10 to 20% CPU. Cloud providers' recommendation tools (AWS Compute Optimizer, Azure Advisor, Google Recommender) point them out.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Turn off non-production at night and weekends.&lt;/strong&gt; Development and test environments that run only during working hours cost roughly a third.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use the right storage class&lt;/strong&gt;: move old data to cheaper tiers with lifecycle policies (S3 Intelligent-Tiering, infrequent access, archive classes).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upgrade to newer instance generations&lt;/strong&gt;, which are usually cheaper for the same performance. ARM-based instances (like AWS Graviton) often give a good price-performance improvement for workloads that support them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clean up logs&lt;/strong&gt;: set retention periods on log groups. "Never expire" is a common, expensive default.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Commitments and Spot&lt;/h2&gt;
&lt;p&gt;Once usage is right-sized, get better prices for what remains:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Savings Plans and Reserved Instances&lt;/strong&gt; (AWS), &lt;strong&gt;reservations and savings plans&lt;/strong&gt; (Azure), &lt;strong&gt;committed use discounts&lt;/strong&gt; (Google Cloud): commit to a certain level of usage for one or three years, and get significant discounts. Best for stable, predictable baseline usage. Commit to your baseline, not your peak.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spot instances&lt;/strong&gt; (AWS), &lt;strong&gt;Spot VMs&lt;/strong&gt; (Azure, Google Cloud): spare capacity at large discounts, but they can be taken away with short notice. Great for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stateless, horizontally scaled services&lt;/li&gt;
&lt;li&gt;Batch jobs and CI runners&lt;/li&gt;
&lt;li&gt;Kubernetes node pools for fault-tolerant workloads (Karpenter handles Spot nicely)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not for: single-instance databases or anything that can't handle interruption.&lt;/p&gt;
&lt;h2&gt;The sneaky costs&lt;/h2&gt;
&lt;p&gt;Some costs hide well:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Data transfer between availability zones and regions.&lt;/strong&gt; Chatty services spread across zones can generate large bills. Topology-aware routing in Kubernetes helps.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NAT gateway charges&lt;/strong&gt; for traffic to the internet or to cloud services. VPC endpoints for services like S3 can save a lot.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Idle managed services&lt;/strong&gt;: a managed Kafka or Elasticsearch cluster used by one small app.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observability&lt;/strong&gt;: logging and metrics costs, often bigger than expected (I wrote a separate post on that).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Making cost everyone's job&lt;/h2&gt;
&lt;p&gt;Quick wins fade if nothing changes in how people work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Show costs per team&lt;/strong&gt; in a dashboard, updated daily. Showback alone changes behaviour.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Budgets and anomaly alerts&lt;/strong&gt; so unexpected spikes are caught in days, not at the end of the month.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost in pull requests&lt;/strong&gt;: tools like &lt;strong&gt;Infracost&lt;/strong&gt; show the cost impact of Terraform changes before they're merged.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost as a non-functional requirement&lt;/strong&gt; for new services, like performance or security.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The FOCUS specification&lt;/strong&gt; (FinOps Open Cost and Usage Specification) is standardising billing data across providers, making multi-cloud cost reporting much easier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Tag everything, find your top ten most expensive resources, and check each one: is it needed, is it the right size, is it running when it doesn't have to? That exercise alone usually finds the first 10 to 20% of savings. Then commitments and Spot take you further.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: the cloud lets you spend money at the speed of an API call. Make sure someone is watching at the same speed.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>What does each team's Kubernetes cost?</title>
      <link>https://deslypeter.com/writing/kubernetes-cost-opencost-kubecost</link>
      <guid>https://deslypeter.com/writing/kubernetes-cost-opencost-kubecost.html?lang=en</guid>
      <description>OpenCost and Kubecost answer the question finance keeps asking.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;On a cloud bill, Kubernetes looks simple: you pay for nodes. Twenty VMs, a load balancer, some disks. But who's actually using those nodes? Ten teams, fifty services, a few hundred pods, all sharing the same machines. When finance asks "how much does the search team's infrastructure cost?", the cloud bill can't answer.&lt;/p&gt;
&lt;p&gt;That's the Kubernetes cost visibility problem. Here's how to solve it, and how to reduce the bill once you can see it.&lt;/p&gt;
&lt;h2&gt;Splitting the bill&lt;/h2&gt;
&lt;p&gt;To allocate cluster costs to teams, you need to know how much of each node each pod uses or reserves, and what that node costs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenCost&lt;/strong&gt; is a CNCF project that does exactly this. It combines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pod resource &lt;strong&gt;requests&lt;/strong&gt; and actual &lt;strong&gt;usage&lt;/strong&gt; (CPU, memory, GPU, storage).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prices&lt;/strong&gt; from your cloud provider's billing API (including discounts and Spot pricing) or custom prices for on-premises.&lt;/li&gt;
&lt;li&gt;Kubernetes metadata: &lt;strong&gt;namespaces, labels, deployments&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The result: cost per namespace, per label (like &lt;code&gt;team&lt;/code&gt; or &lt;code&gt;app&lt;/code&gt;), per workload, per hour.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kubecost&lt;/strong&gt; (now part of IBM) builds on OpenCost with more features: savings recommendations, budgets, alerts, multi-cluster views and a polished UI. Cloud providers also have their own Kubernetes cost features, like split cost allocation for EKS in AWS, and cost allocation in GKE and AKS.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;helm install opencost opencost/opencost --namespace opencost --create-namespace
kubectl port-forward -n opencost svc/opencost 9090
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A few minutes later, you see costs per namespace.&lt;/p&gt;
&lt;h2&gt;The "idle" problem&lt;/h2&gt;
&lt;p&gt;One thing that surprises teams the first time: a big chunk of the cost belongs to nobody. That's &lt;strong&gt;idle capacity&lt;/strong&gt;: parts of nodes that no pod requested.&lt;/p&gt;
&lt;p&gt;If your nodes are only 50% requested on average, half the cluster is idle. You decide how to handle it: share it out proportionally, assign it to the platform team, or (best) reduce it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can't fix what you can't see. Once teams see their Kubernetes cost, half the optimisation happens on its own.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Labels make or break it&lt;/h2&gt;
&lt;p&gt;Cost allocation is only as good as your labels. Agree on a few standard labels for every workload:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;team&lt;/code&gt; or &lt;code&gt;owner&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;app&lt;/code&gt; or &lt;code&gt;service&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;environment&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cost-center&lt;/code&gt; (if finance needs it)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enforce them with a policy (Kyverno or Gatekeeper), so new workloads can't be deployed without them.&lt;/p&gt;
&lt;h2&gt;Packing nodes tightly&lt;/h2&gt;
&lt;p&gt;Once you see the waste, reducing it usually comes down to &lt;strong&gt;utilisation&lt;/strong&gt;: getting more useful work out of each node.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Right-size requests.&lt;/strong&gt; Over-requested pods reserve capacity they never use. VPA recommendations and Goldilocks help find realistic values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consolidation.&lt;/strong&gt; &lt;strong&gt;Karpenter&lt;/strong&gt; continuously looks for underused nodes and moves pods so it can remove them or replace them with smaller, cheaper ones. The Cluster Autoscaler also scales down underused nodes, more conservatively.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Better instance choices.&lt;/strong&gt; Mixed instance types, newer generations and ARM-based nodes can lower cost per CPU.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bin-packing scheduling.&lt;/strong&gt; The default scheduler spreads pods out. Scheduler configuration that favours fuller nodes, or Karpenter's consolidation, packs them tighter.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PodDisruptionBudgets&lt;/strong&gt; so consolidation can move pods safely without causing outages.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Spot on Kubernetes&lt;/h2&gt;
&lt;p&gt;Spot instances can cut node costs dramatically. Kubernetes is a great fit because it reschedules pods automatically when a node disappears.&lt;/p&gt;
&lt;p&gt;Good practice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;separate Spot node pool&lt;/strong&gt; (or Karpenter NodePool) for fault-tolerant workloads.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diversify instance types&lt;/strong&gt;, so you're not dependent on one Spot pool.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Handle interruption notices&lt;/strong&gt; (Karpenter and the AWS Node Termination Handler do this) to drain nodes gracefully.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiple replicas and PDBs&lt;/strong&gt; for anything running on Spot.&lt;/li&gt;
&lt;li&gt;Keep &lt;strong&gt;stateful and critical singleton workloads&lt;/strong&gt; on on-demand nodes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Showback or chargeback&lt;/h2&gt;
&lt;p&gt;What do you do with the numbers?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Showback&lt;/strong&gt;: show each team its costs. No money moves, but visibility changes behaviour. Most companies start here.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chargeback&lt;/strong&gt;: actually charge teams' budgets for their usage. More accountability, more arguments about fairness, especially for shared and idle costs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I'd always start with showback: a weekly report or dashboard per team, with trends and the biggest opportunities. It's surprising how quickly teams fix their own waste when the number has their name on it.&lt;/p&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Install OpenCost, make sure every workload has a &lt;code&gt;team&lt;/code&gt; label, and share a cost-per-team dashboard. Then look at idle capacity, right-size the biggest over-requesters, and enable consolidation. Spot comes next, for the workloads that can handle it.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: Kubernetes makes sharing infrastructure easy, and sharing costs invisible. Make them visible, and teams will help you bring them down.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>When a region goes down: disaster recovery that works</title>
      <link>https://deslypeter.com/writing/disaster-recovery-that-works</link>
      <guid>https://deslypeter.com/writing/disaster-recovery-that-works.html?lang=en</guid>
      <description>A backup you've never restored is just hope. How to plan and test recovery.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Cloud regions are incredibly reliable. Until they aren't. Large outages at major providers happen every now and then, sometimes taking down a whole region's worth of services for hours. And disasters aren't only about providers: a deleted production database, a ransomware attack, a bad deployment that corrupts data, or an expired payment method that suspends an account.&lt;/p&gt;
&lt;p&gt;Disaster recovery (DR) is about answering one question honestly: if the worst happens, how quickly can we be back, and how much data will we lose?&lt;/p&gt;
&lt;h2&gt;RPO and RTO, simply&lt;/h2&gt;
&lt;p&gt;Two numbers define your DR goals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RPO (Recovery Point Objective)&lt;/strong&gt;: how much data can you afford to lose? If your RPO is one hour, you need backups or replication at least every hour.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RTO (Recovery Time Objective)&lt;/strong&gt;: how long can you be down? If your RTO is four hours, you must be able to restore service within four hours.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lower numbers cost more. An RPO of zero and an RTO of minutes means active-active systems in multiple regions, which is expensive and complex. An RPO of 24 hours and an RTO of a day might be fine for an internal tool.&lt;/p&gt;
&lt;p&gt;Set them per system, with the business. Not everything needs the same level.&lt;/p&gt;
&lt;h2&gt;Four strategies&lt;/h2&gt;
&lt;p&gt;From cheapest to most expensive:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Backup and restore.&lt;/strong&gt; Regular backups stored in another region or account. In a disaster, you rebuild infrastructure (with infrastructure as code) and restore data. Cheap, but recovery takes hours. RPO depends on backup frequency.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Pilot light.&lt;/strong&gt; The core components (like a replicated database) run in the second region at minimal size. Everything else is ready to be created quickly from code. Faster recovery, moderate cost.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Warm standby.&lt;/strong&gt; A scaled-down but fully working copy of the system runs in the second region. In a disaster, you scale it up and switch traffic. Recovery in minutes to an hour.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Active-active (multi-site).&lt;/strong&gt; The system runs fully in multiple regions at once, serving traffic. A region failure just shifts traffic. Near-zero RTO, but the most expensive and complex, especially for data consistency.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Strategy&lt;/th&gt;
&lt;th&gt;Typical RTO&lt;/th&gt;
&lt;th&gt;Typical RPO&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Backup and restore&lt;/td&gt;
&lt;td&gt;Hours to a day&lt;/td&gt;
&lt;td&gt;Hours&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pilot light&lt;/td&gt;
&lt;td&gt;Tens of minutes to hours&lt;/td&gt;
&lt;td&gt;Minutes&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Warm standby&lt;/td&gt;
&lt;td&gt;Minutes&lt;/td&gt;
&lt;td&gt;Seconds to minutes&lt;/td&gt;
&lt;td&gt;Higher&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Active-active&lt;/td&gt;
&lt;td&gt;Near zero&lt;/td&gt;
&lt;td&gt;Near zero&lt;/td&gt;
&lt;td&gt;Highest&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;Disaster recovery is not a document. It's a capability, and capabilities need practice.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The foundations&lt;/h2&gt;
&lt;p&gt;Whatever strategy you choose, these basics matter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure as code&lt;/strong&gt; for everything. Rebuilding infrastructure by hand during a disaster is slow and error-prone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backups in a different region and a different account&lt;/strong&gt;, ideally with immutability (object lock) so ransomware or a compromised admin can't delete them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automated, monitored backups&lt;/strong&gt;: alert when a backup fails or is missing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DNS and traffic management&lt;/strong&gt; that can switch regions quickly (low TTLs, health-checked failover records, global load balancers).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secrets, certificates and container images&lt;/strong&gt; available in the recovery region too. A common surprise: the image registry or secret store only existed in the failed region.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Runbooks&lt;/strong&gt; that someone other than the original author can follow.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Kubernetes backups with Velero&lt;/h2&gt;
&lt;p&gt;For Kubernetes, &lt;strong&gt;Velero&lt;/strong&gt; is the standard open-source tool. It backs up Kubernetes resources (deployments, services, config) and persistent volumes (with snapshots or file-level backup) to object storage, and restores them, even into a different cluster.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;# Daily backup of the shop namespace, kept for 30 days
velero schedule create shop-daily \
  --schedule="0 2 * * *" \
  --include-namespaces shop \
  --ttl 720h

# Restore into a new cluster
velero restore create --from-backup shop-daily-20261020020000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With GitOps, your Kubernetes resources are already in Git, so the critical part Velero adds is &lt;strong&gt;persistent data&lt;/strong&gt;. For databases, prefer the database's own backup tools (or an operator like CloudNativePG) for consistent, point-in-time recovery, and use Velero as an extra layer.&lt;/p&gt;
&lt;h2&gt;Testing it for real&lt;/h2&gt;
&lt;p&gt;This is the part most teams skip, and the part that matters most.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Restore backups regularly&lt;/strong&gt; into a test environment, automatically if possible. Check the data is actually usable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run DR drills&lt;/strong&gt;: once or twice a year, simulate losing a region or a critical system, and actually recover. Time it. Compare with your RTO.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Start small&lt;/strong&gt;: restore one database, then one service, then a whole environment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write down every surprise&lt;/strong&gt; during a drill and fix it. There will be surprises: missing permissions, forgotten dependencies, outdated runbooks, quotas in the recovery region.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chaos experiments&lt;/strong&gt; like failing an availability zone help build confidence too.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Agree RPO and RTO for your three most important systems. Check that their backups exist, are in another region and account, and are immutable. Then restore one of them into a fresh environment this month, and time it. That single exercise will tell you more about your real DR readiness than any document.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: you don't have disaster recovery until you've recovered from a disaster, even a pretend one.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Why one AWS account isn't enough</title>
      <link>https://deslypeter.com/writing/aws-landing-zones-multi-account</link>
      <guid>https://deslypeter.com/writing/aws-landing-zones-multi-account.html?lang=en</guid>
      <description>Landing zones and multi-account setups, explained.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Most AWS journeys start the same way. Someone creates an account with a company credit card, launches a few things, and it works. Then more teams arrive, production and testing share the same account, someone has admin rights who shouldn't, and nobody can tell which resources belong to which project.&lt;/p&gt;
&lt;p&gt;The fix is a multi-account setup, usually called a &lt;strong&gt;landing zone&lt;/strong&gt;. It sounds like enterprise bureaucracy, but it's one of the best investments a growing company can make in AWS. (Azure and Google Cloud have similar concepts, which I'll cover at the end.)&lt;/p&gt;
&lt;h2&gt;Why split accounts&lt;/h2&gt;
&lt;p&gt;An AWS account is the strongest isolation boundary AWS offers. Separate accounts give you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Security isolation.&lt;/strong&gt; A compromised developer account can't touch production.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blast radius limits.&lt;/strong&gt; A runaway script or misconfiguration stays in one account.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clear cost allocation.&lt;/strong&gt; Each account's bill belongs to a team or environment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Service quotas per account&lt;/strong&gt;, so one team can't exhaust limits for everyone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simpler permissions.&lt;/strong&gt; Instead of complex IAM policies separating teams in one account, you give teams access to their own accounts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compliance scoping.&lt;/strong&gt; Regulated workloads (like payment processing) live in their own accounts with stricter controls, limiting what auditors need to look at.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;A typical account structure&lt;/h2&gt;
&lt;p&gt;AWS Organizations lets you manage many accounts centrally and group them into &lt;strong&gt;Organizational Units (OUs)&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Root (management account: billing and organisation only)
├── Security OU
│   ├── Log Archive      (central, immutable logs)
│   └── Security Tooling (GuardDuty, Security Hub, audit access)
├── Infrastructure OU
│   ├── Network          (Transit Gateway, shared networking, DNS)
│   └── Shared Services  (CI/CD, container registry)
├── Workloads OU
│   ├── Prod OU
│   │   ├── shop-prod
│   │   └── search-prod
│   └── Non-Prod OU
│       ├── shop-staging
│       └── shop-dev
└── Sandbox OU
    └── personal and experiment accounts (with budgets)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Key rules: &lt;strong&gt;don't run workloads in the management account&lt;/strong&gt;, and keep logs in a separate account that workload teams can't modify.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Accounts are cheap. Untangling a single shared account later is very expensive.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Organizations, Control Tower and SCPs&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;AWS Organizations&lt;/strong&gt; provides the hierarchy, consolidated billing and policies.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Service Control Policies (SCPs)&lt;/strong&gt; are guardrails applied to OUs or accounts. They define the maximum permissions anyone in those accounts can have, even administrators. Examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deny use of regions you don't operate in.&lt;/li&gt;
&lt;li&gt;Deny disabling CloudTrail, GuardDuty or AWS Config.&lt;/li&gt;
&lt;li&gt;Deny leaving the organisation.&lt;/li&gt;
&lt;li&gt;Deny creating IAM users with long-lived access keys.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-json"&gt;{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "DenyOutsideEU",
    "Effect": "Deny",
    "NotAction": ["iam:*", "organizations:*", "sts:*", "support:*", "cloudfront:*", "route53:*"],
    "Resource": "*",
    "Condition": {
      "StringNotEquals": { "aws:RequestedRegion": ["eu-central-1", "eu-west-1"] }
    }
  }]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(Global services are excluded because they're served from US regions.)&lt;/p&gt;
&lt;p&gt;AWS has also added &lt;strong&gt;Resource Control Policies&lt;/strong&gt; for guardrails on resources, and &lt;strong&gt;declarative policies&lt;/strong&gt; for enforcing service configurations across accounts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AWS Control Tower&lt;/strong&gt; automates setting up a landing zone: it creates the core accounts (log archive, audit), configures guardrails, and offers an &lt;strong&gt;Account Factory&lt;/strong&gt; to create new accounts with a standard baseline. It's the quickest way to start. For more customisation, many teams use &lt;strong&gt;Account Factory for Terraform (AFT)&lt;/strong&gt; or manage accounts entirely with Terraform.&lt;/p&gt;
&lt;h2&gt;Access: IAM Identity Center&lt;/h2&gt;
&lt;p&gt;Don't create IAM users in each account. Use &lt;strong&gt;IAM Identity Center&lt;/strong&gt; (formerly AWS SSO) connected to your company identity provider (Entra ID, Okta, Google Workspace):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;People log in once and choose which account and role to use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permission sets&lt;/strong&gt; define roles like ReadOnly, Developer, Admin.&lt;/li&gt;
&lt;li&gt;Access is granted by group, and removed automatically when people leave.&lt;/li&gt;
&lt;li&gt;The CLI uses short-lived credentials (&lt;code&gt;aws sso login&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Connecting it all&lt;/h2&gt;
&lt;p&gt;Accounts are isolated by default, so networking needs a plan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;Network account&lt;/strong&gt; with &lt;strong&gt;Transit Gateway&lt;/strong&gt; connecting VPCs across accounts, or &lt;strong&gt;VPC sharing&lt;/strong&gt; (RAM) to share subnets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plan IP ranges&lt;/strong&gt; centrally (AWS IPAM helps) so VPCs don't overlap.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Centralised egress and inspection&lt;/strong&gt; where needed, for example shared NAT or firewalls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Route 53&lt;/strong&gt; private hosted zones shared across accounts for internal DNS.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Security baseline in every account&lt;/h2&gt;
&lt;p&gt;Applied automatically to every new account:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CloudTrail (organisation trail) to the Log Archive account&lt;/li&gt;
&lt;li&gt;GuardDuty, Security Hub and AWS Config, managed from the Security Tooling account&lt;/li&gt;
&lt;li&gt;Default EBS encryption, S3 Block Public Access&lt;/li&gt;
&lt;li&gt;Budgets and cost alerts&lt;/li&gt;
&lt;li&gt;Standard IAM roles for CI/CD with OIDC&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Azure and GCP equivalents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Azure&lt;/strong&gt;: management groups and subscriptions, with Azure Policy as guardrails. Microsoft's &lt;strong&gt;Azure landing zone&lt;/strong&gt; reference architecture (part of the Cloud Adoption Framework) is the equivalent of Control Tower.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Cloud&lt;/strong&gt;: the resource hierarchy of organisation, folders and projects, with Organization Policies. Google provides a &lt;strong&gt;landing zone&lt;/strong&gt; blueprint and Terraform foundation modules.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The concepts are the same: a hierarchy, isolation per environment and team, central guardrails, central logging and identity.&lt;/p&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;If you're still in one account, set up AWS Organizations and Control Tower now, create separate production and non-production accounts, and move new workloads there. Migrate old workloads gradually. If you already have many accounts, check that SCPs, central logging and Identity Center are in place.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: a landing zone is the foundation of your cloud house. It's boring to build, and you'll be grateful for it every day afterwards.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Linux commands I use every day</title>
      <link>https://deslypeter.com/writing/linux-commands-every-day</link>
      <guid>https://deslypeter.com/writing/linux-commands-every-day.html?lang=en</guid>
      <description>The short list that covers most of my troubleshooting, plus a cheat sheet.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Kubernetes, cloud consoles and fancy dashboards are great. But when something is really wrong, sooner or later I end up in a terminal on a Linux machine, or inside a container, typing the same handful of commands I've used for years.&lt;/p&gt;
&lt;p&gt;You don't need to know hundreds of commands. You need to know the right twenty or thirty very well. Here are mine.&lt;/p&gt;
&lt;h2&gt;Processes and services&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;What's running and using resources?&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;top                 # live view of CPU, memory and processes (press 1 for per-CPU, M to sort by memory)
htop                # friendlier version, if installed
ps aux --sort=-%mem | head   # top memory users
ps -ef | grep nginx          # find a specific process
pgrep -a java                # same, simpler
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Services with systemd:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;systemctl status nginx       # is it running? recent log lines too
systemctl restart nginx
systemctl list-units --failed   # what's broken?
journalctl -u nginx -f       # follow a service's logs
journalctl -u nginx --since "1 hour ago"
journalctl -p err -b         # all errors since last boot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Stopping things:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;kill &amp;lt;pid&amp;gt;          # polite request to stop (SIGTERM)
kill -9 &amp;lt;pid&amp;gt;       # force (SIGKILL), only when the polite way fails
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Disks and files&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Out of disk space is one of the most common problems.&lt;/strong&gt; These find it quickly:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;df -h                        # free space per filesystem
df -i                        # free inodes (yes, you can run out of these too)
du -sh /var/* | sort -h      # which folders are big?
ncdu /var                    # interactive disk usage browser, if installed
lsof +L1                     # deleted files still held open (space not freed until process restarts)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Finding and reading files:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;find /var/log -name "*.log" -mtime -1      # logs modified in the last day
find / -size +1G 2&amp;gt;/dev/null               # files larger than 1 GB
tail -f /var/log/syslog                    # follow a log
less +F app.log                            # follow, but can scroll back (Ctrl+C, then F again)
grep -ri "error" /var/log/app/             # search recursively, case-insensitive
grep -c "500" access.log                   # count matching lines
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Most production problems are boring: a full disk, a crashed process, a wrong permission, a closed port. The commands that find boring problems fast are the most valuable ones.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Memory and performance&lt;/h2&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;free -h             # memory and swap usage
vmstat 1            # CPU, memory, swap, I/O every second
iostat -xz 1        # disk I/O per device (from sysstat)
uptime              # load average
dmesg -T | tail     # kernel messages, including OOM kills and hardware errors
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A quick tip: &lt;code&gt;free&lt;/code&gt; shows a lot of memory as "buff/cache". That's normal. Linux uses free memory for caching, and gives it back when needed. Look at "available" instead.&lt;/p&gt;
&lt;p&gt;If a process is killed for using too much memory, &lt;code&gt;dmesg -T | grep -i oom&lt;/code&gt; usually gives the details.&lt;/p&gt;
&lt;h2&gt;Network&lt;/h2&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;ip a                         # IP addresses of all interfaces
ip r                         # routing table
ss -tulpn                    # which ports are listening, and by which process
ss -tan state established    # active TCP connections
curl -v https://example.com  # full HTTP request with headers and TLS info
curl -o /dev/null -s -w "%{http_code} %{time_total}\n" https://example.com   # status and timing
dig example.com +short       # DNS lookup
dig @8.8.8.8 example.com     # ask a specific DNS server
nc -zv db.internal 5432      # is the port reachable?
mtr example.com              # traceroute and ping combined
tcpdump -i any port 443 -nn  # capture packets (needs root)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;ss -tulpn&lt;/code&gt; alone answers half of all "why can't I connect?" questions: either nothing is listening on that port, or it's listening on 127.0.0.1 instead of all interfaces.&lt;/p&gt;
&lt;h2&gt;Users, permissions and identity&lt;/h2&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;whoami &amp;amp;&amp;amp; id                 # who am I, what groups?
sudo -l                      # what am I allowed to run with sudo?
ls -la                       # permissions, owners, hidden files
chmod 640 file &amp;amp;&amp;amp; chown app:app file
namei -l /path/to/file       # permissions of every directory along a path
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;namei -l&lt;/code&gt; is a hidden gem when a service can't read a file and you can't see why: often it's a parent directory without execute permission.&lt;/p&gt;
&lt;h2&gt;Text processing&lt;/h2&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;awk '{print $1}' access.log | sort | uniq -c | sort -rn | head   # top client IPs
cut -d: -f1 /etc/passwd                                         # first field
sed -n '100,120p' big.log                                       # lines 100 to 120
jq '.items[].metadata.name'                                     # parse JSON
wc -l file                                                      # count lines
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Learning &lt;code&gt;awk&lt;/code&gt;, &lt;code&gt;sort&lt;/code&gt;, &lt;code&gt;uniq&lt;/code&gt; and &lt;code&gt;jq&lt;/code&gt; turns log files into answers.&lt;/p&gt;
&lt;h2&gt;Working efficiently&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl+R&lt;/code&gt;&lt;/strong&gt; searches your command history.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;!!&lt;/code&gt;&lt;/strong&gt; repeats the last command (&lt;code&gt;sudo !!&lt;/code&gt; when you forgot sudo).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;tmux&lt;/code&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;code&gt;screen&lt;/code&gt;&lt;/strong&gt; keep sessions alive if your connection drops.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;watch -n 2 'kubectl get pods'&lt;/code&gt;&lt;/strong&gt; reruns a command every two seconds.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;man&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;tldr&lt;/code&gt;&lt;/strong&gt; for quick help with examples.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The cheat sheet&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;First commands&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Service down&lt;/td&gt;
&lt;td&gt;&lt;code&gt;systemctl status&lt;/code&gt;, &lt;code&gt;journalctl -u &amp;lt;svc&amp;gt; -n 100&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Disk full&lt;/td&gt;
&lt;td&gt;&lt;code&gt;df -h&lt;/code&gt;, &lt;code&gt;du -sh /* \| sort -h&lt;/code&gt;, &lt;code&gt;lsof +L1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High CPU&lt;/td&gt;
&lt;td&gt;&lt;code&gt;top&lt;/code&gt;, &lt;code&gt;ps aux --sort=-%cpu \| head&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Out of memory&lt;/td&gt;
&lt;td&gt;&lt;code&gt;free -h&lt;/code&gt;, &lt;code&gt;dmesg -T \| grep -i oom&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can't connect&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ss -tulpn&lt;/code&gt;, &lt;code&gt;nc -zv host port&lt;/code&gt;, &lt;code&gt;curl -v&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DNS issues&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dig name&lt;/code&gt;, &lt;code&gt;cat /etc/resolv.conf&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slow disk&lt;/td&gt;
&lt;td&gt;&lt;code&gt;iostat -xz 1&lt;/code&gt;, &lt;code&gt;vmstat 1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Permission denied&lt;/td&gt;
&lt;td&gt;&lt;code&gt;id&lt;/code&gt;, &lt;code&gt;ls -la&lt;/code&gt;, &lt;code&gt;namei -l path&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What happened at boot&lt;/td&gt;
&lt;td&gt;&lt;code&gt;journalctl -b -p err&lt;/code&gt;, &lt;code&gt;dmesg -T&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;My take: tools come and go, but the Linux command line is still where problems finally confess. Learn these well and you'll feel at home on any server.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Networking basics every DevOps engineer needs</title>
      <link>https://deslypeter.com/writing/networking-basics-devops</link>
      <guid>https://deslypeter.com/writing/networking-basics-devops.html?lang=en</guid>
      <description>DNS, TLS, load balancers and subnets, explained the way I wish someone had explained them to me.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;If I look back at the hardest problems I've debugged, a surprising number were networking problems in disguise. "The app is slow" turned out to be DNS. "The deployment failed" turned out to be a security group. "Kubernetes is broken" turned out to be overlapping IP ranges.&lt;/p&gt;
&lt;p&gt;You don't need to be a network engineer to work in DevOps. But you do need a solid mental model of how packets get from A to B. Here's the version I wish I'd had at the start.&lt;/p&gt;
&lt;h2&gt;The layers that matter&lt;/h2&gt;
&lt;p&gt;You'll hear about the OSI model with seven layers. In daily DevOps work, four ideas matter most:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IP (layer 3)&lt;/strong&gt;: every machine has an address, and routers decide how packets get from one network to another.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TCP and UDP (layer 4)&lt;/strong&gt;: TCP gives reliable, ordered connections (most web traffic). UDP is fire-and-forget (DNS, video, some newer protocols like QUIC). Ports identify which application on a machine should receive the traffic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TLS&lt;/strong&gt;: encryption on top of TCP. It's what puts the "S" in HTTPS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTTP (layer 7)&lt;/strong&gt;: the application protocol most of our services speak.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When something doesn't work, I go up the layers: can I reach the IP? Is the port open? Does TLS work? Does HTTP return the right response?&lt;/p&gt;
&lt;h2&gt;IP addresses and subnets&lt;/h2&gt;
&lt;p&gt;An IP address like &lt;code&gt;10.0.12.34&lt;/code&gt; belongs to a &lt;strong&gt;subnet&lt;/strong&gt;, written in &lt;strong&gt;CIDR notation&lt;/strong&gt;: &lt;code&gt;10.0.0.0/16&lt;/code&gt; means "all addresses where the first 16 bits are &lt;code&gt;10.0&lt;/code&gt;", which is 65,536 addresses.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/16&lt;/code&gt;: 65,536 addresses&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/20&lt;/code&gt;: 4,096&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/24&lt;/code&gt;: 256&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/28&lt;/code&gt;: 16&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Private ranges&lt;/strong&gt; (&lt;code&gt;10.0.0.0/8&lt;/code&gt;, &lt;code&gt;172.16.0.0/12&lt;/code&gt;, &lt;code&gt;192.168.0.0/16&lt;/code&gt;) are used inside networks and aren't reachable from the internet directly. &lt;strong&gt;NAT&lt;/strong&gt; (Network Address Translation) lets machines with private addresses reach the internet through a shared public address.&lt;/p&gt;
&lt;p&gt;The most common mistake I see: &lt;strong&gt;overlapping ranges&lt;/strong&gt;. Two VPCs both using &lt;code&gt;10.0.0.0/16&lt;/code&gt; can never be connected. Kubernetes pod and service ranges that overlap with your office VPN cause mysterious failures. Plan IP ranges centrally, early.&lt;/p&gt;
&lt;h2&gt;DNS&lt;/h2&gt;
&lt;p&gt;DNS translates names (&lt;code&gt;shop.example.com&lt;/code&gt;) into addresses. It's involved in almost every request, which is why "it's always DNS" is a running joke.&lt;/p&gt;
&lt;p&gt;Key concepts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A / AAAA records&lt;/strong&gt;: name to IPv4 / IPv6 address.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CNAME&lt;/strong&gt;: an alias pointing to another name.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TTL&lt;/strong&gt;: how long resolvers cache an answer. Low TTLs make changes fast; high TTLs reduce load and dependency on DNS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resolvers&lt;/strong&gt;: the servers that look up names for you. Inside Kubernetes, that's CoreDNS.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;dig shop.example.com +short
dig shop.example.com +trace     # follow the lookup from the root servers
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;When something works by IP but not by name, it's DNS. When it works sometimes but not always, it's probably also DNS.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;TLS and certificates&lt;/h2&gt;
&lt;p&gt;TLS does two things: &lt;strong&gt;encrypts&lt;/strong&gt; traffic and &lt;strong&gt;proves identity&lt;/strong&gt;. The server presents a certificate, signed by a certificate authority (CA) the client trusts, saying "I am shop.example.com".&lt;/p&gt;
&lt;p&gt;Common problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Expired certificates&lt;/strong&gt;: automate renewal (cert-manager, Let's Encrypt, cloud certificate managers).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Name mismatch&lt;/strong&gt;: the certificate is for &lt;code&gt;www.example.com&lt;/code&gt;, but you called &lt;code&gt;example.com&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Missing intermediate certificates&lt;/strong&gt; in the chain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Internal CAs&lt;/strong&gt; that clients don't trust.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;openssl s_client -connect shop.example.com:443 -servername shop.example.com &amp;lt;/dev/null | openssl x509 -noout -dates -subject
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Load balancers&lt;/h2&gt;
&lt;p&gt;A load balancer spreads traffic across multiple backends and hides failures:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Layer 4 (TCP/UDP)&lt;/strong&gt; load balancers forward connections without looking inside. Fast and simple. Example: AWS Network Load Balancer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Layer 7 (HTTP)&lt;/strong&gt; load balancers understand requests: they can route by path or host, terminate TLS, add headers. Examples: AWS Application Load Balancer, Envoy, NGINX, Kubernetes Gateway API implementations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They rely on &lt;strong&gt;health checks&lt;/strong&gt; to know which backends are healthy. A wrong health check path is a very common reason for "all backends unhealthy".&lt;/p&gt;
&lt;h2&gt;Designing a network in the cloud&lt;/h2&gt;
&lt;p&gt;A typical VPC design:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Public subnets&lt;/strong&gt;: for load balancers and NAT gateways. Have a route to the internet gateway.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Private subnets&lt;/strong&gt;: for applications and Kubernetes nodes. Reach the internet through NAT, not reachable from outside directly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data subnets&lt;/strong&gt;: for databases, reachable only from the application subnets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spread across availability zones&lt;/strong&gt;, so one zone failing doesn't take you down.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security groups&lt;/strong&gt; (stateful, attached to resources) as the main firewall, and network ACLs (stateless, per subnet) only when needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Leave room to grow: give your VPC a large range and Kubernetes plenty of pod IPs, especially with CNIs that assign VPC addresses to pods.&lt;/p&gt;
&lt;h2&gt;My debugging tools&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;What's my IP and route?&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ip a&lt;/code&gt;, &lt;code&gt;ip r&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Does the name resolve?&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dig&lt;/code&gt;, &lt;code&gt;nslookup&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Is the host reachable?&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ping&lt;/code&gt;, &lt;code&gt;mtr&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Is the port open?&lt;/td&gt;
&lt;td&gt;&lt;code&gt;nc -zv host port&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What's listening locally?&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ss -tulpn&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Does HTTP/TLS work?&lt;/td&gt;
&lt;td&gt;&lt;code&gt;curl -v&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What's actually on the wire?&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tcpdump&lt;/code&gt;, Wireshark&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;And one more question that saves a lot of time: &lt;strong&gt;from where&lt;/strong&gt; am I testing? Your laptop, a pod, a node and a CI runner can all see very different networks.&lt;/p&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Learn CIDR until subnetting feels natural, understand how DNS resolution works in your environment (especially in Kubernetes), and practise debugging with &lt;code&gt;dig&lt;/code&gt;, &lt;code&gt;nc&lt;/code&gt;, &lt;code&gt;curl&lt;/code&gt; and &lt;code&gt;ss&lt;/code&gt;. That foundation will save you countless hours.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: networking isn't magic, it's just layers. Learn to check them one at a time, and most mysteries solve themselves.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Bash scripts that don't surprise you</title>
      <link>https://deslypeter.com/writing/bash-scripts-that-dont-surprise</link>
      <guid>https://deslypeter.com/writing/bash-scripts-that-dont-surprise.html?lang=en</guid>
      <description>The habits that make shell scripts safe, and when to switch to Python.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Bash is everywhere in DevOps. CI pipelines, Dockerfiles, deployment scripts, cron jobs, quick automations. It's the glue that holds infrastructure together.&lt;/p&gt;
&lt;p&gt;Bash has hidden dangers. By default, it keeps running after errors, treats undefined variables as empty, and splits words in unexpected ways. A script that works fine on your laptop might accidentally delete the wrong folder in production if a variable is empty.&lt;/p&gt;
&lt;p&gt;Here are the habits that make my scripts boring, in the best way.&lt;/p&gt;
&lt;h2&gt;The first lines of every script&lt;/h2&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What they do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;set -e&lt;/code&gt;&lt;/strong&gt;: stop the script when a command fails, instead of carrying on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;set -u&lt;/code&gt;&lt;/strong&gt;: treat undefined variables as an error, instead of an empty string.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;set -o pipefail&lt;/code&gt;&lt;/strong&gt;: a pipeline fails if any command in it fails, not just the last one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;IFS=$'\n\t'&lt;/code&gt;&lt;/strong&gt;: split words only on newlines and tabs, not spaces. Fewer surprises with filenames containing spaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Why &lt;code&gt;set -u&lt;/code&gt; matters so much, in one example:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;rm -rf "$BUILD_DIR/"*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If &lt;code&gt;BUILD_DIR&lt;/code&gt; is accidentally unset, without &lt;code&gt;set -u&lt;/code&gt; this becomes &lt;code&gt;rm -rf /*&lt;/code&gt;. With &lt;code&gt;set -u&lt;/code&gt;, the script stops with an error. That single line has saved many systems.&lt;/p&gt;
&lt;p&gt;(&lt;code&gt;set -e&lt;/code&gt; has some well-known edge cases, like commands in conditions or subshells. It's not perfect, but it's a big improvement over the default behavior.)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bash assumes you know what you're doing. Good scripts don't make that assumption about anyone, including their author.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;ShellCheck&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;ShellCheck&lt;/strong&gt; is a linter for shell scripts, and the single most useful tool for writing better Bash. It catches unquoted variables, wrong comparisons, useless &lt;code&gt;cat&lt;/code&gt;s, portability issues and many subtle bugs, with explanations for each warning.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;shellcheck deploy.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Add it to your editor and to CI. I treat ShellCheck warnings like compiler errors.&lt;/p&gt;
&lt;h2&gt;Habits that prevent most bugs&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Quote your variables.&lt;/strong&gt; Always. &lt;code&gt;"$file"&lt;/code&gt;, not &lt;code&gt;$file&lt;/code&gt;. Unquoted variables get split on spaces and expanded as wildcards.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;[[ ]]&lt;/code&gt; for tests&lt;/strong&gt; in Bash, not &lt;code&gt;[ ]&lt;/code&gt;. It's safer and supports more features.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;if [[ -z "${ENVIRONMENT:-}" ]]; then
  echo "ENVIRONMENT must be set" &amp;gt;&amp;amp;2
  exit 1
fi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Provide defaults and required checks&lt;/strong&gt; with parameter expansion:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;REGION="${REGION:-eu-central-1}"       # default value
: "${API_TOKEN:?API_TOKEN is required}" # fail with a message if unset
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;local&lt;/code&gt; in functions&lt;/strong&gt; so variables don't leak.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Write errors to stderr&lt;/strong&gt; (&lt;code&gt;&amp;gt;&amp;amp;2&lt;/code&gt;) and exit with non-zero codes on failure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Clean up with &lt;code&gt;trap&lt;/code&gt;&lt;/strong&gt;, even when the script fails:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;$(...)&lt;/code&gt; instead of backticks&lt;/strong&gt; for command substitution.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Avoid parsing &lt;code&gt;ls&lt;/code&gt;.&lt;/strong&gt; Use globs or &lt;code&gt;find&lt;/code&gt; instead.&lt;/p&gt;
&lt;h2&gt;A template I reuse&lt;/h2&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;#!/usr/bin/env bash
set -euo pipefail

usage() {
  cat &amp;lt;&amp;lt;EOF
Usage: $(basename "$0") -e &amp;lt;environment&amp;gt; [-d]
  -e  target environment (staging|production)
  -d  dry run
EOF
}

log() { printf '%s [%s] %s\n' "$(date -u +%FT%TZ)" "${1}" "${2}" &amp;gt;&amp;amp;2; }

main() {
  local env="" dry_run=false

  while getopts ":e:dh" opt; do
    case "$opt" in
      e) env="$OPTARG" ;;
      d) dry_run=true ;;
      h) usage; exit 0 ;;
      *) usage; exit 1 ;;
    esac
  done

  [[ "$env" =~ ^(staging|production)$ ]] || { usage; exit 1; }

  log INFO "Deploying to $env (dry run: $dry_run)"
  if [[ "$dry_run" == false ]]; then
    : # real work here
  fi
}

main "$@"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It has argument parsing, validation, logging with timestamps, a dry-run mode, and a &lt;code&gt;main&lt;/code&gt; function. Copy it, delete what you don't need.&lt;/p&gt;
&lt;h2&gt;When Bash is the wrong tool&lt;/h2&gt;
&lt;p&gt;Bash is great for gluing commands together. It's bad at almost everything else. I switch to Python (or Go) when a script:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is longer than about 100 lines.&lt;/li&gt;
&lt;li&gt;Needs real data structures (nested data, maps of lists).&lt;/li&gt;
&lt;li&gt;Parses JSON or YAML beyond a simple &lt;code&gt;jq&lt;/code&gt; call.&lt;/li&gt;
&lt;li&gt;Talks to APIs with authentication, pagination and retries.&lt;/li&gt;
&lt;li&gt;Needs error handling more subtle than "stop on failure".&lt;/li&gt;
&lt;li&gt;Needs tests.&lt;/li&gt;
&lt;li&gt;Will be maintained by many people for a long time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Python with a proper CLI library, or a small Go tool, is much easier to read, test and maintain at that point.&lt;/p&gt;
&lt;h2&gt;In CI pipelines&lt;/h2&gt;
&lt;p&gt;CI YAML often contains multi-line shell scripts. The same rules apply:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Many CI systems don't enable &lt;code&gt;set -euo pipefail&lt;/code&gt; by default. Add it, or set the shell options for the whole job.&lt;/li&gt;
&lt;li&gt;Move long scripts out of YAML into files in the repository, where ShellCheck can lint them and you can run them locally.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, what's the one thing to do?&lt;/h2&gt;
&lt;p&gt;Add &lt;code&gt;set -euo pipefail&lt;/code&gt; to the top of every script, and run ShellCheck on all of them. Those two habits prevent most of the disasters I've seen from shell scripts.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: Bash is a sharp knife. Use it for small cuts, keep it sharp with ShellCheck, and switch to a proper tool when the job gets bigger.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Python for everyday automation</title>
      <link>https://deslypeter.com/writing/python-everyday-automation</link>
      <guid>https://deslypeter.com/writing/python-everyday-automation.html?lang=en</guid>
      <description>Small Python tools that save hours, from cloud cleanup to Kubernetes reports.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;When a Bash script grows past a hundred lines, or needs to talk to an API, I switch to Python. It's readable, it has a library for almost everything, and colleagues can understand it without a decoding session.&lt;/p&gt;
&lt;p&gt;You don't need to be a software engineer to write useful Python for DevOps. A few libraries and habits cover most of what you'll need.&lt;/p&gt;
&lt;h2&gt;The libraries I use&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;boto3&lt;/strong&gt;: the AWS SDK. Everything in AWS is reachable from it. (Azure has &lt;code&gt;azure-identity&lt;/code&gt; and service SDKs; Google Cloud has &lt;code&gt;google-cloud-*&lt;/code&gt; libraries.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;kubernetes&lt;/strong&gt;: the official Kubernetes client.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;httpx&lt;/strong&gt; or &lt;strong&gt;requests&lt;/strong&gt;: calling REST APIs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;typer&lt;/strong&gt; or &lt;strong&gt;click&lt;/strong&gt;: building command-line tools with arguments and help text.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;rich&lt;/strong&gt;: nice tables, colours and progress bars in the terminal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pydantic&lt;/strong&gt;: validating configuration and data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PyYAML&lt;/strong&gt; / &lt;strong&gt;ruamel.yaml&lt;/strong&gt;: reading and writing YAML.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tenacity&lt;/strong&gt;: retries with backoff for flaky APIs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Packaging with uv&lt;/h2&gt;
&lt;p&gt;Python packaging used to be painful: virtual environments, pip, requirements files, version conflicts. &lt;strong&gt;uv&lt;/strong&gt;, from Astral, has made it dramatically simpler and faster.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;uv init cloud-tools
cd cloud-tools
uv add boto3 typer rich
uv run python main.py
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;My favourite feature for small scripts: &lt;strong&gt;inline dependencies&lt;/strong&gt;. You can declare dependencies at the top of a single file, and &lt;code&gt;uv run&lt;/code&gt; handles the environment automatically:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;# /// script
# requires-python = "&amp;gt;=3.12"
# dependencies = ["boto3", "typer", "rich"]
# ///
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then anyone can run &lt;code&gt;uv run cleanup.py&lt;/code&gt; without setting anything up. Perfect for sharing small tools in a team.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The best automation script is one a colleague can run tomorrow without asking you how.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Example: finding unused cloud resources&lt;/h2&gt;
&lt;p&gt;A real-world example: find unattached EBS volumes (a classic source of waste) and optionally delete them.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;# /// script
# requires-python = "&amp;gt;=3.12"
# dependencies = ["boto3", "typer", "rich"]
# ///
import boto3
import typer
from rich.console import Console
from rich.table import Table

app = typer.Typer()
console = Console()


@app.command()
def unattached_volumes(
    region: str = "eu-central-1",
    delete: bool = typer.Option(False, help="Actually delete the volumes"),
):
    """List (and optionally delete) unattached EBS volumes."""
    ec2 = boto3.client("ec2", region_name=region)
    paginator = ec2.get_paginator("describe_volumes")
    pages = paginator.paginate(Filters=[{"Name": "status", "Values": ["available"]}])

    table = Table("Volume ID", "Size (GiB)", "Created", "Name")
    volumes = []
    for page in pages:
        for v in page["Volumes"]:
            name = next((t["Value"] for t in v.get("Tags", []) if t["Key"] == "Name"), "-")
            table.add_row(v["VolumeId"], str(v["Size"]), v["CreateTime"].date().isoformat(), name)
            volumes.append(v["VolumeId"])

    console.print(table)
    console.print(f"[bold]{len(volumes)}[/bold] unattached volumes in {region}")

    if delete and volumes and typer.confirm("Delete all of them?"):
        for vol_id in volumes:
            ec2.delete_volume(VolumeId=vol_id)
            console.print(f"Deleted {vol_id}")


if __name__ == "__main__":
    app()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notice a few habits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pagination&lt;/strong&gt;: AWS APIs return results in pages. Always use paginators, or you'll only see the first page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dry run by default&lt;/strong&gt;: it only lists unless you pass &lt;code&gt;--delete&lt;/code&gt;, and even then asks for confirmation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Readable output&lt;/strong&gt; with a table.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Example: a Kubernetes report&lt;/h2&gt;
&lt;p&gt;Which pods have no resource requests? A question that comes up a lot:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;from kubernetes import client, config

config.load_kube_config()  # or load_incluster_config() inside a pod
v1 = client.CoreV1Api()

for pod in v1.list_pod_for_all_namespaces().items:
    for c in pod.spec.containers:
        requests = (c.resources and c.resources.requests) or {}
        if "cpu" not in requests or "memory" not in requests:
            print(f"{pod.metadata.namespace}/{pod.metadata.name} [{c.name}] missing requests")
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ten lines, and you have a report you can run in CI every week.&lt;/p&gt;
&lt;h2&gt;Habits for automation scripts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dry run by default&lt;/strong&gt; for anything destructive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use the standard credential chain&lt;/strong&gt; (environment, profiles, SSO, instance roles). Never hardcode credentials.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Log what you do&lt;/strong&gt;, with enough detail to reconstruct it later.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Handle errors and retries&lt;/strong&gt; for network calls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add type hints&lt;/strong&gt; and run a linter and formatter (Ruff is fast and does both).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write a small test&lt;/strong&gt; for the logic that matters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Put it in Git&lt;/strong&gt;, with a README explaining what it does and how to run it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;From script to tool&lt;/h2&gt;
&lt;p&gt;When a script becomes something the team relies on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Give it a proper CLI with Typer and help text.&lt;/li&gt;
&lt;li&gt;Package it with uv so it can be installed with &lt;code&gt;uv tool install&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run it in CI or as a Kubernetes CronJob instead of from laptops.&lt;/li&gt;
&lt;li&gt;Consider whether it should become part of your platform or an operator.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Pick one repetitive task you do every week, like cleaning up resources, generating a report or checking certificates. Write a small Python script with uv's inline dependencies. Share it. You'll be surprised how quickly the team asks for more.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: Python turns "I'll do it manually, it only takes ten minutes" into "it runs every night and nobody thinks about it anymore".&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>HTTPS on autopilot with cert-manager</title>
      <link>https://deslypeter.com/writing/https-autopilot-cert-manager</link>
      <guid>https://deslypeter.com/writing/https-autopilot-cert-manager.html?lang=en</guid>
      <description>Certificate lifetimes are getting shorter. Automation is no longer optional.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Expired certificates have caused some of the most embarrassing outages in tech history. Big companies, popular apps, even security vendors have gone down because someone forgot to renew a certificate. It's always the same story: a calendar reminder that went to someone who left, a manual process nobody remembered.&lt;/p&gt;
&lt;p&gt;And the problem is about to get harder to ignore, because certificate lifetimes are shrinking fast.&lt;/p&gt;
&lt;h2&gt;How TLS certificates work, simply&lt;/h2&gt;
&lt;p&gt;When you visit &lt;code&gt;https://shop.example.com&lt;/code&gt;, the server sends a &lt;strong&gt;certificate&lt;/strong&gt; that says "I am shop.example.com", signed by a &lt;strong&gt;Certificate Authority (CA)&lt;/strong&gt; your browser trusts. The browser checks the signature, the name and the expiry date. If all is fine, it sets up an encrypted connection.&lt;/p&gt;
&lt;p&gt;Certificates expire on purpose. If a private key is stolen, an expiry date limits how long it can be abused. And short lifetimes force automation, which makes the whole system more agile.&lt;/p&gt;
&lt;h2&gt;Lifetimes are shrinking&lt;/h2&gt;
&lt;p&gt;The CA/Browser Forum, which sets the rules for public certificates, approved a schedule to reduce maximum certificate lifetimes from 398 days:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;From March 2026&lt;/strong&gt;: maximum 200 days&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;From March 2027&lt;/strong&gt;: maximum 100 days&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;From March 2029&lt;/strong&gt;: maximum &lt;strong&gt;47 days&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The time for which domain validation can be reused is shrinking too. Let's Encrypt, which has always issued 90-day certificates, has also started offering much shorter-lived certificates.&lt;/p&gt;
&lt;p&gt;What this means in practice: &lt;strong&gt;manual certificate renewal is dying.&lt;/strong&gt; At 47 days, renewing by hand for even a handful of certificates becomes a full-time annoyance and an outage waiting to happen.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If a human has to remember to renew a certificate, the certificate will eventually expire.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Let's Encrypt and ACME&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Let's Encrypt&lt;/strong&gt; is a free, automated CA that changed the web: it issues certificates through the &lt;strong&gt;ACME protocol&lt;/strong&gt;, which lets software prove control of a domain and get a certificate without any human involved.&lt;/p&gt;
&lt;p&gt;Two common ways to prove control:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HTTP-01&lt;/strong&gt;: the CA asks for a file at &lt;code&gt;http://yourdomain/.well-known/acme-challenge/...&lt;/code&gt;. Simple, but needs port 80 reachable and doesn't support wildcards.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DNS-01&lt;/strong&gt;: you create a TXT record in DNS. Works for wildcard certificates and internal services that aren't publicly reachable. Needs API access to your DNS provider.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other ACME CAs exist too (ZeroSSL, Google Trust Services, and many commercial CAs), and private CAs can speak ACME for internal certificates.&lt;/p&gt;
&lt;h2&gt;cert-manager setup&lt;/h2&gt;
&lt;p&gt;On Kubernetes, &lt;strong&gt;cert-manager&lt;/strong&gt; (a CNCF graduated project) is the standard way to automate certificates. It requests certificates, stores them in Kubernetes secrets, and renews them well before they expire.&lt;/p&gt;
&lt;p&gt;Install it:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;helm install cert-manager oci://quay.io/jetstack/charts/cert-manager \
  --namespace cert-manager --create-namespace \
  --set crds.enabled=true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Create an &lt;strong&gt;issuer&lt;/strong&gt; (here Let's Encrypt with DNS-01 on Route 53, using workload identity):&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: platform@example.com
    privateKeySecretRef:
      name: letsencrypt-account-key
    solvers:
    - dns01:
        route53:
          region: eu-central-1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Request a certificate:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: example-com
  namespace: infra
spec:
  secretName: example-com-tls
  issuerRef:
    name: letsencrypt
    kind: ClusterIssuer
  dnsNames:
  - example.com
  - "*.example.com"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;cert-manager creates the secret, and renews it automatically (by default when two thirds of the lifetime have passed). Reference the secret from your Gateway or Ingress, and you're done.&lt;/p&gt;
&lt;p&gt;It also integrates with &lt;strong&gt;Gateway API&lt;/strong&gt; directly: annotate a Gateway, and cert-manager creates certificates for its listeners.&lt;/p&gt;
&lt;p&gt;Tip: test against Let's Encrypt's &lt;strong&gt;staging&lt;/strong&gt; server first. The production server has rate limits, and a misconfiguration can lock you out for a while.&lt;/p&gt;
&lt;h2&gt;Beyond Kubernetes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloud certificate managers&lt;/strong&gt; (AWS Certificate Manager, Google Certificate Manager, Azure Key Vault certificates) automate certificates for their load balancers and CDNs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Caddy&lt;/strong&gt; and &lt;strong&gt;Traefik&lt;/strong&gt; obtain and renew certificates automatically, built in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;certbot&lt;/strong&gt; and &lt;strong&gt;acme.sh&lt;/strong&gt; for traditional servers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Internal certificates&lt;/strong&gt;: cert-manager can act as or connect to a private CA (Vault, step-ca, cloud private CAs) for mTLS and internal services.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Monitoring certificates anyway&lt;/h2&gt;
&lt;p&gt;Automation can fail silently: DNS credentials expire, rate limits hit, a webhook breaks. Always monitor expiry:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cert-manager exposes &lt;strong&gt;Prometheus metrics&lt;/strong&gt; like &lt;code&gt;certmanager_certificate_expiration_timestamp_seconds&lt;/code&gt;. Alert when a certificate has less than, say, two weeks left.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blackbox exporter&lt;/strong&gt; or an external uptime tool can check the certificate actually served on each public endpoint.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificate Transparency&lt;/strong&gt; logs show every public certificate issued for your domains, useful for spotting unexpected ones.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;List every certificate you renew by hand today. Move them to cert-manager, a cloud certificate manager, or a server with built-in ACME. Add expiry alerts. By the time 47-day certificates arrive, you won't even notice.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: certificates should renew themselves like your phone updates its clock. The shorter they get, the more that's true.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>It's always DNS</title>
      <link>https://deslypeter.com/writing/its-always-dns</link>
      <guid>https://deslypeter.com/writing/its-always-dns.html?lang=en</guid>
      <description>Why DNS breaks so much, and how to make it break less.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;There's a famous haiku among system administrators:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It's not DNS.
There's no way it's DNS.
It was DNS.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It's funny because it's true. Some of the biggest outages of recent years, at cloud providers and large websites, came down to DNS problems. And in daily work, a huge share of "the app can't connect" mysteries end with someone saying "oh, it's resolving to the old address".&lt;/p&gt;
&lt;p&gt;Why does DNS cause so much trouble, and what can we do about it?&lt;/p&gt;
&lt;h2&gt;Why DNS is everywhere&lt;/h2&gt;
&lt;p&gt;Almost every network connection starts with a DNS lookup. Your browser, your app connecting to its database, a pod calling another service, a CI job pulling an image. If DNS is slow, everything is slow. If it's wrong, everything goes to the wrong place. If it's down, nothing works, even if every server is healthy.&lt;/p&gt;
&lt;p&gt;And DNS is cached at many levels: in applications, in operating systems, in local resolvers, at your ISP. Which means problems can be inconsistent, delayed and very hard to reproduce.&lt;/p&gt;
&lt;h2&gt;Records and TTLs&lt;/h2&gt;
&lt;p&gt;The records you'll work with most:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A / AAAA&lt;/strong&gt;: name to IPv4 / IPv6 address.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CNAME&lt;/strong&gt;: alias to another name. (Can't be used at the zone apex like &lt;code&gt;example.com&lt;/code&gt;; providers offer ALIAS or ANAME records for that.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TXT&lt;/strong&gt;: arbitrary text, used for domain verification, SPF, DKIM and ACME challenges.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MX&lt;/strong&gt;: mail servers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SRV&lt;/strong&gt;: service discovery with ports.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NS / SOA&lt;/strong&gt;: which servers are authoritative for a zone.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;TTL (time to live)&lt;/strong&gt; tells resolvers how long to cache an answer. It's the most important lever you have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Low TTL (60 to 300 seconds)&lt;/strong&gt;: changes take effect quickly. Good for records you might need to change in an emergency, like failover endpoints.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;High TTL (hours)&lt;/strong&gt;: less load on DNS, more resilience if your DNS provider has problems. Good for stable records.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A classic mistake: planning a migration, changing the record, and discovering the old TTL was 24 hours. &lt;strong&gt;Lower the TTL a day or two before&lt;/strong&gt; a planned change, then raise it again afterwards.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;DNS changes don't happen when you make them. They happen when the last cache in the world forgets the old answer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;DNS inside Kubernetes&lt;/h2&gt;
&lt;p&gt;Kubernetes has its own DNS, usually &lt;strong&gt;CoreDNS&lt;/strong&gt;. Every service gets a name like &lt;code&gt;orders.shop.svc.cluster.local&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A few things that trip people up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Short names work only in the same namespace.&lt;/strong&gt; &lt;code&gt;orders&lt;/code&gt; works from the &lt;code&gt;shop&lt;/code&gt; namespace; from elsewhere, use &lt;code&gt;orders.shop&lt;/code&gt; or the full name.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The &lt;code&gt;ndots:5&lt;/code&gt; setting.&lt;/strong&gt; By default, pods treat names with fewer than five dots as relative and try several search domains first. A lookup for &lt;code&gt;api.example.com&lt;/code&gt; can generate several failed queries before the real one. For external names, a trailing dot (&lt;code&gt;api.example.com.&lt;/code&gt;) or tuning &lt;code&gt;ndots&lt;/code&gt; in the pod's &lt;code&gt;dnsConfig&lt;/code&gt; reduces that.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CoreDNS can become a bottleneck&lt;/strong&gt; in busy clusters. Scale it, and consider &lt;strong&gt;NodeLocal DNSCache&lt;/strong&gt;, which runs a cache on every node.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conntrack and UDP issues&lt;/strong&gt; on some setups cause occasional slow lookups (classic five-second delays). NodeLocal DNSCache helps with those too.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;ExternalDNS&lt;/h2&gt;
&lt;p&gt;Managing public DNS records by hand for every service is error-prone. &lt;strong&gt;ExternalDNS&lt;/strong&gt; watches Kubernetes resources (Services, Ingresses, Gateway API routes) and creates DNS records automatically in Route 53, Cloud DNS, Azure DNS, Cloudflare and many others.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: shop
  namespace: shop
spec:
  parentRefs:
  - name: web
    namespace: infra
  hostnames: ["shop.example.com"]   # ExternalDNS creates this record
  rules:
  - backendRefs:
    - name: shop-api
      port: 8080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Configure it with a &lt;strong&gt;TXT registry&lt;/strong&gt; so it only touches records it owns, and a &lt;strong&gt;domain filter&lt;/strong&gt; so it can't modify zones it shouldn't.&lt;/p&gt;
&lt;h2&gt;DNS-based failover&lt;/h2&gt;
&lt;p&gt;DNS can route traffic away from failures:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Health-checked failover records&lt;/strong&gt; (Route 53, Cloudflare, Azure Traffic Manager, and others): if the primary endpoint fails health checks, DNS starts returning the secondary.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Latency-based or geo routing&lt;/strong&gt;: send users to the nearest region.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weighted records&lt;/strong&gt;: gradually shift traffic between old and new environments during migrations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Remember the TTL: failover can only be as fast as caches expire. And some clients cache DNS much longer than the TTL says (older Java versions were famous for this).&lt;/p&gt;
&lt;h2&gt;Outages I've seen (and you probably will too)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Expired domain&lt;/strong&gt; or a lapsed registrar payment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wrong TTL during migration&lt;/strong&gt;: half the users on the old system for a day.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deleted or overwritten records&lt;/strong&gt; by a tool that thought it owned them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Internal resolvers down&lt;/strong&gt;, so every service fails at once, while the servers themselves are healthy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Split-horizon confusion&lt;/strong&gt;: the name resolves differently inside and outside the network, and someone tested from the wrong side.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DNSSEC misconfiguration&lt;/strong&gt; making a domain unresolvable for validating resolvers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;My debugging routine&lt;/h2&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;dig shop.example.com +short                 # what does my resolver say?
dig @1.1.1.1 shop.example.com +short        # what does a public resolver say?
dig shop.example.com +trace                 # follow it from the root
dig shop.example.com NS                     # who is authoritative?
kubectl run -it --rm dnstest --image=busybox:1.36 -- nslookup orders.shop   # from inside the cluster
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Compare answers from different places. If they differ, it's caching or split-horizon. If the authoritative answer is wrong, it's the record itself.&lt;/p&gt;
&lt;h2&gt;So, how do you make DNS break less?&lt;/h2&gt;
&lt;p&gt;Manage records as code or with ExternalDNS, plan TTLs deliberately, monitor your domains and certificates, cache DNS close to workloads, and always test from where the client actually is.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: DNS is simple until it isn't. Treat it like critical infrastructure, because it's the first thing every request touches.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Git tricks that saved me</title>
      <link>https://deslypeter.com/writing/git-tricks-that-saved-me</link>
      <guid>https://deslypeter.com/writing/git-tricks-that-saved-me.html?lang=en</guid>
      <description>Rebase, bisect, reflog. The commands that get you out of trouble.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Most people use about six Git commands: clone, pull, add, commit, push, and checkout (or switch). That's enough for a normal day. But sooner or later, something goes wrong. A commit on the wrong branch. A bug that appeared "sometime last week". A force push that seemed to delete everything.&lt;/p&gt;
&lt;p&gt;That's when a few less common commands become lifesavers. In DevOps, where Git is also how we deploy infrastructure, knowing them is even more useful.&lt;/p&gt;
&lt;h2&gt;Rebase or merge?&lt;/h2&gt;
&lt;p&gt;Both combine work from two branches. They do it differently:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Merge&lt;/strong&gt; creates a merge commit that joins the two histories. Nothing is rewritten. History shows exactly what happened, including all the branching.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rebase&lt;/strong&gt; replays your commits on top of the target branch, as if you'd started from there. History becomes a straight line, but your commits get new IDs.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;git switch feature
git fetch origin
git rebase origin/main      # put my commits on top of the latest main
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;My rule of thumb: &lt;strong&gt;rebase your own local branches&lt;/strong&gt; to keep them up to date and clean; &lt;strong&gt;don't rebase commits other people already have&lt;/strong&gt; (shared branches like main). Many teams avoid the debate with &lt;strong&gt;squash merges&lt;/strong&gt; in pull requests: the whole branch becomes one clean commit on main.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interactive rebase&lt;/strong&gt; lets you clean up your commits before opening a pull request: squash "fix typo" commits, reorder, reword messages.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;git rebase -i origin/main
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Finding a bug with bisect&lt;/h2&gt;
&lt;p&gt;"It worked last week, and now it doesn't. There are 80 commits in between." Instead of checking them one by one, let Git do a binary search:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;git bisect start
git bisect bad                 # current commit is broken
git bisect good v2.3.0         # this version worked
# Git checks out a commit in the middle. Test it, then:
git bisect good                # or: git bisect bad
# ...repeat about 6-7 times for 80 commits...
git bisect reset
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Even better, automate it with a test script that exits non-zero on failure:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;git bisect run ./scripts/test-login.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Git finds the exact commit that introduced the problem, usually in minutes. It works for infrastructure repos too: "which change broke the Helm chart?"&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;git bisect&lt;/code&gt; turns "it broke sometime last week" into "it broke in this exact commit" in about seven steps.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Undoing almost anything with reflog&lt;/h2&gt;
&lt;p&gt;Here's the most comforting fact about Git: &lt;strong&gt;it almost never really loses committed work&lt;/strong&gt;. Even after a bad reset, a botched rebase or a deleted branch, the commits still exist for a while. &lt;strong&gt;reflog&lt;/strong&gt; shows everywhere &lt;code&gt;HEAD&lt;/code&gt; has pointed recently:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;git reflog
# a1b2c3d HEAD@{0}: reset: moving to HEAD~3
# e4f5g6h HEAD@{1}: commit: add retry logic
# ...

git reset --hard e4f5g6h      # go back to before the bad reset
# or recover a deleted branch:
git branch rescued e4f5g6h
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you ever think "I just destroyed my work", stop, breathe, and run &lt;code&gt;git reflog&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Other everyday rescues&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Committed to the wrong branch:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;git switch correct-branch
git cherry-pick &amp;lt;commit&amp;gt;
git switch wrong-branch
git reset --hard HEAD~1       # remove it from the wrong branch (if not pushed)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Fix the last commit&lt;/strong&gt; (message or forgotten file):&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;git add forgotten-file.yaml
git commit --amend
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Undo a commit that's already pushed&lt;/strong&gt;, safely, without rewriting history:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;git revert &amp;lt;commit&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In GitOps setups, &lt;code&gt;git revert&lt;/code&gt; is literally how you roll back a deployment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Park unfinished work:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;git stash push -m "half-done refactor"
git stash list
git stash pop
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Who changed this line, and why?&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;git blame -L 40,60 values.yaml
git log -p -S "replicas: 1" -- deploy/   # find the commit that added or removed a string
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Force push more safely&lt;/strong&gt;, when you must:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;git push --force-with-lease
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Unlike &lt;code&gt;--force&lt;/code&gt;, it refuses if someone else pushed in the meantime.&lt;/p&gt;
&lt;h2&gt;Protecting branches&lt;/h2&gt;
&lt;p&gt;In a team, the safest Git is the one where mistakes can't reach main easily:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Branch protection / rulesets&lt;/strong&gt;: require pull requests, reviews and passing checks for main. Block force pushes and deletion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CODEOWNERS&lt;/strong&gt;: automatically request reviews from the right team for the right files. Especially useful for infrastructure folders.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Signed commits&lt;/strong&gt;: sign with SSH or GPG keys (or keyless with Sigstore's gitsign), and require signatures on protected branches. It proves commits really come from who they claim.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;# .github/CODEOWNERS
/infrastructure/   @acme/platform-team
/deploy/prod/      @acme/platform-team @acme/sre
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;A few config settings I always use&lt;/h2&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;git config --global pull.rebase true          # rebase instead of merge on pull
git config --global rebase.autoStash true     # stash and unstash automatically during rebase
git config --global push.autoSetupRemote true # no more --set-upstream
git config --global rerere.enabled true       # remember conflict resolutions
git config --global init.defaultBranch main
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;So, what should you practise?&lt;/h2&gt;
&lt;p&gt;Try &lt;code&gt;git bisect&lt;/code&gt; on a real bug, and do a test reset followed by a reflog recovery in a throwaway repo. Once you've rescued yourself once, Git stops being scary.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: Git remembers almost everything. Learn the commands that let you ask it, and you'll rarely lose work again.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>"Works on my machine," solved with Nix?</title>
      <link>https://deslypeter.com/writing/reproducible-environments-nix</link>
      <guid>https://deslypeter.com/writing/reproducible-environments-nix.html?lang=en</guid>
      <description>Reproducible environments for everyone on the team.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Every team has the conversation. "The build fails for me." "Works on my machine." Then twenty minutes of comparing versions: different Terraform, a newer Node, an old kubectl, a Python that came with macOS, a missing system library.&lt;/p&gt;
&lt;p&gt;Onboarding a new team member can take a day just to get the right tools in the right versions. And CI often uses a completely different set of versions.&lt;/p&gt;
&lt;p&gt;Reproducible development environments fix this. Nix is the most powerful way to get them, and newer tools have made it much more approachable.&lt;/p&gt;
&lt;h2&gt;The problem&lt;/h2&gt;
&lt;p&gt;Development environments drift because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Everyone installs tools differently: Homebrew, apt, downloaded binaries, version managers.&lt;/li&gt;
&lt;li&gt;Versions aren't pinned, or are pinned in a README nobody follows.&lt;/li&gt;
&lt;li&gt;Tools depend on system libraries that differ between machines.&lt;/li&gt;
&lt;li&gt;CI images are maintained separately from developer setups.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What we want: one file in the repository that defines exactly which tools (and versions) the project needs, which works the same on every developer's machine and in CI.&lt;/p&gt;
&lt;h2&gt;Nix in one paragraph&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Nix&lt;/strong&gt; is a package manager and build system built on a radical idea: every package is built in isolation from a precise description of its inputs, and stored under a unique path based on a hash of those inputs (like &lt;code&gt;/nix/store/abc123-terraform-1.9.8&lt;/code&gt;). Multiple versions live side by side without conflict. Nothing is installed "globally". If two machines use the same Nix description, they get exactly the same software, bit for bit. The &lt;strong&gt;nixpkgs&lt;/strong&gt; collection contains well over 100,000 packages, one of the largest of any package manager.&lt;/p&gt;
&lt;h2&gt;Nix flakes&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Flakes&lt;/strong&gt; are the modern way to define Nix projects, with a lock file that pins exact versions of everything. A dev shell for an infrastructure project:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-nix"&gt;{
  description = "Infrastructure dev environment";

  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

  outputs = { self, nixpkgs }:
    let
      systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ];
      forAll = f: nixpkgs.lib.genAttrs systems (s: f nixpkgs.legacyPackages.${s});
    in {
      devShells = forAll (pkgs: {
        default = pkgs.mkShell {
          packages = with pkgs; [
            opentofu
            kubectl
            kubernetes-helm
            awscli2
            jq
            shellcheck
          ];
        };
      });
    };
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Run &lt;code&gt;nix develop&lt;/code&gt;, and you're in a shell with exactly those tools. The &lt;code&gt;flake.lock&lt;/code&gt; file pins them, so everyone gets identical versions until someone deliberately updates the lock.&lt;/p&gt;
&lt;p&gt;Honestly, Nix's language and concepts have a steep learning curve. That's where friendlier tools come in.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The goal isn't to use Nix. The goal is that "install the tools" becomes one command that always gives the same result.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;devbox and devenv: Nix without the pain&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;devbox&lt;/strong&gt; (from Jetify) uses Nix underneath, but you only write a simple JSON file:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-json"&gt;{
  "packages": [
    "opentofu@1.10",
    "kubectl@1.33",
    "helm@latest",
    "awscli2@latest",
    "jq@latest"
  ],
  "shell": {
    "init_hook": ["echo 'Infra shell ready'"]
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;devbox shell
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No Nix knowledge needed. It can also generate Dockerfiles and dev container configs from the same file.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;devenv&lt;/strong&gt; (from Cachix) is another popular option: more Nix under the hood, but with ready-made modules for languages and services (like starting a local PostgreSQL), pre-commit hooks and scripts.&lt;/p&gt;
&lt;p&gt;Both work great with &lt;strong&gt;direnv&lt;/strong&gt;, which activates the environment automatically when you &lt;code&gt;cd&lt;/code&gt; into the project folder.&lt;/p&gt;
&lt;h2&gt;Dev Containers instead?&lt;/h2&gt;
&lt;p&gt;The main alternative is &lt;strong&gt;Dev Containers&lt;/strong&gt;: a &lt;code&gt;devcontainer.json&lt;/code&gt; that defines a container image with all your tools, used by VS Code, JetBrains IDEs, GitHub Codespaces and others.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Nix / devbox / devenv&lt;/th&gt;
&lt;th&gt;Dev Containers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Runs&lt;/td&gt;
&lt;td&gt;Natively on your machine&lt;/td&gt;
&lt;td&gt;Inside a container&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reproducibility&lt;/td&gt;
&lt;td&gt;Very high (locked inputs)&lt;/td&gt;
&lt;td&gt;Depends on how the image is built&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance on macOS&lt;/td&gt;
&lt;td&gt;Native speed&lt;/td&gt;
&lt;td&gt;Some overhead (file system, VM)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning curve&lt;/td&gt;
&lt;td&gt;Steep (Nix), easy (devbox)&lt;/td&gt;
&lt;td&gt;Easy if you know Docker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Editor integration&lt;/td&gt;
&lt;td&gt;Via direnv, works everywhere&lt;/td&gt;
&lt;td&gt;Excellent in VS Code and Codespaces&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud dev environments&lt;/td&gt;
&lt;td&gt;Possible&lt;/td&gt;
&lt;td&gt;Native in Codespaces and similar&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Both are good choices. Dev Containers are more familiar to most teams. Nix-based tools are more precise and run natively. Some teams even combine them: Nix inside a dev container.&lt;/p&gt;
&lt;h2&gt;Nix in CI&lt;/h2&gt;
&lt;p&gt;The real payoff: using the &lt;strong&gt;same environment in CI&lt;/strong&gt; as on laptops.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;- uses: cachix/install-nix-action@&amp;lt;sha&amp;gt;
- run: nix develop --command make test
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or with devbox: &lt;code&gt;devbox run test&lt;/code&gt;. A binary cache (Cachix, or a self-hosted one) keeps CI fast by downloading pre-built packages instead of building them.&lt;/p&gt;
&lt;p&gt;No more "the CI image has a different Terraform version than my laptop".&lt;/p&gt;
&lt;h2&gt;So, should you try it?&lt;/h2&gt;
&lt;p&gt;If your team regularly loses time to version mismatches and slow onboarding, yes. I'd start with &lt;strong&gt;devbox&lt;/strong&gt; in one repository: one JSON file, one command, no Nix knowledge needed. If people like it, go deeper with flakes or devenv. If your team already lives in VS Code, Dev Containers are an equally good path.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: your project's tools are part of your project. Put them in the repository, pin them, and stop debugging each other's laptops.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Docs and runbooks people actually read</title>
      <link>https://deslypeter.com/writing/docs-and-runbooks</link>
      <guid>https://deslypeter.com/writing/docs-and-runbooks.html?lang=en</guid>
      <description>Docs-as-code, runbooks and decision records that stay up to date.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>technical</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Every team says they value documentation. Then you open the wiki and find pages last updated three years ago, instructions for servers that no longer exist, and a page titled "TODO: write this" from someone who left in 2023.&lt;/p&gt;
&lt;p&gt;Bad documentation is worse than none, because people trust it and follow it. But good documentation is one of the highest-leverage things a DevOps team can produce. It's how knowledge survives holidays, sick days and people moving on.&lt;/p&gt;
&lt;p&gt;Here's how to write docs that stay useful.&lt;/p&gt;
&lt;h2&gt;Why docs rot&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;They live far from the code.&lt;/strong&gt; A wiki nobody looks at when they change the system.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nobody owns them.&lt;/strong&gt; Everyone can edit, so nobody feels responsible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;They're not part of the work.&lt;/strong&gt; Docs are "extra", done later, which means never.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;They're too long.&lt;/strong&gt; People skim, miss the important part, and stop reading.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Docs live next to the code&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Docs-as-code&lt;/strong&gt; means treating documentation like code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Written in &lt;strong&gt;Markdown&lt;/strong&gt;, stored in the &lt;strong&gt;same repository&lt;/strong&gt; as the code they describe.&lt;/li&gt;
&lt;li&gt;Changed in the &lt;strong&gt;same pull request&lt;/strong&gt; as the code change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reviewed&lt;/strong&gt; like code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Published automatically&lt;/strong&gt; by a pipeline to a nice website.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tools that make this easy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MkDocs&lt;/strong&gt; with the &lt;strong&gt;Material&lt;/strong&gt; theme: simple, beautiful, very popular for technical docs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docusaurus&lt;/strong&gt;: React-based, great for larger documentation sites.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backstage TechDocs&lt;/strong&gt;: renders MkDocs docs from each repository inside your developer portal.&lt;/li&gt;
&lt;li&gt;Plain &lt;strong&gt;README.md&lt;/strong&gt; files, which GitHub and GitLab render nicely.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A pull request template with a checkbox "documentation updated (or not needed)" is a small nudge that helps a lot.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The best time to update documentation is in the same pull request that makes it wrong.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;A runbook template&lt;/h2&gt;
&lt;p&gt;Runbooks are the most important docs for operations. When an alert fires at 3 a.m., the on-call engineer needs answers fast, not prose.&lt;/p&gt;
&lt;p&gt;My template:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-markdown"&gt;# Alert: CheckoutHighErrorRate

## What it means
More than 2% of checkout requests return 5xx errors over 5 minutes.

## Impact
Customers can't complete purchases. Revenue impact. Treat as SEV2 or higher.

## Check
1. Dashboard: [Checkout overview](https://grafana.example.com/d/checkout)
2. Recent deployments: `kubectl rollout history deploy/checkout -n shop`
3. Errors by endpoint: [Logs query](https://grafana.example.com/explore?...)
4. Payment provider status: https://status.paymentprovider.example

## Common causes and fixes
- **Bad deployment** → roll back: revert the commit in the GitOps repo
  (or `kubectl rollout undo deploy/checkout -n shop` in an emergency).
- **Payment provider outage** → switch to backup provider via feature flag `payments.fallback`.
- **Database connection exhaustion** → check `orders-db` connections dashboard; scale checkout down
  temporarily or restart the connection pooler.

## Escalation
- Checkout team: @checkout-oncall
- Database: @dba-oncall
- Incident commander for SEV1: use `/incident declare`

## Last reviewed
2026-09-15 by @desly
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Key principles: &lt;strong&gt;link directly&lt;/strong&gt; to dashboards and queries, give &lt;strong&gt;copy-paste commands&lt;/strong&gt;, list &lt;strong&gt;common causes first&lt;/strong&gt;, and say &lt;strong&gt;who to call&lt;/strong&gt;. And link the runbook from the alert itself.&lt;/p&gt;
&lt;h2&gt;Writing down decisions&lt;/h2&gt;
&lt;p&gt;Six months after a decision, nobody remembers why it was made. "Why do we use Loki and not Elasticsearch?" "Why is this service on its own cluster?" Without a record, teams either repeat old debates or undo good decisions by accident.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Architecture Decision Records (ADRs)&lt;/strong&gt; solve this. An ADR is a short document, usually one page, stored in the repository:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-markdown"&gt;# ADR-012: Use Gateway API instead of Ingress for new services

## Status
Accepted (2026-05-04)

## Context
ingress-nginx was retired in March 2026. We need a supported way to route traffic.

## Decision
New services use Gateway API with Envoy Gateway. Existing Ingress resources
are migrated by end of Q3.

## Consequences
+ Supported, portable API with role separation.
- Teams need to learn HTTPRoute; some annotations need manual migration.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Numbered, short, never deleted (superseded ADRs are marked as such). Tools like &lt;strong&gt;adr-tools&lt;/strong&gt; or &lt;strong&gt;Log4brains&lt;/strong&gt; help, but a folder of Markdown files works perfectly.&lt;/p&gt;
&lt;h2&gt;Keeping it fresh&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Owners&lt;/strong&gt;: every doc or folder has an owning team (CODEOWNERS works for docs too).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;"Last reviewed" dates&lt;/strong&gt; on runbooks, with a regular review (for example, quarterly, or after every incident that used the runbook).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Update after incidents&lt;/strong&gt;: a postmortem action item is often "update the runbook".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Delete aggressively&lt;/strong&gt;: outdated docs are dangerous. Archive or delete them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep it short&lt;/strong&gt;: one clear page beats ten vague ones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make it searchable&lt;/strong&gt;: a docs site with search, or a portal like Backstage.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;A word on AI&lt;/h2&gt;
&lt;p&gt;AI tools are great at drafting documentation: summarising a codebase, turning an incident timeline into a runbook, explaining a complex config. Use them for first drafts. But a human who knows the system needs to check every step, because a wrong runbook at 3 a.m. is worse than none.&lt;/p&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Write runbooks for your five most frequent alerts, with the template above, and link them from the alerts. Then start an ADR folder and write the first record about the next decision your team makes.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: documentation is a gift to your future self and your colleagues. Keep it close to the code, keep it short, and keep it true.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Platform engineering, DevOps, SRE: what's the actual difference?</title>
      <link>https://deslypeter.com/writing/platform-engineering-devops-sre-difference</link>
      <guid>https://deslypeter.com/writing/platform-engineering-devops-sre-difference.html?lang=en</guid>
      <description>Three job titles, one confusing overlap. What each one really does, and which one your team needs.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Every few months, someone asks me what I actually do. When I say "DevOps", I get a nod. When a colleague says "platform engineer", the nod is slower. When someone says "SRE", people just smile politely.&lt;/p&gt;
&lt;p&gt;The confusing part is that inside the industry, we aren't much clearer. The same job gets posted under all three titles, and the same title can mean three different jobs. So here's my attempt to untangle it.&lt;/p&gt;
&lt;h2&gt;Why everyone suddenly says "platform"&lt;/h2&gt;
&lt;p&gt;DevOps started as an idea, not a job title. The idea was simple: the people who build software and the people who run it should stop throwing things over a wall at each other. Shared responsibility, more automation, faster feedback.&lt;/p&gt;
&lt;p&gt;Then the idea became a role. Companies hired "DevOps engineers", and very often those people became the new wall. Every team needed something from them: a pipeline, a cluster, a database, a fix. The DevOps team turned into a ticket queue.&lt;/p&gt;
&lt;p&gt;Platform engineering is largely a reaction to that. Instead of doing things for every team, you build a product that lets teams do things themselves. Self-service pipelines, templates, environments, all with sensible defaults.&lt;/p&gt;
&lt;h2&gt;What each role owns, in plain words&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;DevOps&lt;/strong&gt; is the culture and the set of practices: automation, CI/CD, infrastructure as code, monitoring, shared ownership. As a job title, it usually means "the person who makes building, shipping and running software work".&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SRE (Site Reliability Engineering)&lt;/strong&gt; came from Google. It treats operations as a software problem. SREs care about reliability with numbers attached: SLOs, error budgets, incident response, reducing toil. Their main question is "how reliable does this need to be, and how do we get there without burning out?"&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Platform engineering&lt;/strong&gt; builds the internal product that developers use to ship software. The customers are your own developers. Their main question is "how do we make the right way the easy way?"&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;DevOps is the philosophy, SRE is reliability as an engineering discipline, and platform engineering is the product that makes both scale.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Where they overlap in my own work&lt;/h2&gt;
&lt;p&gt;In practice, the borders are blurry. On a normal week I might write a pipeline template (platform), tune an alert so it stops waking people up for nothing (SRE), and help a team understand why their deployment keeps failing (classic DevOps).&lt;/p&gt;
&lt;p&gt;That's normal, especially in smaller companies. Titles describe where your focus is, not a fence around what you're allowed to touch.&lt;/p&gt;
&lt;p&gt;The skills underneath are almost the same: Linux, networking, cloud, containers, Kubernetes, infrastructure as code, observability, scripting. What changes is the angle you look from.&lt;/p&gt;
&lt;h2&gt;Does a small team need a platform team?&lt;/h2&gt;
&lt;p&gt;Probably not yet. If you have ten developers and one or two people doing operations, you don't need a "platform team". You need a few good templates, a solid pipeline, and decent documentation.&lt;/p&gt;
&lt;p&gt;Signs you're ready for a platform approach:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The same request lands on the ops team again and again.&lt;/li&gt;
&lt;li&gt;Every team builds its pipelines differently, and nobody can help anyone else.&lt;/li&gt;
&lt;li&gt;New services take days or weeks to get into production.&lt;/li&gt;
&lt;li&gt;Developers spend more time on infrastructure than on their product.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When those pile up, a small platform team that treats the developer experience as a product starts to pay for itself.&lt;/p&gt;
&lt;h2&gt;What I'd tell someone choosing a path&lt;/h2&gt;
&lt;p&gt;Don't stress too much about the title. The foundations are the same, and you can move between these roles later.&lt;/p&gt;
&lt;p&gt;If you love automation and building tools for other engineers, lean towards platform engineering. If you enjoy incidents, metrics and making systems hold up under pressure, SRE might be your thing. If you like a bit of everything, "DevOps engineer" is still a great place to start.&lt;/p&gt;
&lt;h2&gt;So, which one do you need?&lt;/h2&gt;
&lt;p&gt;Most teams need the DevOps mindset first. Reliability practices come next, once you have users who notice when things break. A platform team comes when you have enough developers that self-service saves more time than it costs to build.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: titles change every few years. Making software easy to ship and hard to break never goes out of fashion.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Golden paths: standards that don't slow anyone down</title>
      <link>https://deslypeter.com/writing/golden-paths</link>
      <guid>https://deslypeter.com/writing/golden-paths.html?lang=en</guid>
      <description>How to make the right way the easy way, with escape hatches for the edge cases.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Every company wants standards. Same pipeline structure, same security checks, same logging format, same way to deploy. And every developer has been on the receiving end of standards that felt like paperwork: a forty-page wiki, a checklist, a review board that meets on Thursdays.&lt;/p&gt;
&lt;p&gt;The idea is that standards should feel like a shortcut, not a barrier.&lt;/p&gt;
&lt;h2&gt;Roads, guardrails and gates&lt;/h2&gt;
&lt;p&gt;I find it useful to think about three ways to guide people:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gates&lt;/strong&gt; stop you until someone approves. "Submit a ticket and wait for the architecture review."&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guardrails&lt;/strong&gt; let you move freely but stop you before you fall off a cliff. "You can deploy anything, but not a container running as root."&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paved roads (golden paths)&lt;/strong&gt; make one way so convenient that most people take it voluntarily.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Good platforms use a lot of paved roads, a few guardrails, and as few gates as possible.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If people need to be forced onto your golden path, it isn't golden. It's just a path.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;A new service in ten minutes&lt;/h2&gt;
&lt;p&gt;From a developer's perspective, a good golden path looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the template (a GitHub template, a Backstage form, or a CLI command).&lt;/li&gt;
&lt;li&gt;Enter a service name and owning team.&lt;/li&gt;
&lt;li&gt;Get a repository with working code, tests, a Dockerfile and a pipeline.&lt;/li&gt;
&lt;li&gt;Push. The pipeline builds, scans and deploys to a test environment.&lt;/li&gt;
&lt;li&gt;Logs, metrics, dashboards and basic alerts are already there.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The developer didn't read a wiki page about logging standards. The template simply does logging the right way. They didn't configure security scanning. The pipeline includes it. The standard is baked in.&lt;/p&gt;
&lt;h2&gt;What goes into a path&lt;/h2&gt;
&lt;p&gt;The best candidates are things every service needs, that are easy to get wrong:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build and deployment pipelines&lt;/li&gt;
&lt;li&gt;Container base images&lt;/li&gt;
&lt;li&gt;Health checks, resource requests and limits&lt;/li&gt;
&lt;li&gt;Logging format, metrics and tracing setup&lt;/li&gt;
&lt;li&gt;Security scanning and secret handling&lt;/li&gt;
&lt;li&gt;Ownership and documentation (a catalog entry, a README skeleton)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don't try to standardise everything. Leave the actual product code alone. Developers should choose their own libraries and architecture inside the service.&lt;/p&gt;
&lt;h2&gt;When people need to leave the path&lt;/h2&gt;
&lt;p&gt;Teams will always have unusual needs — different languages, GPU workloads, or odd databases. If your golden path is the only option, those teams will either be stuck or quietly find workarounds you don't know about.&lt;/p&gt;
&lt;p&gt;So build escape hatches on purpose:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Allow teams to override parts of the template, not just all or nothing.&lt;/li&gt;
&lt;li&gt;Document what they lose when they leave the path (for example, "you'll need to set up your own alerts").&lt;/li&gt;
&lt;li&gt;Watch where people leave. If many teams leave at the same point, that's a signal to extend the path.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Keeping templates up to date&lt;/h2&gt;
&lt;p&gt;The hidden issue with templates is that once a service is created, it's a copy. If you improve the template later, older services don't automatically get those improvements.&lt;/p&gt;
&lt;p&gt;A few ways to handle that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keep shared logic &lt;strong&gt;out of each repo&lt;/strong&gt;: reusable pipeline workflows, shared Helm charts, base images. Services reference a version instead of copying the content.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;Renovate or Dependabot&lt;/strong&gt; to open pull requests when a new version of the shared pieces is released.&lt;/li&gt;
&lt;li&gt;Version your templates and keep a short changelog so teams know what they're missing.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, are golden paths worth it?&lt;/h2&gt;
&lt;p&gt;Very much. They're how a small platform team can raise the quality of dozens of services without reviewing every one. Developers get speed, the organisation gets consistency, and nobody has to read the forty-page wiki.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: make the right way the easiest way, keep a door open for the exceptions, and listen when people use it.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Are we actually getting faster? Measuring DevOps with DORA</title>
      <link>https://deslypeter.com/writing/measuring-devops-dora</link>
      <guid>https://deslypeter.com/writing/measuring-devops-dora.html?lang=en</guid>
      <description>Five numbers that tell you how your delivery is really going, and the vanity metrics to ignore.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;"We're doing DevOps now." Great. But is it working? Are we shipping faster? Breaking less? Recovering quicker? Most teams can't answer those questions with anything better than a feeling.&lt;/p&gt;
&lt;p&gt;DORA metrics help answer those questions. They come from years of research by the DevOps Research and Assessment team (now part of Google Cloud), and they're the closest thing our industry has to a shared scoreboard.&lt;/p&gt;
&lt;h2&gt;The DORA metrics in plain words&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Deployment frequency.&lt;/strong&gt; How often do you release to production? Daily, weekly, monthly?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lead time for changes.&lt;/strong&gt; How long does it take for a committed change to reach production? Hours or weeks?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Change failure rate.&lt;/strong&gt; What percentage of deployments cause a problem that needs a fix, a rollback or a hotfix?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Time to restore service.&lt;/strong&gt; When something breaks in production, how long until it's working again?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rework rate.&lt;/strong&gt; The newest addition: how many deployments are unplanned, made just to fix problems from earlier deployments?&lt;/p&gt;
&lt;p&gt;The first two measure &lt;strong&gt;speed&lt;/strong&gt;. The others measure &lt;strong&gt;stability&lt;/strong&gt;. The key finding behind DORA is that these don't fight each other. The best teams are both faster and more stable. Small, frequent changes are easier to test, easier to review and easier to roll back.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Speed and stability aren't a trade-off. Teams that ship small changes often tend to break less, not more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What the latest DORA research says about AI&lt;/h2&gt;
&lt;p&gt;The recent DORA reports have focused heavily on AI-assisted development. The headline is more nuanced than the marketing: AI helps individuals write code faster, but it can also lead to bigger batches of change, and bigger batches tend to hurt stability.&lt;/p&gt;
&lt;p&gt;The teams that benefit most from AI are the ones that already have strong foundations: good tests, small batches, fast feedback, and a solid internal platform. AI amplifies what's already there, good or bad.&lt;/p&gt;
&lt;h2&gt;Collecting them without spreadsheets&lt;/h2&gt;
&lt;p&gt;You don't need a big tool to start. Most of the data already exists:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deployment frequency&lt;/strong&gt;: count successful production deployments from your CI/CD system.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lead time&lt;/strong&gt;: time from the first commit (or merge) to the production deployment that contains it. Git plus your pipeline logs have both timestamps.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Change failure rate&lt;/strong&gt;: tag rollbacks, hotfixes and incidents linked to a deployment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time to restore&lt;/strong&gt;: from your incident tool, opened to resolved.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are open-source options like the DORA team's &lt;strong&gt;Four Keys&lt;/strong&gt; project as inspiration, and many commercial tools (LinearB, Sleuth, Swarmia, DX, GitLab and GitHub insights) that calculate them automatically.&lt;/p&gt;
&lt;p&gt;Start rough. A weekly script that counts deployments and incidents is better than a perfect dashboard you never build.&lt;/p&gt;
&lt;h2&gt;Numbers I stopped tracking&lt;/h2&gt;
&lt;p&gt;Some metrics look good on a slide but tell you very little:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lines of code.&lt;/strong&gt; More code is often worse, not better.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Number of commits or pull requests per developer.&lt;/strong&gt; Easy to game, and it turns measurement into surveillance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Story points.&lt;/strong&gt; Useful for a team's own planning, meaningless when compared between teams.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Uptime percentage alone.&lt;/strong&gt; Without context, 99.9% might be great or terrible.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The DORA metrics work best at the &lt;strong&gt;team&lt;/strong&gt; level, used by the team itself to improve. The moment they're used to rank individuals or punish teams, people start optimising the number instead of the system.&lt;/p&gt;
&lt;h2&gt;Beyond DORA: SPACE and DevEx&lt;/h2&gt;
&lt;p&gt;DORA measures delivery. It doesn't measure whether developers are happy, focused or burning out. Frameworks like &lt;strong&gt;SPACE&lt;/strong&gt; and &lt;strong&gt;DevEx&lt;/strong&gt; add that human side: satisfaction, flow, cognitive load, interruptions. A short quarterly survey is a good companion to the DORA numbers.&lt;/p&gt;
&lt;h2&gt;So, should you measure?&lt;/h2&gt;
&lt;p&gt;Yes, but with care. Pick the DORA metrics, measure them roughly, look at trends rather than absolute values, and talk about them as a team. When a number moves, ask why.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: measure the system, not the people. The goal is to learn where it hurts, not to win a leaderboard.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Portals, CLIs or Git: what developers really use</title>
      <link>https://deslypeter.com/writing/portals-clis-or-git</link>
      <guid>https://deslypeter.com/writing/portals-clis-or-git.html?lang=en</guid>
      <description>A shiny portal is nice. But is it what your developers actually open every day?</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;When platform teams show off their work, they usually show a portal. Nice cards, service pages, a big "Create" button. It demos beautifully.&lt;/p&gt;
&lt;p&gt;But when I watch developers actually work, they rarely live in a portal. They live in their editor, their terminal, their pull requests and their chat tool. So the question every platform team should ask is: where should the platform meet developers?&lt;/p&gt;
&lt;h2&gt;Three ways to offer a platform&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;A web portal&lt;/strong&gt; (Backstage, Port and others). Great for discovery: finding services, owners, docs, and for occasional tasks like creating a new service. Less great for things you do twenty times a day.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A CLI.&lt;/strong&gt; Developers who live in the terminal love a good command-line tool. &lt;code&gt;platform create service&lt;/code&gt;, &lt;code&gt;platform logs&lt;/code&gt;, &lt;code&gt;platform env up&lt;/code&gt;. Fast, scriptable, easy to use in CI. The downside: someone has to build and maintain it, and it needs to be installed and updated everywhere.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Git as the interface (GitOps).&lt;/strong&gt; Developers change a YAML file in a repository, open a pull request, and automation does the rest. Every change is reviewed, versioned and auditable. The downside: YAML fatigue, and less discoverable for newcomers.&lt;/p&gt;
&lt;p&gt;None of these is "the right one". They're good at different moments.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The best platform interface is the one developers are already looking at when they need it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What I've learned from asking developers&lt;/h2&gt;
&lt;p&gt;When you ask developers what they want from a platform, the answers are rarely "a nicer portal". More often they're things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"I just want to know why my deployment failed without asking someone."&lt;/li&gt;
&lt;li&gt;"I want logs for my service without learning a query language."&lt;/li&gt;
&lt;li&gt;"I want a test environment without opening a ticket."&lt;/li&gt;
&lt;li&gt;"I want to know who owns the service that's breaking mine."&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notice that these are about outcomes, not interfaces. The platform team's job is to make those outcomes easy, wherever the developer happens to be.&lt;/p&gt;
&lt;p&gt;Some practical patterns that work well:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bring information to the pull request.&lt;/strong&gt; Preview URLs, test results, security findings and cost changes as comments on the PR.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bring alerts to chat&lt;/strong&gt; with links straight to the right dashboard and runbook.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use the portal for discovery&lt;/strong&gt; and rare actions, not daily work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep the real source of truth in Git&lt;/strong&gt;, and let the portal and CLI read from it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Docs are a feature&lt;/h2&gt;
&lt;p&gt;The most underrated part of any platform is documentation. A platform nobody understands is a platform nobody uses.&lt;/p&gt;
&lt;p&gt;Good platform docs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start with "how do I do X" guides, not architecture diagrams.&lt;/li&gt;
&lt;li&gt;Live next to the code (docs-as-code) and are reviewed like code.&lt;/li&gt;
&lt;li&gt;Have copy-paste examples that actually work.&lt;/li&gt;
&lt;li&gt;Are owned by someone and reviewed regularly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only have time for one improvement this quarter, improving docs often beats adding a new feature.&lt;/p&gt;
&lt;h2&gt;Before and after numbers&lt;/h2&gt;
&lt;p&gt;Whatever interface you choose, measure whether it helps. Useful before and after comparisons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Time from "I need a new service" to "it runs in a test environment".&lt;/li&gt;
&lt;li&gt;Number of routine requests to the platform team.&lt;/li&gt;
&lt;li&gt;How often developers need help to debug a failed deployment.&lt;/li&gt;
&lt;li&gt;Survey answers to "how easy is it to ship a change?"&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the numbers don't move after launching a portal, the portal isn't the problem you needed to solve.&lt;/p&gt;
&lt;h2&gt;So, which one should you build?&lt;/h2&gt;
&lt;p&gt;Start where your developers already are. For most teams, that's Git and pull requests, with good automation behind them. Add a CLI if your developers are terminal-heavy. Add a portal when discovery becomes a real problem, usually once you have dozens of services and teams.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: build the platform around developers' habits, not around the demo. The demo lasts ten minutes, the habits last years.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Less to think about: reducing cognitive load for developers</title>
      <link>https://deslypeter.com/writing/reducing-cognitive-load</link>
      <guid>https://deslypeter.com/writing/reducing-cognitive-load.html?lang=en</guid>
      <description>Every YAML file you ask a developer to understand has a cost. How to make it smaller.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;"You build it, you run it." I believe in that idea. Teams that own their services in production build better software. But somewhere along the way, "you run it" turned into "you need to understand Kubernetes, Helm, Terraform, IAM, networking, observability, security scanning and three CI systems". That's a lot to carry on top of actually building the product.&lt;/p&gt;
&lt;p&gt;That weight has a name: cognitive load.&lt;/p&gt;
&lt;h2&gt;What cognitive load means at work&lt;/h2&gt;
&lt;p&gt;The idea comes from psychology, and the book &lt;em&gt;Team Topologies&lt;/em&gt; made it popular in software. Every person and team has limited mental capacity. If too much of it is used on things that aren't their main job, their main job suffers.&lt;/p&gt;
&lt;p&gt;There are roughly three kinds:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Intrinsic&lt;/strong&gt;: the complexity of the problem itself. Building a payment system is hard. That's fine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extraneous&lt;/strong&gt;: complexity that doesn't need to be there. Confusing tools, unclear processes, twelve ways to deploy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Germane&lt;/strong&gt;: the effort of learning things that make you better at your job.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A platform team's job is to remove as much extraneous load as possible, so developers can spend their energy on the intrinsic and germane kinds.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If your developers need to understand your whole infrastructure to change one line of code, the infrastructure is the problem.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Hiding Kubernetes, gently&lt;/h2&gt;
&lt;p&gt;Kubernetes is a perfect example. It's powerful, but a simple web service needs a Deployment, a Service, an HTTPRoute or Ingress, a ConfigMap, maybe a HorizontalPodAutoscaler, a PodDisruptionBudget, a ServiceAccount, NetworkPolicies... Most developers don't need to know all of that.&lt;/p&gt;
&lt;p&gt;Ways to reduce it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A shared Helm chart&lt;/strong&gt; with good defaults. The developer's values file is fifteen lines instead of three hundred.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Higher-level specs&lt;/strong&gt; like Score (a workload spec that describes what a service needs, not how to deploy it), or Kro and Crossplane to build your own simple &lt;code&gt;App&lt;/code&gt; resource.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Templates&lt;/strong&gt; that generate everything once, so developers start from something that works.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The word "gently" matters. Don't hide Kubernetes so completely that debugging becomes impossible. Make the simple path simple, and keep the details available for people who need them.&lt;/p&gt;
&lt;h2&gt;Good defaults beat good documentation&lt;/h2&gt;
&lt;p&gt;Every decision you ask a developer to make is a small piece of load. Most of them have a sensible answer that's right 90% of the time.&lt;/p&gt;
&lt;p&gt;Bake those answers into the platform:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Logs in a structured format, shipped automatically.&lt;/li&gt;
&lt;li&gt;Metrics and tracing set up in the base image or library.&lt;/li&gt;
&lt;li&gt;Resource requests and probes with reasonable values.&lt;/li&gt;
&lt;li&gt;Security settings: non-root containers, read-only file systems, dropped capabilities.&lt;/li&gt;
&lt;li&gt;Alerts for the basics: error rate, latency, restarts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Documentation still matters, but the best documentation is the one nobody has to read because the default is already right.&lt;/p&gt;
&lt;h2&gt;Signs your platform makes it worse&lt;/h2&gt;
&lt;p&gt;Platform teams can increase cognitive load too. Watch out for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Another tool to learn&lt;/strong&gt; that only the platform team really understands.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Abstractions that leak&lt;/strong&gt;: when something breaks, developers have to understand both the abstraction and everything underneath.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Too many choices&lt;/strong&gt;: "you can deploy with option A, B, or C" isn't self-service, it's homework.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Constant change&lt;/strong&gt;: a new way of doing things every quarter.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ask developers regularly what slows them down. If the platform appears on that list, take it seriously.&lt;/p&gt;
&lt;h2&gt;So, how do you start?&lt;/h2&gt;
&lt;p&gt;Pick one area where developers struggle the most, often deployment configuration or observability. Reduce the number of things they need to know there. Measure whether questions to the ops team go down. Repeat.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: the best platform is the one developers barely notice. They just ship, and things work.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Monorepo or many repos?</title>
      <link>https://deslypeter.com/writing/monorepo-or-many-repos</link>
      <guid>https://deslypeter.com/writing/monorepo-or-many-repos.html?lang=en</guid>
      <description>One repo to rule them all, or one per service. The honest trade-offs for CI and ownership.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Few topics start an argument among engineers faster than this one. Some people swear by putting everything in one giant repository. Others think that's madness and want one repository per service. Both groups point to famous companies that do it their way.&lt;/p&gt;
&lt;p&gt;Here's how I think about it from a DevOps point of view: what it means for pipelines, ownership and day-to-day work.&lt;/p&gt;
&lt;h2&gt;What we're comparing&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Monorepo&lt;/strong&gt;: all (or most) code for many services and libraries lives in one repository.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Polyrepo&lt;/strong&gt;: each service or library has its own repository.&lt;/p&gt;
&lt;p&gt;There's a middle ground too: one repository per team or per product area. Many companies end up there, even if they don't call it anything.&lt;/p&gt;
&lt;h2&gt;What changes for CI&lt;/h2&gt;
&lt;p&gt;This is where the decision hurts or helps the most.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In a polyrepo world&lt;/strong&gt;, CI is simple at first. Each repository has its own pipeline, it only builds that service, and it's fast. The pain arrives later: shared libraries need to be released, versioned and updated in every consumer. A change that touches three services means three pull requests, three reviews, three pipelines, coordinated by hand.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In a monorepo&lt;/strong&gt;, a cross-cutting change is one pull request. Refactoring a shared library and updating all its users happens atomically. But naive CI becomes slow: if every commit builds and tests everything, pipelines take forever as the repo grows.&lt;/p&gt;
&lt;p&gt;The fix for monorepo CI is &lt;strong&gt;affected-only builds&lt;/strong&gt;: work out which projects a change actually touches, and only build and test those. That needs tooling that understands the dependency graph.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A monorepo without smart build tooling is just a very big polyrepo with slower pipelines.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Ownership and dependencies&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Polyrepos&lt;/strong&gt; make ownership obvious. This repository belongs to that team. Permissions are simple. But dependency versions drift: one service is on version 1 of the shared library, another on version 4, and nobody wants to upgrade.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Monorepos&lt;/strong&gt; encourage everyone to stay on the latest version of internal code, because there's only one version. Ownership needs to be made explicit, usually with a &lt;code&gt;CODEOWNERS&lt;/code&gt; file that maps folders to teams so the right people review the right changes.&lt;/p&gt;
&lt;h2&gt;Tools that make monorepos work&lt;/h2&gt;
&lt;p&gt;You'll want a build tool that understands the graph and caches results:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nx&lt;/strong&gt; and &lt;strong&gt;Turborepo&lt;/strong&gt;: popular in the JavaScript/TypeScript world, easy to adopt, with remote caching.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bazel&lt;/strong&gt;: extremely powerful and language-agnostic, used at very large scale. Also a significant investment to learn and maintain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pants&lt;/strong&gt; and &lt;strong&gt;Buck2&lt;/strong&gt;: other graph-based build systems, strong for Python and polyglot repos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built-in path filters&lt;/strong&gt; in GitHub Actions or GitLab CI: the simplest option, triggering jobs only when certain folders change. Good enough for small monorepos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Remote caching&lt;/strong&gt; is the real speed-up: if the same code was already built and tested by someone else's pipeline, reuse the result instead of doing it again.&lt;/p&gt;
&lt;h2&gt;Moving between the two&lt;/h2&gt;
&lt;p&gt;Migrations in both directions happen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Polyrepo to monorepo&lt;/strong&gt;: you can preserve history by merging repositories into subfolders. The hard part isn't Git, it's agreeing on shared tooling, build setup and CI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Monorepo to polyrepo&lt;/strong&gt;: tools like &lt;code&gt;git filter-repo&lt;/code&gt; can split a folder into its own repository with history. The hard part is untangling shared code that suddenly needs versioning.&lt;/p&gt;
&lt;p&gt;Whichever direction, migrate gradually, one service or team at a time.&lt;/p&gt;
&lt;h2&gt;So, which one?&lt;/h2&gt;
&lt;p&gt;My rough guide:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Small team, a handful of services, shared code&lt;/strong&gt;: a monorepo is often simpler.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Many independent teams, different languages, little shared code&lt;/strong&gt;: polyrepos are fine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Large organisation with heavy code sharing&lt;/strong&gt;: a monorepo can be great, but only with serious build tooling and a team that owns it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Honestly, the structure isn't as important as the discipline around it: clear ownership, fast pipelines, and a reliable way to update shared code.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: choose the layout that makes your most common change easy. Then invest in tooling so the uncommon ones don't hurt.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>MCP: plugging AI into your infrastructure</title>
      <link>https://deslypeter.com/writing/mcp-plugging-ai-into-infrastructure</link>
      <guid>https://deslypeter.com/writing/mcp-plugging-ai-into-infrastructure.html?lang=en</guid>
      <description>The Model Context Protocol lets AI talk to Kubernetes, Terraform and GitHub. Powerful, and risky.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;For a long time, using AI for infrastructure work meant copying and pasting. Copy the error into the chat, copy the answer back into the terminal. The AI could only see what you showed it.&lt;/p&gt;
&lt;p&gt;The Model Context Protocol, or MCP, changes that. It gives AI assistants a standard way to connect to tools and data. And for DevOps, that means an assistant that can actually look at your cluster, your pipelines and your dashboards.&lt;/p&gt;
&lt;h2&gt;What MCP is, without the hype&lt;/h2&gt;
&lt;p&gt;MCP is an open protocol, introduced by Anthropic in late 2024 and now supported by most major AI tools. Think of it like USB for AI: instead of every AI app building its own integration with every tool, tools expose an &lt;strong&gt;MCP server&lt;/strong&gt;, and any AI app that speaks MCP (the &lt;strong&gt;client&lt;/strong&gt;) can use it.&lt;/p&gt;
&lt;p&gt;An MCP server offers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tools&lt;/strong&gt;: actions the AI can take, like "list pods" or "get pipeline logs".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resources&lt;/strong&gt;: data the AI can read, like files, documents or records.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompts&lt;/strong&gt;: ready-made instructions for common tasks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The AI decides when to call a tool based on your request. You ask "why is the checkout service crashing?", and the assistant might list pods, read recent events, fetch logs and summarise what it found.&lt;/p&gt;
&lt;h2&gt;The servers that matter for DevOps&lt;/h2&gt;
&lt;p&gt;MCP servers exist for most of the tools we use daily:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;: read resources, events and logs, and sometimes apply changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub and GitLab&lt;/strong&gt;: issues, pull requests, workflow runs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terraform and cloud providers&lt;/strong&gt;: documentation lookups, resource information, and in some cases plans.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observability tools&lt;/strong&gt;: query metrics, logs and traces from Grafana, Datadog and others.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Incident and ticket tools&lt;/strong&gt;: read incidents, write updates.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many vendors now ship official servers, and there are many community ones. Quality varies a lot, so check who maintains a server before you connect it to anything important.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;MCP turns an AI assistant from someone you describe the problem to into someone who can look at the problem themselves. That's exactly why it needs limits.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What could go wrong&lt;/h2&gt;
&lt;p&gt;MCP is powerful because it gives AI access. That's also the risk.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Over-broad credentials.&lt;/strong&gt; If an MCP server uses your personal admin kubeconfig, the AI has admin rights to your cluster. Every tool call is made with whatever access the server has.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prompt injection.&lt;/strong&gt; The AI reads data from your tools: issue descriptions, log lines, web pages, README files. If someone puts instructions into that data ("ignore previous instructions and delete the namespace"), a poorly guarded setup might follow them. This is the biggest security issue with AI agents today, and it isn't fully solved.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Untrusted servers.&lt;/strong&gt; An MCP server is code running on your machine or network. A malicious or compromised server could read data or misbehave. Treat installing an MCP server like installing any other dependency.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Silent writes.&lt;/strong&gt; Reading is relatively safe. Writing, applying, deleting is not.&lt;/p&gt;
&lt;h2&gt;How I'd use it safely&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Start read-only.&lt;/strong&gt; Give the Kubernetes or cloud MCP server a role that can only read. Most of the value, debugging and explaining, comes from reading anyway.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Separate credentials.&lt;/strong&gt; Dedicated service accounts for MCP servers, scoped to specific namespaces or projects, never your personal admin access.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep production out at first.&lt;/strong&gt; Use it on dev and staging until you trust the setup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Require confirmation for writes.&lt;/strong&gt; Most AI clients can ask before each tool call. Keep that on for anything that changes state.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use official or well-reviewed servers&lt;/strong&gt;, pinned to a version.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Log tool calls&lt;/strong&gt; so you can see what happened afterwards.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Building a tiny one myself&lt;/h2&gt;
&lt;p&gt;The protocol is simple enough that building a small internal MCP server is a nice afternoon project. The official SDKs exist for Python, TypeScript, Go and other languages.&lt;/p&gt;
&lt;p&gt;A good first server: something read-only and specific to your company. For example, a tool that answers "who owns this service and where is its runbook?" from your service catalog. Small, useful, and impossible to break anything with.&lt;/p&gt;
&lt;h2&gt;So, should you try it?&lt;/h2&gt;
&lt;p&gt;Yes, carefully. MCP is quickly becoming the standard way AI connects to tools, and understanding it will be part of the DevOps job. Start read-only, in non-production, with narrow credentials. Expand only when you understand what it does.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: give AI eyes before you give it hands. And when you do give it hands, make sure they can't reach production by accident.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>AI writes the code. Who checks it?</title>
      <link>https://deslypeter.com/writing/ai-writes-the-code-who-checks-it</link>
      <guid>https://deslypeter.com/writing/ai-writes-the-code-who-checks-it.html?lang=en</guid>
      <description>AI-generated code brings new risks, including packages that don't exist. How to catch them in CI.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;A growing share of the code in our repositories wasn't typed by a human. AI assistants write functions, tests, Dockerfiles and Terraform. Agents open whole pull requests. That's a huge productivity boost.&lt;/p&gt;
&lt;p&gt;The increase in code volume means there's more to review, but the time available hasn't changed. Plus, AI-generated code has its own kind of mistakes. So the pipeline needs to do more checking.&lt;/p&gt;
&lt;h2&gt;The new risks in plain words&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Insecure patterns that look fine.&lt;/strong&gt; AI learned from public code, and a lot of public code is insecure. SQL built from strings, disabled TLS verification, overly broad permissions, secrets in config files.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Outdated advice.&lt;/strong&gt; Deprecated APIs, old library versions with known vulnerabilities, Kubernetes manifests using removed API versions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hallucinated dependencies.&lt;/strong&gt; The AI suggests importing a package that sounds right but doesn't exist.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;License problems.&lt;/strong&gt; Generated code that closely resembles code under a restrictive license.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bigger changes, less review.&lt;/strong&gt; When generating code is easy, pull requests get larger, and large pull requests get worse reviews.&lt;/p&gt;
&lt;h2&gt;"Slopsquatting": installing a package an AI invented&lt;/h2&gt;
&lt;p&gt;This one deserves its own section because it's new and sneaky.&lt;/p&gt;
&lt;p&gt;Language models sometimes invent package names. Plausible ones, like &lt;code&gt;requests-oauth-helper&lt;/code&gt; or &lt;code&gt;express-secure-session&lt;/code&gt;. Researchers noticed that the same invented names come up repeatedly. So attackers can register those names on npm or PyPI and fill them with malware. When a developer, or an agent, trusts the suggestion and installs the package, the attacker's code runs.&lt;/p&gt;
&lt;p&gt;It's a twist on typosquatting, and the community nicknamed it &lt;strong&gt;slopsquatting&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;An AI suggesting a package isn't a recommendation. It's a guess, and attackers are betting on those guesses.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The checks I'd add to the pipeline&lt;/h2&gt;
&lt;p&gt;None of this needs exotic tools. It needs the normal DevSecOps toolbox, actually switched on and enforced:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dependency checks.&lt;/strong&gt; Software composition analysis (Dependabot alerts, OSV-Scanner, Snyk, Trivy) for known vulnerabilities. Plus tools like Socket that flag suspicious packages: brand new, few downloads, install scripts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A policy for new dependencies.&lt;/strong&gt; Adding a new package should be visible in the pull request and get a human look. Some teams only allow packages from an internal proxy or registry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Static analysis (SAST).&lt;/strong&gt; Semgrep, CodeQL or similar to catch injection, insecure crypto and dangerous functions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secret scanning&lt;/strong&gt; on every push, with push protection where available.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IaC scanning.&lt;/strong&gt; Checkov, Trivy or tflint for Terraform and Kubernetes manifests: open security groups, privileged containers, missing encryption.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;License scanning&lt;/strong&gt; if license compliance matters to your company.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tests, actually required.&lt;/strong&gt; The best defence against confident wrong code is a test that fails.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Reviewing when there's too much to review&lt;/h2&gt;
&lt;p&gt;Tools catch patterns. Humans still need to catch logic. A few habits help:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Keep pull requests small&lt;/strong&gt;, even when AI makes big ones easy. Ask the agent to split work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mark AI-generated changes&lt;/strong&gt; so reviewers know to look more carefully. Some teams use a label or commit trailer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review the tests first.&lt;/strong&gt; If the tests are weak, the code passing them means little.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ask "why" for every new dependency.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don't let AI review its own code alone.&lt;/strong&gt; AI review tools are a useful extra pair of eyes, not a replacement for a human approval.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, who checks it?&lt;/h2&gt;
&lt;p&gt;The pipeline checks what it can automatically, and a human checks what really matters. That's how it's always worked. AI just makes it harder because there's more code, written faster, by something that never hesitates.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: AI can write the code. Your pipeline and your reviewers still have to earn the right to ship it.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Too many alerts: can AI cut the noise?</title>
      <link>https://deslypeter.com/writing/too-many-alerts-aiops</link>
      <guid>https://deslypeter.com/writing/too-many-alerts-aiops.html?lang=en</guid>
      <description>When everything alerts, nothing does. A look at AIOps and smarter alerting.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Every on-call engineer knows the feeling. Your phone buzzes. You check it: CPU at 85% on a node that's been at 85% for a year. Buzz again: a disk warning that resolves itself in two minutes. Buzz: ten alerts for the same database problem, one from each service that uses it.&lt;/p&gt;
&lt;p&gt;After a few weeks of this, people stop reacting. The one alert that really matters then gets ignored too. That's alert fatigue, and it's dangerous.&lt;/p&gt;
&lt;p&gt;AIOps tools promise to fix it with machine learning. Do they?&lt;/p&gt;
&lt;h2&gt;Why static thresholds fail&lt;/h2&gt;
&lt;p&gt;Most alerts are built like this: "if metric X is above Y for Z minutes, page someone." Simple and predictable. Also frequently wrong:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Normal changes over time.&lt;/strong&gt; Traffic at 3 p.m. on Monday looks nothing like 3 a.m. on Sunday. One threshold can't fit both.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Thresholds are guesses.&lt;/strong&gt; Someone picked 80% years ago, and nobody remembers why.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Causes, not symptoms.&lt;/strong&gt; High CPU isn't a problem if users are happy. Slow checkout is a problem even if CPU is fine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One failure, many alerts.&lt;/strong&gt; A database outage triggers alerts in every dependent service.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What AIOps tools promise&lt;/h2&gt;
&lt;p&gt;"AIOps" is a broad marketing term, but it usually covers a few real features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Anomaly detection.&lt;/strong&gt; Instead of fixed thresholds, the tool learns what's normal for each metric, including daily and weekly patterns, and alerts on unusual behaviour.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correlation and grouping.&lt;/strong&gt; Related alerts from different services are grouped into one incident, ideally with a guess at the root cause.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deduplication and suppression.&lt;/strong&gt; Flapping alerts and duplicates are merged or muted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Summaries.&lt;/strong&gt; With LLMs, many tools now write a plain-language explanation of what's going on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Datadog, Dynatrace, New Relic, Grafana, PagerDuty, BigPanda and others all offer some version of these features.&lt;/p&gt;
&lt;h2&gt;What they actually deliver&lt;/h2&gt;
&lt;p&gt;In my experience, honestly: some real value, and less magic than the sales deck.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Grouping and correlation&lt;/strong&gt; is where I see the most benefit. Turning forty alerts into one incident with a timeline is a big improvement for whoever's on call.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anomaly detection&lt;/strong&gt; is useful for metrics with strong patterns, like traffic and business numbers, and noisy for everything else. "Anomalous" doesn't mean "bad". A marketing campaign is an anomaly too.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI summaries&lt;/strong&gt; help get oriented faster, with the usual caveat: check the evidence.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI can sort the noise, but it can't decide what you should care about. That part is still your job.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Fixing the basics first&lt;/h2&gt;
&lt;p&gt;Before buying anything, most teams can remove half their alert noise with discipline alone:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Alert on symptoms users feel&lt;/strong&gt;: error rate, latency, availability. Ideally based on SLOs and burn rates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Every page must need a human action now.&lt;/strong&gt; If not, make it a ticket or a dashboard, not a page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Every alert has an owner and a runbook.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Group and inhibit&lt;/strong&gt; in your alerting tool. Alertmanager can suppress downstream alerts when the upstream one is firing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review alerts monthly.&lt;/strong&gt; Which ones fired? Which were useful? Delete or fix the rest.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AIOps on top of a messy alert setup just gives you organised mess.&lt;/p&gt;
&lt;h2&gt;Measuring if an alert was worth it&lt;/h2&gt;
&lt;p&gt;The metric I like most is &lt;strong&gt;actionability rate&lt;/strong&gt;: of all pages last month, how many led to someone actually doing something? If it's below about half, you have a noise problem.&lt;/p&gt;
&lt;p&gt;Other useful numbers: pages per on-call shift, pages outside working hours, and time to acknowledge. If those trend in the right direction, whatever you changed is working, with or without AI.&lt;/p&gt;
&lt;h2&gt;So, can AI cut the noise?&lt;/h2&gt;
&lt;p&gt;Partly. It's genuinely good at grouping and summarising. But the biggest wins still come from deciding, as a team, what deserves to wake someone up. Do that first, then let AI help with the rest.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: the quietest pager comes from good alert design. AI is a helpful filter, not a substitute for deciding what matters.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>GPUs for DevOps people</title>
      <link>https://deslypeter.com/writing/gpus-for-devops-people</link>
      <guid>https://deslypeter.com/writing/gpus-for-devops-people.html?lang=en</guid>
      <description>GPUs are now part of the infrastructure. What a DevOps engineer needs to know about them.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;For most of my career, GPUs were something gamers and researchers worried about. The infrastructure I ran was CPUs, memory, disks and networks. Then AI happened, and suddenly teams were asking for GPU nodes, model serving and "can we run this LLM ourselves?"&lt;/p&gt;
&lt;p&gt;If you're a DevOps engineer, GPUs are probably on your desk already, or they will be soon. Here's what I think you need to know.&lt;/p&gt;
&lt;h2&gt;Why GPUs landed on my desk&lt;/h2&gt;
&lt;p&gt;A CPU has a few very powerful cores. A GPU has thousands of smaller cores that do the same simple maths in parallel. Training and running neural networks is mostly that kind of maths: huge matrix multiplications. So a GPU can do in seconds what would take a CPU minutes.&lt;/p&gt;
&lt;p&gt;For DevOps, that brings new questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How do we give workloads access to GPUs?&lt;/li&gt;
&lt;li&gt;How do we share them so they aren't sitting idle?&lt;/li&gt;
&lt;li&gt;How do we monitor them?&lt;/li&gt;
&lt;li&gt;How do we stop the cloud bill from exploding?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;GPU basics in five minutes&lt;/h2&gt;
&lt;p&gt;A few terms that come up constantly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;VRAM&lt;/strong&gt;: the GPU's own memory. For LLMs, this is usually the limit. The model weights must fit, plus room for the requests being processed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CUDA&lt;/strong&gt;: NVIDIA's software platform. Most AI software depends on it, which is why NVIDIA dominates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drivers&lt;/strong&gt;: GPUs need specific drivers on the host, matching the CUDA version your software expects. Version mismatches are a classic source of pain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generations&lt;/strong&gt;: data centre GPUs like the NVIDIA A100, H100, H200 and newer, plus smaller and cheaper ones like the L4 and T4. More expensive isn't always better for your workload.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Sharing one GPU: MIG and time-slicing&lt;/h2&gt;
&lt;p&gt;A full GPU is often far more than one small model needs. Sharing options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MIG (Multi-Instance GPU)&lt;/strong&gt;: supported on higher-end NVIDIA GPUs. Splits one GPU into several fully isolated slices, each with its own memory and compute. Good isolation, fixed sizes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time-slicing&lt;/strong&gt;: multiple workloads take turns on the same GPU. More flexible, but no memory isolation, so one greedy workload can affect others.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MPS (Multi-Process Service)&lt;/strong&gt;: lets processes share a GPU more efficiently, with some limits.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For inference of small models, sharing can cut costs dramatically.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;An idle GPU is the most expensive thing in your data centre doing nothing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Running them on Kubernetes&lt;/h2&gt;
&lt;p&gt;On Kubernetes, the usual setup:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;A GPU node pool&lt;/strong&gt; with taints, so normal workloads don't land on expensive GPU nodes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The NVIDIA GPU Operator&lt;/strong&gt;, which installs drivers, the container toolkit, the device plugin and monitoring on GPU nodes automatically.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pods request GPUs&lt;/strong&gt; like any other resource:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;resources:
  limits:
    nvidia.com/gpu: 1
&lt;/code&gt;&lt;/pre&gt;
&lt;ol start="4"&gt;
&lt;li&gt;&lt;strong&gt;Tolerations and node selectors&lt;/strong&gt; so GPU pods land on the right nodes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Kubernetes now has &lt;strong&gt;Dynamic Resource Allocation (DRA)&lt;/strong&gt;, which is stable and lets workloads request specific GPU models, minimum memory sizes, or slices of a GPU. More tools are likely to follow this trend.&lt;/p&gt;
&lt;p&gt;On the cloud, managed node pools and &lt;strong&gt;Karpenter&lt;/strong&gt; (on AWS) can add GPU nodes only when GPU pods are waiting, and remove them afterwards.&lt;/p&gt;
&lt;h2&gt;Monitoring GPUs&lt;/h2&gt;
&lt;p&gt;Normal node monitoring doesn't tell you much about GPUs. Add the &lt;strong&gt;NVIDIA DCGM exporter&lt;/strong&gt; for Prometheus, which gives you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GPU utilisation&lt;/li&gt;
&lt;li&gt;Memory used&lt;/li&gt;
&lt;li&gt;Temperature and power&lt;/li&gt;
&lt;li&gt;Errors (yes, GPUs fail too, and some errors mean the node should be drained)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The most important dashboard: utilisation over time per workload. It shows immediately who's paying for GPUs and not using them.&lt;/p&gt;
&lt;h2&gt;Paying for GPUs that do nothing&lt;/h2&gt;
&lt;p&gt;GPU costs need active management:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scale to zero&lt;/strong&gt; when there's no traffic, if your startup time allows it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Right-size&lt;/strong&gt;: a smaller GPU, or a slice of one, is often enough for inference.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spot or preemptible instances&lt;/strong&gt; for training and batch jobs that can be interrupted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schedule&lt;/strong&gt; experiments and batch work for off-peak hours.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Showback&lt;/strong&gt;: make GPU costs visible per team. Behaviour changes quickly when people see the number.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, do DevOps engineers need to learn GPUs?&lt;/h2&gt;
&lt;p&gt;If your company does anything serious with AI, yes. You don't need to understand the maths, but you need to know how to schedule, share, monitor and pay for GPUs. That knowledge is quickly becoming a core infrastructure skill.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: GPUs are just another resource with a very high price tag. Treat them with the same discipline as everything else, only more so.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Will AI take my DevOps job? One year later</title>
      <link>https://deslypeter.com/writing/will-ai-take-my-devops-job-one-year-later</link>
      <guid>https://deslypeter.com/writing/will-ai-take-my-devops-job-one-year-later.html?lang=en</guid>
      <description>A year ago I made predictions. Time to check which ones came true.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;A year ago I wrote &lt;a href="https://deslypeter.com/writing/will-ai-take-my-devops-job.html"&gt;Will AI take my DevOps job?&lt;/a&gt;. My answer back then: parts of it, yes. The repetitive parts. But not the context, the responsibility, or the talking to people. I ended with "AI proposes, humans decide."&lt;/p&gt;
&lt;p&gt;Looking back is more interesting than making predictions. Here's what actually happened.&lt;/p&gt;
&lt;h2&gt;What I predicted&lt;/h2&gt;
&lt;p&gt;In short, I said:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;AI would write more of the boring configuration.&lt;/li&gt;
&lt;li&gt;AI would get very good at reading logs.&lt;/li&gt;
&lt;li&gt;Agents would start doing small fixes on their own.&lt;/li&gt;
&lt;li&gt;Context, responsibility and communication would stay human.&lt;/li&gt;
&lt;li&gt;A new part of the job would be building guardrails for AI agents.&lt;/li&gt;
&lt;li&gt;MLOps would become more important.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;What actually happened&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Boring configuration: yes, completely.&lt;/strong&gt; Writing YAML from scratch already feels old-fashioned. Reviewing it is the job now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reading logs: yes, and more.&lt;/strong&gt; AI connected directly to observability tools, through MCP and vendor integrations, changed the first minutes of an incident. Instead of me searching, I ask questions and check the evidence.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agents doing small fixes: faster than I expected.&lt;/strong&gt; Agents that read a failing build, find the cause and open a pull request went from a demo to a normal part of the workflow for many teams. &lt;strong&gt;Context and responsibility: still human.&lt;/strong&gt; I haven't seen any AI take ownership of a production decision, and I don't want to. The incidents I remember from this year were all decided by people. AI made the investigation faster, not the accountability lighter.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Guardrails: this became real work.&lt;/strong&gt; Permissions for agents, sandboxes, review rules, deciding which tools an AI may call. This took more of my time than I expected, and it's very DevOps: building safety rails around powerful automation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MLOps: yes.&lt;/strong&gt; Everyone wants AI features, and someone has to deploy, monitor and pay for them. GPUs, model serving and LLM observability became normal infrastructure topics.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The job didn't shrink. It moved up a level, exactly as I hoped, but faster than I expected.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What I got wrong&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I underestimated how quickly agents would improve.&lt;/li&gt;
&lt;li&gt;I didn't expect security, especially prompt injection, to become such a big part of the AI conversation.&lt;/li&gt;
&lt;li&gt;I thought adoption would be slower in conservative companies. In some places it was, in others it was faster than anything I've seen.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The guardrails I built&lt;/h2&gt;
&lt;p&gt;The practical lessons from building guardrails this year:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agents work on branches, never directly on main.&lt;/li&gt;
&lt;li&gt;No production credentials for AI tools, ever.&lt;/li&gt;
&lt;li&gt;Narrow, short-lived tokens per task.&lt;/li&gt;
&lt;li&gt;Branch protection and required checks apply to bots like to people.&lt;/li&gt;
&lt;li&gt;Read-only access first, write access only where it's proven useful.&lt;/li&gt;
&lt;li&gt;Log every action an agent takes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of that is new. It's least privilege and good CI, applied to a new kind of user.&lt;/p&gt;
&lt;h2&gt;What I'd tell someone starting today, updated&lt;/h2&gt;
&lt;p&gt;The advice from last year still stands: learn the fundamentals, use AI daily, practise the human skills. I'd add two things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn to review well.&lt;/strong&gt; Reading a diff critically and quickly is now one of the most valuable skills in DevOps.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn a bit of security.&lt;/strong&gt; Understanding permissions, supply chain risks and prompt injection makes you the person teams trust with AI tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, did AI take my job?&lt;/h2&gt;
&lt;p&gt;Not yet. It took some of my tasks, and honestly, I don't miss them. What's left is more interesting: designing systems, making decisions, and keeping AI on a safe track.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take, one year later: AI proposes, humans decide. The proposals got much better. The deciding is still mine.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>What's new in Kubernetes, and what I'm upgrading for</title>
      <link>https://deslypeter.com/writing/whats-new-in-kubernetes</link>
      <guid>https://deslypeter.com/writing/whats-new-in-kubernetes.html?lang=en</guid>
      <description>The release notes are long. These are the changes that matter for day-to-day work.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Kubernetes releases a new minor version roughly three times a year. Every release comes with a long changelog, a blog post full of enhancement numbers, and a list of features moving from alpha to beta to stable. It's easy to skim it and move on.&lt;/p&gt;
&lt;p&gt;But a few changes in each release really do affect how we run clusters. And some of them, the removals, can break things on upgrade day. Here's how I read a release, and the recent changes I think matter most.&lt;/p&gt;
&lt;h2&gt;How I read a Kubernetes release&lt;/h2&gt;
&lt;p&gt;I look at four things, in this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Removals and deprecations.&lt;/strong&gt; What will break if I upgrade? This is the only section that can hurt you.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Features going stable (GA).&lt;/strong&gt; These are safe to rely on and usually mean I can drop a workaround or an add-on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Features going beta.&lt;/strong&gt; Often enabled by default now, worth testing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Everything else.&lt;/strong&gt; Interesting, but rarely urgent.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Recent highlights worth knowing&lt;/h2&gt;
&lt;p&gt;Over the last few releases, several long-awaited features have become stable. These are the ones I see making a real difference:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Native sidecar containers.&lt;/strong&gt; Sidecars (log shippers, proxies, agents) used to be ordinary containers with no guaranteed start or stop order. Now you can declare them as init containers with &lt;code&gt;restartPolicy: Always&lt;/code&gt;: they start before the main container and stop after it. That fixes a whole family of annoying bugs, like jobs that never finish because the sidecar keeps running.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In-place Pod resource resize.&lt;/strong&gt; You can change a running pod's CPU and memory requests and limits without restarting it. Great for workloads that need more resources at startup, or for vertical autoscaling without disruption.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dynamic Resource Allocation (DRA).&lt;/strong&gt; A flexible way to request specialised hardware, especially GPUs, with more detail than a simple count. Important for anyone running AI workloads.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gateway API maturity.&lt;/strong&gt; Not part of core Kubernetes releases, but tied to them in practice. With ingress-nginx retired, Gateway API is now the default way to get traffic into a cluster. I wrote about that migration in &lt;a href="https://deslypeter.com/writing/goodbye-ingress-nginx-hello-gateway-api.html"&gt;Goodbye ingress-nginx, hello Gateway API&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Removal of old foundations.&lt;/strong&gt; The move away from cgroup v1 and older container runtime versions has continued. If your nodes run an old Linux distribution or an old containerd, check the release notes carefully before upgrading.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A Kubernetes upgrade rarely breaks because of new features. It breaks because of the old thing you forgot you were still using.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;My upgrade checklist&lt;/h2&gt;
&lt;p&gt;Whatever the release, my routine is the same:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Read the deprecations and removals.&lt;/strong&gt; All of them, even if it's boring.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scan for deprecated APIs&lt;/strong&gt; in the cluster and in your manifests with tools like &lt;strong&gt;Pluto&lt;/strong&gt; or &lt;strong&gt;kubent&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;pluto detect-all-in-cluster
pluto detect-files -d ./manifests
&lt;/code&gt;&lt;/pre&gt;
&lt;ol start="3"&gt;
&lt;li&gt;&lt;strong&gt;Check your add-ons.&lt;/strong&gt; Ingress or Gateway controllers, CNI, CSI drivers, cert-manager, monitoring agents, service mesh. Each one has its own supported Kubernetes versions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upgrade a non-production cluster first&lt;/strong&gt; and let it run for a while.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upgrade the control plane, then node pools&lt;/strong&gt;, one minor version at a time. Kubernetes doesn't support skipping minor versions for the control plane.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Watch PodDisruptionBudgets.&lt;/strong&gt; A PDB that allows zero disruptions will block node drains.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Have a rollback plan for nodes.&lt;/strong&gt; Control planes usually can't be downgraded, but node pools can be recreated.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;How often to upgrade&lt;/h2&gt;
&lt;p&gt;Each Kubernetes minor version gets about a year of patch support upstream. Managed services like EKS, AKS and GKE have their own windows, and some charge extra for extended support of old versions.&lt;/p&gt;
&lt;p&gt;My rule: stay within one or two versions of the latest. Upgrading regularly in small steps is much less painful than a big jump every two years, when everything is deprecated at once.&lt;/p&gt;
&lt;h2&gt;Worth upgrading now?&lt;/h2&gt;
&lt;p&gt;Usually yes, once the first patch release (x.y.1 or x.y.2) is out and your managed provider supports it. Stable features like native sidecars and in-place resize are worth having, and staying current means security fixes keep coming.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: read the removals first, test on a cluster you don't love, and upgrade often enough that it never becomes a project.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Goodbye ingress-nginx, hello Gateway API</title>
      <link>https://deslypeter.com/writing/goodbye-ingress-nginx-hello-gateway-api</link>
      <guid>https://deslypeter.com/writing/goodbye-ingress-nginx-hello-gateway-api.html?lang=en</guid>
      <description>The most popular way into a Kubernetes cluster is retired. What that means, what Gateway API is, and how I'd move over without a weekend of downtime.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;For years, the first thing I installed on almost every new Kubernetes cluster was ingress-nginx. Before the apps, before the monitoring, before anything interesting. It was the front door. Traffic came in, ingress-nginx sent it to the right place, and I rarely had to think about it.&lt;/p&gt;
&lt;p&gt;That front door is now officially unmaintained. In November 2025, the Kubernetes project announced that ingress-nginx would be retired, with best-effort maintenance only until March 2026. That date has passed. If you're still running it, and a lot of clusters are, here's what that means and how I'd get out.&lt;/p&gt;
&lt;h2&gt;What actually happened&lt;/h2&gt;
&lt;p&gt;ingress-nginx was a community project, kept alive for years by a very small group of volunteers in their spare time. That's not a criticism. It's the uncomfortable truth behind a lot of the software we all depend on.&lt;/p&gt;
&lt;p&gt;Security made it worse. In March 2025, a set of serious vulnerabilities nicknamed &lt;strong&gt;IngressNightmare&lt;/strong&gt; showed that a bug in ingress-nginx could, in the worst case, let an attacker take over a whole cluster. Fixing that kind of thing properly takes time and people the project simply didn't have. So Kubernetes SIG Network and the Security Response Committee made the honest call: retire it. A planned successor, a project called InGate, never got far enough along and is being retired too.&lt;/p&gt;
&lt;p&gt;Two things are easy to mix up here, so let me be clear:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The ingress-nginx controller is retired.&lt;/strong&gt; No new releases, no bug fixes, no security patches. The repositories are read-only.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Kubernetes Ingress API is not.&lt;/strong&gt; The &lt;code&gt;Ingress&lt;/code&gt; resource still works. It's just frozen: no new features are coming.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The commercial NGINX Ingress Controller from F5 is a different product.&lt;/strong&gt; Same family name, separate code, still maintained.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Do I have to panic?&lt;/h2&gt;
&lt;p&gt;No. Your cluster didn't break when the maintenance ended. Existing installs keep running, and the images and Helm charts are still available.&lt;/p&gt;
&lt;p&gt;But think about what this component is. It's the one thing in your cluster that faces the internet directly. It parses every request from strangers. And from now on, when the next vulnerability is found, nobody will fix it. That's not a "someday" problem. It's a "this quarter" problem.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Running unpatched software at the edge of your cluster is like leaving the front door unlocked because it has never been robbed yet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;First, find out if you're affected at all. This command, from the official announcement, lists any ingress-nginx pods across the cluster:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;kubectl get pods --all-namespaces \
  --selector app.kubernetes.io/name=ingress-nginx
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If that returns nothing, you can relax and maybe skip to the end. If it returns pods, keep reading.&lt;/p&gt;
&lt;h2&gt;Gateway API, in plain words&lt;/h2&gt;
&lt;p&gt;Gateway API is the official successor to Ingress. It isn't brand new, either: the core became stable back in 2023, and almost every major networking project and cloud provider supports it today.&lt;/p&gt;
&lt;p&gt;The biggest change is that one big object becomes a few smaller ones, each owned by the right person:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GatewayClass&lt;/strong&gt;: which implementation runs the traffic, for example Envoy Gateway or Cilium. Usually set up once by the platform team.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gateway&lt;/strong&gt;: the actual entry point. Which ports, which hostnames, which TLS certificates. Owned by whoever runs the cluster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTTPRoute&lt;/strong&gt;: the routing rules for one app. "Send &lt;code&gt;/api&lt;/code&gt; to this service." Owned by the app team, in their own namespace.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With Ingress, all of that was squeezed into one resource, and everything the spec didn't cover was hidden in annotations. Anyone who has seen an Ingress with fifteen &lt;code&gt;nginx.ingress.kubernetes.io/...&lt;/code&gt; lines knows what I mean. Those annotations only worked with one controller, so "portable Kubernetes" stopped at the front door.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Ingress&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Gateway API&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Structure&lt;/td&gt;
&lt;td&gt;One resource does everything&lt;/td&gt;
&lt;td&gt;Separate pieces for platform and app teams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Advanced features&lt;/td&gt;
&lt;td&gt;Controller-specific annotations&lt;/td&gt;
&lt;td&gt;Built into the spec: header matching, traffic splitting, redirects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Protocols&lt;/td&gt;
&lt;td&gt;HTTP and HTTPS&lt;/td&gt;
&lt;td&gt;HTTP, gRPC, TLS, and TCP/UDP with some implementations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Portability&lt;/td&gt;
&lt;td&gt;Low once annotations creep in&lt;/td&gt;
&lt;td&gt;Much better: the same YAML works across implementations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Future&lt;/td&gt;
&lt;td&gt;Frozen&lt;/td&gt;
&lt;td&gt;Where all the new work happens&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Here's what it looks like in practice. First the Gateway, set up once by the platform team:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: web
  namespace: infra
spec:
  gatewayClassName: eg          # e.g. Envoy Gateway
  listeners:
  - name: https
    protocol: HTTPS
    port: 443
    hostname: "*.example.com"
    tls:
      mode: Terminate
      certificateRefs:
      - name: example-com-tls
    allowedRoutes:
      namespaces:
        from: All               # tighten this with a label selector later
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then each app team attaches its own route, in its own namespace:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: shop
  namespace: shop
spec:
  parentRefs:
  - name: web
    namespace: infra
  hostnames: ["shop.example.com"]
  rules:
  - matches:
    - path: { type: PathPrefix, value: /api }
    backendRefs:
    - name: shop-api
      port: 8080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The app team never touches the Gateway, and the platform team never has to approve a routing change for someone else's service. That separation is what I like most. It matches how teams actually work.&lt;/p&gt;
&lt;h2&gt;Choosing what replaces it&lt;/h2&gt;
&lt;p&gt;Gateway API is only a specification. You still need something to run it. The good news is there are plenty of solid options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Envoy Gateway&lt;/strong&gt;: a clean, focused choice if you just want a good front door. My default suggestion for most teams.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cilium&lt;/strong&gt;: makes sense if you already use Cilium for cluster networking. One less component.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Istio&lt;/strong&gt;: if you already run a service mesh, or plan to.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NGINX Gateway Fabric&lt;/strong&gt; or &lt;strong&gt;Traefik&lt;/strong&gt;: if your team wants to stay close to what it already knows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your cloud provider's Gateway&lt;/strong&gt;: GKE, AWS and Azure all have managed options, which means one less thing to patch.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don't spend weeks comparing benchmarks. For most clusters, the honest deciding question is: what does my team already understand, and what will we still enjoy maintaining in three years?&lt;/p&gt;
&lt;h2&gt;How I'd migrate, step by step&lt;/h2&gt;
&lt;p&gt;The trick is to never do a big switch-over. Run both side by side, move traffic slowly, and keep a way back.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Take stock.&lt;/strong&gt; List every Ingress and, more importantly, every annotation in use. This one-liner gives you a quick count:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;bash
   kubectl get ingress -A -o yaml \
     | grep -o 'nginx.ingress.kubernetes.io/[a-z-]*' \
     | sort | uniq -c | sort -rn&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The annotations are where the real work is hiding.&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Install the new implementation next to the old one.&lt;/strong&gt; It gets its own load balancer and its own IP. Nothing changes for users yet.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Convert with ingress2gateway.&lt;/strong&gt; The Kubernetes project's own tool reached version 1.0 in March 2026. It reads your existing Ingress resources and writes the Gateway API equivalents:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;bash
   ingress2gateway print --providers=ingress-nginx \
     --all-namespaces -o yaml &amp;gt; gateway-resources.yaml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Treat the output as a first draft, not the final answer. Review it like you'd review a pull request.&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fix by hand what the tool can't.&lt;/strong&gt; Custom snippets, authentication, rate limiting, unusual rewrites and regex paths usually need manual work. Many of these become implementation-specific policies instead of annotations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Test before DNS changes.&lt;/strong&gt; Point requests directly at the new IP and check everything works:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;bash
   curl --resolve shop.example.com:443:NEW_GATEWAY_IP \
     https://shop.example.com/api/health&lt;/code&gt;&lt;/p&gt;
&lt;ol start="6"&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Move traffic gradually.&lt;/strong&gt; Lower your DNS TTLs a day before, then move one hostname at a time, starting with the least important. Keep ingress-nginx running so rolling back is just a DNS change.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Clean up.&lt;/strong&gt; Once everything has run quietly for a while, remove ingress-nginx and its Ingress resources. Don't forget the tools around it: cert-manager and ExternalDNS both support Gateway API, but they need to be configured for it.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;What tends to bite&lt;/h2&gt;
&lt;p&gt;A few things are easy to underestimate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Snippet annotations.&lt;/strong&gt; If someone put raw NGINX configuration into &lt;code&gt;configuration-snippet&lt;/code&gt; years ago, there's no direct translation. You first need to work out what it was even for. Sometimes the answer is "nothing anymore."&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rewrites.&lt;/strong&gt; &lt;code&gt;rewrite-target&lt;/code&gt; with regex capture groups doesn't map one to one. Test every rewritten path.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Small behavior differences.&lt;/strong&gt; Default timeouts, body size limits and header handling differ between implementations. Things that "just worked" may suddenly return a 413 or a timeout.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Who owns what.&lt;/strong&gt; The new model splits responsibility between teams. That's great, but only if you've agreed who owns the Gateway and which namespaces may attach routes to it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What I'd tell someone starting today&lt;/h2&gt;
&lt;p&gt;If you're building a new cluster, don't install ingress-nginx, and don't write new Ingress resources either. Start with Gateway API from day one. The concepts take an afternoon to learn, and you'll never have to do this migration.&lt;/p&gt;
&lt;p&gt;And if you're learning Kubernetes, this is a good lesson in itself. The most popular project in its category, used by almost everyone, was maintained by a handful of tired volunteers. Before you build on something, it's worth asking who is actually keeping it alive.&lt;/p&gt;
&lt;h2&gt;So, is it worth the effort?&lt;/h2&gt;
&lt;p&gt;Honestly, yes, and not only for security. Gateway API is simply the better model. Cleaner YAML, fewer magic annotations, a clear split between platform and app teams, and features that used to need hacks are now built in.&lt;/p&gt;
&lt;p&gt;The retirement just forces a move most of us should have made anyway. Better to do it calmly now than in a hurry the day the next big vulnerability is announced.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: the front door changed, but the job didn't. Plan it, run both side by side, move slowly, and keep a way back.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Helm 4: what changed</title>
      <link>https://deslypeter.com/writing/helm-4-what-changed</link>
      <guid>https://deslypeter.com/writing/helm-4-what-changed.html?lang=en</guid>
      <description>The first major Helm release in years. What's different, and whether your charts still work.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Helm 3 came out in 2019. That's ancient history in Kubernetes years. It removed Tiller, the server-side component everyone hated, and then stayed remarkably stable for six years. Millions of deployments depend on it.&lt;/p&gt;
&lt;p&gt;Helm 4 came out in late 2025, announced at KubeCon North America. So the big question for most teams: what's different, and do I need to change anything?&lt;/p&gt;
&lt;h2&gt;What's new&lt;/h2&gt;
&lt;p&gt;Helm 4 is less of a revolution than Helm 3 was. It's more of a modernisation. The headline changes:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Server-side apply.&lt;/strong&gt; Helm 3 applied resources with its own three-way merge logic on the client. Helm 4 can use Kubernetes' &lt;strong&gt;server-side apply&lt;/strong&gt;, which is how modern tools like Argo CD and Flux increasingly work. This makes Helm play nicer with other tools touching the same resources, and handles field ownership properly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Better waiting and status checks.&lt;/strong&gt; The &lt;code&gt;--wait&lt;/code&gt; behaviour has been reworked to use more modern status checking, so Helm has a better understanding of whether resources are actually ready, including custom resources.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A new plugin system.&lt;/strong&gt; Plugins can now be written as WebAssembly modules, which makes them portable and sandboxed instead of arbitrary scripts running on your machine. Old-style plugins still work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OCI registries are first class.&lt;/strong&gt; Storing charts in container registries (like Docker Hub, GHCR, ECR, Harbor) was already possible in Helm 3. In Helm 4, OCI is the clear default direction, and the old &lt;code&gt;index.yaml&lt;/code&gt; style chart repositories feel increasingly like legacy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modernised internals and SDK.&lt;/strong&gt; Structured logging, cleaned-up Go APIs, and lots of internal refactoring. This matters mostly to tools built on top of Helm's libraries.&lt;/p&gt;
&lt;h2&gt;Do my old charts still work?&lt;/h2&gt;
&lt;p&gt;This is the most important question, and the good news: &lt;strong&gt;yes, existing charts (apiVersion v2) keep working in Helm 4.&lt;/strong&gt; The maintainers were careful about compatibility. Release history from Helm 3 is also understood by Helm 4, so you can upgrade the CLI and keep managing your existing releases.&lt;/p&gt;
&lt;p&gt;Where you might notice differences:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Some command-line flags&lt;/strong&gt; were renamed or removed. Scripts and CI pipelines that call Helm directly should be tested.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Server-side apply&lt;/strong&gt; can surface field ownership conflicts that the old client-side logic silently overwrote.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools that embed Helm&lt;/strong&gt; as a library (some CI tools, older operators) may need updates for the new SDK.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My suggestion: run Helm 4 in a test pipeline against your charts and environments first. Check &lt;code&gt;helm template&lt;/code&gt;, &lt;code&gt;helm upgrade --dry-run&lt;/code&gt;, and a real upgrade on a non-production cluster.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Helm 4 doesn't ask you to rewrite your charts. It asks you to re-test your pipelines, which you should be doing anyway.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Chart habits worth keeping&lt;/h2&gt;
&lt;p&gt;A major version is a good excuse to clean up your charts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Add a &lt;code&gt;values.schema.json&lt;/code&gt;&lt;/strong&gt; so wrong values fail fast with a clear error instead of a broken deployment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write chart tests&lt;/strong&gt; (&lt;code&gt;helm test&lt;/code&gt;) and run &lt;code&gt;helm lint&lt;/code&gt; in CI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use library charts&lt;/strong&gt; for shared templates instead of copying helpers between charts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publish to an OCI registry&lt;/strong&gt; and sign charts, for example with Cosign.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep values files small&lt;/strong&gt; with sensible defaults in the chart.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pin chart versions&lt;/strong&gt; in your deployments. Never deploy "latest".&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Helm, Kustomize, or something else?&lt;/h2&gt;
&lt;p&gt;Helm remains the most common way to package Kubernetes applications, especially third-party ones. Almost every open-source project ships a Helm chart.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kustomize&lt;/strong&gt; is great for your own applications when you want plain YAML with overlays per environment and no templating language.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kro&lt;/strong&gt;, &lt;strong&gt;Timoni&lt;/strong&gt; and &lt;strong&gt;CUE&lt;/strong&gt;-based tools offer more structured approaches, but with much smaller ecosystems.&lt;/li&gt;
&lt;li&gt;Many teams use &lt;strong&gt;both Helm and Kustomize&lt;/strong&gt;: Helm for third-party software, Kustomize for their own apps, often managed by Argo CD or Flux.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Should you upgrade?&lt;/h2&gt;
&lt;p&gt;Yes, but without hurry. Helm 3 continues to receive security fixes for a while, so you have time. Upgrade the CLI in CI first, test your charts, then roll it out to people's machines.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: Helm 4 is a quiet upgrade with good foundations. Test your pipelines, clean up your charts, and enjoy not rewriting anything.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>More than one cluster</title>
      <link>https://deslypeter.com/writing/more-than-one-cluster</link>
      <guid>https://deslypeter.com/writing/more-than-one-cluster.html?lang=en</guid>
      <description>Why teams end up with many clusters, and how to keep them from becoming many problems.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Almost every company starts with one Kubernetes cluster. Then a second one for staging. Then one in another region. Then a team needs its own for compliance reasons. Then there's the edge, the data science team, the acquisition... And suddenly someone asks "how many clusters do we have?" and nobody knows the exact answer.&lt;/p&gt;
&lt;p&gt;Multi-cluster isn't a decision most teams make once. It's something that happens. The question is whether you manage it on purpose.&lt;/p&gt;
&lt;h2&gt;Why one cluster isn't enough&lt;/h2&gt;
&lt;p&gt;There are good reasons to run more than one:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Environment isolation.&lt;/strong&gt; Production shouldn't share a cluster with experiments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blast radius.&lt;/strong&gt; A bad upgrade, a misconfigured admission webhook or a control plane problem only affects one cluster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regions and latency.&lt;/strong&gt; Users in Europe and Asia are better served by clusters near them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compliance and data residency.&lt;/strong&gt; Some data must stay in a specific country or a specially controlled environment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Team autonomy.&lt;/strong&gt; Some teams need cluster-level permissions or special configurations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scale limits.&lt;/strong&gt; Very large clusters hit practical limits on nodes, pods and API load.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And some less good reasons: every team getting its own cluster just because it was easy to click one together.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Every cluster you add is another thing to upgrade, secure, monitor and pay for. Make each one earn its place.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Managing a fleet&lt;/h2&gt;
&lt;p&gt;Once you have more than a few clusters, doing things by hand stops working. You need a fleet approach.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GitOps is the foundation.&lt;/strong&gt; Argo CD or Flux deploy the same baseline to every cluster from Git: monitoring agents, policies, ingress or gateway controllers, cert-manager. Argo CD &lt;strong&gt;ApplicationSets&lt;/strong&gt; with the cluster generator are especially useful: define an application once, and it's deployed to every cluster that matches a label.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cluster lifecycle tools&lt;/strong&gt; create and upgrade the clusters themselves:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cluster API&lt;/strong&gt; manages Kubernetes clusters with Kubernetes resources, across many providers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terraform or OpenTofu&lt;/strong&gt; with managed services (EKS, AKS, GKE) is the most common approach.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rancher&lt;/strong&gt;, &lt;strong&gt;Open Cluster Management&lt;/strong&gt; and cloud-specific fleet tools (like GKE fleets) add a central management layer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Standardisation is what makes it scale.&lt;/strong&gt; Clusters should be cattle, not pets: created from the same templates, with the same baseline, so any engineer can work on any cluster.&lt;/p&gt;
&lt;h2&gt;Connecting clusters&lt;/h2&gt;
&lt;p&gt;Sometimes services in different clusters need to talk to each other. Options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Through public or internal load balancers&lt;/strong&gt;: simple, works everywhere, but each service needs to be exposed explicitly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cilium Cluster Mesh&lt;/strong&gt;: connects pod networks across clusters, with global services that load-balance across them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Istio multi-cluster&lt;/strong&gt;: service mesh across clusters, with mTLS and traffic policies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Submariner&lt;/strong&gt; and the &lt;strong&gt;Multi-Cluster Services API&lt;/strong&gt;: Kubernetes-native ways to export services from one cluster to others.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My advice: avoid cross-cluster dependencies when you can. Each cluster serving a complete slice of the system (for example a region) is much simpler than services constantly calling across clusters.&lt;/p&gt;
&lt;h2&gt;Identity and secrets everywhere&lt;/h2&gt;
&lt;p&gt;With many clusters, access control gets tricky:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Single sign-on&lt;/strong&gt; for humans, with the same groups and roles mapped in every cluster. No shared kubeconfigs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workload identity&lt;/strong&gt; so pods authenticate to cloud services without static credentials.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A central secret store&lt;/strong&gt; (Vault, OpenBao, or your cloud's secret manager) with External Secrets Operator in each cluster, instead of copying secrets around.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Policy everywhere&lt;/strong&gt;: the same Kyverno or Gatekeeper policies deployed to every cluster through GitOps.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Observability across the fleet&lt;/h2&gt;
&lt;p&gt;Each cluster sending metrics, logs and traces to a central place is essential. Label everything with the cluster name and region. A dashboard showing all clusters side by side, with versions and health, quickly answers "is it just this cluster, or all of them?"&lt;/p&gt;
&lt;p&gt;Also track &lt;strong&gt;versions&lt;/strong&gt;: which Kubernetes version and which add-on versions each cluster runs. Version drift across a fleet is a classic source of "it works in cluster A but not B".&lt;/p&gt;
&lt;h2&gt;So, how many clusters should you have?&lt;/h2&gt;
&lt;p&gt;As few as your requirements allow, and as many as your isolation, region and compliance needs demand. Whatever the number, manage them as a fleet from day one: GitOps for everything, the same baseline everywhere, and central observability.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: multi-cluster is manageable when every cluster looks the same. The trouble starts the day one of them becomes special.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Databases on Kubernetes: yes or no?</title>
      <link>https://deslypeter.com/writing/databases-on-kubernetes</link>
      <guid>https://deslypeter.com/writing/databases-on-kubernetes.html?lang=en</guid>
      <description>Running state on Kubernetes is possible now. Whether you should is a different question.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;For years, the standard advice was simple: run your stateless apps on Kubernetes, and keep your databases somewhere else. Kubernetes was built for cattle, and databases are the ultimate pet.&lt;/p&gt;
&lt;p&gt;That advice is getting old. Storage on Kubernetes has matured, and operators can now handle failover, backups and upgrades better than many hand-built setups. So the question has changed from "can you?" to "should you?"&lt;/p&gt;
&lt;h2&gt;Storage on Kubernetes, simply&lt;/h2&gt;
&lt;p&gt;A few building blocks you need to understand:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PersistentVolume (PV)&lt;/strong&gt;: a piece of storage, like a cloud disk.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PersistentVolumeClaim (PVC)&lt;/strong&gt;: a pod's request for storage: "I need 50 GB of fast disk".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;StorageClass&lt;/strong&gt;: the type of storage and how to create it automatically, for example SSD-backed cloud disks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSI drivers&lt;/strong&gt;: plugins that connect Kubernetes to the actual storage system.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;StatefulSet&lt;/strong&gt;: like a Deployment, but each pod gets a stable name (&lt;code&gt;db-0&lt;/code&gt;, &lt;code&gt;db-1&lt;/code&gt;) and its own persistent volume that follows it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With these, a database pod can be restarted or moved and still find its data.&lt;/p&gt;
&lt;p&gt;But here's the catch: a StatefulSet only keeps the data attached. It knows nothing about database replication, failover, backups or upgrades. That's where operators come in.&lt;/p&gt;
&lt;h2&gt;Operators that do the hard work&lt;/h2&gt;
&lt;p&gt;An operator is software running in your cluster that knows how to run a specific database. You describe what you want, and it handles the operational details.&lt;/p&gt;
&lt;p&gt;Some well-regarded ones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CloudNativePG&lt;/strong&gt; for PostgreSQL: replication, automatic failover, backups to object storage, point-in-time recovery, rolling upgrades.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strimzi&lt;/strong&gt; for Apache Kafka.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Percona operators&lt;/strong&gt; for MySQL, PostgreSQL and MongoDB.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis/Valkey operators&lt;/strong&gt; from several vendors and communities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A PostgreSQL cluster with CloudNativePG looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: orders-db
spec:
  instances: 3
  storage:
    size: 50Gi
    storageClass: fast-ssd
  backup:
    barmanObjectStore:
      destinationPath: s3://my-backups/orders-db
      s3Credentials:
        inheritFromIAMRole: true
    retentionPolicy: "30d"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Three instances, streaming replication, automatic failover and backups, in about fifteen lines. That's impressive.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A database on Kubernetes without an operator is just a database with extra ways to break.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Backups I trust&lt;/h2&gt;
&lt;p&gt;Whatever you run, the backup is what matters. A few rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Use the database's own backup tools&lt;/strong&gt; (via the operator) for consistent, point-in-time recoverable backups. Disk snapshots alone are not enough for most databases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Store backups outside the cluster&lt;/strong&gt;, ideally in another region or account.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use Velero&lt;/strong&gt; for backing up Kubernetes resources and volumes as a second layer, especially for disaster recovery of a whole cluster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test restores regularly.&lt;/strong&gt; A backup you've never restored is a hope, not a backup.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The real costs&lt;/h2&gt;
&lt;p&gt;Running databases on Kubernetes means your team owns things a managed service would handle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Upgrades of the database version and the operator.&lt;/li&gt;
&lt;li&gt;Performance tuning, storage sizing, and dealing with full disks at 2 a.m.&lt;/li&gt;
&lt;li&gt;Security patches.&lt;/li&gt;
&lt;li&gt;Expertise: someone needs to really understand PostgreSQL (or whatever you run) when things go wrong.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;When I'd still pick a managed database&lt;/h2&gt;
&lt;p&gt;I'd choose a managed service (RDS, Cloud SQL, Azure Database, and similar) when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The database is business-critical and the team is small.&lt;/li&gt;
&lt;li&gt;Nobody on the team has deep database operations experience.&lt;/li&gt;
&lt;li&gt;You're already on a cloud provider and the managed option fits the budget.&lt;/li&gt;
&lt;li&gt;Compliance requirements are easier to meet with a certified managed service.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;When Kubernetes makes sense&lt;/h2&gt;
&lt;p&gt;And I'd run it on Kubernetes when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You're on-premises or in a sovereign or edge environment without good managed options.&lt;/li&gt;
&lt;li&gt;You need many small databases, for example one per preview environment or per tenant.&lt;/li&gt;
&lt;li&gt;You want consistency across clouds.&lt;/li&gt;
&lt;li&gt;Cost matters at scale, and you have the skills to run it.&lt;/li&gt;
&lt;li&gt;The team already has strong Kubernetes and database experience.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, yes or no?&lt;/h2&gt;
&lt;p&gt;It depends, but the answer is no longer "never". With a good operator, solid backups and a team that understands the database, Kubernetes is a perfectly reasonable home for state. Without those, a managed service will save you a lot of sleepless nights.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: the database doesn't care where it runs. It cares whether someone who understands it is looking after it.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Argo CD or Flux?</title>
      <link>https://deslypeter.com/writing/argo-cd-or-flux</link>
      <guid>https://deslypeter.com/writing/argo-cd-or-flux.html?lang=en</guid>
      <description>Both do GitOps well. The differences that matter when you pick one.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;If you run Kubernetes and deploy with GitOps, you've almost certainly met this question. Argo CD and Flux are both graduated CNCF projects, both mature, both used by thousands of companies. Both will deploy your apps from Git reliably.&lt;/p&gt;
&lt;p&gt;It's not about which one is better. It's about which one matches how your team works.&lt;/p&gt;
&lt;h2&gt;GitOps in one paragraph&lt;/h2&gt;
&lt;p&gt;GitOps means Git is the source of truth for what runs in your cluster. Instead of a pipeline pushing changes with &lt;code&gt;kubectl apply&lt;/code&gt;, an agent inside the cluster pulls the desired state from Git and continuously makes the cluster match it. Every change is a commit. Every rollback is a revert. Drift gets corrected automatically. The OpenGitOps project sums it up in four principles: declarative, versioned and immutable, pulled automatically, continuously reconciled.&lt;/p&gt;
&lt;h2&gt;Argo CD in short&lt;/h2&gt;
&lt;p&gt;Argo CD is an application-centric GitOps tool with a strong web UI.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The UI is a big selling point.&lt;/strong&gt; You see every application, its resources, their health and their sync status as a live tree. Developers love being able to click into their app and see what's happening.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Applications and ApplicationSets.&lt;/strong&gt; An &lt;code&gt;Application&lt;/code&gt; points at a Git path and a target cluster. &lt;code&gt;ApplicationSets&lt;/code&gt; generate many Applications from templates: one per cluster, per environment, per pull request.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-cluster from a central instance.&lt;/strong&gt; One Argo CD can manage many clusters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Projects and RBAC&lt;/strong&gt; for multi-team setups, with SSO integration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Argo CD 3.x&lt;/strong&gt; brought cleaner defaults and better performance, and the wider Argo family includes Argo Rollouts for progressive delivery and Argo Workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Flux in short&lt;/h2&gt;
&lt;p&gt;Flux is a collection of Kubernetes controllers that work like native Kubernetes components.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Everything is a CRD.&lt;/strong&gt; &lt;code&gt;GitRepository&lt;/code&gt;, &lt;code&gt;OCIRepository&lt;/code&gt;, &lt;code&gt;Kustomization&lt;/code&gt;, &lt;code&gt;HelmRelease&lt;/code&gt;. You manage Flux the same way you manage everything else.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No UI by default.&lt;/strong&gt; Flux is CLI and API first. There are third-party UIs and integrations, but the experience is built around &lt;code&gt;kubectl&lt;/code&gt; and the &lt;code&gt;flux&lt;/code&gt; CLI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strong Helm support&lt;/strong&gt; through the Helm controller, with automated upgrades, tests and rollbacks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OCI artifacts&lt;/strong&gt; as a source: you can push manifests to a container registry and have Flux pull from there.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Image automation&lt;/strong&gt; controllers can update image tags in Git automatically when new images are pushed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lightweight, per-cluster model.&lt;/strong&gt; Usually each cluster runs its own Flux and pulls its own config.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Argo CD shows you GitOps. Flux disappears into Kubernetes. Both are valid ways to love it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Side by side&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Argo CD&lt;/th&gt;
&lt;th&gt;Flux&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Interface&lt;/td&gt;
&lt;td&gt;Rich web UI plus CLI&lt;/td&gt;
&lt;td&gt;CLI and CRDs, UI optional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical model&lt;/td&gt;
&lt;td&gt;Central instance, many clusters&lt;/td&gt;
&lt;td&gt;Agent per cluster&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-tenancy&lt;/td&gt;
&lt;td&gt;Projects, RBAC, SSO in the UI&lt;/td&gt;
&lt;td&gt;Kubernetes RBAC and namespaces&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Helm&lt;/td&gt;
&lt;td&gt;Renders charts into manifests&lt;/td&gt;
&lt;td&gt;Native Helm releases via controller&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning curve&lt;/td&gt;
&lt;td&gt;Easy to start, UI helps&lt;/td&gt;
&lt;td&gt;Very Kubernetes-native, steeper for beginners&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best fit&lt;/td&gt;
&lt;td&gt;Teams wanting visibility and self-service&lt;/td&gt;
&lt;td&gt;Platform teams wanting composable automation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;How I structure the repos&lt;/h2&gt;
&lt;p&gt;Whichever tool you pick, repository structure matters more than the tool. A common layout:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;platform-gitops/
  clusters/
    prod-eu/
    prod-us/
    staging/
  infrastructure/      # cert-manager, gateway, monitoring, policies
    base/
    overlays/
  apps/
    shop/
      base/
      overlays/
        staging/
        prod/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Some principles that help:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Separate app code from deployment config.&lt;/strong&gt; The app repo builds images; the GitOps repo says which version runs where.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use overlays&lt;/strong&gt; (Kustomize) or values files (Helm) per environment, not copied folders.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep secrets out of Git&lt;/strong&gt;, or encrypted (SOPS) or referenced via External Secrets.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Moving changes through environments&lt;/h2&gt;
&lt;p&gt;The tricky part of GitOps isn't deploying. It's &lt;strong&gt;promotion&lt;/strong&gt;: moving a version from dev to staging to production in a controlled way. Updating a YAML file in three places by hand gets old quickly.&lt;/p&gt;
&lt;p&gt;Options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pull requests per environment&lt;/strong&gt;, opened by CI after each successful stage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flux image automation&lt;/strong&gt; or &lt;strong&gt;Argo CD Image Updater&lt;/strong&gt; for automatic tag updates in lower environments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kargo&lt;/strong&gt;, a newer project from the Argo ecosystem team, built specifically for GitOps promotion across stages with verification steps in between.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, which one?&lt;/h2&gt;
&lt;p&gt;If your developers will interact with deployments directly and value seeing what's going on, &lt;strong&gt;Argo CD&lt;/strong&gt;. If your platform team wants composable, Kubernetes-native building blocks and is happy with CLIs, &lt;strong&gt;Flux&lt;/strong&gt;. If you can't decide: try both on a test cluster for a week. The one your team reaches for naturally is the right one.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: the best GitOps tool is the one your team actually understands. Pick one, structure your repos well, and the rest follows.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>GitHub Actions, GitLab CI or Jenkins in 2026?</title>
      <link>https://deslypeter.com/writing/github-actions-gitlab-ci-jenkins</link>
      <guid>https://deslypeter.com/writing/github-actions-gitlab-ci-jenkins.html?lang=en</guid>
      <description>Is Jenkins still worth it? An honest comparison by team size.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;"Which CI tool should we use?" is one of the most common questions I get from smaller teams. The honest answer is usually "the one that lives next to your code". But there's more nuance than that, especially if you're sitting on a decade-old Jenkins server and wondering whether it's time to move.&lt;/p&gt;
&lt;p&gt;Here's how the three big options compare today.&lt;/p&gt;
&lt;h2&gt;GitHub Actions&lt;/h2&gt;
&lt;p&gt;If your code is on GitHub, Actions is the default, and for good reasons.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good at:&lt;/strong&gt;
- &lt;strong&gt;Zero setup.&lt;/strong&gt; Add a YAML file to &lt;code&gt;.github/workflows&lt;/code&gt; and it runs.
- &lt;strong&gt;Huge marketplace&lt;/strong&gt; of reusable actions for almost everything.
- &lt;strong&gt;Tight integration&lt;/strong&gt; with pull requests, checks, environments, deployments and security features.
- &lt;strong&gt;OIDC&lt;/strong&gt; to all major clouds, so no long-lived secrets.
- &lt;strong&gt;Reusable workflows&lt;/strong&gt; for sharing pipelines across many repositories.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Watch out for:&lt;/strong&gt;
- &lt;strong&gt;Third-party action risk.&lt;/strong&gt; Supply chain attacks on popular actions are real. Pin to SHAs.
- &lt;strong&gt;Cost at scale.&lt;/strong&gt; Hosted runner minutes add up for private repositories with heavy pipelines. Self-hosted runners help.
- &lt;strong&gt;YAML sprawl&lt;/strong&gt; across hundreds of repositories if you don't standardise with reusable workflows.&lt;/p&gt;
&lt;h2&gt;GitLab CI&lt;/h2&gt;
&lt;p&gt;If your code is on GitLab, GitLab CI is equally natural, and arguably more complete as a platform.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good at:&lt;/strong&gt;
- &lt;strong&gt;All-in-one platform.&lt;/strong&gt; Repos, CI/CD, container registry, package registry, security scanning, environments and issues in one product.
- &lt;strong&gt;Mature pipeline features&lt;/strong&gt;: parent-child pipelines, DAG dependencies, merge trains, rules.
- &lt;strong&gt;Self-hosting&lt;/strong&gt; is well supported, important for regulated or air-gapped environments.
- &lt;strong&gt;CI/CD components and a catalog&lt;/strong&gt; for reusable pipeline building blocks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Watch out for:&lt;/strong&gt;
- Many advanced security and compliance features are in &lt;strong&gt;paid tiers&lt;/strong&gt;.
- Self-hosting a large GitLab instance is real operational work.&lt;/p&gt;
&lt;h2&gt;Jenkins&lt;/h2&gt;
&lt;p&gt;Jenkins is the veteran. It's been around since 2011 (and before that as Hudson), and it still runs a huge share of the world's pipelines.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good at:&lt;/strong&gt;
- &lt;strong&gt;Ultimate flexibility.&lt;/strong&gt; If something can be scripted, Jenkins can run it.
- &lt;strong&gt;Plugins for everything&lt;/strong&gt;, including very old and very unusual systems.
- &lt;strong&gt;Completely self-hosted and free&lt;/strong&gt;, with full control.
- &lt;strong&gt;Works with any Git host&lt;/strong&gt;, or none.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Watch out for:&lt;/strong&gt;
- &lt;strong&gt;Maintenance burden.&lt;/strong&gt; Plugins, upgrades, security patches, controller backups. Jenkins needs a caretaker.
- &lt;strong&gt;Plugin hell.&lt;/strong&gt; Plugins break each other, get abandoned, or have vulnerabilities.
- &lt;strong&gt;Configuration drift&lt;/strong&gt; unless you use Jenkinsfiles and Configuration as Code consistently.
- &lt;strong&gt;Harder to hire for&lt;/strong&gt; in some markets. Fewer newcomers want to learn Groovy pipelines.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Jenkins isn't bad. It's just a pet in a world that has learned to prefer cattle.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Is Jenkins still worth it?&lt;/h2&gt;
&lt;p&gt;For a &lt;strong&gt;new project&lt;/strong&gt;: rarely. Unless you have unusual requirements, the integrated tools are easier, safer and cheaper to run.&lt;/p&gt;
&lt;p&gt;For an &lt;strong&gt;existing Jenkins setup&lt;/strong&gt;: it depends. If it's well-maintained, uses Jenkinsfiles, and supports systems the newer tools struggle with (legacy builds, special hardware, mainframes), there's no urgent reason to move. If it's a fragile server nobody dares to upgrade, with configuration clicked together in the UI, migration is probably worth it.&lt;/p&gt;
&lt;h2&gt;Others worth knowing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Azure Pipelines&lt;/strong&gt; (Azure DevOps): solid, especially for Microsoft-heavy shops.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CircleCI&lt;/strong&gt;, &lt;strong&gt;Buildkite&lt;/strong&gt;: strong on performance; Buildkite runs agents on your own infrastructure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tekton&lt;/strong&gt;: Kubernetes-native building blocks for CI/CD, often used inside platforms rather than directly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dagger&lt;/strong&gt;: pipelines written in real code that run on any CI. More on that in a separate post.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Cost&lt;/h2&gt;
&lt;p&gt;Rough rules of thumb:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Public open-source projects&lt;/strong&gt;: GitHub Actions is generous and usually the cheapest.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Small private teams&lt;/strong&gt;: hosted runners on GitHub or GitLab are simplest. Watch your minutes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Heavy pipelines at scale&lt;/strong&gt;: self-hosted or ephemeral runners on your own cloud account often cut costs significantly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Jenkins&lt;/strong&gt; is free to license, not free to run. Count the engineering time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Moving between them&lt;/h2&gt;
&lt;p&gt;Migrations are mostly about translating concepts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jobs, stages and steps map fairly directly between tools.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secrets and credentials&lt;/strong&gt; need re-creating, and it's a great moment to switch to OIDC.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins and actions&lt;/strong&gt; are the hard part: find equivalents, or replace them with simple scripts.&lt;/li&gt;
&lt;li&gt;GitHub provides &lt;strong&gt;Actions Importer&lt;/strong&gt; to help convert from Jenkins, GitLab, Azure DevOps and others.&lt;/li&gt;
&lt;li&gt;Migrate &lt;strong&gt;one pipeline at a time&lt;/strong&gt;, starting with a simple, active project.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;My pick, by team size&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Small team, code on GitHub&lt;/strong&gt;: GitHub Actions. Don't overthink it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Small team, code on GitLab&lt;/strong&gt;: GitLab CI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mid-size company&lt;/strong&gt;: whichever matches your Git host, with reusable workflows or components, and self-hosted runners for heavy jobs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Large or regulated enterprise&lt;/strong&gt;: GitLab (self-hosted) or GitHub Enterprise, possibly keeping Jenkins for specific legacy workloads while new work moves.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;My take: CI should live next to your code and need as little babysitting as possible. In 2026, that rarely means a Jenkins server under someone's desk.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Terraform or OpenTofu?</title>
      <link>https://deslypeter.com/writing/terraform-or-opentofu</link>
      <guid>https://deslypeter.com/writing/terraform-or-opentofu.html?lang=en</guid>
      <description>A license change, a fork, an acquisition. Which one I'd pick today, and why.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;For about a decade, the question "which tool should we use for infrastructure as code?" had a boring answer: Terraform. Then, in 2023, things got interesting. Today there are two tools that look almost identical, share most of their history, and come from very different places.&lt;/p&gt;
&lt;p&gt;If you're starting a new project or thinking about switching, here's how I see it.&lt;/p&gt;
&lt;h2&gt;How we got here&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;August 2023:&lt;/strong&gt; HashiCorp changed Terraform's license from the open-source Mozilla Public License (MPL) to the Business Source License (BSL). In short: you can still use Terraform freely, but you can't build a competing commercial product on it. Many companies and community members felt this broke the promise of an open tool that thousands had contributed to.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;September 2023:&lt;/strong&gt; A group of companies forked the last open-source version. The fork became &lt;strong&gt;OpenTofu&lt;/strong&gt; and joined the Linux Foundation, later becoming a CNCF project.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2024–2025:&lt;/strong&gt; IBM announced it would acquire HashiCorp, and completed the acquisition in early 2025. Terraform is now an IBM product.&lt;/p&gt;
&lt;p&gt;Since then, both tools have released new versions, and they've started to grow apart.&lt;/p&gt;
&lt;h2&gt;What's different now&lt;/h2&gt;
&lt;p&gt;The core is still very similar. Both use HCL, the same provider ecosystem, the same state format (mostly), and the same &lt;code&gt;init&lt;/code&gt;, &lt;code&gt;plan&lt;/code&gt;, &lt;code&gt;apply&lt;/code&gt; workflow. Your existing code generally works in both.&lt;/p&gt;
&lt;p&gt;But each has features the other doesn't, or implements differently.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenTofu highlights:&lt;/strong&gt;
- &lt;strong&gt;State encryption&lt;/strong&gt; built in. Your state file, which often contains secrets, can be encrypted client-side with keys from a KMS.
- &lt;strong&gt;Early variable evaluation&lt;/strong&gt;: variables and locals can be used in places like module sources and backend configuration.
- &lt;strong&gt;&lt;code&gt;for_each&lt;/code&gt; on providers&lt;/strong&gt;, making multi-region and multi-account setups much cleaner.
- A &lt;strong&gt;community-driven&lt;/strong&gt; roadmap, where many long-requested features from the Terraform issue tracker landed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Terraform highlights:&lt;/strong&gt;
- &lt;strong&gt;Terraform Stacks&lt;/strong&gt; for managing many related configurations and deployments together, tied to HCP Terraform.
- &lt;strong&gt;Ephemeral resources and values&lt;/strong&gt;, keeping secrets out of state and plan files.
- &lt;strong&gt;Deep integration with HCP Terraform&lt;/strong&gt; (the managed service) and the wider HashiCorp and IBM tooling.
- &lt;strong&gt;Commercial support&lt;/strong&gt; from a large vendor, which matters to some enterprises.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The code you write is still almost the same. The question is really about license, governance and which features you need.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The license question, honestly&lt;/h2&gt;
&lt;p&gt;For most companies that simply &lt;strong&gt;use&lt;/strong&gt; Terraform to manage their own infrastructure, the BSL changes nothing in practice. You can keep using it for free.&lt;/p&gt;
&lt;p&gt;It matters if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You build a product or service that competes with HashiCorp's offerings.&lt;/li&gt;
&lt;li&gt;Your company has a policy of only using OSI-approved open-source software.&lt;/li&gt;
&lt;li&gt;You care about the long-term governance: a vendor-controlled tool versus a foundation-governed one.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Switching, step by step&lt;/h2&gt;
&lt;p&gt;Moving from Terraform to OpenTofu is usually straightforward, especially from Terraform 1.5 or earlier:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Back up your state.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Install OpenTofu&lt;/strong&gt; and run &lt;code&gt;tofu init&lt;/code&gt; in a test configuration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run &lt;code&gt;tofu plan&lt;/code&gt;.&lt;/strong&gt; If it shows no changes, you're compatible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Check providers&lt;/strong&gt;: OpenTofu uses its own registry, which mirrors the common providers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Update CI&lt;/strong&gt; to use the &lt;code&gt;tofu&lt;/code&gt; binary.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Avoid using new features of one tool&lt;/strong&gt; until you've decided, so you can still switch back.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The further both tools diverge, the harder moving between them becomes. Using Terraform Stacks or OpenTofu's state encryption ties you to that tool.&lt;/p&gt;
&lt;h2&gt;Where each one is heading&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Terraform&lt;/strong&gt; is focused on enterprise workflows: HCP Terraform, Stacks, integrations with IBM's portfolio, and policy and governance features.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenTofu&lt;/strong&gt; is focused on community-requested features, openness, and being a neutral foundation for the ecosystem. Several infrastructure automation platforms (like Spacelift, env0, Scalr and Harness) support it actively.&lt;/p&gt;
&lt;p&gt;Both look healthy. Neither is going away soon.&lt;/p&gt;
&lt;h2&gt;Which one I'd pick&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New project, no strong vendor ties&lt;/strong&gt;: I'd lean towards &lt;strong&gt;OpenTofu&lt;/strong&gt;. Open governance, useful features like state encryption, and full compatibility with the ecosystem.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Already deep in HCP Terraform or HashiCorp's enterprise tools&lt;/strong&gt;: stay with &lt;strong&gt;Terraform&lt;/strong&gt;. Switching costs more than it saves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Existing Terraform setup, no problems&lt;/strong&gt;: no urgency. Keep your code compatible with both for now, and decide when a feature or policy makes the choice for you.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;My take: the HCL you write matters more than the binary that runs it. Keep your code clean and portable, and the choice stays yours.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Is Ansible still worth learning?</title>
      <link>https://deslypeter.com/writing/is-ansible-still-worth-learning</link>
      <guid>https://deslypeter.com/writing/is-ansible-still-worth-learning.html?lang=en</guid>
      <description>Terraform and Kubernetes took the spotlight. Where Ansible still wins.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Ten years ago, Ansible was everywhere. Configuration management was the heart of DevOps: Puppet, Chef, Salt and Ansible battled for servers. Then containers arrived, immutable infrastructure became fashionable, Terraform took over provisioning, and Kubernetes took over running applications.&lt;/p&gt;
&lt;p&gt;People keep asking me: is Ansible still worth learning in 2026? My answer is yes, but for different reasons than before.&lt;/p&gt;
&lt;h2&gt;Where it fits today&lt;/h2&gt;
&lt;p&gt;Think of the layers of modern infrastructure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Terraform / OpenTofu&lt;/strong&gt;: creates infrastructure. Networks, VMs, databases, clusters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;: runs containerised applications.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ansible&lt;/strong&gt;: configures things and runs procedures. Operating systems, network devices, software that isn't containerised, and multi-step operational tasks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There's still a lot of that third category. Not everything runs in containers, and not every server is cattle.&lt;/p&gt;
&lt;h2&gt;What it's still great at&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Configuring operating systems.&lt;/strong&gt; Hardening Linux servers, managing users and SSH keys, installing agents, configuring time sync and logging. Especially in on-premises environments, VMs that live for years, or bare metal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Network automation.&lt;/strong&gt; This is where Ansible is arguably stronger than ever. Switches, routers, firewalls and load balancers from Cisco, Juniper, Arista, F5, Palo Alto and many more have Ansible collections. Network teams use it heavily.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Day-2 operations.&lt;/strong&gt; Rolling restarts, patching servers in batches, rotating certificates on old systems, running the same command across a hundred machines. The "orchestration of procedures" that doesn't fit Terraform's declarative model.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bootstrapping.&lt;/strong&gt; Preparing machines before Kubernetes or another platform takes over, like building a homelab or an on-prem cluster.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Legacy and hybrid environments.&lt;/strong&gt; Most companies have them, and they need automating too.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Terraform builds the house, Kubernetes runs the apps inside, and Ansible is still the handyman who fixes everything else.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Why people like it&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agentless.&lt;/strong&gt; It connects over SSH (or WinRM, or APIs). Nothing to install on the managed machines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;YAML playbooks&lt;/strong&gt; that are fairly easy to read, even for people who aren't programmers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Huge collection of modules&lt;/strong&gt; for almost any system.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Idempotent modules&lt;/strong&gt;: running a playbook twice gives the same result.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A simple playbook:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;- name: Harden web servers
  hosts: web
  become: true
  tasks:
    - name: Ensure unattended upgrades are installed
      ansible.builtin.apt:
        name: unattended-upgrades
        state: present

    - name: Disable SSH password login
      ansible.builtin.lineinfile:
        path: /etc/ssh/sshd_config
        regexp: '^#?PasswordAuthentication'
        line: 'PasswordAuthentication no'
      notify: Restart ssh

  handlers:
    - name: Restart ssh
      ansible.builtin.service:
        name: ssh
        state: restarted
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Event-Driven Ansible&lt;/h2&gt;
&lt;p&gt;A newer addition worth knowing: &lt;strong&gt;Event-Driven Ansible&lt;/strong&gt; lets you trigger playbooks automatically from events, like a monitoring alert, a webhook or a message on a queue. For example: when a disk-full alert fires, run a playbook that cleans up old logs and opens a ticket.&lt;/p&gt;
&lt;p&gt;It's a nice bridge between observability and automation, especially in traditional IT environments.&lt;/p&gt;
&lt;h2&gt;Good habits&lt;/h2&gt;
&lt;p&gt;If you use Ansible, use it well:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Roles and collections&lt;/strong&gt; for reusable, shareable code instead of giant playbooks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inventory from your cloud&lt;/strong&gt; (dynamic inventory plugins) rather than hand-maintained host lists.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ansible Vault&lt;/strong&gt; or an external secret manager for secrets. Never plain text.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ansible-lint&lt;/strong&gt; in CI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Molecule&lt;/strong&gt; for testing roles in containers or VMs before running them against real machines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fully qualified module names&lt;/strong&gt; like &lt;code&gt;ansible.builtin.copy&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run it from CI or a controller&lt;/strong&gt; (like AWX or Ansible Automation Platform) for production, not from laptops.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;When I wouldn't use it&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Provisioning cloud resources&lt;/strong&gt;: Terraform or OpenTofu is better at tracking state.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploying apps to Kubernetes&lt;/strong&gt;: use Helm, Kustomize and GitOps instead.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuring containers&lt;/strong&gt;: bake configuration into images or use Kubernetes ConfigMaps.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, should you learn it?&lt;/h2&gt;
&lt;p&gt;If you work with Linux servers, on-premises infrastructure, network devices or hybrid environments: absolutely. It's quick to learn and immediately useful. If your world is 100% cloud-native Kubernetes, it's a nice-to-have rather than a must.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: Ansible isn't the star anymore, but it's still the most practical tool for the messy, real-world parts of infrastructure.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Where does your software come from? SBOM, SLSA and signing</title>
      <link>https://deslypeter.com/writing/sbom-slsa-signing</link>
      <guid>https://deslypeter.com/writing/sbom-slsa-signing.html?lang=en</guid>
      <description>Supply chain attacks are everywhere. The three ideas that help you trust what you ship.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;When we talk about software security, we usually think about our own code. Is it vulnerable? Did we validate input? But most of what we ship isn't our code. It's open-source libraries, base images, build tools, CI actions, and their dependencies, and their dependencies' dependencies.&lt;/p&gt;
&lt;p&gt;Attackers have noticed. Instead of breaking into one company, they target something thousands of companies use. The XZ Utils backdoor found in 2024, the hacked GitHub Action in 2025, and the self-spreading npm worm called Shai-Hulud: all examples of supply chain attacks.&lt;/p&gt;
&lt;p&gt;Three ideas have become the foundation of defending against them: SBOMs, signing, and SLSA.&lt;/p&gt;
&lt;h2&gt;Why this suddenly matters&lt;/h2&gt;
&lt;p&gt;Three reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Attacks are increasing&lt;/strong&gt;, and they're getting more sophisticated.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regulation is arriving.&lt;/strong&gt; The EU Cyber Resilience Act, US federal requirements and industry standards increasingly expect you to know what's in your software and prove where it came from.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customers are asking.&lt;/strong&gt; "Can you provide an SBOM?" is now a standard question in security questionnaires.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;SBOMs: an ingredient list for software&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;Software Bill of Materials (SBOM)&lt;/strong&gt; is a list of every component in your software: libraries, versions, licenses, and where they came from. Like the ingredient list on food packaging.&lt;/p&gt;
&lt;p&gt;Why it helps: when a new vulnerability like Log4Shell is announced, you can answer "are we affected?" in minutes instead of days, by searching your SBOMs.&lt;/p&gt;
&lt;p&gt;The two main formats are &lt;strong&gt;CycloneDX&lt;/strong&gt; and &lt;strong&gt;SPDX&lt;/strong&gt;. Generating one is easy:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;syft registry.example.com/shop-api:1.4.2 -o cyclonedx-json &amp;gt; sbom.json
trivy image --format spdx-json -o sbom.spdx.json registry.example.com/shop-api:1.4.2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Generate SBOMs in CI for every release, store them alongside the artifact (or attach them to the image in the registry), and scan them regularly for new vulnerabilities.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;An SBOM doesn't make your software secure. It makes your ignorance visible, and that's where security starts.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Signing with Sigstore and Cosign&lt;/h2&gt;
&lt;p&gt;An SBOM tells you what's inside. &lt;strong&gt;Signing&lt;/strong&gt; tells you who built it and that nobody changed it afterwards.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sigstore&lt;/strong&gt; is an open-source project (under the OpenSSF) that made signing practical. Its tool &lt;strong&gt;Cosign&lt;/strong&gt; signs container images and other artifacts. The clever part is &lt;strong&gt;keyless signing&lt;/strong&gt;: instead of managing long-lived private keys, your CI's identity (like a GitHub Actions OIDC token) is used to get a short-lived certificate, and the signature is recorded in a public transparency log.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;# In CI, with OIDC available
cosign sign registry.example.com/shop-api@sha256:abc123...

# Anywhere, to verify
cosign verify registry.example.com/shop-api@sha256:abc123... \
  --certificate-identity-regexp "https://github.com/acme/shop-api/.*" \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The verification says: this exact image was signed by a workflow in the &lt;code&gt;acme/shop-api&lt;/code&gt; repository. If someone pushes a different image under the same tag, verification fails.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Verifying at deploy time&lt;/strong&gt; is where signing really pays off. Admission controllers like &lt;strong&gt;Kyverno&lt;/strong&gt;, &lt;strong&gt;Sigstore policy-controller&lt;/strong&gt; or &lt;strong&gt;Connaisseur&lt;/strong&gt; can block unsigned or wrongly signed images from running in your Kubernetes cluster.&lt;/p&gt;
&lt;h2&gt;SLSA levels, simply&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;SLSA&lt;/strong&gt; (Supply-chain Levels for Software Artifacts, pronounced "salsa") is a framework that describes how trustworthy your build process is. It focuses on &lt;strong&gt;provenance&lt;/strong&gt;: a signed record of how an artifact was built, from which source, by which builder.&lt;/p&gt;
&lt;p&gt;Simplified, the build levels are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Level 1&lt;/strong&gt;: provenance exists. You document how the artifact was built.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Level 2&lt;/strong&gt;: provenance is generated and signed by a hosted build platform, not by hand.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Level 3&lt;/strong&gt;: the build platform is hardened, so builds are isolated and provenance can't be forged even by the project's own maintainers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GitHub Actions can generate SLSA provenance with &lt;strong&gt;artifact attestations&lt;/strong&gt; (&lt;code&gt;actions/attest-build-provenance&lt;/code&gt;), and the &lt;strong&gt;slsa-github-generator&lt;/strong&gt; project provides Level 3 builders. Docker BuildKit can attach provenance to images too.&lt;/p&gt;
&lt;h2&gt;Putting it together&lt;/h2&gt;
&lt;p&gt;A practical pipeline:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Build the image in CI (hosted, ephemeral runners).&lt;/li&gt;
&lt;li&gt;Generate an &lt;strong&gt;SBOM&lt;/strong&gt; and attach it to the image.&lt;/li&gt;
&lt;li&gt;Generate &lt;strong&gt;provenance&lt;/strong&gt; (SLSA attestation).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sign&lt;/strong&gt; the image with Cosign, keyless.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scan&lt;/strong&gt; the SBOM for vulnerabilities, continuously.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verify&lt;/strong&gt; signatures and provenance in the cluster before anything runs.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Each step is a few lines of CI configuration today. A few years ago, this was a research project.&lt;/p&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Generate SBOMs for your main images this week. Add keyless signing next. Then test signature verification in one non-production cluster. Once that's working, move it to production. You'll be ahead of most companies and ready for the regulations coming your way.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: you can't secure what you can't see, and you can't trust what you can't verify. SBOMs give you sight, signatures give you trust.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The EU Cyber Resilience Act and DevOps</title>
      <link>https://deslypeter.com/writing/eu-cyber-resilience-act-devops</link>
      <guid>https://deslypeter.com/writing/eu-cyber-resilience-act-devops.html?lang=en</guid>
      <description>New EU rules for software security started applying in 2026. What teams need to do.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Living in Germany, I've watched GDPR change how every company handles personal data. The EU Cyber Resilience Act (CRA) is set to do something similar for software security. And unlike many regulations, it lands directly on the things DevOps teams do every day: dependencies, vulnerability handling, updates and build pipelines.&lt;/p&gt;
&lt;p&gt;A quick disclaimer before we start: I'm an engineer, not a lawyer. This is my practical reading of what it means for teams. For your company's specific obligations, talk to your legal and compliance people.&lt;/p&gt;
&lt;h2&gt;What the law says, in plain words&lt;/h2&gt;
&lt;p&gt;The CRA sets cybersecurity requirements for &lt;strong&gt;"products with digital elements"&lt;/strong&gt; sold in the EU. That covers a lot: software, apps, connected devices, firmware, and many components that end up in other products.&lt;/p&gt;
&lt;p&gt;The core idea: if you put software on the EU market, you're responsible for its security &lt;strong&gt;for its whole lifetime&lt;/strong&gt;, not just on release day. That means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Secure by design and by default&lt;/strong&gt;: no known exploitable vulnerabilities at release, secure default configuration, protection of data, minimised attack surface.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vulnerability handling&lt;/strong&gt;: a process to receive, assess and fix vulnerabilities, and provide security updates for a defined support period (generally at least five years, or the expected product lifetime if shorter).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SBOMs&lt;/strong&gt;: document the components in your product, at least the top-level dependencies, in a machine-readable format.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reporting&lt;/strong&gt;: report actively exploited vulnerabilities and severe incidents to authorities within tight deadlines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentation and conformity&lt;/strong&gt;: technical documentation, and for most products a self-assessment, with stricter assessment for some critical categories. Compliant products carry the CE marking.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The dates that matter&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;December 2024&lt;/strong&gt;: the CRA entered into force.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;11 September 2026&lt;/strong&gt;: &lt;strong&gt;reporting obligations apply&lt;/strong&gt;. Manufacturers must report actively exploited vulnerabilities and severe incidents through ENISA's single reporting platform. Early warning within 24 hours, a fuller notification within 72 hours, and a final report later.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;11 December 2027&lt;/strong&gt;: &lt;strong&gt;the rest of the requirements apply&lt;/strong&gt;, including the essential security requirements and conformity assessment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the reporting part is already live. The full set arrives next year.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The CRA turns "we'll patch it eventually" into a legal obligation with a deadline.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What about open source?&lt;/h2&gt;
&lt;p&gt;This was heavily debated during the drafting. The final text tries to protect open-source developers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open-source software developed and shared &lt;strong&gt;without commercial activity&lt;/strong&gt; is generally outside the scope.&lt;/li&gt;
&lt;li&gt;A new role, the &lt;strong&gt;open-source software steward&lt;/strong&gt; (for example foundations that support projects used commercially), has lighter obligations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Companies that use open source in their commercial products&lt;/strong&gt; are responsible for those components as part of their product. Using a library doesn't shift responsibility to its maintainers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That final point matters most for most of us: your dependencies are now your responsibility.&lt;/p&gt;
&lt;h2&gt;What changes in my pipeline&lt;/h2&gt;
&lt;p&gt;The nice surprise: a lot of what the CRA asks for is what good DevSecOps teams already do, or should. It just becomes mandatory and documented.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SBOM generation&lt;/strong&gt; for every release (Syft, Trivy, CycloneDX tools), stored and versioned.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continuous vulnerability scanning&lt;/strong&gt; of those SBOMs, not just at build time, so newly discovered vulnerabilities in old releases are found.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A vulnerability disclosure policy&lt;/strong&gt; and a way for researchers to report issues (a &lt;code&gt;security.txt&lt;/code&gt;, a security contact, a &lt;code&gt;SECURITY.md&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A defined support period&lt;/strong&gt; for each product version, and the ability to ship security updates quickly during it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Signed artifacts and build provenance&lt;/strong&gt;, to show the integrity of what you ship.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secure defaults&lt;/strong&gt; in your products: no default passwords, minimal open ports, encryption on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An incident and reporting process&lt;/strong&gt; that can meet a 24-hour deadline for exploited vulnerabilities. Who decides? Who reports? Practise it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentation&lt;/strong&gt; of all of the above.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;A checklist&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Find out whether your products are in scope, and in which category (most are in the default, self-assessment category).&lt;/li&gt;
&lt;li&gt;Generate and store SBOMs for every release.&lt;/li&gt;
&lt;li&gt;Set up continuous vulnerability monitoring of shipped versions.&lt;/li&gt;
&lt;li&gt;Publish a vulnerability disclosure policy and security contact.&lt;/li&gt;
&lt;li&gt;Define and communicate support periods.&lt;/li&gt;
&lt;li&gt;Create a process to report exploited vulnerabilities within 24 hours.&lt;/li&gt;
&lt;li&gt;Make security updates easy to deliver, and separable from feature updates where possible.&lt;/li&gt;
&lt;li&gt;Document your secure development practices.&lt;/li&gt;
&lt;li&gt;Review your dependencies: unmaintained components are a liability now.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;So, should DevOps teams care?&lt;/h2&gt;
&lt;p&gt;Very much. The CRA lands right in our pipelines. The teams that already automate SBOMs, scanning, signing and fast patching will find compliance relatively easy. The teams that don't have about a year to catch up.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: the CRA is regulation, but most of it is just good engineering written into law. Build those habits now, and compliance becomes a by-product.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>No more static passwords between services</title>
      <link>https://deslypeter.com/writing/workload-identity-spiffe</link>
      <guid>https://deslypeter.com/writing/workload-identity-spiffe.html?lang=en</guid>
      <description>Workload identity and SPIFFE: letting services prove who they are.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Think about how your services authenticate to each other and to the cloud. In many companies, the answer is static credentials. An access key in an environment variable. A shared API token in a config file. A database password copied into five places. They rarely get rotated, and when one leaks, you often don't know where else it's used.&lt;/p&gt;
&lt;p&gt;Humans moved past this a while ago: single sign-on, MFA, short-lived sessions. Workloads deserve the same.&lt;/p&gt;
&lt;h2&gt;The problem with shared secrets&lt;/h2&gt;
&lt;p&gt;Static credentials have three big weaknesses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;They're long-lived.&lt;/strong&gt; A leaked key works until someone notices and rotates it, which can be months.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;They're copyable.&lt;/strong&gt; Anyone or anything that gets the key can use it, from anywhere.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;They don't say who's calling.&lt;/strong&gt; Five services sharing one token look identical in the logs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Zero trust&lt;/strong&gt; is the idea that nothing should be trusted just because it's inside your network. Every request should prove who it comes from. For workloads, that means giving every service a strong, verifiable identity.&lt;/p&gt;
&lt;h2&gt;Cloud workload identity&lt;/h2&gt;
&lt;p&gt;The easiest win: let your workloads authenticate to cloud services using their platform identity instead of keys.&lt;/p&gt;
&lt;p&gt;On Kubernetes, every pod runs with a &lt;strong&gt;service account&lt;/strong&gt;. Cloud providers can trust Kubernetes service account tokens and exchange them for short-lived cloud credentials:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AWS&lt;/strong&gt;: IAM Roles for Service Accounts (IRSA), or the newer &lt;strong&gt;EKS Pod Identity&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Cloud&lt;/strong&gt;: &lt;strong&gt;Workload Identity Federation for GKE&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure&lt;/strong&gt;: &lt;strong&gt;Microsoft Entra Workload ID&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The setup: link a Kubernetes service account to a cloud role. Pods using that service account automatically get temporary credentials, rotated for them, scoped to that role. No secret to store, nothing to leak for long.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: v1
kind: ServiceAccount
metadata:
  name: orders
  namespace: shop
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/shop-orders
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The same idea works in CI: &lt;strong&gt;OIDC federation&lt;/strong&gt; lets GitHub Actions, GitLab CI and others get cloud credentials without stored keys.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The safest credential is the one that's issued for a few minutes, to one workload, for one job, and then simply expires.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;SPIFFE, simply&lt;/h2&gt;
&lt;p&gt;Cloud workload identity solves "my pod talking to my cloud provider". But what about service-to-service calls, across clusters, clouds and on-premises machines?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SPIFFE&lt;/strong&gt; (Secure Production Identity Framework For Everyone) is a CNCF standard for workload identity, independent of any platform. It defines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SPIFFE ID&lt;/strong&gt;: a unique name for a workload, written as a URI, like &lt;code&gt;spiffe://acme.com/ns/shop/sa/orders&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SVID&lt;/strong&gt; (SPIFFE Verifiable Identity Document): a short-lived document proving that identity, either an &lt;strong&gt;X.509 certificate&lt;/strong&gt; or a &lt;strong&gt;JWT&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workload API&lt;/strong&gt;: a local API where workloads fetch their SVIDs, without needing any secret to start with.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;SPIRE&lt;/strong&gt; is the reference implementation. A SPIRE server issues identities, and agents on each node &lt;strong&gt;attest&lt;/strong&gt; workloads: they check what the workload really is (which Kubernetes service account, which node, which process) before handing out an identity. Certificates are rotated automatically, often every hour.&lt;/p&gt;
&lt;p&gt;Many tools speak SPIFFE: service meshes like Istio and Linkerd use SPIFFE-style identities internally, and Envoy, Cilium and various databases and proxies can use SVIDs.&lt;/p&gt;
&lt;h2&gt;mTLS between services&lt;/h2&gt;
&lt;p&gt;With identities in place, services can use &lt;strong&gt;mutual TLS (mTLS)&lt;/strong&gt;: both sides present certificates, so each knows exactly who it's talking to, and the traffic is encrypted.&lt;/p&gt;
&lt;p&gt;Doing mTLS by hand in every application is painful. That's why it's usually handled by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A service mesh&lt;/strong&gt; (Istio, Linkerd, Cilium), which adds mTLS between all services automatically.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SPIFFE libraries&lt;/strong&gt; (go-spiffe and others) for applications that handle it themselves.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On top of mTLS, you can write &lt;strong&gt;authorisation policies&lt;/strong&gt;: "only the &lt;code&gt;checkout&lt;/code&gt; service may call &lt;code&gt;payments&lt;/code&gt; on &lt;code&gt;/charge&lt;/code&gt;". That's real zero trust: identity-based access, not network-based.&lt;/p&gt;
&lt;h2&gt;Where to start&lt;/h2&gt;
&lt;p&gt;You don't need SPIRE on day one. A practical path:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Replace cloud access keys&lt;/strong&gt; in Kubernetes with your provider's workload identity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Replace CI cloud keys&lt;/strong&gt; with OIDC federation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Move remaining secrets&lt;/strong&gt; into a secret manager with short-lived or rotated credentials.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add mTLS between services&lt;/strong&gt;, most easily through a service mesh.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consider SPIFFE/SPIRE&lt;/strong&gt; when you need one identity system across clusters, clouds and VMs.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;So, is it worth the effort?&lt;/h2&gt;
&lt;p&gt;Yes. Removing static credentials eliminates one of the most common causes of breaches. The first steps, cloud workload identity and CI OIDC, are surprisingly easy and give immediate benefit.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: services should prove who they are every time, with credentials that expire before anyone can misuse them. Passwords are for humans, and even we're giving them up.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>When npm turns against you</title>
      <link>https://deslypeter.com/writing/when-npm-turns-against-you</link>
      <guid>https://deslypeter.com/writing/when-npm-turns-against-you.html?lang=en</guid>
      <description>Worms, typosquats and hijacked maintainers. How I protect builds from malicious packages.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;A modern JavaScript project easily has over a thousand dependencies, most of them indirect. Python, Go, Rust and Java projects aren't far behind. Every one of those packages is code written by someone you've never met, running on your laptop and in your CI with access to your secrets.&lt;/p&gt;
&lt;p&gt;For years that trust mostly worked. Recently, attackers have shown just how fragile it is.&lt;/p&gt;
&lt;h2&gt;Recent attacks&lt;/h2&gt;
&lt;p&gt;Without going into every incident, the pattern of the last couple of years is clear:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hijacked maintainer accounts.&lt;/strong&gt; In September 2025, attackers phished maintainers of very popular npm packages and published malicious versions of libraries downloaded billions of times per week. The code tried to steal cryptocurrency from users.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-spreading worms.&lt;/strong&gt; Also in 2025, a worm nicknamed &lt;strong&gt;Shai-Hulud&lt;/strong&gt; spread through npm: once installed, it stole tokens from the developer's machine or CI, and used them to publish infected versions of other packages that person maintained. Hundreds of packages were affected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compromised build tooling.&lt;/strong&gt; Attackers have inserted code that searched developers' machines for secrets, and even used AI command-line tools installed locally to help find them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Typosquatting and slopsquatting.&lt;/strong&gt; Packages with names one letter away from popular ones, or names AI assistants tend to invent.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Long-game attacks&lt;/strong&gt; like the XZ Utils backdoor, where an attacker spent years gaining a maintainer's trust.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What these have in common: they don't exploit a bug in your code. They exploit the trust you place in your dependencies.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Installing a package is running a stranger's code with your credentials. We just stopped thinking about it that way.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Lockfiles and private registries&lt;/h2&gt;
&lt;p&gt;The basics matter most:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Commit lockfiles&lt;/strong&gt; (&lt;code&gt;package-lock.json&lt;/code&gt;, &lt;code&gt;pnpm-lock.yaml&lt;/code&gt;, &lt;code&gt;poetry.lock&lt;/code&gt;, &lt;code&gt;uv.lock&lt;/code&gt;, &lt;code&gt;go.sum&lt;/code&gt;) and install with them strictly: &lt;code&gt;npm ci&lt;/code&gt; instead of &lt;code&gt;npm install&lt;/code&gt; in CI. That way, a new malicious version can't sneak in during a build.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use a private registry or proxy&lt;/strong&gt; (Artifactory, Nexus, GitHub Packages, AWS CodeArtifact, Google Artifact Registry). It caches approved packages, can block known-bad ones, and gives you a single place to control what comes in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scope internal packages&lt;/strong&gt; (like &lt;code&gt;@acme/...&lt;/code&gt;) and configure your package manager so internal names can only come from your registry. That prevents &lt;strong&gt;dependency confusion&lt;/strong&gt;, where an attacker publishes a public package with the same name as your internal one.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Waiting before installing new versions&lt;/h2&gt;
&lt;p&gt;Most malicious package versions are detected and removed within hours or days. So a simple but powerful defence: &lt;strong&gt;don't install brand-new versions immediately&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Renovate's &lt;code&gt;minimumReleaseAge&lt;/code&gt;&lt;/strong&gt; waits a configurable time (for example three days) before proposing an update.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pnpm&lt;/strong&gt; supports a minimum release age setting, so it won't resolve versions younger than the threshold.&lt;/li&gt;
&lt;li&gt;Some registries and proxies support similar quarantine periods.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You lose a few days on new features. You gain protection against most "publish and hope" attacks.&lt;/p&gt;
&lt;h2&gt;Limiting what install scripts can do&lt;/h2&gt;
&lt;p&gt;Many attacks run during installation, through &lt;code&gt;postinstall&lt;/code&gt; scripts.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Disable install scripts by default&lt;/strong&gt; where possible (&lt;code&gt;npm config set ignore-scripts true&lt;/code&gt;, pnpm's stricter defaults for dependency build scripts) and allow them only for packages that genuinely need them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run builds in isolated, ephemeral environments&lt;/strong&gt;: a fresh container or CI runner per job, without long-lived credentials lying around.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restrict network egress&lt;/strong&gt; from CI where you can. A build that can't reach an unknown server can't send your secrets there.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Never keep publish tokens on developer machines&lt;/strong&gt; if you can avoid it. Use &lt;strong&gt;trusted publishing&lt;/strong&gt; from CI (npm and PyPI both support OIDC-based publishing), and require 2FA for maintainers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tools that warn me&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Socket&lt;/strong&gt;: analyses packages for suspicious behaviour (install scripts, network access, obfuscated code, new maintainers), not just known vulnerabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OSV-Scanner&lt;/strong&gt;, &lt;strong&gt;Trivy&lt;/strong&gt;, &lt;strong&gt;Grype&lt;/strong&gt;, &lt;strong&gt;npm audit&lt;/strong&gt;: known vulnerabilities and known malicious packages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenSSF Scorecard&lt;/strong&gt;: rates how well a project follows security practices before you adopt it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub's dependency review&lt;/strong&gt; to see new dependencies and their risks in pull requests.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And a non-tool: &lt;strong&gt;question new dependencies&lt;/strong&gt;. Does this project really need a package for left-padding a string? Every dependency you don't add is one you never have to worry about.&lt;/p&gt;
&lt;h2&gt;If you were affected&lt;/h2&gt;
&lt;p&gt;When a compromised package hits your stack:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Find where it was installed (SBOMs and lockfiles make this fast).&lt;/li&gt;
&lt;li&gt;Assume any secrets accessible during install are compromised: &lt;strong&gt;rotate them&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Check CI logs and machines for signs of the malicious behaviour.&lt;/li&gt;
&lt;li&gt;Pin to a known-good version and rebuild.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Strict lockfile installs in CI, a minimum release age for updates, a private proxy registry, and no long-lived publish tokens. Those four measures would have blunted most of the recent attacks.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: dependencies are a gift from the open-source world. Accept them gratefully, but check what's inside before you open them in production.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Quantum computers and today's encryption</title>
      <link>https://deslypeter.com/writing/quantum-computers-and-encryption</link>
      <guid>https://deslypeter.com/writing/quantum-computers-and-encryption.html?lang=en</guid>
      <description>Quantum computers can't break encryption yet. Why DevOps teams should prepare now anyway.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Every few months there's a headline: "Quantum computer breaks encryption!" Usually, if you read past the headline, it's a research result on a tiny problem. Today's quantum computers are nowhere near breaking the encryption that protects the internet.&lt;/p&gt;
&lt;p&gt;So why should DevOps engineers care now? Because the migration to quantum-safe cryptography is one of the biggest infrastructure changes of the next decade, and parts of it are already happening in the tools we use every day.&lt;/p&gt;
&lt;h2&gt;The problem in plain words&lt;/h2&gt;
&lt;p&gt;Most of the internet's security relies on &lt;strong&gt;public-key cryptography&lt;/strong&gt;: RSA and elliptic curve algorithms. They're used in TLS (HTTPS), SSH, VPNs, code signing, certificates and much more. Their security rests on maths problems that are extremely hard for normal computers.&lt;/p&gt;
&lt;p&gt;A large enough, stable quantum computer running &lt;strong&gt;Shor's algorithm&lt;/strong&gt; could solve those problems efficiently. That would break RSA and elliptic curve cryptography.&lt;/p&gt;
&lt;p&gt;Symmetric encryption like AES and hash functions like SHA-256 are much less affected. Longer keys (AES-256) are considered safe.&lt;/p&gt;
&lt;p&gt;Nobody knows exactly when such a quantum computer will exist. Estimates range from several years to decades. But "we don't know when" is not the same as "we don't need to worry".&lt;/p&gt;
&lt;h2&gt;"Harvest now, decrypt later"&lt;/h2&gt;
&lt;p&gt;Here's the reason to act now. An attacker can &lt;strong&gt;record encrypted traffic today&lt;/strong&gt; and store it. When a capable quantum computer exists, they decrypt it.&lt;/p&gt;
&lt;p&gt;If your data needs to stay secret for ten or twenty years, like health records, financial data, government data, trade secrets or personal communications, it may already be at risk from traffic being recorded today.&lt;/p&gt;
&lt;p&gt;That's why the focus right now is on &lt;strong&gt;key exchange&lt;/strong&gt;: the part of TLS and other protocols that protects the session keys.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The data you send today needs to be safe from the computers of tomorrow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The new standards&lt;/h2&gt;
&lt;p&gt;In August 2024, the US National Institute of Standards and Technology (NIST) published the first post-quantum cryptography standards, after years of public competition and analysis:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ML-KEM&lt;/strong&gt; (FIPS 203, formerly known as CRYSTALS-Kyber): for key exchange / encapsulation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ML-DSA&lt;/strong&gt; (FIPS 204, formerly CRYSTALS-Dilithium): for digital signatures.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SLH-DSA&lt;/strong&gt; (FIPS 205, formerly SPHINCS+): a hash-based signature scheme, as a conservative backup.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;More algorithms are in progress. European agencies like Germany's BSI broadly align on these, with their own recommendations, often favouring hybrid approaches.&lt;/p&gt;
&lt;h2&gt;What's already supported&lt;/h2&gt;
&lt;p&gt;The good news: you might already be using post-quantum cryptography without knowing it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Browsers&lt;/strong&gt;: Chrome, Firefox and Safari support &lt;strong&gt;hybrid key exchange&lt;/strong&gt; (X25519 combined with ML-KEM) in TLS 1.3.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDNs and large providers&lt;/strong&gt;: Cloudflare and others enable hybrid post-quantum key exchange by default, and a large share of their traffic already uses it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenSSL 3.5&lt;/strong&gt; added support for ML-KEM, ML-DSA and SLH-DSA.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenSSH&lt;/strong&gt; has used hybrid post-quantum key exchange by default for some time, and recent versions default to an ML-KEM-based hybrid.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Go, Java, BoringSSL&lt;/strong&gt; and other libraries have added support.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;"Hybrid" means combining a classical algorithm with a post-quantum one, so the connection is safe as long as either one holds. That protects against both quantum attacks and the risk that a new algorithm turns out to have weaknesses.&lt;/p&gt;
&lt;h2&gt;Crypto agility: what DevOps teams should do&lt;/h2&gt;
&lt;p&gt;The biggest lesson from past migrations (SHA-1 to SHA-256, TLS 1.0 to 1.2) is that they take years, mostly because nobody knows where all the crypto lives. So start there:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Make an inventory.&lt;/strong&gt; Where do you use cryptography? TLS endpoints, internal mTLS, SSH, VPNs, certificates, code signing, encrypted storage, tokens, third-party libraries. Tools that scan certificates and TLS configurations help.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prioritise long-lived secrets.&lt;/strong&gt; What data needs to stay confidential for many years? That traffic should move to hybrid key exchange first.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep software up to date.&lt;/strong&gt; Most post-quantum support arrives through library, OS, load balancer and runtime updates. Old software is the biggest blocker.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prefer TLS 1.3 everywhere.&lt;/strong&gt; Post-quantum key exchange is built for it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build crypto agility.&lt;/strong&gt; Avoid hardcoded algorithms. Make it possible to change algorithms through configuration, not code rewrites.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ask your vendors&lt;/strong&gt; about their post-quantum roadmap: cloud providers, load balancers, HSMs, VPNs, certificate authorities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Watch certificates.&lt;/strong&gt; Post-quantum signatures in public certificates will come later and bring larger certificates and handshakes. Test performance when the time comes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;So, should you panic?&lt;/h2&gt;
&lt;p&gt;No. Your HTTPS isn't broken. But this is a slow, multi-year migration, and the teams that start with an inventory and up-to-date software will have a much easier time than those who wait for a deadline.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: quantum computers aren't here yet, but the migration is. Know where your crypto lives, keep your stack current, and let hybrid key exchange do the rest.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>SLOs: deciding how reliable is reliable enough</title>
      <link>https://deslypeter.com/writing/slos-error-budgets</link>
      <guid>https://deslypeter.com/writing/slos-error-budgets.html?lang=en</guid>
      <description>100% uptime is the wrong goal. How error budgets help teams decide.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Ask any manager how reliable a service should be, and the answer is usually "100%". It sounds right. Who wants downtime?&lt;/p&gt;
&lt;p&gt;But 100% is impossible, and chasing it is incredibly expensive. Every extra "nine" of availability costs more than the last. And your users can't tell the difference between 99.99% and 100%, because their own Wi-Fi, phone and ISP fail far more often than that.&lt;/p&gt;
&lt;p&gt;Service Level Objectives (SLOs) are a way to decide, on purpose, how reliable is reliable enough.&lt;/p&gt;
&lt;h2&gt;SLIs, SLOs, error budgets, simply&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;SLI (Service Level Indicator)&lt;/strong&gt;: a measurement of how your service is doing, from the user's point of view. For example: the percentage of HTTP requests that succeed, or the percentage served in under 300 ms.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SLO (Service Level Objective)&lt;/strong&gt;: a target for that indicator over a time window. For example: 99.9% of requests succeed, measured over 30 days.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Error budget&lt;/strong&gt;: the amount of failure the SLO allows. With a 99.9% target over 30 days, you can afford 0.1% failed requests, or roughly 43 minutes of full downtime.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SLA (Service Level Agreement)&lt;/strong&gt;: a contract with customers, usually with financial consequences. SLAs should be looser than your internal SLOs, so you notice problems before you owe anyone money.&lt;/p&gt;
&lt;h2&gt;Why error budgets are so useful&lt;/h2&gt;
&lt;p&gt;The error budget turns reliability from an argument into a shared number.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Budget left?&lt;/strong&gt; The team can ship features, experiment, take reasonable risks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Budget almost gone?&lt;/strong&gt; Slow down, focus on reliability, postpone risky changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Budget exhausted?&lt;/strong&gt; Freeze risky deployments and fix what's causing the failures.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Product and engineering stop arguing about "should we work on reliability or features?" The budget answers it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;An SLO isn't a promise that nothing breaks. It's an agreement about how much breaking is acceptable, and what we'll do when we go over.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Picking good SLIs&lt;/h2&gt;
&lt;p&gt;Good SLIs measure what users actually experience:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Availability&lt;/strong&gt;: proportion of successful requests (non-5xx responses).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Latency&lt;/strong&gt;: proportion of requests faster than a threshold.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Freshness&lt;/strong&gt;: for data pipelines, how recent the data is.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correctness&lt;/strong&gt;: for some systems, whether results are right.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Measure as close to the user as possible: at the load balancer or gateway rather than deep inside the service. Avoid SLIs like "CPU below 80%": users don't care about CPU.&lt;/p&gt;
&lt;h2&gt;Picking a target&lt;/h2&gt;
&lt;p&gt;Some practical advice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Start with your current performance.&lt;/strong&gt; If you're at 99.5% today, a 99.99% SLO is fantasy. Set something achievable, then tighten it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Different services, different targets.&lt;/strong&gt; Checkout might need 99.95%. An internal report generator might be fine with 99%.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consider dependencies.&lt;/strong&gt; Your service can't be more reliable than the things it depends on, unless you design for their failures.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use a 28 or 30-day rolling window&lt;/strong&gt; to start.&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SLO&lt;/th&gt;
&lt;th&gt;Allowed downtime per 30 days&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;99%&lt;/td&gt;
&lt;td&gt;about 7 hours 12 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99.5%&lt;/td&gt;
&lt;td&gt;about 3 hours 36 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99.9%&lt;/td&gt;
&lt;td&gt;about 43 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99.95%&lt;/td&gt;
&lt;td&gt;about 22 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99.99%&lt;/td&gt;
&lt;td&gt;about 4 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Looking at this table usually ends the "100%" conversation quickly.&lt;/p&gt;
&lt;h2&gt;Alerting on burn rate&lt;/h2&gt;
&lt;p&gt;SLOs also make alerting much better. Instead of alerting on CPU or individual errors, alert on how fast you're &lt;strong&gt;burning&lt;/strong&gt; the error budget.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fast burn&lt;/strong&gt;: at the current rate, you'll use the whole month's budget in hours. Page someone now.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slow burn&lt;/strong&gt;: you'll use it up in days. Create a ticket, look at it during working hours.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Google SRE Workbook recommends &lt;strong&gt;multi-window, multi-burn-rate alerts&lt;/strong&gt;, for example: page if you've burned 2% of the monthly budget in the last hour (and the last five minutes confirm it's still happening). That catches real incidents quickly and ignores short blips.&lt;/p&gt;
&lt;h2&gt;Tools that help&lt;/h2&gt;
&lt;p&gt;Writing these Prometheus rules by hand is tedious and error-prone. Tools generate them from a simple SLO definition:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sloth&lt;/strong&gt;: generates Prometheus recording and alerting rules from an SLO spec.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pyrra&lt;/strong&gt;: similar, with a nice UI showing budgets and burn rates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenSLO&lt;/strong&gt;: a vendor-neutral specification for defining SLOs as code.&lt;/li&gt;
&lt;li&gt;Most commercial observability platforms (Datadog, Grafana Cloud, Honeycomb, Nobl9 and others) have SLO features built in.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;# Sloth example
version: "prometheus/v1"
service: "shop-api"
slos:
  - name: "requests-availability"
    objective: 99.9
    sli:
      events:
        error_query: sum(rate(http_requests_total{job="shop-api",code=~"5.."}[{{.window}}]))
        total_query: sum(rate(http_requests_total{job="shop-api"}[{{.window}}]))
    alerting:
      page_alert:
        labels:
          severity: critical
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Pick your most important user-facing service. Define one availability SLI and one latency SLI. Set targets based on the last month's real data. Add burn-rate alerts, show the budget on a dashboard, and review it as a team every couple of weeks.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: perfection isn't the goal. Knowing exactly how imperfect you can afford to be, and acting on it, is.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>eBPF: seeing inside Linux without touching your code</title>
      <link>https://deslypeter.com/writing/ebpf-for-devops</link>
      <guid>https://deslypeter.com/writing/ebpf-for-devops.html?lang=en</guid>
      <description>The kernel technology behind modern networking, security and observability tools.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;If you follow cloud-native tooling, you've seen "eBPF" everywhere. Cilium uses it for networking. Falco and Tetragon use it for security. Pixie, Grafana Beyla and others use it for observability. Cloud providers use it under the hood of their Kubernetes networking.&lt;/p&gt;
&lt;p&gt;But what actually is it, and why does it matter for DevOps engineers who'll never write kernel code?&lt;/p&gt;
&lt;h2&gt;eBPF, simply&lt;/h2&gt;
&lt;p&gt;The Linux kernel sees everything: every network packet, every file opened, every process started, every system call. Traditionally, if you wanted to hook into that, you had two bad options: change the kernel itself (slow, risky, takes years to reach users) or write a kernel module (powerful, but one bug can crash the whole machine).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;eBPF&lt;/strong&gt; (originally "extended Berkeley Packet Filter", now just a name) is a third option. It lets you run small, sandboxed programs inside the kernel, safely, without changing kernel code or loading modules.&lt;/p&gt;
&lt;p&gt;Before an eBPF program runs, the kernel's &lt;strong&gt;verifier&lt;/strong&gt; checks it: it must terminate, it can't access memory it shouldn't, it can't crash the system. Then it's compiled to native code and runs extremely fast.&lt;/p&gt;
&lt;p&gt;These programs attach to &lt;strong&gt;hooks&lt;/strong&gt;: network events, system calls, function entries and exits in the kernel or even in applications. When the event happens, the program runs, collects data or makes a decision, and shares results with normal programs in user space.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;eBPF turns the Linux kernel into a programmable platform, safely, without rebooting and without changing a line of your application.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Why it matters for DevOps&lt;/h2&gt;
&lt;p&gt;You probably won't write eBPF programs yourself. But you'll use tools built on it, and understanding what they do helps you choose and debug them.&lt;/p&gt;
&lt;p&gt;The big advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No code changes.&lt;/strong&gt; Observe applications in any language without adding libraries or agents to them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Low overhead.&lt;/strong&gt; Runs in the kernel, very efficiently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complete visibility.&lt;/strong&gt; Sees everything happening on the node, including things applications don't log.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Can enforce, not just observe.&lt;/strong&gt; Drop packets, block system calls, kill processes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The tools built on it&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Networking:&lt;/strong&gt;
- &lt;strong&gt;Cilium&lt;/strong&gt;: a Kubernetes CNI that uses eBPF instead of iptables for routing, load balancing and network policies. Faster and more scalable with many services, and adds features like identity-aware policies and transparent encryption. It's a CNCF graduated project and the default networking for several managed Kubernetes offerings.
- &lt;strong&gt;Hubble&lt;/strong&gt;: Cilium's observability layer, showing which services talk to which, with flow logs and a service map.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt;
- &lt;strong&gt;Falco&lt;/strong&gt;: detects suspicious behaviour, like a shell opened inside a container or unexpected file access.
- &lt;strong&gt;Tetragon&lt;/strong&gt;: from the Cilium project, observes and can enforce security policies at the kernel level, for example killing a process that tries to read a sensitive file.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Observability:&lt;/strong&gt;
- &lt;strong&gt;Grafana Beyla&lt;/strong&gt;: auto-instruments HTTP and gRPC services with eBPF and produces OpenTelemetry metrics and traces, without touching the application. (Its core has been contributed to the OpenTelemetry project as the eBPF instrumentation effort.)
- &lt;strong&gt;Pixie&lt;/strong&gt;: instant visibility into Kubernetes clusters, including request-level data, without instrumentation.
- &lt;strong&gt;Parca&lt;/strong&gt; and &lt;strong&gt;Pyroscope&lt;/strong&gt;: continuous profiling using eBPF, showing which functions use CPU across all processes.
- &lt;strong&gt;bpftrace&lt;/strong&gt; and &lt;strong&gt;BCC&lt;/strong&gt; tools: for hands-on Linux performance analysis.&lt;/p&gt;
&lt;h2&gt;Zero-instrumentation tracing&lt;/h2&gt;
&lt;p&gt;One of the most exciting uses: getting request metrics and basic traces from applications nobody wants to touch. Legacy services, third-party binaries, apps in languages without good OpenTelemetry support.&lt;/p&gt;
&lt;p&gt;An eBPF-based tool watches network calls and certain functions, recognises HTTP and gRPC requests, and creates RED metrics (rate, errors, duration) and spans automatically. It's not as detailed as proper in-code instrumentation, but it gives you a solid baseline for everything, from day one.&lt;/p&gt;
&lt;h2&gt;Trying it yourself&lt;/h2&gt;
&lt;p&gt;The easiest way to feel eBPF's power on a Linux machine is bpftrace:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;# Show every new process being started, system-wide
sudo bpftrace -e 'tracepoint:syscalls:sys_enter_execve { printf("%s -&amp;gt; %s\n", comm, str(args-&amp;gt;filename)); }'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Run it and open a terminal: you'll see every command as it starts. That's the kernel talking to you directly.&lt;/p&gt;
&lt;h2&gt;Limitations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kernel version matters.&lt;/strong&gt; Modern features need reasonably recent kernels (5.x and newer, ideally 5.10+ or 6.x). Old enterprise Linux versions can be a problem.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privileges.&lt;/strong&gt; eBPF tools usually need elevated permissions on the node. Trust the tools you install.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linux only&lt;/strong&gt;, mostly. Windows has an eBPF implementation in progress, but the ecosystem is Linux-first.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Encrypted traffic&lt;/strong&gt; is harder to inspect, though tools can hook into TLS libraries in some cases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debugging eBPF itself&lt;/strong&gt; can be tricky when things go wrong.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, should you care?&lt;/h2&gt;
&lt;p&gt;Yes, even if you never write a line of eBPF. It's quietly becoming the foundation of Kubernetes networking, runtime security and modern observability. Knowing what it is helps you understand why Cilium is faster, how Falco sees inside containers, and how tools can trace your apps without touching them.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: eBPF is the most important Linux technology most people never see. Learn what it does, and a lot of modern tooling suddenly makes sense.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Alerts that deserve to wake you up</title>
      <link>https://deslypeter.com/writing/alerts-that-deserve-to-wake-you</link>
      <guid>https://deslypeter.com/writing/alerts-that-deserve-to-wake-you.html?lang=en</guid>
      <description>If an alert doesn't need action, it shouldn't page anyone.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;The worst kind of on-call shift isn't the one with a big outage. It's the one with forty small alerts, none of which needed anything. Disk at 81%. CPU spike that resolved itself. A pod restarted once. You acknowledge them half asleep, and by morning you're exhausted and nothing was actually wrong.&lt;/p&gt;
&lt;p&gt;Do that for a few months, and people start ignoring alerts. Then the real one gets ignored too.&lt;/p&gt;
&lt;p&gt;Good alerting is a design discipline. Here are the rules I follow.&lt;/p&gt;
&lt;h2&gt;Rule 1: every page needs a human action, now&lt;/h2&gt;
&lt;p&gt;Before creating any alert that pages someone, ask:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does this need a human to do something?&lt;/li&gt;
&lt;li&gt;Does it need to happen &lt;strong&gt;now&lt;/strong&gt;, or can it wait until working hours?&lt;/li&gt;
&lt;li&gt;Will the person receiving it know what to do?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the answer to any of these is no, it shouldn't be a page. It can be a ticket, a chat message, a dashboard, or nothing.&lt;/p&gt;
&lt;p&gt;A useful split:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Page&lt;/strong&gt;: user-facing impact happening or imminent. Wake someone up.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ticket&lt;/strong&gt;: needs fixing, but not tonight. A disk filling slowly, a certificate expiring in two weeks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dashboard / log&lt;/strong&gt;: useful context, no action needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;An alert that doesn't need action isn't an alert. It's noise with a phone number.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Rule 2: alert on symptoms, not causes&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Symptoms&lt;/strong&gt; are what users experience: errors, slowness, unavailability. &lt;strong&gt;Causes&lt;/strong&gt; are what might lead there: high CPU, a pod restart, a full queue.&lt;/p&gt;
&lt;p&gt;Alert on symptoms. High CPU isn't a problem if requests are fast. A restarted pod isn't a problem if users didn't notice. But a 5% error rate on checkout is a problem regardless of what caused it.&lt;/p&gt;
&lt;p&gt;Causes still matter, as &lt;strong&gt;context&lt;/strong&gt; on dashboards, or as tickets when they predict future problems (like a disk that will be full in three days).&lt;/p&gt;
&lt;p&gt;The best symptom alerts are based on &lt;strong&gt;SLOs and burn rates&lt;/strong&gt;: page when the error budget is burning fast enough to matter.&lt;/p&gt;
&lt;h2&gt;Rule 3: group and route sensibly&lt;/h2&gt;
&lt;p&gt;One problem shouldn't produce twenty notifications. In &lt;strong&gt;Prometheus Alertmanager&lt;/strong&gt; (and most alerting tools):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grouping&lt;/strong&gt;: combine related alerts (same service, same cluster) into one notification.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inhibition&lt;/strong&gt;: if a whole cluster is down, suppress the hundreds of service alerts it causes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Routing&lt;/strong&gt;: send alerts to the team that owns the service, with different channels for different severities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Silences&lt;/strong&gt;: mute alerts during planned maintenance.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;route:
  receiver: default
  group_by: ["alertname", "cluster", "service"]
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h
  routes:
  - matchers: [severity="critical"]
    receiver: pagerduty-oncall
  - matchers: [severity="warning"]
    receiver: team-chat

inhibit_rules:
- source_matchers: [alertname="ClusterDown"]
  target_matchers: [severity=~"warning|critical"]
  equal: ["cluster"]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For the paging layer, tools like PagerDuty, incident.io, Grafana OnCall (and Grafana's IRM features), Opsgenie alternatives and others handle schedules, escalation and acknowledgement. (Atlassian announced Opsgenie's end of sale, so teams using it are moving elsewhere.)&lt;/p&gt;
&lt;h2&gt;Rule 4: a runbook for every alert&lt;/h2&gt;
&lt;p&gt;When an alert fires at 3 a.m., the person on call might not know that service well. Every alert should link to a &lt;strong&gt;runbook&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What does this alert mean?&lt;/li&gt;
&lt;li&gt;How bad is it? Who's affected?&lt;/li&gt;
&lt;li&gt;How do I check what's going on? (Links to dashboards, queries.)&lt;/li&gt;
&lt;li&gt;What are the common fixes?&lt;/li&gt;
&lt;li&gt;Who do I escalate to?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Put the runbook link directly in the alert annotations. If you can't write a runbook for an alert, that's a strong sign the alert isn't actionable.&lt;/p&gt;
&lt;h2&gt;Rule 5: review alerts regularly&lt;/h2&gt;
&lt;p&gt;Alerts rot. Services change, thresholds become wrong, owners move on. A monthly alert review with the on-call team works wonders:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which alerts fired most often?&lt;/li&gt;
&lt;li&gt;Which led to action? Which were ignored?&lt;/li&gt;
&lt;li&gt;Which incidents were &lt;strong&gt;not&lt;/strong&gt; caught by an alert?&lt;/li&gt;
&lt;li&gt;Delete, tune or downgrade the noisy ones. Add missing ones.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Track a few numbers over time: pages per shift, pages outside working hours, and the &lt;strong&gt;actionability rate&lt;/strong&gt; (percentage of pages that needed action).&lt;/p&gt;
&lt;h2&gt;A few more tips&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Use &lt;code&gt;for:&lt;/code&gt; durations&lt;/strong&gt; so short blips don't page: &lt;code&gt;for: 5m&lt;/code&gt; on most alerts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test your alerts&lt;/strong&gt;: do they actually fire? Alertmanager's routing tree can be tested, and Prometheus rules can be unit tested with &lt;code&gt;promtool&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alert on the alerting pipeline&lt;/strong&gt;: a "dead man's switch" alert that always fires, so you notice if alerting itself breaks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don't page on predictions alone&lt;/strong&gt; unless they're very reliable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;List every alert that paged someone last month. For each, ask: did it need action, right then? Downgrade or delete the ones that didn't. You'll likely remove half of them, and nobody will miss them.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: protect your on-call engineers' sleep like it's a production system. Because it is.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>When things break: incidents and blameless postmortems</title>
      <link>https://deslypeter.com/writing/incidents-and-blameless-postmortems</link>
      <guid>https://deslypeter.com/writing/incidents-and-blameless-postmortems.html?lang=en</guid>
      <description>The roles, the messages and the postmortem template I use.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Every system breaks eventually. What separates good teams from struggling ones isn't whether they have incidents. It's how they handle them: calmly or chaotically, and whether they learn something afterwards or just move on and wait for the next one.&lt;/p&gt;
&lt;p&gt;Here's the incident process I prefer, and how to write postmortems that actually improve things.&lt;/p&gt;
&lt;h2&gt;Before the incident: decide how you'll work&lt;/h2&gt;
&lt;p&gt;Incidents are stressful. Stress makes people bad at improvising. So decide the basics in advance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Severity levels&lt;/strong&gt;, with clear examples.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Who declares an incident&lt;/strong&gt;, and how (a chat command, a button, a phone call).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Where people gather&lt;/strong&gt;: a dedicated chat channel per incident, plus a call if needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Roles&lt;/strong&gt;, so everyone knows who does what.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Communication templates&lt;/strong&gt;, so updates go out quickly and consistently.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A simple severity scale:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Severity&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SEV1&lt;/td&gt;
&lt;td&gt;Major impact on many users or core business&lt;/td&gt;
&lt;td&gt;Checkout down for everyone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SEV2&lt;/td&gt;
&lt;td&gt;Significant impact, workaround exists or partial outage&lt;/td&gt;
&lt;td&gt;Payments failing for one provider&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SEV3&lt;/td&gt;
&lt;td&gt;Minor impact, limited users&lt;/td&gt;
&lt;td&gt;A non-critical feature broken&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;When in doubt, declare higher. It's easy to downgrade.&lt;/p&gt;
&lt;h2&gt;Who does what in an incident&lt;/h2&gt;
&lt;p&gt;The most important role is the &lt;strong&gt;Incident Commander (IC)&lt;/strong&gt;. The IC doesn't fix the problem. They coordinate: make sure the right people are involved, decisions are made, and nothing falls through the cracks.&lt;/p&gt;
&lt;p&gt;Other common roles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Operations / subject matter experts&lt;/strong&gt;: the people actually investigating and fixing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Communications lead&lt;/strong&gt;: writes updates for stakeholders and customers, so the engineers can focus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scribe&lt;/strong&gt;: keeps a timeline of what happened and what was decided. (AI tools increasingly help here.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In a small team, one person might take on multiple roles. That's fine, as long as someone is clearly in charge.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In an incident, the most dangerous situation is five smart people all fixing things at once, without anyone knowing what the others changed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;During the incident&lt;/h2&gt;
&lt;p&gt;A few habits that make a big difference:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mitigate first, investigate later.&lt;/strong&gt; Roll back, fail over, scale up, turn off the feature flag. Find the root cause once users are okay.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Say what you're doing before you do it&lt;/strong&gt;: "I'm going to restart the payment workers now." It avoids conflicting actions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write things down in the channel&lt;/strong&gt;: observations, hypotheses, actions, results.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regular updates&lt;/strong&gt;, even when there's nothing new: "Still investigating, next update in 30 minutes."&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Know when to escalate.&lt;/strong&gt; Pulling in another team early is better than struggling alone for an hour.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A simple status update template:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[SEV2] Payment failures, investigating.&lt;/strong&gt; Since 14:05 CET, around 10% of card payments fail. Other payment methods work. We're investigating a possible issue with our payment provider. Next update by 14:45.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;After the incident: blameless postmortems&lt;/h2&gt;
&lt;p&gt;A postmortem is a written analysis of what happened and how to prevent it. &lt;strong&gt;Blameless&lt;/strong&gt; means the focus is on the system, not on who made a mistake.&lt;/p&gt;
&lt;p&gt;Why blameless? Because people make mistakes all the time, and systems should be designed to handle that. If the takeaway from an incident is "Alex should have been more careful", nothing changes, except that people start hiding mistakes. If the takeaway is "our deploy process let an untested config reach production without a check", you can fix the process.&lt;/p&gt;
&lt;p&gt;Questions to ask:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What made this mistake easy to make?&lt;/li&gt;
&lt;li&gt;Why didn't our tests, reviews or monitoring catch it?&lt;/li&gt;
&lt;li&gt;What made it hard to detect, diagnose or fix?&lt;/li&gt;
&lt;li&gt;What went well? (Always include this.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;My postmortem template&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Summary&lt;/strong&gt;: two or three sentences a manager could understand.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact&lt;/strong&gt;: who was affected, how, for how long. Numbers if possible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timeline&lt;/strong&gt;: key events with timestamps, from the trigger to full resolution.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Root cause and contributing factors&lt;/strong&gt;: usually several things combined, not one single cause.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detection&lt;/strong&gt;: how did we find out? How could we have found out sooner?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Response&lt;/strong&gt;: what helped, what slowed us down.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What went well.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Action items&lt;/strong&gt;: specific, with an owner and a due date.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lessons learned.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Making sure action items happen&lt;/h2&gt;
&lt;p&gt;The most common failure of postmortems: great analysis, a list of action items, and then nothing happens. Fixes compete with feature work and lose.&lt;/p&gt;
&lt;p&gt;What helps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Few, important action items&lt;/strong&gt; instead of a long wish list.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tracked in the normal backlog&lt;/strong&gt;, not a separate document.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reviewed regularly&lt;/strong&gt;, for example in a monthly reliability meeting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Leadership support&lt;/strong&gt;, so fixing the cause of an incident is considered real work.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tools that help&lt;/h2&gt;
&lt;p&gt;incident.io, Rootly, FireHydrant, PagerDuty, Jira Service Management and others automate the process: creating channels, assigning roles, keeping timelines, posting status updates and generating postmortem drafts. Useful, but the process and culture matter more than the tool.&lt;/p&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Agree on three severity levels, the incident commander role, and a postmortem template. Run a short practice incident (a "game day") so people know the process before a real one. Then, after the next real incident, write a blameless postmortem and follow through on its actions.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: incidents will happen. Handle them calmly, learn from them honestly, and fix the system instead of blaming the person.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Multi-cloud: an honest look</title>
      <link>https://deslypeter.com/writing/multi-cloud-honest-look</link>
      <guid>https://deslypeter.com/writing/multi-cloud-honest-look.html?lang=en</guid>
      <description>The real reasons for multi-cloud, and the hidden costs nobody mentions.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;"We should be multi-cloud" is one of those statements that sounds smart in a strategy meeting. Avoid lock-in! Better negotiating power! Resilience if a provider goes down! Who could argue with that?&lt;/p&gt;
&lt;p&gt;In practice, multi-cloud is often more expensive, more complex and less resilient than people expect. Sometimes it's exactly the right choice. Often it isn't. Here's how I think about it.&lt;/p&gt;
&lt;h2&gt;What people mean by "multi-cloud"&lt;/h2&gt;
&lt;p&gt;The term covers very different setups:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Different workloads on different clouds&lt;/strong&gt;: the data team uses Google Cloud for BigQuery, the main app runs on AWS, Microsoft 365 and some Azure services for IT. This is the most common, and usually happens naturally.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The same application deployable to multiple clouds&lt;/strong&gt;: portable, but only running on one at a time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The same application running actively on multiple clouds at once&lt;/strong&gt;: true multi-cloud active-active. Rare, hard and expensive.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Most companies are in the first category, whether they planned it or not. The debate is usually about the second and third.&lt;/p&gt;
&lt;h2&gt;Good reasons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Regulation and sovereignty&lt;/strong&gt;: some customers or countries require specific providers, or a European alternative.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mergers and acquisitions&lt;/strong&gt;: you bought a company that runs on another cloud. Migrating isn't always worth it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Best-of-breed services&lt;/strong&gt;: a particular provider is clearly better for one need (AI hardware, analytics, a specific managed service).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customer requirements&lt;/strong&gt;: if you sell software that runs in customers' accounts, you need to support the clouds they use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Commercial leverage&lt;/strong&gt;: credible ability to move gives you a better position in price negotiations. But this only works if moving is actually realistic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Weaker reasons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;"Avoiding lock-in" in general.&lt;/strong&gt; Every choice locks you into something: a database, a language, Kubernetes, Terraform. The question isn't whether you're locked in, but whether the cost of leaving is acceptable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;"Resilience against a provider outage."&lt;/strong&gt; Large provider-wide outages do happen, but they're rare. Well-designed multi-region on one provider gives most of the resilience at a fraction of the complexity.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Multi-cloud doesn't remove lock-in. It replaces dependency on one provider with dependency on your own team's ability to run several.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The hidden costs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lowest common denominator.&lt;/strong&gt; To stay portable, you avoid each provider's best managed services. You run your own databases, queues and tooling instead.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data transfer.&lt;/strong&gt; Moving data between clouds is expensive (egress charges) and slow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skills.&lt;/strong&gt; Your team needs deep knowledge of several providers' networking, IAM, security and quirks. That's much harder than mastering one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tooling.&lt;/strong&gt; Security, monitoring, cost management and compliance must work everywhere.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lost discounts.&lt;/strong&gt; Splitting spend reduces the volume discounts and commitments you can negotiate with each provider.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;More things to secure.&lt;/strong&gt; Every additional cloud is another set of accounts, identities and configurations to get right.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What helps portability&lt;/h2&gt;
&lt;p&gt;If you do need portability, a few tools make it more realistic:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;: a consistent runtime across clouds and on-premises. The managed services differ in details, but workloads move fairly easily.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terraform or OpenTofu&lt;/strong&gt;: one tool for infrastructure across providers. The code is still provider-specific, but the workflow and skills transfer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crossplane&lt;/strong&gt;: a Kubernetes-based control plane that can offer the same internal APIs backed by different clouds.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenTelemetry&lt;/strong&gt;: vendor-neutral observability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open-source data stores&lt;/strong&gt; (PostgreSQL, Kafka, Redis/Valkey) available as managed services on every major cloud.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Standard identity&lt;/strong&gt; (OIDC, SAML) and a cloud-neutral secret manager.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How I'd decide&lt;/h2&gt;
&lt;p&gt;Ask these questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Is there a concrete business, legal or customer requirement&lt;/strong&gt; for a second cloud? If yes, plan for it properly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What would leaving our main provider actually cost&lt;/strong&gt; in time and money? Is that risk acceptable? Write down an exit plan, even if you never use it. Regulators, especially in financial services, increasingly expect this.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Can we get the resilience we need with multiple regions&lt;/strong&gt; on one provider?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do we have the people&lt;/strong&gt; to run several clouds well?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For most companies, my recommendation is: &lt;strong&gt;go deep on one primary cloud&lt;/strong&gt;, use other providers deliberately for specific needs, keep your architecture reasonably portable with Kubernetes, Terraform and open standards, and maintain a realistic exit plan.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: multi-cloud is a tool, not a strategy. Use it when you have a reason, not because it sounds safe.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>European cloud and digital sovereignty</title>
      <link>https://deslypeter.com/writing/european-cloud-digital-sovereignty</link>
      <guid>https://deslypeter.com/writing/european-cloud-digital-sovereignty.html?lang=en</guid>
      <description>Why "where is my data?" became a boardroom question in Europe, and what the options are.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Working in Germany, I've noticed a change over the last few years. Questions that used to come only from legal teams now come from CTOs, CEOs and customers: Where exactly is our data? Who can access it? What happens if a foreign government demands it? Could our cloud provider be forced to cut us off?&lt;/p&gt;
&lt;p&gt;That's digital sovereignty. Now it's a real factor in infrastructure decisions for European companies, not just a niche topic.&lt;/p&gt;
&lt;h2&gt;Why it's in the news&lt;/h2&gt;
&lt;p&gt;A few forces are pushing it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Legal tension.&lt;/strong&gt; US laws like the CLOUD Act can require US companies to provide data they control, even if it's stored in Europe. That conflicts with GDPR's protections. The EU–US Data Privacy Framework currently allows transfers, but its predecessors were struck down by courts twice, and many companies don't want to bet on it lasting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Geopolitics.&lt;/strong&gt; Recent years have made people more aware of dependencies on foreign technology and the risk of political decisions affecting access to services.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regulation.&lt;/strong&gt; NIS2, DORA (for financial services), the Data Act, the Cyber Resilience Act and sector rules increasingly ask companies to manage risks from technology providers, including concentration risk and exit strategies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Public sector requirements.&lt;/strong&gt; Governments and public bodies in several countries prefer or require sovereign solutions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What "sovereignty" actually means&lt;/h2&gt;
&lt;p&gt;It's a fuzzy word. It usually covers three layers:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Data sovereignty&lt;/strong&gt;: data stays in a specific jurisdiction, and you control who accesses it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operational sovereignty&lt;/strong&gt;: the people operating the infrastructure are in the EU, subject to EU law, and foreign access is technically and contractually prevented.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Technological sovereignty&lt;/strong&gt;: you can keep running, and move, even if a provider becomes unavailable. This often means open standards and open source.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Different requirements need different levels. A small e-commerce site and a hospital have very different needs.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sovereignty isn't about where the server stands. It's about who can switch it off, and who can look inside.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The hyperscalers' answers&lt;/h2&gt;
&lt;p&gt;The big US providers have responded with sovereign offerings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AWS European Sovereign Cloud&lt;/strong&gt;: a separate cloud infrastructure in the EU, starting in Germany, operated by EU-resident staff and independent from other AWS regions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microsoft&lt;/strong&gt;: the EU Data Boundary, plus sovereign cloud offerings, including partnerships with European operators.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Cloud&lt;/strong&gt;: sovereign options with local partners, such as offerings operated with T-Systems in Germany and with Thales (S3NS) in France.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These aim to combine the hyperscalers' service catalogue with stronger European control. Whether they fully address the legal concerns is debated, and depends on the specific setup.&lt;/p&gt;
&lt;h2&gt;The European providers&lt;/h2&gt;
&lt;p&gt;There's also a growing group of European cloud providers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OVHcloud&lt;/strong&gt; (France): a broad IaaS and PaaS offering, with SecNumCloud-qualified options.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hetzner&lt;/strong&gt; (Germany): very cost-effective servers and cloud, popular with startups and developers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scaleway&lt;/strong&gt; (France): developer-friendly cloud with managed Kubernetes and AI infrastructure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;STACKIT&lt;/strong&gt; (Germany, Schwarz Group): built for sovereign enterprise needs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IONOS&lt;/strong&gt; (Germany), &lt;strong&gt;Open Telekom Cloud&lt;/strong&gt; (Germany), &lt;strong&gt;UpCloud&lt;/strong&gt;, &lt;strong&gt;Exoscale&lt;/strong&gt; and others.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Their strengths: EU jurisdiction, often lower prices for raw compute and bandwidth. The trade-offs: fewer managed services, smaller ecosystems, and sometimes less mature tooling.&lt;/p&gt;
&lt;p&gt;Initiatives like &lt;strong&gt;Gaia-X&lt;/strong&gt; and the &lt;strong&gt;IPCEI-CIS&lt;/strong&gt; project aim to create common standards and federated European infrastructure, with mixed progress so far.&lt;/p&gt;
&lt;h2&gt;What changes in the architecture&lt;/h2&gt;
&lt;p&gt;If sovereignty matters to you, a few architectural choices help regardless of provider:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes and open-source building blocks&lt;/strong&gt; (PostgreSQL, Kafka, object storage with S3-compatible APIs) make it easier to run on European providers or move between them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Encryption with keys you control&lt;/strong&gt;, ideally in your own HSM or an external key manager, so the provider can't read your data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure as code&lt;/strong&gt; for everything, so you can rebuild elsewhere.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data classification&lt;/strong&gt;: not all data needs the same protection. Put the sensitive part in a sovereign environment and keep the rest wherever it's most practical.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A tested exit plan&lt;/strong&gt;: regulators increasingly expect it, and it's good engineering anyway.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Migration considerations&lt;/h2&gt;
&lt;p&gt;Moving from a hyperscaler to a European provider is mostly a question of &lt;strong&gt;managed services&lt;/strong&gt;. Plain VMs and Kubernetes move relatively easily. Proprietary databases, serverless functions, queues and AI services don't. Expect to replace some managed services with open-source equivalents you operate yourself, or with the provider's offering.&lt;/p&gt;
&lt;p&gt;A hybrid approach is common: sensitive workloads and data on a sovereign platform, the rest on a hyperscaler.&lt;/p&gt;
&lt;h2&gt;So, should you care?&lt;/h2&gt;
&lt;p&gt;If you're in Europe and handle sensitive data, work with the public sector, or are in a regulated industry, yes. Even if you're not, keeping your architecture portable with open standards and holding your own encryption keys is cheap insurance.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: sovereignty isn't about rejecting American clouds. It's about making sure you always have a choice.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Leaving the cloud: when it makes sense</title>
      <link>https://deslypeter.com/writing/leaving-the-cloud</link>
      <guid>https://deslypeter.com/writing/leaving-the-cloud.html?lang=en</guid>
      <description>Some companies saved millions by moving back to their own servers. Could you?</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;For about fifteen years, the direction was obvious: everything moves to the cloud. Data centres were closing, "cloud first" was official strategy, and running your own servers felt old-fashioned.&lt;/p&gt;
&lt;p&gt;Then some companies started going the other way, very publicly. They moved workloads out of the public cloud and back onto their own hardware, and reported big savings. "Cloud repatriation" became a hot topic.&lt;/p&gt;
&lt;p&gt;So is the cloud a rip-off? Not quite. But it's worth understanding when leaving makes sense.&lt;/p&gt;
&lt;h2&gt;The famous cases&lt;/h2&gt;
&lt;p&gt;The best-known example is &lt;strong&gt;37signals&lt;/strong&gt;, the company behind Basecamp and HEY. Starting in 2022, they moved their applications off AWS onto their own servers in rented data centre space, and published their reasoning and numbers along the way. They reported substantial annual savings, expected to add up to millions of dollars over several years, without growing their operations team significantly. They later also moved their storage out of S3.&lt;/p&gt;
&lt;p&gt;Other companies have made similar moves for specific workloads: those with heavy storage needs, large and steady compute requirements, or high bandwidth costs. AI has also introduced a new angle: some companies find that buying GPUs is cheaper than renting them for workloads that run continuously.&lt;/p&gt;
&lt;p&gt;At the same time, many more companies continue moving into the cloud. Repatriation is a real trend, but not a mass exodus.&lt;/p&gt;
&lt;h2&gt;Doing the math&lt;/h2&gt;
&lt;p&gt;The cloud's pricing model is great for some workloads and expensive for others.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The cloud is usually cheaper when:&lt;/strong&gt;
- Load is spiky or unpredictable, and you scale up and down a lot.
- You're small or growing fast, and can't predict next year's needs.
- You use many managed services that would require specialists to run yourself.
- You need global presence quickly.
- Your team is small and should focus on the product.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your own hardware can be cheaper when:&lt;/strong&gt;
- Load is large and steady, running 24/7 at high utilisation.
- You store huge amounts of data, or move a lot of it out (egress fees add up).
- You need lots of GPUs constantly.
- You have, or can hire, people with infrastructure and hardware skills.
- You plan to keep the setup for many years.&lt;/p&gt;
&lt;p&gt;When comparing, include &lt;strong&gt;everything&lt;/strong&gt;: hardware, data centre space or colocation, power, network, spare parts, hardware refresh cycles, staff time, on-call, security, compliance, and the software you'll need to replace managed services. Also include the cost and risk of the migration itself.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The cloud charges you for flexibility. If you don't use the flexibility, you're paying for something you don't need.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;It's not all or nothing&lt;/h2&gt;
&lt;p&gt;Very few companies move everything. More common patterns:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hybrid&lt;/strong&gt;: steady, heavy workloads on owned or rented hardware; spiky, experimental and globally distributed workloads in the cloud.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rented dedicated servers&lt;/strong&gt; (like Hetzner, OVHcloud and others) instead of buying hardware, a middle ground with much lower prices than cloud VMs and no data centre to manage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Colocation&lt;/strong&gt;: your hardware, someone else's building, power and network.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud for managed data services, own hardware for compute&lt;/strong&gt;, or the other way round.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The tools for on-prem&lt;/h2&gt;
&lt;p&gt;The tooling for running your own infrastructure is much better than ten years ago:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt; gives you a cloud-like platform on any hardware. Distributions like Talos, k3s, RKE2 and OpenShift, plus Cluster API, make it manageable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proxmox&lt;/strong&gt; and other virtualisation platforms have become popular, especially after VMware's licensing changes pushed many companies to look for alternatives.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenStack&lt;/strong&gt; for larger private clouds with an AWS-like API.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ceph&lt;/strong&gt;, &lt;strong&gt;MinIO&lt;/strong&gt; and similar for storage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure as code and GitOps&lt;/strong&gt; work exactly the same on your own hardware.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bare-metal provisioning&lt;/strong&gt; tools (like Tinkerbell, MAAS, or Talos with Omni) automate the hardware layer.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What you take on&lt;/h2&gt;
&lt;p&gt;Leaving the cloud means owning problems the cloud hid from you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hardware fails. Disks die, power supplies break, someone needs to replace them.&lt;/li&gt;
&lt;li&gt;Capacity planning: you can't add a hundred servers in five minutes.&lt;/li&gt;
&lt;li&gt;Physical security, networking, power redundancy.&lt;/li&gt;
&lt;li&gt;Patching firmware, hypervisors and operating systems.&lt;/li&gt;
&lt;li&gt;Replacing managed databases, queues and other services with things you operate.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your team isn't prepared for that, the savings disappear quickly.&lt;/p&gt;
&lt;h2&gt;So, should you leave the cloud?&lt;/h2&gt;
&lt;p&gt;Probably not entirely. But if you have large, steady workloads and big bills, it's worth running the numbers honestly. The answer might be "move this one heavy workload to dedicated servers", which can save a lot without giving up the cloud's advantages for everything else.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: the cloud isn't always the cheapest option, just the most convenient one. Know which one you're paying for.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Serverless or containers?</title>
      <link>https://deslypeter.com/writing/serverless-or-containers</link>
      <guid>https://deslypeter.com/writing/serverless-or-containers.html?lang=en</guid>
      <description>Lambda, Cloud Run or Kubernetes: which fits which workload.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Few architecture debates have produced as many conference talks as this one. Serverless fans say servers are a distraction and you should only write business logic. Container fans say serverless is expensive, limiting and locks you in. Both have a point.&lt;/p&gt;
&lt;p&gt;They're tools for different jobs, and the line between them has blurred a lot.&lt;/p&gt;
&lt;h2&gt;The options&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Functions as a Service (FaaS)&lt;/strong&gt;: AWS Lambda, Azure Functions, Google Cloud Run functions. You upload a function, the platform runs it when an event arrives (an HTTP request, a file upload, a queue message), and you pay per invocation and execution time. No servers, no containers to think about.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Serverless containers&lt;/strong&gt;: Google Cloud Run, AWS Fargate (with ECS), Azure Container Apps, AWS App Runner. You provide a container image, the platform runs and scales it, often down to zero. You don't manage nodes or clusters.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;: managed (EKS, AKS, GKE) or self-hosted. You run containers on a cluster you control, with full flexibility and full responsibility.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Knative&lt;/strong&gt; and similar projects bring serverless-style scale-to-zero and event-driven behaviour onto Kubernetes.&lt;/p&gt;
&lt;p&gt;These form a spectrum: more control on one end, less operational work on the other.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Serverless doesn't mean there are no servers. It means they're someone else's problem, and you pay for that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Where serverless shines&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Event-driven glue&lt;/strong&gt;: reacting to file uploads, database changes, webhooks, scheduled jobs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spiky or unpredictable traffic&lt;/strong&gt;: zero cost when idle, instant scaling for bursts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Small teams&lt;/strong&gt; who want to ship without running infrastructure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prototypes and new products&lt;/strong&gt;, where speed matters more than optimisation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Low-traffic services&lt;/strong&gt;, where paying for an always-on container would be wasteful.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Where containers on Kubernetes shine&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Steady, high traffic&lt;/strong&gt;: at constant high load, paying per request becomes more expensive than paying for capacity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Long-running processes&lt;/strong&gt;: workers, streaming, WebSockets, anything that runs longer than a function's time limit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complex systems&lt;/strong&gt; with many services, service meshes, custom networking.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Special hardware&lt;/strong&gt;: GPUs, high memory, specific instance types.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portability&lt;/strong&gt; across clouds and on-premises.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Teams with platform engineering capacity&lt;/strong&gt; who can run Kubernetes well.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Cold starts and limits&lt;/h2&gt;
&lt;p&gt;The classic serverless drawbacks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cold starts&lt;/strong&gt;: when a function hasn't run for a while, the first request takes longer while the platform starts a new instance. Usually small for lightweight runtimes, more noticeable for heavy ones like Java with big frameworks. Mitigations exist: provisioned concurrency, snapshot-based fast start features, minimum instances on Cloud Run.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time limits&lt;/strong&gt;: functions have maximum execution times (15 minutes on Lambda, for example).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resource limits&lt;/strong&gt;: memory, CPU, package size, temporary storage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Statelessness&lt;/strong&gt;: no local state between invocations. Everything goes to external storage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observability and debugging&lt;/strong&gt; across many small functions can be harder.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lock-in&lt;/strong&gt;: function code often ends up tightly tied to provider-specific events and services.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Serverless containers like Cloud Run soften many of these: standard containers, longer request times, concurrency per instance, and much easier portability.&lt;/p&gt;
&lt;h2&gt;Where the costs cross over&lt;/h2&gt;
&lt;p&gt;Cost depends on usage pattern:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Low or bursty usage&lt;/strong&gt;: serverless is often dramatically cheaper because you pay nothing when idle.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Moderate usage&lt;/strong&gt;: roughly comparable, and serverless saves on operations work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;High, steady usage&lt;/strong&gt;: containers on reserved or Spot capacity usually win on raw infrastructure cost.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don't forget &lt;strong&gt;people cost&lt;/strong&gt;. A Kubernetes platform needs engineers to run it. For a small team, serverless can be cheaper overall even if the cloud bill is higher.&lt;/p&gt;
&lt;h2&gt;Mixing both&lt;/h2&gt;
&lt;p&gt;Most mature architectures use both:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Core APIs and long-running services on Kubernetes or serverless containers.&lt;/li&gt;
&lt;li&gt;Event handlers, scheduled jobs and glue code as functions.&lt;/li&gt;
&lt;li&gt;Data pipelines with managed serverless services (queues, workflows, stream processing).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And the choice doesn't have to be permanent. A service can start on Cloud Run or Lambda and move to Kubernetes when traffic grows, especially if it's packaged as a standard container from the start.&lt;/p&gt;
&lt;h2&gt;So, which one?&lt;/h2&gt;
&lt;p&gt;My default advice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Small team, new product&lt;/strong&gt;: start serverless, ideally serverless containers. Ship fast.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event-driven tasks&lt;/strong&gt;: functions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Large, steady workloads, many services, platform team in place&lt;/strong&gt;: Kubernetes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Not sure&lt;/strong&gt;: package everything as containers. That keeps your options open.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;My take: choose the least infrastructure you can get away with today, and keep your code portable enough to change your mind tomorrow.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Service mesh without sidecars</title>
      <link>https://deslypeter.com/writing/service-mesh-without-sidecars</link>
      <guid>https://deslypeter.com/writing/service-mesh-without-sidecars.html?lang=en</guid>
      <description>Istio ambient, Linkerd, Cilium. Do you even need a mesh?</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;A few years ago, the service mesh was the hottest topic in cloud-native. Every conference had talks about Istio, every architecture diagram had little proxies next to every service. Then reality hit: meshes were complex, resource-hungry and hard to debug. Many teams tried one and quietly removed it.&lt;/p&gt;
&lt;p&gt;The technology has changed a lot since then. The biggest shift: you no longer need a sidecar proxy in every pod. So it's worth looking again.&lt;/p&gt;
&lt;h2&gt;What a mesh does&lt;/h2&gt;
&lt;p&gt;A service mesh handles communication between services, outside your application code. Typical features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;mTLS everywhere&lt;/strong&gt;: encrypted traffic between services, with automatic certificate management and service identity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authorisation policies&lt;/strong&gt;: "only the checkout service can call payments".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traffic management&lt;/strong&gt;: retries, timeouts, circuit breaking, traffic splitting for canary releases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observability&lt;/strong&gt;: request metrics, traces and a map of which services talk to which, without changing code.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of this can be built into each application with libraries, but then every team, in every language, has to do it right. A mesh does it once, for everyone.&lt;/p&gt;
&lt;h2&gt;Sidecar vs sidecarless&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The sidecar model&lt;/strong&gt; (classic Istio, Linkerd): every pod gets an extra proxy container. All traffic in and out of the pod goes through it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pros&lt;/strong&gt;: strong isolation, rich per-pod features.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cons&lt;/strong&gt;: a proxy per pod uses CPU and memory (it adds up across thousands of pods), adds latency, complicates pod startup and shutdown, and upgrading the mesh means restarting every workload.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The sidecarless model&lt;/strong&gt; moves the proxy out of the pod:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Istio ambient mode&lt;/strong&gt; (generally available since Istio 1.24, late 2024) splits the mesh into two layers. A lightweight per-node proxy called &lt;strong&gt;ztunnel&lt;/strong&gt; handles mTLS and basic L4 policies for all pods on the node. Optional &lt;strong&gt;waypoint proxies&lt;/strong&gt; handle L7 features (HTTP routing, retries, header-based policies) only for the services that need them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cilium service mesh&lt;/strong&gt; uses eBPF in the kernel for networking and L4 features, with a shared per-node Envoy for L7 features.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Benefits: much lower resource overhead, no changes to pods, upgrades without restarting applications, and you only pay for L7 processing where you use it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The best part of the new service meshes is how much less of them there is.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The main options today&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Istio&lt;/strong&gt;: the most feature-rich, now with both sidecar and ambient modes. Large ecosystem, more complexity. A CNCF graduated project.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linkerd&lt;/strong&gt;: focused on simplicity and low overhead, with a very small, Rust-based proxy. Still sidecar-based, but light. Note that the creator, Buoyant, changed how stable releases are distributed, so check the current licensing and release model before adopting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cilium&lt;/strong&gt;: if you already use Cilium as your CNI, its mesh features come almost for free, including mutual authentication and transparent encryption.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud provider meshes&lt;/strong&gt;: managed options on some clouds, often based on Istio.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What you get&lt;/h2&gt;
&lt;p&gt;When a mesh fits, the benefits are real:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zero-trust networking&lt;/strong&gt; with almost no application changes. Every service has an identity, every connection is encrypted and authorised.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistent reliability&lt;/strong&gt; features (timeouts, retries) without each team implementing them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Canary releases&lt;/strong&gt; with precise traffic splitting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Golden metrics&lt;/strong&gt; (requests, errors, latency) for every service, out of the box.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What it costs to run&lt;/h2&gt;
&lt;p&gt;Even sidecarless, a mesh is a significant component:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Another control plane&lt;/strong&gt; to install, upgrade and monitor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learning curve&lt;/strong&gt;: new concepts, new resources, new failure modes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debugging&lt;/strong&gt;: when a request fails, is it the app, the mesh, or the network?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Policy sprawl&lt;/strong&gt;: authorisation policies need to be managed carefully.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Do you need a mesh?&lt;/h2&gt;
&lt;p&gt;Questions I'd ask:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Do you need mTLS between services&lt;/strong&gt; for compliance or zero-trust requirements? A mesh is the easiest way to get it at scale.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do you have many services in many languages&lt;/strong&gt;, where library-based solutions would be inconsistent?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do you need fine-grained traffic control&lt;/strong&gt; for progressive delivery?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do you have the team capacity&lt;/strong&gt; to run it?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have a handful of services in one language, probably not. If you have dozens or hundreds of services and security requirements, probably yes, and ambient-style meshes make the decision much easier than it used to be.&lt;/p&gt;
&lt;p&gt;Also note: &lt;strong&gt;Gateway API&lt;/strong&gt; now covers some of what people used meshes for (traffic splitting, header routing at the edge), and its GAMMA initiative extends the same API to service-to-service traffic in meshes. That means less mesh-specific configuration to learn.&lt;/p&gt;
&lt;h2&gt;So, should you look again?&lt;/h2&gt;
&lt;p&gt;If you rejected service meshes a few years ago because of sidecar overhead and complexity, yes. Istio ambient and Cilium have removed the biggest pain points. Start with just mTLS and observability, add L7 features only where needed, and see if it earns its place.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: a mesh used to be a big commitment. Without sidecars, it's finally something you can adopt one small step at a time.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>WebAssembly on the server: hype or future?</title>
      <link>https://deslypeter.com/writing/webassembly-on-the-server</link>
      <guid>https://deslypeter.com/writing/webassembly-on-the-server.html?lang=en</guid>
      <description>Wasm escaped the browser. Is it the next container?</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;In 2019, Docker co-founder Solomon Hykes posted something that's been quoted ever since: if WebAssembly and WASI had existed in 2008, they wouldn't have needed to create Docker. That's a big claim. Several years later, where does server-side WebAssembly actually stand?&lt;/p&gt;
&lt;h2&gt;Wasm outside the browser&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;WebAssembly (Wasm)&lt;/strong&gt; started as a way to run fast, compiled code in web browsers: games, video editors, design tools. It's a compact binary format that many languages (Rust, C/C++, Go, C#, Zig, and others) can compile to, and that runs in a sandboxed virtual machine.&lt;/p&gt;
&lt;p&gt;The properties that make it great in browsers turn out to be interesting on servers too:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fast startup&lt;/strong&gt;: modules start in microseconds to milliseconds, much faster than containers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Small&lt;/strong&gt;: modules are often kilobytes to a few megabytes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secure by default&lt;/strong&gt;: a Wasm module can't access files, network or anything else unless explicitly granted. A strong sandbox.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portable&lt;/strong&gt;: the same module runs on any OS and CPU architecture with a Wasm runtime.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To work outside the browser, Wasm needs a way to talk to the system: files, clocks, sockets. That's &lt;strong&gt;WASI&lt;/strong&gt; (WebAssembly System Interface). &lt;strong&gt;WASI 0.2&lt;/strong&gt; introduced the &lt;strong&gt;Component Model&lt;/strong&gt;, which lets Wasm components written in different languages work together through well-defined interfaces. Further versions are adding async support and more.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Containers package an operating system around your app. Wasm packages just your app, and asks permission for everything else.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Running it on Kubernetes&lt;/h2&gt;
&lt;p&gt;Wasm doesn't have to replace your platform. It can run alongside containers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;containerd shims&lt;/strong&gt; (like those from the runwasi project) let Kubernetes run Wasm workloads through a normal &lt;code&gt;RuntimeClass&lt;/code&gt;. A pod can run a Wasm module instead of a container image.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SpinKube&lt;/strong&gt; runs apps built with &lt;strong&gt;Spin&lt;/strong&gt; (from Fermyon) on Kubernetes, with very high density and fast scaling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;wasmCloud&lt;/strong&gt; (a CNCF incubating project) is a platform for distributed Wasm applications across clouds, edge and Kubernetes.&lt;/li&gt;
&lt;li&gt;Wasm modules can be stored in &lt;strong&gt;OCI registries&lt;/strong&gt;, just like container images.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
  name: wasmtime-spin
handler: spin
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-wasm
spec:
  replicas: 3
  selector:
    matchLabels: { app: hello-wasm }
  template:
    metadata:
      labels: { app: hello-wasm }
    spec:
      runtimeClassName: wasmtime-spin
      containers:
      - name: hello
        image: ghcr.io/acme/hello-wasm:1.0.0
        command: ["/"]
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Where it fits&lt;/h2&gt;
&lt;p&gt;Wasm is already in production in places you might not notice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Edge computing&lt;/strong&gt;: Cloudflare Workers, Fastly Compute and other edge platforms run Wasm (or similar isolates) because of fast startup and strong isolation. Code runs close to users with almost no cold start.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins and extensions&lt;/strong&gt;: Envoy proxy filters, database extensions, and tools like Helm 4's plugin system use Wasm to run third-party code safely.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Serverless functions&lt;/strong&gt; where cold starts matter.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-tenant platforms&lt;/strong&gt; that need to run untrusted user code safely.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IoT and embedded&lt;/strong&gt; devices with limited resources.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Where it doesn't, yet&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ecosystem maturity&lt;/strong&gt;: many libraries, especially those relying on threads, networking or system calls, don't fully work in WASI yet. It's improving release by release.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Language support varies&lt;/strong&gt;: Rust is excellent; other languages are good but with caveats; some popular languages still have rough edges.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tooling and debugging&lt;/strong&gt; are less mature than for containers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Existing apps&lt;/strong&gt;: rewriting or recompiling a large existing application for Wasm rarely makes sense. Containers run any Linux software today.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Long-running, heavy workloads&lt;/strong&gt;: containers are still the natural fit.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, hype or future?&lt;/h2&gt;
&lt;p&gt;Both, honestly. Wasm won't replace containers for most workloads any time soon. Containers solved a huge problem and they're everywhere. But Wasm is clearly the future for specific areas: edge, plugins, high-density serverless and safe execution of untrusted code. Those areas are growing.&lt;/p&gt;
&lt;p&gt;For DevOps engineers, it's worth understanding now: how it runs on Kubernetes, how it's packaged in OCI registries, and where it might show up in your stack.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: Wasm isn't the next container. It's the thing you'll reach for when a container is too heavy, too slow or too trusting.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Should DevOps engineers learn Go?</title>
      <link>https://deslypeter.com/writing/should-devops-engineers-learn-go</link>
      <guid>https://deslypeter.com/writing/should-devops-engineers-learn-go.html?lang=en</guid>
      <description>Kubernetes is written in Go, and so is almost every tool around it. Where to start.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Look at the tools you use every day: Kubernetes, Docker, containerd, Terraform, OpenTofu, Helm, Prometheus, Grafana's backend, Argo CD, Flux, etcd, Vault, Trivy, k9s. Almost all of them are written in Go.&lt;/p&gt;
&lt;p&gt;That’s not a coincidence. It’s a good reason for DevOps engineers to think about learning it.&lt;/p&gt;
&lt;h2&gt;Why Go took over infrastructure&lt;/h2&gt;
&lt;p&gt;Go was created at Google and released in 2009, designed for building reliable networked services and tools. A few properties made it the language of cloud-native infrastructure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Single static binaries.&lt;/strong&gt; A Go program compiles into one file with no runtime to install. Copy it anywhere and it runs. Perfect for CLIs and containers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Easy cross-compilation.&lt;/strong&gt; Build for Linux, macOS, Windows, ARM and x86 from one machine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built-in concurrency&lt;/strong&gt; with goroutines and channels, ideal for programs that do many things at once, like controllers watching many resources.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simple language.&lt;/strong&gt; Deliberately small, easy to read, with one standard formatting style (&lt;code&gt;gofmt&lt;/code&gt;). You can read someone else's Go code without decoding their personal style.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fast compilation and good performance.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strong standard library&lt;/strong&gt; for HTTP, JSON, cryptography and more.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What you can do with it&lt;/h2&gt;
&lt;p&gt;As a DevOps engineer, Go opens a few doors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Read the source&lt;/strong&gt; of the tools you use. When Kubernetes or Terraform behaves strangely, reading the code is often the fastest way to understand why.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build CLI tools&lt;/strong&gt; that colleagues can install as a single binary.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write Kubernetes operators and controllers&lt;/strong&gt; to automate your platform.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write Terraform providers&lt;/strong&gt; for internal systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contribute to open-source&lt;/strong&gt; cloud-native projects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build small services&lt;/strong&gt;: webhooks, exporters, admission controllers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;My first CLI&lt;/h2&gt;
&lt;p&gt;A tiny but real example: a CLI that checks when TLS certificates expire.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-go"&gt;package main

import (
    "crypto/tls"
    "fmt"
    "os"
    "time"
)

func main() {
    if len(os.Args) &amp;lt; 2 {
        fmt.Fprintln(os.Stderr, "usage: certcheck &amp;lt;host&amp;gt; [host...]")
        os.Exit(1)
    }

    exitCode := 0
    for _, host := range os.Args[1:] {
        conn, err := tls.Dial("tcp", host+":443", &amp;amp;tls.Config{ServerName: host})
        if err != nil {
            fmt.Printf("%-30s ERROR %v\n", host, err)
            exitCode = 1
            continue
        }
        cert := conn.ConnectionState().PeerCertificates[0]
        conn.Close()

        days := int(time.Until(cert.NotAfter).Hours() / 24)
        status := "OK"
        if days &amp;lt; 14 {
            status = "EXPIRING"
            exitCode = 1
        }
        fmt.Printf("%-30s %-8s %d days left\n", host, status, days)
    }
    os.Exit(exitCode)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;go build -o certcheck .
./certcheck example.com deslypeter.com
GOOS=linux GOARCH=arm64 go build -o certcheck-linux-arm64 .   # cross-compile
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No dependencies beyond the standard library, one binary, works anywhere. For bigger CLIs, libraries like &lt;strong&gt;Cobra&lt;/strong&gt; (used by kubectl, Helm and many others) add subcommands and flags.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Learning Go is like getting a key to the engine room of cloud-native infrastructure.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;A tiny Kubernetes operator&lt;/h2&gt;
&lt;p&gt;Operators are where Go really shines for platform work. An operator watches Kubernetes resources and makes reality match what they describe.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kubebuilder&lt;/strong&gt; (and the Operator SDK, which builds on it) generates most of the boilerplate:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;kubebuilder init --domain acme.com --repo github.com/acme/app-operator
kubebuilder create api --group platform --version v1alpha1 --kind App
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You then define your custom resource's fields in Go structs and write a &lt;code&gt;Reconcile&lt;/code&gt; function: "given this &lt;code&gt;App&lt;/code&gt; resource, make sure the right Deployment, Service and HTTPRoute exist". The framework handles watching, caching, retries and leader election.&lt;/p&gt;
&lt;p&gt;It's not a weekend project to build a production-quality operator, but building a toy one is the best way to understand how Kubernetes itself works. Every built-in controller follows the same pattern.&lt;/p&gt;
&lt;h2&gt;Go vs Python for DevOps&lt;/h2&gt;
&lt;p&gt;They're complementary:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt;: faster for quick scripts, data processing, glue code, and anything where a huge library ecosystem helps. Great for one-off automation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Go&lt;/strong&gt;: better for tools you distribute, long-running services, operators, and anything that needs to be fast, concurrent, or a single binary.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many DevOps engineers use Python for scripts and Go for tools.&lt;/p&gt;
&lt;h2&gt;Where to start&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A Tour of Go&lt;/strong&gt; (go.dev/tour): the official interactive introduction. A few hours.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Go by Example&lt;/strong&gt;: short, practical examples for every common task.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;"Learning Go"&lt;/strong&gt; by Jon Bodner, or &lt;strong&gt;"Let's Go"&lt;/strong&gt; by Alex Edwards for web services.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Kubebuilder Book&lt;/strong&gt; for operators.&lt;/li&gt;
&lt;li&gt;Then build something small you'll actually use: a CLI, an exporter for an internal system, a webhook.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, should you learn it?&lt;/h2&gt;
&lt;p&gt;If you work with Kubernetes and want to go beyond using tools to understanding and extending them, yes. You don't need to become a Go expert. Being able to read Go code and write small tools already makes you noticeably more effective.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: you don't have to speak Go to work in cloud-native. But it's the language the whole neighbourhood speaks, and it helps to understand the conversation.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Docker, Podman, containerd: what's the difference?</title>
      <link>https://deslypeter.com/writing/docker-podman-containerd</link>
      <guid>https://deslypeter.com/writing/docker-podman-containerd.html?lang=en</guid>
      <description>What actually runs your containers, and the Docker Desktop alternatives.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;When people say "container", they often mean "Docker". But Docker is just one tool in a stack of layers, and in many places, Kubernetes included, Docker isn't involved at all anymore.&lt;/p&gt;
&lt;p&gt;Understanding what's actually running your containers helps when debugging, choosing tools, and making sense of headlines like "Kubernetes removes Docker support" (which sounded scary in 2020 and turned out to be mostly harmless).&lt;/p&gt;
&lt;h2&gt;The container stack&lt;/h2&gt;
&lt;p&gt;From bottom to top:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. The Linux kernel.&lt;/strong&gt; Containers aren't a kernel feature called "container". They're a combination of &lt;strong&gt;namespaces&lt;/strong&gt; (isolating what a process can see: processes, network, files, users) and &lt;strong&gt;cgroups&lt;/strong&gt; (limiting what it can use: CPU, memory, I/O). Every container runtime uses these.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Low-level runtime (OCI runtime).&lt;/strong&gt; A small program that actually creates the container process with the right namespaces and cgroups. The standard one is &lt;strong&gt;runc&lt;/strong&gt;. Alternatives include &lt;strong&gt;crun&lt;/strong&gt; (faster, written in C), &lt;strong&gt;gVisor&lt;/strong&gt; (extra isolation with a user-space kernel) and &lt;strong&gt;Kata Containers&lt;/strong&gt; (each container in a lightweight VM).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. High-level runtime.&lt;/strong&gt; Manages images, storage, networking and the lifecycle of containers, and calls the low-level runtime. The main ones are &lt;strong&gt;containerd&lt;/strong&gt; (a CNCF graduated project) and &lt;strong&gt;CRI-O&lt;/strong&gt; (built specifically for Kubernetes).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Tools and interfaces.&lt;/strong&gt; What humans and platforms talk to: the &lt;strong&gt;Docker&lt;/strong&gt; CLI and engine, &lt;strong&gt;Podman&lt;/strong&gt;, &lt;strong&gt;nerdctl&lt;/strong&gt;, and Kubernetes' &lt;strong&gt;kubelet&lt;/strong&gt; (through the &lt;strong&gt;Container Runtime Interface&lt;/strong&gt;, CRI).&lt;/p&gt;
&lt;p&gt;All of this is held together by &lt;strong&gt;OCI standards&lt;/strong&gt; (Open Container Initiative): a standard image format and a standard runtime specification. That's why an image built with Docker runs with Podman, containerd or CRI-O.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A container is just a Linux process with blinkers on and a budget. Everything else is tooling around that idea.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What Kubernetes actually uses&lt;/h2&gt;
&lt;p&gt;Kubernetes talks to runtimes through the CRI. Docker Engine never implemented CRI directly, so Kubernetes used an adapter called &lt;strong&gt;dockershim&lt;/strong&gt;. In Kubernetes 1.24 (2022), dockershim was removed.&lt;/p&gt;
&lt;p&gt;What that meant in practice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clusters now use &lt;strong&gt;containerd&lt;/strong&gt; or &lt;strong&gt;CRI-O&lt;/strong&gt; directly. Most managed Kubernetes services (EKS, AKS, GKE) use containerd.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Images built with Docker still work everywhere&lt;/strong&gt;, because they're standard OCI images.&lt;/li&gt;
&lt;li&gt;What stopped working: things that relied on the Docker socket on nodes, like some old monitoring tools or "Docker-in-Docker" builds in CI.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On a node, use &lt;strong&gt;crictl&lt;/strong&gt; to inspect containers instead of &lt;code&gt;docker ps&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;crictl ps
crictl logs &amp;lt;container-id&amp;gt;
crictl images
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Docker&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt; made containers popular and remains the most widely used developer tool for them: building images, running containers locally, Docker Compose for multi-container setups. Docker Engine itself uses containerd underneath.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Docker Desktop&lt;/strong&gt; is the packaged app for macOS and Windows, which runs a Linux VM in the background. Since 2021, it requires a &lt;strong&gt;paid subscription for larger companies&lt;/strong&gt; (more than 250 employees or more than $10 million in annual revenue). That pushed many organisations to look at alternatives.&lt;/p&gt;
&lt;h2&gt;Rootless with Podman&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Podman&lt;/strong&gt;, from Red Hat, is a Docker-compatible alternative with a few important differences:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Daemonless&lt;/strong&gt;: no long-running background service with root privileges. Each container is a child process of the command that started it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rootless by default&lt;/strong&gt;: containers run as your normal user, which reduces the risk if a container is compromised.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker-compatible CLI&lt;/strong&gt;: &lt;code&gt;alias docker=podman&lt;/code&gt; works for most commands.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pods&lt;/strong&gt;: can group containers like Kubernetes pods, and generate Kubernetes YAML from running containers (&lt;code&gt;podman kube generate&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quadlet&lt;/strong&gt;: run containers as systemd services, nicely integrated with Linux servers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Podman Desktop&lt;/strong&gt;: a free GUI for macOS, Windows and Linux.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;podman run --rm -p 8080:80 docker.io/library/nginx:1.27
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Docker Desktop alternatives on the Mac&lt;/h2&gt;
&lt;p&gt;If you need containers on macOS without Docker Desktop:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OrbStack&lt;/strong&gt;: fast, lightweight, very popular with Mac developers. Commercial for business use, but often cheaper than Docker Desktop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Colima&lt;/strong&gt;: open source, command-line, based on Lima. Works with the Docker CLI or containerd/nerdctl.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rancher Desktop&lt;/strong&gt;: open source (SUSE), includes a local Kubernetes (k3s) and lets you choose containerd or Docker Engine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Podman Desktop&lt;/strong&gt;: open source, with Podman underneath.&lt;/li&gt;
&lt;li&gt;Apple has also introduced its own open-source &lt;strong&gt;container&lt;/strong&gt; tool for running Linux containers on Apple silicon Macs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of them run a small Linux VM, because containers need a Linux kernel.&lt;/p&gt;
&lt;h2&gt;Which should you use?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Developer laptop&lt;/strong&gt;: Docker Desktop if licensing is fine for you; otherwise OrbStack, Colima, Rancher Desktop or Podman Desktop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linux servers running containers directly&lt;/strong&gt;: Podman with Quadlet is very nice, especially for rootless setups. Docker Engine also works well.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes nodes&lt;/strong&gt;: containerd (or CRI-O). You usually don't choose this on managed services.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI image builds&lt;/strong&gt;: BuildKit (via Docker or standalone), Buildah, or Kaniko-style tools for building without a privileged daemon.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, what's the takeaway?&lt;/h2&gt;
&lt;p&gt;"Docker" is a brand, a tool and a company. Containers are a Linux feature plus open standards. Once you see the layers, the choices become simpler: use whatever tool you like to build OCI images, and know that Kubernetes will run them with containerd or CRI-O regardless.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: learn the layers once, and you'll never be confused by a "Docker is dead" headline again.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>How I'd learn DevOps if I started today</title>
      <link>https://deslypeter.com/writing/how-id-learn-devops-today</link>
      <guid>https://deslypeter.com/writing/how-id-learn-devops-today.html?lang=en</guid>
      <description>A step-by-step roadmap, with a project for each step.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;People often ask me how to get into DevOps. The internet's answer is usually a giant roadmap diagram with a hundred boxes: every tool, every cloud, every buzzword. It's overwhelming, and it suggests you need to learn everything before you can do anything.&lt;/p&gt;
&lt;p&gt;You don't. Here's the path I'd take if I started from zero today: in order, with one practical project per stage, and honest time estimates.&lt;/p&gt;
&lt;h2&gt;The order that makes sense&lt;/h2&gt;
&lt;p&gt;The order matters because each step builds on the last. Kubernetes makes very little sense if you don't understand Linux, networking and containers first.&lt;/p&gt;
&lt;h3&gt;1. Linux and the command line (4–6 weeks)&lt;/h3&gt;
&lt;p&gt;Everything in DevOps runs on Linux. Learn to live in the terminal: files and permissions, processes, services with systemd, package management, logs, SSH, basic shell scripting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; set up a Linux VM (or a cheap cloud server), harden SSH, install NGINX, serve a static page, and write a small Bash script that backs up its config every night with cron.&lt;/p&gt;
&lt;h3&gt;2. Networking fundamentals (2–3 weeks, alongside Linux)&lt;/h3&gt;
&lt;p&gt;IP addresses and subnets, DNS, TCP vs UDP, ports, HTTP, TLS, load balancers, firewalls. This is the knowledge that makes debugging possible later.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; point a real domain at your server, get a free TLS certificate with Let's Encrypt, and debug it with &lt;code&gt;dig&lt;/code&gt;, &lt;code&gt;curl -v&lt;/code&gt; and &lt;code&gt;ss&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;3. Git (1–2 weeks)&lt;/h3&gt;
&lt;p&gt;Branches, merges, rebases, pull requests, resolving conflicts. Everything in DevOps lives in Git, including infrastructure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; put your server's config and scripts in a GitHub repository, and work through pull requests even if you're alone.&lt;/p&gt;
&lt;h3&gt;4. A programming language (ongoing, start now)&lt;/h3&gt;
&lt;p&gt;Python is the easiest start for automation. Later, Go is valuable for cloud-native tooling. You don't need to become a software engineer, but you need to read and write real code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; a Python script that checks your website's status and certificate expiry, and sends you a message if something is wrong.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Don't try to learn the whole roadmap. Learn the next step well enough to build something, then take the next one.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;5. Containers (3–4 weeks)&lt;/h3&gt;
&lt;p&gt;Docker or Podman: images, Dockerfiles, multi-stage builds, volumes, networks, Docker Compose. Understand what a container really is (a Linux process with namespaces and cgroups).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; containerise a small web app with a database, using Docker Compose, with a small, secure image.&lt;/p&gt;
&lt;h3&gt;6. CI/CD (2–3 weeks)&lt;/h3&gt;
&lt;p&gt;Pipelines that test, build, scan and deploy automatically. GitHub Actions is the easiest place to start.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; a pipeline that runs tests, builds your container image, scans it with Trivy, pushes it to a registry, and deploys it to your server.&lt;/p&gt;
&lt;h3&gt;7. A cloud provider (6–8 weeks)&lt;/h3&gt;
&lt;p&gt;Pick one: AWS, Azure or Google Cloud, whichever is most common in the jobs you want. Learn the core: identity and access (IAM), networking (VPCs, subnets, security groups), compute, storage, managed databases, and cost basics.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; deploy your app to the cloud with a managed database, in a private network, behind a load balancer. Set up a budget alert first.&lt;/p&gt;
&lt;h3&gt;8. Infrastructure as code (3–4 weeks)&lt;/h3&gt;
&lt;p&gt;Terraform or OpenTofu. Resources, variables, modules, state, plans. Never click in the console again for anything you want to keep.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; rebuild everything from step 7 in Terraform, delete it, and recreate it with one command.&lt;/p&gt;
&lt;h3&gt;9. Kubernetes (6–10 weeks)&lt;/h3&gt;
&lt;p&gt;Now Kubernetes will make sense. Pods, deployments, services, configmaps, secrets, ingress or Gateway API, Helm, resource requests, debugging.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; run your app on a local cluster (kind or k3s), then on a managed cluster, deployed with Helm and GitOps (Argo CD or Flux).&lt;/p&gt;
&lt;h3&gt;10. Observability (3–4 weeks)&lt;/h3&gt;
&lt;p&gt;Metrics, logs and traces. Prometheus, Grafana, Loki, OpenTelemetry. Alerts that make sense.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; add a dashboard and two meaningful alerts for your app, and instrument it with OpenTelemetry.&lt;/p&gt;
&lt;h3&gt;11. Security throughout&lt;/h3&gt;
&lt;p&gt;Not a separate step, but woven into every step: least privilege, secrets management, image scanning, network policies, keeping things patched.&lt;/p&gt;
&lt;h2&gt;Resources I trust&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Official documentation&lt;/strong&gt;: Kubernetes, Terraform, your cloud provider. Better than most courses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KodeKloud&lt;/strong&gt; and &lt;strong&gt;A Cloud Guru / Pluralsight&lt;/strong&gt; for hands-on labs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;"The Phoenix Project"&lt;/strong&gt; and &lt;strong&gt;"The DevOps Handbook"&lt;/strong&gt; for the culture and the why.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google's SRE books&lt;/strong&gt; (free online) for reliability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;roadmap.sh/devops&lt;/strong&gt; as a map, not a checklist.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Killercoda&lt;/strong&gt; and &lt;strong&gt;iximiuz Labs&lt;/strong&gt; for free browser-based practice environments.&lt;/li&gt;
&lt;li&gt;And AI assistants as patient tutors: ask them to explain, not just to write things for you.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How long it really takes&lt;/h2&gt;
&lt;p&gt;Studying part-time (around 10 hours per week), getting to a junior-ready level takes roughly &lt;strong&gt;9 to 15 months&lt;/strong&gt;. Faster if you study full-time or already work in IT. It's a marathon, not a sprint, and that's fine.&lt;/p&gt;
&lt;p&gt;Things that make it faster:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Build, don't just watch.&lt;/strong&gt; One finished project teaches more than ten courses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Break things and fix them.&lt;/strong&gt; Debugging is the real skill.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write about what you learn&lt;/strong&gt;, on a blog or GitHub. It helps you think clearly, and it shows employers what you can do.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Find people&lt;/strong&gt;: local meetups, online communities, a study buddy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What about AI?&lt;/h2&gt;
&lt;p&gt;AI tools can write a lot of configuration for you now. That makes fundamentals &lt;strong&gt;more&lt;/strong&gt; important, not less: you need to judge whether what the AI wrote is correct and safe. Use AI to learn faster, but make sure you understand everything you ship.&lt;/p&gt;
&lt;h2&gt;So, where should you start?&lt;/h2&gt;
&lt;p&gt;Today: install Linux in a VM, open a terminal, and set up that first web server. Everything else follows from there.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: DevOps isn't a list of tools. It's understanding how software gets built, shipped and kept running. Learn the foundations in order, build at every step, and the tools become easy.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>DevOps interview questions I'd ask</title>
      <link>https://deslypeter.com/writing/devops-interview-questions</link>
      <guid>https://deslypeter.com/writing/devops-interview-questions.html?lang=en</guid>
      <description>The questions, and what a good answer sounds like.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;DevOps interviews can feel unpredictable. One company asks you to reverse a linked list, another wants you to design a global infrastructure in 45 minutes, a third asks about your favourite Kubernetes feature.&lt;/p&gt;
&lt;p&gt;If I were interviewing someone for a DevOps role, here's what I'd ask, and, more importantly, what I'd listen for. The goal isn't memorised definitions. It's understanding, experience and how you think.&lt;/p&gt;
&lt;h2&gt;How I think about interviews&lt;/h2&gt;
&lt;p&gt;I care about three things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Fundamentals&lt;/strong&gt;: do you understand how things work underneath the tools?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Troubleshooting&lt;/strong&gt;: can you find a problem methodically, without panicking?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Judgement&lt;/strong&gt;: do you understand trade-offs, risks and when "good enough" is right?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;"I don't know, but here's how I'd find out" is a great answer. Confidently making things up is not.&lt;/p&gt;
&lt;h2&gt;Linux and networking&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;"What happens when you type a URL into a browser and press Enter?"&lt;/strong&gt;
A classic for a reason. I'm listening for DNS resolution, TCP connection, TLS handshake, HTTP request, load balancer, application, response. Bonus points for caching, CDNs, and where things can go wrong.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"A server is slow. How do you investigate?"&lt;/strong&gt;
Good answers have a method: check load and CPU (&lt;code&gt;top&lt;/code&gt;, &lt;code&gt;uptime&lt;/code&gt;), memory (&lt;code&gt;free&lt;/code&gt;, OOM kills in &lt;code&gt;dmesg&lt;/code&gt;), disk space and I/O (&lt;code&gt;df&lt;/code&gt;, &lt;code&gt;iostat&lt;/code&gt;), network, then the application's own logs and metrics. Start broad, then narrow down.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"The disk is full, but &lt;code&gt;du&lt;/code&gt; doesn't show large files. What's going on?"&lt;/strong&gt;
Deleted files still held open by a process (&lt;code&gt;lsof +L1&lt;/code&gt;), or running out of inodes (&lt;code&gt;df -i&lt;/code&gt;). This separates people who've debugged real systems from those who haven't.&lt;/p&gt;
&lt;h2&gt;Containers and Kubernetes&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;"What is a container, actually?"&lt;/strong&gt;
I want to hear about Linux namespaces and cgroups, not just "a lightweight VM". And the difference between an image and a container.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"A pod is in CrashLoopBackOff. Walk me through debugging it."&lt;/strong&gt;
&lt;code&gt;kubectl describe pod&lt;/code&gt; (events), &lt;code&gt;kubectl logs --previous&lt;/code&gt;, check config and secrets, resource limits (OOMKilled?), probes killing it too early, image and command. A methodical answer matters more than the specific cause.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"What's the difference between requests and limits? What happens when a container exceeds its memory limit? Its CPU limit?"&lt;/strong&gt;
Memory: OOMKilled. CPU: throttled. Requests decide scheduling. Great candidates mention QoS classes or the CPU limits debate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"How does a request from the internet reach a pod?"&lt;/strong&gt;
DNS, load balancer, Gateway or Ingress controller, Service, endpoints, pod. Bonus for kube-proxy or eBPF, and NetworkPolicies.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"How would you do a zero-downtime deployment?"&lt;/strong&gt;
Rolling updates with readiness probes, PodDisruptionBudgets, graceful shutdown handling, backward-compatible database changes, canary or blue-green for risky changes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I don't hire for knowing every flag. I hire for knowing how to find out, and knowing when to be careful.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;CI/CD and Terraform&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;"Describe a good CI/CD pipeline."&lt;/strong&gt;
Fast feedback first, build once and deploy the same artifact everywhere, automated tests and security scans, progressive rollout, easy rollback. Listen for "why", not just the stages.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"What is Terraform state and why does it matter?"&lt;/strong&gt;
The mapping between code and real resources. Remote, locked, encrypted, versioned. Contains secrets. Good candidates mention &lt;code&gt;moved&lt;/code&gt; and &lt;code&gt;import&lt;/code&gt; blocks, or what happens if state is lost.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"Someone changed a resource manually in the console. What happens next time Terraform runs?"&lt;/strong&gt;
Drift: Terraform tries to revert it. How to detect it, how to decide whether code or reality wins, how to prevent it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"How do you handle secrets in a pipeline?"&lt;/strong&gt;
Not in Git, not in plain CI variables if avoidable. OIDC for cloud access, a secret manager, short-lived credentials, masking in logs.&lt;/p&gt;
&lt;h2&gt;Troubleshooting scenarios&lt;/h2&gt;
&lt;p&gt;I love open-ended scenarios, because they show how someone thinks:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"After a deployment, error rates jump to 10%. What do you do?"&lt;/strong&gt;
First: mitigate. Roll back if the deployment is the likely cause. Then investigate: what changed, which endpoints fail, logs, traces. Communicate to stakeholders. Afterwards, a blameless postmortem. The best candidates mention rollback early.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"Users in one region report the site is slow; others are fine."&lt;/strong&gt;
DNS and routing, CDN, regional infrastructure, a dependency in that region, network path. How would you confirm each hypothesis?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;"Your cloud bill doubled this month. How do you find out why?"&lt;/strong&gt;
Cost explorer by service, account and tag, looking for new resources, data transfer, logs or a runaway autoscaler. Then prevention: budgets, alerts, tagging.&lt;/p&gt;
&lt;h2&gt;System design for DevOps&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;"Design the infrastructure for a web application that must survive the loss of an availability zone."&lt;/strong&gt;
I'm looking for: multiple AZs, load balancing, stateless app tier with autoscaling, managed database with multi-AZ failover, backups in another region, infrastructure as code, monitoring and alerts, a deployment strategy. And the candidate asking questions: how much traffic, what's the budget, what's the acceptable downtime?&lt;/p&gt;
&lt;p&gt;Asking clarifying questions is one of the strongest signals in a design interview.&lt;/p&gt;
&lt;h2&gt;Behavioural questions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;"Tell me about an outage you were involved in. What did you learn?"&lt;/strong&gt; Honesty, ownership without blame, and real learning.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;"Tell me about a time you automated something painful."&lt;/strong&gt; Impact, and how you got others to adopt it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;"How do you handle disagreement with a developer about a deployment?"&lt;/strong&gt; Collaboration over gatekeeping.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tips for take-home tasks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Read the brief twice&lt;/strong&gt; and do what's asked, not more.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write a README&lt;/strong&gt;: how to run it, what you'd do with more time, trade-offs you made.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep it clean&lt;/strong&gt;: small commits, sensible structure, no secrets in the repo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make it work end to end&lt;/strong&gt; before making it fancy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be ready to explain every line&lt;/strong&gt;, especially if AI helped you write it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, how should you prepare?&lt;/h2&gt;
&lt;p&gt;Build things, break things, and be able to explain what happened. Practise talking through your debugging process out loud. And prepare two or three real stories from your experience: an outage, an automation, a disagreement. They're often what interviewers remember most.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: the best DevOps interviews feel like solving a problem together. Show how you think, admit what you don't know, and stay curious.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Which DevOps certifications are worth it?</title>
      <link>https://deslypeter.com/writing/devops-certifications-worth-it</link>
      <guid>https://deslypeter.com/writing/devops-certifications-worth-it.html?lang=en</guid>
      <description>CKA, AWS, Terraform: which ones employers actually care about.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Certifications are a touchy subject in tech. Some people collect them like badges. Others say they're worthless and only experience counts. The truth is somewhere in the middle.&lt;/p&gt;
&lt;p&gt;A certification won't replace real experience. But the right one can help you learn in a structured way, get past CV filters, and show commitment, especially early in your career or when changing direction. Here's my honest view of the ones that matter for DevOps.&lt;/p&gt;
&lt;h2&gt;When certifications help&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Early career or career change&lt;/strong&gt;: when you don't have years of experience to show, a respected cert proves you've put in the work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Getting past filters&lt;/strong&gt;: some companies, recruiters and public sector roles explicitly ask for them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consulting and partners&lt;/strong&gt;: cloud partners often need certified staff, so certs directly matter to employers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Structured learning&lt;/strong&gt;: a clear syllabus and a deadline are great motivation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;When they matter less&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;When you already have strong, demonstrable experience.&lt;/li&gt;
&lt;li&gt;When the cert is multiple-choice and easy to cram without understanding.&lt;/li&gt;
&lt;li&gt;For senior roles, where interviews focus on depth and judgement.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Kubernetes certifications&lt;/h2&gt;
&lt;p&gt;These are run by the &lt;strong&gt;Linux Foundation / CNCF&lt;/strong&gt;, and are highly respected because they're &lt;strong&gt;hands-on&lt;/strong&gt;: you solve real tasks in a live terminal under time pressure, not multiple-choice questions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CKA (Certified Kubernetes Administrator)&lt;/strong&gt;: cluster setup, troubleshooting, networking, storage, upgrades. The most valuable for DevOps and platform roles. The curriculum was updated in 2025 to include more modern topics like Gateway API and Helm.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CKAD (Certified Kubernetes Application Developer)&lt;/strong&gt;: deploying and configuring applications on Kubernetes. Good for developers and a nice first step.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CKS (Certified Kubernetes Security Specialist)&lt;/strong&gt;: securing clusters and workloads. Requires an active CKA. Excellent if you want to specialise in security.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KCNA&lt;/strong&gt; and &lt;strong&gt;KCSA&lt;/strong&gt;: entry-level, multiple-choice associate exams covering cloud-native and security basics.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Get all five, and you're a &lt;strong&gt;Kubestronaut&lt;/strong&gt;, a CNCF programme with some perks and a lot of bragging rights.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hands-on exams are the ones I respect most. You can't fake your way through a broken cluster with a timer running.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Cloud certifications&lt;/h2&gt;
&lt;p&gt;Pick the cloud that's most common in the jobs you want.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AWS&lt;/strong&gt;:
- &lt;strong&gt;Cloud Practitioner&lt;/strong&gt;: basic, aimed more at non-technical roles. Skip it if you're hands-on.
- &lt;strong&gt;Solutions Architect – Associate&lt;/strong&gt;: the go-to cloud cert, broad and well-recognised. A good first step.
- &lt;strong&gt;SysOps Administrator – Associate&lt;/strong&gt; and &lt;strong&gt;Developer – Associate&lt;/strong&gt;: more focused on operations or development.
- &lt;strong&gt;DevOps Engineer – Professional&lt;/strong&gt;: tough, but highly valued for senior roles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Azure:&lt;/strong&gt;
- &lt;strong&gt;AZ-104 (Azure Administrator)&lt;/strong&gt;: the core operations cert.
- &lt;strong&gt;AZ-400 (DevOps Engineer Expert)&lt;/strong&gt;: CI/CD, infrastructure as code, monitoring on Azure.
- Very common in European enterprises and Microsoft-heavy companies.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Google Cloud:&lt;/strong&gt;
- &lt;strong&gt;Associate Cloud Engineer&lt;/strong&gt;: a solid first step.
- &lt;strong&gt;Professional Cloud DevOps Engineer&lt;/strong&gt;: SRE-flavoured, focused on reliability and delivery.&lt;/p&gt;
&lt;h2&gt;Other useful certifications&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HashiCorp Terraform Associate&lt;/strong&gt;: covers Terraform fundamentals. Fairly easy, widely recognised, and Terraform knowledge applies to OpenTofu too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt;: &lt;strong&gt;LFCS&lt;/strong&gt; (Linux Foundation Certified System Administrator) or &lt;strong&gt;RHCSA&lt;/strong&gt; (Red Hat). Both hands-on. RHCSA is especially valued in Red Hat environments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt; and &lt;strong&gt;GitHub Advanced Security&lt;/strong&gt; certifications: newer, useful if you work heavily with GitHub.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security&lt;/strong&gt;: &lt;strong&gt;CompTIA Security+&lt;/strong&gt; as a foundation, CKS for Kubernetes security.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prometheus Certified Associate (PCA)&lt;/strong&gt; and &lt;strong&gt;OpenTelemetry Certified Associate (OTCA)&lt;/strong&gt;: smaller, but growing as observability becomes more important.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Worth the money?&lt;/h2&gt;
&lt;p&gt;Rough return on investment, from my perspective:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Certification&lt;/th&gt;
&lt;th&gt;Value for DevOps roles&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CKA&lt;/td&gt;
&lt;td&gt;Very high&lt;/td&gt;
&lt;td&gt;Medium–high (hands-on)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS Solutions Architect – Associate&lt;/td&gt;
&lt;td&gt;Very high&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AZ-104 / AZ-400&lt;/td&gt;
&lt;td&gt;High (esp. in enterprises)&lt;/td&gt;
&lt;td&gt;Medium / high&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS DevOps Engineer – Professional&lt;/td&gt;
&lt;td&gt;High for senior roles&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CKS&lt;/td&gt;
&lt;td&gt;High for security focus&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Terraform Associate&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Low–medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RHCSA / LFCS&lt;/td&gt;
&lt;td&gt;Medium–high&lt;/td&gt;
&lt;td&gt;Medium (hands-on)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud Practitioner / KCNA&lt;/td&gt;
&lt;td&gt;Low for technical roles&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Exam prices are typically a few hundred euros or dollars each, and many employers pay for them. Linux Foundation exams often go on sale (Black Friday, Cyber Monday), and usually include a free retake.&lt;/p&gt;
&lt;h2&gt;How I'd combine them&lt;/h2&gt;
&lt;p&gt;A strong path for someone starting out:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;One cloud associate cert&lt;/strong&gt; (AWS Solutions Architect – Associate or AZ-104).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CKA&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terraform Associate&lt;/strong&gt;, if you want a quick win.&lt;/li&gt;
&lt;li&gt;Later: a professional cloud cert, or CKS if security interests you.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And for every certification, &lt;strong&gt;build a project&lt;/strong&gt; that uses what you learned. A cert plus a GitHub repo showing real work is far more convincing than either one alone.&lt;/p&gt;
&lt;h2&gt;So, are they worth it?&lt;/h2&gt;
&lt;p&gt;The hands-on ones and the major cloud associate certs, yes, especially early in your career. Beyond that, depth of experience matters more than the number of badges.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: certifications open doors. Experience keeps you in the room. Get a couple of the right ones, then let your work do the talking.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Portfolio projects that get you hired</title>
      <link>https://deslypeter.com/writing/portfolio-projects-get-hired</link>
      <guid>https://deslypeter.com/writing/portfolio-projects-get-hired.html?lang=en</guid>
      <description>Fifteen projects, from beginner to advanced, that show real skills.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;When you're trying to get your first DevOps job, you're stuck in a classic loop: companies want experience, but you need a job to get experience. Portfolio projects break that loop. They show what you can actually do, in a way a CV line like "familiar with Kubernetes" never can.&lt;/p&gt;
&lt;p&gt;Here are fifteen projects that I think demonstrate real skills, grouped by level. You don't need to build all of them. Three or four good ones, done properly and well documented, are worth more than fifteen half-finished repos.&lt;/p&gt;
&lt;h2&gt;Beginner projects&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. A static website with CI/CD.&lt;/strong&gt;
A personal site or blog built with a static site generator, deployed automatically on every push with GitHub Actions to GitHub Pages, Netlify, or an S3 bucket behind a CDN. Add a custom domain and HTTPS.
&lt;em&gt;Shows:&lt;/em&gt; Git, CI/CD basics, DNS, TLS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. A hardened Linux server.&lt;/strong&gt;
A cloud VM with SSH keys only, a firewall, automatic security updates, fail2ban, a non-root user, and NGINX serving your site. Documented step by step, then automated with a script or Ansible.
&lt;em&gt;Shows:&lt;/em&gt; Linux, security basics, automation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Containerised app with Docker Compose.&lt;/strong&gt;
A small web app with a database and a cache, running with one &lt;code&gt;docker compose up&lt;/code&gt;. Multi-stage Dockerfile, small image, health checks.
&lt;em&gt;Shows:&lt;/em&gt; containers, networking between services.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Uptime and certificate monitor.&lt;/strong&gt;
A Python script (or small Go tool) that checks a list of websites for availability and certificate expiry, runs on a schedule, and sends alerts to Slack, Telegram or email.
&lt;em&gt;Shows:&lt;/em&gt; scripting, APIs, scheduling, thinking about reliability.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Infrastructure for a simple app in Terraform.&lt;/strong&gt;
A VPC, subnets, a VM or container service, a database and a load balancer, all in Terraform, with remote state. Destroy and recreate it in one command.
&lt;em&gt;Shows:&lt;/em&gt; cloud fundamentals, infrastructure as code.&lt;/p&gt;
&lt;h2&gt;Intermediate projects&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;6. Full CI/CD pipeline for a containerised app.&lt;/strong&gt;
Tests, linting, image build, security scan (Trivy), push to a registry, deploy to staging automatically, promote to production with approval. Use OIDC instead of stored cloud keys.
&lt;em&gt;Shows:&lt;/em&gt; real-world pipeline design and security awareness.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7. Kubernetes deployment with Helm.&lt;/strong&gt;
Your app running on a local cluster (kind or k3s) and on a managed cluster, packaged as a Helm chart with sensible defaults, probes, resource requests and a Gateway API route.
&lt;em&gt;Shows:&lt;/em&gt; Kubernetes fundamentals.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8. GitOps with Argo CD or Flux.&lt;/strong&gt;
A GitOps repository managing several apps across two environments, with automatic sync, and promotion between environments through pull requests.
&lt;em&gt;Shows:&lt;/em&gt; modern deployment practices.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;9. Observability stack.&lt;/strong&gt;
Prometheus, Grafana and Loki (or a ClickHouse-based tool) monitoring your app. A RED dashboard, two meaningful alerts with runbooks, and OpenTelemetry tracing across two services.
&lt;em&gt;Shows:&lt;/em&gt; you think beyond "it's deployed".&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;10. Automated backups and restore test.&lt;/strong&gt;
Scheduled database backups to object storage in another region, and an automated job that restores the latest backup to a test database and verifies the data, with alerts if anything fails.
&lt;em&gt;Shows:&lt;/em&gt; reliability thinking, which most junior candidates skip.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A project that shows you thought about what happens when things break is worth more than one that only works on a sunny day.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Advanced projects&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;11. A homelab Kubernetes cluster.&lt;/strong&gt;
Three nodes (mini PCs, Raspberry Pis or VMs), Talos or k3s, Cilium, GitOps, cert-manager, storage, monitoring and backups. Write about what broke and how you fixed it.
&lt;em&gt;Shows:&lt;/em&gt; deep understanding of the layers managed services hide.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12. Internal developer platform in miniature.&lt;/strong&gt;
A template that creates a new service with repo, pipeline, Helm chart, monitoring and a catalog entry (Backstage or a simple CLI). One command from idea to running service.
&lt;em&gt;Shows:&lt;/em&gt; platform engineering mindset.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;13. Policy and supply chain security.&lt;/strong&gt;
Signed images with Cosign, SBOMs, Kyverno policies that block unsigned images, privileged containers and &lt;code&gt;latest&lt;/code&gt; tags, and a pipeline that enforces it all.
&lt;em&gt;Shows:&lt;/em&gt; security beyond the basics, highly relevant with new regulations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;14. Multi-environment infrastructure with Terraform modules.&lt;/strong&gt;
Reusable modules, separate state per environment, plan on pull request and apply on merge, policy checks, cost estimates with Infracost.
&lt;em&gt;Shows:&lt;/em&gt; production-grade infrastructure as code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;15. Chaos and resilience testing.&lt;/strong&gt;
Run chaos experiments (Chaos Mesh or LitmusChaos) against your app: kill pods, add latency, fail a dependency. Document hypotheses, results and the fixes you made.
&lt;em&gt;Shows:&lt;/em&gt; SRE thinking and maturity.&lt;/p&gt;
&lt;h2&gt;What to include in the README&lt;/h2&gt;
&lt;p&gt;Your README matters as much as the code. Employers often only read the README. Include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What it is and why you built it&lt;/strong&gt;, in two or three sentences.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An architecture diagram.&lt;/strong&gt; Even a simple one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How to run it&lt;/strong&gt;, step by step.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design decisions and trade-offs&lt;/strong&gt;: why this tool and not another.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What you'd do next&lt;/strong&gt; with more time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What broke and what you learned.&lt;/strong&gt; This is the most impressive section for many interviewers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Hosting it cheaply&lt;/h2&gt;
&lt;p&gt;You don't need a big budget:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Free tiers&lt;/strong&gt; on AWS, Azure, Google Cloud and Oracle Cloud.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Local clusters&lt;/strong&gt; (kind, k3d, minikube) for most Kubernetes work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cheap VPS providers&lt;/strong&gt; like Hetzner for always-on projects at a few euros a month.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Always set budget alerts&lt;/strong&gt;, and destroy expensive resources with Terraform when you're done. Screenshots and a recorded demo can replace a permanently running environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Presenting projects in interviews&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pick one or two projects&lt;/strong&gt; to talk about in depth rather than listing everything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tell the story&lt;/strong&gt;: what problem, what you built, what went wrong, what you learned.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be ready to go deep&lt;/strong&gt;: why this design? What would you change at ten times the scale?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Link them on your CV and LinkedIn&lt;/strong&gt;, and consider writing a blog post about each one.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Pick a project one level above what you're comfortable with. Finish it, document it well, and write about it. Then build the next one on top of it. A single app that grows through several projects (containerised, deployed, monitored, secured) tells a great story.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: show, don't tell. A well-documented project that survived your own chaos test says more than any line on a CV.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>From sysadmin to DevOps</title>
      <link>https://deslypeter.com/writing/from-sysadmin-to-devops</link>
      <guid>https://deslypeter.com/writing/from-sysadmin-to-devops.html?lang=en</guid>
      <description>What carries over, what's missing, and how to make the move.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Many of the best DevOps engineers I know started as system administrators. They spent years keeping servers alive, fixing networks, restoring backups at 2 a.m., and being the person everyone called when "the internet is broken".&lt;/p&gt;
&lt;p&gt;If that's you, and you're wondering whether you can move into DevOps: yes. You already have a big part of what it takes. You just need to change how you work, and add a few skills.&lt;/p&gt;
&lt;h2&gt;Skills you already have&lt;/h2&gt;
&lt;p&gt;Sysadmins often underestimate how valuable their experience is. You probably already know:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linux (or Windows) in depth&lt;/strong&gt;: processes, services, file systems, permissions, performance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Networking&lt;/strong&gt;: DNS, firewalls, routing, load balancers, VPNs. Many developers moving into DevOps struggle with this. You don't.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Troubleshooting under pressure&lt;/strong&gt;: calm, methodical debugging when production is down.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operations thinking&lt;/strong&gt;: backups, monitoring, patching, capacity, what happens when things fail.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security basics&lt;/strong&gt;: access control, hardening, the consequences of getting it wrong.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dealing with people&lt;/strong&gt;: users, managers, vendors, incidents.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are exactly the skills that are hardest to teach and that interviewers look for in troubleshooting questions.&lt;/p&gt;
&lt;h2&gt;The gaps&lt;/h2&gt;
&lt;p&gt;The shift from sysadmin to DevOps is mostly a shift in mindset: from &lt;strong&gt;doing things by hand&lt;/strong&gt; to &lt;strong&gt;writing code that does things&lt;/strong&gt;, and from &lt;strong&gt;pets&lt;/strong&gt; to &lt;strong&gt;cattle&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The typical gaps:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Coding.&lt;/strong&gt; Not just scripts, but code that's version-controlled, reviewed, tested and maintained. Python is the easiest start. Bash is useful but not enough.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Git and pull requests.&lt;/strong&gt; Everything lives in Git: infrastructure, configuration, pipelines. Working through pull requests and code review becomes daily life.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Infrastructure as code.&lt;/strong&gt; Terraform or OpenTofu instead of clicking or SSH-ing. Ansible for configuration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Containers and Kubernetes.&lt;/strong&gt; Packaging applications as containers, and running them on an orchestrator instead of on hand-managed servers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. CI/CD.&lt;/strong&gt; Automated pipelines that build, test and deploy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. Cloud.&lt;/strong&gt; If your background is on-premises, one major cloud provider. The good news: your networking and systems knowledge transfers very well, because the cloud is "just" someone else's data centre with an API.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7. Working closely with developers.&lt;/strong&gt; Understanding how software is built, and helping teams ship, rather than receiving finished software to run.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The biggest change isn't the tools. It's moving from "I'll fix it" to "I'll make sure it fixes itself, or can't break that way again".&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Getting experience in your current job&lt;/h2&gt;
&lt;p&gt;You don't have to wait for a DevOps job title to start doing DevOps work. Some ideas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Put your scripts and configs in Git.&lt;/strong&gt; Even if you're the only one using them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automate a repetitive task&lt;/strong&gt; with Ansible: user creation, patching, server setup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write Terraform&lt;/strong&gt; for something you'd normally click together, even a test environment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Containerise an internal tool&lt;/strong&gt; and run it with Docker or Podman.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Set up a CI pipeline&lt;/strong&gt; for your automation code, with linting and tests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improve monitoring&lt;/strong&gt;: add Prometheus and Grafana, write meaningful alerts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Volunteer&lt;/strong&gt; for projects involving cloud migration, automation or developer tooling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Work with your developers&lt;/strong&gt;: offer to help with their pipeline or deployment problems.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Every one of these becomes a story for your CV and interviews: "I automated our server provisioning with Ansible and Terraform, cutting setup time from two days to an hour."&lt;/p&gt;
&lt;h2&gt;Learning outside work&lt;/h2&gt;
&lt;p&gt;A homelab is especially powerful for sysadmins, because you already understand the hardware and networking side. Build a small Kubernetes cluster, run your own services on it with GitOps, and break it on purpose.&lt;/p&gt;
&lt;p&gt;Certifications can help signal the transition: &lt;strong&gt;CKA&lt;/strong&gt; and a &lt;strong&gt;cloud associate certification&lt;/strong&gt; are the most valuable. Linux certs like RHCSA are good, but you may already have the knowledge.&lt;/p&gt;
&lt;h2&gt;Your CV&lt;/h2&gt;
&lt;p&gt;When updating your CV for DevOps roles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lead with automation and impact&lt;/strong&gt;, not daily tasks. "Automated patching for 300 servers with Ansible" beats "Responsible for server maintenance".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Show numbers&lt;/strong&gt;: time saved, incidents reduced, servers managed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;List your tools honestly&lt;/strong&gt;, separated into "experienced" and "familiar".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Link to a GitHub profile&lt;/strong&gt; with real projects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Highlight incident and troubleshooting experience.&lt;/strong&gt; It's a strength.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Job titles to look for besides "DevOps Engineer": Site Reliability Engineer, Platform Engineer, Cloud Engineer, Infrastructure Engineer. Cloud engineer roles are often the easiest bridge from sysadmin work.&lt;/p&gt;
&lt;h2&gt;So, can you make the move?&lt;/h2&gt;
&lt;p&gt;Absolutely. You already have the foundations many people coming from development lack. Add coding, Git, infrastructure as code and containers, start using them in your current job, and the title will follow.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: sysadmins don't need to start over to become DevOps engineers. They need to start writing down, in code, everything they already know how to do.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>On call without burning out</title>
      <link>https://deslypeter.com/writing/on-call-without-burning-out</link>
      <guid>https://deslypeter.com/writing/on-call-without-burning-out.html?lang=en</guid>
      <description>Being on call shouldn't cost your sleep or your health.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;If you work in DevOps or SRE, you probably know the feeling: the phone on the bedside table, volume up. Checking it before falling asleep. Not going too far from the laptop on a Sunday. Jumping at every buzz, even when it's just a message from a friend.&lt;/p&gt;
&lt;p&gt;On call is part of running production systems. Someone has to respond when things break. But it doesn't have to wear people down. Done well, on call is manageable, even educational. Done badly, it's one of the fastest ways to burn out a team.&lt;/p&gt;
&lt;h2&gt;What makes on call hard&lt;/h2&gt;
&lt;p&gt;It's rarely the big incident that breaks people. It's the accumulation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Too many pages&lt;/strong&gt;, most of them not needing action.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Night pages&lt;/strong&gt;, again and again, ruining sleep for days after.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Too few people&lt;/strong&gt; in the rotation, so it comes around too often.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Not knowing what to do&lt;/strong&gt;: unfamiliar systems, missing runbooks, no one to escalate to.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Constant low-level anxiety&lt;/strong&gt;, even when nothing happens.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No recognition or compensation&lt;/strong&gt; for the time and stress.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;A fair rotation&lt;/h2&gt;
&lt;p&gt;Some principles for a healthy rotation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enough people.&lt;/strong&gt; As a rough guide, at least six to eight people per rotation, so each person is on call around one week in six or eight. With fewer than four or five, it gets very hard to sustain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Primary and secondary.&lt;/strong&gt; A second person as backup means nobody feels completely alone, and there's a fallback if the primary can't respond.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reasonable shift lengths.&lt;/strong&gt; One week is common. Some teams split weekdays and weekends.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Follow the sun&lt;/strong&gt; if you have teams in different time zones: each region covers its own daytime, so nobody gets paged at night.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Easy swaps.&lt;/strong&gt; Life happens. Make trading shifts simple and normal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proper handovers&lt;/strong&gt;: what happened during the last shift, what's still open, what to watch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Onboarding&lt;/strong&gt;: new people shadow an experienced engineer before going on call alone.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;A healthy on-call rotation is measured by how well people sleep, not just by how fast they respond.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Fewer pages&lt;/h2&gt;
&lt;p&gt;The most effective way to improve on call is to reduce how often it's needed.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Every page must need urgent human action.&lt;/strong&gt; If it doesn't, downgrade it to a ticket or remove it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alert on symptoms users feel&lt;/strong&gt;, ideally SLO burn rates, not on every CPU spike.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Track pages per shift&lt;/strong&gt; and review them weekly or monthly as a team.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fix recurring causes.&lt;/strong&gt; If the same alert fires every week, the fix belongs in the backlog with real priority.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automate the known fixes.&lt;/strong&gt; If the response to an alert is always "restart the service", automate it, and then fix why it needs restarting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protect deployments&lt;/strong&gt;: avoid risky changes on Friday evenings and before holidays, and use progressive delivery so problems are caught early.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Google's SRE guidance suggests aiming for a small number of incidents per shift, so engineers have time to handle each properly and follow up. If your team regularly gets many pages per night, that's a reliability problem, not a people problem.&lt;/p&gt;
&lt;h2&gt;Being paid for it&lt;/h2&gt;
&lt;p&gt;On call is work. It limits your freedom, even when nothing happens. Fair compensation matters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A standby allowance&lt;/strong&gt; for being on call.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extra pay or time off&lt;/strong&gt; for actual incidents, especially at night and on weekends.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time off after a bad night.&lt;/strong&gt; If you were up at 3 a.m. fixing production, you shouldn't be expected at the 9 a.m. stand-up.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In Germany and much of Europe, working time and rest period rules also apply to on call. Rest periods after night work aren't just nice, they can be a legal requirement. Check with HR how your company handles it.&lt;/p&gt;
&lt;h2&gt;Support during incidents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clear escalation paths.&lt;/strong&gt; Who to call when you're stuck, at any hour.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Runbooks&lt;/strong&gt; for every alert.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No blame.&lt;/strong&gt; People need to feel safe asking for help or admitting they don't know.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Incident commander role&lt;/strong&gt; for bigger incidents, so the person on call doesn't have to coordinate and fix at the same time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Looking after yourself&lt;/h2&gt;
&lt;p&gt;Some personal habits that help me and colleagues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prepare at the start of your shift&lt;/strong&gt;: laptop charged, VPN and access working, recent changes reviewed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Set boundaries&lt;/strong&gt;: on call means available, not glued to the screen. Live your life, just within reach.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use a separate notification profile&lt;/strong&gt; so only real pages break through at night.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hand over properly&lt;/strong&gt; at the end of your shift, and then actually switch off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Talk about it.&lt;/strong&gt; If on call is affecting your sleep, health or relationships, tell your manager. It's a signal the system needs fixing.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;For managers&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Look at the numbers: pages per shift, night pages, time to recover, and how people feel.&lt;/li&gt;
&lt;li&gt;Treat on-call load as a reliability metric, and make reducing it a priority.&lt;/li&gt;
&lt;li&gt;Make sure the people who build the systems share the on-call duty. It's the strongest incentive to build reliable software.&lt;/li&gt;
&lt;li&gt;Join the rotation yourself, or at least the escalation path.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So, what's a good first step?&lt;/h2&gt;
&lt;p&gt;Look at last month's pages together as a team. Count how many needed action, and how many happened at night. Pick the three noisiest alerts and fix or remove them. That single meeting often makes the next month noticeably calmer.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: production systems need to be reliable, and so do the people who look after them. Protect both.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Why tools alone don't make DevOps</title>
      <link>https://deslypeter.com/writing/why-tools-dont-make-devops</link>
      <guid>https://deslypeter.com/writing/why-tools-dont-make-devops.html?lang=en</guid>
      <description>You can buy every tool and still have silos. Culture is the hard part.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;I've seen companies "do DevOps" by buying tools. Kubernetes, a CI/CD platform, an observability suite, maybe a new team called "DevOps". A year later, releases are still slow and painful, developers still throw code over the wall, and the new DevOps team is just the old ops team with a new name and a longer ticket queue.&lt;/p&gt;
&lt;p&gt;The tools aren't the problem. They're just not the point.&lt;/p&gt;
&lt;h2&gt;What DevOps was supposed to fix&lt;/h2&gt;
&lt;p&gt;The word "DevOps" was coined around 2009, when Patrick Debois organised the first DevOpsDays in Belgium. The problem it addressed was a human one: developers wanted to ship changes quickly, operations wanted stability. They had different goals, different managers and different incentives. So they fought, and software delivery was slow and fragile.&lt;/p&gt;
&lt;p&gt;DevOps proposed bringing them together: shared goals, shared responsibility, shared tools, and a lot of automation so that speed and stability stop being opposites.&lt;/p&gt;
&lt;p&gt;Notice the order. &lt;strong&gt;People and goals first, tools to support them.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;The CALMS framework&lt;/h2&gt;
&lt;p&gt;A useful way to think about DevOps is &lt;strong&gt;CALMS&lt;/strong&gt;, a framework popularised by Jez Humble and others:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Culture&lt;/strong&gt;: shared responsibility, collaboration, learning from failure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automation&lt;/strong&gt;: removing manual, error-prone work from building, testing, deploying and operating.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lean&lt;/strong&gt;: small batches, limiting work in progress, removing waste and waiting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Measurement&lt;/strong&gt;: data about delivery and reliability (like the DORA metrics), used to improve, not to punish.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sharing&lt;/strong&gt;: knowledge, tools, responsibility and success across teams.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tools mostly cover the A and part of the M. The C, L, and S depend on how people work together.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tools make good collaboration faster. They also make bad collaboration faster.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Signs of "DevOps in name only"&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A DevOps team that receives tickets&lt;/strong&gt; from developers and does all the deployment and infrastructure work for them. That's a new silo, not DevOps.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Developers never see production&lt;/strong&gt;: no access to logs, metrics or alerts for their own services.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blame after incidents&lt;/strong&gt;: someone gets told off, nobody looks at the system.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Big, infrequent releases&lt;/strong&gt; despite having a CI/CD tool.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Approval boards&lt;/strong&gt; for every change, meeting once a week.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools chosen by one team&lt;/strong&gt; and forced on others without asking what they need.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Breaking silos&lt;/h2&gt;
&lt;p&gt;What actually helps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Shared goals.&lt;/strong&gt; Developers and operations measured on the same outcomes: delivery speed &lt;strong&gt;and&lt;/strong&gt; reliability, not one each.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;"You build it, you run it"&lt;/strong&gt;, with support. Teams own their services in production, including on call, with platform teams making that manageable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Platform teams that serve&lt;/strong&gt;, building self-service tools that let developers move independently, instead of doing work for them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Embedding&lt;/strong&gt;: an SRE or platform engineer working within a product team for a while, sharing knowledge both ways.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shared rituals&lt;/strong&gt;: joint postmortems, shared dashboards, demos across teams.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Feeling safe to speak up&lt;/h2&gt;
&lt;p&gt;Google's research on team effectiveness, known as &lt;strong&gt;Project Aristotle&lt;/strong&gt;, found that the most important factor in high-performing teams was &lt;strong&gt;psychological safety&lt;/strong&gt;: the belief that you won't be punished for speaking up, asking questions, or admitting mistakes.&lt;/p&gt;
&lt;p&gt;The DORA research says something similar: a &lt;strong&gt;generative culture&lt;/strong&gt;, where information flows freely and failure leads to inquiry rather than blame, predicts better software delivery and better well-being.&lt;/p&gt;
&lt;p&gt;In practice, psychological safety in DevOps looks like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Blameless postmortems&lt;/strong&gt; where the question is "how did the system allow this?", not "who did this?"&lt;/li&gt;
&lt;li&gt;People saying "I don't know" or "I broke it" without fear.&lt;/li&gt;
&lt;li&gt;Juniors comfortable asking questions in public channels.&lt;/li&gt;
&lt;li&gt;Leaders admitting their own mistakes first.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Without it, problems get hidden, and hidden problems become outages.&lt;/p&gt;
&lt;h2&gt;Leading the change&lt;/h2&gt;
&lt;p&gt;If you want to move your organisation towards real DevOps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Start with a pain point everyone feels&lt;/strong&gt;: slow releases, painful deployments, frequent incidents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pick one team&lt;/strong&gt; willing to try a different way. Show results.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Measure before and after&lt;/strong&gt; (DORA metrics are great for this).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invest in automation&lt;/strong&gt; that removes the most painful manual work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Change incentives&lt;/strong&gt;: what gets rewarded and measured shapes behaviour more than any tool.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Get leadership support&lt;/strong&gt;. Culture changes from the top as much as from the bottom.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be patient.&lt;/strong&gt; Culture change takes years, not sprints.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;So, are tools useless?&lt;/h2&gt;
&lt;p&gt;Not at all. Good tools make good practices possible and scalable. But they come after the decision to work together differently, not instead of it.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: DevOps is something you practise, not something you buy. The tools are the easy part. The people are the point.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Green DevOps: the carbon cost of our servers</title>
      <link>https://deslypeter.com/writing/green-devops-carbon</link>
      <guid>https://deslypeter.com/writing/green-devops-carbon.html?lang=en</guid>
      <description>Efficient infrastructure saves money and emissions. How to measure both.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;It's easy to think of software as weightless. Code is just text, the cloud is just "somewhere". But every request, every pipeline run, every idle VM runs on physical hardware in a data centre that uses electricity and water, and was manufactured with real materials.&lt;/p&gt;
&lt;p&gt;Data centres already use a noticeable chunk of the world's electricity, and the AI boom is making that number rise quickly. As the people who decide how much infrastructure runs and how efficiently, DevOps engineers have more influence over this than we often realise.&lt;/p&gt;
&lt;h2&gt;Why it matters now&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Regulation.&lt;/strong&gt; In the EU, the Corporate Sustainability Reporting Directive (CSRD) requires many large companies to report environmental impact, which includes IT. The Energy Efficiency Directive requires larger data centres to report energy and water use. Even where requirements have been scaled back or delayed, the direction is clear.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customers and investors&lt;/strong&gt; increasingly ask about emissions, including from digital services.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI workloads&lt;/strong&gt; are energy-hungry, and growing quickly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost.&lt;/strong&gt; Energy is a big part of what you pay for in the cloud. Wasted compute is wasted money and wasted carbon at the same time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Where software emissions come from&lt;/h2&gt;
&lt;p&gt;Roughly three sources:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Operational energy&lt;/strong&gt;: electricity used by servers, storage and networking while running your workloads.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carbon intensity of that energy&lt;/strong&gt;: the same kilowatt-hour can have very different emissions depending on where and when it's used. A grid powered by wind and hydro is much cleaner than one powered by coal or gas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Embodied carbon&lt;/strong&gt;: emissions from manufacturing the hardware. Using hardware more efficiently, and longer, spreads that out.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The &lt;strong&gt;Green Software Foundation&lt;/strong&gt; defines a &lt;strong&gt;Software Carbon Intensity (SCI)&lt;/strong&gt; specification, now an ISO standard, to calculate emissions per unit of work (for example per request or per user), combining energy, carbon intensity and embodied emissions.&lt;/p&gt;
&lt;h2&gt;Measuring it&lt;/h2&gt;
&lt;p&gt;You can't reduce what you can't see. Tools that help:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloud provider dashboards&lt;/strong&gt;: AWS Customer Carbon Footprint Tool, Google Cloud Carbon Footprint, Microsoft's Emissions Impact Dashboard. Good for an overview, usually with a delay and limited detail.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud Carbon Footprint&lt;/strong&gt;: an open-source tool that estimates emissions from cloud billing data across providers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kepler&lt;/strong&gt; (Kubernetes-based Efficient Power Level Exporter, a CNCF project): uses eBPF and hardware counters to estimate the energy use of individual pods and containers, exposed as Prometheus metrics.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Electricity Maps&lt;/strong&gt; and &lt;strong&gt;WattTime&lt;/strong&gt;: real-time and forecast carbon intensity data for electricity grids.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carbon Aware SDK&lt;/strong&gt; from the Green Software Foundation: helps applications use that data to make decisions.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;The greenest compute is the compute you don't run. The second greenest is the compute you run efficiently, in a clean place, at a clean time.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What DevOps teams can do&lt;/h2&gt;
&lt;p&gt;Most of these are also cost optimisations, which makes them easier to justify.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use less:&lt;/strong&gt;
- Delete idle and forgotten resources.
- Right-size VMs, containers and databases.
- Turn off non-production environments outside working hours.
- Scale to zero where possible.
- Keep observability data lean: fewer logs, sampled traces, shorter retention.
- Avoid unnecessary CI runs (only build what changed, cancel outdated runs).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use it more efficiently:&lt;/strong&gt;
- Increase utilisation by packing Kubernetes nodes better (Karpenter consolidation, honest resource requests).
- Use energy-efficient hardware like ARM-based instances, which often use less energy for the same work.
- Optimise hot code paths (continuous profiling helps find them).
- Cache and compress to reduce network traffic and repeated work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use cleaner energy:&lt;/strong&gt;
- &lt;strong&gt;Choose regions with cleaner grids&lt;/strong&gt; when latency and data rules allow. Regions in countries with lots of hydro, wind or nuclear typically have much lower carbon intensity. Cloud providers publish data about their regions.
- &lt;strong&gt;Carbon-aware scheduling&lt;/strong&gt;: run flexible workloads (batch jobs, training, reports, non-urgent CI) when or where the grid is cleaner. For example, shift a nightly job to the hours with the most wind power, or to a cleaner region.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use hardware longer:&lt;/strong&gt;
- For on-premises, extending hardware lifetime reduces embodied emissions.&lt;/p&gt;
&lt;h2&gt;Carbon-aware scheduling, in practice&lt;/h2&gt;
&lt;p&gt;A simple version: a batch job that can run any time within the next 12 hours checks a carbon intensity forecast and starts in the cleanest window. Tools and Kubernetes projects are emerging to do this automatically, using KEDA scalers based on carbon intensity or schedulers that consider grid data.&lt;/p&gt;
&lt;p&gt;It doesn't work for everything. User-facing requests need to run now, close to users. But a surprising amount of compute is flexible: data pipelines, model training, backups, test suites.&lt;/p&gt;
&lt;h2&gt;Saving money and CO₂ together&lt;/h2&gt;
&lt;p&gt;The nice thing about green DevOps: it rarely conflicts with good engineering. Efficient systems are cheaper, faster and greener. FinOps and sustainability teams often find they're working on the same list.&lt;/p&gt;
&lt;p&gt;A useful habit: next to the cost of a service, show its estimated energy or carbon footprint. It gives engineers one more reason to clean up, and makes the impact visible.&lt;/p&gt;
&lt;h2&gt;So, where do I start?&lt;/h2&gt;
&lt;p&gt;Look at your cloud provider's carbon dashboard to get a baseline. Then do the efficiency work you'd do for cost anyway: remove waste, right-size, turn off what's idle. If you run Kubernetes, try Kepler to see energy per workload. And for your next batch workload, ask whether it could run at a cleaner time or in a cleaner region.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: every idle server is burning money and carbon for nothing. Efficient infrastructure is good engineering, good business and good for the planet, all at once.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>DevOps in 2026: what changed this year</title>
      <link>https://deslypeter.com/writing/devops-in-2026</link>
      <guid>https://deslypeter.com/writing/devops-in-2026.html?lang=en</guid>
      <description>AI agents, platforms, new security laws. My look back at the year, and what's next.</description>
      <pubDate>Tue, 20 Oct 2026 23:10:30 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p&gt;Every year in DevOps feels busy. But looking back at 2026, a few shifts stand out as more than the usual churn of new tools. Some of them change how the job feels day to day. Here's my look at what changed, what's fading, and what I expect next.&lt;/p&gt;
&lt;h2&gt;The big shifts&lt;/h2&gt;
&lt;h3&gt;1. AI agents moved into the workflow&lt;/h3&gt;
&lt;p&gt;The biggest change of the year. AI went from autocomplete and chat windows to &lt;strong&gt;agents&lt;/strong&gt; that read a repository, run commands, fix failing builds and open pull requests. Tools like Claude Code, GitHub's coding agent and others became a normal part of many teams' workflows.&lt;/p&gt;
&lt;p&gt;With that came new work for DevOps: deciding what agents may touch, sandboxing them, giving them narrow credentials, and making sure every change still goes through review and CI. The &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt; became the standard way to connect AI to tools like Kubernetes, GitHub and observability platforms, along with a new class of security concerns, especially prompt injection.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Related: &lt;a href="https://deslypeter.com/writing/will-ai-take-my-devops-job.html"&gt;Will AI take my DevOps job?&lt;/a&gt;, &lt;a href="https://deslypeter.com/writing/ai-agents-in-my-pipeline.html"&gt;AI agents in my pipeline&lt;/a&gt;, &lt;a href="https://deslypeter.com/writing/mcp-plugging-ai-into-infrastructure.html"&gt;MCP: plugging AI into your infrastructure&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;2. Platform engineering became the default model&lt;/h3&gt;
&lt;p&gt;"Platform engineering" stopped being a buzzword and became how many organisations structure their teams: platform teams building golden paths and self-service tools, product teams owning their services. The conversation matured from "should we have a portal?" to "is our platform actually reducing cognitive load?"&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Related: &lt;a href="https://deslypeter.com/writing/internal-developer-platform-small-team.html"&gt;Building an internal developer platform without a big team&lt;/a&gt;, &lt;a href="https://deslypeter.com/writing/golden-paths.html"&gt;Golden paths&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;3. Goodbye ingress-nginx, hello Gateway API&lt;/h3&gt;
&lt;p&gt;The retirement of ingress-nginx in March 2026 forced one of the biggest Kubernetes migrations in years. For many teams, it was the push to finally adopt &lt;strong&gt;Gateway API&lt;/strong&gt;, which is now the default way to route traffic into clusters.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Related: &lt;a href="https://deslypeter.com/writing/goodbye-ingress-nginx-hello-gateway-api.html"&gt;Goodbye ingress-nginx, hello Gateway API&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;4. Supply chain security got serious, and regulated&lt;/h3&gt;
&lt;p&gt;After a run of high-profile supply chain attacks (compromised GitHub Actions, self-spreading npm worms, hijacked maintainer accounts), pinning, signing, SBOMs and provenance moved from "best practice" to "expected". In the EU, the &lt;strong&gt;Cyber Resilience Act's&lt;/strong&gt; reporting obligations started applying in September 2026, with the full requirements coming in December 2027.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Related: &lt;a href="https://deslypeter.com/writing/locking-down-github-actions.html"&gt;Locking down GitHub Actions&lt;/a&gt;, &lt;a href="https://deslypeter.com/writing/when-npm-turns-against-you.html"&gt;When npm turns against you&lt;/a&gt;, &lt;a href="https://deslypeter.com/writing/eu-cyber-resilience-act-devops.html"&gt;The EU Cyber Resilience Act and DevOps&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;2026 was the year we stopped trusting our dependencies by default, including the AI ones.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;5. Infrastructure as code split into two paths&lt;/h3&gt;
&lt;p&gt;Terraform and OpenTofu continued to diverge, each with features the other lacks. Teams now make a real choice rather than defaulting to one tool.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Related: &lt;a href="https://deslypeter.com/writing/terraform-or-opentofu.html"&gt;Terraform or OpenTofu?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;6. Cost and sovereignty became infrastructure topics&lt;/h3&gt;
&lt;p&gt;FinOps became a normal part of engineering work, helped by the FOCUS billing standard. In Europe, &lt;strong&gt;digital sovereignty&lt;/strong&gt; moved from niche to boardroom, with hyperscalers launching sovereign offerings and European providers gaining attention. Some companies also continued moving steady workloads off the public cloud.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Related: &lt;a href="https://deslypeter.com/writing/cutting-the-cloud-bill.html"&gt;Cutting the cloud bill by a third&lt;/a&gt;, &lt;a href="https://deslypeter.com/writing/european-cloud-digital-sovereignty.html"&gt;European cloud and digital sovereignty&lt;/a&gt;, &lt;a href="https://deslypeter.com/writing/leaving-the-cloud.html"&gt;Leaving the cloud&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;7. AI workloads changed infrastructure&lt;/h3&gt;
&lt;p&gt;GPUs, model serving and LLM observability became regular infrastructure concerns. Kubernetes features like Dynamic Resource Allocation matured, and projects for serving LLMs on Kubernetes grew quickly.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Related: &lt;a href="https://deslypeter.com/writing/gpus-for-devops-people.html"&gt;GPUs for DevOps people&lt;/a&gt;, &lt;a href="https://deslypeter.com/writing/serving-models-on-kubernetes.html"&gt;From a container to Kubernetes: serving models for real&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;8. OpenTelemetry won&lt;/h3&gt;
&lt;p&gt;OpenTelemetry is now the default way to instrument systems, with Prometheus 3 speaking OTLP natively and profiling arriving as a fourth signal. The new focus is cost: collecting less, but better.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Related: &lt;a href="https://deslypeter.com/writing/opentelemetry-from-the-ground-up.html"&gt;OpenTelemetry from the ground up&lt;/a&gt;, &lt;a href="https://deslypeter.com/writing/reducing-observability-costs.html"&gt;When the monitoring bill beats the server bill&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;What's fading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hand-written YAML from scratch.&lt;/strong&gt; Generated, templated or AI-drafted, then reviewed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Long-lived cloud keys in CI.&lt;/strong&gt; OIDC has become the norm.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sidecar-heavy service meshes.&lt;/strong&gt; Sidecarless modes are taking over.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manual certificate renewal.&lt;/strong&gt; Shrinking certificate lifetimes make automation unavoidable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;"DevOps team" as a ticket queue.&lt;/strong&gt; Replaced by platform teams and real ownership.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Jenkins for new projects.&lt;/strong&gt; Still running a lot of pipelines, rarely chosen fresh.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What's rising&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agent guardrails&lt;/strong&gt; as a discipline: permissions, sandboxes, audit logs for AI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Policy as code everywhere&lt;/strong&gt;, from Kubernetes admission to Terraform plans to AI tool calls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;eBPF-based tools&lt;/strong&gt; for networking, security and zero-instrumentation observability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Post-quantum readiness&lt;/strong&gt;: crypto inventories and hybrid key exchange.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Green and efficient infrastructure&lt;/strong&gt;, driven by both cost and reporting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reviewing&lt;/strong&gt; as a core skill: reading diffs and plans critically, because so much is now generated.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;My predictions for next year&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Most routine pull requests in infrastructure repos will be opened by bots or agents&lt;/strong&gt;, with humans reviewing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An AI-agent-related security incident&lt;/strong&gt; will become a widely discussed case study, and push the industry towards stricter agent sandboxing standards.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The CRA's full application in December 2027&lt;/strong&gt; will make SBOMs and vulnerability handling a standard part of every release process in Europe.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gateway API will be the only routing API most new tutorials teach.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Platform teams will start measuring developer experience as seriously as uptime.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I'll check these next year, like I did with my AI predictions.&lt;/p&gt;
&lt;h2&gt;So, what does it mean for us?&lt;/h2&gt;
&lt;p&gt;The job keeps moving up a level. Less typing, more designing, reviewing and deciding. Fundamentals matter more than ever, because they're what let us judge everything that's generated for us. And the human side, collaboration, communication and calm under pressure, is still what makes the difference.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;My take: 2026 changed the tools faster than any year I remember. What didn't change is the job underneath: make software easy to ship and hard to break.&lt;/em&gt;&lt;/p&gt;
&lt;p class="sign"&gt;&lt;em&gt;— Desly&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Memento — Information with an expiry date</title>
      <link>https://deslypeter.com/writing/memento-2000-review</link>
      <guid>https://deslypeter.com/writing/memento-2000-review.html?lang=en</guid>
      <description>The backwards structure makes doubt feel immediate rather than decorative. Guy Pearce gives the puzzle a reason to matter beyond working out its order.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;What makes Memento work is the moment a conversation starts without the reassurance of knowing what came before it. Someone sounds helpful, but there is no reliable reason to trust them yet. Christopher Nolan makes that uncertainty a practical problem for the viewer, rather than just a condition described by the dialogue.&lt;/p&gt;&lt;p&gt;The editing makes information feel temporary. A photo or note might offer a brief reprieve, but then they become things to question. You have to pay attention, but each scene is pretty straightforward. There&amp;#x27;s usually an immediate problem to follow, even if the bigger picture isn&amp;#x27;t clear yet.&lt;/p&gt;&lt;p&gt;Guy Pearce keeps Leonard from becoming only an ingenious writing exercise. His seriousness, frustration and need for a workable routine give the film some emotional weight. Carrie-Anne Moss and Joe Pantoliano are especially effective at making ordinary exchanges difficult to read. A change in context can do more than a threatening line.&lt;/p&gt;&lt;p&gt;The structure feels a bit mechanical at times. The joy of solving the puzzle can overshadow the people in it. Still, the film ties its clever setup to a real human question: how much certainty can you build from information you can&amp;#x27;t fully trust? That&amp;#x27;s why the cleverness stays worth revisiting.&lt;/p&gt;&lt;p class="specs-note"&gt;2000 · English. &lt;a href="https://en.wikipedia.org/wiki/Memento_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/77"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2001/memento.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The backwards structure makes doubt feel immediate rather than decorative. Guy Pearce gives the puzzle a reason to matter beyond working out its order.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Gone Girl — Looking convincing is half the work</title>
      <link>https://deslypeter.com/writing/gone-girl-2014-review</link>
      <guid>https://deslypeter.com/writing/gone-girl-2014-review.html?lang=en</guid>
      <description>Fincher makes a missing-person story into an uneasy study of marriage and public performance. The acting and the cool, controlled presentation are stronger than a few of the more elaborate plot turns.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Gone Girl understands how uncomfortable it can be to watch somebody give the wrong impression. A pause is too long, a smile arrives at the wrong moment, and an ordinary response begins to look like evidence. David Fincher gets a lot of tension from people trying to appear convincing under observation.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s direction makes the domestic spaces feel neat but not comforting. The visuals are controlled, while the marriage&amp;#x27;s story is harder to pin down. That contrast works well. The film can make a TV interview or a chat with the police feel as important as a big dramatic moment.&lt;/p&gt;&lt;p&gt;Ben Affleck is well suited to Nick’s awkward relationship with his own public image. Rosamund Pike gives Amy a composure that makes the quieter scenes worth watching closely. Their performances suggest a relationship with its own private language, and Gillian Flynn’s dialogue lets affection, resentment and self-defence sit uncomfortably together.&lt;/p&gt;&lt;p&gt;The plot sometimes stretches its setup so far that the mechanics become obvious. Some side characters are also drawn more broadly than the main couple. Those quibbles matter, but they don&amp;#x27;t take away from the film&amp;#x27;s best point: being able to explain a relationship clearly is very different from really understanding it.&lt;/p&gt;&lt;p class="specs-note"&gt;2014 · English. &lt;a href="https://en.wikipedia.org/wiki/Gone_Girl_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/210577"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2014/gone_girl.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Fincher makes a missing-person story into an uneasy study of marriage and public performance. The acting and the cool, controlled presentation are stronger than a few of the more elaborate plot turns.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Game — A routine coming apart</title>
      <link>https://deslypeter.com/writing/the-game-1997-review</link>
      <guid>https://deslypeter.com/writing/the-game-1997-review.html?lang=en</guid>
      <description>Michael Douglas makes the loss of control convincing even when the plot stretches belief. The pleasure is in watching a carefully managed life become difficult to read.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Michael Douglas gives The Game the right kind of stiffness. Nicholas is used to deciding the terms of an encounter, and Douglas makes even a polite exchange feel like a negotiation. Once that confidence becomes unreliable, the film has something more interesting to work with than an elaborate series of surprises.&lt;/p&gt;&lt;p&gt;David Fincher makes an expensive, orderly life feel unwelcoming. The tension comes from the gap between Nicholas&amp;#x27;s resources and how little reassurance they give. Money usually promises a solution, but here it can&amp;#x27;t even guarantee he understands the problem. That shift is key to the film.&lt;/p&gt;&lt;p&gt;The dialogue keeps people at an uncomfortable distance. An explanation may be perfectly clear and still offer no reason for trust. Douglas gives those encounters enough irritation and vulnerability to stop the uncertainty becoming abstract. The film works best when it stays close to his growing difficulty in deciding what deserves a response.&lt;/p&gt;&lt;p&gt;The film needs a lot of belief from the viewer. Some parts are so elaborate that their practical workings become distracting. I liked the atmosphere and Douglas&amp;#x27;s performance more than the logistics. But as a thriller about losing control over the situation, it holds up well.&lt;/p&gt;&lt;p class="specs-note"&gt;1997 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Game_(1997_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/2649"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1997/game.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Michael Douglas makes the loss of control convincing even when the plot stretches belief. The pleasure is in watching a carefully managed life become difficult to read.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Zodiac — The work that will not end</title>
      <link>https://deslypeter.com/writing/zodiac-2007-review</link>
      <guid>https://deslypeter.com/writing/zodiac-2007-review.html?lang=en</guid>
      <description>Zodiac makes patient investigation absorbing without turning it into a tidy puzzle. Its strongest tension comes from the amount of life a search can consume.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Zodiac makes paperwork, uncertain recollections and conversations feel worth paying attention to. David Fincher gives the investigation enough texture that small differences in an account matter. There is no need for every exchange to announce a breakthrough. The work itself becomes absorbing, including the stretches when it offers very little reassurance.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s weight comes from how time passes. What starts as professional determination slowly turns into something more personal. Fincher shows this shift without rushing it. The story includes moments of disappointment and repetition, which makes the effort feel costly rather than just impressive. The patience adds to the tension.&lt;/p&gt;&lt;p&gt;Jake Gyllenhaal, Mark Ruffalo and Robert Downey Jr. give the search different kinds of energy. Their approaches do not feel interchangeable, and the dialogue benefits from those differences. A question can carry curiosity, fatigue or impatience depending on who asks it. That keeps a film full of information from becoming only a delivery system.&lt;/p&gt;&lt;p&gt;The detail can be demanding, and its refusal to hurry will not suit every mood. For me that attention is exactly what makes it work. The film understands the appeal of finding an answer while making the pursuit feel increasingly uncomfortable. Its restraint gives the uncertainty a weight that a tidier thriller might lose.&lt;/p&gt;&lt;p class="specs-note"&gt;2007 · English. &lt;a href="https://en.wikipedia.org/wiki/Zodiac_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/1949"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2007/zodiac.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Zodiac makes patient investigation absorbing without turning it into a tidy puzzle. Its strongest tension comes from the amount of life a search can consume.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Girl with the Dragon Tattoo — An investigation with rough edges</title>
      <link>https://deslypeter.com/writing/the-girl-with-the-dragon-tattoo-2011-review</link>
      <guid>https://deslypeter.com/writing/the-girl-with-the-dragon-tattoo-2011-review.html?lang=en</guid>
      <description>The cold atmosphere and the contrast between its two investigators give this mystery its strength. Rooney Mara brings more interest than the film’s harsher material sometimes allows.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Rooney Mara gives The Girl with the Dragon Tattoo a guarded presence that is more interesting than easy mystery-film eccentricity. Lisbeth’s attention and refusal to make people comfortable matter as much as her skills. Mara makes the distance feel protective. The performance keeps the character from being reduced to a useful source of answers.&lt;/p&gt;&lt;p&gt;Daniel Craig offers a good contrast. His more traditional way of asking questions lets their different styles of working stand out. The film feels better whenever the investigation becomes a back-and-forth between their methods and personalities. It’s easier to care about the clues when the way they’re uncovered tells us something about the people involved.&lt;/p&gt;&lt;p&gt;David Fincher gives the story a coldness that suits its strained relationships and buried grievances. The direction keeps a complicated investigation reasonably legible without making it feel welcoming. Conversations are often less about what somebody knows than what they are prepared to admit. That guardedness is a strong source of tension.&lt;/p&gt;&lt;p&gt;Some of the heavier parts can feel forced into the foreground, and certain details slow things down. I liked the careful investigation and the uneasy teamwork more than the more shocking parts. The direction is well-controlled, and Mara’s performance has enough character to make those concerns feel less important.&lt;/p&gt;&lt;p class="specs-note"&gt;2011 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Girl_with_the_Dragon_Tattoo_(2011_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/65754"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2011/girl_with_the_dragon_tattoo.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The cold atmosphere and the contrast between its two investigators give this mystery its strength. Rooney Mara brings more interest than the film’s harsher material sometimes allows.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>L.A. Confidential — Three ways to wear a badge</title>
      <link>https://deslypeter.com/writing/l-a-confidential-1997-review</link>
      <guid>https://deslypeter.com/writing/l-a-confidential-1997-review.html?lang=en</guid>
      <description>The mystery is satisfying, but the competing ideas of police work give L.A. Confidential its real force. Sharp dialogue and a strong ensemble make the compromises matter.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;L.A. Confidential gets a lot of mileage out of putting different kinds of policemen in the same story. Professional ambition, physical force and an understanding of publicity do not lead to the same decisions. The film makes those differences dramatic without needing everyone to explain what they represent. Their methods create their own friction.&lt;/p&gt;&lt;p&gt;Curtis Hanson keeps the story moving while letting the characters rethink their positions. The time period looks nice, but it does more than just add style. Reputation is like money here. How something appears can be as important as what actually happened, adding another layer of pressure to the investigation.&lt;/p&gt;&lt;p&gt;Guy Pearce and Russell Crowe make contrasting ideas of authority convincing. Neither needs to be immediately likeable for their choices to be interesting. The dialogue is clipped without every exchange straining for a memorable line. People bargain, deflect and test one another. The ensemble gives those conversations enough weight to hold the film between discoveries.&lt;/p&gt;&lt;p&gt;The plot is complex, but the film doesn&amp;#x27;t treat people as interchangeable parts. The moral choices are tied to real desires and flaws. That&amp;#x27;s why the mystery is so satisfying — the answers matter because the decisions that led to them already do.&lt;/p&gt;&lt;p class="specs-note"&gt;1997 · English. &lt;a href="https://en.wikipedia.org/wiki/L.A._Confidential_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/2118"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1997/la_confidential.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The mystery is satisfying, but the competing ideas of police work give L.A. Confidential its real force. Sharp dialogue and a strong ensemble make the compromises matter.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Mystic River — Old friendships, lasting damage</title>
      <link>https://deslypeter.com/writing/mystic-river-2003-review</link>
      <guid>https://deslypeter.com/writing/mystic-river-2003-review.html?lang=en</guid>
      <description>Mystic River is strongest when it lets grief and suspicion sit inside ordinary conversations. The performances give its heavy material a human weight, even when the drama presses too hard.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Mystic River makes old familiarity feel uncomfortable. These are people who know something of one another, yet that knowledge does not necessarily help them understand what is happening now. Clint Eastwood gives the relationships room to carry that contradiction. The neighbourhood feels like a place where private history is difficult to leave behind.&lt;/p&gt;&lt;p&gt;The performances show how grief affects each character differently. Sean Penn&amp;#x27;s approach is intense and can dominate a scene. Tim Robbins plays with a quieter, more anxious energy, while Kevin Bacon offers a steadier, more grounded presence. Their contrasting styles keep the relationships engaging, even when the film&amp;#x27;s tone is very serious.&lt;/p&gt;&lt;p&gt;I liked the way suspicion changes the meaning of an exchange. An ordinary question can become a test, and familiarity can make somebody less willing to listen carefully. The dialogue is strongest when it lets that pressure emerge through the relationships. The investigation matters, but the damage around it gives the story its weight.&lt;/p&gt;&lt;p&gt;Some parts feel overly serious, and I sometimes wished for more restraint. But the actors bring enough personal depth to keep the film from feeling like just a message about suffering. The best scenes show how shared history doesn&amp;#x27;t always mean people can trust each other.&lt;/p&gt;&lt;p class="specs-note"&gt;2003 · English. &lt;a href="https://en.wikipedia.org/wiki/Mystic_River_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/322"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2003/mystic_river.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Mystic River is strongest when it lets grief and suspicion sit inside ordinary conversations. The performances give its heavy material a human weight, even when the drama presses too hard.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Gone Baby Gone — Knowing a place is not enough</title>
      <link>https://deslypeter.com/writing/gone-baby-gone-2007-review</link>
      <guid>https://deslypeter.com/writing/gone-baby-gone-2007-review.html?lang=en</guid>
      <description>Gone Baby Gone gives its investigation a convincing sense of neighbourhood familiarity. Casey Affleck’s watchfulness and the uneasy dialogue make its moral uncertainty worth sitting with.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Casey Affleck is good at listening in Gone Baby Gone. Patrick often seems to be weighing the person speaking as carefully as the words being said. That gives the investigation a useful human scale. Knowledge of a neighbourhood helps him enter a conversation, but it does not mean he can take the answer at face value.&lt;/p&gt;&lt;p&gt;Ben Affleck’s direction makes local familiarity feel both useful and limiting. People carry assumptions about one another, and knowing those assumptions can open doors or close them. The film is most convincing when it lets that social knowledge shape the investigation. The setting contributes more than a rough surface for a crime story.&lt;/p&gt;&lt;p&gt;The dialogue has an uneasy directness. People can sound certain while leaving plenty unresolved, and a forceful opinion is not automatically a dependable one. Casey Affleck’s relatively restrained presence gives the louder voices something to push against. Those differences make the conversations more engaging than a straightforward procession of clues would have been.&lt;/p&gt;&lt;p&gt;There are moments when the film seems a little too eager to underline the weight of its questions. Even so, the uncertainty grows out of people and circumstances that feel particular. I liked that the story gives moral confidence a difficult time. It makes the investigation matter beyond the satisfaction of putting information in order.&lt;/p&gt;&lt;p class="specs-note"&gt;2007 · English. &lt;a href="https://en.wikipedia.org/wiki/Gone_Baby_Gone"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2007/gone_baby_gone.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Gone Baby Gone gives its investigation a convincing sense of neighbourhood familiarity. Casey Affleck’s watchfulness and the uneasy dialogue make its moral uncertainty worth sitting with.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Insomnia — Daylight without relief</title>
      <link>https://deslypeter.com/writing/insomnia-2002-review</link>
      <guid>https://deslypeter.com/writing/insomnia-2002-review.html?lang=en</guid>
      <description>Al Pacino’s exhaustion and Robin Williams’s calm give Insomnia its best tension. The atmosphere works better than the moments when the script explains its moral pressure too directly.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Al Pacino makes tiredness an active part of Insomnia. It affects the way his detective listens, answers and tries to hold on to authority. The performance gives the investigation a physical strain that is easy to understand. He is still capable, but the effort involved in appearing capable becomes increasingly interesting to watch.&lt;/p&gt;&lt;p&gt;Christopher Nolan uses Alaska&amp;#x27;s endless daylight to create a sense of unease. A setting that should offer clarity instead feels oppressive. The film ties that discomfort to a man trying to keep his judgment steady. The best tension comes from how hard it is to stay professional under constant pressure.&lt;/p&gt;&lt;p&gt;Robin Williams is a useful counterweight to Pacino. His calm makes conversations feel more intrusive than a louder performance might have done. The exchanges have an uncomfortable imbalance: one person seems to have the patience the other lacks. Those scenes are the film’s strongest argument for keeping a thriller close to its actors.&lt;/p&gt;&lt;p&gt;The script sometimes explains its themes more than it needs to. Once the performances have shown the moral weight, extra explanations can feel unnecessary. Still, the mood is consistent and the main characters are worth watching. I found it most effective as a look at exhaustion, guilt, and losing confidence in your job.&lt;/p&gt;&lt;p class="specs-note"&gt;2002 · English. &lt;a href="https://en.wikipedia.org/wiki/Insomnia_(2002_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/320"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2002/insomnia.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Al Pacino’s exhaustion and Robin Williams’s calm give Insomnia its best tension. The atmosphere works better than the moments when the script explains its moral pressure too directly.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Silence of the Lambs — Listening becomes a contest</title>
      <link>https://deslypeter.com/writing/the-silence-of-the-lambs-1991-review</link>
      <guid>https://deslypeter.com/writing/the-silence-of-the-lambs-1991-review.html?lang=en</guid>
      <description>Jodie Foster and Anthony Hopkins make conversation the most unsettling part of The Silence of the Lambs. The direction gives their encounters precision without letting the investigation lose its urgency.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Jodie Foster makes listening feel like difficult work in The Silence of the Lambs. Clarice has to take in information while managing how much of herself an encounter exposes. Foster gives that effort a clear intelligence without removing the vulnerability. It is a performance that makes attention as interesting as a more obvious display of confidence.&lt;/p&gt;&lt;p&gt;Anthony Hopkins has a very different kind of control. His delivery makes an apparently civil exchange feel like a negotiation over who gets to set its terms. The contrast between the performances is what makes their conversations so effective. The tension is already there before the answer even arrives.&lt;/p&gt;&lt;p&gt;Jonathan Demme’s direction pays close attention to looking and being looked at. The framing makes scrutiny uncomfortable, and that feeling extends beyond the central encounters. Clarice has to work in spaces where she is being assessed as well as doing the assessing. The film keeps that pressure connected to the investigation rather than treating it as decoration.&lt;/p&gt;&lt;p&gt;Some of the more sensational material is forceful, but it doesn&amp;#x27;t take away from the human concentration that makes the film work. The dialogue can be memorable without losing its immediate purpose. I admired how much suspense comes from people listening carefully, deciding what to reveal, and trying to retain control of an exchange.&lt;/p&gt;&lt;p class="specs-note"&gt;1991 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Silence_of_the_Lambs_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/274"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Jodie Foster and Anthony Hopkins make conversation the most unsettling part of The Silence of the Lambs. The direction gives their encounters precision without letting the investigation lose its urgency.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Wind River — Distance makes everything harder</title>
      <link>https://deslypeter.com/writing/wind-river-2017-review</link>
      <guid>https://deslypeter.com/writing/wind-river-2017-review.html?lang=en</guid>
      <description>Wind River connects its investigation to grief, isolation and difficult physical terrain. The central performances are strongest when the film allows them some quiet, despite a few overemphatic passages.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Wind River makes distance matter. Reaching a place, getting help and understanding the people who live there do not feel like simple preliminaries to the investigation. Taylor Sheridan gives those difficulties weight. The snow and the open spaces contribute to a sense that ordinary support can be much further away than it should be.&lt;/p&gt;&lt;p&gt;Jeremy Renner gives the film a contained sadness that is more persuasive than its more explanatory passages. His character’s knowledge of the terrain has an emotional cost alongside its practical use. Elizabeth Olsen provides a different kind of attention. Their working relationship benefits from the distinction between professional responsibility and familiarity with a place.&lt;/p&gt;&lt;p&gt;The dialogue works best when it stays close to immediate needs. A question about what to do next can carry uncertainty, frustration and care without announcing all three. The investigation remains involving because the film makes the people around it feel affected by more than the need to supply another piece of information.&lt;/p&gt;&lt;p&gt;Some speeches and dramatic emphases push harder than necessary. I found the quieter exchanges more affecting, particularly when the actors were allowed to leave something unresolved. Even with those reservations, the setting and the performances give the story a strong hold. The difficulty of the work never feels separate from the grief surrounding it.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/Wind_River_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2017/wind_river.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Wind River connects its investigation to grief, isolation and difficult physical terrain. The central performances are strongest when the film allows them some quiet, despite a few overemphatic passages.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Pledge — Responsibility becomes a fixation</title>
      <link>https://deslypeter.com/writing/the-pledge-2001-review</link>
      <guid>https://deslypeter.com/writing/the-pledge-2001-review.html?lang=en</guid>
      <description>Jack Nicholson’s restraint gives The Pledge its strongest quality. The measured direction makes a promise feel burdensome, although the seriousness can become heavy along the way.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Jack Nicholson is unusually quiet in The Pledge, and that suits the film. He lets attention settle into something difficult to read. Concern and stubbornness can look very similar from the outside. The performance keeps that uncertainty present without turning every moment into an announcement that something is wrong. It gives the story a steady centre.&lt;/p&gt;&lt;p&gt;Sean Penn’s direction gives the investigation a patient pace. The film is interested in the responsibility a person takes on and the difficulty of deciding when that responsibility has become unhealthy. Ordinary encounters sit alongside the search. Those moments help show what the pursuit is asking from a life.&lt;/p&gt;&lt;p&gt;I liked the dialogue most when it left motives a little unsettled. Reassurance can sound sincere while failing to reassure, and a practical question can carry a much larger worry. Nicholson is effective at letting those exchanges register without a large response. The quieter acting makes the increasing weight of the promise more convincing.&lt;/p&gt;&lt;p&gt;The seriousness occasionally becomes oppressive, and the measured pace can feel more solemn than necessary. Still, the central performance makes the film worth the patience. It treats an investigator’s determination as something that needs examining rather than automatically celebrating. That is an uncomfortable, worthwhile angle for a crime story to take.&lt;/p&gt;&lt;p class="specs-note"&gt;2001 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Pledge_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/5955"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2001/pledge.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Jack Nicholson’s restraint gives The Pledge its strongest quality. The measured direction makes a promise feel burdensome, although the seriousness can become heavy along the way.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Arrival — Making room for another language</title>
      <link>https://deslypeter.com/writing/arrival-2016-review</link>
      <guid>https://deslypeter.com/writing/arrival-2016-review.html?lang=en</guid>
      <description>Arrival finds real drama in the effort to understand somebody. Amy Adams gives the large science-fiction ideas an emotional centre, while the sound and measured direction make uncertainty feel tangible.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Amy Adams is the reason Arrival feels so human. Louise has to listen, revise an assumption and try again, and Adams makes that work absorbing. She does not play intelligence as having the quickest answer. There is room for hesitation. That seems exactly right for a story in which understanding takes effort.&lt;/p&gt;&lt;p&gt;Denis Villeneuve gives the encounter a scale that can be intimidating without making the people insignificant. The sound is particularly effective. It gives an unfamiliar presence weight before there is a comfortable explanation for it. The film allows that discomfort to last, which makes the patient work of communication feel necessary.&lt;/p&gt;&lt;p&gt;I liked how much tension comes from the demand for a simple answer. Language is messy, but the people waiting for a result are not always prepared to accept that. The conversations make translation feel consequential. A small decision about meaning can carry more pressure than a much louder confrontation elsewhere would.&lt;/p&gt;&lt;p&gt;The measured pace asks for attention, but the emotional side never feels like an afterthought added to an intellectual exercise. Adams keeps the personal stakes present even when the film is dealing with very large questions. I would leave the details there. This is one where the way the pieces connect deserves to be discovered in the film.&lt;/p&gt;&lt;p class="specs-note"&gt;2016 · English. &lt;a href="https://en.wikipedia.org/wiki/Arrival_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2016/arrival.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Arrival finds real drama in the effort to understand somebody. Amy Adams gives the large science-fiction ideas an emotional centre, while the sound and measured direction make uncertainty feel tangible.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Ex Machina — Polite questions, unequal power</title>
      <link>https://deslypeter.com/writing/ex-machina-2014-review</link>
      <guid>https://deslypeter.com/writing/ex-machina-2014-review.html?lang=en</guid>
      <description>Ex Machina makes its small group of characters more unsettling than a larger spectacle could have been. Alicia Vikander and Oscar Isaac are excellent at making apparently reasonable exchanges feel loaded.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Ex Machina is at its best when somebody asks a reasonable question and the conversation becomes less comfortable. There is usually more than one thing being tested. Alex Garland keeps that pressure close to the people in the room. The film does not need a large world around them to make their choices feel consequential.&lt;/p&gt;&lt;p&gt;Alicia Vikander gives Ava a precision that makes the act of watching her interesting. Small differences in how she responds invite interpretation without settling it. Oscar Isaac brings a different kind of uncertainty. His ease can make an encounter feel friendly, but it also suggests that he expects to decide its boundaries.&lt;/p&gt;&lt;p&gt;The enclosed setting suits a story about access and control. Who is allowed to ask questions, and who has to answer them, matters as much as the information being exchanged. Domhnall Gleeson gives that arrangement a useful human point of entry. His attempts to understand the situation make sense even when his confidence does not.&lt;/p&gt;&lt;p&gt;Occasionally the dialogue spells out an idea that the performances have already made clear. I preferred the moments when the argument was embedded in the awkwardness of an exchange. Even so, the limited scale is a strength. It gives the film enough concentration for its questions about intelligence and power to feel immediate.&lt;/p&gt;&lt;p class="specs-note"&gt;2014 · English. &lt;a href="https://en.wikipedia.org/wiki/Ex_Machina_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/264660"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2015/ex_machina.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Ex Machina makes its small group of characters more unsettling than a larger spectacle could have been. Alicia Vikander and Oscar Isaac are excellent at making apparently reasonable exchanges feel loaded.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Moon — A workplace a long way home</title>
      <link>https://deslypeter.com/writing/moon-2009-review</link>
      <guid>https://deslypeter.com/writing/moon-2009-review.html?lang=en</guid>
      <description>Moon gives its science fiction the texture of a lonely working life. Sam Rockwell carries the film with enough weariness and personality to make its questions about identity matter.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Sam Rockwell makes the lunar base in Moon feel like a workplace somebody has spent too long in. His performance has irritation and boredom alongside loneliness. That mix matters. It gives the story a recognisable human routine before asking the viewer to think about anything more abstract. Sam is interesting to watch simply getting through the day.&lt;/p&gt;&lt;p&gt;Duncan Jones uses the limited setting well. The base feels practical, which keeps the film from being about futuristic design. There&amp;#x27;s a job to do, and a system that expects it to be done. That ordinary demand makes the isolation more convincing than a speech about being far from home would be.&lt;/p&gt;&lt;p&gt;The dialogue has room for dry humour as well as unease. Rockwell can make a complaint reveal something about the person making it. Those touches keep the film from becoming too solemn about its ideas. The science fiction remains connected to somebody who wants reassurance and a manageable explanation of what is happening.&lt;/p&gt;&lt;p&gt;The writing sometimes explains things too much, and the modest scale can make transitions feel sudden. But these aren&amp;#x27;t big issues. The central performance keeps the film together. Its best quality is how it makes a question about identity feel like a real problem for a person.&lt;/p&gt;&lt;p class="specs-note"&gt;2009 · English. &lt;a href="https://en.wikipedia.org/wiki/Moon_(2009_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/17431"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2009/moon.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Moon gives its science fiction the texture of a lonely working life. Sam Rockwell carries the film with enough weariness and personality to make its questions about identity matter.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Primer — The explanations do not get easier</title>
      <link>https://deslypeter.com/writing/primer-2004-review</link>
      <guid>https://deslypeter.com/writing/primer-2004-review.html?lang=en</guid>
      <description>Primer makes technical work and uncertainty feel closely related. Its refusal to simplify can be frustrating, but the guarded conversations and small scale make that difficulty unusually convincing.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Primer expects the viewer to do some work, and I liked that it does not apologise for it. The conversations sound like people talking to colleagues rather than explaining their subject to an audience. You can follow the confidence, disagreement and suspicion even when the technical language is difficult. Those social signals provide a way into the film.&lt;/p&gt;&lt;p&gt;Shane Carruth keeps the story small, which matches its ideas. Work happens in normal places, and a discovery doesn&amp;#x27;t immediately bring the right words to explain it. That gap is interesting. The film makes the effort of figuring something out feel messy, including how ambition can outpace caution.&lt;/p&gt;&lt;p&gt;The dialogue changes in an effective way as trust becomes harder to take for granted. An explanation may be detailed without being helpful to the person receiving it. The dry performances suit that guardedness. There is little invitation to relax into a reassuring guide through the rules, which keeps the uncertainty close.&lt;/p&gt;&lt;p&gt;Some of the difficulty feels like it&amp;#x27;s meant to be a challenge, and I see why that might feel more tiring than satisfying. The film doesn&amp;#x27;t always give the viewer enough to hold onto in its complicated moments. Still, the way it&amp;#x27;s put together and the mood it creates feel connected. Its intelligence seems tied to the uneasy feeling of not knowing if someone else understands more than you do.&lt;/p&gt;&lt;p class="specs-note"&gt;2004 · English. &lt;a href="https://www.themoviedb.org/movie/14337"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2004/primer.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Primer makes technical work and uncertainty feel closely related. Its refusal to simplify can be frustrating, but the guarded conversations and small scale make that difficulty unusually convincing.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Source Code — Urgency inside a familiar pattern</title>
      <link>https://deslypeter.com/writing/source-code-2011-review</link>
      <guid>https://deslypeter.com/writing/source-code-2011-review.html?lang=en</guid>
      <description>Source Code keeps its science-fiction premise moving through a strong central performance. Jake Gyllenhaal makes repeated uncertainty engaging, although the explanations are less persuasive than the immediate human stakes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Jake Gyllenhaal gives Source Code a useful mixture of urgency and confusion. He can make the need for an answer feel immediate without making every response identical. That is important in a story built around returning to a situation. The performance provides continuity while the meaning of the available information keeps changing.&lt;/p&gt;&lt;p&gt;Duncan Jones keeps the film tight and mostly clear. There&amp;#x27;s usually a clear goal to follow, even when the bigger picture stays unclear. I liked that practical approach. It lets the viewer think about what someone might do with limited time instead of needing to fully accept the science-fiction premise first.&lt;/p&gt;&lt;p&gt;The conversations work best when they reveal the difference between treating a situation as an assignment and noticing the people inside it. Gyllenhaal brings enough concern to make that distinction matter. The film is more engaging when it stays with those encounters than when it pauses to insist on the importance of its underlying rules.&lt;/p&gt;&lt;p&gt;Some explanations feel a bit hand-wavy, and the emotional focus can be a bit direct. I was more convinced by the pressure of the immediate problem than by every attempt to make the premise make sense. Even with those reservations, it&amp;#x27;s an efficient thriller. The central performance keeps the repetitions from feeling like a mechanical exercise.&lt;/p&gt;&lt;p class="specs-note"&gt;2011 · English. &lt;a href="https://en.wikipedia.org/wiki/Source_Code"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/45612"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2011/source_code.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Source Code keeps its science-fiction premise moving through a strong central performance. Jake Gyllenhaal makes repeated uncertainty engaging, although the explanations are less persuasive than the immediate human stakes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Dark City — A city without reassuring answers</title>
      <link>https://deslypeter.com/writing/dark-city-1998-review</link>
      <guid>https://deslypeter.com/writing/dark-city-1998-review.html?lang=en</guid>
      <description>Dark City gives its questions about identity an unusually strong atmosphere. The stylised setting does much of the work, and the mystery stays engaging even when the explanations become more conventional.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Dark City has a confidence in its own artificial world that I really liked. The setting does not try to pass unnoticed as an ordinary place. Its strangeness is part of the problem the characters face. Alex Proyas gives the city enough personality that trying to understand it feels as important as following an individual mystery.&lt;/p&gt;&lt;p&gt;Rufus Sewell gives the uncertainty a clear human centre. His character needs something dependable to hold on to, and the film makes that need easy to follow. The performance does not have to explain every implication of the premise. It gives the viewer an immediate reason to care about a question that could otherwise remain abstract.&lt;/p&gt;&lt;p&gt;The dialogue and the deliberately stylised performances suit the atmosphere. At its best, the film makes an apparently straightforward explanation feel incomplete. The more recognisable crime-story elements provide some footing without removing the sense that the surroundings have their own rules. That balance gives the investigation a distinctive rhythm.&lt;/p&gt;&lt;p&gt;The film becomes less interesting when it starts setting out its ideas too explicitly. I preferred the uncertainty and the process of exploring the city to the more direct explanations. Still, the design and dramatic approach are closely connected. It is a good example of atmosphere helping to carry a science-fiction idea rather than merely decorating it.&lt;/p&gt;&lt;p class="specs-note"&gt;1998 · English. &lt;a href="https://en.wikipedia.org/wiki/Dark_City_(1998_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/2666"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Dark City gives its questions about identity an unusually strong atmosphere. The stylised setting does much of the work, and the mystery stays engaging even when the explanations become more conventional.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Man from Earth — One room, a very large claim</title>
      <link>https://deslypeter.com/writing/the-man-from-earth-2007-review</link>
      <guid>https://deslypeter.com/writing/the-man-from-earth-2007-review.html?lang=en</guid>
      <description>The Man from Earth is mostly a conversation, and it's a good one. The idea is more interesting than some of the acting, but the way the discussion keeps changing keeps things moving.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The Man from Earth gets a surprising amount out of people staying in a room and talking. Its central claim is simple enough to grasp, but the responses keep changing the shape of the discussion. Curiosity gives way to irritation, and a question can reveal as much about the person asking it as the person answering.&lt;/p&gt;&lt;p&gt;The simple setting keeps the focus on the conversation. Without the chance to move around, the film relies on the writing to keep things going. Richard Schenkman lets the characters&amp;#x27; different ways of thinking clash without forcing them to agree.&lt;/p&gt;&lt;p&gt;Some of the acting feels a bit rehearsed. A few lines seem like they&amp;#x27;re there to push the debate forward rather than come naturally. That makes the group feel less like real friends. Still, the different reactions keep the conversation from feeling flat.&lt;/p&gt;&lt;p&gt;I liked the film best as a chance to think through an idea, not just reach a conclusion. It&amp;#x27;s low-budget, and some parts explain things too clearly. But the main conversation has real appeal. It shows how far a small sci-fi film can go when there&amp;#x27;s something worth arguing about.&lt;/p&gt;&lt;p class="specs-note"&gt;2007 · English. &lt;a href="https://www.themoviedb.org/movie/13363"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2007/man_from_earth.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Man from Earth is mostly a conversation, and it&amp;#x27;s a good one. The idea is more interesting than some of the acting, but the way the discussion keeps changing keeps things moving.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Triangle — Familiarity offers very little comfort</title>
      <link>https://deslypeter.com/writing/triangle-2009-review</link>
      <guid>https://deslypeter.com/writing/triangle-2009-review.html?lang=en</guid>
      <description>Triangle turns recognition into a source of unease. Melissa George gives the construction an emotional centre, although the film is more persuasive in its immediate tension than in every piece of its machinery.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Triangle makes recognising something feel less reassuring than it should. A familiar detail can create another question instead of settling the situation. Christopher Smith uses that uncertainty well. The film is most involving when the viewer and the central character are both trying to decide which pieces of information deserve to be trusted.&lt;/p&gt;&lt;p&gt;Melissa George gives the story more emotional continuity than its complicated construction could provide on its own. She makes urgency easy to read even when the larger picture is difficult to arrange. That gives the viewer a reason to follow the immediate problem. The film needs that anchor, and she supplies it.&lt;/p&gt;&lt;p&gt;The restricted setting helps the tension. There are only so many places to look for reassurance, and the film makes that limitation useful. The dialogue is generally more effective when it serves an immediate decision than when it carries an explanation. I liked the effort to make the puzzle something the characters have to endure.&lt;/p&gt;&lt;p&gt;The machinery does become visible, and a few emphatic moments push for a response the atmosphere has already earned. I was not equally convinced by every connection. Still, the film commits to its uneasy idea and gives it a strong central performance. It is worth approaching with as little detail about the construction as possible.&lt;/p&gt;&lt;p class="specs-note"&gt;2009 · English. &lt;a href="https://en.wikipedia.org/wiki/Triangle_(2009_British_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/26466"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Triangle turns recognition into a source of unease. Melissa George gives the construction an emotional centre, although the film is more persuasive in its immediate tension than in every piece of its machinery.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Time Lapse — A clever advantage becomes a burden</title>
      <link>https://deslypeter.com/writing/time-lapse-2014-review</link>
      <guid>https://deslypeter.com/writing/time-lapse-2014-review.html?lang=en</guid>
      <description>Time Lapse has a good small-scale premise and makes useful trouble out of it. The character writing is less reliable, so the complications are often more interesting than the people caught in them.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Time Lapse understands the appeal of getting a little more information than everybody else. The premise offers an apparent advantage, and the film is quick to make that advantage uncomfortable. Bradley King keeps the scale small enough that the consequences have somewhere specific to land. Decisions affect a handful of people rather than an anonymous world.&lt;/p&gt;&lt;p&gt;I liked how the film makes an image something to think about rather than just accept. Knowing what it seems to show doesn&amp;#x27;t always mean you know what to do next. That creates pressure in a small setting. The film gets some good complications from the difference between seeing and understanding.&lt;/p&gt;&lt;p&gt;The performances and dialogue are less consistent. Some reactions seem designed to get the story to its next problem rather than arising naturally from the people involved. That made it harder to stay invested when the disagreements became more emphatic. The premise is doing more of the work than the relationships.&lt;/p&gt;&lt;p&gt;There&amp;#x27;s still enough cleverness here to keep the film interesting, especially if you like modest sci-fi with a clear central rule. I wanted the characters to have more depth beyond their roles in the plot. The idea is good; the film is engaging in parts but not fully convincing throughout.&lt;/p&gt;&lt;p class="specs-note"&gt;2014 · English. &lt;a href="https://en.wikipedia.org/wiki/Time_Lapse_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2015/time_lapse.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Time Lapse has a good small-scale premise and makes useful trouble out of it. The character writing is less reliable, so the complications are often more interesting than the people caught in them.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Vast of Night — A story carried by voices</title>
      <link>https://deslypeter.com/writing/the-vast-of-night-2019-review</link>
      <guid>https://deslypeter.com/writing/the-vast-of-night-2019-review.html?lang=en</guid>
      <description>The Vast of Night makes listening and local curiosity feel cinematic. Its dialogue and sound are more memorable than the familiar parts of its mystery, and the small-town atmosphere gives it a welcome personality.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The Vast of Night gets its best energy from people who are interested in what they are hearing. Sierra McCormick and Jake Horowitz give that curiosity a lively, slightly impatient quality. Their characters want to keep a conversation moving without knowing where it might lead. The performances make the investigation feel like something happening between people.&lt;/p&gt;&lt;p&gt;Andrew Patterson makes sound the heart of the film. An account or an unexplained signal can hold attention without an immediate picture to settle it. I liked the patience that requires from the film. It gives the act of listening some suspense, which suits a story shaped by radio and telephone communication.&lt;/p&gt;&lt;p&gt;The dialogue has a pleasing momentum. The more relaxed exchanges help establish a small-town world beyond the immediate mystery. That sense of ordinary life matters because it gives unfamiliar information something to interrupt. The film feels more distinctive when it stays close to those voices and the curiosity they share.&lt;/p&gt;&lt;p&gt;Some of the mystery follows recognisable paths, and the presentation occasionally calls attention to its own cleverness. I was more taken with the atmosphere than with the explanation of what is happening. Even so, this is a small film with a clear idea of how to hold attention. Its confidence in listening is its best quality.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Vast_of_Night"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2020/vast_of_night.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Vast of Night makes listening and local curiosity feel cinematic. Its dialogue and sound are more memorable than the familiar parts of its mystery, and the small-town atmosphere gives it a welcome personality.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Annihilation — Change that refuses an easy explanation</title>
      <link>https://deslypeter.com/writing/annihilation-2018-review</link>
      <guid>https://deslypeter.com/writing/annihilation-2018-review.html?lang=en</guid>
      <description>Annihilation makes its unfamiliar environment unsettling before it becomes understandable. The visual imagination and the restrained performances are strong enough to carry a few overexplained stretches of dialogue.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Annihilation is most effective when it leaves an image difficult to classify. Something can be beautiful and still feel deeply wrong. Alex Garland gives that uncertainty time to register. The environment feels worth paying attention to on its own terms, rather than only as a collection of obstacles waiting for the characters.&lt;/p&gt;&lt;p&gt;Natalie Portman holds the film together. Her performance works well with a story where being able to describe something doesn&amp;#x27;t always mean understanding it. The people around her bring different kinds of caution and resolve. Their conversations are best when no one has a clear idea of what they&amp;#x27;re dealing with.&lt;/p&gt;&lt;p&gt;The sound and the visual design do a lot of the dramatic work. They make changes in the surroundings feel significant before the dialogue supplies a category for them. I liked that the film is prepared to be unsettling without immediately offering relief. Its science fiction has room for confusion as an experience.&lt;/p&gt;&lt;p&gt;Some of the dialogue explaining things feels less interesting than what the film has already shown. The characters aren&amp;#x27;t all developed equally. But those issues don&amp;#x27;t take away from the atmosphere or the imaginative ideas. The film makes its concepts feel real and hard to forget. I&amp;#x27;d avoid knowing too much about what happens later.&lt;/p&gt;&lt;p class="specs-note"&gt;2018 · English. &lt;a href="https://en.wikipedia.org/wiki/Annihilation_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2018/annihilation.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Annihilation makes its unfamiliar environment unsettling before it becomes understandable. The visual imagination and the restrained performances are strong enough to carry a few overexplained stretches of dialogue.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Sunshine — The job is already too big</title>
      <link>https://deslypeter.com/writing/sunshine-2007-review</link>
      <guid>https://deslypeter.com/writing/sunshine-2007-review.html?lang=en</guid>
      <description>Sunshine makes an enormous mission feel like a difficult workplace under pressure. The performances and atmosphere hold attention, even when changes in the film’s dramatic approach make it feel less assured.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Sunshine works because the people carrying an enormous responsibility still have to function as colleagues. Disagreement is not a minor inconvenience when there is so little room for error. Danny Boyle makes that pressure easy to understand. The scale of the mission matters, but the human difficulty of continuing to work together matters just as much.&lt;/p&gt;&lt;p&gt;Cillian Murphy gives the film a thoughtful, inward-looking presence. The rest of the cast makes different responses to risk feel believable. Some people stick to clear procedures, while others are more willing to question them. These differences add tension to the conversations without needing every disagreement to turn into a big argument.&lt;/p&gt;&lt;p&gt;I liked the contrast between the vastness outside and the practical demands inside. The film has a strong sense of an environment that deserves attention and caution. Sound and the intensity of the imagery help make the mission feel physically demanding. The best stretches keep wonder and professional anxiety close together.&lt;/p&gt;&lt;p&gt;The dramatic approach isn&amp;#x27;t equally convincing throughout. Some choices steer the film toward a more familiar kind of tension, and I found those less interesting than the group dynamics and the atmosphere. Still, the performances are strong enough to keep it going. Its best quality is making an impossible mission feel like a normal workday.&lt;/p&gt;&lt;p class="specs-note"&gt;2007 · English. &lt;a href="https://en.wikipedia.org/wiki/Sunshine_(2007_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/1272"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2007/sunshine.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Sunshine makes an enormous mission feel like a difficult workplace under pressure. The performances and atmosphere hold attention, even when changes in the film’s dramatic approach make it feel less assured.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Fargo — Politeness beside terrible decisions</title>
      <link>https://deslypeter.com/writing/fargo-1996-review</link>
      <guid>https://deslypeter.com/writing/fargo-1996-review.html?lang=en</guid>
      <description>Fargo finds its dark humour in the gap between ordinary manners and appalling behaviour. Frances McDormand gives the film a steadiness that makes its cruelty and foolishness even more striking.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Frances McDormand is the best thing about Fargo, which is saying quite a lot. Marge’s steadiness gives the film a centre that does not have to compete with the more desperate people around her. She pays attention, asks a question and waits. The lack of theatricality makes her competence unusually satisfying to watch.&lt;/p&gt;&lt;p&gt;The Coens know how to let a pause carry the joke. Someone repeats a point or tries to make a bad explanation sound reasonable, and the scene gets funnier without the person seeming less serious. The dialogue has its own rhythm. It doesn’t need everyone to laugh at the absurdity.&lt;/p&gt;&lt;p&gt;William H. Macy makes embarrassment and panic sit uncomfortably close together. The performance is funny because the effort to remain respectable is so recognisable, even when the decisions are awful. Around him, the criminal arrangements have very little glamour. The film keeps finding the small, undignified practical problems inside a supposedly clever plan.&lt;/p&gt;&lt;p&gt;The violence is harsh, and the humour doesn’t make it feel light. That balance is what I admire most. The film lets ordinary kindness matter without getting sentimental. It’s a crime story with a unique voice, and its focus on everyday behaviour makes the darkness more powerful.&lt;/p&gt;&lt;p class="specs-note"&gt;1996 · English. &lt;a href="https://en.wikipedia.org/wiki/Fargo_(1996_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1996/fargo.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Fargo finds its dark humour in the gap between ordinary manners and appalling behaviour. Frances McDormand gives the film a steadiness that makes its cruelty and foolishness even more striking.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>In Bruges — Guilt with very bad manners</title>
      <link>https://deslypeter.com/writing/in-bruges-2008-review</link>
      <guid>https://deslypeter.com/writing/in-bruges-2008-review.html?lang=en</guid>
      <description>In Bruges gives its sharp dialogue a surprising amount of warmth. Colin Farrell and Brendan Gleeson make the humour work because the friendship and the guilt underneath it feel worth taking seriously.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Colin Farrell and Brendan Gleeson are a very good reason to watch In Bruges. Their different kinds of patience make even a conversation about how to spend the day engaging. Farrell gives Ray an irritability that can be childish and funny without becoming empty noise. Gleeson gives the relationship some welcome steadiness.&lt;/p&gt;&lt;p&gt;Martin McDonagh writes dialogue that shows how people interrupt and let each other down. A line can be mean, awkward, and strangely kind all at once. The jokes work because the characters really care about what they&amp;#x27;re saying. They&amp;#x27;re not just waiting to say the next clever thing.&lt;/p&gt;&lt;p&gt;The setting gives the enforced pause in their lives a useful shape. There is time to look around, argue and return to things neither person is handling particularly well. I liked the contrast between the appeal of the place and the baggage they bring into it. The film lets that contrast be funny without resolving the discomfort.&lt;/p&gt;&lt;p&gt;Some of the language is deliberately abrasive, and the plotting becomes more conspicuous as the pressure grows. Still, the emotional side has already earned its place. The film cares enough about the people for the jokes to have consequences. It is the warmth in that difficult friendship that makes the darker material stay with me.&lt;/p&gt;&lt;p class="specs-note"&gt;2008 · English. &lt;a href="https://en.wikipedia.org/wiki/In_Bruges"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/8321"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2008/in_bruges.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;In Bruges gives its sharp dialogue a surprising amount of warmth. Colin Farrell and Brendan Gleeson make the humour work because the friendship and the guilt underneath it feel worth taking seriously.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Banshees of Inisherin — Isolation and silence</title>
      <link>https://deslypeter.com/writing/the-banshees-of-inisherin-2022-review</link>
      <guid>https://deslypeter.com/writing/the-banshees-of-inisherin-2022-review.html?lang=en</guid>
      <description>The film's quiet moments are as powerful as its confrontations, revealing the depth of isolation between characters.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The Banshees of Inisherin unfolds with a deliberate pacing that allows the tension to build through silences and glances rather than dialogue. This approach creates a palpable atmosphere of unease and longing, making the sparse conversations feel laden with unspoken emotions.&lt;/p&gt;&lt;p&gt;Colin Farrell and Brendan Gleeson play their roles with subtlety, showing their characters&amp;#x27; inner struggles without needing big speeches. Their scenes together feel real, especially when they deal with being distant from each other.&lt;/p&gt;&lt;p&gt;Kerry Condon&amp;#x27;s character brings a quiet mystery and softness to the story. She acts as someone who watches and listens, which adds depth to the film. Her scenes with Farrell are some of the most interesting, showing the hidden feelings that push the story along.&lt;/p&gt;&lt;p&gt;The sound design is simple but effective, using silence and natural noises to highlight the characters&amp;#x27; loneliness. This helps make the scenes feel more real and emotionally powerful.&lt;/p&gt;&lt;p class="specs-note"&gt;2022 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Banshees_of_Inisherin"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2022/banshees_of_inisherin.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s quiet moments are as powerful as its confrontations, revealing the depth of isolation between characters.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Seven Psychopaths — Everybody has a better story</title>
      <link>https://deslypeter.com/writing/seven-psychopaths-2012-review</link>
      <guid>https://deslypeter.com/writing/seven-psychopaths-2012-review.html?lang=en</guid>
      <description>Seven Psychopaths is entertaining when its arguments are as unruly as its crime plot. The cast gives the material plenty of energy, although the film’s awareness of its own writing can become tiring.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Seven Psychopaths has a lot of fun with people who cannot agree on the story they are in. Martin McDonagh turns conversations about writing into another source of conflict rather than a quiet break from it. That gives the film a lively rhythm. Everybody seems to have a different idea of what would improve the situation.&lt;/p&gt;&lt;p&gt;Sam Rockwell adds a useful unpredictability to the exchanges. His energy can be amusing and tiring in equal measure. Colin Farrell offers a more hesitant anchor, which helps make sense of the chaos. The film needs someone who can look unconvinced by the madness around them.&lt;/p&gt;&lt;p&gt;The dialogue is strongest when an argument reveals how a person wants to be seen. A discussion can become a demand for attention very quickly. Christopher Walken gives some of the quieter moments an appealing dryness. Those changes in energy are welcome in a film that otherwise enjoys keeping the conversation turned up.&lt;/p&gt;&lt;p&gt;The self-awareness doesn&amp;#x27;t always add much. Sometimes the film seems happy to point out a convention while still relying on it. I enjoyed the cast and the messiness more than the writing&amp;#x27;s claims for itself. It&amp;#x27;s funny enough to work, but less emotionally convincing than McDonagh at his best.&lt;/p&gt;&lt;p class="specs-note"&gt;2012 · English. &lt;a href="https://en.wikipedia.org/wiki/Seven_Psychopaths"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/86838"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2012/seven_psychopaths.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Seven Psychopaths is entertaining when its arguments are as unruly as its crime plot. The cast gives the material plenty of energy, although the film’s awareness of its own writing can become tiring.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>A Serious Man — The explanations never quite arrive</title>
      <link>https://deslypeter.com/writing/a-serious-man-2009-review</link>
      <guid>https://deslypeter.com/writing/a-serious-man-2009-review.html?lang=en</guid>
      <description>A Serious Man makes uncertainty funny without making it comfortable. Michael Stuhlbarg gives the film a recognisable human centre, and the Coens are very good at letting advice make everything less clear.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Michael Stuhlbarg is excellent at looking as though one more explanation ought to put things in order. Larry keeps trying to locate a reasonable way through his problems. The performance makes that effort sympathetic without making him automatically right. A Serious Man finds a lot of humour in the distance between needing clarity and actually receiving it.&lt;/p&gt;&lt;p&gt;The Coens let conversations go in unhelpful directions with confidence. An answer can be perfectly fluent but still miss the point. I liked how seriously the speakers take their own words. The comedy comes from the exchange itself, not from a joke added on top of the confusion.&lt;/p&gt;&lt;p&gt;The domestic and professional pressures feel ordinary enough to give the film a foothold. Its larger questions grow out of those irritations. That makes the uncertainty more effective than a purely abstract discussion would have been. Stuhlbarg keeps returning the film to a person who would really like his day to become manageable.&lt;/p&gt;&lt;p&gt;The emotional distance can feel cold, and the film doesn&amp;#x27;t offer much reassurance. For me, that&amp;#x27;s mostly a strength. Its humour feels closely tied to the discomfort of trying to find a pattern. It&amp;#x27;s a strange, precise film about wanting an explanation from a world that&amp;#x27;s not interested in giving one.&lt;/p&gt;&lt;p class="specs-note"&gt;2009 · English. &lt;a href="https://en.wikipedia.org/wiki/A_Serious_Man"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/12573"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;A Serious Man makes uncertainty funny without making it comfortable. Michael Stuhlbarg gives the film a recognisable human centre, and the Coens are very good at letting advice make everything less clear.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Death of Stalin — The meeting is the danger</title>
      <link>https://deslypeter.com/writing/the-death-of-stalin-2017-review</link>
      <guid>https://deslypeter.com/writing/the-death-of-stalin-2017-review.html?lang=en</guid>
      <description>The Death of Stalin makes political panic look like a terrible workplace meeting. The ensemble and the rapid changes in allegiance make the comedy sharp, while the fear underneath it remains hard to ignore.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The Death of Stalin is very funny about people trying to work out what the safest opinion is. A pause can mean calculation rather than uncertainty, and agreement can be revised almost immediately. Armando Iannucci gives those adjustments a quick, uncomfortable rhythm. The comedy comes from watching people who know that a mistake has consequences.&lt;/p&gt;&lt;p&gt;The cast is a big part of what makes the film work. Steve Buscemi brings a jittery, anxious feel to his bargaining, while Simon Russell Beale plays his character with a more smug, unsettling confidence. Their different styles make the group scenes really lively. Everyone is always on guard, looking for an edge or a way out, which keeps even the most mundane conversations interesting.&lt;/p&gt;&lt;p&gt;I liked the way the dialogue makes authority sound improvised. People try to turn a preference into a rule, then discover that somebody else has already made a stronger claim. The film is good at finding the absurdity in procedures without suggesting that the danger is merely absurd. Fear is doing real work in these exchanges.&lt;/p&gt;&lt;p&gt;The fast pace means some side characters feel a bit rushed, and the satire is clearly meant to be over-the-top in parts. But the main theme stays strong. The film makes the power struggle look silly while still showing how brutal it can be. That mix gives the comedy more weight than just a bunch of witty lines would have.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Death_of_Stalin"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Death of Stalin makes political panic look like a terrible workplace meeting. The ensemble and the rapid changes in allegiance make the comedy sharp, while the fear underneath it remains hard to ignore.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Lobster — A rule for every private feeling</title>
      <link>https://deslypeter.com/writing/the-lobster-2015-review</link>
      <guid>https://deslypeter.com/writing/the-lobster-2015-review.html?lang=en</guid>
      <description>The Lobster gets a lot from its rigid social rules and deliberately flat exchanges. The satire is distinctive, although the emotional distance and repetition made it easier for me to admire than fully connect with.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The Lobster makes a conversation uncomfortable by treating an absurd rule as perfectly ordinary. Yorgos Lanthimos is very consistent about that approach. The characters rarely offer the sort of reaction that would reassure the viewer. It gives the film a distinctive comic rhythm, with a lot depending on how matter-of-factly a demand is expressed.&lt;/p&gt;&lt;p&gt;Colin Farrell plays David with a hesitant, unglamorous energy that makes the pressure to fit in easy to understand. The film is interesting when it shows the small compromises people make to seem acceptable. Its unusual world still feels familiar in its concern with judgement and belonging.&lt;/p&gt;&lt;p&gt;The dialogue deliberately avoids an easy warmth. A personal admission can sound like an item being checked against a requirement. I found that funny in stretches, particularly when a rule exposed how little room there was for a complicated feeling. The social arrangements are more disturbing when their logic is followed carefully.&lt;/p&gt;&lt;p&gt;The method can become repetitive, and the coolness sometimes kept me at a distance from people I wanted to understand better. Not every provocation felt equally revealing. Still, the film has a clear voice and carries its premise with conviction. Its best moments make a very artificial society feel uncomfortably familiar.&lt;/p&gt;&lt;p class="specs-note"&gt;2015 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Lobster_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Lobster gets a lot from its rigid social rules and deliberately flat exchanges. The satire is distinctive, although the emotional distance and repetition made it easier for me to admire than fully connect with.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Nice Guys — A partnership built on irritation</title>
      <link>https://deslypeter.com/writing/the-nice-guys-2016-review</link>
      <guid>https://deslypeter.com/writing/the-nice-guys-2016-review.html?lang=en</guid>
      <description>The Nice Guys makes its comedy out of a partnership that never becomes entirely efficient. Ryan Gosling and Russell Crowe are excellent together, and the dialogue is sharp enough to carry the untidy plot.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Ryan Gosling is very funny in The Nice Guys because he is willing to let embarrassment last. Holland March does not recover his dignity as quickly as he would like. Russell Crowe gives him a heavier, less talkative presence to work against. The partnership is enjoyable before the investigation has done much to justify it.&lt;/p&gt;&lt;p&gt;Shane Black keeps the dialogue moving with interruptions. The characters are trying to get things done while also dealing with the person next to them. A simple question can quickly turn into a debate about who&amp;#x27;s more capable. The jokes come from the tension between these two personalities, not just random punchlines.&lt;/p&gt;&lt;p&gt;Angourie Rice is a valuable part of the balance. Her presence prevents the two men from becoming the only measure of common sense in the film. I liked how often a confident adult claim is exposed as inadequate. The period setting gives the story some texture, but the changing relationships are the stronger attraction.&lt;/p&gt;&lt;p&gt;The mystery is complicated and sometimes adds more layers than needed. I didn&amp;#x27;t mind getting lost in the details as much as I enjoyed watching the group tackle the next problem. It&amp;#x27;s not a big flaw in a comedy this well-acted. The film has enough charm and timing to make the extra steps worth it.&lt;/p&gt;&lt;p class="specs-note"&gt;2016 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Nice_Guys"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2016/nice_guys.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Nice Guys makes its comedy out of a partnership that never becomes entirely efficient. Ryan Gosling and Russell Crowe are excellent together, and the dialogue is sharp enough to carry the untidy plot.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Kiss Kiss Bang Bang — The explanation needs another explanation</title>
      <link>https://deslypeter.com/writing/kiss-kiss-bang-bang-2005-review</link>
      <guid>https://deslypeter.com/writing/kiss-kiss-bang-bang-2005-review.html?lang=en</guid>
      <description>Kiss Kiss Bang Bang makes confusion part of its comic personality. Robert Downey Jr. and Val Kilmer give the sharp dialogue enough friction to keep its self-conscious storytelling entertaining.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Robert Downey Jr. gives Kiss Kiss Bang Bang the right kind of nervous momentum. Harry can sound confident for a moment and immediately expose how little control he has. The performance makes the narration feel like another thing liable to go wrong. That is a useful fit for a film that enjoys interrupting its own explanations.&lt;/p&gt;&lt;p&gt;Val Kilmer provides an excellent contrast. His impatience gives Downey’s verbal energy something solid to bounce against. Shane Black’s dialogue works because the exchange has a clear imbalance: one person would like to continue talking, while the other would prefer him to become useful. The irritation is a large part of the appeal.&lt;/p&gt;&lt;p&gt;The crime-story construction is knowingly tangled, and the film gets a lot of comedy from attempts to explain it. I liked that it does not make fluency a guarantee of understanding. Michelle Monaghan gives the central group another point of resistance. The relationships help keep the plot from becoming only an exercise in clever arrangement.&lt;/p&gt;&lt;p&gt;Some jokes lean on an abrasiveness that will not work equally well for everyone, and the self-commentary occasionally draws attention away from the scene. Still, the performances give the writing a lively human rhythm. I enjoyed it most when the mystery became another reason for these people to misunderstand and irritate one another.&lt;/p&gt;&lt;p class="specs-note"&gt;2005 · English. &lt;a href="https://en.wikipedia.org/wiki/Kiss_Kiss_Bang_Bang"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/5236"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Kiss Kiss Bang Bang makes confusion part of its comic personality. Robert Downey Jr. and Val Kilmer give the sharp dialogue enough friction to keep its self-conscious storytelling entertaining.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Guard — The conversation will not behave</title>
      <link>https://deslypeter.com/writing/the-guard-2011-review</link>
      <guid>https://deslypeter.com/writing/the-guard-2011-review.html?lang=en</guid>
      <description>The Guard gets its best comedy from Brendan Gleeson’s refusal to make an exchange easy. The partnership with Don Cheadle gives the crime plot a strong centre, even when the humour becomes too insistent.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Brendan Gleeson makes The Guard entertaining before the case has done very much. Gerry Boyle can derail an exchange without appearing especially concerned about the result. The performance keeps the behaviour difficult to classify. He may be provoking somebody, avoiding a demand or simply refusing the expected manners. That uncertainty is part of the fun.&lt;/p&gt;&lt;p&gt;Don Cheadle balances the film well. His more professional style creates a clear contrast without making their partnership feel too formulaic. Their best moments are when neither gets the reply they&amp;#x27;re expecting. The comedy comes from how they handle each other, not just their personalities, which keeps the investigation engaging.&lt;/p&gt;&lt;p&gt;John Michael McDonagh’s dialogue is deliberately abrasive. Some of it is very funny because of how little interest the characters show in softening an encounter. The surrounding community gives the film a particular setting rather than an anonymous backdrop. I liked the moments when the jokes made that social world clearer.&lt;/p&gt;&lt;p&gt;At times, the film pushes its irreverence so hard that it feels forced. Not every joke adds depth to the characters. Still, Gleeson and Cheadle bring enough energy to carry the weaker parts. It&amp;#x27;s a solid crime comedy, best when the actors control the pace.&lt;/p&gt;&lt;p class="specs-note"&gt;2011 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Guard_(2011_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/67913"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Guard gets its best comedy from Brendan Gleeson’s refusal to make an exchange easy. The partnership with Don Cheadle gives the crime plot a strong centre, even when the humour becomes too insistent.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Thank You for Smoking — The answer is a change of subject</title>
      <link>https://deslypeter.com/writing/thank-you-for-smoking-2005-review</link>
      <guid>https://deslypeter.com/writing/thank-you-for-smoking-2005-review.html?lang=en</guid>
      <description>Thank You for Smoking makes persuasive talk entertaining without requiring it to become honest. Aaron Eckhart gives the satire its energy, though some of the targets are easier than the film seems to think.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Aaron Eckhart is very good at making an answer sound satisfying without actually answering the question. That is the main pleasure of Thank You for Smoking. Nick’s confidence is a professional tool, and Eckhart makes it easy to understand why people keep listening. The performance gives the satire a person to follow rather than only a target.&lt;/p&gt;&lt;p&gt;Jason Reitman keeps the film moving. Arguments are like contests with tactics, timing, and an audience in mind. The dialogue is most fun when a shift in emphasis quietly changes the question being discussed. It shows how persuasion can work without needing an honest exchange of information.&lt;/p&gt;&lt;p&gt;The personal relationships give Nick some situations that cannot be managed quite as neatly as a public appearance. I liked those interruptions to his professional fluency. The film is more interesting when it notices the limits of his method than when it is simply impressed by how quickly he can find another line of defence.&lt;/p&gt;&lt;p&gt;Some targets are broad, and the satire sometimes feels too happy with clever responses. I wanted it to linger on the uncomfortable implications a bit longer. Still, the central performance and the pace keep it engaging. It&amp;#x27;s a sharp, accessible comedy about the difference between having an argument and having something worth saying.&lt;/p&gt;&lt;p class="specs-note"&gt;2005 · English. &lt;a href="https://en.wikipedia.org/wiki/Thank_You_for_Smoking"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/9388"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2006/thank_you_for_smoking.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Thank You for Smoking makes persuasive talk entertaining without requiring it to become honest. Aaron Eckhart gives the satire its energy, though some of the targets are easier than the film seems to think.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Dr. Strangelove — Procedure is not a reassurance</title>
      <link>https://deslypeter.com/writing/dr-strangelove-1964-review</link>
      <guid>https://deslypeter.com/writing/dr-strangelove-1964-review.html?lang=en</guid>
      <description>Dr. Strangelove finds frightening comedy in people carrying out their roles with absolute seriousness. The dialogue and performances make the absurdity precise, while the underlying danger never becomes merely a joke.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Dr. Strangelove is funniest when somebody is trying to be entirely practical. A procedure has to be followed, a misunderstanding has to be clarified, and the situation becomes more alarming through the effort to manage it. Stanley Kubrick keeps that logic clear. The absurdity comes from the seriousness with which people approach the wrong assumptions.&lt;/p&gt;&lt;p&gt;Peter Sellers gives the film several different comic rhythms without making them feel interchangeable. The contrast is a pleasure, but the performances also belong to the same world of anxious authority. Nobody needs to step outside the scene and explain why it is ridiculous. The conversation supplies the joke by continuing to make sense to its participants.&lt;/p&gt;&lt;p&gt;The dialogue is particularly good at exposing what a person considers normal. A choice of words can reveal vanity, prejudice or a need to preserve status in the middle of a much larger problem. I liked how the film lets those concerns remain small and recognisable. They make the scale of the situation more frightening.&lt;/p&gt;&lt;p&gt;The satire is broad enough to be immediately funny and exact enough to reward paying attention to how an exchange develops. The comedy does not provide a safe distance from the subject. It makes the institutions and the people operating them seem more vulnerable to ordinary foolishness. That is why the film still has such a strong bite.&lt;/p&gt;&lt;p class="specs-note"&gt;1964 · English. &lt;a href="https://en.wikipedia.org/wiki/Dr._Strangelove_or:_How_I_Learned_to_Stop_Worrying_and_Love_the_Bomb"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/935"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1964/dr_strangelove.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Dr. Strangelove finds frightening comedy in people carrying out their roles with absolute seriousness. The dialogue and performances make the absurdity precise, while the underlying danger never becomes merely a joke.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Blue Ruin — Revenge without the competence</title>
      <link>https://deslypeter.com/writing/blue-ruin-2013-review</link>
      <guid>https://deslypeter.com/writing/blue-ruin-2013-review.html?lang=en</guid>
      <description>Blue Ruin makes revenge feel frighteningly impractical. Macon Blair gives the story a vulnerable centre, and Jeremy Saulnier keeps the consequences more interesting than any promise of criminal glamour.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Blue Ruin gets a lot from making its central character badly equipped for the story he has entered. Revenge is a clear intention, but carrying it out is another matter. Jeremy Saulnier keeps that gap uncomfortable. The film is interested in the damage a decision creates rather than how impressive the person making it can look.&lt;/p&gt;&lt;p&gt;Macon Blair gives Dwight an awkwardness that feels essential to the film. He makes fear and determination sit together without turning either into an easy explanation. The vulnerability gives the immediate problems weight. It is difficult to enjoy a fantasy of control when the performance keeps showing how little control there actually is.&lt;/p&gt;&lt;p&gt;The family relationships make the consequences wider than one person’s anger. I liked how the story complicates the idea that a private grievance can stay private. Conversations have practical stakes, and an explanation is not necessarily an excuse. The small scale gives those exchanges room to feel specific rather than merely symbolic.&lt;/p&gt;&lt;p&gt;The violence is harsh, but the film does not treat competence as a reward for suffering. That is one of its strongest choices. Its deliberate pace may not suit every mood, yet the restraint gives the consequences time to register. It is a tense crime film with very little interest in making revenge look easy.&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://www.themoviedb.org/movie/188166"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2014/blue_ruin.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Blue Ruin makes revenge feel frighteningly impractical. Macon Blair gives the story a vulnerable centre, and Jeremy Saulnier keeps the consequences more interesting than any promise of criminal glamour.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Green Room — There is no comfortable next move</title>
      <link>https://deslypeter.com/writing/green-room-2015-review</link>
      <guid>https://deslypeter.com/writing/green-room-2015-review.html?lang=en</guid>
      <description>Green Room makes its confined situation tense through practical decisions and a strong ensemble. Jeremy Saulnier keeps the danger ugly and immediate, while the performances give the people more weight than a survival exercise.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Green Room makes deciding what to do next feel difficult. A group of musicians find themselves in a situation they are not equipped to control, and Jeremy Saulnier keeps their options uncomfortably limited. The film gets tension from that practical problem. There is no need to make the people unusually foolish for the danger to work.&lt;/p&gt;&lt;p&gt;Anton Yelchin gives the central group a convincing mix of fear and the effort to stay useful. The performances show people trying to think under pressure. I liked that decisions can make sense without feeling safe. The limited knowledge they have is part of what makes it real.&lt;/p&gt;&lt;p&gt;Patrick Stewart brings a different kind of control to the film. The contrast makes the exchanges uncomfortable without requiring a constant display of anger. The dialogue works best when it is tied to an immediate demand or a possible way forward. Words matter because the people speaking cannot afford to misunderstand the situation.&lt;/p&gt;&lt;p&gt;The brutality is direct, and it&amp;#x27;s worth knowing that before choosing it for a casual evening. For me, the film earns its tension by staying close to the people and their tough choices. The confined scale gives it focus. It&amp;#x27;s a very effective thriller about how quickly an ordinary situation can stop offering ordinary solutions.&lt;/p&gt;&lt;p class="specs-note"&gt;2015 · English. &lt;a href="https://en.wikipedia.org/wiki/Green_Room_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/313922"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2016/green_room.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Green Room makes its confined situation tense through practical decisions and a strong ensemble. Jeremy Saulnier keeps the danger ugly and immediate, while the performances give the people more weight than a survival exercise.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Good Time — A race against the clock with no safety net</title>
      <link>https://deslypeter.com/writing/good-time-2017-review</link>
      <guid>https://deslypeter.com/writing/good-time-2017-review.html?lang=en</guid>
      <description>The film's intensity comes from the constant pressure to act without clear outcomes. Pattinson's performance anchors a tense, relentless narrative.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Confronted with his brother&amp;#x27;s arrest and mounting legal troubles, Robert Pattinson&amp;#x27;s character races against time in a desperate bid for freedom. Every decision carries consequences, but the outcome remains uncertain, leaving both the protagonist and audience on edge.&lt;/p&gt;&lt;p&gt;The Safdie brothers&amp;#x27; direction keeps the action tightly wound without ever losing its breathless momentum. Each scene feels crucial. The pacing is relentless, with no room for respite or reflection, mirroring the character&amp;#x27;s frantic state of mind.&lt;/p&gt;&lt;p&gt;Pattinson delivers a raw, intense performance that captures his character&amp;#x27;s desperation and vulnerability. Supporting actors like Jennifer Jason Leigh and Buddy Duress add depth to their roles without detracting from Pattinson’s central journey.&lt;/p&gt;&lt;p&gt;The dialogue is sparse but effective, conveying urgency through subtle exchanges and revealing the stakes without exposition. While the film&amp;#x27;s intensity is its greatest strength, there are moments where the relentless pace might feel overwhelming for some viewers.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/Good_Time_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2017/good_time.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s intensity comes from the constant pressure to act without clear outcomes. Pattinson&amp;#x27;s performance anchors a tense, relentless narrative.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Uncut Gems — Adam Sandler's intensity anchors the chaos</title>
      <link>https://deslypeter.com/writing/uncut-gems-2019-review</link>
      <guid>https://deslypeter.com/writing/uncut-gems-2019-review.html?lang=en</guid>
      <description>The film is a high-stakes gamble with emotional stakes that rarely let up. Its tension comes from the character’s desperation, not just the plot’s twists.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Howard Ratner’s obsession with the gem feels like a compulsion he can’t break, even as his life unravels around him. Adam Sandler gives a performance that is desperate and controlled, balancing comedy with real fear without leaning into caricature.&lt;/p&gt;&lt;p&gt;The dialogue is sharp and tense, with quick exchanges that show alliances and betrayals instead of long speeches. The pace is relentless, matching Howard’s frantic mindset. Every scene feels like it’s racing against time.&lt;/p&gt;&lt;p&gt;Lakeith Stanfield and Julia Fox add layers to the chaos without overshadowing Sandler’s central role. Their interactions are charged with ambiguity, making every line feel like it could change everything.&lt;/p&gt;&lt;p&gt;There is a slight overreliance on Howard’s perspective, which limits how much the audience can trust what they’re seeing. Still, the film’s emotional core — the fear of losing control — makes its flaws feel like part of its design rather than a flaw.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/Uncut_Gems"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2019/uncut_gems.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film is a high-stakes gamble with emotional stakes that rarely let up. Its tension comes from the character’s desperation, not just the plot’s twists.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Drive — A tense atmosphere that never flags</title>
      <link>https://deslypeter.com/writing/drive-2011-review</link>
      <guid>https://deslypeter.com/writing/drive-2011-review.html?lang=en</guid>
      <description>Drive maintains a relentless tension through its controlled pacing and evocative visuals. The performances, particularly from Gosling and Hendricks, add depth to the film's action-driven narrative.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Drive creates an enduring sense of suspense by balancing intense action sequences with quieter moments that allow for character development. Ryan Gosling&amp;#x27;s portrayal of a silent but deeply empathetic driver sets the tone for the film’s introspective yet urgent mood.&lt;/p&gt;&lt;p&gt;The pacing is deliberate, letting each scene build tension without rushing to a resolution. The quiet talks between Gosling and Carey Mulligan give the story emotional weight, making their relationship feel fragile but important.&lt;/p&gt;&lt;p&gt;Christina Hendricks brings a vibrant energy as the diner waitress, adding a layer of warmth that contrasts with the film&amp;#x27;s darker elements. Her interactions with Gosling offer moments of respite, highlighting the vulnerability beneath his stoic exterior.&lt;/p&gt;&lt;p&gt;Drive has a lot going on thematically, but it stays focused on its action scenes, which are exciting and well-planned. What makes it stand out is how it shows the tough choices the characters face.&lt;/p&gt;&lt;p class="specs-note"&gt;2011 · English. &lt;a href="https://en.wikipedia.org/wiki/Drive_(2011_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/64690"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2011/drive.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Drive maintains a relentless tension through its controlled pacing and evocative visuals. The performances, particularly from Gosling and Hendricks, add depth to the film&amp;#x27;s action-driven narrative.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Sicario — A slow reveal of the protagonist's mission</title>
      <link>https://deslypeter.com/writing/sicario-2015-review</link>
      <guid>https://deslypeter.com/writing/sicario-2015-review.html?lang=en</guid>
      <description>The film unfolds its plot with deliberate pacing, building tension without overreliance on action sequences. Emily Blunt brings a grounded humanity to her character.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Sicario introduces its complex narrative through measured exchanges and tense confrontations, revealing the depth of the conflict gradually. The careful unfolding of information keeps viewers engaged without overwhelming them with rapid-fire plot twists.&lt;/p&gt;&lt;p&gt;Emily Blunt plays an FBI agent with real depth. Her character starts with clear moral confidence, but that confidence gets tested as the mission goes on. Benicio del Toro’s character is a sharp contrast — calm, unsettling, and full of hidden motives.&lt;/p&gt;&lt;p&gt;The dialogue in Sicario often serves to highlight the moral ambiguities at play. Conversations between characters are less about exposition and more about exploring the ethical dilemmas inherent in their mission. This focus on interpersonal dynamics enriches the film beyond its action sequences.&lt;/p&gt;&lt;p&gt;The film’s slow pace gives time to think about what the characters are doing and why. It doesn’t always keep the tension high, but it makes you consider the bigger picture. This slower approach makes the story more powerful in the end.&lt;/p&gt;&lt;p class="specs-note"&gt;2015 · English. &lt;a href="https://en.wikipedia.org/wiki/Sicario_(2015_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/273481"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2015/sicario.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film unfolds its plot with deliberate pacing, building tension without overreliance on action sequences. Emily Blunt brings a grounded humanity to her character.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Hell or High Water — A race against the bank</title>
      <link>https://deslypeter.com/writing/hell-or-high-water-2016-review</link>
      <guid>https://deslypeter.com/writing/hell-or-high-water-2016-review.html?lang=en</guid>
      <description>Hell or High Water is a tight crime drama with a clear sense of purpose. The brothers' actions have a firm moral ground, making their journey both compelling and emotionally resonant.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film sets up a clear conflict between the brothers, played by Chris Pine and Ben Foster, and the bank that threatens to take away their family ranch. Their motivations are deeply rooted in preserving their heritage and identity, lending authenticity to their actions.&lt;/p&gt;&lt;p&gt;Jeff Bridges gives a strong performance as the Texas Ranger chasing the brothers. His character&amp;#x27;s tiredness and commitment add real weight to his role. The way the brothers interact with him adds tension and moral questions, making the story more interesting.&lt;/p&gt;&lt;p&gt;The dialogue is sharp and concise, fitting perfectly within the gritty tone of the piece. Pine and Foster have excellent chemistry, making their partnership believable and emotionally engaging for audiences. Their exchanges are filled with both conflict and understanding.&lt;/p&gt;&lt;p&gt;The story moves steadily, but sometimes feels a bit too predictable. That said, it doesn&amp;#x27;t really take away from how engaging the brothers&amp;#x27; journey is. Their story stays compelling and emotionally rich all the way through.&lt;/p&gt;&lt;p class="specs-note"&gt;2016 · English. &lt;a href="https://en.wikipedia.org/wiki/Hell_or_High_Water_(2016_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2016/hell_or_high_water.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Hell or High Water is a tight crime drama with a clear sense of purpose. The brothers&amp;#x27; actions have a firm moral ground, making their journey both compelling and emotionally resonant.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Before the Devil Knows You’re Dead — A family torn apart by a single act</title>
      <link>https://deslypeter.com/writing/before-the-devil-knows-youre-dead-2007-review</link>
      <guid>https://deslypeter.com/writing/before-the-devil-knows-youre-dead-2007-review.html?lang=en</guid>
      <description>Lumet's direction keeps the tension high without resorting to cheap tricks. The performances, particularly from Philip Seymour Hoffman and Ethan Hawke, anchor the complex narrative.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Before the Devil Knows You&amp;#x27;re Dead explores the ripple effects of one man&amp;#x27;s crime on his entire family. Sidney Lumet&amp;#x27;s direction ensures that each act of deception and betrayal feels as significant as the initial misdeed, maintaining a consistent emotional pitch throughout.&lt;/p&gt;&lt;p&gt;Philip Seymour Hoffman delivers a nuanced performance as the central character, whose desperation and guilt are palpable. His interactions with Ethan Hawke, playing his brother, highlight the fracturing of familial bonds in the face of financial ruin and moral compromise.&lt;/p&gt;&lt;p&gt;The story isn&amp;#x27;t told in order, but it&amp;#x27;s easy to follow. It shows different sides of the same events, which makes the film&amp;#x27;s themes about truth and how people see things more interesting.&lt;/p&gt;&lt;p&gt;Even though the film is serious, it doesn&amp;#x27;t get too dramatic. The acting and dialogue feel real, and the tension grows naturally from what the characters do, not from fake surprises or shocks.&lt;/p&gt;&lt;p class="specs-note"&gt;2007 · English. &lt;a href="https://en.wikipedia.org/wiki/Before_the_Devil_Knows_You%2527re_Dead"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2007/before_the_devil_knows_youre_dead.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Lumet&amp;#x27;s direction keeps the tension high without resorting to cheap tricks. The performances, particularly from Philip Seymour Hoffman and Ethan Hawke, anchor the complex narrative.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Killing of a Sacred Deer — A surgeon's moral recklessness</title>
      <link>https://deslypeter.com/writing/the-killing-of-a-sacred-deer-2017-review</link>
      <guid>https://deslypeter.com/writing/the-killing-of-a-sacred-deer-2017-review.html?lang=en</guid>
      <description>The film balances myth and modernity but struggles with its own emotional stakes. The central conflict is clear, yet the resolution feels underdeveloped.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Colin Farrell carries much of the film’s tension as a man whose choices spiral into chaos. His performance is grounded but leaves room for ambiguity. The script leans heavily on dialogue that reveals backstory without fully justifying character decisions. This creates distance between audience and protagonist.&lt;/p&gt;&lt;p&gt;The direction keeps scenes tight, often using uneasy silences instead of overt horror. The tone shifts from dark comedy to tragedy without warning. The pacing is slow but inconsistent. Some parts drag while others move too fast, breaking the story’s emotional flow.&lt;/p&gt;&lt;p&gt;Nicole Kidman and Barry Keoghan have a strained relationship that isn’t fully explored. Their scenes don’t have enough depth to make their roles in the crisis clear. The dialogue feels forced, relying on exposition instead of natural conversation. This makes the moral dilemmas feel more like plot tricks than real personal struggles.&lt;/p&gt;&lt;p&gt;The film’s mythological background is interesting but not used much. It adds some texture but doesn’t shape the story or character motives clearly. Despite its flaws, it’s a brave attempt at exploring moral uncertainty and psychological tension, even if the themes don’t always feel urgent.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Killing_of_a_Sacred_Deer"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2017/killing_of_a_sacred_deer.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances myth and modernity but struggles with its own emotional stakes. The central conflict is clear, yet the resolution feels underdeveloped.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Invitation — Tension in a closed room</title>
      <link>https://deslypeter.com/writing/the-invitation-2015-review</link>
      <guid>https://deslypeter.com/writing/the-invitation-2015-review.html?lang=en</guid>
      <description>The Invitation mixes social awkwardness with tension, but it doesn't explore the emotions deeply enough. The surface tension is there, but the deeper feelings aren't fully developed.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A group of people meet for a dinner that feels more like a test than a celebration. They&amp;#x27;re in an isolated place, and the mood is tightly controlled. Everyone has their own hidden past, but their reasons for being there aren&amp;#x27;t clear. The film relies more on mood than on explaining things clearly.&lt;/p&gt;&lt;p&gt;The acting is controlled, with Logan Marshall-Green leading the group&amp;#x27;s discomfort without going over the top. The dialogue is short but tense, often suggesting past conflicts without ever spelling them out.&lt;/p&gt;&lt;p&gt;The film moves slowly, building a sense of growing fear that never really comes to a satisfying end. The visuals focus on tight spaces and how people move, making you feel trapped.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s vagueness is intentional, but it makes it hard to connect emotionally. You feel the tension more than you understand it. Even with its flaws, The Invitation still manages to create a quiet, uneasy feeling that lingers, even if it doesn&amp;#x27;t fully explain its own suspense.&lt;/p&gt;&lt;p class="specs-note"&gt;2015 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Invitation_(2015_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2016/invitation.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Invitation mixes social awkwardness with tension, but it doesn&amp;#x27;t explore the emotions deeply enough. The surface tension is there, but the deeper feelings aren&amp;#x27;t fully developed.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Gift — A past shadow returns with quiet menace</title>
      <link>https://deslypeter.com/writing/the-gift-2015-review</link>
      <guid>https://deslypeter.com/writing/the-gift-2015-review.html?lang=en</guid>
      <description>The Gift balances tension and character with uneven success. The script leans on repetition, but the performances keep the emotional stakes from collapsing entirely.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s premise hinges on a man from Simon&amp;#x27;s past reappearing without explanation, creating an atmosphere of unease that lingers through conversations. Robyn&amp;#x27;s wariness and Simon&amp;#x27;s vulnerability shape the central conflict, but their reactions often feel underdeveloped rather than fully explored.&lt;/p&gt;&lt;p&gt;Edgerton&amp;#x27;s direction relies on restraint, using silence and glances to carry much of the tension without flashy techniques. The pacing is slow, and some scenes feel too long, dragging the emotional weight and testing patience with the suspense.&lt;/p&gt;&lt;p&gt;Jason Bateman conveys Simon&amp;#x27;s anxiety well, though his character lacks depth in moments where more complexity could have been drawn out. Rebecca Hall brings a grounded presence to Robyn, making her fear and confusion feel authentic even when the plot&amp;#x27;s logic falters.&lt;/p&gt;&lt;p&gt;The characters&amp;#x27; motivations are revealed unevenly, with too much ambiguity and not enough resolution. Despite these issues, the film works because of the actors&amp;#x27; chemistry and the tension that builds gradually, keeping the audience hooked.&lt;/p&gt;&lt;p class="specs-note"&gt;2015 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Gift_(2015_American_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/328425"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2015/gift.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Gift balances tension and character with uneven success. The script leans on repetition, but the performances keep the emotional stakes from collapsing entirely.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Take Shelter — A man's fears blur reality and paranoia</title>
      <link>https://deslypeter.com/writing/take-shelter-2011-review</link>
      <guid>https://deslypeter.com/writing/take-shelter-2011-review.html?lang=en</guid>
      <description>The film balances psychological tension with domestic unease. It avoids easy answers while keeping the audience emotionally engaged.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A husband begins to question his own mind as apocalyptic visions take hold, creating a rift between him and his family. His growing paranoia forces everyone around him to reconsider their role in his life, making trust feel fragile.&lt;/p&gt;&lt;p&gt;The film moves slowly, letting quiet moments of tension build without rushing to a conclusion. It shows the man&amp;#x27;s inner turmoil through visuals rather than heavy-handed symbols or big dramatic moves.&lt;/p&gt;&lt;p&gt;Michael Shannon conveys deep unease without overacting. His performance makes the audience feel the weight of his confusion. Jessica Chastain portrays a wife caught between love and fear, subtly showing her struggle to understand what is real.&lt;/p&gt;&lt;p&gt;The film occasionally leans into its own tension, risking melodrama in moments where emotional stakes feel heightened for effect. Despite this, it remains a powerful exploration of mental health, balancing personal drama with the threat of an external catastrophe.&lt;/p&gt;&lt;p class="specs-note"&gt;2011 · English. &lt;a href="https://en.wikipedia.org/wiki/Take_Shelter"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/64720"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2011/take_shelter.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances psychological tension with domestic unease. It avoids easy answers while keeping the audience emotionally engaged.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Aftersun — A child and a man on holiday</title>
      <link>https://deslypeter.com/writing/aftersun-2022-review</link>
      <guid>https://deslypeter.com/writing/aftersun-2022-review.html?lang=en</guid>
      <description>The film captures the weight of memory through quiet moments, not grand revelations. Paul Mescal’s restraint allows the emotional distance to feel earned rather than imposed.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A child and a man on holiday share a summer that lingers in fragments. The tension lies in what is unspoken between them, not in any overt conflict. The film relies on small holiday details — poolside conversations, hotel corridors — to build an emotional landscape that feels intimate yet distant.&lt;/p&gt;&lt;p&gt;Charlotte Wells avoids melodrama by trusting the audience to sit with the silence. The gaps between Sophie’s observations are where the meaning lives. The direction is careful and deliberate, often lingering on stillness rather than movement. It reflects Sophie’s perspective without oversimplifying it.&lt;/p&gt;&lt;p&gt;Paul Mescal conveys a complex emotional state through minimal gestures — a pause, a glance — that avoid sentimentality but suggest deeper turmoil. Francesca Corio’s performance as Sophie is restrained yet expressive, capturing the curiosity and vulnerability of a child navigating adult emotions.&lt;/p&gt;&lt;p&gt;The film’s greatest strength lies in its refusal to over-explain. It invites interpretation without demanding it, allowing the audience to sit with uncertainty. Even with its emotional precision, the film risks feeling too sparse for some viewers. But its quiet power makes the restraint feel like an act of honesty rather than omission.&lt;/p&gt;&lt;p class="specs-note"&gt;2022 · English. &lt;a href="https://en.wikipedia.org/wiki/Aftersun"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2022/aftersun.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film captures the weight of memory through quiet moments, not grand revelations. Paul Mescal’s restraint allows the emotional distance to feel earned rather than imposed.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Manchester by the Sea — A man carries grief like a second skin</title>
      <link>https://deslypeter.com/writing/manchester-by-the-sea-2016-review</link>
      <guid>https://deslypeter.com/writing/manchester-by-the-sea-2016-review.html?lang=en</guid>
      <description>The film's emotional core lies in its portrayal of despair and responsibility, with Casey Affleck anchoring the tragedy in quiet but powerful restraint.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Casey Affleck embodies the weight of guilt without needing to shout or dramatize it. His stillness communicates more than most actors&amp;#x27; performances. The film&amp;#x27;s central conflict is not just about legal guardianship, but about a man trying to find purpose in a life shaped by irreversible loss.&lt;/p&gt;&lt;p&gt;Kenneth Lonergan&amp;#x27;s direction lets the story move at its own pace, with silence and pauses carrying meaning. The dialogue feels sparse in places, but that&amp;#x27;s because it&amp;#x27;s reflecting the characters&amp;#x27; emotional state, not because the writing is weak.&lt;/p&gt;&lt;p&gt;Michelle Williams delivers a performance that is both vulnerable and restrained, capturing the complexity of a relationship strained by grief. Lucas Hedges adds depth to his role as the nephew, balancing innocence with a growing awareness of the world&amp;#x27;s cruelty.&lt;/p&gt;&lt;p&gt;The film sometimes feels too slow, but that&amp;#x27;s on purpose—it matches the emotional rhythm of the characters. Still, it manages to be moving without giving easy answers or sentimental fixes.&lt;/p&gt;&lt;p class="specs-note"&gt;2016 · English. &lt;a href="https://en.wikipedia.org/wiki/Manchester_by_the_Sea_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2016/manchester_by_the_sea.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s emotional core lies in its portrayal of despair and responsibility, with Casey Affleck anchoring the tragedy in quiet but powerful restraint.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Florida Project — A child's world in a fragile place</title>
      <link>https://deslypeter.com/writing/the-florida-project-2017-review</link>
      <guid>https://deslypeter.com/writing/the-florida-project-2017-review.html?lang=en</guid>
      <description>The Florida Project captures the tension between innocence and survival without romanticizing either side. The performances anchor its delicate balance of hope and despair.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film centers on a young girl and her mother navigating life in a rundown motel, with Disney World looming as both a dream and a reminder of their instability. The setting feels lived-in rather than stylized, emphasizing the characters&amp;#x27; daily struggles without overt symbolism or melodrama.&lt;/p&gt;&lt;p&gt;Sean Baker&amp;#x27;s direction focuses on small moments—conversations, routines, fleeting joys—that show emotional depth without being over the top. The pacing is slow, giving the characters time to breathe while keeping a quiet sense of urgency about their situation.&lt;/p&gt;&lt;p&gt;Brooklynn Prince and Bria Vinaite bring authenticity to their roles, balancing vulnerability with resilience without oversimplifying their motivations. Dialogue feels natural, often sparse but meaningful, capturing the rhythms of everyday life without unnecessary embellishment.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s emotional strength comes from how it holds back. It avoids being sentimental by focusing on what&amp;#x27;s said and left unsaid between characters. The only issue is a few moments where the story slows down too much, which risks making the audience feel disconnected instead of more involved.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Florida_Project"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2017/florida_project.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Florida Project captures the tension between innocence and survival without romanticizing either side. The performances anchor its delicate balance of hope and despair.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Paterson — A life in rhythm and repetition</title>
      <link>https://deslypeter.com/writing/paterson-2016-review</link>
      <guid>https://deslypeter.com/writing/paterson-2016-review.html?lang=en</guid>
      <description>The film balances the mundane with poetic reflection, but its quiet tone risks distancing some viewers from its emotional core.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Paterson unfolds through daily routines, making the ordinary feel like a form of artistry. The bus routes and notebook entries frame a life in motion. The story reveals itself gradually, not through dramatic events but through small observations and shared moments between Paterson and his wife.&lt;/p&gt;&lt;p&gt;Jarmusch lets silence and stillness carry the meaning, without pushing or forcing it. The film moves slowly, giving time to think rather than act. It’s not for everyone, but those who stick with it find a calm, present kind of reward.&lt;/p&gt;&lt;p&gt;Adam Driver delivers a restrained performance, letting Paterson’s thoughts emerge naturally rather than through grand gestures or monologues. Golshifteh Farahani brings warmth and wit to her role, contrasting Paterson’s quiet introspection with her own ambitions and dreams.&lt;/p&gt;&lt;p&gt;The tone is its best part, but some might find it too simple or slow. It doesn’t chase big stories or deep emotions, but it finds beauty in everyday moments. That’s its charm, even if it’s not for everyone.&lt;/p&gt;&lt;p class="specs-note"&gt;2016 · English. &lt;a href="https://en.wikipedia.org/wiki/Paterson_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2016/paterson.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances the mundane with poetic reflection, but its quiet tone risks distancing some viewers from its emotional core.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Station Agent — A quiet life in a forgotten space</title>
      <link>https://deslypeter.com/writing/the-station-agent-2003-review</link>
      <guid>https://deslypeter.com/writing/the-station-agent-2003-review.html?lang=en</guid>
      <description>The film balances humor and loneliness without leaning too far into either. The characters’ shared isolation becomes its emotional core rather than a gimmick.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story centers on a man who moves into an abandoned train station, seeking solitude but finding unexpected connections with others nearby. His presence disrupts the quiet routines of two neighbors, bringing out both friction and tenderness in their interactions.&lt;/p&gt;&lt;p&gt;The film keeps things grounded with natural dialogue. Conversations feel real, not forced. The pacing is steady, letting moments sit without dragging. It helps the characters open up slowly to each other.&lt;/p&gt;&lt;p&gt;Peter Dinklage conveys quiet determination without overplaying his character’s eccentricity. His presence anchors the film’s tone. Patricia Clarkson and Bobby Cannavale bring subtle tension and warmth to their roles, making their evolving relationship feel earned rather than forced.&lt;/p&gt;&lt;p&gt;The mix of humor and sadness isn’t always smooth. Some scenes get too sentimental before pulling back. But the film still finds beauty in small actions and quiet understanding, giving its characters real emotional depth.&lt;/p&gt;&lt;p class="specs-note"&gt;2003 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Station_Agent"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/2056"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2003/station_agent.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances humor and loneliness without leaning too far into either. The characters’ shared isolation becomes its emotional core rather than a gimmick.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Columbus — A quiet man and a quiet woman find tension in stillness</title>
      <link>https://deslypeter.com/writing/columbus-2017-review</link>
      <guid>https://deslypeter.com/writing/columbus-2017-review.html?lang=en</guid>
      <description>The film explores the weight of unspoken feelings without ever needing to explain them. The restraint allows the emotional stakes to feel real rather than calculated.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A man and a woman are stranded together, but their silence is not empty—it carries the pressure of choices they have made or avoided. Their conversations are sparse, but what is left unsaid becomes as important as what is spoken. The tension is in the pauses and the glances that avoid eye contact.&lt;/p&gt;&lt;p&gt;The film uses stillness to show the characters&amp;#x27; emotions, letting the setting reflect their feelings instead of using dialogue or music. The pacing is slow, with long quiet moments that might test patience but also show the characters&amp;#x27; inner struggles.&lt;/p&gt;&lt;p&gt;The performances are understated, avoiding melodrama. Their emotions are shown through small gestures and subtle shifts in tone. Dialogue is minimal but precise, often leaving room for interpretation rather than providing clear answers or explanations.&lt;/p&gt;&lt;p&gt;The film might feel too slow for some, especially if you&amp;#x27;re used to more direct conflict or resolution. But the honest way the characters interact makes the quiet moments feel real and powerful.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/Columbus_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2017/columbus.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film explores the weight of unspoken feelings without ever needing to explain them. The restraint allows the emotional stakes to feel real rather than calculated.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Straight Story — Richard Farnsworth as a man on a mission</title>
      <link>https://deslypeter.com/writing/the-straight-story-1999-review</link>
      <guid>https://deslypeter.com/writing/the-straight-story-1999-review.html?lang=en</guid>
      <description>The film balances quiet dignity with emotional weight. The central journey is both literal and deeply personal, but its tone can feel restrained at times.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Richard Farnsworth carries the film with a presence that feels earned rather than performed. His portrayal of Alvin Straight is grounded in patience and quiet resolve. The story centers on his desire to reconcile with an estranged brother, but the emotional stakes are often conveyed through silence or subtle gestures rather than direct exposition.&lt;/p&gt;&lt;p&gt;David Lynch&amp;#x27;s direction leans into stillness instead of action, giving the film a thoughtful pace. The rhythm is slow, which can make the story feel a bit sluggish, but it also highlights Alvin’s journey through the landscape and the small towns he passes. The visuals focus on wide open spaces and quiet communities, showing both his loneliness and his ties to the world around him.&lt;/p&gt;&lt;p&gt;Sissy Spacek and Harry Dean Stanton bring warmth to their roles without overshadowing Farnsworth&amp;#x27;s central performance. Their interactions feel natural and emotionally resonant. Dialogue is minimal but meaningful, often revealing character through what is left unsaid rather than what is spoken outright.&lt;/p&gt;&lt;p&gt;The film’s quiet style might leave some viewers wanting more emotional punch or a clearer ending in certain scenes. Even with its slow spots, The Straight Story is a thoughtful and moving look at reconciliation, loyalty, and the quiet strength of everyday people.&lt;/p&gt;&lt;p class="specs-note"&gt;1999 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Straight_Story"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/404"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances quiet dignity with emotional weight. The central journey is both literal and deeply personal, but its tone can feel restrained at times.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Sound of Metal — A quiet unraveling of identity</title>
      <link>https://deslypeter.com/writing/sound-of-metal-2019-review</link>
      <guid>https://deslypeter.com/writing/sound-of-metal-2019-review.html?lang=en</guid>
      <description>The film captures the emotional toll of sudden deafness with precision. Riz Ahmed's performance anchors the experience in raw, physical vulnerability.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central dramatic situation revolves around a drummer losing his hearing and grappling with the collapse of his world. This is not just about loss but about redefining self-worth when identity is tied to sound.&lt;/p&gt;&lt;p&gt;The direction leans into silence as a character, using visual cues and minimal dialogue to convey emotional shifts. Pacing is deliberate, allowing moments of stillness to reflect the protagonist&amp;#x27;s internal struggle without rushing resolution.&lt;/p&gt;&lt;p&gt;Riz Ahmed brings a visceral honesty that makes his frustration and confusion feel immediate and personal. Paul Raci provides a steady presence as a mentor figure, balancing guidance with the weight of lived experience.&lt;/p&gt;&lt;p&gt;There is a small misstep in how certain emotional beats are resolved, leaning slightly on convention rather than fully embracing ambiguity. Despite this, the film&amp;#x27;s commitment to its central theme elevates it beyond a simple tragedy into a meditation on perception and survival.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/Sound_of_Metal"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2020/sound_of_metal.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film captures the emotional toll of sudden deafness with precision. Riz Ahmed&amp;#x27;s performance anchors the experience in raw, physical vulnerability.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Father — A mind unraveling in real time</title>
      <link>https://deslypeter.com/writing/the-father-2020-review</link>
      <guid>https://deslypeter.com/writing/the-father-2020-review.html?lang=en</guid>
      <description>The Father uses a slow, deliberate pacing to show the erosion of memory and identity. The central drama is not about solving a mystery but about losing one's sense of self.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film shows the protagonist&amp;#x27;s confusion and fear through broken memories instead of a clear story. It&amp;#x27;s hard to tell what&amp;#x27;s real and what&amp;#x27;s imagined, and the audience feels that same uncertainty, which makes things tense.&lt;/p&gt;&lt;p&gt;The film focuses on small details—like a misplaced object or a misheard word—to show how shaky memory can be. These moments feel unsettling but not forced. The pacing is slow but never boring. Each scene builds carefully, letting the audience feel the emotional weight.&lt;/p&gt;&lt;p&gt;The performance captures the fragility and vulnerability of someone losing their grip on reality. The actor conveys this through subtle shifts in tone and body language. Dialogue is sparse but meaningful, often consisting of repeated questions or hesitant statements that reflect confusion rather than malice.&lt;/p&gt;&lt;p&gt;The film could have felt too abstract, but it stays real because of its honest emotions and the strong central performance. It works best by not trying to explain everything. It lets the audience sit with the uncertainty of memory without giving simple answers.&lt;/p&gt;&lt;p class="specs-note"&gt;2020 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Father_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Father uses a slow, deliberate pacing to show the erosion of memory and identity. The central drama is not about solving a mystery but about losing one&amp;#x27;s sense of self.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Leave No Trace — A fragile bond tested by the outside world</title>
      <link>https://deslypeter.com/writing/leave-no-trace-2018-review</link>
      <guid>https://deslypeter.com/writing/leave-no-trace-2018-review.html?lang=en</guid>
      <description>The film balances quiet tension with emotional stakes, though its pacing occasionally softens the urgency of its central conflict.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The father-daughter dynamic is built on survival instincts rather than traditional familial roles. Their isolation shapes their interactions in subtle ways. When they leave the forest, the world outside feels overwhelming but not entirely hostile. The challenge lies in adapting without losing what keeps them together.&lt;/p&gt;&lt;p&gt;The direction avoids melodrama by focusing on small gestures and pauses. A glance or a hesitation can carry more weight than dialogue. The pacing shifts between urgency and reflection, which might dilute the tension during quieter moments. But it also gives the story space to breathe emotionally.&lt;/p&gt;&lt;p&gt;Ben Foster conveys trauma without overacting. His performance is restrained yet deeply felt, especially in moments of vulnerability. Thomasin McKenzie gives a compelling balance of independence and dependence. Her character&amp;#x27;s voice carries a quiet strength that anchors the film.&lt;/p&gt;&lt;p&gt;The film’s strongest moments come from its restraint. It trusts the audience to read between lines rather than spelling everything out. A minor reservation is that some emotional beats feel slightly underdeveloped, leaving room for more exploration of the father’s internal struggles.&lt;/p&gt;&lt;p class="specs-note"&gt;2018 · English. &lt;a href="https://en.wikipedia.org/wiki/Leave_No_Trace_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2018/leave_no_trace.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances quiet tension with emotional stakes, though its pacing occasionally softens the urgency of its central conflict.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Nebraska — A journey without resolution</title>
      <link>https://deslypeter.com/writing/nebraska-2013-review</link>
      <guid>https://deslypeter.com/writing/nebraska-2013-review.html?lang=en</guid>
      <description>The film balances humor and melancholy with a quiet precision. The father-son dynamic is both its anchor and its emotional core.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central tension lies in the father’s determination to claim a prize he may not have earned, while his son tries to understand his motives. This conflict is played out in long stretches of silence, dialogue that reveals more through what is left unsaid than what is spoken.&lt;/p&gt;&lt;p&gt;The black-and-white cinematography highlights the monotony of their journey, making the emotional moments feel raw and immediate. The pacing is slow but purposeful, giving each scene space to breathe without feeling dragged out. The rhythm matches the story’s quiet, resigned tone.&lt;/p&gt;&lt;p&gt;Bruce Dern embodies a mix of stubbornness and vulnerability that makes his character both frustrating and deeply human. Will Forte brings a dry wit that contrasts with the weight of his father’s obsession, creating an uneasy but believable dynamic.&lt;/p&gt;&lt;p&gt;Some moments risk feeling overly sentimental, but the film avoids cheap emotion by focusing on how the characters act. The father-son relationship stays interesting even when the plot doesn’t offer many surprises. What stays with you is the quiet truth of their journey.&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://en.wikipedia.org/wiki/Nebraska_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/129670"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2013/nebraska.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances humor and melancholy with a quiet precision. The father-son dynamic is both its anchor and its emotional core.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Truman Show — A performance that hides a cage</title>
      <link>https://deslypeter.com/writing/the-truman-show-1998-review</link>
      <guid>https://deslypeter.com/writing/the-truman-show-1998-review.html?lang=en</guid>
      <description>Jim Carrey’s portrayal of Truman balances vulnerability and charm, making the film’s critique of control feel personal rather than polemic.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Jim Carrey’s warmth anchors the film even as the world around him becomes increasingly artificial. His smile feels genuine despite the built-in constraints. The script gives Truman moments that suggest he might notice something is off, but Carrey plays these with a careful ambiguity—never fully trusting or resisting his environment.&lt;/p&gt;&lt;p&gt;Peter Weir’s direction keeps the tone light even as the themes grow heavier. The camera lingers on Truman’s face, suggesting he senses more than he admits. The film avoids explaining how Truman escapes, focusing instead on the emotional weight of his realization. This restraint makes the final act feel earned rather than engineered.&lt;/p&gt;&lt;p&gt;Laura Linney and Ed Harris provide subtle but effective counterpoints to Truman’s optimism. Their performances carry the unease that Truman barely registers. Dialogue is often dry or observational, which fits the film’s satirical tone. The characters rarely explain their motives outright, adding to the tension.&lt;/p&gt;&lt;p&gt;The balance between humor and existential dread is delicate but mostly successful. The film never feels like a lecture, even when questioning the ethics of surveillance. A minor reservation: some scenes rely too much on Truman’s obliviousness, which can feel like an excuse rather than a narrative choice.&lt;/p&gt;&lt;p class="specs-note"&gt;1998 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Truman_Show"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/37165"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Jim Carrey’s portrayal of Truman balances vulnerability and charm, making the film’s critique of control feel personal rather than polemic.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Lighthouse — A storm isolates two men in a lighthouse</title>
      <link>https://deslypeter.com/writing/the-lighthouse-2019-review</link>
      <guid>https://deslypeter.com/writing/the-lighthouse-2019-review.html?lang=en</guid>
      <description>The film's claustrophobic intensity is matched by its psychological depth. The central tension between the characters feels inevitable rather than forced.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two men are stranded together, with no escape but the unraveling of their minds. The situation is both physical and mental, with isolation as a character in itself. The film explores how desperation can blur morality. Small decisions grow into something monstrous under pressure, without clear resolution or moral victory.&lt;/p&gt;&lt;p&gt;The direction uses repetition and slow reveals to build tension. The camera lingers on objects, making them feel charged with meaning even when their purpose is unclear. The pacing is deliberate, letting the audience sit with discomfort rather than rushing toward a release. This makes the eventual unraveling more impactful.&lt;/p&gt;&lt;p&gt;Willem Dafoe delivers a performance that feels both unhinged and methodical. His character&amp;#x27;s descent into madness is layered with moments of clarity and cruelty. Robert Pattinson conveys quiet desperation without overacting. His eyes and posture suggest a man on the edge, trying to hold onto reason.&lt;/p&gt;&lt;p&gt;The dialogue is sparse but packed with subtext. Conversations often feel like battles, with every word carrying weight and ambiguity. Despite its brilliance, the film sometimes leans too heavily on its own style, which might alienate viewers who prefer more straightforward storytelling.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Lighthouse_(2019_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2019/lighthouse.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s claustrophobic intensity is matched by its psychological depth. The central tension between the characters feels inevitable rather than forced.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Hereditary — A slow unraveling of grief and madness</title>
      <link>https://deslypeter.com/writing/hereditary-2018-review</link>
      <guid>https://deslypeter.com/writing/hereditary-2018-review.html?lang=en</guid>
      <description>The film's heart is the breakdown of the family, but sometimes the horror feels more like a stylistic choice than something that naturally grows from the story.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story unfolds through the aftermath of a funeral, revealing how grief and guilt shape the family&amp;#x27;s descent into chaos. The pacing is deliberate, allowing tension to build from small moments that carry heavy emotional weight.&lt;/p&gt;&lt;p&gt;Ari Aster balances the horror with psychological depth, avoiding clichéd jump scares in favor of unsettling atmosphere. The dialogue feels natural but often sparse, focusing on what is left unsaid rather than explicit exposition.&lt;/p&gt;&lt;p&gt;Toni Collette delivers a haunting performance, capturing both vulnerability and unraveling control with precision. Alex Wolff and Milly Shapiro bring raw intensity to their roles, making the family&amp;#x27;s disintegration feel personal and immediate.&lt;/p&gt;&lt;p&gt;There is one reservation: some horror elements feel detached from the emotional stakes, as if added for shock value rather than narrative necessity. Despite this, the film remains a powerful exploration of inherited trauma, anchored by strong performances and a carefully constructed atmosphere.&lt;/p&gt;&lt;p class="specs-note"&gt;2018 · English. &lt;a href="https://en.wikipedia.org/wiki/Hereditary_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2018/hereditary.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s heart is the breakdown of the family, but sometimes the horror feels more like a stylistic choice than something that naturally grows from the story.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Midsommar — A festival that becomes a trap</title>
      <link>https://deslypeter.com/writing/midsommar-2019-review</link>
      <guid>https://deslypeter.com/writing/midsommar-2019-review.html?lang=en</guid>
      <description>The film uses shocking visuals to create unease, but the emotional parts don’t always feel balanced. Florence Pugh carries the story even when it stumbles.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main conflict is a relationship breaking down during a strange tradition. The setting adds tension but doesn’t fully explain why the characters act the way they do. Ari Aster uses location and sound to build atmosphere, but the horror feels more about the environment than the characters. The cult’s rituals are creepy but don’t dig deep into the characters’ minds.&lt;/p&gt;&lt;p&gt;The film moves slowly at times, then suddenly turns violent. This contrast can work, but it messes with the story’s emotional flow. Florence Pugh gives a strong performance, showing both fear and anger without overdoing it. Her character’s fall makes sense but doesn’t always feel satisfying.&lt;/p&gt;&lt;p&gt;Jack Reynor plays his part quietly, but he gets lost in the film’s more extreme parts. His reactions feel real but aren’t explored much. The dialogue leans on explaining things rather than showing real emotions. Some conversations feel forced in trying to explain the cult’s reasons.&lt;/p&gt;&lt;p&gt;The film’s focus on visuals sometimes makes the emotional parts feel weaker. The horror works, but the human cost doesn’t feel as important as it should. Despite these issues, Midsommar is a visually strong and thematically bold film in the folk horror genre, with solid acting and a fresh idea.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/Midsommar_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2019/midsommar.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film uses shocking visuals to create unease, but the emotional parts don’t always feel balanced. Florence Pugh carries the story even when it stumbles.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Get Out — A tense first date becomes a trap</title>
      <link>https://deslypeter.com/writing/get-out-2017-review</link>
      <guid>https://deslypeter.com/writing/get-out-2017-review.html?lang=en</guid>
      <description>The film balances horror with sharp social critique, but its satire occasionally overshadows the emotional stakes of its protagonist's experience.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central tension is the growing realization that the white girlfriend’s family hides dangerous intentions beneath polite smiles and casual racism. This unease is built through subtle dialogue exchanges and carefully observed behavior rather than overt horror tropes or jump scares.&lt;/p&gt;&lt;p&gt;The film uses space well, making the suburban home feel welcoming but also stifling as secrets come out. The pacing moves between calm and sudden tension, keeping the audience on edge without needing jump scares.&lt;/p&gt;&lt;p&gt;Daniel Kaluuya conveys a mix of vulnerability and resolve that grounds the film’s surreal elements in real emotional stakes. Allison Williams plays her role with calculated charm, making the descent into horror feel more unsettling than forced.&lt;/p&gt;&lt;p&gt;The satire on liberal racism is sharp but sometimes turns characters into symbols instead of full people. Still, the film’s smart writing and emotional heart make it a standout in modern horror, mixing chills with thoughtful ideas.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/Get_Out"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2017/get_out.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances horror with sharp social critique, but its satire occasionally overshadows the emotional stakes of its protagonist&amp;#x27;s experience.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Us — Lupita Nyong'o's layered performance anchors the film's surreal chaos.</title>
      <link>https://deslypeter.com/writing/us-2019-review</link>
      <guid>https://deslypeter.com/writing/us-2019-review.html?lang=en</guid>
      <description>Us balances eerie spectacle with emotional stakes, but its central metaphor feels overstuffed. The performances elevate its ambitions despite narrative clutter.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Adelaide&amp;#x27;s quiet resolve in the face of terror is portrayed with subtle precision by Lupita Nyong&amp;#x27;o, grounding the film’s wilder elements in human concern. The doppelgängers are never fully explained, which leaves their symbolic weight ambiguous. Their presence challenges the family’s sense of self without clear resolution.&lt;/p&gt;&lt;p&gt;The film moves between tense moments and sudden mood changes, which can throw off the emotional flow of important scenes. Winston Duke plays the protective father with real feeling, but his character isn&amp;#x27;t given much to do in the final third, where he mostly reacts rather than acts.&lt;/p&gt;&lt;p&gt;Some of the dialogue relies on explanation rather than building tension, turning key confrontations into info-dumps. Elisabeth Moss brings a solid, grounded energy to her role as the mother, but her character is limited by the film’s surreal setup.&lt;/p&gt;&lt;p&gt;The ending tries to bring everything together but feels too quick, leaving some emotional moments hanging and the main idea of the film underexplored. Even with its problems, the film stays interesting because of the strong acting and its willingness to tackle uncomfortable themes about identity and duality.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/Us_(2019_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2019/us.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Us balances eerie spectacle with emotional stakes, but its central metaphor feels overstuffed. The performances elevate its ambitions despite narrative clutter.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Nope — A tension between spectacle and substance</title>
      <link>https://deslypeter.com/writing/nope-2022-review</link>
      <guid>https://deslypeter.com/writing/nope-2022-review.html?lang=en</guid>
      <description>The film has a creepy vibe and a mystery that never really gets solved. It's strong in its look and feel, but the emotions don't come through clearly.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Nope starts with a strange, almost dreamlike mood, but it doesn&amp;#x27;t back that up with clear reasons to care or emotional depth. The story follows siblings trying to capture a weird event, but their reasons for doing so are unclear and not explored much.&lt;/p&gt;&lt;p&gt;The film moves slowly, and its focus on looks can make the story and characters feel less clear. Jordan Peele&amp;#x27;s direction creates a spooky, immersive feel, but it doesn&amp;#x27;t always connect with real human emotions.&lt;/p&gt;&lt;p&gt;Daniel Kaluuya and Keke Palmer do most of the heavy lifting, but their characters don&amp;#x27;t have enough depth to hold the film&amp;#x27;s more abstract ideas. Supporting actors like Steven Yeun and Michael Wincott help create the unsettling mood, but their roles aren&amp;#x27;t fully developed.&lt;/p&gt;&lt;p&gt;The film has big ideas, but it doesn&amp;#x27;t always deliver them well—some parts hit hard, while others feel aimless. Even with its flaws, Nope is visually impressive and worth watching again for its symbols and tension.&lt;/p&gt;&lt;p class="specs-note"&gt;2022 · English. &lt;a href="https://en.wikipedia.org/wiki/Nope_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2022/nope.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film has a creepy vibe and a mystery that never really gets solved. It&amp;#x27;s strong in its look and feel, but the emotions don&amp;#x27;t come through clearly.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Menu — A meal with consequences</title>
      <link>https://deslypeter.com/writing/the-menu-2022-review</link>
      <guid>https://deslypeter.com/writing/the-menu-2022-review.html?lang=en</guid>
      <description>The tension between expectation and reality is sharp, but the film leans too heavily on its own irony without fully committing to its themes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The Menu unfolds as a gathering of characters with hidden motives, each brought together by an invitation they cannot refuse. As the evening progresses, the stakes shift from social awkwardness to something more sinister, though the transition feels abrupt rather than organic.&lt;/p&gt;&lt;p&gt;The film moves quickly but not consistently. Some scenes focus on dialogue for too long, while others rush through emotional moments without giving them time to breathe. The direction keeps the setting visually tight, which helps build tension but doesn’t give much room to explore the characters’ inner lives.&lt;/p&gt;&lt;p&gt;Ralph Fiennes brings an unsettling calm to his role as the host, making his menace feel more insidious than overtly threatening. Anya Taylor-Joy and Nicholas Hoult navigate their roles with precision, though their characters remain underdeveloped beyond their initial impressions.&lt;/p&gt;&lt;p&gt;The film’s humor is dark, but it often feels forced, relying on irony instead of real character-driven comedy or horror. Even with its flaws, The Menu still makes a clear point about elitism and entitlement, even if it doesn’t fully live up to its own promise.&lt;/p&gt;&lt;p class="specs-note"&gt;2022 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Menu_(2022_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2022/menu.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The tension between expectation and reality is sharp, but the film leans too heavily on its own irony without fully committing to its themes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Killer — A lone assassin in a labyrinth of choices</title>
      <link>https://deslypeter.com/writing/the-killer-2023-review</link>
      <guid>https://deslypeter.com/writing/the-killer-2023-review.html?lang=en</guid>
      <description>The Killer balances tension with moral ambiguity, but its formal rigidity limits emotional resonance despite strong performances.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film follows an assassin dealing with the fallout of his past choices. He&amp;#x27;s caught in a world where doing what&amp;#x27;s necessary blurs the lines of right and wrong. His inner struggle shows in how he treats people, but the story doesn&amp;#x27;t really dig into these conflicts beyond what&amp;#x27;s on the surface.&lt;/p&gt;&lt;p&gt;Fincher&amp;#x27;s direction focuses on visual control, often putting characters in tight spaces that mirror their mental pressure. The rhythm is slow but sometimes too slow, with long parts where the story feels more about style than what&amp;#x27;s actually happening.&lt;/p&gt;&lt;p&gt;Michael Fassbender portrays the assassin with a controlled intensity, suggesting depth without overexplaining his motivations. Supporting actors like Tilda Swinton and Arliss Howard add weight to their roles, though their screen time is often limited by the film&amp;#x27;s structure.&lt;/p&gt;&lt;p&gt;The film tries to balance its visual flair with a simple story. Sometimes the style gets in the way of the emotions. Even with these issues, it stays interesting because of its smart dialogue and focus on its main moral question.&lt;/p&gt;&lt;p class="specs-note"&gt;2023 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Killer_(2023_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2023/killer.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Killer balances tension with moral ambiguity, but its formal rigidity limits emotional resonance despite strong performances.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Card Counter — A man's obsession with control</title>
      <link>https://deslypeter.com/writing/the-card-counter-2021-review</link>
      <guid>https://deslypeter.com/writing/the-card-counter-2021-review.html?lang=en</guid>
      <description>The film balances tension and introspection but struggles to fully commit to its emotional core. The central conflict remains compelling, even if the resolution feels underdeveloped.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central drama revolves around a former soldier trying to maintain control in a high-stakes environment where he cannot trust anyone. His need for structure and predictability becomes both his strength and his downfall, but the film rarely explores why this need is so deeply rooted.&lt;/p&gt;&lt;p&gt;Schrader&amp;#x27;s direction uses slow pacing and mood to create tension, which works well but can make the film feel sluggish at times. The dialogue is minimal, which leaves some emotional depth and character growth unexplored.&lt;/p&gt;&lt;p&gt;Oscar Isaac delivers a controlled performance, conveying the weight of his character’s past without overexplaining it. Tiffany Haddish and Tye Sheridan provide moments of contrast but are underused in their roles, limiting their impact on the story&amp;#x27;s emotional arc.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s focus on its main theme is both its best and worst quality. It never clearly decides if the character&amp;#x27;s obsession is a way to heal or a path to self-destruction. Still, The Card Counter thoughtfully examines trauma and the need for control, even if it doesn&amp;#x27;t always make its ideas feel fully emotionally satisfying.&lt;/p&gt;&lt;p class="specs-note"&gt;2021 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Card_Counter"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2021/card_counter.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances tension and introspection but struggles to fully commit to its emotional core. The central conflict remains compelling, even if the resolution feels underdeveloped.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>First Reformed — A conscience without a safe distance</title>
      <link>https://deslypeter.com/writing/first-reformed-2017-review</link>
      <guid>https://deslypeter.com/writing/first-reformed-2017-review.html?lang=en</guid>
      <description>Ethan Hawke gives First Reformed a tightly contained anguish. Paul Schrader makes questions of faith and responsibility feel personal, with a severity that is demanding but rarely empty.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Ethan Hawke makes the effort of remaining composed feel difficult in First Reformed. His minister can carry out a conversation while seeming unable to find reassurance in it. The restraint is important. It gives the film an emotional centre without needing every thought to arrive as an openly dramatic confession.&lt;/p&gt;&lt;p&gt;Paul Schrader gives the story a strictness that suits the character’s effort to keep his life in order. The measured pace lets doubts build up. I liked how practical duties and private uncertainty share the same space. A routine can offer structure without solving why someone needs that structure so much.&lt;/p&gt;&lt;p&gt;The conversations about responsibility are the strongest part for me. Listening to somebody’s worry creates an obligation that is difficult to put away afterwards. The film makes that pressure personal rather than treating it only as a position in an argument. Hawke is very good at letting an exchange leave a mark without immediately explaining it.&lt;/p&gt;&lt;p&gt;The severity can occasionally make the film feel more closed than it needs to be. Even so, its difficult questions stay connected to a particular person and his limits. The central performance gives the ideas weight. It is an unsettling film about the distance between believing that something matters and finding a way to live with that belief.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/First_Reformed"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2018/first_reformed.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Ethan Hawke gives First Reformed a tightly contained anguish. Paul Schrader makes questions of faith and responsibility feel personal, with a severity that is demanding but rarely empty.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Power of the Dog — A quiet menace beneath the surface</title>
      <link>https://deslypeter.com/writing/the-power-of-the-dog-2021-review</link>
      <guid>https://deslypeter.com/writing/the-power-of-the-dog-2021-review.html?lang=en</guid>
      <description>The film's emotional weight is carried by its performances and restrained direction, even as its deliberate pacing risks alienating some viewers.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The Power of the Dog unfolds with a simmering tension that lingers in the air rather than erupting into action or dialogue. It centers on a rancher’s unsettling relationship with his brother, shaped by unspoken violence and emotional distance. The stakes are personal rather than grandiose.&lt;/p&gt;&lt;p&gt;Campion&amp;#x27;s direction uses long silences and glances instead of exposition, letting the characters&amp;#x27; unease grow from what&amp;#x27;s left unsaid. The pacing is slow but has a purpose, focusing on mood and atmosphere rather than fast-moving stories or action scenes.&lt;/p&gt;&lt;p&gt;Benedict Cumberbatch conveys menace without shouting, his performance rooted in subtle gestures and a controlled presence that suggests deep-seated volatility. Kodi Smit-McPhee and Jesse Plemons provide emotional counterpoints, their performances grounding the film’s more abstract themes in human vulnerability.&lt;/p&gt;&lt;p&gt;The dialogue is sparse but precise, often hiding meaning that&amp;#x27;s not easy to pin down. It makes the audience sit with discomfort instead of offering quick fixes. The tone stays consistent, but the slow build might test patience. However, the emotional depth and character complexity make it worth it.&lt;/p&gt;&lt;p class="specs-note"&gt;2021 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Power_of_the_Dog_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2021/power_of_the_dog.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s emotional weight is carried by its performances and restrained direction, even as its deliberate pacing risks alienating some viewers.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Northman — A revenge tale steeped in myth</title>
      <link>https://deslypeter.com/writing/the-northman-2022-review</link>
      <guid>https://deslypeter.com/writing/the-northman-2022-review.html?lang=en</guid>
      <description>The Northman leans into its mythic roots but falters in balancing spectacle with emotional stakes. Its ambition is clear, but the execution often feels strained.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Amleth’s journey is driven by vengeance, yet his motivations remain underdeveloped beneath the film&amp;#x27;s ornate surface. The story moves through a series of violent acts and ritualistic scenes without fully anchoring the protagonist’s emotional core.&lt;/p&gt;&lt;p&gt;The film focuses on visual grandeur, but this can make the story feel like a series of disconnected scenes rather than a smooth journey. The pacing is off, with long action sequences followed by sudden mood changes that break the flow.&lt;/p&gt;&lt;p&gt;Alexander Skarsgård delivers a physically committed performance, though his character’s internal conflict remains underexplored. Nicole Kidman and Claes Bang add gravitas to their roles, but their scenes often feel disconnected from the film&amp;#x27;s central mythos.&lt;/p&gt;&lt;p&gt;The film has a strong visual style, but it sometimes drowns out the emotional depth of the characters’ struggles. It works as a mythic story but struggles to balance its grand visuals with meaningful substance.&lt;/p&gt;&lt;p class="specs-note"&gt;2022 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Northman"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2022/northman.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Northman leans into its mythic roots but falters in balancing spectacle with emotional stakes. Its ambition is clear, but the execution often feels strained.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Green Knight — A medieval quest with modern weight</title>
      <link>https://deslypeter.com/writing/the-green-knight-2021-review</link>
      <guid>https://deslypeter.com/writing/the-green-knight-2021-review.html?lang=en</guid>
      <description>The film balances myth and psychology but leans too heavily on its own solemnity. Dev Patel carries the emotional core despite uneven pacing.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Gawain&amp;#x27;s journey is about honor, but his doubts don&amp;#x27;t always match the stakes around him. The Green Knight&amp;#x27;s challenge feels more like a symbol than a real threat, which makes the story more about thinking than action. David Lowery focuses on mood rather than moving the plot forward, which might not satisfy fans of fast-paced fantasy.&lt;/p&gt;&lt;p&gt;The film takes its time with landscapes and faces, creating a thoughtful mood that can slow things down. Dev Patel shows vulnerability without being over the top, making the myth feel personal. Alicia Vikander adds emotional layers to her role, but it doesn&amp;#x27;t get enough time to fully develop in the end.&lt;/p&gt;&lt;p&gt;Joel Edgerton plays the Green Knight with a quiet, unsettling energy that adds weight to his mysterious character. The dialogue is old-fashioned, which might make it harder for some viewers to connect with the characters. The film&amp;#x27;s slower parts sometimes lack clear conflict, making it harder to feel the emotional weight.&lt;/p&gt;&lt;p&gt;The visuals are impressive but sometimes take focus away from the themes of guilt and redemption. The Green Knight is a thoughtful look at courage, but it struggles to keep its poetic ideas clear. It&amp;#x27;s ambitious, but some parts of Gawain&amp;#x27;s journey feel left hanging, leaving viewers thinking long after the credits roll.&lt;/p&gt;&lt;p class="specs-note"&gt;2021 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Green_Knight_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2021/green_knight.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances myth and psychology but leans too heavily on its own solemnity. Dev Patel carries the emotional core despite uneven pacing.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Beguiled — A tense situation with no clear escape</title>
      <link>https://deslypeter.com/writing/the-beguiled-2017-review</link>
      <guid>https://deslypeter.com/writing/the-beguiled-2017-review.html?lang=en</guid>
      <description>The film leans on its setting but lacks emotional urgency. The cast is capable, yet the script fails to justify their choices or conflicts.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central tension hinges on a group of women in a remote Southern setting, isolated and uneasy. Despite the potential for drama, the characters&amp;#x27; motivations remain underdeveloped and inconsistent. The film&amp;#x27;s dialogue often feels artificial, lacking the natural rhythm needed to sustain the story&amp;#x27;s stakes.&lt;/p&gt;&lt;p&gt;Sofia Coppola&amp;#x27;s direction focuses on the atmosphere rather than pushing the story forward. Some emotional moments feel left hanging, and the pacing is all over the place—some scenes are slow, others rush to endings that don&amp;#x27;t feel satisfying. The setting is there, but it doesn&amp;#x27;t really play a role in the story like it could have.&lt;/p&gt;&lt;p&gt;Colin Farrell&amp;#x27;s performance is restrained but does little to elevate the material around him. Nicole Kidman and Kirsten Dunst bring gravitas, but their roles are underwritten and lack clear direction. Elle Fanning and the younger cast members are given little to work with beyond surface-level tension.&lt;/p&gt;&lt;p&gt;The film tries to mix thriller and romance but doesn&amp;#x27;t fully commit to either. It leans on its look rather than its story, which makes it feel more like a mood than a full movie. The setting is nice, but the emotions don&amp;#x27;t really connect with the audience, leaving the characters&amp;#x27; fates feeling distant.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Beguiled_(2017_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2017/beguiled.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its setting but lacks emotional urgency. The cast is capable, yet the script fails to justify their choices or conflicts.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>You Were Never Really Here — Joaquin Phoenix's raw intensity anchors the film</title>
      <link>https://deslypeter.com/writing/you-were-never-really-here-2017-review</link>
      <guid>https://deslypeter.com/writing/you-were-never-really-here-2017-review.html?lang=en</guid>
      <description>The film balances brutality with emotional fragility but falters in its narrative complexity, leaving some threads unresolved.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Joe’s trauma is performed with such physicality that his actions feel inevitable rather than chosen. His detachment masks a deep desperation that the script occasionally undercuts with action set pieces. The film leans on Phoenix’s performance to carry its emotional weight, which it does, but not without strain.&lt;/p&gt;&lt;p&gt;The direction uses tight close-ups and erratic pacing to build tension, but it also makes things harder to follow. Scenes jump suddenly between violent moments and quiet reflections, creating a rhythm that feels more like a gut reaction than a plan. This unpredictability can push the viewer away instead of pulling them into Joe’s world.&lt;/p&gt;&lt;p&gt;Phoenix conveys exhaustion without melodrama, grounding the film in a visceral reality. Supporting actors like Ekaterina Samsonov add depth but are often overshadowed by Phoenix&amp;#x27;s intensity. Dialogue is sparse and clipped, which suits the character but limits opportunities for emotional nuance.&lt;/p&gt;&lt;p&gt;The film’s violence starts to feel repetitive, which weakens its effect. Some scenes drag on without a clear point, making it hard to stay engaged. Still, the film’s focus on Joe’s mental state keeps it interesting, even if it’s not fully satisfying.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/You_Were_Never_Really_Here"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2017/you_were_never_really_here.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances brutality with emotional fragility but falters in its narrative complexity, leaving some threads unresolved.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Destroyer — A hollowed-out vengeance</title>
      <link>https://deslypeter.com/writing/destroyer-2018-review</link>
      <guid>https://deslypeter.com/writing/destroyer-2018-review.html?lang=en</guid>
      <description>The film’s emotional core feels distant, even when the character is physically close. Kidman’s performance suggests a deeper well than the material allows.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Destroyer follows a disgraced detective on a revenge mission against a gang that ruined her life. It uses noir elements, but the revenge story doesn’t feel earned or transformative. The pacing is slow, and the emotional stakes aren’t clear or well developed.&lt;/p&gt;&lt;p&gt;The cinematography has a moody look, but it doesn’t really support the story’s emotional heart. Nicole Kidman shows weariness well, but her character’s reasons for acting often feel vague. Her performance is solid, but the script doesn’t give her much to work with.&lt;/p&gt;&lt;p&gt;Toby Kebbell and Tatiana Maslany are in the film but don’t get much to do. Their parts feel more like background pieces than real character moments. Some of the dialogue is awkward, with conversations that don’t feel natural or emotionally charged. The film moves slowly, making it hard to care about the main character’s journey.&lt;/p&gt;&lt;p&gt;The film has a visual style that tries to make the story feel more important, but it doesn’t really connect emotionally. The revenge plot is simple, turning complicated moral choices into just acts of violence. Even though it tries to be ambitious, Destroyer has trouble balancing its mood with real character growth.&lt;/p&gt;&lt;p class="specs-note"&gt;2018 · English. &lt;a href="https://en.wikipedia.org/wiki/Destroyer_(2018_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2018/destroyer.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film’s emotional core feels distant, even when the character is physically close. Kidman’s performance suggests a deeper well than the material allows.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Nest — A family's unraveling under pressure</title>
      <link>https://deslypeter.com/writing/the-nest-2020-review</link>
      <guid>https://deslypeter.com/writing/the-nest-2020-review.html?lang=en</guid>
      <description>The Nest struggles to balance its emotional stakes with a slow-moving structure that dilutes the impact of its central conflict.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film follows a family dealing with money problems and personal doubts, but the tension doesn&amp;#x27;t feel urgent. The characters&amp;#x27; choices are predictable, making their conflicts feel more like practice runs than real-life struggles. The quiet moments don&amp;#x27;t come together into a strong emotional story.&lt;/p&gt;&lt;p&gt;The film uses a lot of quiet, atmospheric scenes, but this can make it feel slow and unengaging. Some scenes drag on without a clear point, and the personal revelations don&amp;#x27;t feel as important as they should. The pacing is slow, and it can be hard to stay interested.&lt;/p&gt;&lt;p&gt;Jude Law and Carrie Coon act well, but their characters don&amp;#x27;t have enough chemistry to hold the story together. Charlie Shotwell and Oona Roche aren&amp;#x27;t given much to do, and their potential isn&amp;#x27;t explored properly. The dialogue is sparse and sometimes makes it harder to connect with the characters emotionally.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s look is atmospheric, but it doesn&amp;#x27;t help the emotional side of the story. There&amp;#x27;s an attempt at depth, but it doesn&amp;#x27;t go far enough because the characters and story aren&amp;#x27;t developed enough. Even though it tries to be serious, The Nest doesn&amp;#x27;t fully commit to the emotional weight of its relationships.&lt;/p&gt;&lt;p class="specs-note"&gt;2020 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Nest_(2020_film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Nest struggles to balance its emotional stakes with a slow-moving structure that dilutes the impact of its central conflict.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Mass — A collision of grief and guilt</title>
      <link>https://deslypeter.com/writing/mass-2021-review</link>
      <guid>https://deslypeter.com/writing/mass-2021-review.html?lang=en</guid>
      <description>The film’s intensity comes from its refusal to offer easy answers, even as the emotional stakes are high. The actors make the tension feel raw and immediate.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two grieving parents meet in a room, each carrying the weight of their son&amp;#x27;s death but unable to fully understand the other’s pain. The film avoids melodrama by keeping dialogue tight and focused on what is said rather than how it is delivered. Fran Kranz builds tension through the quiet spaces between lines, where the unspoken feels heavier than the spoken word.&lt;/p&gt;&lt;p&gt;The film moves slowly, letting the audience sit with the discomfort instead of pushing toward a quick resolution. There are moments where the dialogue feels repetitive, but that repetition makes the shared sorrow feel more trapped. The small room becomes a stage for the emotional clash, with no way to escape the other person&amp;#x27;s presence.&lt;/p&gt;&lt;p&gt;Reed Birney and Martha Plimpton carry the film with restrained performances that avoid histrionics. Ann Dowd and Jason Isaacs bring a simmering unease to their roles, making their characters feel both vulnerable and dangerous. The conversations are layered with subtext, but never so obscure that they become inaccessible or frustrating.&lt;/p&gt;&lt;p&gt;At times, the film relies too much on its tension, which can make the audience feel drained instead of giving them a release. Still, the performances keep the film grounded, making its moral uncertainty feel important and urgent. Mass works by making the audience uncomfortable, showing how grief can be both lonely and connected to others.&lt;/p&gt;&lt;p class="specs-note"&gt;2021 · English. &lt;a href="https://en.wikipedia.org/wiki/Mass_(2021_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2021/mass.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film’s intensity comes from its refusal to offer easy answers, even as the emotional stakes are high. The actors make the tension feel raw and immediate.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Outfit — A tailor's shop becomes a battleground of secrets</title>
      <link>https://deslypeter.com/writing/the-outfit-2022-review</link>
      <guid>https://deslypeter.com/writing/the-outfit-2022-review.html?lang=en</guid>
      <description>The film balances tension and character with uneven success. Mark Rylance carries the weight but cannot fully elevate the script’s weaker moments.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict is built around hidden motives in a confined space, where every interaction feels full of unspoken tension. Mark Rylance plays his role with control and nuance, showing emotion without being obvious. Zoey Deutch and Johnny Flynn add contrast but don’t fully carry the moral uncertainty of their characters.&lt;/p&gt;&lt;p&gt;The dialogue relies on explanation rather than natural tension, which slows down key confrontations. Graham Moore’s direction focuses on tight spaces, but some scenes feel too carefully planned in their timing. The scenes between Rylance and Simon Russell Beale are sharp, with subtext that feels real.&lt;/p&gt;&lt;p&gt;Dylan O&amp;#x27;Brien has a small role but doesn’t find a clear emotional path in the story. Nikki Amuka-Bird adds tension but her character doesn’t fully develop in the end. The script sometimes uses familiar crime ideas instead of offering fresh takes on loyalty and betrayal.&lt;/p&gt;&lt;p&gt;Rylance’s character is interesting, but the film’s structure sometimes focuses more on solving puzzles than on emotional depth. There are moments of real unease, especially in the quieter talks between characters. Despite its flaws, the film stays engaging because of Rylance’s performance and the tense atmosphere.&lt;/p&gt;&lt;p class="specs-note"&gt;2022 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Outfit_(2022_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2022/outfit.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances tension and character with uneven success. Mark Rylance carries the weight but cannot fully elevate the script’s weaker moments.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Dry — A performance that leans too heavily on its own weight</title>
      <link>https://deslypeter.com/writing/the-dry-2020-review</link>
      <guid>https://deslypeter.com/writing/the-dry-2020-review.html?lang=en</guid>
      <description>The Dry's central performance is strong but uneven, with the film's rural tension occasionally undercut by pacing and tonal missteps.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main character&amp;#x27;s frustration feels real, but some key moments don&amp;#x27;t dig deep enough emotionally. The dry setting is reflected in the dialogue, which sometimes falls back on clichés instead of exploring more subtle ideas. The central mystery is interesting, but the ending doesn&amp;#x27;t have enough urgency to feel satisfying.&lt;/p&gt;&lt;p&gt;The direction has trouble balancing the slow build-up with parts that feel rushed or out of place. The music and sound are simple, which leaves some emotional moments feeling underdeveloped. The pacing slows down in the second act, where side stories take attention away from the main conflict.&lt;/p&gt;&lt;p&gt;The main character&amp;#x27;s actions often don&amp;#x27;t have clear reasons behind them, making their choices harder to follow. The supporting actors aren&amp;#x27;t given much to work with, so there&amp;#x27;s little room for nuance or character growth. Some dialogue feels forced, especially in tense scenes that rely too much on explanation.&lt;/p&gt;&lt;p&gt;The film has some tense moments, but it doesn&amp;#x27;t have the emotional heart needed to keep the story moving forward. The setting is used well but doesn&amp;#x27;t really connect to the characters&amp;#x27; motivations or conflicts. Even with its flaws, The Dry has a strong idea that&amp;#x27;s only partly brought to life.&lt;/p&gt;&lt;p class="specs-note"&gt;2020 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Dry_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Dry&amp;#x27;s central performance is strong but uneven, with the film&amp;#x27;s rural tension occasionally undercut by pacing and tonal missteps.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Night House — A house that refuses to let go</title>
      <link>https://deslypeter.com/writing/the-night-house-2020-review</link>
      <guid>https://deslypeter.com/writing/the-night-house-2020-review.html?lang=en</guid>
      <description>The film balances eerie atmosphere with emotional fragility, but its supernatural elements feel underdeveloped compared to the personal grief at its core.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict is a widow&amp;#x27;s struggle to understand her husband&amp;#x27;s final work and its unsettling impact on her psyche. Her isolation is heightened by the house&amp;#x27;s uncanny presence, which seems to respond to her emotional state rather than any clear supernatural logic. The film leans into ambiguity but never fully justifies the haunting as more than a metaphor for unresolved mourning.&lt;/p&gt;&lt;p&gt;The film moves slowly, spending time on quiet moments that build tension without giving clear answers. This slow approach works for creating unease, but it can drag when the supernatural parts don&amp;#x27;t feel clearly defined. The visuals focus on shadows and silence, matching the main character&amp;#x27;s emotional distance from the world around her.&lt;/p&gt;&lt;p&gt;Rebecca Hall conveys vulnerability with subtle restraint, making her grief feel personal rather than performative. Supporting actors provide necessary tension but lack fully realized roles that could anchor the film’s supernatural framework. Dialogue often feels sparse, which suits the mood but leaves gaps in character motivations and relationships.&lt;/p&gt;&lt;p&gt;The film has a strong emotional heart, but the supernatural parts don&amp;#x27;t feel fully worked out or consistent. It does well as a thoughtful look at grief, but it struggles when trying to keep up a ghostly mystery. Even with its flaws, The Night House gives a moving look at loss that stays with you longer than its horror parts ever could.&lt;/p&gt;&lt;p class="specs-note"&gt;2020 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Night_House"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2021/night_house.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances eerie atmosphere with emotional fragility, but its supernatural elements feel underdeveloped compared to the personal grief at its core.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Resurrection — A woman's grip on reality frays</title>
      <link>https://deslypeter.com/writing/resurrection-2022-review</link>
      <guid>https://deslypeter.com/writing/resurrection-2022-review.html?lang=en</guid>
      <description>The film leans too heavily on its own tension, but the central conflict is compelling enough to keep it from falling entirely apart.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Margaret&amp;#x27;s conflict with her ex-boyfriend&amp;#x27;s return is tense, but the emotional stakes don&amp;#x27;t feel fully explored. The story moves slowly, creating an uneasy mood that sometimes feels more like atmosphere than a clear purpose. There&amp;#x27;s a sense of danger in Margaret&amp;#x27;s life, but not enough depth to justify the tension that lingers for so long.&lt;/p&gt;&lt;p&gt;The direction keeps scenes tight, but it often sacrifices emotional depth or character growth. Suspense moments are let down by predictable pacing and clichéd setups that make them feel less impactful. The film&amp;#x27;s structure feels repetitive, like it&amp;#x27;s going in circles without really moving forward.&lt;/p&gt;&lt;p&gt;Rebecca Hall does a good job showing Margaret&amp;#x27;s fear, but the role doesn&amp;#x27;t give her much to work with. The supporting actors help build the uneasy tone, but their characters aren&amp;#x27;t given much to do. The dialogue sometimes feels forced, like it&amp;#x27;s more about creating tension than revealing real people.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s biggest problem is that it depends too much on suspense without giving the audience a real emotional connection. It tries to explore themes like control and trauma, but they don&amp;#x27;t get much of a chance to develop. Even with its flaws, the tension keeps viewers watching, even if the film doesn&amp;#x27;t quite earn its own existence.&lt;/p&gt;&lt;p class="specs-note"&gt;2022 · English. &lt;a href="https://en.wikipedia.org/wiki/Resurrection_(2022_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2022/resurrection.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans too heavily on its own tension, but the central conflict is compelling enough to keep it from falling entirely apart.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Watcher — A domestic tension that never fully escalates</title>
      <link>https://deslypeter.com/writing/watcher-2022-review</link>
      <guid>https://deslypeter.com/writing/watcher-2022-review.html?lang=en</guid>
      <description>The film leans on uneasy moments but lacks the emotional depth to make them truly unsettling or memorable.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film follows a woman&amp;#x27;s growing suspicion of her new neighbor, but the central conflict doesn&amp;#x27;t get enough attention or emotional weight. The dialogue feels forced, and it&amp;#x27;s hard to feel the tension or personal stakes between characters. The film tries to build suspense with small, confusing moments, but they don&amp;#x27;t come together into a strong story.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s pacing is all over the place, with long, slow parts that make the tense moments less effective. The visuals rely on hints rather than clear storytelling, which can leave the audience feeling disconnected. The structure doesn&amp;#x27;t balance the film&amp;#x27;s atmosphere with a satisfying ending or character growth.&lt;/p&gt;&lt;p&gt;Maika Monroe gives a performance that&amp;#x27;s emotionally reserved but doesn&amp;#x27;t give the story enough depth. Karl Glusman and Burn Gorman are in the film, but their characters don&amp;#x27;t get much development or leave a strong impression. The script struggles to give the characters clear reasons for their actions or make their interactions feel important.&lt;/p&gt;&lt;p&gt;The film tries to create psychological tension, but it doesn&amp;#x27;t really connect with the audience emotionally. The ambiguity hurts the film&amp;#x27;s impact, leaving too much unresolved without a satisfying ending. Despite its goals, Watcher feels like it didn&amp;#x27;t fully explore the themes of paranoia and isolation it was aiming for.&lt;/p&gt;&lt;p class="specs-note"&gt;2022 · English. &lt;a href="https://en.wikipedia.org/wiki/Watcher_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2022/watcher.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on uneasy moments but lacks the emotional depth to make them truly unsettling or memorable.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Speak No Evil — A quiet fear that grows louder</title>
      <link>https://deslypeter.com/writing/speak-no-evil-2024-review</link>
      <guid>https://deslypeter.com/writing/speak-no-evil-2024-review.html?lang=en</guid>
      <description>The film leans on unease but lacks the emotional or narrative depth to sustain it. It suggests tension without fully committing to its own logic.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main problem is a family slowly realizing something is wrong, but it&amp;#x27;s never clear why or what that means. There&amp;#x27;s a feeling of anxiety, but nothing really escalates into real horror. The characters seem confused instead of scared, which makes the tension feel weak.&lt;/p&gt;&lt;p&gt;The film moves slowly, but not in a way that makes you think—it just feels lost. There are some uncomfortable moments, but they don’t add up to a clear story. It ends with more questions than answers, but not much to really think about.&lt;/p&gt;&lt;p&gt;The acting is low-key but doesn’t feel urgent enough for the situation. The dialogue is sparse and often feels forced, making it hard to trust the characters or the story. Something feels off, but it never really becomes scary or memorable.&lt;/p&gt;&lt;p&gt;The film never fully explains what it’s trying to do, which makes it feel unfinished. It hints at bigger ideas but doesn’t explore them enough to matter. Even with its flaws, the quiet creepiness sticks around just long enough to be mildly effective.&lt;/p&gt;&lt;p class="specs-note"&gt;2024 · English. &lt;a href="https://en.wikipedia.org/wiki/Speak_No_Evil_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2024/speak_no_evil.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on unease but lacks the emotional or narrative depth to sustain it. It suggests tension without fully committing to its own logic.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Rebel Ridge — A performance that leans into its own limitations</title>
      <link>https://deslypeter.com/writing/rebel-ridge-2024-review</link>
      <guid>https://deslypeter.com/writing/rebel-ridge-2024-review.html?lang=en</guid>
      <description>The film’s tension is undercut by uneven pacing, but the central performance carries it through with a raw, unpolished energy.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The protagonist&amp;#x27;s frustration feels real, even when the plot becomes repetitive and predictable. There&amp;#x27;s a sense of desperation that keeps the character grounded, even when the script falters. The dialogue relies on repetition rather than revelation, which weakens its impact over time.&lt;/p&gt;&lt;p&gt;The direction keeps tension high in short bursts but struggles to maintain momentum in longer scenes. The story&amp;#x27;s framing gives it urgency, even when the stakes feel unclear or inconsistent. The lack of resolution feels like an oversight rather than a deliberate choice, leaving some questions unanswered.&lt;/p&gt;&lt;p&gt;The performance is compelling enough to keep viewers engaged despite the narrative’s flaws. There are moments where the character&amp;#x27;s emotions feel genuine and unforced, adding depth to their struggle. The supporting cast provides little contrast or relief, making the protagonist’s journey feel more isolated than it should be.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s structure sometimes feels like a gimmick rather than a meaningful storytelling device. It never fully justifies its rhythm or pacing choices. Still, the central performance offers enough emotional weight to make the flaws forgivable, if not entirely satisfying.&lt;/p&gt;&lt;p class="specs-note"&gt;2024 · English. &lt;a href="https://en.wikipedia.org/wiki/Rebel_Ridge_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2024/rebel_ridge.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film’s tension is undercut by uneven pacing, but the central performance carries it through with a raw, unpolished energy.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Juror #2 — A courtroom becomes a trap for the mind</title>
      <link>https://deslypeter.com/writing/juror-2-2024-review</link>
      <guid>https://deslypeter.com/writing/juror-2-2024-review.html?lang=en</guid>
      <description>The film leans on tension but lacks the emotional core to make its moral dilemmas feel urgent or personal.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Juror #2 unfolds in a stifling atmosphere where every pause feels like a betrayal of truth. The central conflict hinges on questioning a single witness, yet the stakes never fully crystallize. The dialogue often leans on repetition rather than revelation, making the tension feel rehearsed.&lt;/p&gt;&lt;p&gt;The direction keeps the setting tight but doesn&amp;#x27;t use the space well to build psychological pressure. There&amp;#x27;s an attempt at moral complexity, but it stays abstract without clear emotional grounding. Pacing drags in the middle, slowing the momentum of what could have been a gripping debate.&lt;/p&gt;&lt;p&gt;Performances are competent but lack the urgency needed to elevate the material. The lead carries the weight of doubt, yet their internal conflict feels underexplored and underplayed. Supporting actors contribute little beyond surface tension, leaving gaps in the emotional stakes.&lt;/p&gt;&lt;p&gt;There is potential for deeper exploration of guilt and responsibility, but it remains unfulfilled. The film’s structure leans on suspense without providing enough payoff to justify its setup. It offers a familiar moral question but lacks the originality or depth to make it feel fresh or urgent.&lt;/p&gt;&lt;p class="specs-note"&gt;2024 · English. &lt;a href="https://en.wikipedia.org/wiki/Juror_%232_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on tension but lacks the emotional core to make its moral dilemmas feel urgent or personal.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Conclave — A locked room with no escape</title>
      <link>https://deslypeter.com/writing/conclave-2024-review</link>
      <guid>https://deslypeter.com/writing/conclave-2024-review.html?lang=en</guid>
      <description>The film walks a tightrope between suspense and tedium, mixing tricky moral choices with a strict, step-by-step process.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The conclave is cut off from the outside world, making the characters face their secrets and ambitions head-on. Their reasons for being there are complicated but rarely fully spelled out, which gives you something to think about but can also leave you confused. The ending doesn&amp;#x27;t tie everything up neatly, which might not sit well with people who want clear answers.&lt;/p&gt;&lt;p&gt;The film moves slowly, making you feel the pressure of each decision made in secret. Long talks take over, and the tension comes from what&amp;#x27;s not said as much as what is. This style might turn off people who like stories that get straight to the point and lay out the stakes clearly.&lt;/p&gt;&lt;p&gt;Performances are restrained but effective, allowing the characters&amp;#x27; internal conflicts to surface subtly. The dialogue often leans on subtext, requiring viewers to read between lines for full understanding. There is a strong emphasis on moral ambiguity, which grounds the film in realism rather than melodrama.&lt;/p&gt;&lt;p&gt;But the plot&amp;#x27;s complexity might be too much for people who don&amp;#x27;t know much about how the conclave works. The film&amp;#x27;s refusal to simplify its themes gives it depth but also asks a lot of the audience. Even with its flaws, it manages to create a tense, absorbing mood that stays with you after it&amp;#x27;s over.&lt;/p&gt;&lt;p class="specs-note"&gt;2024 · English. &lt;a href="https://en.wikipedia.org/wiki/Conclave_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2024/conclave.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film walks a tightrope between suspense and tedium, mixing tricky moral choices with a strict, step-by-step process.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Brutalist — A slow-burn confrontation with time</title>
      <link>https://deslypeter.com/writing/the-brutalist-2024-review</link>
      <guid>https://deslypeter.com/writing/the-brutalist-2024-review.html?lang=en</guid>
      <description>The Brutalist balances emotional weight and architectural symbolism, but its deliberate pace risks alienating some viewers.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict is a man&amp;#x27;s struggle to reconcile his past with an uncertain future, all while physically isolated in a remote setting. His internal turmoil is conveyed through long silences and sparse dialogue that emphasize the emotional distance between him and others. The film leans on its environment as both character and obstacle, without ever fully explaining its symbolic role.&lt;/p&gt;&lt;p&gt;The film uses stillness to build tension, but it also stretches quiet moments longer than they feel natural. The slow pace makes you wait for answers that might not come, which can make you think but also feel like the film is being indulgent when the emotional stakes aren&amp;#x27;t clear.&lt;/p&gt;&lt;p&gt;The lead actor conveys vulnerability through subtle expressions and restrained gestures, avoiding melodrama. His performance anchors the film&amp;#x27;s abstract themes in personal struggle, making the philosophical elements more accessible. Supporting characters remain underdeveloped, their roles defined by their relationship to the protagonist rather than their own motivations.&lt;/p&gt;&lt;p&gt;The film handles its main character&amp;#x27;s despair with quiet dignity, not trying to make it dramatic for effect. The slow rhythm might test your patience, but it also rewards people who can sit with the discomfort of not knowing. In the end, it works as a thoughtful look at isolation, even if how much it affects you depends on how willing you are to go along with its slow pace.&lt;/p&gt;&lt;p class="specs-note"&gt;2024 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Brutalist_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2024/brutalist.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Brutalist balances emotional weight and architectural symbolism, but its deliberate pace risks alienating some viewers.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Challengers — Three people, one relationship</title>
      <link>https://deslypeter.com/writing/challengers-2024-review</link>
      <guid>https://deslypeter.com/writing/challengers-2024-review.html?lang=en</guid>
      <description>The film leans on its actors' chemistry but struggles to balance the romantic and competitive arcs with consistent emotional clarity.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A tennis match becomes a metaphor for a love triangle that never fully resolves into satisfying conflict or resolution. Zendaya&amp;#x27;s character feels caught between past and present, but her motivations remain inconsistently defined. The film&amp;#x27;s structure attempts to mirror the game&amp;#x27;s back-and-forth nature, yet the emotional stakes often feel secondary to the narrative gimmicks.&lt;/p&gt;&lt;p&gt;Luca Guadagnino&amp;#x27;s direction emphasizes visual rhythm, but the pacing falters when shifting between scenes of competition and introspection. The tennis court becomes a stage for emotional tension, though the transitions between match sequences and personal moments are uneven. The film tries to blend humor with heartache, but the comedic elements occasionally undercut its more serious ambitions.&lt;/p&gt;&lt;p&gt;Zendaya delivers a grounded performance, but her character&amp;#x27;s internal conflict lacks the depth needed to anchor the story&amp;#x27;s complexity. Mike Faist and Josh O&amp;#x27;Connor bring charm to their roles, yet their characters&amp;#x27; emotional arcs are underdeveloped and underexplored. Dialogue often feels performative, with lines that prioritize romantic tension over organic conversation.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s central premise is intriguing but never fully realized in its execution or emotional payoff. It leans on the actors&amp;#x27; chemistry to carry the weight of an underwritten script and unresolved conflicts. Despite its flaws, the film offers a visually appealing and emotionally resonant look at love, loss, and competition.&lt;/p&gt;&lt;p class="specs-note"&gt;2024 · English. &lt;a href="https://en.wikipedia.org/wiki/Challengers_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2024/challengers.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its actors&amp;#x27; chemistry but struggles to balance the romantic and competitive arcs with consistent emotional clarity.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Holdovers — Paul Giamatti's weary charm anchors the film's emotional core.</title>
      <link>https://deslypeter.com/writing/the-holdovers-2023-review</link>
      <guid>https://deslypeter.com/writing/the-holdovers-2023-review.html?lang=en</guid>
      <description>The Holdovers balances humor and melancholy with precision, though its quieter moments occasionally feel underdeveloped compared to its stronger comedic beats.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A teacher stranded with students over winter break creates a situation ripe for both conflict and connection. The film leans on the strained but oddly warm dynamic between three mismatched characters. Paul Giamatti&amp;#x27;s performance gives the story a steady emotional foundation.&lt;/p&gt;&lt;p&gt;The dialogue sounds natural, with dry humor that fits the setting. Scenes move slowly, giving time for observation and character growth. The film repeats situations, which can feel a bit predictable during quieter parts.&lt;/p&gt;&lt;p&gt;Paul Giamatti brings gravitas to a role that could easily be played for caricature. Da&amp;#x27;Vine Joy Randolph&amp;#x27;s presence elevates the comedy without overshadowing the drama. Dominic Sessa’s performance captures the awkwardness of adolescence with nuance.&lt;/p&gt;&lt;p&gt;The humor feels natural, even in the film&amp;#x27;s silliest moments. Some character reasons aren&amp;#x27;t fully explained, making certain emotional moments feel a bit loose. Still, the film is a thoughtful look at loneliness and how people connect.&lt;/p&gt;&lt;p class="specs-note"&gt;2023 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Holdovers"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2023/holdovers.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Holdovers balances humor and melancholy with precision, though its quieter moments occasionally feel underdeveloped compared to its stronger comedic beats.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>American Fiction — A satire that leans on its own weight</title>
      <link>https://deslypeter.com/writing/american-fiction-2023-review</link>
      <guid>https://deslypeter.com/writing/american-fiction-2023-review.html?lang=en</guid>
      <description>The film has a sharp, witty style but also feels empty in parts. It shows the limits of its self-aware humor and doesn't fully commit to its own critique.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main conflict is about a writer struggling with identity, but the tone keeps shifting between irony and sincerity without a clear direction. The protagonist&amp;#x27;s frustration feels real, but the story often weakens it with sudden mood changes that make the emotional stakes harder to follow. The humor is sharp and timely, but the film&amp;#x27;s bigger ideas don&amp;#x27;t always match up with how it&amp;#x27;s put together.&lt;/p&gt;&lt;p&gt;The film moves quickly through its satirical parts, but it slows down when trying to explore deeper character emotions. Sometimes the dialogue feels forced, like the characters are more focused on making jokes than exploring their feelings. The clever premise keeps the audience interested, but the film has trouble keeping its emotional focus consistent.&lt;/p&gt;&lt;p&gt;The acting is good, but no one really holds the film together when its mood or themes change. The protagonist&amp;#x27;s inner conflict is suggested but not explored in much depth. The supporting characters do their jobs well but often feel like they&amp;#x27;re just there to deliver jokes rather than being fully developed people.&lt;/p&gt;&lt;p&gt;The film tries to critique consumerism and identity, but it feels a bit disconnected from its own message. The humor works best when it&amp;#x27;s based on real situations rather than big ideas about culture. Even with its flaws, it&amp;#x27;s still an enjoyable, if a bit uneven, look at modern storytelling and self-identity.&lt;/p&gt;&lt;p class="specs-note"&gt;2023 · English. &lt;a href="https://en.wikipedia.org/wiki/American_Fiction_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2023/american_fiction.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film has a sharp, witty style but also feels empty in parts. It shows the limits of its self-aware humor and doesn&amp;#x27;t fully commit to its own critique.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>May December — A fractured past, a rehearsed present</title>
      <link>https://deslypeter.com/writing/may-december-2023-review</link>
      <guid>https://deslypeter.com/writing/may-december-2023-review.html?lang=en</guid>
      <description>The film balances its moral tension with careful restraint but leans too often on familiar tropes to carry the emotional weight.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story follows a tense relationship rooted in a crime from decades ago. It reveals details slowly, avoiding direct explanations. This slow reveal creates unease but also makes it harder to get invested early on. The main conflict is about different views of the same event, with little room for uncertainty or a clear ending.&lt;/p&gt;&lt;p&gt;The film focuses on quiet moments rather than confrontations, making the drama feel more like it&amp;#x27;s being watched than urgently unfolding. The dialogue is sharp but not very surprising, often repeating past conversations rather than offering fresh insights. Some scenes feel slow, making the emotional stakes feel far away even though the subject is heavy.&lt;/p&gt;&lt;p&gt;The acting is controlled and professional but lacks the raw emotion needed to fully explore the characters&amp;#x27; moral complexity. There are hints of deeper layers, but they&amp;#x27;re not explored confidently or clearly. The film&amp;#x27;s restraint is its strength, but it also limits how emotionally involved the audience can become.&lt;/p&gt;&lt;p&gt;The film tries to be nuanced, but it sometimes feels like an intellectual exercise rather than a real experience. The moral uncertainty is interesting in theory but not well developed, leaving little room for real conflict or resolution. Even with its flaws, it&amp;#x27;s thoughtful about memory and responsibility, even if it doesn&amp;#x27;t fully work through its own tensions.&lt;/p&gt;&lt;p class="specs-note"&gt;2023 · English. &lt;a href="https://en.wikipedia.org/wiki/May_December_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2023/may_december.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances its moral tension with careful restraint but leans too often on familiar tropes to carry the emotional weight.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>All of Us Strangers — A house that refuses to let go</title>
      <link>https://deslypeter.com/writing/all-of-us-strangers-2023-review</link>
      <guid>https://deslypeter.com/writing/all-of-us-strangers-2023-review.html?lang=en</guid>
      <description>The film balances emotional intimacy with eerie detachment, but its quiet melancholy occasionally softens the weight of its central conflict.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The protagonist returns to their childhood home, where past and present mix without clear answers. Memories pop up in pieces, making it hard to tell what&amp;#x27;s real and what&amp;#x27;s imagined. The film doesn&amp;#x27;t try to sort it all out, which feels purposeful but can also be annoying.&lt;/p&gt;&lt;p&gt;The film moves slowly but with purpose, letting quiet moments carry emotion. The visuals hint at something lingering without spelling it out, keeping the audience on edge. This works best when it mirrors the protagonist&amp;#x27;s inner turmoil rather than the plot.&lt;/p&gt;&lt;p&gt;Performances are understated but effective, conveying grief and longing through subtle gestures and pauses. Dialogue is sparse, focusing on what is left unsaid as much as what is spoken. The film risks feeling emotionally distant due to its restrained approach, though this may be intentional.&lt;/p&gt;&lt;p&gt;The main conflict stays personal, which might not connect with everyone. The use of space and silence leaves a lasting mood even when the story doesn&amp;#x27;t fully wrap up. It has its flaws, but its quiet strength comes from being okay with uncertainty instead of chasing answers.&lt;/p&gt;&lt;p class="specs-note"&gt;2023 · English. &lt;a href="https://en.wikipedia.org/wiki/All_of_Us_Strangers_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2023/all_of_us_strangers.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances emotional intimacy with eerie detachment, but its quiet melancholy occasionally softens the weight of its central conflict.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Whale — A father's guilt and isolation</title>
      <link>https://deslypeter.com/writing/the-whale-2022-review</link>
      <guid>https://deslypeter.com/writing/the-whale-2022-review.html?lang=en</guid>
      <description>The Whale balances emotional complexity with its protagonist’s physicality, but the narrative occasionally leans too heavily on its own weight.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central tension lies in a man’s struggle to reconnect with his daughter while battling personal demons and self-destruction. His isolation is both literal and emotional, shaping every interaction with a sense of inevitability. The film never shies away from the raw, uncomfortable moments that define its protagonist’s existence.&lt;/p&gt;&lt;p&gt;The film takes its time, often holding on silence or stillness to show what&amp;#x27;s going on inside the character. It can feel slow or self-indulgent, focusing more on mood than moving the story forward. Still, the direction keeps a steady tone that matches the character&amp;#x27;s inner life.&lt;/p&gt;&lt;p&gt;Brendan Fraser delivers a physically and emotionally demanding performance, conveying vulnerability without melodrama. His portrayal captures the fragility of a man clinging to hope in a world that has long since turned away. Sadie Sink brings a quiet strength to her role, balancing anger with yearning in their strained relationship.&lt;/p&gt;&lt;p&gt;The dialogue sometimes feels forced, like it&amp;#x27;s written for drama rather than real conversation. Some scenes push the emotional stakes too far, making them feel fake or unnecessary. The film&amp;#x27;s message about redemption and forgiveness is heartfelt, but it can get lost in how heavy it feels.&lt;/p&gt;&lt;p class="specs-note"&gt;2022 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Whale_(2022_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2022/whale.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Whale balances emotional complexity with its protagonist’s physicality, but the narrative occasionally leans too heavily on its own weight.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Lost Daughter — A mother's unraveling in a foreign land</title>
      <link>https://deslypeter.com/writing/the-lost-daughter-2021-review</link>
      <guid>https://deslypeter.com/writing/the-lost-daughter-2021-review.html?lang=en</guid>
      <description>The film balances introspection with emotional distance, but the pacing occasionally softens its impact. Olivia Colman carries the weight without melodrama.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Olivia Colman’s performance is measured, capturing frustration and detachment without relying on histrionics. The script gives her character moments of clarity that feel earned rather than forced. Jessie Buckley plays a younger version with raw urgency, contrasting Colman’s restrained portrayal.&lt;/p&gt;&lt;p&gt;Maggie Gyllenhaal’s direction uses silence and stillness, but it can slow things down. Some scenes feel too long without enough tension, making the emotional parts feel distant or delayed. The dialogue focuses more on what characters are thinking than on direct conflict, which fits the story but can make things feel passive.&lt;/p&gt;&lt;p&gt;Dakota Johnson appears briefly as a daughter, offering warmth but limited depth in her role. Paul Mescal’s presence adds a quiet complexity to a subplot involving another mother’s struggle. The film’s structure moves between past and present, but transitions can feel abrupt or disconnected.&lt;/p&gt;&lt;p&gt;The film tries to show female frustration without making it seem dramatic or exploitative. But some quiet moments feel too abstract, making it hard to connect emotionally. Still, Colman’s performance keeps the film focused on real human feelings rather than just ideas.&lt;/p&gt;&lt;p class="specs-note"&gt;2021 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Lost_Daughter_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2021/lost_daughter.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances introspection with emotional distance, but the pacing occasionally softens its impact. Olivia Colman carries the weight without melodrama.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Souvenir — A slow-burn reflection on art and life</title>
      <link>https://deslypeter.com/writing/the-souvenir-2019-review</link>
      <guid>https://deslypeter.com/writing/the-souvenir-2019-review.html?lang=en</guid>
      <description>The Souvenir balances personal struggle with artistic ambition, but its quiet pacing risks underwhelming the audience with emotional distance.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film captures a young woman&amp;#x27;s journey through film school, entwined with personal loss and romantic uncertainty. It leans into introspection rather than external conflict, which may leave some viewers wanting more narrative drive. Joanna Hogg’s direction emphasizes mood over action, creating an atmosphere of melancholy and self-discovery.&lt;/p&gt;&lt;p&gt;The slow rhythm gives the film a thoughtful feel, but some scenes drag. Honor Swinton Byrne handles the emotional parts with quiet control, keeping things grounded even when the story could turn melodramatic. Tom Burke brings tension to the romance without going over the top, keeping it realistic.&lt;/p&gt;&lt;p&gt;Tilda Swinton and Richard Ayoade appear briefly but contribute to the film&amp;#x27;s layered sense of identity and legacy. Dialogue is sparse yet meaningful, often focusing on internal thoughts rather than direct confrontation. The lack of clear resolution may frustrate some, as the narrative leans more toward suggestion than closure.&lt;/p&gt;&lt;p&gt;Even with its slow pace, the film keeps a steady emotional thread through the main character&amp;#x27;s journey. Its semi-autobiographical roots make it feel real but also narrow its appeal to people who know Hogg&amp;#x27;s work. It&amp;#x27;s more about creating a mood than telling a complete story, which might not satisfy everyone.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Souvenir"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2019/souvenir.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Souvenir balances personal struggle with artistic ambition, but its quiet pacing risks underwhelming the audience with emotional distance.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>I'm Thinking of Ending Things — A mind wandering without direction</title>
      <link>https://deslypeter.com/writing/i-m-thinking-of-ending-things-2020-review</link>
      <guid>https://deslypeter.com/writing/i-m-thinking-of-ending-things-2020-review.html?lang=en</guid>
      <description>The film's structure resists clarity, but its emotional core remains accessible. The central relationship feels real despite the abstract framing.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story comes in pieces, like the main character&amp;#x27;s own thoughts. There&amp;#x27;s a feeling of not knowing what&amp;#x27;s going on, even when people are talking. What&amp;#x27;s said doesn&amp;#x27;t always match what&amp;#x27;s really going on. The same worries come up again and again, hinting at bigger problems underneath.&lt;/p&gt;&lt;p&gt;The film moves slowly, letting quiet moments speak as loudly as words. Visuals show what&amp;#x27;s going on inside without spelling it out. The strange parts don&amp;#x27;t get in the way of the main relationship - they just make everything feel more uncertain.&lt;/p&gt;&lt;p&gt;Jesse Plemons and Jessie Buckley navigate their roles with a careful restraint that avoids melodrama. Their performances suggest longing and hesitation, even when the situation is unclear. Toni Collette and David Thewlis add layers of unease through subtle shifts in tone and expression.&lt;/p&gt;&lt;p&gt;The strange style sometimes makes it harder to feel what&amp;#x27;s going on. Some scenes feel more like artistic choices than they do story needs. But even with that, the film shows a delicate kind of connection in the middle of all the uncertainty.&lt;/p&gt;&lt;p class="specs-note"&gt;2020 · English. &lt;a href="https://en.wikipedia.org/wiki/I%2527m_Thinking_of_Ending_Things"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2020/im_thinking_of_ending_things.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s structure resists clarity, but its emotional core remains accessible. The central relationship feels real despite the abstract framing.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Wonder — A girl's silence becomes a test of truth</title>
      <link>https://deslypeter.com/writing/the-wonder-2022-review</link>
      <guid>https://deslypeter.com/writing/the-wonder-2022-review.html?lang=en</guid>
      <description>The Wonder mixes moral questions with emotional control, but its slow pace might push the audience away from its main mystery.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film follows an English nurse investigating a young Irish girl who says she lives without eating, bringing up themes of faith and lies. Florence Pugh plays the nurse, who&amp;#x27;s supposed to watch the girl closely, but her own doubts aren&amp;#x27;t given much room to grow. The dialogue often feels like it&amp;#x27;s written for a debate rather than real conversations between people trying to understand each other.&lt;/p&gt;&lt;p&gt;The film uses a lot of quiet moments, which can work but also makes the emotional tension feel far away. Some scenes drag with pauses that don&amp;#x27;t always help the story move forward or reveal much about the characters. Even with its slow rhythm, the film keeps its main question about belief and truth in focus.&lt;/p&gt;&lt;p&gt;Florence Pugh gives a controlled performance, but the script doesn&amp;#x27;t give her much room to show different emotions. Tom Burke plays a local priest with quiet confidence, but his lines often feel more like explanations than real feelings. Niamh Algar plays the girl with restraint, which works but leaves some of her inner struggles unclear.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s biggest problem is that it doesn&amp;#x27;t fully choose a side in its moral question. This uncertainty might frustrate people who want a clear answer or emotional satisfaction. Still, The Wonder is a thoughtful look at doubt and the cost of being sure, even if it doesn&amp;#x27;t always deliver the tension it promises.&lt;/p&gt;&lt;p class="specs-note"&gt;2022 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Wonder_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2022/wonder.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Wonder mixes moral questions with emotional control, but its slow pace might push the audience away from its main mystery.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>She Said — A race against time and silence</title>
      <link>https://deslypeter.com/writing/she-said-2022-review</link>
      <guid>https://deslypeter.com/writing/she-said-2022-review.html?lang=en</guid>
      <description>The film balances urgency with restraint, but its emotional core is sometimes overshadowed by the weight of real events.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two journalists uncover a pattern of abuse, but their own exhaustion and institutional resistance shape the stakes. The pressure to act quickly creates tension, even as the story unfolds in measured beats. Carey Mulligan and Zoe Kazan navigate the emotional terrain with precision, though their roles feel constrained by real-world expectations.&lt;/p&gt;&lt;p&gt;The direction keeps scenes tight, but some moments lack the raw energy needed to match the subject&amp;#x27;s gravity. Dialogue leans on exposition rather than revealing character through conflict or vulnerability. The pacing is deliberate, yet certain sequences lag under the burden of historical context.&lt;/p&gt;&lt;p&gt;Carey Mulligan conveys determination without overreaching, while Zoe Kazan adds nuance to her role as a driven reporter. Patricia Clarkson and Andre Braugher offer strong support, but their scenes are often filtered through the film&amp;#x27;s cautionary tone. The script relies on dialogue that feels rehearsed rather than spontaneous, limiting emotional immediacy.&lt;/p&gt;&lt;p&gt;Some sequences feel like dramatized news reports rather than a personal journey of discovery. The film’s restraint is its strength, but it also leaves room for underdeveloped subplots. Despite its flaws, the central mission—exposing abuse—remains compelling and urgent.&lt;/p&gt;&lt;p class="specs-note"&gt;2022 · English. &lt;a href="https://en.wikipedia.org/wiki/She_Said_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2022/she_said.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances urgency with restraint, but its emotional core is sometimes overshadowed by the weight of real events.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Official Secrets — A whistleblower's moral dilemma</title>
      <link>https://deslypeter.com/writing/official-secrets-2019-review</link>
      <guid>https://deslypeter.com/writing/official-secrets-2019-review.html?lang=en</guid>
      <description>The film balances political tension with emotional stakes but struggles to fully commit to its own urgency or consequence.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Keira Knightley holds the central conflict with quiet determination, but her character&amp;#x27;s choices feel passive. The script relies on exposition instead of building tension naturally, which weakens the moral weight of the whistleblower&amp;#x27;s actions. Katharine Gun&amp;#x27;s internal struggle is clear but not fully explored, leaving some emotional depth untouched.&lt;/p&gt;&lt;p&gt;Gavin Hood&amp;#x27;s direction keeps the film grounded but avoids taking risks with the story&amp;#x27;s structure or pacing. The dialogue often feels like a summary of events rather than natural conversations. There&amp;#x27;s a clear rhythm to the scenes, but the tone and intensity don&amp;#x27;t change much.&lt;/p&gt;&lt;p&gt;Knightley&amp;#x27;s performance is steady but lacks the raw emotion needed to fully convince as a whistleblower. The supporting actors do well, but their roles are limited by the film&amp;#x27;s cautious approach. The tension between duty and conscience is there but not deeply examined in the script.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s focus on real events makes it feel more like a documentary than a narrative feature. It tries to highlight the ethical complexities of whistleblowing, but the pacing and tone keep it from fully engaging with those themes.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/Official_Secrets_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances political tension with emotional stakes but struggles to fully commit to its own urgency or consequence.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Dark Waters — A legal battle with moral weight</title>
      <link>https://deslypeter.com/writing/dark-waters-2019-review</link>
      <guid>https://deslypeter.com/writing/dark-waters-2019-review.html?lang=en</guid>
      <description>The film balances courtroom tension with personal stakes, but its pacing occasionally softens the urgency of the real-life case it dramatizes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Dark Waters centers on a lawyer&amp;#x27;s fight against a powerful corporation, grounding its drama in real-world environmental injustice. The legal process is portrayed with careful detail, though some procedural moments feel drawn out rather than urgent. Mark Ruffalo’s portrayal captures the quiet determination of someone driven by principle rather than personal gain.&lt;/p&gt;&lt;p&gt;The film moves at a steady pace, focusing on the patience and persistence needed to win a tough case. Anne Hathaway gives a strong performance as a colleague who pushes the main character to rethink what justice really means. The courtroom scenes are well-put together but don’t have the big dramatic moments you might expect from a legal thriller.&lt;/p&gt;&lt;p&gt;Ruffalo conveys frustration without melodrama, keeping the character grounded in his moral convictions. Supporting actors like Tim Robbins and Bill Camp provide measured performances that reinforce the film’s somber mood. Dialogue is precise but rarely surprising, focusing more on exposition than emotional revelation.&lt;/p&gt;&lt;p&gt;The real-life story behind the film is strong, but the movie sometimes slows down during quieter scenes. The story clearly shows the importance of doing what’s right, even if that message doesn’t always come through clearly in every moment. Despite some pacing problems, the film does a good job of bringing attention to a serious environmental issue.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/Dark_Waters_(2019_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2019/dark_waters.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances courtroom tension with personal stakes, but its pacing occasionally softens the urgency of the real-life case it dramatizes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Richard Jewell — A man's life unravels through public suspicion</title>
      <link>https://deslypeter.com/writing/richard-jewell-2019-review</link>
      <guid>https://deslypeter.com/writing/richard-jewell-2019-review.html?lang=en</guid>
      <description>The film balances factual detail with emotional stakes, though its tone occasionally softens the real-world consequences of media bias.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict is Richard Jewell’s sudden shift from hero to suspect, driven by media and law enforcement missteps. His actions are clear, but the world around him becomes increasingly hostile without a clear resolution. The film does not shy away from the real-life damage caused by misinformation and public judgment.&lt;/p&gt;&lt;p&gt;The film moves at a steady pace but focuses more on explaining events than building tension. The visuals stay calm, avoiding dramatic flair that might change how the real story is seen. The script uses dialogue to show how the media worked, rather than using scenes to demonstrate its effects.&lt;/p&gt;&lt;p&gt;Paul Walter Hauser conveys quiet desperation without overacting, making Jewell’s confusion relatable. Sam Rockwell and Kathy Bates bring sharpness to their roles as media figures, though their performances feel slightly rehearsed. Jon Hamm and Olivia Wilde add layers of professional detachment that highlight the coldness of the system.&lt;/p&gt;&lt;p&gt;The film sometimes puts historical facts ahead of emotional impact. Some scenes stretch out time to show how alone Jewell felt, rather than showing how he changed. Even with these issues, it&amp;#x27;s still a thoughtful look at how fear and misunderstanding can hide the truth.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/Richard_Jewell_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2019/richard_jewell.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances factual detail with emotional stakes, though its tone occasionally softens the real-world consequences of media bias.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Report — A bureaucratic battle with real-world stakes</title>
      <link>https://deslypeter.com/writing/the-report-2019-review</link>
      <guid>https://deslypeter.com/writing/the-report-2019-review.html?lang=en</guid>
      <description>The Report balances procedural detail with emotional weight but falters in its final act. Adam Driver anchors the film, though the script sometimes undercuts his urgency.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Daniel Jones&amp;#x27;s investigation unfolds through documents, meetings and political pressure rather than dramatic reveals or explosions. The pacing relies on patience, but the narrative’s complexity risks losing the audience during long monologues or archival footage. Adam Driver gives a controlled performance that emphasizes the moral burden of uncovering truth.&lt;/p&gt;&lt;p&gt;Annette Bening brings gravitas to her role without overplaying the material. Supporting actors like Corey Stoll and Tim Blake Nelson add texture but rarely make the dialogue more interesting. The film’s structure follows the investigative process, which can feel repetitive by the third act.&lt;/p&gt;&lt;p&gt;Daniel Jones’s work has a clear sense of urgency, even if the script sometimes softens that tension with polite exchanges. Some scenes feel more like summaries than active drama, especially during transitions between political obstacles and bureaucratic hurdles. The central conflict is truth versus power, but the resolution feels underwhelming compared to the buildup.&lt;/p&gt;&lt;p&gt;Despite its flaws, the film stays compelling because of its real-world foundation and moral clarity. The dialogue occasionally leans into exposition rather than character development or tension. Its greatest strength is how it reflects the slow, often thankless work of holding institutions accountable.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Report_(2019_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2019/report.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Report balances procedural detail with emotional weight but falters in its final act. Adam Driver anchors the film, though the script sometimes undercuts his urgency.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Killers of the Flower Moon — A slow-burn tension between trust and betrayal</title>
      <link>https://deslypeter.com/writing/killers-of-the-flower-moon-2023-review</link>
      <guid>https://deslypeter.com/writing/killers-of-the-flower-moon-2023-review.html?lang=en</guid>
      <description>It's a serious story about real events, but it also focuses on personal relationships. The film gets a bit long, and sometimes that makes it harder to feel connected to the characters.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main problem is people fighting over Osage land, and it&amp;#x27;s shown through personal relationships that mix trust and betrayal. DiCaprio&amp;#x27;s character is caught in a moral mess as he finds out what people around him are really up to. The story uses real history, but some characters feel like they&amp;#x27;re only there because of their connection to the crime.&lt;/p&gt;&lt;p&gt;Scorsese doesn&amp;#x27;t go for big dramatic moments. He prefers quiet scenes, which can make the tension feel low at times. The film sometimes moves too slowly, with too much talking and not enough character growth. Still, the steady pace matches how slowly the secrets are uncovered.&lt;/p&gt;&lt;p&gt;DiCaprio and De Niro share scenes with restrained intensity, their dialogue laced with unspoken history. Lily Gladstone brings raw vulnerability to her role, grounding the film’s moral complexities in personal stakes. Jesse Plemons delivers a performance that is both calculating and emotionally layered, adding depth to his antagonist.&lt;/p&gt;&lt;p&gt;The big picture of history can make some characters feel less important. But the main story is still strong, helped by performances that don&amp;#x27;t go over the top. It&amp;#x27;s a powerful look at injustice, and it leaves room for people to find redemption and have complex emotions.&lt;/p&gt;&lt;p class="specs-note"&gt;2023 · English. &lt;a href="https://en.wikipedia.org/wiki/Killers_of_the_Flower_Moon_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2023/killers_of_the_flower_moon.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;It&amp;#x27;s a serious story about real events, but it also focuses on personal relationships. The film gets a bit long, and sometimes that makes it harder to feel connected to the characters.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Last Duel — A courtroom in a medieval hall</title>
      <link>https://deslypeter.com/writing/the-last-duel-2021-review</link>
      <guid>https://deslypeter.com/writing/the-last-duel-2021-review.html?lang=en</guid>
      <description>The film's structure is ambitious but uneven, with performances that suggest more depth than the script allows.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Matt Damon carries the moral weight of his character with steady conviction, even when the story struggles to justify his choices. Adam Driver’s performance is restrained but leaves room for ambiguity about his true intentions. Jodie Comer gives a compelling portrayal of a woman caught between power and survival, though her role feels underdeveloped compared to the others.&lt;/p&gt;&lt;p&gt;The film splits the story into three parts, which makes it feel a bit messy. Each character tells their version of what happened, but the movie never really decides which one is the most important. The dialogue is old-fashioned, which can make some scenes feel slow when they need to be more emotional.&lt;/p&gt;&lt;p&gt;Ben Affleck’s role is effective but brief, adding a layer of political tension without overshadowing the central conflict. The direction is grand in scope but sometimes loses focus amid the competing narratives. The film attempts to balance historical gravitas with modern sensibilities about justice and power.&lt;/p&gt;&lt;p&gt;The film doesn&amp;#x27;t handle the female lead&amp;#x27;s struggles and strength as well as it could. Even with these issues, the movie is clearly trying to do something important. The actors do a good job, but the script doesn&amp;#x27;t give them enough to work with, so some parts feel underdeveloped.&lt;/p&gt;&lt;p class="specs-note"&gt;2021 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Last_Duel_(2021_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2021/last_duel.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s structure is ambitious but uneven, with performances that suggest more depth than the script allows.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Tragedy of Macbeth — A shadowed court and a quickening heartbeat</title>
      <link>https://deslypeter.com/writing/the-tragedy-of-macbeth-2021-review</link>
      <guid>https://deslypeter.com/writing/the-tragedy-of-macbeth-2021-review.html?lang=en</guid>
      <description>The film plays up the play's doom-laden tone but struggles to balance its moral grey areas with today's expectations. Denzel Washington is serious and commanding, but the look of the film can feel too stylized at times.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Macbeth&amp;#x27;s hunger for power is clear, but the film doesn&amp;#x27;t dive deep into his inner turmoil like Shakespeare does. The scenes with the court are tense, but the dialogue often feels more like a script reading than real conversation. Frances McDormand is strong as Lady Macbeth, but her role doesn&amp;#x27;t get enough room to shine in the story.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s pace feels more like a play than a movie, which can make it less absorbing. The visuals help set the mood but sometimes take away from the main tragedy. The direction is sure-handed but sometimes puts style before meaning.&lt;/p&gt;&lt;p&gt;Denzel Washington does a good job showing Macbeth&amp;#x27;s despair, though his performance can get lost in the film&amp;#x27;s visual style. Frances McDormand gives a strong performance, but her character&amp;#x27;s layers aren&amp;#x27;t fully explored. The supporting actors do well, but they don&amp;#x27;t have enough time on screen to make a bigger impact.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s modern version of Shakespeare is bold but can be confusing in how it&amp;#x27;s put together. There are some standout moments, especially with the soliloquies and big confrontations. Even with its issues, it offers a new angle on a classic tragedy, though it doesn&amp;#x27;t fully match the emotional depth of the original.&lt;/p&gt;&lt;p class="specs-note"&gt;2021 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Tragedy_of_Macbeth_(2021_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2021/tragedy_of_macbeth.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film plays up the play&amp;#x27;s doom-laden tone but struggles to balance its moral grey areas with today&amp;#x27;s expectations. Denzel Washington is serious and commanding, but the look of the film can feel too stylized at times.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Trial of the Chicago 7 — A courtroom as a battleground for truth</title>
      <link>https://deslypeter.com/writing/the-trial-of-the-chicago-7-2020-review</link>
      <guid>https://deslypeter.com/writing/the-trial-of-the-chicago-7-2020-review.html?lang=en</guid>
      <description>The Trial of the Chicago 7 balances sharp dialogue with emotional weight, though its pacing occasionally undermines its message.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film unfolds through rapid-fire exchanges that reflect the tension and stakes of the trial without slowing for exposition. Characters are defined by their roles in the trial rather than personal histories or motivations. Aaron Sorkin’s script leans on wit but sometimes sacrifices depth for rhythm.&lt;/p&gt;&lt;p&gt;The courtroom scenes are tightly written, with actors clearly enunciating their lines for dramatic effect. Joseph Gordon-Levitt and Sacha Baron Cohen bring energy to their roles, standing out in the film. Frank Langella adds gravitas, but his role is limited by the script’s structure.&lt;/p&gt;&lt;p&gt;The film’s focus on legal strategy overshadows the personal toll of the trial on its participants. Yahya Abdul-Mateen II and Eddie Redmayne contribute strong, if underutilized, performances. The direction emphasizes dialogue over visual storytelling, which can feel limiting at times.&lt;/p&gt;&lt;p&gt;The film shows a clear sense of injustice, but it rarely lets that feeling settle. The historical context is well-researched but often feels like background rather than the main conflict. Despite its flaws, it remains an engaging and thought-provoking look at a pivotal moment in American history.&lt;/p&gt;&lt;p class="specs-note"&gt;2020 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Trial_of_the_Chicago_7"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Trial of the Chicago 7 balances sharp dialogue with emotional weight, though its pacing occasionally undermines its message.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Promising Young Woman — A revenge plot with a moral tightrope</title>
      <link>https://deslypeter.com/writing/promising-young-woman-2020-review</link>
      <guid>https://deslypeter.com/writing/promising-young-woman-2020-review.html?lang=en</guid>
      <description>It’s a mix of dark humor and emotional weight, but it sometimes relies too much on mood instead of solid content, which softens its effect.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Carey Mulligan’s character is caught between wanting justice and self-destruction, but the film leans more into being provocative than offering real answers. The dialogue uses irony and shock, which can take away from the serious trauma at the heart of the story. Emerald Fennell’s direction focuses more on style than on making the emotions clear in key scenes.&lt;/p&gt;&lt;p&gt;The film moves slowly, but some scenes feel too long without giving more depth to the main character’s inner struggles. Bo Burnham’s character is meant to be mysterious, but his acting doesn’t have enough layers to make his complexity believable. Alison Brie and Jennifer Coolidge do good work, but their roles aren’t fully developed because they’re focused more on the film’s message than their characters.&lt;/p&gt;&lt;p&gt;The moral questions the film raises are important, but they’re not fully worked out, leaving some ideas hanging. The humor can take attention away from the serious parts, making the tone feel off. Carey Mulligan gives a strong performance, but the script doesn’t give her enough chances to show deep emotion.&lt;/p&gt;&lt;p&gt;The way the film is structured is unusual, but it sometimes makes the main character’s journey harder to follow. The film wants to say a lot, but it stumbles a bit when it comes to showing real introspection or resolution. Even with its problems, it’s still a brave try at tackling power, trauma, and justice in a male-dominated world.&lt;/p&gt;&lt;p class="specs-note"&gt;2020 · English. &lt;a href="https://en.wikipedia.org/wiki/Promising_Young_Woman"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2020/promising_young_woman.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;It’s a mix of dark humor and emotional weight, but it sometimes relies too much on mood instead of solid content, which softens its effect.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Palm Springs — A loop with no clear exit</title>
      <link>https://deslypeter.com/writing/palm-springs-2020-review</link>
      <guid>https://deslypeter.com/writing/palm-springs-2020-review.html?lang=en</guid>
      <description>The time loop offers a clever gimmick, but emotional stakes falter under the weight of repetition. The romance feels more convenient than earned.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film follows two people stuck reliving the same day, unable to escape or change their fate. Their relationship evolves with each reset, but the story leans on easy solutions rather than real consequences. Andy Samberg and Cristin Milioti have good chemistry, but it feels more like a setup for the premise than something that naturally develops.&lt;/p&gt;&lt;p&gt;The jokes get reused too much, losing their punch as the loops keep going. The time loop feels more like a puzzle to solve than an emotional challenge to endure. The film’s pacing slows down when it focuses more on new ideas than on developing the characters.&lt;/p&gt;&lt;p&gt;Samberg’s humor is best when it’s light and quick, but it wears thin as the plot repeats. Milioti shows vulnerability, but her character often seems to be reacting rather than taking action. Supporting actors like J. K. Simmons add some depth, but their roles don’t get much use in the story.&lt;/p&gt;&lt;p&gt;The film has charm but also repetition, and it never really decides which one to focus on. It’s a fun idea with a lot of potential, but it doesn’t fully deliver on the emotional side. The time loop is still interesting, even if it doesn’t quite reach the emotional impact it aims for.&lt;/p&gt;&lt;p class="specs-note"&gt;2020 · English. &lt;a href="https://en.wikipedia.org/wiki/Palm_Springs_(2020_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2020/palm_springs.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The time loop offers a clever gimmick, but emotional stakes falter under the weight of repetition. The romance feels more convenient than earned.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Art of Self-Defense — A troubled man's obsession with self-defense</title>
      <link>https://deslypeter.com/writing/the-art-of-self-defense-2019-review</link>
      <guid>https://deslypeter.com/writing/the-art-of-self-defense-2019-review.html?lang=en</guid>
      <description>The film balances tension and unease but leans too heavily on its own ambiguity, softening the impact of its central conflict.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The protagonist&amp;#x27;s focus on learning self-defense becomes a metaphor for his deeper insecurities, but these aren&amp;#x27;t fully explored. His instructor gives him guidance but also seems to manipulate him, creating an uneasy power dynamic that feels underdeveloped. The film hints at emotional trauma without clearly defining its source or consequences.&lt;/p&gt;&lt;p&gt;The direction keeps the tone tense without relying on dramatic gestures or visual cues. The pacing is deliberate, letting quiet unease linger without resolution. However, the lack of clear stakes makes the protagonist&amp;#x27;s choices feel less urgent than they should be.&lt;/p&gt;&lt;p&gt;The lead actor shows vulnerability well, even when his motivations are unclear. Supporting performances are consistent but don&amp;#x27;t elevate the film beyond its modest ambitions. The dialogue is sparse and indirect, leaving much to interpretation without clear emotional anchors.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s appeal lies in avoiding easy answers or catharsis. But this ambiguity also makes it harder for the audience to connect with the protagonist&amp;#x27;s journey. It remains intriguing but ultimately underwhelming due to its reluctance to commit to a stronger narrative direction.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Art_of_Self-Defense_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2019/art_of_self_defense.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances tension and unease but leans too heavily on its own ambiguity, softening the impact of its central conflict.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Under the Silver Lake — A dreamlike haze over a mystery</title>
      <link>https://deslypeter.com/writing/under-the-silver-lake-2018-review</link>
      <guid>https://deslypeter.com/writing/under-the-silver-lake-2018-review.html?lang=en</guid>
      <description>The film balances surreal tone with real tension, but its ambition outpaces its coherence. The central mystery remains oddly distant from the characters' emotional stakes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A strange melancholy lingers in every frame, even during moments of violence or revelation. The protagonist&amp;#x27;s search for his missing neighbor becomes a journey through Los Angeles&amp;#x27;s underbelly, but the stakes feel unevenly weighted. David Robert Mitchell crafts an atmosphere that is more mood than narrative, sometimes at the expense of clarity.&lt;/p&gt;&lt;p&gt;The dialogue doesn&amp;#x27;t always match the film&amp;#x27;s tone, feeling like it belongs to a different story. Andrew Garfield gives a sincere performance, even when the script doesn&amp;#x27;t give him much to work with. Riley Keough and Topher Grace add some mystery but rarely tie into the main character&amp;#x27;s drive.&lt;/p&gt;&lt;p&gt;The pacing shifts unpredictably between languid exploration and sudden bursts of action. This inconsistency makes it hard to invest in the central mystery or its resolution. The film’s visual style is striking, yet it often obscures rather than enhances the emotional truth.&lt;/p&gt;&lt;p&gt;The film tries to explore ideas about identity and loneliness, but they don&amp;#x27;t get much attention. The dialogue sometimes feels too clever for its own good, without really paying off. Still, the film&amp;#x27;s embrace of uncertainty keeps it from being completely forgettable.&lt;/p&gt;&lt;p class="specs-note"&gt;2018 · English. &lt;a href="https://en.wikipedia.org/wiki/Under_the_Silver_Lake"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2018/under_the_silver_lake.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances surreal tone with real tension, but its ambition outpaces its coherence. The central mystery remains oddly distant from the characters&amp;#x27; emotional stakes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Sorry to Bother You — A telemarketer's voice becomes a weapon</title>
      <link>https://deslypeter.com/writing/sorry-to-bother-you-2018-review</link>
      <guid>https://deslypeter.com/writing/sorry-to-bother-you-2018-review.html?lang=en</guid>
      <description>The film balances satire and sincerity but falters when its themes outpace its execution. The tone shifts between absurdity and earnestness without full cohesion.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story unfolds through a telemarketing job that escalates into corporate entanglement, revealing the cost of assimilation. Lakeith Stanfield&amp;#x27;s performance is grounded even as his character undergoes surreal transformation. Tessa Thompson brings warmth to her role but struggles against the film’s chaotic tone shifts.&lt;/p&gt;&lt;p&gt;The dialogue has a sharp satirical edge, but it can make the emotional parts feel less important. The pacing varies — it&amp;#x27;s fast in some parts and slow in others, especially during the more outlandish scenes. The corporate conspiracy is smartly put together but doesn&amp;#x27;t get enough time to fully develop.&lt;/p&gt;&lt;p&gt;Jermaine Fowler and Armie Hammer provide strong supporting presence with contrasting tones. Steven Yeun’s role adds a layer of moral complexity that is not fully explored. The film’s surreal elements are ambitious but occasionally feel disconnected from the central narrative.&lt;/p&gt;&lt;p&gt;The film clearly criticises capitalism, but its style sometimes gets in the way. The shifts between comedy and drama make some emotional moments feel underdeveloped. Still, it manages to start a conversation about identity and how workers are treated.&lt;/p&gt;&lt;p class="specs-note"&gt;2018 · English. &lt;a href="https://en.wikipedia.org/wiki/Sorry_to_Bother_You_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2018/sorry_to_bother_you.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances satire and sincerity but falters when its themes outpace its execution. The tone shifts between absurdity and earnestness without full cohesion.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Thoroughbreds — A calculated revenge with emotional distance</title>
      <link>https://deslypeter.com/writing/thoroughbreds-2017-review</link>
      <guid>https://deslypeter.com/writing/thoroughbreds-2017-review.html?lang=en</guid>
      <description>The film balances dark humor and tension but leans too much into its own stylized detachment, limiting emotional connection.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Lily and Amanda&amp;#x27;s plan is built on cold logic rather than emotional urgency, which defines their relationship. Their shared goal lacks the personal stakes that would make their actions feel more urgent or tragic. The script leans into irony but rarely lets the characters&amp;#x27; motivations become fully relatable.&lt;/p&gt;&lt;p&gt;The tone remains consistently sharp, avoiding melodrama even in tense moments. Scenes are often composed with a deliberate slowness that emphasizes the emotional distance between characters. This pacing choice can feel more like a stylistic decision than an organic expression of their psychological state.&lt;/p&gt;&lt;p&gt;Olivia Cooke and Anya Taylor-Joy perform with precision, but their roles rarely allow for raw vulnerability. Their dialogue is often clipped and calculated, reinforcing the emotional restraint of the film&amp;#x27;s world. Paul Sparks and Francie Swift add depth to the supporting cast without overshadowing the leads.&lt;/p&gt;&lt;p&gt;The film’s detachment occasionally makes its moral questions feel academic rather than urgent. Despite this, it remains a well-crafted exploration of manipulation and control. Its reservation lies in its reluctance to fully embrace the emotional complexity of its characters.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/Thoroughbreds_(2017_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2018/thoroughbreds.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances dark humor and tension but leans too much into its own stylized detachment, limiting emotional connection.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Ingrid Goes West — A friendship built on illusion</title>
      <link>https://deslypeter.com/writing/ingrid-goes-west-2017-review</link>
      <guid>https://deslypeter.com/writing/ingrid-goes-west-2017-review.html?lang=en</guid>
      <description>The film balances satire with genuine pathos, but its emotional core is often overshadowed by its own irony.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Ingrid&amp;#x27;s obsession with her Instagram idol creates a tension that feels absurd yet deeply personal. Her need for validation drives her attempts to connect, and the film shows this without passing judgment. The script highlights social media&amp;#x27;s superficiality but has trouble keeping its emotional stakes consistent.&lt;/p&gt;&lt;p&gt;Matt Spicer&amp;#x27;s direction leans into sharp, stylized scenes rather than long stretches of emotional depth. The film moves between fast-paced humor and awkward pauses, which makes the rhythm feel uneven. Still, it never completely hides Ingrid&amp;#x27;s vulnerability behind her quirky behavior.&lt;/p&gt;&lt;p&gt;Aubrey Plaza gives a performance that&amp;#x27;s both wildly unhinged and genuinely sad. Elizabeth Olsen plays the idol with a cool, distant vibe, making her a strong but remote figure. The dialogue often feels more like a script being read than real conversation between people.&lt;/p&gt;&lt;p&gt;The film tries to comment on modern loneliness, but its message doesn&amp;#x27;t always come through clearly. The humor sometimes softens the emotional weight of Ingrid&amp;#x27;s journey, making the impact less strong. That said, it still works as a pointed, if flawed, look at the risks of getting lost in online personas and personal delusions.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/Ingrid_Goes_West"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2017/ingrid_goes_west.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances satire with genuine pathos, but its emotional core is often overshadowed by its own irony.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>After Yang — A robotic child's silence tests a family's love</title>
      <link>https://deslypeter.com/writing/after-yang-2021-review</link>
      <guid>https://deslypeter.com/writing/after-yang-2021-review.html?lang=en</guid>
      <description>The film tries to balance emotional depth with its sci-fi idea, but its speed and themes sometimes take away from the closeness of the main relationship.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Colin Farrell&amp;#x27;s acting keeps the film grounded in quiet worry as he deals with his daughter&amp;#x27;s silence. The pressure between parents and their troubled child is shown with real detail instead of over-the-top drama. Jodie Turner-Smith and Justin H. Min add careful urgency to their parts, making the emotional situation feel more real.&lt;/p&gt;&lt;p&gt;Kogonada&amp;#x27;s style focuses on quiet moments, which highlights the emotions but can also slow things down. The film&amp;#x27;s slow pace makes you think but sometimes feels off when it comes to moving the story forward. The visuals are simple but meaningful, often showing the emotional gap in the family.&lt;/p&gt;&lt;p&gt;Farrell&amp;#x27;s acting shows the delicate hope of a parent without being too sentimental. The dialogue uses what&amp;#x27;s not said instead of explaining everything, which works in quiet scenes but doesn&amp;#x27;t always hold up in big arguments. The other actors do solid work, but their roles aren&amp;#x27;t always clearly different from each other.&lt;/p&gt;&lt;p&gt;The sci-fi parts feel like they&amp;#x27;re not fully developed, leaving the main question about love and tech unanswered. There&amp;#x27;s a clear attempt to explore deeper themes, but it doesn&amp;#x27;t always have the emotional clarity to fully get across what it&amp;#x27;s trying to say. Even with its problems, the film is still interesting in how it tries to explore caring for something that can&amp;#x27;t return the feeling.&lt;/p&gt;&lt;p class="specs-note"&gt;2021 · English. &lt;a href="https://en.wikipedia.org/wiki/After_Yang"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2022/after_yang.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film tries to balance emotional depth with its sci-fi idea, but its speed and themes sometimes take away from the closeness of the main relationship.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>A Ghost Story — A slow, brooding presence</title>
      <link>https://deslypeter.com/writing/a-ghost-story-2017-review</link>
      <guid>https://deslypeter.com/writing/a-ghost-story-2017-review.html?lang=en</guid>
      <description>The film lingers on absence and memory but lacks the emotional urgency to fully justify its deliberate pacing.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A man becomes a ghost, stuck in his old home by grief and regret. The film shows his spectral existence with little dialogue and a focus on stillness and repetition. This creates a feeling of isolation but doesn&amp;#x27;t fully explore the emotional weight of his situation.&lt;/p&gt;&lt;p&gt;The film moves slowly, which might work for some but feels too passive for much of its runtime. Long stretches of silence and still images test patience without giving much narrative direction. Still, the tone is consistently somber and introspective, focusing more on mood than plot.&lt;/p&gt;&lt;p&gt;Casey Affleck conveys quiet despair through minimal movement and expression, anchoring the abstract concept with grounded performance. Rooney Mara’s presence is felt more in absence than in action, mirroring the ghost’s own emotional withdrawal. Their interactions are sparse but carry weight, emphasizing the emotional distance between them.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s slow pace becomes a problem when it doesn&amp;#x27;t justify its length. There&amp;#x27;s undeniable beauty in its quiet tone, even if it sometimes feels self-indulgent. The themes of memory and loss are strong, but the execution doesn&amp;#x27;t always match the ambition.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/A_Ghost_Story"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film lingers on absence and memory but lacks the emotional urgency to fully justify its deliberate pacing.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Endless — A loop that refuses to close</title>
      <link>https://deslypeter.com/writing/the-endless-2017-review</link>
      <guid>https://deslypeter.com/writing/the-endless-2017-review.html?lang=en</guid>
      <description>The film leans on its eerie tone but struggles to justify the emotional stakes of its central dilemma.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story moves slowly, with each twist feeling like a step around the same room. The characters talk carefully, but their reasons for doing things aren’t always clear. Time and memory feel bendy, like they’re not fully in anyone’s control.&lt;/p&gt;&lt;p&gt;The film takes its time, which makes it feel thoughtful but also risks dragging. The dialogue often feels like it’s going in circles instead of getting somewhere. The setting and repeated conversations create a feeling of being trapped.&lt;/p&gt;&lt;p&gt;The actors convey tension without overplaying their roles, maintaining a grounded tone throughout. Their performances suggest uncertainty rather than certainty, which aligns with the film’s themes but may leave some viewers detached. The lack of clear resolution leaves room for interpretation but also raises questions about the narrative’s purpose.&lt;/p&gt;&lt;p&gt;The film tries hard to keep things vague, but sometimes it feels like it’s doing it just for style. The uneasy feeling is there, but there’s not enough emotional connection to make it fully work. It’s an interesting experiment, more about mood than deep meaning.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Endless_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2018/endless.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its eerie tone but struggles to justify the emotional stakes of its central dilemma.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Upgrade — A body without control</title>
      <link>https://deslypeter.com/writing/upgrade-2018-review</link>
      <guid>https://deslypeter.com/writing/upgrade-2018-review.html?lang=en</guid>
      <description>The film leans into its cyberpunk trappings but struggles to sustain emotional investment beyond the protagonist’s physical predicament.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main problem is the man’s internal conflict. He gets mobility back via an AI chip, but we don’t really see his emotional journey. Logan Marshall-Green does the heavy lifting, but his character doesn’t show much vulnerability or change. The film moves quickly, but the emotional parts feel rushed and don’t connect well with the main character’s story.&lt;/p&gt;&lt;p&gt;The visuals are all neon and cyberpunk, but the film doesn’t really dive into what the genre is about. Betty Gabriel does a good job, but her character doesn’t have much to do in the bigger picture. The dialogue is more about explaining things than building real relationships.&lt;/p&gt;&lt;p&gt;Harrison Gilbertson adds some tension as the bad guy, but his reasons for acting the way he does aren’t clear. The film tries to mix action with deeper thinking, but it doesn’t keep both up for long. The AI’s voice is a nice touch—it gives a different perspective that contrasts with the main character’s situation.&lt;/p&gt;&lt;p&gt;Even with its problems, Upgrade has a good idea and some exciting scenes. But it doesn’t really make you care emotionally, so the impact is just on the surface. It relies too much on flashy moments instead of deeper ideas, which stops it from being a truly thoughtful sci-fi thriller.&lt;/p&gt;&lt;p class="specs-note"&gt;2018 · English. &lt;a href="https://en.wikipedia.org/wiki/Upgrade_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans into its cyberpunk trappings but struggles to sustain emotional investment beyond the protagonist’s physical predicament.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Possessor — A mind trapped inside another's flesh</title>
      <link>https://deslypeter.com/writing/possessor-2020-review</link>
      <guid>https://deslypeter.com/writing/possessor-2020-review.html?lang=en</guid>
      <description>The film leans into psychological unease but falters in balancing its moral and emotional stakes with its surreal conceit.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central tension is the struggle to maintain identity when control of one’s body is constantly at risk. Andrea Riseborough&amp;#x27;s character faces a dilemma that feels both personal and existential, yet rarely fully immersive. Christopher Abbott brings a raw vulnerability that contrasts with the cold mechanics of the plot.&lt;/p&gt;&lt;p&gt;The visuals are eerie, but they often feel more like a style choice than a way to deepen the story. The pacing is slow, and some scenes drag without adding real tension or insight. The film tries to explore ideas about autonomy and selfhood, but it doesn&amp;#x27;t always make them clear.&lt;/p&gt;&lt;p&gt;Riseborough conveys internal conflict with subtlety, even when the script gives her limited emotional range. Abbott&amp;#x27;s performance is compelling but occasionally overwhelmed by the film’s own surrealism. Supporting actors contribute effectively, but their roles are often defined by ambiguity rather than depth.&lt;/p&gt;&lt;p&gt;The film doesn&amp;#x27;t explore the moral questions behind its premise in enough detail. The horror parts sometimes feel like they&amp;#x27;re there for style rather than to build real emotion. Still, it does offer a fresh take on identity and control, even if it leaves some questions unanswered.&lt;/p&gt;&lt;p class="specs-note"&gt;2020 · English. &lt;a href="https://en.wikipedia.org/wiki/Possessor_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans into psychological unease but falters in balancing its moral and emotional stakes with its surreal conceit.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Saint Maud — A performance with a fragile edge</title>
      <link>https://deslypeter.com/writing/saint-maud-2019-review</link>
      <guid>https://deslypeter.com/writing/saint-maud-2019-review.html?lang=en</guid>
      <description>The film depends on its main character for emotional weight, but its rhythm and tone sometimes take away from the depth of that character.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The lead actor holds the film’s tension without overdoing the role’s extremes. There’s a quiet urgency in how they portray devotion that feels real, even when the script isn’t fully there. The character’s motivations are clear enough to keep the story going, but they don’t fully satisfy as a psychological portrait.&lt;/p&gt;&lt;p&gt;The direction keeps the mood tight, but some scenes feel rushed or underdeveloped. The film’s visual style supports the isolation of its protagonist without getting in the way. There’s a deliberate slowness in certain moments that risks making the character’s experience feel distant.&lt;/p&gt;&lt;p&gt;The dialogue leans on spiritual ambiguity rather than emotional clarity, which can be both effective and confusing. Supporting performances are minimal but fit the film’s restrained tone. The film moves between confession and action, but the transitions sometimes feel sudden.&lt;/p&gt;&lt;p&gt;There’s a strong sense of vulnerability in the main role that keeps the film from feeling lifeless. However, the lack of clear stakes beyond the protagonist’s obsession weakens the emotional impact. Despite its flaws, the performance remains the film’s most compelling element.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/Saint_Maud_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film depends on its main character for emotional weight, but its rhythm and tone sometimes take away from the depth of that character.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Manchurian Candidate — A chilling political nightmare</title>
      <link>https://deslypeter.com/writing/the-manchurian-candidate-1962-review</link>
      <guid>https://deslypeter.com/writing/the-manchurian-candidate-1962-review.html?lang=en</guid>
      <description>The film's tension comes from its characters' slow realization of their entrapment. The performances elevate the paranoia beyond mere plot mechanics.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The Manchurian Candidate unfolds as a quiet, simmering dread that builds with each interaction and revelation. Its central conflict is not just about espionage but about how people are manipulated into accepting roles they cannot understand. Frank Sinatra&amp;#x27;s performance carries a mix of bravado and vulnerability that makes his character’s eventual unraveling devastating.&lt;/p&gt;&lt;p&gt;Laurence Harvey plays his part with a cold, calculating edge that contrasts with Sinatra&amp;#x27;s emotional struggle. Angela Lansbury&amp;#x27;s performance is understated but key—her menace feels like a shadow always lurking. The dialogue avoids melodrama by focusing on the characters&amp;#x27; confusion and distrust of each other.&lt;/p&gt;&lt;p&gt;The film moves at a steady pace, letting the audience feel the weight of each choice made in the plot&amp;#x27;s web. There are times when the film leans too much on its own premise, making the stakes feel a bit artificial. Still, the acting keeps the emotional heart from getting lost in the complexity.&lt;/p&gt;&lt;p&gt;The tension grows because the characters seem so normal until their roles are exposed. This contrast makes the betrayal feel more personal and shocking. The film&amp;#x27;s strongest point is how it makes the audience feel trapped and manipulated, just like the characters.&lt;/p&gt;&lt;p class="specs-note"&gt;1962 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Manchurian_Candidate_(1962_film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s tension comes from its characters&amp;#x27; slow realization of their entrapment. The performances elevate the paranoia beyond mere plot mechanics.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Parallax View — A reporter uncovers a hidden agenda</title>
      <link>https://deslypeter.com/writing/the-parallax-view-1974-review</link>
      <guid>https://deslypeter.com/writing/the-parallax-view-1974-review.html?lang=en</guid>
      <description>The film's tension comes from its careful pacing and the way it balances mystery with character development, though its final act feels slightly rushed.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story unfolds through the eyes of a journalist who stumbles upon a shadowy organization involved in political murder. The reporter&amp;#x27;s pursuit of truth is both personal and professional, adding emotional stakes to his investigation. The script avoids over-explaining motives, letting the audience piece together the conspiracy gradually.&lt;/p&gt;&lt;p&gt;The direction keeps things moving at a steady pace, focusing on the protagonist&amp;#x27;s growing isolation as he digs deeper. Each scene follows naturally from the last, without extra subplots or detours. The dialogue is tight and realistic, showing the paranoia of the time without getting too dramatic.&lt;/p&gt;&lt;p&gt;Warren Beatty brings a grounded intensity to his role, making the character&amp;#x27;s obsession feel earned rather than forced. Paula Prentiss and Hume Cronyn add depth to their roles as allies and adversaries in the protagonist’s journey. Their performances highlight the moral ambiguity of the world the reporter navigates.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s structure mostly works, but the ending feels rushed compared to the earlier parts. Some subplots are introduced too fast to be fully explored before the resolution. Still, the film does a good job showing how power and corruption work in politics.&lt;/p&gt;&lt;p class="specs-note"&gt;1974 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Parallax_View"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1974/parallax_view.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s tension comes from its careful pacing and the way it balances mystery with character development, though its final act feels slightly rushed.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Three Days of the Condor — A man discovers a conspiracy within his own agency</title>
      <link>https://deslypeter.com/writing/three-days-of-the-condor-1975-review</link>
      <guid>https://deslypeter.com/writing/three-days-of-the-condor-1975-review.html?lang=en</guid>
      <description>The film balances paranoia with emotional stakes, though its ending feels slightly rushed compared to the careful buildup.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Redford’s character is thrust into a situation where trust becomes a liability, and every interaction carries hidden intent. The screenplay leans on dialogue that reveals information gradually but never fully obscures the plot’s shape. The tension arises from the protagonist’s isolation rather than external action or spectacle.&lt;/p&gt;&lt;p&gt;Pollack’s direction keeps things moving at a steady pace, without extra flair. The script’s suspense unfolds naturally, and Redford does quiet desperation well. His choices feel personal, not just tactical. Dunaway adds depth to the moral grey areas of their relationship and shared goals.&lt;/p&gt;&lt;p&gt;The film’s political message is clear but never heavy-handed, embedded in the characters’ dilemmas rather than delivered outright. There are moments where the dialogue feels a bit rehearsed, reducing some scenes to mere exposition. The supporting cast provides enough menace without overshadowing Redford’s central role.&lt;/p&gt;&lt;p&gt;The film moves back and forth between action and quiet moments, keeping things tense. A few side stories don’t get enough attention, leaving some motives a bit unclear. But overall, it works as a story about a man trying to take down a system that should have been on his side.&lt;/p&gt;&lt;p class="specs-note"&gt;1975 · English. &lt;a href="https://en.wikipedia.org/wiki/Three_Days_of_the_Condor"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1975/three_days_of_the_condor.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances paranoia with emotional stakes, though its ending feels slightly rushed compared to the careful buildup.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Klute — A woman's trust is tested by a detective's obsession</title>
      <link>https://deslypeter.com/writing/klute-1971-review</link>
      <guid>https://deslypeter.com/writing/klute-1971-review.html?lang=en</guid>
      <description>The tension between suspicion and truth drives Klute forward. Jane Fonda's performance grounds the film in emotional complexity despite its procedural setup.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict hinges on whether the call girl is a victim or a manipulator, blurring moral lines without clear resolution. Donald Sutherland&amp;#x27;s detective is consumed by his pursuit, making his obsession as much a flaw as a motive. The film avoids resolving who is truly in control, keeping the audience in the same uncertainty as its characters.&lt;/p&gt;&lt;p&gt;Pakula&amp;#x27;s direction focuses on quiet moments and meaningful looks, building tension without flashy scenes. The film moves slowly, letting silence speak between lines. Every scene feels planned out, keeping things serious without going over the top.&lt;/p&gt;&lt;p&gt;Jane Fonda brings vulnerability to her role, making the character&amp;#x27;s ambiguity feel earned rather than contrived. Her performance suggests layers beneath the surface, inviting but never forcing interpretation. Roy Scheider adds an edge as the antagonist, his presence heightening the stakes without overplaying the threat.&lt;/p&gt;&lt;p&gt;The dialogue is simple but sharp, with what&amp;#x27;s not said often holding more weight than what&amp;#x27;s spoken. Sometimes the film&amp;#x27;s uncertainty feels more like a style choice than something the story needs. Still, the emotional heart is strong enough to make the questions worth thinking about.&lt;/p&gt;&lt;p class="specs-note"&gt;1971 · English. &lt;a href="https://en.wikipedia.org/wiki/Klute"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1971/klute.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The tension between suspicion and truth drives Klute forward. Jane Fonda&amp;#x27;s performance grounds the film in emotional complexity despite its procedural setup.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Serpico — Al Pacino's raw intensity anchors the film</title>
      <link>https://deslypeter.com/writing/serpico-1973-review</link>
      <guid>https://deslypeter.com/writing/serpico-1973-review.html?lang=en</guid>
      <description>Serpico balances moral outrage with procedural tension. The pacing falters slightly during quieter moments, but the central performance remains unshakable.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Frank Serpico’s conflict is portrayed as a personal battle against systemic rot rather than just a political struggle. Al Pacino embodies the character&amp;#x27;s frustration and idealism without melodrama or exaggeration. His scenes with John Randolph crackle with tension, revealing the slow erosion of trust within ranks.&lt;/p&gt;&lt;p&gt;The film keeps a steady rhythm, matching Serpico’s careful work to uncover corruption. Some dialogue feels too clipped, like the script is trying too hard to sound like real police talk. The director keeps things simple, letting the moral weight come through in plain settings and direct conversations.&lt;/p&gt;&lt;p&gt;Serpico’s isolation is shown through his relationships, not just his investigations. His interactions with colleagues reveal a man who believes in justice but struggles to be heard. The supporting cast delivers measured performances that reflect the weight of the story without overshadowing Pacino.&lt;/p&gt;&lt;p&gt;There are parts where the film relies on Serpico’s real-life fame instead of its own storytelling power. But this doesn’t take away from the emotional heart of the film, which stays focused on his inner struggle. The movie does a good job making a whistleblower’s experience feel real and personal.&lt;/p&gt;&lt;p class="specs-note"&gt;1973 · English. &lt;a href="https://en.wikipedia.org/wiki/Serpico"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1973/serpico.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Serpico balances moral outrage with procedural tension. The pacing falters slightly during quieter moments, but the central performance remains unshakable.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Friends of Eddie Coyle — A tense, weary atmosphere hangs over every exchange</title>
      <link>https://deslypeter.com/writing/the-friends-of-eddie-coyle-1973-review</link>
      <guid>https://deslypeter.com/writing/the-friends-of-eddie-coyle-1973-review.html?lang=en</guid>
      <description>The film's slow-burn tension and naturalistic dialogue elevate it beyond typical crime fare. The pacing occasionally lags but never loses its emotional core.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Eddie Coyle&amp;#x27;s desperation is felt in the pauses between his conversations with criminals and cops alike. The script avoids melodrama by focusing on the weight of choices made under pressure. Each character&amp;#x27;s self-interest creates a subtle, layered conflict that unfolds naturally.&lt;/p&gt;&lt;p&gt;The camera stays still, letting the dialogue hold the tension. Long pauses show how worn out and suspicious the characters are. There&amp;#x27;s no big action scene to take attention away from the mental struggles at play.&lt;/p&gt;&lt;p&gt;Robert Mitchum brings a quiet authority that contrasts with his younger co-stars&amp;#x27; nervous energy. Peter Boyle&amp;#x27;s performance is understated, allowing his character&amp;#x27;s motives to remain ambiguous yet believable. The dialogue feels lived-in, avoiding clichés common in crime films of the era.&lt;/p&gt;&lt;p&gt;The slow pace might turn some people off who want more obvious drama. But this careful approach highlights the moral confusion and personal failures. The sadness of betrayal and regret comes through without needing to be spelled out&lt;/p&gt;&lt;p class="specs-note"&gt;1973 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Friends_of_Eddie_Coyle"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1973/friends_of_eddie_coyle.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s slow-burn tension and naturalistic dialogue elevate it beyond typical crime fare. The pacing occasionally lags but never loses its emotional core.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Taking of Pelham One Two Three — A hostage crisis with a calm negotiator</title>
      <link>https://deslypeter.com/writing/the-taking-of-pelham-one-two-three-1974-review</link>
      <guid>https://deslypeter.com/writing/the-taking-of-pelham-one-two-three-1974-review.html?lang=en</guid>
      <description>The film balances tension and wit, but its resolution feels rushed. Matthau's performance anchors the narrative despite this flaw.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict hinges on a subway takeover and the negotiation between two men with opposing goals. A train is seized, and a criminal demands a ransom while a transit official tries to defuse the situation. This setup creates immediate stakes without needing exposition or backstory.&lt;/p&gt;&lt;p&gt;The film moves at a steady pace, letting conversations build tension instead of raising the stakes with action. Each scene uses dialogue to show strategy and personal motivations. Information unfolds in a way that keeps the audience involved without feeling rushed.&lt;/p&gt;&lt;p&gt;Walter Matthau brings a dry wit and calm authority to his role as the transit official. His performance grounds the film in realism even when the situation veers into farcical territory. Robert Shaw&amp;#x27;s antagonist is menacing yet articulate, adding depth to the confrontation.&lt;/p&gt;&lt;p&gt;The script focuses on verbal battles instead of action scenes to show the conflict. This works for the most part, but it can make the story feel a bit slow. Still, the film stays tense and smart about how people negotiate under pressure.&lt;/p&gt;&lt;p class="specs-note"&gt;1974 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Taking_of_Pelham_One_Two_Three_(1974_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1974/taking_of_pelham_one_two_three.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances tension and wit, but its resolution feels rushed. Matthau&amp;#x27;s performance anchors the narrative despite this flaw.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Long Goodbye — A detective who can't be trusted</title>
      <link>https://deslypeter.com/writing/the-long-goodbye-1973-review</link>
      <guid>https://deslypeter.com/writing/the-long-goodbye-1973-review.html?lang=en</guid>
      <description>The film balances satire and melancholy, but its slow pace and fragmented tone test patience. Elliott Gould carries the weight of a role that resists traditional heroism.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Philip Marlowe is not the sharp-eyed hero of classic noir, but a man burdened by his own contradictions and misjudgements. Robert Altman&amp;#x27;s direction leans into the film&amp;#x27;s ambiguity, making it difficult to know where the comedy ends and the tragedy begins. The dialogue is often meandering, reflecting Marlowe’s confusion as much as the plot’s complexity.&lt;/p&gt;&lt;p&gt;Elliott Gould plays Marlowe with a tired, grounded feel, keeping the performance from becoming overly sentimental even when the script leans that way. Sterling Hayden brings a serious edge, but his character doesn’t get enough to do compared to the film’s bigger ideas. The story sometimes drags with long, talky scenes that don’t always help the mystery move forward.&lt;/p&gt;&lt;p&gt;Nina Van Pallandt and Henry Gibson provide sharp contrasts to Marlowe’s indecision. Their performances highlight the film&amp;#x27;s themes of isolation and moral ambiguity. Leigh Brackett&amp;#x27;s screenplay retains Chandler’s wit but sacrifices some narrative clarity for tone.&lt;/p&gt;&lt;p&gt;The film’s satire works well, but it sometimes takes away from the emotional parts of the story. Altman avoids giving the plot a clear ending, which might leave some viewers wanting more. Still, the film’s mood and character work make it memorable, even with its flaws.&lt;/p&gt;&lt;p class="specs-note"&gt;1973 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Long_Goodbye_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1973/long_goodbye.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances satire and melancholy, but its slow pace and fragmented tone test patience. Elliott Gould carries the weight of a role that resists traditional heroism.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Killing — A heist with no clear winner</title>
      <link>https://deslypeter.com/writing/the-killing-1956-review</link>
      <guid>https://deslypeter.com/writing/the-killing-1956-review.html?lang=en</guid>
      <description>The Killing balances meticulous planning with emotional detachment, but its cold structure risks distancing the audience from its characters' fates.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s tension comes from knowing that every detail is being carefully set up for a single, inevitable failure. Sterling Hayden plays a man who believes he has everything under control, even as the plan unravels around him. His calm demeanor contrasts with the chaos of the heist itself, creating a subtle irony in his confidence.&lt;/p&gt;&lt;p&gt;The direction keeps scenes tight and focused, emphasizing the weight of each decision made in advance. Each character&amp;#x27;s role feels essential, but their personal stakes remain underexplored. The pacing is deliberate, allowing the audience to absorb the plan&amp;#x27;s complexity without rushing toward its collapse.&lt;/p&gt;&lt;p&gt;Coleen Gray and Marie Windsor bring quiet desperation to their roles as wives caught in a man&amp;#x27;s obsession with control. Their performances add emotional depth to what could have been a purely mechanical exercise in planning. The dialogue is sparse but purposeful, revealing character motivations through understated exchanges.&lt;/p&gt;&lt;p&gt;The film unfolds with elegance, avoiding dramatic reveals or twists. However, the emotional distance between the audience and the characters can feel like a barrier to full investment. Despite this, Kubrick&amp;#x27;s direction keeps the heist gripping, even if it&amp;#x27;s emotionally restrained.&lt;/p&gt;&lt;p class="specs-note"&gt;1956 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Killing_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1956/killing.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Killing balances meticulous planning with emotional detachment, but its cold structure risks distancing the audience from its characters&amp;#x27; fates.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Big Heat — A cop's moral struggle against corruption</title>
      <link>https://deslypeter.com/writing/the-big-heat-1953-review</link>
      <guid>https://deslypeter.com/writing/the-big-heat-1953-review.html?lang=en</guid>
      <description>The film balances gritty realism with emotional depth, but its pacing occasionally softens the tension of its own themes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Glenn Ford’s portrayal carries a weight that makes his internal conflict feel urgent and personal. His character’s frustration with a broken system is never just a plot device—it’s a lived experience. Gloria Grahame adds layers to her role, making her relationship with the protagonist both tense and emotionally complex.&lt;/p&gt;&lt;p&gt;The crime syndicate feels like an unstoppable force, not just a group of bad guys to beat. The dialogue sounds real, even when talking about dark topics like corruption and violence. Fritz Lang keeps the tone serious without going over the top with drama or symbols.&lt;/p&gt;&lt;p&gt;The noir lighting and cityscapes reinforce the sense of entrapment and inevitability. There is a moment where the emotional stakes seem to pause for exposition, slightly breaking the rhythm. Jocelyn Brando’s performance brings rawness to her role, adding texture to the film’s moral landscape.&lt;/p&gt;&lt;p&gt;The music and sound help set the mood without getting in the way of what&amp;#x27;s being said or shown. The message is clear, but the film can feel a bit heavy-handed at times. Its strength is showing how a broken system can corrupt not only criminals but also the people trying to stop them.&lt;/p&gt;&lt;p class="specs-note"&gt;1953 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Big_Heat"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1953/big_heat.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances gritty realism with emotional depth, but its pacing occasionally softens the tension of its own themes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>In a Lonely Place — A tense, intimate atmosphere</title>
      <link>https://deslypeter.com/writing/in-a-lonely-place-1950-review</link>
      <guid>https://deslypeter.com/writing/in-a-lonely-place-1950-review.html?lang=en</guid>
      <description>The film balances Bogart's brooding charm with Grahame's emotional vulnerability, but its pacing occasionally softens the tension it builds.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict hinges on a man hiding his violent past while trying to win over a woman who suspects him. Bogart&amp;#x27;s character is defined by his reluctance to confront his own flaws, which creates friction with Grahame’s character. The dialogue often feels like a careful dance between suspicion and affection, never fully resolving either.&lt;/p&gt;&lt;p&gt;The direction focuses on quiet moments, letting tension build without action or dialogue. Some scenes move slowly, which might test patience, but it also adds to the emotional weight. The film avoids melodrama by keeping characters real and flawed.&lt;/p&gt;&lt;p&gt;Bogart brings a weary charm to his role, making his moral ambiguity both appealing and unsettling. Grahame’s performance is subtle but powerful, suggesting layers of emotion without overexplaining them. Supporting actors contribute to the mood without overshadowing the central relationship or its complexities.&lt;/p&gt;&lt;p&gt;The film has a strong emotional centre, but some scenes don’t fully explore why people act the way they do. The noir style is there but not too much, letting the personal drama shine. A small pacing issue doesn’t stop the film from being compelling because it shows human uncertainty honestly.&lt;/p&gt;&lt;p class="specs-note"&gt;1950 · English. &lt;a href="https://en.wikipedia.org/wiki/In_a_Lonely_Place"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1950/in_a_lonely_place.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances Bogart&amp;#x27;s brooding charm with Grahame&amp;#x27;s emotional vulnerability, but its pacing occasionally softens the tension it builds.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Out of the Past — A past that refuses to stay buried</title>
      <link>https://deslypeter.com/writing/out-of-the-past-1947-review</link>
      <guid>https://deslypeter.com/writing/out-of-the-past-1947-review.html?lang=en</guid>
      <description>The film's tension comes from a man trying to outrun his own history, but the real conflict is what he chooses to remember.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Out of the Past unfolds through a series of choices that reshape its central character’s understanding of himself. Mitchum’s figure is haunted not by ghosts, but by the weight of decisions that cannot be undone. The film never confirms whether the protagonist deserves his fate or if he is simply trapped by it.&lt;/p&gt;&lt;p&gt;The film builds tension by repeating scenes in different contexts, without using flashbacks. What people say often hides more than it reveals, so you have to pay attention to what&amp;#x27;s left unsaid. The script gives hints instead of explaining everything, letting the audience figure things out.&lt;/p&gt;&lt;p&gt;Robert Mitchum’s performance is calm but strained, showing a man who believes he controls his story but never does. Jane Greer’s presence adds emotional stakes without overplaying them, keeping her role grounded in the film’s moral ambiguity. Kirk Douglas delivers a quietly menacing turn that contrasts with Mitchum’s weary resolve.&lt;/p&gt;&lt;p&gt;The film uses some typical noir ideas, which makes it feel a little less fresh. Some of the side characters don’t get enough depth, especially in how their morals are handled. But it still holds up because it never really answers whether the main character is a victim or a villain.&lt;/p&gt;&lt;p class="specs-note"&gt;1947 · English. &lt;a href="https://en.wikipedia.org/wiki/Out_of_the_Past"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1947/out_of_the_past.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s tension comes from a man trying to outrun his own history, but the real conflict is what he chooses to remember.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Double Indemnity — A crime that cannot be undone</title>
      <link>https://deslypeter.com/writing/double-indemnity-1944-review</link>
      <guid>https://deslypeter.com/writing/double-indemnity-1944-review.html?lang=en</guid>
      <description>The script's tension comes from the impossibility of backing away from a decision. The actors make moral decay feel inevitable rather than dramatic.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Double Indemnity begins with a deal that can never be reversed, setting up the central conflict between desire and consequence. The dialogue is sharp enough to suggest that the characters know their choices are doomed but act anyway. Fred MacMurray&amp;#x27;s performance captures the quiet desperation of someone who has already crossed a line he cannot return from.&lt;/p&gt;&lt;p&gt;Barbara Stanwyck&amp;#x27;s character is equally trapped, her ambition as much a prison as it is a motive. Edward G. Robinson delivers lines with a weight that suggests he has seen this path before and knows its cost. The pacing keeps the tension high without rushing toward resolution, letting the consequences unfold naturally.&lt;/p&gt;&lt;p&gt;The film avoids melodrama by grounding its characters in real emotional stakes rather than plot gimmicks. Each character&amp;#x27;s motivation is clear but flawed, making their choices feel tragically human rather than simply immoral. The dialogue often hides as much as it reveals, adding to the uneasy atmosphere of the film.&lt;/p&gt;&lt;p&gt;There are no flashy set pieces or overwrought scenes—only the slow build of a moral collapse. The performances avoid histrionics, keeping the focus on the emotional weight of the characters&amp;#x27; choices. This restraint makes the tragedy feel more immediate and personal rather than just a genre exercise.&lt;/p&gt;&lt;p class="specs-note"&gt;1944 · English. &lt;a href="https://en.wikipedia.org/wiki/Double_Indemnity"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1944/double_indemnity.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The script&amp;#x27;s tension comes from the impossibility of backing away from a decision. The actors make moral decay feel inevitable rather than dramatic.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Third Man — A friendship tested by betrayal</title>
      <link>https://deslypeter.com/writing/the-third-man-1949-review</link>
      <guid>https://deslypeter.com/writing/the-third-man-1949-review.html?lang=en</guid>
      <description>The film builds tension through dialogue and posture, not plot revelations. Orson Welles dominates without overpowering the fragile trust at its core.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Holly Martins&amp;#x27; grief is immediate, but his suspicion grows slowly as he uncovers Harry Lime&amp;#x27;s secrets. The emotional stakes rest on whether Holly can believe what he hears without knowing who to trust. Joseph Cotten carries the weight of doubt with a calm that hides his desperation.&lt;/p&gt;&lt;p&gt;Orson Welles plays Lime as a man who manipulates without getting caught. His voice and posture suggest charm, but also a cold distance from morality. Alida Valli&amp;#x27;s presence adds another layer of doubt to Holly&amp;#x27;s search for the truth.&lt;/p&gt;&lt;p&gt;The pacing leans on dialogue that feels natural rather than constructed for suspense. Scenes stretch slightly, letting silence and hesitation do most of the work. The direction trusts the audience to read between lines without overexplaining motives.&lt;/p&gt;&lt;p&gt;The film keeps things vague, never settling into clear hostility or certainty. This uncertainty is its strongest point, even if some emotional threads feel underdeveloped. It makes you feel the weight of not knowing, without ever giving it a clear shape.&lt;/p&gt;&lt;p class="specs-note"&gt;1949 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Third_Man"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1949/third_man.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film builds tension through dialogue and posture, not plot revelations. Orson Welles dominates without overpowering the fragile trust at its core.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Night of the Hunter — A preacher's mask hides a killer's intent</title>
      <link>https://deslypeter.com/writing/the-night-of-the-hunter-1955-review</link>
      <guid>https://deslypeter.com/writing/the-night-of-the-hunter-1955-review.html?lang=en</guid>
      <description>The film balances menace and moral ambiguity with skill, though its deliberate pacing may test patience in quieter moments.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Robert Mitchum’s performance as the sinister preacher brings a chilling calm to his manipulative schemes. Shelley Winters conveys deep vulnerability as a widow caught between fear and hope for her children. The tension lies in how convincingly the killer hides his true motives behind religious rhetoric.&lt;/p&gt;&lt;p&gt;Charles Laughton&amp;#x27;s direction uses long, silent moments to build unease without explaining everything. The music and lighting focus on the moral darkness, shaping the mood without overpowering the story. The pacing slows during domestic scenes, which might feel slow but also makes the tension between characters feel more real.&lt;/p&gt;&lt;p&gt;Mitchum’s voice carries a persuasive authority that makes his lies believable until they’re too late. Winters’ performance captures both fear and resilience in small gestures, like a hesitant glance or a trembling hand. Dialogue is sparse but loaded with subtext, letting silence do much of the storytelling.&lt;/p&gt;&lt;p&gt;The film doesn&amp;#x27;t have clear villains, which adds depth but might confuse some viewers. Some scenes are too long without a resolution, making it hard to stay engaged. Still, it&amp;#x27;s a strong look at how faith and deception play out in personal relationships.&lt;/p&gt;&lt;p class="specs-note"&gt;1955 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Night_of_the_Hunter_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1955/night_of_the_hunter.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances menace and moral ambiguity with skill, though its deliberate pacing may test patience in quieter moments.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Notorious — A taut, uneasy alliance</title>
      <link>https://deslypeter.com/writing/notorious-1946-review</link>
      <guid>https://deslypeter.com/writing/notorious-1946-review.html?lang=en</guid>
      <description>The film balances tension and romance with precision. Its emotional stakes are undercut slightly by a predictable outcome, but the performances remain compelling.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Notorious unfolds as a delicate dance between suspicion and attraction, set against a backdrop of wartime espionage. The characters&amp;#x27; conflicting loyalties create a charged atmosphere that never lets up for long. Alfred Hitchcock builds tension through carefully measured dialogue and glances rather than overt action.&lt;/p&gt;&lt;p&gt;The direction keeps the audience guessing without jump scares or complicated plots. Everyone&amp;#x27;s motives are clear but have layers, so their choices feel natural but emotionally tricky. The pace is fast, with quiet moments that make the tension feel bigger before something new happens.&lt;/p&gt;&lt;p&gt;Cary Grant and Ingrid Bergman share a chemistry that feels both professional and personal, adding depth to their roles. Their performances suggest a shared understanding of the dangers they face without needing explicit explanation. Claude Rains brings a menacing calm to his role, making his presence felt even in silence.&lt;/p&gt;&lt;p&gt;The heart of the film is the romance between the main characters, and it&amp;#x27;s handled with care instead of over-the-top drama. The ending feels a bit expected, which takes some of the edge off earlier tension. But the acting and direction keep things interesting all the way through.&lt;/p&gt;&lt;p class="specs-note"&gt;1946 · English. &lt;a href="https://en.wikipedia.org/wiki/Notorious_(1946_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1946/notorious.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances tension and romance with precision. Its emotional stakes are undercut slightly by a predictable outcome, but the performances remain compelling.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Shadow of a Doubt — A quiet town hides a violent secret</title>
      <link>https://deslypeter.com/writing/shadow-of-a-doubt-1943-review</link>
      <guid>https://deslypeter.com/writing/shadow-of-a-doubt-1943-review.html?lang=en</guid>
      <description>The film builds tension through restrained performances and careful pacing, though its moral ambiguity occasionally muddies the emotional stakes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story unfolds gradually, revealing secrets through dialogue and subtle behavior rather than dramatic reveals. Teresa Wright portrays a young woman whose curiosity leads her to dangerous truths without overt melodrama. Joseph Cotten’s performance carries an unsettling calm that hints at deeper, hidden motives.&lt;/p&gt;&lt;p&gt;The script avoids being flashy, focusing on the mental weight of finding out things. Hume Cronyn is really creepy as the bad guy — you can feel his threat without it being shown. The dialogue is sharp and low-key, letting what&amp;#x27;s not said create the tension.&lt;/p&gt;&lt;p&gt;Macdonald Carey&amp;#x27;s character adds another layer without taking away from the main story. The pacing is slow, letting the nervousness grow but sometimes dragging the story. The film&amp;#x27;s moral questions stick with you more than the ending, leaving some emotional distance.&lt;/p&gt;&lt;p&gt;Not giving simple answers makes the film feel more real but might annoy some people. The acting is detailed, avoiding stereotypes for deeper character work. Even with its calm style, the film is still a strong look at trust and lies.&lt;/p&gt;&lt;p class="specs-note"&gt;1943 · English. &lt;a href="https://en.wikipedia.org/wiki/Shadow_of_a_Doubt"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1943/shadow_of_a_doubt.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film builds tension through restrained performances and careful pacing, though its moral ambiguity occasionally muddies the emotional stakes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Strangers on a Train — A deal made in shadows</title>
      <link>https://deslypeter.com/writing/strangers-on-a-train-1951-review</link>
      <guid>https://deslypeter.com/writing/strangers-on-a-train-1951-review.html?lang=en</guid>
      <description>The film builds tension through its moral ambiguity and the quiet desperation of its characters. Its pacing is taut but never overstated.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two strangers agree to swap murders, setting off a chain of events that neither can control or escape. Their agreement relies on anonymity, but the weight of their choices becomes impossible to ignore. The film&amp;#x27;s structure ensures that every character feels trapped by their own decisions.&lt;/p&gt;&lt;p&gt;Hitchcock keeps the audience in the dark with the characters, avoiding melodrama. The dialogue is minimal but packed with unspoken tension and guilt. The film focuses on small actions, making the moral choices feel real and personal.&lt;/p&gt;&lt;p&gt;Farley Granger plays his role with a calm that hides deep unease, making him both sympathetic and unsettling. Robert Walker’s performance is especially chilling, balancing charm with menace in every line. Ruth Roman carries the emotional burden of the film without ever becoming a passive figure.&lt;/p&gt;&lt;p&gt;The suspense comes from the film&amp;#x27;s own rules, not from shocks or flashy scenes. Sometimes the moral questions feel more like a puzzle than an emotional experience. But the real strength is how it makes the audience feel involved in the characters&amp;#x27; downfall.&lt;/p&gt;&lt;p class="specs-note"&gt;1951 · English. &lt;a href="https://en.wikipedia.org/wiki/Strangers_on_a_Train_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1951/strangers_on_a_train.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film builds tension through its moral ambiguity and the quiet desperation of its characters. Its pacing is taut but never overstated.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Rear Window — A man watches, unsure of his own role</title>
      <link>https://deslypeter.com/writing/rear-window-1954-review</link>
      <guid>https://deslypeter.com/writing/rear-window-1954-review.html?lang=en</guid>
      <description>The tension between voyeurism and moral responsibility is made urgent by the film's tight focus on a single apartment and its inhabitants.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;James Stewart’s character is trapped in a situation where observation blurs into complicity, and the line between witness and participant becomes thin. Grace Kelly’s presence adds an emotional complexity to his isolation, making his choices feel more personal than just investigative. The film builds its mystery not through plot twists but through the weight of what is seen and what remains unseen.&lt;/p&gt;&lt;p&gt;Hitchcock keeps the camera close, highlighting Stewart&amp;#x27;s claustrophobia without showing what he sees. The dialogue is quick, with Thelma Ritter offering a sharp contrast to Stewart&amp;#x27;s uncertainty. The film focuses on moral questions rather than the crime itself, avoiding melodrama.&lt;/p&gt;&lt;p&gt;James Stewart conveys restlessness and doubt without needing to shout or act dramatically. Grace Kelly’s performance is restrained but filled with subtle tension, especially in her interactions with Stewart. Thelma Ritter’s role gives the film a voice of reason amid the growing paranoia.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s structure is tight, letting the mystery unfold naturally instead of relying on fake suspense. Some parts feel rushed, but that adds to the tension. It stays effective by keeping its cleverness in line with its emotional heart.&lt;/p&gt;&lt;p class="specs-note"&gt;1954 · English. &lt;a href="https://en.wikipedia.org/wiki/Rear_Window"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1954/rear_window.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The tension between voyeurism and moral responsibility is made urgent by the film&amp;#x27;s tight focus on a single apartment and its inhabitants.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Vertigo — James Stewart's fragility anchors the film's emotional core</title>
      <link>https://deslypeter.com/writing/vertigo-1958-review</link>
      <guid>https://deslypeter.com/writing/vertigo-1958-review.html?lang=en</guid>
      <description>The film balances obsession and identity with Hitchcock's signature tension. Stewart's performance adds depth beyond the thriller framework.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;John &amp;quot;Scottie&amp;quot; Ferguson&amp;#x27;s fear of heights becomes a metaphor for his inability to navigate emotional truths. His fixation on Madeleine is not just a plot device but a psychological unraveling. Kim Novak brings an eerie presence that makes Scottie&amp;#x27;s obsession feel inevitable.&lt;/p&gt;&lt;p&gt;The film builds tension with long silences and careful camera work. Scenes of watching show how pointless it is to try to control someone else&amp;#x27;s identity. Hitchcock keeps the story grounded in Scottie&amp;#x27;s personal limits instead of going for over-the-top drama.&lt;/p&gt;&lt;p&gt;Stewart conveys vulnerability without melodrama, making his descent into obsession believable. Novak&amp;#x27;s performance is restrained but unsettling, hinting at a deeper psychological fracture. The dialogue often feels like a mask for unspoken anxieties and desires.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s structure reflects Scottie&amp;#x27;s confusion and lack of control. At times, the emotional weight feels lessened by the thriller style. But the acting and direction still leave a lasting, haunting impression that stays after the credits roll.&lt;/p&gt;&lt;p class="specs-note"&gt;1958 · English. &lt;a href="https://en.wikipedia.org/wiki/Vertigo_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1958/vertigo.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances obsession and identity with Hitchcock&amp;#x27;s signature tension. Stewart&amp;#x27;s performance adds depth beyond the thriller framework.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>North by Northwest — A chase with no clear destination</title>
      <link>https://deslypeter.com/writing/north-by-northwest-1959-review</link>
      <guid>https://deslypeter.com/writing/north-by-northwest-1959-review.html?lang=en</guid>
      <description>The film balances humor and suspense, using Grant's charm to hold tension without irony. The pacing keeps the audience guessing but never loses its rhythm.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;North by Northwest leans into a tone that is both sharp and playful, even as it builds paranoia and danger. Cary Grant carries the film with a wit that softens the thriller elements, making the stakes feel personal rather than grandiose. The script gives him moments of clarity amid confusion, which keeps the audience engaged despite the plot&amp;#x27;s twists.&lt;/p&gt;&lt;p&gt;The direction keeps moving fast but never loses its way. Every scene has a purpose, even when the path isn&amp;#x27;t clear. The film shifts between humor and tension smoothly, without feeling forced. The supporting cast adds depth to the story without stealing focus from Grant&amp;#x27;s performance.&lt;/p&gt;&lt;p&gt;Eva Marie Saint brings urgency to her role, grounding the film in emotional realism amidst the spectacle. James Mason&amp;#x27;s performance is calm yet menacing, adding weight to his character&amp;#x27;s motives and actions. Dialogue often hides as much as it reveals, creating a sense of ambiguity that feeds into the suspense.&lt;/p&gt;&lt;p&gt;The film moves quickly but never feels hurried. Even with its fast plot and constant location changes, it manages to keep things steady. There are times when the complexity threatens to drown out the human side of the story, but only a little. Still, the mix of action and character stays strong, making it one of the best thrillers from its era.&lt;/p&gt;&lt;p class="specs-note"&gt;1959 · English. &lt;a href="https://en.wikipedia.org/wiki/North_by_Northwest"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1959/north_by_northwest.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances humor and suspense, using Grant&amp;#x27;s charm to hold tension without irony. The pacing keeps the audience guessing but never loses its rhythm.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Rope — A crime without a body</title>
      <link>https://deslypeter.com/writing/rope-1948-review</link>
      <guid>https://deslypeter.com/writing/rope-1948-review.html?lang=en</guid>
      <description>The film's tension arises from what is not said, and how the audience is forced to read between lines. The performances keep the moral stakes alive despite the sparse action.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Rope unfolds as a conversation between two men who have committed murder but are trying to appear composed and in control. The absence of a corpse or police presence shifts the focus to the psychological pressure within the group. Alfred Hitchcock builds suspense through what is left unsaid rather than through traditional thriller tropes.&lt;/p&gt;&lt;p&gt;The film moves slowly, with long conversations that might test your patience but also keep you involved. James Stewart plays his guilt carefully, without giving it away outright. Farley Granger and John Dall show the smugness and shaky confidence of men who think they&amp;#x27;re untouchable.&lt;/p&gt;&lt;p&gt;The dialogue often feels rehearsed, as if the characters are performing their own escape from consequences. This creates a tension between authenticity and artifice that mirrors the film&amp;#x27;s themes. There is a slight imbalance in how much each character is allowed to reveal about their guilt.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s best quality is how much it holds back. Some scenes feel too talky and slow, but the characters&amp;#x27; moral dilemmas are still gripping enough to keep you watching.&lt;/p&gt;&lt;p class="specs-note"&gt;1948 · English. &lt;a href="https://en.wikipedia.org/wiki/Rope_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1948/rope.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s tension arises from what is not said, and how the audience is forced to read between lines. The performances keep the moral stakes alive despite the sparse action.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Dial M for Murder — A crime plotted in reverse</title>
      <link>https://deslypeter.com/writing/dial-m-for-murder-1954-review</link>
      <guid>https://deslypeter.com/writing/dial-m-for-murder-1954-review.html?lang=en</guid>
      <description>The film's suspense hinges on what the audience knows and what remains hidden. Grace Kelly's performance elevates the tension beyond mere plot mechanics.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The husband plans to kill his wife, but she knows about it and keeps quiet. The story unfolds slowly, with each new detail adding pressure on both the characters and the audience. The real tension comes from the tricky choices the characters make, even if the plot isn&amp;#x27;t always clear.&lt;/p&gt;&lt;p&gt;Hitchcock keeps the audience hooked without relying on tricks or jump scares. The film moves at a steady pace, letting tension grow naturally instead of relying on sudden surprises. The script avoids over-the-top drama by focusing on the mental weight of what&amp;#x27;s happening.&lt;/p&gt;&lt;p&gt;Grace Kelly conveys quiet resolve, making her role more than a passive observer in the plot. Ray Milland&amp;#x27;s performance adds complexity to his character, revealing layers beneath the surface of his actions. Dialogue is taut and purposeful, with each line contributing to the growing suspense.&lt;/p&gt;&lt;p&gt;The film sometimes feels too clever for its own good, making it hard to connect with the characters emotionally. But the acting keeps you interested in what happens to them. Dial M for Murder shows how suspense can be built through characters and situations, not just special effects.&lt;/p&gt;&lt;p class="specs-note"&gt;1954 · English. &lt;a href="https://en.wikipedia.org/wiki/Dial_M_for_Murder"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1954/dial_m_for_murder.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s suspense hinges on what the audience knows and what remains hidden. Grace Kelly&amp;#x27;s performance elevates the tension beyond mere plot mechanics.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Birds — A quiet fear that won't go away</title>
      <link>https://deslypeter.com/writing/the-birds-1963-review</link>
      <guid>https://deslypeter.com/writing/the-birds-1963-review.html?lang=en</guid>
      <description>The Birds balances eerie tension with emotional distance, but its human stories feel secondary to the spectacle of chaos.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film begins with a growing unease as birds begin attacking without warning or pattern. This fear is felt most strongly in the personal relationships between characters rather than in the violence itself. Tippi Hedren&amp;#x27;s performance carries the weight of helplessness, but her role is constrained by the script&amp;#x27;s focus on survival over psychology.&lt;/p&gt;&lt;p&gt;The direction shows how unpredictable the birds are, making their attacks feel almost like they&amp;#x27;re happening naturally. The film builds tension slowly, which contrasts with the sudden bursts of violence. This pacing creates suspense, but it also makes the emotional tension feel stretched out over long periods of nothing much happening.&lt;/p&gt;&lt;p&gt;Rod Taylor&amp;#x27;s character is worried about his wife, but his actions are more about reacting than having a clear reason. The dialogue often feels forced, like the characters are just responding to what&amp;#x27;s happening instead of talking to each other. Jessica Tandy and Suzanne Pleshette bring some depth to their roles, but they don&amp;#x27;t get much time on screen because the film focuses mostly on Hedren&amp;#x27;s character.&lt;/p&gt;&lt;p&gt;The horror comes from the way normalcy is disrupted rather than from graphic violence or jump scares. This approach makes the terror more psychological but less visceral in its impact. Despite its flaws, The Birds remains a compelling study of fear and the limits of human control over nature.&lt;/p&gt;&lt;p class="specs-note"&gt;1963 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Birds_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1963/birds.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Birds balances eerie tension with emotional distance, but its human stories feel secondary to the spectacle of chaos.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Innocents — A fragile mind in a rigid world</title>
      <link>https://deslypeter.com/writing/the-innocents-1961-review</link>
      <guid>https://deslypeter.com/writing/the-innocents-1961-review.html?lang=en</guid>
      <description>The Innocents balances eerie atmosphere with emotional restraint. The central tension lies in what is left unspoken rather than what is revealed.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The performance anchors the film’s unsettling mood without needing explicit horror or melodrama. A woman’s growing unease is conveyed through subtle shifts in tone and posture, not grand gestures or lines. The script avoids cheapening the mystery by keeping its focus on internal conflict rather than external threats.&lt;/p&gt;&lt;p&gt;The direction focuses on objects and spaces, making you wonder if they hold answers. It never gives them away, which builds tension that feels personal rather than exploitative, even when the stakes are high. The pacing is slow, letting unease grow without pushing for a quick resolution.&lt;/p&gt;&lt;p&gt;The dialogue avoids clichés, using quiet ambiguity that shows the characters’ inner feelings. There’s emotional distance that stops the film from feeling too sentimental or manipulative. But this restraint can leave the central mystery underdeveloped, with some questions unanswered in a way that feels more like a gap than a deliberate choice.&lt;/p&gt;&lt;p&gt;The film’s tone is consistently eerie but never overwrought, relying on suggestion rather than shock. Its strongest moments come from the silence between lines, where the audience must do the work of interpretation. This approach makes The Innocents a thoughtful, if occasionally elusive, exploration of psychological tension.&lt;/p&gt;&lt;p class="specs-note"&gt;1961 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Innocents_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Innocents balances eerie atmosphere with emotional restraint. The central tension lies in what is left unspoken rather than what is revealed.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Haunting — A house that resists understanding</title>
      <link>https://deslypeter.com/writing/the-haunting-1963-review</link>
      <guid>https://deslypeter.com/writing/the-haunting-1963-review.html?lang=en</guid>
      <description>The Haunting balances eerie tension with emotional restraint, but its slow pacing occasionally softens the impact of its unsettling ideas.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film explores a group&amp;#x27;s uneasy stay in a house that defies explanation, creating a mood of persistent unease. Each character carries their own fears and secrets, making the setting feel like a mirror for their inner turmoil. The script relies on subtle cues rather than explicit horror tropes to build its tension.&lt;/p&gt;&lt;p&gt;The camera lingers on empty hallways and dimly lit rooms, emphasizing the characters&amp;#x27; isolation. Long stretches of quiet dialogue let the psychological weight of the situation settle. This approach leans more into psychological unease than outright scares, which might underplay the supernatural elements.&lt;/p&gt;&lt;p&gt;Julie Harris conveys a fragile resolve that anchors the film&amp;#x27;s emotional core. Claire Bloom and Russ Tamblyn bring a tense energy to their roles, often hinting at deeper conflicts. The dialogue is sparse but deliberate, with pauses and hesitations that reflect the characters&amp;#x27; uncertainty.&lt;/p&gt;&lt;p&gt;The slow pace may test patience, especially for viewers expecting more traditional horror beats. But this measured approach lets the atmosphere build gradually without relying on jump scares. The Haunting works best as a psychological exploration of fear rather than a conventional ghost story.&lt;/p&gt;&lt;p class="specs-note"&gt;1963 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Haunting_(1963_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1963/haunting.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Haunting balances eerie tension with emotional restraint, but its slow pacing occasionally softens the impact of its unsettling ideas.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Wicker Man — A missing person becomes a ritual</title>
      <link>https://deslypeter.com/writing/the-wicker-man-1973-review</link>
      <guid>https://deslypeter.com/writing/the-wicker-man-1973-review.html?lang=en</guid>
      <description>The film balances eerie folk traditions with a growing sense of unease. The mystery is more about isolation than resolution.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A man arrives on an island where the locals speak in riddles and follow strange customs. His search for a missing girl leads to a confrontation with a system that does not tolerate outsiders. The dialogue is sparse but loaded, forcing the audience to listen closely for hidden meanings.&lt;/p&gt;&lt;p&gt;The island feels remote, which makes the tension worse as the man realizes how little he understands. Every conversation with the villagers adds more confusion and mistrust. The film moves slowly, letting the creepy mood sink in without rushing to a big moment.&lt;/p&gt;&lt;p&gt;The performances are understated but effective, especially in conveying the islanders&amp;#x27; detachment. The man&amp;#x27;s frustration grows as he struggles to make sense of a world that refuses to explain itself. The dialogue often hides more than it reveals, making every exchange feel like a test.&lt;/p&gt;&lt;p&gt;The film doesn&amp;#x27;t explain things directly, which gives it a certain elegance. But sometimes the confusion feels like it&amp;#x27;s just for the sake of it. Still, the heart of the film is in how it shows misunderstanding and control.&lt;/p&gt;&lt;p class="specs-note"&gt;1973 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Wicker_Man_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1973/wicker_man.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances eerie folk traditions with a growing sense of unease. The mystery is more about isolation than resolution.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Changeling — A house that refuses to be forgotten</title>
      <link>https://deslypeter.com/writing/the-changeling-1980-review</link>
      <guid>https://deslypeter.com/writing/the-changeling-1980-review.html?lang=en</guid>
      <description>The Changeling balances eerie atmosphere with psychological unease, but its emotional core feels underdeveloped despite strong performances.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film follows a composer who becomes paranoid after moving into a haunted mansion, but the haunting never really makes sense. George C. Scott does a good job showing his character&amp;#x27;s unraveling, but the script doesn&amp;#x27;t give him much to work with. Trish Van Devere adds some emotional weight as his wife, though her role gets lost in the supernatural stuff.&lt;/p&gt;&lt;p&gt;The film moves slowly, using silence and hints to build tension instead of jumping scares. The sound design is key—it creates a heavy, lingering mood even during quiet scenes. But the film&amp;#x27;s vagueness can make the protagonist&amp;#x27;s reasons for acting the way he does feel unclear.&lt;/p&gt;&lt;p&gt;Dialogue is sparse but effective, with exchanges often carrying subtext that hints at deeper turmoil. The mansion itself feels like a character, but its presence is more atmospheric than narratively essential. Melvyn Douglas delivers a chilling performance as the house’s former occupant, adding a layer of mystery to the unfolding horror.&lt;/p&gt;&lt;p&gt;The film never really explains the supernatural stuff, which might leave some viewers wanting more answers. It&amp;#x27;s more about the psychology of the characters than traditional horror, so it&amp;#x27;s more like a slow-burn character study than a typical ghost story. Even with its flaws, it&amp;#x27;s still pretty gripping because of the mood and the performances.&lt;/p&gt;&lt;p class="specs-note"&gt;1980 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Changeling_(1980_film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Changeling balances eerie atmosphere with psychological unease, but its emotional core feels underdeveloped despite strong performances.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Session 9 — A haunted building and a fraying crew</title>
      <link>https://deslypeter.com/writing/session-9-2001-review</link>
      <guid>https://deslypeter.com/writing/session-9-2001-review.html?lang=en</guid>
      <description>The film leans on slow dread but struggles to balance its eerie mood with coherent character development. The setting is more unsettling than the people within it.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The crew’s isolation in the asylum creates pressure that builds slowly but never fully erupts into clear conflict. David Caruso plays a leader trying to hold things together, but his performance lacks the weight needed for such a tense environment. Peter Mullan adds some grit, but his role remains underexplored and underdeveloped.&lt;/p&gt;&lt;p&gt;The audio sessions from the asylum patient are eerie but don&amp;#x27;t connect well with the crew&amp;#x27;s struggles. The film builds tension through suggestion rather than direct horror. There&amp;#x27;s some tension between the crew members, but it doesn&amp;#x27;t create a strong shared emotional experience.&lt;/p&gt;&lt;p&gt;Dialogue feels stilted at times, especially during moments meant to convey unease or fear. The pacing drags in quieter scenes, making the horror feel more like a mood than a force. Josh Lucas and Brendan Sexton III contribute to the group’s tension but lack clear personal motivations.&lt;/p&gt;&lt;p&gt;The film keeps you guessing but doesn&amp;#x27;t fully answer the questions it raises. Its best parts come from the eerie atmosphere rather than its characters or plot. Despite its flaws, Session 9 works as a mood piece that leaves you with a sense of something unseen.&lt;/p&gt;&lt;p class="specs-note"&gt;2001 · English. &lt;a href="https://en.wikipedia.org/wiki/Session_9"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/10972"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on slow dread but struggles to balance its eerie mood with coherent character development. The setting is more unsettling than the people within it.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Jacob's Ladder — Tim Robbins as a haunted veteran</title>
      <link>https://deslypeter.com/writing/jacob-s-ladder-1990-review</link>
      <guid>https://deslypeter.com/writing/jacob-s-ladder-1990-review.html?lang=en</guid>
      <description>The film's psychological unease is well-acted but its surrealism often feels more like confusion than a deliberate style.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Jacob Singer’s post-Vietnam hallucinations are portrayed with raw intensity by Tim Robbins, making his torment feel personal rather than abstract. His struggle to distinguish reality from delusion forms the core of the film&amp;#x27;s emotional tension. The script leaves much unresolved, which may frustrate those seeking clear answers.&lt;/p&gt;&lt;p&gt;The visuals are disorienting and can make the story harder to follow. The film moves at an uneven pace, with some parts dragging and others feeling rushed. The tone jumps between horror and drama without a clear reason.&lt;/p&gt;&lt;p&gt;Tim Robbins does a good job showing pain, but his performance doesn&amp;#x27;t quite match the film&amp;#x27;s wild tone. Elizabeth Peña and Danny Aiello are decent in their roles, but they don&amp;#x27;t have much to work with. The dialogue often feels forced, like it&amp;#x27;s trying too hard to explain things that don&amp;#x27;t make much sense.&lt;/p&gt;&lt;p&gt;The film has good intentions, but it doesn&amp;#x27;t hold together well. It makes you feel uneasy, but it doesn&amp;#x27;t fully explain why the surreal parts are happening. Even with its problems, it&amp;#x27;s still interesting as a look at trauma and how fragile the mind can be.&lt;/p&gt;&lt;p class="specs-note"&gt;1990 · English. &lt;a href="https://en.wikipedia.org/wiki/Jacob%2527s_Ladder_(1990_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1990/jacobs_ladder.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s psychological unease is well-acted but its surrealism often feels more like confusion than a deliberate style.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Dead Calm — A storm of isolation and suspicion</title>
      <link>https://deslypeter.com/writing/dead-calm-1989-review</link>
      <guid>https://deslypeter.com/writing/dead-calm-1989-review.html?lang=en</guid>
      <description>The film's emotional core is undercut by its reliance on gimmickry, though the central performances carry some weight.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A couple grieving their son ends up stranded at sea with a mysterious stranger. The setting&amp;#x27;s isolation raises the tension, but it also limits how much the characters can develop. The story leans on suspense instead of real emotional truth, making the stakes feel fake.&lt;/p&gt;&lt;p&gt;The direction is smooth but shallow, focusing more on looks than on what&amp;#x27;s going on inside the characters&amp;#x27; heads. The pacing is all over the place, with long quiet stretches that don&amp;#x27;t build real unease or connection. The film feels more like a puzzle than a personal journey, which weakens how much it affects you emotionally.&lt;/p&gt;&lt;p&gt;Nicole Kidman and Sam Neill try hard but are held back by the script. Their performances hint at deeper layers, but the dialogue doesn&amp;#x27;t let them explore them much. Billy Zane&amp;#x27;s character is underdeveloped, making him feel like just a plot device instead of a real person.&lt;/p&gt;&lt;p&gt;The film tries too hard to shock, which takes away from its psychological themes. There are some tense moments, but they&amp;#x27;re lost in how self-aware the film feels. Even with these problems, the main actors and the atmosphere are enough to make it worth a watch.&lt;/p&gt;&lt;p class="specs-note"&gt;1989 · English. &lt;a href="https://en.wikipedia.org/wiki/Dead_Calm_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1989/dead_calm.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s emotional core is undercut by its reliance on gimmickry, though the central performances carry some weight.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Breakdown — A man stranded in a remote town</title>
      <link>https://deslypeter.com/writing/breakdown-1997-review</link>
      <guid>https://deslypeter.com/writing/breakdown-1997-review.html?lang=en</guid>
      <description>The film leans on tension but falters in its emotional depth. Kurt Russell's performance is strong, yet the script limits the character's complexity.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A man is trapped in a small town after his car breaks down, leading to a tense standoff with locals. The situation escalates as trust becomes scarce and motives remain unclear. The film builds suspense but struggles to justify the characters&amp;#x27; extreme actions.&lt;/p&gt;&lt;p&gt;The direction keeps the tension high, especially during confrontations between Russell&amp;#x27;s character and the townspeople. Pacing is deliberate, with quiet moments that add to the unease. Some scenes drag, though, which softens the urgency of the main conflict.&lt;/p&gt;&lt;p&gt;Kurt Russell brings a grounded intensity to his role, making his desperation believable. Kathleen Quinlan and J. T. Walsh provide solid support but lack fully developed arcs. Dialogue is functional rather than insightful, often relying on tension over character development.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s strength is its atmosphere and the feeling of isolation in the setting. It sometimes feels more like a procedural than a psychological thriller. Despite its flaws, it&amp;#x27;s an effective, if somewhat formulaic, look at fear and mistrust.&lt;/p&gt;&lt;p class="specs-note"&gt;1997 · English. &lt;a href="https://en.wikipedia.org/wiki/Breakdown_(1997_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/2163"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1997/breakdown.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on tension but falters in its emotional depth. Kurt Russell&amp;#x27;s performance is strong, yet the script limits the character&amp;#x27;s complexity.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Blue Steel — A flawed but earnest attempt at moral complexity</title>
      <link>https://deslypeter.com/writing/blue-steel-1990-review</link>
      <guid>https://deslypeter.com/writing/blue-steel-1990-review.html?lang=en</guid>
      <description>The film’s central conflict is underdeveloped, making emotional stakes feel shallow despite the cast's efforts.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Blue Steel follows a rookie cop who kills a suspect and gets involved with a witness. The tension between them doesn&amp;#x27;t feel deep enough. Jamie Lee Curtis gives a strong performance, but the script doesn&amp;#x27;t give her much to work with. The idea is interesting, but it never gets fully explored. Character motivations feel underdeveloped, which weakens the story.&lt;/p&gt;&lt;p&gt;Kathryn Bigelow focuses more on action than on the main relationship or theme. The pacing feels off, moving between tense moments and resolutions that don&amp;#x27;t feel earned. The film&amp;#x27;s structure feels rushed, with important emotional moments skipped over in favor of procedural scenes.&lt;/p&gt;&lt;p&gt;Jamie Lee Curtis does a good job, but her character doesn&amp;#x27;t have much to work with. Ron Silver and Clancy Brown are solid in their roles, but the script doesn&amp;#x27;t use them well. The dialogue often feels forced, missing the urgency and emotional weight of the main conflict.&lt;/p&gt;&lt;p&gt;The film tries to explore moral ambiguity but fails because the story and characters aren&amp;#x27;t fully developed. It has some potential in looking at guilt and redemption, but that potential never really comes through. The cast tries their best, which helps balance the film&amp;#x27;s weaknesses a little.&lt;/p&gt;&lt;p class="specs-note"&gt;1990 · English. &lt;a href="https://en.wikipedia.org/wiki/Blue_Steel_(1990_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1990/blue_steel.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film’s central conflict is underdeveloped, making emotional stakes feel shallow despite the cast&amp;#x27;s efforts.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Red Rock West — A man with a gun and no clear purpose</title>
      <link>https://deslypeter.com/writing/red-rock-west-1993-review</link>
      <guid>https://deslypeter.com/writing/red-rock-west-1993-review.html?lang=en</guid>
      <description>The film keeps tension between its characters but doesn't fully commit to its moral grey areas. Nicolas Cage gives a strong performance, but the script has uneven stakes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict hinges on a man who finds himself caught between two criminals with opposing goals. This situation creates immediate pressure without offering clear escape routes or moral clarity. John Dahl frames the tension as a personal struggle rather than just a crime thriller.&lt;/p&gt;&lt;p&gt;The pacing is slow, and some scenes drag past what they need to do emotionally. The cinematography uses shadow and silence to build unease, but not always. Some dialogue feels rushed or too explanatory.&lt;/p&gt;&lt;p&gt;Nicolas Cage brings intensity without overacting, grounding the character in frustration rather than melodrama. Dennis Hopper&amp;#x27;s presence adds a layer of menace, but his role is underdeveloped and underused. Lara Flynn Boyle conveys vulnerability effectively, though her character lacks depth beyond her role as a pawn.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s moral grey areas are its best part, but it never wraps up in a satisfying way. Some choices feel random, which weakens the tension built earlier. Despite its flaws, Red Rock West stays engaging because of its mood and the actors&amp;#x27; commitment.&lt;/p&gt;&lt;p class="specs-note"&gt;1993 · English. &lt;a href="https://en.wikipedia.org/wiki/Red_Rock_West"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1993/red_rock_west.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film keeps tension between its characters but doesn&amp;#x27;t fully commit to its moral grey areas. Nicolas Cage gives a strong performance, but the script has uneven stakes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>One False Move — Bill Paxton's desperation feels raw and immediate</title>
      <link>https://deslypeter.com/writing/one-false-move-1992-review</link>
      <guid>https://deslypeter.com/writing/one-false-move-1992-review.html?lang=en</guid>
      <description>The film mixes moral uncertainty with a slow, tense thriller feel. It doesn’t need a big budget to make its emotional points or keep you on edge.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Bill Paxton plays a man stuck in a messy moral situation, letting his fear and regret move the story forward without getting melodramatic. Cynda Williams brings both fragility and strength to her role, keeping the film’s emotional heart steady. The dialogue sounds real, avoiding tired crime-thriller phrases while keeping the tension high.&lt;/p&gt;&lt;p&gt;The film moves slowly, giving quiet moments to build pressure before sudden confrontations. Billy Bob Thornton plays the bad guy with a calm that’s really creepy, contrasting with Paxton’s breaking mind. Michael Beach adds another layer as someone caught between sides, making things more complicated.&lt;/p&gt;&lt;p&gt;The film focuses on its characters’ moral problems instead of action or twists. Some scenes drag a bit, but they also show how serious the psychological stakes are. The direction keeps things tight on performances and conversations, not relying on flashy visuals.&lt;/p&gt;&lt;p&gt;The low-budget style feels purposeful, making the story’s claustrophobic feel stronger. The moral questions it raises stick around after the film ends, even if some character journeys feel a bit unfinished. It’s still a strong example of how tension can come from dialogue and acting instead of big special effects.&lt;/p&gt;&lt;p class="specs-note"&gt;1992 · English. &lt;a href="https://en.wikipedia.org/wiki/One_False_Move"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1992/one_false_move.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film mixes moral uncertainty with a slow, tense thriller feel. It doesn’t need a big budget to make its emotional points or keep you on edge.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Last Seduction — A tense, morally ambiguous world</title>
      <link>https://deslypeter.com/writing/the-last-seduction-1994-review</link>
      <guid>https://deslypeter.com/writing/the-last-seduction-1994-review.html?lang=en</guid>
      <description>The film leans into its tension but falters in balancing character depth with its stylized plotting. Linda Fiorentino anchors it with a performance that feels both sharp and emotionally distant.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict revolves around a woman navigating a dangerous web of deceit, where every choice carries high stakes. Her motivations are layered but often obscured by the film’s emphasis on its own narrative mechanics. The dialogue leans into slickness, which can feel more like a stylistic choice than an organic character trait.&lt;/p&gt;&lt;p&gt;The direction focuses more on mood than on making things clear, which can make the emotional heart of the film feel a bit lost. The scenes move slowly, which might make it harder for the audience to connect with the main character. The pacing has a rhythm that feels more like a play than real life.&lt;/p&gt;&lt;p&gt;Linda Fiorentino brings a calculated intensity that keeps the character compelling, even when her actions are unclear. Bill Pullman and Peter Berg provide solid support but are often secondary to the film’s visual and tonal ambitions. The dialogue between characters is sharp but occasionally feels like it exists more for style than substance.&lt;/p&gt;&lt;p&gt;The film clearly wants to be ambitious, but that ambition can make the emotional parts of the story feel less important. Sometimes it seems more interested in its own look than in the real feelings of its characters or their relationships. Even with these issues, the main performance and the tense atmosphere keep it from being forgettable, even if it doesn&amp;#x27;t fully deliver.&lt;/p&gt;&lt;p class="specs-note"&gt;1994 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Last_Seduction"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1994/last_seduction.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans into its tension but falters in balancing character depth with its stylized plotting. Linda Fiorentino anchors it with a performance that feels both sharp and emotionally distant.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Spanish Prisoner — A puzzle with a hidden agenda</title>
      <link>https://deslypeter.com/writing/the-spanish-prisoner-1997-review</link>
      <guid>https://deslypeter.com/writing/the-spanish-prisoner-1997-review.html?lang=en</guid>
      <description>The Spanish Prisoner unfolds as a slow-burn deception where trust is always suspect. The script leans on dialogue to mask its own uncertainties.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s central conflict hinges on a man being manipulated by someone he believes is helping him. This tension is built through conversations that never fully explain their own logic. David Mamet&amp;#x27;s script relies on verbal sparring to keep the mystery alive, but this can also make the stakes feel abstract.&lt;/p&gt;&lt;p&gt;The film moves slowly, with long conversations that don&amp;#x27;t always point somewhere. Sometimes the dialogue feels more like a script than real talking. This makes it harder to care about what happens to the characters, even though the plot twists are still interesting.&lt;/p&gt;&lt;p&gt;Campbell Scott&amp;#x27;s performance conveys confusion but not enough emotional depth to anchor the story. Steve Martin plays his role with dry wit, yet his character&amp;#x27;s motives remain underdeveloped. Rebecca Pidgeon offers a more grounded presence, but her role is constrained by the script&amp;#x27;s opacity.&lt;/p&gt;&lt;p&gt;The film has big ideas, but some parts feel empty emotionally. The focus on talking can make the characters feel more like parts of a puzzle than real people. Still, it&amp;#x27;s an interesting experiment in tricking the audience.&lt;/p&gt;&lt;p class="specs-note"&gt;1997 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Spanish_Prisoner"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/29193"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1998/spanish_prisoner.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Spanish Prisoner unfolds as a slow-burn deception where trust is always suspect. The script leans on dialogue to mask its own uncertainties.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>House of Games — A con game with a moral twist</title>
      <link>https://deslypeter.com/writing/house-of-games-1987-review</link>
      <guid>https://deslypeter.com/writing/house-of-games-1987-review.html?lang=en</guid>
      <description>The film balances suspense and character depth but leans too heavily on its own cleverness at times. Mantegna's performance grounds the story in real emotional stakes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;House of Games follows a man who gets drawn into a high-stakes con, only to find himself trapped by his own choices. The central conflict is not just about money but about trust and betrayal, which gives the film more than just a plot-driven appeal. Mantegna&amp;#x27;s character is both victim and participant, making his moral dilemmas feel urgent rather than academic.&lt;/p&gt;&lt;p&gt;The dialogue is snappy, with tense back-and-forth that shows the characters&amp;#x27; conflicts. Some parts feel a bit rushed, especially when switching viewpoints or dropping secrets. But the film keeps a good pace that holds your attention all the way through.&lt;/p&gt;&lt;p&gt;Lindsay Crouse and Ricky Jay bring a level of unpredictability to their roles, making their motives harder to read. Their performances suggest hidden layers beneath the surface, which adds complexity to the relationships on screen. The script gives them room to improvise, but some lines feel rehearsed rather than spontaneous.&lt;/p&gt;&lt;p&gt;The film raises some clear moral questions, but the ending doesn&amp;#x27;t quite match the setup. There&amp;#x27;s a gap between what the film aims for and how some scenes play out. Still, the emotional heart of House of Games is strong enough to make it a solid entry in Mamet&amp;#x27;s early work.&lt;/p&gt;&lt;p class="specs-note"&gt;1987 · English. &lt;a href="https://en.wikipedia.org/wiki/House_of_Games"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1987/house_of_games.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances suspense and character depth but leans too heavily on its own cleverness at times. Mantegna&amp;#x27;s performance grounds the story in real emotional stakes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Grifters — Trust as a fragile currency</title>
      <link>https://deslypeter.com/writing/the-grifters-1990-review</link>
      <guid>https://deslypeter.com/writing/the-grifters-1990-review.html?lang=en</guid>
      <description>The Grifters balances crime and emotion but leans too heavily on its own cleverness. The performances are strong, yet the script sometimes undermines its own stakes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A con artist’s confidence is tested by the people she depends on, creating tension that feels personal rather than procedural. John Cusack plays a man caught between loyalty and self-interest, but his character’s choices feel calculated rather than urgent. Anjelica Huston and Annette Bening bring sharpness to their roles, yet their interactions occasionally lack the emotional friction needed for real stakes.&lt;/p&gt;&lt;p&gt;The dialogue is tight and layered, often revealing secrets through what is left unsaid rather than outright confession. Stephen Frears’ direction keeps the film visually crisp but rarely lingers on the characters’ internal conflicts long enough to deepen them. Pacing shifts between tense confrontations and quieter moments, though some transitions feel abrupt or unearned.&lt;/p&gt;&lt;p&gt;John Cusack’s performance grounds the film, even when his character’s decisions strain credibility. Anjelica Huston’s presence adds a layer of menace, but her role is underexplored compared to the other leads. Annette Bening’s portrayal of a manipulative figure is compelling, though her motivations are sometimes unclear.&lt;/p&gt;&lt;p&gt;The script leans into its own cleverness at times, reducing emotional moments to puzzle pieces to be solved. This approach risks distancing the audience from the characters’ vulnerabilities and desires. Despite these flaws, the film remains a well-crafted crime drama with performances that elevate its material.&lt;/p&gt;&lt;p class="specs-note"&gt;1990 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Grifters_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1990/grifters.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Grifters balances crime and emotion but leans too heavily on its own cleverness. The performances are strong, yet the script sometimes undermines its own stakes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Limey — Terence Stamp's weary intensity anchors the film</title>
      <link>https://deslypeter.com/writing/the-limey-1999-review</link>
      <guid>https://deslypeter.com/writing/the-limey-1999-review.html?lang=en</guid>
      <description>The Limey mixes gritty crime with personal tragedy but falters in balancing its emotional stakes with procedural beats.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Terence Stamp&amp;#x27;s portrayal of a broken man searching for truth is both weary and compelling, anchoring the film&amp;#x27;s emotional core. The script leans on dialogue to reveal backstory rather than action, which risks slowing momentum in key moments. Steven Soderbergh&amp;#x27;s direction keeps the tone lean but occasionally undercuts the drama with abrupt shifts in focus.&lt;/p&gt;&lt;p&gt;The Limey&amp;#x27;s best part is Terence Stamp&amp;#x27;s performance, which carries the weight of unresolved grief and moral ambiguity. Lesley Ann Warren and Luis Guzmán add tension but are often overshadowed by Stamp. The film jumps between past and present, creating a fragmented story that feels more like a puzzle than a personal journey.&lt;/p&gt;&lt;p&gt;Dialogue is sharp but often feels disconnected from the characters&amp;#x27; emotions, especially in quiet scenes. The pacing is uneven—some parts feel rushed, while others drag with too much exposition. The Limey tries to mix crime thriller with family drama, but it doesn&amp;#x27;t always work.&lt;/p&gt;&lt;p&gt;The film tries to give characters depth, but it sometimes clashes with its more stylized moments. The emotional stakes are real, but the ending feels rushed compared to the buildup. Despite its flaws, the film stays memorable because of Stamp&amp;#x27;s performance and its willingness to explore moral complexity.&lt;/p&gt;&lt;p class="specs-note"&gt;1999 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Limey"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/10388"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1999/limey.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Limey mixes gritty crime with personal tragedy but falters in balancing its emotional stakes with procedural beats.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Following — A quiet unease lingers in the air</title>
      <link>https://deslypeter.com/writing/following-1998-review</link>
      <guid>https://deslypeter.com/writing/following-1998-review.html?lang=en</guid>
      <description>The film’s tension comes from its own lack of direction, leaving the audience as lost as the protagonist. The pacing is deliberate but never fully satisfying.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict revolves around a man who follows someone he barely knows, with no clear reason why. There is an underlying frustration that builds without resolution or release. The film’s structure feels like it is waiting for something to happen, but nothing does.&lt;/p&gt;&lt;p&gt;The film leans into ambiguity, but this often leaves the viewer disconnected from the stakes. The dialogue is sparse and repetitive, offering little insight into the characters’ motivations. Without a clear narrative path, it’s hard to invest in the protagonist’s journey.&lt;/p&gt;&lt;p&gt;Performances are understated, but they do not provide enough emotional depth to anchor the film. The tone remains consistently bleak without ever becoming truly unsettling or engaging. There is a sense of aimlessness that never fully resolves into a satisfying conclusion.&lt;/p&gt;&lt;p&gt;The film’s minimalism works at times but often feels like an excuse for lack of substance. It succeeds in creating discomfort, but not enough to make the experience memorable. The balance between form and content tilts too far toward the former, leaving little emotional impact.&lt;/p&gt;&lt;p class="specs-note"&gt;1998 · English. &lt;a href="https://en.wikipedia.org/wiki/Following_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film’s tension comes from its own lack of direction, leaving the audience as lost as the protagonist. The pacing is deliberate but never fully satisfying.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Blue Velvet — A quiet suburban mystery with violent undercurrents</title>
      <link>https://deslypeter.com/writing/blue-velvet-1986-review</link>
      <guid>https://deslypeter.com/writing/blue-velvet-1986-review.html?lang=en</guid>
      <description>The film balances innocence and horror without leaning into shock for its own sake. The central conflict is driven by a young man's curiosity rather than a detective's obsession.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story begins with a discovery that feels accidental but immediately pulls the viewer into something far darker. The protagonist&amp;#x27;s journey is guided not by certainty, but by fragments of information he cannot fully trust. Lynch&amp;#x27;s direction keeps the tone ambiguous, never letting the audience feel entirely at home in this world.&lt;/p&gt;&lt;p&gt;The dialogue sometimes feels forced or too dramatic, especially in scenes with the criminals. Isabella Rossellini and Laura Dern add depth to their roles, even when the script doesn&amp;#x27;t give them much to work with. Dennis Hopper&amp;#x27;s performance is more caricature than character, which fits the film&amp;#x27;s style but doesn&amp;#x27;t give his role much depth.&lt;/p&gt;&lt;p&gt;The pacing is deliberate, allowing moments of quiet tension to build before sudden bursts of violence. There are long stretches where the plot feels slow or meandering, especially in the second act. Kyle MacLachlan embodies a mix of naivety and determination that makes the protagonist relatable despite his choices.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s structure can be confusing, especially when it switches between different viewpoints. Even with its flaws, Blue Velvet is still a brave look at morality and desire in a world that doesn&amp;#x27;t have clear answers. It stays with you more for how it unsettles than for how much it entertains.&lt;/p&gt;&lt;p class="specs-note"&gt;1986 · English. &lt;a href="https://en.wikipedia.org/wiki/Blue_Velvet_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances innocence and horror without leaning into shock for its own sake. The central conflict is driven by a young man&amp;#x27;s curiosity rather than a detective&amp;#x27;s obsession.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Lost Highway — A dreamer trapped by his own confusion</title>
      <link>https://deslypeter.com/writing/lost-highway-1997-review</link>
      <guid>https://deslypeter.com/writing/lost-highway-1997-review.html?lang=en</guid>
      <description>Lost Highway leans into its surreal tone but struggles to balance mystery with emotional clarity. The central tension remains compelling despite uneven pacing.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film’s structure moves between reality and something more uncertain, often leaving the audience as lost as the protagonist. Bill Pullman plays a man caught between his past and an identity he cannot fully understand or control. Patricia Arquette’s performance adds emotional depth to a story that often feels more abstract than personal.&lt;/p&gt;&lt;p&gt;The VHS tapes are meant to help tell the story but don’t really explain what’s going on. Lynch’s direction focuses on being vague, which can make the characters feel less developed. The film sometimes moves too fast in its strange parts, leaving the emotional side of the story behind.&lt;/p&gt;&lt;p&gt;Balthazar Getty’s character adds more confusion without giving it a clear ending. Robert Loggia and Robert Blake do solid work but aren’t used enough in a film that’s more about feeling than action. The dialogue often feels like it’s going around in circles instead of getting somewhere.&lt;/p&gt;&lt;p&gt;The surreal parts work but can take away from the real human problems at the heart of the story. There’s a clear idea about identity, but it’s not put together well enough to have a strong effect. Even with its problems, Lost Highway is still a brave try at telling a story in a new way and creating a creepy mood.&lt;/p&gt;&lt;p class="specs-note"&gt;1997 · English. &lt;a href="https://en.wikipedia.org/wiki/Lost_Highway_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Lost Highway leans into its surreal tone but struggles to balance mystery with emotional clarity. The central tension remains compelling despite uneven pacing.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Eraserhead — A father's helplessness in a nightmarish world</title>
      <link>https://deslypeter.com/writing/eraserhead-1977-review</link>
      <guid>https://deslypeter.com/writing/eraserhead-1977-review.html?lang=en</guid>
      <description>The film's surreal tone and unsettling atmosphere make it memorable, though its emotional core feels underdeveloped compared to its stylistic ambition.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A man tries to care for his deformed child in a bleak, dreamlike world. His helplessness is made worse by the cold environment and the lack of help or direction. The story doesn&amp;#x27;t follow normal rules, which might leave some viewers feeling disconnected from the main character&amp;#x27;s emotions.&lt;/p&gt;&lt;p&gt;The black-and-white look adds to the eerie mood but doesn&amp;#x27;t always help the story&amp;#x27;s emotional side. The sounds and music make you feel uneasy throughout. Even though the atmosphere is strong, the film moves slowly, which can make it hard for some to get involved in the main conflict.&lt;/p&gt;&lt;p&gt;Jack Nance does a good job showing quiet despair, but his role is limited by the unclear script. Charlotte Stewart adds a fragile feel to her character, but her reasons for acting the way she does aren&amp;#x27;t explored much. The dialogue is minimal and often confusing, which might frustrate people looking for clear emotions or connections.&lt;/p&gt;&lt;p&gt;The surreal parts are creative but sometimes take away from the real human story. The film looks amazing, but its abstract style can make its themes hard to understand for some. It&amp;#x27;s a brave experiment in form, but how much it affects you depends on how much you can handle the uncertainty.&lt;/p&gt;&lt;p class="specs-note"&gt;1977 · English. &lt;a href="https://en.wikipedia.org/wiki/Eraserhead"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/985"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1977/eraserhead.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s surreal tone and unsettling atmosphere make it memorable, though its emotional core feels underdeveloped compared to its stylistic ambition.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Inland Empire — A performance without a clear role</title>
      <link>https://deslypeter.com/writing/inland-empire-2006-review</link>
      <guid>https://deslypeter.com/writing/inland-empire-2006-review.html?lang=en</guid>
      <description>The film's dreamlike structure makes it hard to connect with emotionally. The surrealism feels more like a surface trick than something deeper.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A main character moves through scenes, but their role or purpose isn&amp;#x27;t clear. Their actions and choices lack a consistent motivation. The dialogue often feels disconnected from the story or character development.&lt;/p&gt;&lt;p&gt;Visuals shift abruptly without warning, making it hard to follow the intended rhythm of the story. The pacing varies wildly, sometimes dragging and then suddenly rushing forward with no explanation. There is little in the way of a traditional plot that can be followed or understood easily.&lt;/p&gt;&lt;p&gt;The acting doesn&amp;#x27;t give the surreal elements much weight. Performances are uneven, making it hard to care about any character. The film&amp;#x27;s abstract style makes it hard to tell if it&amp;#x27;s working without clearer direction.&lt;/p&gt;&lt;p&gt;The style is interesting, but it doesn&amp;#x27;t make up for the lack of substance. The dreamlike tone is intriguing, but it can&amp;#x27;t fix the missing story or purpose. The film tries bold things, but its flaws make it a mixed experience overall.&lt;/p&gt;&lt;p class="specs-note"&gt;2006 · English. &lt;a href="https://en.wikipedia.org/wiki/Inland_Empire_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2006/inland_empire.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s dreamlike structure makes it hard to connect with emotionally. The surrealism feels more like a surface trick than something deeper.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Double — A quiet unease in a rigid world</title>
      <link>https://deslypeter.com/writing/the-double-2013-review</link>
      <guid>https://deslypeter.com/writing/the-double-2013-review.html?lang=en</guid>
      <description>The film balances surreal tension with emotional restraint, but its abstract tone leaves some moments underdeveloped. The central conflict is clear but rarely deeply explored.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story unfolds in a place where rules are strict and personal space is scarce, creating an atmosphere of constant pressure. A man finds himself in a situation where his own identity feels uncertain, and the people around him seem to know more than they let on. His attempts to understand what is happening are met with confusion and occasional hostility from those he trusts least.&lt;/p&gt;&lt;p&gt;The film focuses on stillness and tight spaces, which makes the tension feel heavy but can also feel restrictive. Long silences and little talking make conversations feel uneasy, even when there&amp;#x27;s no real danger. The pace starts slow and then speeds up in a way that feels a bit forced instead of natural.&lt;/p&gt;&lt;p&gt;The central performance carries much of the weight, though it lacks the depth needed to fully justify the character&amp;#x27;s choices. Supporting characters are sketched with minimal detail, making their motivations and loyalties hard to grasp. Dialogue is often cryptic, which builds mystery but also distances the audience from emotional investment.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s abstract style is its best part, but it might turn off people who want more straightforward storytelling. There&amp;#x27;s a clear effort to explore psychology, but it stays just out of reach for most of the movie. Even with its problems, it gives an interesting look at identity and loneliness that stays with you after it&amp;#x27;s over.&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Double_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances surreal tension with emotional restraint, but its abstract tone leaves some moments underdeveloped. The central conflict is clear but rarely deeply explored.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Enemy — A doppelgänger in the mirror</title>
      <link>https://deslypeter.com/writing/enemy-2013-review</link>
      <guid>https://deslypeter.com/writing/enemy-2013-review.html?lang=en</guid>
      <description>The film leans on eerie repetition but struggles to connect its protagonist's obsession with a deeper emotional truth.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story builds on repeated meetings that feel more like rituals than revelations. The main character&amp;#x27;s obsession doesn&amp;#x27;t clearly tie to deeper emotions, so his actions don&amp;#x27;t feel urgent enough. The director uses visual symbols well but doesn&amp;#x27;t use them enough to explore the character&amp;#x27;s mind.&lt;/p&gt;&lt;p&gt;The film moves slowly, but it often feels like a style choice rather than something the story needs. There&amp;#x27;s tension between how it looks and what it&amp;#x27;s trying to say, and that tension never really gets resolved. The dialogue is minimal but often doesn&amp;#x27;t match what the characters are feeling inside.&lt;/p&gt;&lt;p&gt;The acting is okay but not especially surprising or emotional. The tone shifts between creepy and boring without a clear path. The ending leaves more questions than answers, which might be on purpose but doesn&amp;#x27;t feel earned.&lt;/p&gt;&lt;p&gt;The main idea has promise but isn&amp;#x27;t fully worked out. The repetition feels like a shortcut instead of a meaningful theme. Even with its problems, the film offers an interesting, if unfinished, look at identity and obsession.&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://en.wikipedia.org/wiki/Enemy_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on eerie repetition but struggles to connect its protagonist&amp;#x27;s obsession with a deeper emotional truth.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Fall — A fractured fairy tale with a broken hero</title>
      <link>https://deslypeter.com/writing/the-fall-2006-review</link>
      <guid>https://deslypeter.com/writing/the-fall-2006-review.html?lang=en</guid>
      <description>The Fall balances whimsy and tragedy, but its emotional core feels slightly distant from the fantastical world it creates.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A man falls in love with a woman who is not what she seems, but her story is told through a child’s imagination. The film uses fantasy to explore real pain, but it doesn’t fully commit to either tone. This duality makes the narrative both engaging and emotionally inconsistent.&lt;/p&gt;&lt;p&gt;The pacing shifts unpredictably between dreamlike sequences and abrupt reality checks. Each transition feels intentional but lacks a clear emotional anchor for the audience. The dialogue leans on poetic phrasing that sometimes overshadows the characters’ motivations.&lt;/p&gt;&lt;p&gt;The central performer brings a magnetic quality to their role, but their emotional range is limited by the script. Supporting characters are defined more by their roles than by personal depth or conflict. The film’s visual style enhances its fairy-tale feel but doesn’t always serve the story’s emotional stakes.&lt;/p&gt;&lt;p&gt;There is a tension between the film&amp;#x27;s ambitions and its execution that prevents full immersion. Its ambition is admirable, but it occasionally sacrifices character clarity for stylistic flair. Despite this, The Fall remains a memorable exploration of love, loss, and storytelling.&lt;/p&gt;&lt;p class="specs-note"&gt;2006 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Fall_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Fall balances whimsy and tragedy, but its emotional core feels slightly distant from the fantastical world it creates.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Upstream Color — A fractured emotional landscape</title>
      <link>https://deslypeter.com/writing/upstream-color-2013-review</link>
      <guid>https://deslypeter.com/writing/upstream-color-2013-review.html?lang=en</guid>
      <description>Upstream Color balances surreal imagery with emotional ambiguity, but its abstract tone limits the impact of its central relationship.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s main conflict is a connection that forms without a clear reason or shared understanding. Characters go through odd situations without explanations, so their motives stay unclear. Shane Carruth&amp;#x27;s script doesn&amp;#x27;t follow traditional storytelling, which can make it hard to feel emotionally involved.&lt;/p&gt;&lt;p&gt;The film moves slowly and sometimes wanders, which can test the viewer&amp;#x27;s patience. Visual themes repeat without explanation, making it hard to understand their meaning. There are quiet, beautiful moments that hint at a deeper story beneath the surface.&lt;/p&gt;&lt;p&gt;Shane Carruth and Amy Seimetz share scenes with controlled emotion, but their connection feels underdeveloped. The dialogue is minimal and often confusing, leaving little room for emotional connection or character depth. Supporting actors add to the confusion without giving clear direction.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s experimental style might turn off viewers who want clear storytelling. Its abstract approach could appeal to some but feels unfinished as an emotional experience. Despite its flaws, Upstream Color has interesting visual and thematic ideas worth thinking about&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://en.wikipedia.org/wiki/Upstream_Color"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2013/upstream_color.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Upstream Color balances surreal imagery with emotional ambiguity, but its abstract tone limits the impact of its central relationship.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Under the Skin — A performance with unspoken weight</title>
      <link>https://deslypeter.com/writing/under-the-skin-2013-review</link>
      <guid>https://deslypeter.com/writing/under-the-skin-2013-review.html?lang=en</guid>
      <description>The film's visual style overshadows its emotional core, leaving the alien's purpose and humanity unclear despite Scarlett Johansson's compelling presence.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Scarlett Johansson carries the film&amp;#x27;s eerie tone without conventional dialogue or emotional cues, making her character both enigmatic and distant. The alien&amp;#x27;s actions lack clear motivation, which creates a disconnect between what it does and what the audience expects. The Glasgow setting is visually striking but doesn&amp;#x27;t contribute much to the story or themes.&lt;/p&gt;&lt;p&gt;The film moves slowly, relying on mood rather than plot. This can be hypnotic but also leaves some viewers feeling disconnected. The alien&amp;#x27;s actions don&amp;#x27;t clearly link to its goals, making it hard to care about what happens. The sparse dialogue feels more like a stylistic choice than something that helps the story.&lt;/p&gt;&lt;p&gt;Johansson&amp;#x27;s performance is controlled, but without more emotional context, her character feels more like an idea than a real person. The visual style is bold but doesn&amp;#x27;t always serve the story. The film&amp;#x27;s refusal to explain the alien&amp;#x27;s purpose makes it feel more like an art experiment than a complete narrative.&lt;/p&gt;&lt;p&gt;There&amp;#x27;s a certain beauty in how vague the film is, which might work for some. But this vagueness can also leave people feeling confused or uninvested. The film leans too much on its look and not enough on its story, making its effect more fleeting than powerful.&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://www.themoviedb.org/movie/97370"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s visual style overshadows its emotional core, leaving the alien&amp;#x27;s purpose and humanity unclear despite Scarlett Johansson&amp;#x27;s compelling presence.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Resolution — A slow-burn tension in a remote cabin</title>
      <link>https://deslypeter.com/writing/resolution-2012-review</link>
      <guid>https://deslypeter.com/writing/resolution-2012-review.html?lang=en</guid>
      <description>The film leans on isolation and unspoken guilt, but its emotional stakes falter under uneven pacing and unclear character motives.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The atmosphere is thick with unease, but the narrative struggles to maintain focus on what exactly is at risk. A few moments suggest deeper conflicts, yet these are left unresolved or underdeveloped. The dialogue feels hesitant, as if the characters themselves are unsure of their own roles in the situation.&lt;/p&gt;&lt;p&gt;The direction uses silence and stillness, which can work well but also feels restrictive. The slow pace might frustrate viewers looking for clearer stakes. Without strong character development, it&amp;#x27;s hard to care about their choices or struggles.&lt;/p&gt;&lt;p&gt;Performances are restrained but often feel underutilized by the script&amp;#x27;s limitations. Subtle gestures and pauses suggest tension, yet these moments rarely build into meaningful conflict. The film’s structure feels uneven, shifting between introspection and abrupt, unexplained actions.&lt;/p&gt;&lt;p&gt;The film tries to explore moral grey areas, but it&amp;#x27;s too vague to be satisfying. The emotional heart is there but not fully developed because of uneven pacing and direction. Still, some quiet moments leave a lingering feeling.&lt;/p&gt;&lt;p class="specs-note"&gt;2012 · English. &lt;a href="https://en.wikipedia.org/wiki/Resolution_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2013/resolution.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on isolation and unspoken guilt, but its emotional stakes falter under uneven pacing and unclear character motives.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The One I Love — A love story with a twist of repetition</title>
      <link>https://deslypeter.com/writing/the-one-i-love-2014-review</link>
      <guid>https://deslypeter.com/writing/the-one-i-love-2014-review.html?lang=en</guid>
      <description>The film tries to balance its emotional depth with its gimmick, but the tension between the characters doesn't feel fully explored. The central idea is clever, but it doesn't often feel surprising.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story follows two partners in therapy as they go through repeated scenarios that test their relationship. Each cycle brings new dialogue and actions, but the emotional changes feel uneven. The structure makes you curious about what will change, but the outcomes often feel like they&amp;#x27;re heading somewhere predictable.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s pacing relies on repetition rather than digging deeper into why the characters act the way they do. Mark Duplass and Elisabeth Moss play their roles with ease, but their chemistry doesn&amp;#x27;t feel urgent. Their performances keep the film from feeling too strange, even when the premise stretches credibility.&lt;/p&gt;&lt;p&gt;Ted Danson&amp;#x27;s role feels more like a tool to move the story forward than a fully developed character. The dialogue uses humor to make the repetitive plot feel lighter, but this can take attention away from the emotional heart of the situation.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s best quality is its honesty about personal flaws. But as the story goes on, the repetition feels more like a chore than a revelation. It&amp;#x27;s still an interesting experiment, even if it never really explains why it&amp;#x27;s doing what it&amp;#x27;s doing.&lt;/p&gt;&lt;p class="specs-note"&gt;2014 · English. &lt;a href="https://en.wikipedia.org/wiki/The_One_I_Love_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2014/one_i_love.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film tries to balance its emotional depth with its gimmick, but the tension between the characters doesn&amp;#x27;t feel fully explored. The central idea is clever, but it doesn&amp;#x27;t often feel surprising.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Discovery — A romantic conflict with cosmic stakes</title>
      <link>https://deslypeter.com/writing/the-discovery-2017-review</link>
      <guid>https://deslypeter.com/writing/the-discovery-2017-review.html?lang=en</guid>
      <description>The film leans on its sci-fi premise but lacks the emotional core to make its themes feel urgent or personal.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central relationship is strained by a discovery that should redefine it, but the tension remains underdeveloped. Characters speak in vague terms about love and loss without enough context for their decisions to feel real. Jason Segel plays his role with sincerity, but the script gives him little to anchor his performance to.&lt;/p&gt;&lt;p&gt;The film moves at an inconsistent pace, with long stretches of dialogue that don’t build toward a clear emotional or narrative goal. The visuals are simple and don’t add much to the story’s emotional weight or thematic depth. It tries to mix science fiction with romance but doesn’t fully commit to either side.&lt;/p&gt;&lt;p&gt;Rooney Mara is present, but her character&amp;#x27;s motivations remain unclear and under-supported by the script. Robert Redford appears in a role that feels like an afterthought rather than a central part of the story’s stakes. The dialogue often avoids direct confrontation, leaving conflicts unresolved or emotionally distant.&lt;/p&gt;&lt;p&gt;The film tries to explore big questions about love and death, but these ideas aren’t clearly connected to the characters’ experiences. Its ambitions are bigger than its execution, so the themes feel more like abstract ideas than real emotions. Even though the premise is original, The Discovery has trouble balancing its genres without losing emotional clarity.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Discovery_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its sci-fi premise but lacks the emotional core to make its themes feel urgent or personal.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Never Rarely Sometimes Always — A teenager's quiet resolve against a system that refuses to listen</title>
      <link>https://deslypeter.com/writing/never-rarely-sometimes-always-2020-review</link>
      <guid>https://deslypeter.com/writing/never-rarely-sometimes-always-2020-review.html?lang=en</guid>
      <description>The film moves at a careful pace while keeping the emotional stakes high, but its quiet style might make some of the main conflict feel less urgent.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A young woman travels alone across state lines to obtain an abortion, facing barriers at every step without a clear ally or advocate. The journey is marked by silence and hesitation rather than dramatic confrontation, which emphasizes the isolation of the protagonist’s decision. Eliza Hittman avoids melodrama, focusing instead on the emotional weight of unspoken choices.&lt;/p&gt;&lt;p&gt;The camera focuses on small actions—long looks, pauses that feel heavy with thought—to show what the characters are feeling without them saying much. Sidney Flanigan gives a performance that&amp;#x27;s quiet but full of feeling, avoiding big dramatic moments in favor of real, raw emotion. Talia Ryder plays her younger sister in a way that adds quiet tension between them without needing to explain everything.&lt;/p&gt;&lt;p&gt;The dialogue feels natural but often sparse, reflecting the characters’ reluctance to confront difficult emotions head-on. The film’s pacing is deliberate, sometimes slow, which may test patience but reinforces the emotional gravity of its subject. Sharon Van Etten’s presence as a counselor adds a layer of professional distance that contrasts with the protagonist’s vulnerability.&lt;/p&gt;&lt;p&gt;Sometimes the film&amp;#x27;s quiet style doesn&amp;#x27;t match how urgent the story feels, leaving some parts underdeveloped. Its choice to avoid making things too dramatic is both its best quality and maybe its weakest point for people who want more emotional fireworks. Still, the main conflict stays strong because of the quiet strength of the main character facing a system that doesn&amp;#x27;t care.&lt;/p&gt;&lt;p class="specs-note"&gt;2020 · English. &lt;a href="https://en.wikipedia.org/wiki/Never_Rarely_Sometimes_Always"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2020/never_rarely_sometimes_always.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film moves at a careful pace while keeping the emotional stakes high, but its quiet style might make some of the main conflict feel less urgent.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Assistant — A quiet performance with heavy implications</title>
      <link>https://deslypeter.com/writing/the-assistant-2019-review</link>
      <guid>https://deslypeter.com/writing/the-assistant-2019-review.html?lang=en</guid>
      <description>The Assistant balances tension and restraint, but its focus on workplace power dynamics limits emotional depth despite strong performances.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Julia Garner&amp;#x27;s portrayal of a junior assistant captures the unease of being trapped in a toxic work environment without ever breaking form. Her character&amp;#x27;s silence becomes a deliberate choice rather than a narrative weakness, emphasizing her entrapment within the system. Matthew Macfadyen plays the boss with calculated detachment, making his manipulations feel more insidious than overtly abusive.&lt;/p&gt;&lt;p&gt;The film moves slowly, letting the tension grow without big fights or dramatic scenes. It shows how boring and draining the main character&amp;#x27;s life is by stretching out moments without resolution. But this method might turn off people who want more action or clear conflict.&lt;/p&gt;&lt;p&gt;Garner&amp;#x27;s performance remains grounded even when the script pushes her toward passive acceptance. Her subtle shifts in posture and eye contact reveal internal conflict without explicit dialogue. The supporting cast provides little relief from the oppressive atmosphere, amplifying the protagonist’s isolation.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s quiet style is its best part, but it also holds it back. It avoids cheap drama but ends up feeling too restricted by its own rules. The Assistant gives a tight, uneasy look at power in the workplace, but it doesn&amp;#x27;t fully explore the main character&amp;#x27;s emotions.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Assistant_(2019_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2020/assistant.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Assistant balances tension and restraint, but its focus on workplace power dynamics limits emotional depth despite strong performances.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Short Term 12 — A quiet tension in the group home</title>
      <link>https://deslypeter.com/writing/short-term-12-2013-review</link>
      <guid>https://deslypeter.com/writing/short-term-12-2013-review.html?lang=en</guid>
      <description>The film balances emotional depth with a restrained approach, but its minimalism occasionally softens the urgency of its characters' struggles.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Grace Howard&amp;#x27;s role as a supervisor is defined by her ability to listen and act without overstepping. The film explores how past trauma influences present behavior without explicitly stating the characters&amp;#x27; histories. There is an unspoken pressure in every interaction, especially when Grace tries to help a resident she once knew.&lt;/p&gt;&lt;p&gt;The direction avoids melodrama, focusing instead on small gestures that reveal internal conflict. Scenes are often quiet but layered with subtext, allowing the audience to read between lines. The pacing allows moments of stillness that contrast with sudden emotional outbursts.&lt;/p&gt;&lt;p&gt;Brie Larson conveys a steady resolve without ever appearing overly confident or detached. John Gallagher Jr. adds vulnerability without leaning into caricature, making his character&amp;#x27;s pain feel personal. Kaitlyn Dever captures the tension between wanting to be seen and fearing rejection with subtle shifts in tone.&lt;/p&gt;&lt;p&gt;The film’s restraint is its greatest strength but also its occasional weakness when emotional stakes feel underdeveloped. Some subplots are left unexplored, which may leave certain character motivations feeling incomplete. Despite this, the film remains grounded in its portrayal of human resilience and the fragility of trust.&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://en.wikipedia.org/wiki/Short_Term_12"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances emotional depth with a restrained approach, but its minimalism occasionally softens the urgency of its characters&amp;#x27; struggles.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Half Nelson — A teacher's hidden vice becomes a student's burden</title>
      <link>https://deslypeter.com/writing/half-nelson-2006-review</link>
      <guid>https://deslypeter.com/writing/half-nelson-2006-review.html?lang=en</guid>
      <description>The film balances moral complexity with emotional stakes but falters in fully resolving its central tension between mentor and mentee.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Dan Dunne’s dual life creates an immediate tension that the film leans into without overexplaining. Drey’s discovery of Dan’s secret forces a shift in their relationship, but the emotional weight is unevenly distributed. The narrative keeps the audience guessing about whether Drey will confront Dan or be drawn into his world.&lt;/p&gt;&lt;p&gt;The film moves smoothly between classroom scenes and Dan’s personal struggles without feeling rushed. Some dialogue feels strained, as if trying to carry too much thematic weight. It relies on its central conflict but doesn’t always explain the emotional stakes clearly.&lt;/p&gt;&lt;p&gt;The performances suggest a strong connection between Dan and Drey, even when their interactions feel slightly artificial. Dan’s internal struggle is clear, but his actions sometimes lack urgency, making his choices less believable. Drey’s character development is compelling, though his motivations are occasionally unclear or underdeveloped.&lt;/p&gt;&lt;p&gt;The film tries to balance morality but doesn’t always follow through with satisfying consequences for its characters’ choices. There are moments of genuine connection that lift the story above its more formulaic parts. Despite its flaws, Half Nelson offers a thoughtful look at trust and redemption, especially in its quieter scenes.&lt;/p&gt;&lt;p class="specs-note"&gt;2006 · English. &lt;a href="https://www.themoviedb.org/movie/7859"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2006/half_nelson.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances moral complexity with emotional stakes but falters in fully resolving its central tension between mentor and mentee.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Wrestler — A body worn down by time and regret</title>
      <link>https://deslypeter.com/writing/the-wrestler-2008-review</link>
      <guid>https://deslypeter.com/writing/the-wrestler-2008-review.html?lang=en</guid>
      <description>The Wrestler balances physical decay with emotional longing, but its focus on decline risks overshadowing the quieter moments of connection.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Rourke’s performance captures the physical toll of a life spent in pain and artifice, without ever feeling exploitative or sentimental. The film leans into the protagonist&amp;#x27;s isolation, making his attempts at reconciliation feel both desperate and earned. Aronofsky frames the wrestler’s decline with a raw, unflinching visual style that reinforces the character’s inner turmoil.&lt;/p&gt;&lt;p&gt;The film moves slowly, matching the way the main character’s body and mind fall apart. There are long parts with little talking, but the quiet feels intentional. Tomei and Wood add real emotion to their roles without overdoing it.&lt;/p&gt;&lt;p&gt;Rourke’s physicality is central to the film’s impact, though it occasionally leans into clichéd notions of redemption. The romantic subplot adds a layer of vulnerability that contrasts with the wrestler’s hardened exterior. The Wrestler’s greatest strength lies in its refusal to sanitize its subject matter or offer easy resolutions.&lt;/p&gt;&lt;p&gt;The tone can feel heavy at times, leaving little space for subtlety. Still, the film stays gripping because it shows a man trying to get his life back on track. It’s emotionally powerful, even if the story sometimes focuses more on big moments than quiet thinking.&lt;/p&gt;&lt;p class="specs-note"&gt;2008 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Wrestler_(2008_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/12163"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2008/wrestler.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Wrestler balances physical decay with emotional longing, but its focus on decline risks overshadowing the quieter moments of connection.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Master — A volatile bond between two men</title>
      <link>https://deslypeter.com/writing/the-master-2012-review</link>
      <guid>https://deslypeter.com/writing/the-master-2012-review.html?lang=en</guid>
      <description>The film balances emotional intensity with ambiguous purpose. Hoffman’s Dodd is mesmerizing, but the ending leaves too much unexplained for full satisfaction.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Freddie Quell is drawn to Dodd’s charisma even as he resists its control, creating a tension that never fully resolves. Their relationship is built on mutual need and manipulation, making it hard to determine who truly leads whom. The film avoids easy answers about faith or identity, which can feel frustrating as much as fascinating.&lt;/p&gt;&lt;p&gt;Anderson’s direction uses long silences and uneasy glances to highlight the psychological tension. The close-ups show Freddie’s inner turmoil and Dodd’s charm. The pacing is slow, with conversations that feel more like tests than real exchanges.&lt;/p&gt;&lt;p&gt;Joaquin Phoenix conveys Freddie’s restlessness with subtle physicality—his posture, his eye movements, his hesitant speech patterns. Philip Seymour Hoffman commands every frame as Dodd, balancing menace and magnetism in a performance that feels both deliberate and unpredictable. Amy Adams adds emotional depth as Dodd’s wife, grounding the film’s surreal elements in personal stakes.&lt;/p&gt;&lt;p&gt;The dialogue is sparse but full of meaning, leaving the audience to figure things out. The film sometimes relies too much on being vague, making it hard to feel satisfied. But the acting and direction make it worth watching, even if it’s a bit confusing.&lt;/p&gt;&lt;p class="specs-note"&gt;2012 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Master_(2012_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/68722"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2012/master.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances emotional intensity with ambiguous purpose. Hoffman’s Dodd is mesmerizing, but the ending leaves too much unexplained for full satisfaction.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Punch-Drunk Love — Adam Sandler's vulnerability cuts through the chaos</title>
      <link>https://deslypeter.com/writing/punch-drunk-love-2002-review</link>
      <guid>https://deslypeter.com/writing/punch-drunk-love-2002-review.html?lang=en</guid>
      <description>Paul Thomas Anderson balances absurdity with emotional honesty, but the tone occasionally falters between slapstick and sincerity.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Adam Sandler portrays a man overwhelmed by anxiety, yet his performance avoids caricature by focusing on small, fragile gestures. Emily Watson&amp;#x27;s calm presence contrasts sharply with the film’s erratic energy, grounding its wilder moments. Philip Seymour Hoffman delivers a standout turn as a manipulative con artist, fully embracing the role’s eccentricity without losing control.&lt;/p&gt;&lt;p&gt;The script uses oddball humor but keeps the characters&amp;#x27; emotions at the center. The pacing changes a lot, which can feel confusing instead of surprising. The romantic storyline is heartfelt but sometimes gets lost in the film&amp;#x27;s quirky style.&lt;/p&gt;&lt;p&gt;Sandler’s performance anchors the chaos with a genuine sense of isolation and longing. Watson’s character offers a steady emotional counterpoint to the film’s chaotic tone. Hoffman’s layered performance adds texture to the narrative without overshadowing the central relationship.&lt;/p&gt;&lt;p&gt;Some scenes mix comedy and drama in a way that makes the quieter moments feel less important. Still, the film&amp;#x27;s heart comes from its unusual structure and how the characters interact. Its charm is in treating emotional honesty like a form of rebellion against the usual.&lt;/p&gt;&lt;p class="specs-note"&gt;2002 · English. &lt;a href="https://en.wikipedia.org/wiki/Punch-Drunk_Love"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/8051"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2002/punch_drunk_love.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Paul Thomas Anderson balances absurdity with emotional honesty, but the tone occasionally falters between slapstick and sincerity.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Inside Llewyn Davis — A weary, self-sabotaging folk singer</title>
      <link>https://deslypeter.com/writing/inside-llewyn-davis-2013-review</link>
      <guid>https://deslypeter.com/writing/inside-llewyn-davis-2013-review.html?lang=en</guid>
      <description>The film balances melancholy and humor without leaning too far into either. The writing gives its protagonist a sharp edge but also a strange kind of charm.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Llewyn Davis is a man who seems to be running from his own failures rather than toward any clear goal. His life is marked by small betrayals, missed opportunities and a refusal to accept responsibility for his choices. The film&amp;#x27;s tone is consistently bitter but never mean-spirited, allowing the character to remain sympathetic despite his flaws.&lt;/p&gt;&lt;p&gt;The Coen brothers use music as both a backdrop and a character in its own right, without ever making it feel like a gimmick. The dialogue has a natural rhythm, even when the conversations are awkward or tense. The pacing gives room for quiet moments without dragging the story into melodrama.&lt;/p&gt;&lt;p&gt;Oscar Isaac brings a weary charm to the role, balancing Llewyn&amp;#x27;s self-pity with moments of dry humor. Carey Mulligan and John Goodman provide grounding support, their characters offering contrast to his self-destruction. Justin Timberlake&amp;#x27;s brief but memorable performance adds an unexpected layer of irony to the film&amp;#x27;s themes.&lt;/p&gt;&lt;p&gt;The dialogue sometimes leans too much on sarcasm, turning some interactions into punchlines. A few subplots feel underdeveloped, especially in how they connect to Llewyn&amp;#x27;s emotional journey. But these small flaws don&amp;#x27;t take away from the film&amp;#x27;s overall strength as a portrait of someone caught between past regrets and future hope.&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://en.wikipedia.org/wiki/Inside_Llewyn_Davis"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/86829"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2013/inside_llewyn_davis.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances melancholy and humor without leaning too far into either. The writing gives its protagonist a sharp edge but also a strange kind of charm.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Frances Ha — A dancer's uncertain path</title>
      <link>https://deslypeter.com/writing/frances-ha-2012-review</link>
      <guid>https://deslypeter.com/writing/frances-ha-2012-review.html?lang=en</guid>
      <description>Frances Ha balances hope and frustration with a natural tone. Its charm is undercut by a lack of clear direction in its final act.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film follows Frances, a young dancer, as she navigates life’s uncertainties without a clear plan or goal. Her choices feel authentic but often leave her stuck in cycles of disappointment and small victories. The black-and-white cinematography emphasizes the emotional monotony of her situation rather than adding visual flair.&lt;/p&gt;&lt;p&gt;Greta Gerwig holds the film together with a performance that feels real and not forced. She balances Frances’s vulnerability and wit, making her struggles and triumphs feel genuine. The other actors, like Adam Driver, support her without taking over the story.&lt;/p&gt;&lt;p&gt;The dialogue sounds natural, like real conversations, which adds to the film’s realism. But without a strong story to follow, the later scenes don’t have much emotional impact. The film moves at an uneven pace—some parts feel too slow, others too quick.&lt;/p&gt;&lt;p&gt;The film clearly likes Frances, but it’s not clear how she changes over time. That might leave some viewers feeling unsatisfied. Still, it does a good job of showing how messy and confusing early adulthood can be.&lt;/p&gt;&lt;p class="specs-note"&gt;2012 · English. &lt;a href="https://en.wikipedia.org/wiki/Frances_Ha"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/121986"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2013/frances_ha.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Frances Ha balances hope and frustration with a natural tone. Its charm is undercut by a lack of clear direction in its final act.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Squid and the Whale — A family unraveling in real time</title>
      <link>https://deslypeter.com/writing/the-squid-and-the-whale-2005-review</link>
      <guid>https://deslypeter.com/writing/the-squid-and-the-whale-2005-review.html?lang=en</guid>
      <description>The film balances humor and heartbreak but leans too often on the boys' perspective, limiting emotional reach. The parents’ flaws are clear, but their depth feels uneven.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict is a divorce unfolding through the eyes of two sons, creating tension between innocence and adult complexity. Jeff Daniels and Laura Linney play estranged spouses with sharp dialogue but little room for redemption or nuance. Their arguments feel rehearsed rather than raw, distancing the audience from their pain.&lt;/p&gt;&lt;p&gt;Jesse Eisenberg and Owen Kline play the kids well, capturing their awkwardness and confusion as they watch their parents fall apart. The boys’ narration adds a personal touch but also means the story is filtered through their limited understanding. The tone shifts between funny and sad, which can make the emotional beats feel a bit off balance at times.&lt;/p&gt;&lt;p&gt;Baumbach&amp;#x27;s script relies on witty banter that occasionally overshadows deeper character development. The handheld shooting style emphasizes immediacy but can feel disorienting rather than immersive. The parents’ eventual separation feels inevitable yet underdeveloped in its emotional aftermath.&lt;/p&gt;&lt;p&gt;The film’s best parts are the quiet moments where the kids notice things or achieve small wins. The adults, though, feel more like exaggerated characters than real people, which makes it harder to connect with their struggles. Still, the film gets across a certain kind of family sadness, even if it doesn’t fully work out the emotional aftermath.&lt;/p&gt;&lt;p class="specs-note"&gt;2005 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Squid_and_the_Whale"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/10707"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2005/squid_and_the_whale.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances humor and heartbreak but leans too often on the boys&amp;#x27; perspective, limiting emotional reach. The parents’ flaws are clear, but their depth feels uneven.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Ice Storm — Fractured families in a frozen world</title>
      <link>https://deslypeter.com/writing/the-ice-storm-1997-review</link>
      <guid>https://deslypeter.com/writing/the-ice-storm-1997-review.html?lang=en</guid>
      <description>The emotional dissonance between characters is sharp, but the film's deliberate pacing risks slowing its own momentum at key moments.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two upper-middle-class families unravel as personal failures and societal shifts collide during Thanksgiving 1973. The performances capture the tension between repression and release without leaning into caricature or melodrama. Ang Lee balances intimate moments with broader social critique, often in the same frame.&lt;/p&gt;&lt;p&gt;The dialogue shows what the characters want but doesn&amp;#x27;t give them much of a way to say it. Kevin Kline and Joan Allen carry the sadness of their regrets with quiet control. Tobey Maguire and Christina Ricci bring a more open, unpolished energy that contrasts with their parents’ careful restraint.&lt;/p&gt;&lt;p&gt;The film’s tone is consistently somber, though some moments feel overly drawn out. There are few clear resolutions, which may frustrate those seeking closure in the narrative. The direction lingers on small gestures, emphasizing emotional distance over action.&lt;/p&gt;&lt;p&gt;This style focuses on what’s going on inside the characters but leaves their outside problems feeling less clear. Sigourney Weaver’s part adds another layer without taking attention away from the main family drama. Even with its slow parts, the film still feels like a strong look at personal and cultural confusion.&lt;/p&gt;&lt;p class="specs-note"&gt;1997 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Ice_Storm_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/68924"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1997/ice_storm.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The emotional dissonance between characters is sharp, but the film&amp;#x27;s deliberate pacing risks slowing its own momentum at key moments.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Safe — A slow unraveling of self</title>
      <link>https://deslypeter.com/writing/safe-1995-review</link>
      <guid>https://deslypeter.com/writing/safe-1995-review.html?lang=en</guid>
      <description>Julianne Moore's performance anchors the film as it explores a creeping, existential dread. The pacing is deliberate but occasionally risks dragging its own weight.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film begins with a woman&amp;#x27;s quiet dissatisfaction, which gradually becomes something more insidious and personal. Her illness is never fully explained, leaving her in a state of confusion that mirrors the audience&amp;#x27;s uncertainty. This ambiguity forces viewers to sit with her discomfort rather than look for quick resolutions.&lt;/p&gt;&lt;p&gt;Haynes builds tension with small moments—subtle changes in tone or environment—that add up over time. The dialogue is sparse but has purpose, showing the character&amp;#x27;s isolation and growing paranoia. Moore shows a deepening sense of vulnerability without making the illness feel entirely symbolic or external.&lt;/p&gt;&lt;p&gt;Her performance is restrained yet powerful, capturing the slow erosion of self-worth and control. Supporting characters are minimal, which heightens the feeling of entrapment within her own mind. The film’s tone is consistently eerie but never exploitative of its subject matter.&lt;/p&gt;&lt;p&gt;At times, the lack of clear exposition feels like a flaw rather than a stylistic choice. However, this ambiguity also shows the protagonist&amp;#x27;s confusion and inability to trust her own perceptions. The emotional core is strong enough to justify the film’s slower rhythm and thematic complexity.&lt;/p&gt;&lt;p class="specs-note"&gt;1995 · English. &lt;a href="https://en.wikipedia.org/wiki/Safe_(1995_film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Julianne Moore&amp;#x27;s performance anchors the film as it explores a creeping, existential dread. The pacing is deliberate but occasionally risks dragging its own weight.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Sweet Hereafter — A quiet ache lingers in the air</title>
      <link>https://deslypeter.com/writing/the-sweet-hereafter-1997-review</link>
      <guid>https://deslypeter.com/writing/the-sweet-hereafter-1997-review.html?lang=en</guid>
      <description>The film's emotional weight comes from its restraint, even as its narrative structure risks underplaying the tragedy at its core.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The aftermath of a school bus disaster becomes a canvas for grief and unresolved guilt. A lawyer’s arrival stirs up old wounds rather than offering clear solutions. The teenager&amp;#x27;s struggle with innocence lost is felt more than explained.&lt;/p&gt;&lt;p&gt;The film takes its time, letting moments sit without pushing for a quick ending. What&amp;#x27;s not said in the dialogue carries as much weight as what is. It focuses on how relationships change in small, quiet ways rather than big, dramatic scenes.&lt;/p&gt;&lt;p&gt;Performances are understated but carry a deep sense of personal loss. Emotions are conveyed through glances and pauses rather than direct confession. The dialogue avoids sentimentality by keeping conversations grounded in reality.&lt;/p&gt;&lt;p&gt;The slow pace might feel off-putting to some, but it mirrors how the characters are stuck emotionally. There are times when the lack of urgency makes the tragedy feel distant. However, the film’s honest look at grief and what comes after makes it a strong reflection on how people deal with loss.&lt;/p&gt;&lt;p class="specs-note"&gt;1997 · English. &lt;a href="https://www.themoviedb.org/movie/10217"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s emotional weight comes from its restraint, even as its narrative structure risks underplaying the tragedy at its core.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Exotica — A shared trauma binds strangers in a cycle of bad choices</title>
      <link>https://deslypeter.com/writing/exotica-1994-review</link>
      <guid>https://deslypeter.com/writing/exotica-1994-review.html?lang=en</guid>
      <description>The film's emotional core is undercut by its insistence on mystery as a narrative device rather than a psychological truth.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Francis&amp;#x27;s obsession with Christina becomes the story&amp;#x27;s anchor, even as his motives remain unclear. The club setting gives characters a stage for their unresolved pain but never fully justifies their actions. Connections between past traumas are hinted at but rarely explored in depth.&lt;/p&gt;&lt;p&gt;The film drags in places where the dialogue feels more like explanation than discovery. Scenes repeat with small changes, creating a feeling of inevitability instead of suspense. This repetition can make the characters feel more like ideas than real people with real problems.&lt;/p&gt;&lt;p&gt;Christina&amp;#x27;s silence is effective but leaves her emotionally distant from the audience. Eric&amp;#x27;s jealousy and Thomas&amp;#x27;s secrecy are never fully explained or resolved. The dialogue leans on ambiguity without providing enough emotional stakes to justify it.&lt;/p&gt;&lt;p&gt;The film tries to be deep but often focuses more on its structure than on developing the characters. The emotional impact is lessened by its refusal to take a clear side. Still, it manages to create a mood of sadness that stays with you in its quieter scenes.&lt;/p&gt;&lt;p class="specs-note"&gt;1994 · English. &lt;a href="https://www.themoviedb.org/movie/20156"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s emotional core is undercut by its insistence on mystery as a narrative device rather than a psychological truth.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Remains of the Day — A quiet tragedy of missed chances</title>
      <link>https://deslypeter.com/writing/the-remains-of-the-day-1993-review</link>
      <guid>https://deslypeter.com/writing/the-remains-of-the-day-1993-review.html?lang=en</guid>
      <description>The film balances emotional restraint with historical weight, but its pacing occasionally softens the urgency of its central dilemma.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story hinges on a decades-long unspoken regret that never fully erupts into action or confrontation. Anthony Hopkins carries the burden of silence with measured control, avoiding melodrama even in moments of despair. Emma Thompson’s performance is equally reserved, her character’s longing subtly woven into small gestures and pauses.&lt;/p&gt;&lt;p&gt;The dialogue avoids big speeches, using what&amp;#x27;s not said to show the emotional weight. James Fox and Christopher Reeve add historical background without stealing focus from the main story. The film moves slowly, which can make the story feel a bit sluggish at times.&lt;/p&gt;&lt;p&gt;Ruth Prawer Jhabvala’s script lets the audience figure things out on their own, avoiding big reveals. The camera work uses soft colors and careful angles to show the emotional gap between characters. The film handles themes of duty and desire with quiet respect, avoiding overly emotional moments.&lt;/p&gt;&lt;p&gt;At times, the deliberate pacing risks making the tragedy feel distant rather than immediate. The film’s greatest strength lies in its ability to make silence speak volumes about a life shaped by restraint. Its emotional power comes not from spectacle but from the careful layering of small, meaningful moments.&lt;/p&gt;&lt;p class="specs-note"&gt;1993 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Remains_of_the_Day_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/1245"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1993/remains_of_the_day.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances emotional restraint with historical weight, but its pacing occasionally softens the urgency of its central dilemma.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Secrets &amp; Lies — A fractured family, a hidden truth</title>
      <link>https://deslypeter.com/writing/secrets-lies-1996-review</link>
      <guid>https://deslypeter.com/writing/secrets-lies-1996-review.html?lang=en</guid>
      <description>The film balances emotional weight with narrative complexity. The performances ground the story in fragile human connections rather than melodrama.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central tension lies in the strained relationships between mother, daughter and stepfather, all hiding from one another. Each character&amp;#x27;s secrets are revealed gradually, creating a sense of inevitability without over-explaining motives. The dialogue feels natural, avoiding the histrionic tone that could have undermined the emotional stakes.&lt;/p&gt;&lt;p&gt;The direction keeps scenes tight, letting moments breathe without dragging. It uses framing and spacing to show the characters&amp;#x27; emotional distance. The pacing is slow but purposeful, making sure each revelation feels meaningful rather than shocking.&lt;/p&gt;&lt;p&gt;The actors bring vulnerability to their roles, making the conflicts feel earned rather than contrived. Their performances avoid caricature, focusing instead on subtle shifts in tone and body language. Dialogue exchanges are often tense but restrained, letting subtext carry much of the drama.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s emotional heart is its best part, but some side stories don&amp;#x27;t get enough attention. A few scenes rely too much on explanation rather than letting the story unfold naturally. Still, the focus on personal truth over outside drama gives the film a meaningful, if sometimes inconsistent, emotional feel.&lt;/p&gt;&lt;p class="specs-note"&gt;1996 · English. &lt;a href="https://en.wikipedia.org/wiki/Secrets_%26_Lies_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1996/secrets_and_lies.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances emotional weight with narrative complexity. The performances ground the story in fragile human connections rather than melodrama.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Naked — A man's vulnerability in a hostile world</title>
      <link>https://deslypeter.com/writing/naked-1993-review</link>
      <guid>https://deslypeter.com/writing/naked-1993-review.html?lang=en</guid>
      <description>The film balances raw emotion with sharp dialogue, but its intensity can feel overwhelming for some viewers.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film follows a man trying to connect in a world that pushes him away. It shows his desperation and confusion through small changes in tone and body language, not through narration. The story avoids being overly dramatic by keeping the emotions personal and immediate.&lt;/p&gt;&lt;p&gt;The film moves quickly but not consistently. Some scenes feel too fast, while others drag on. The dialogue is tense and often hides deeper meanings. There&amp;#x27;s a strong feeling of loneliness in every interaction, making the main character&amp;#x27;s struggle easy to understand.&lt;/p&gt;&lt;p&gt;The actor&amp;#x27;s portrayal captures both the vulnerability and the simmering rage without overdoing either extreme. His performance is grounded, allowing the audience to sit with his discomfort rather than distance themselves from it. Supporting characters are minimal but effective in highlighting the protagonist&amp;#x27;s internal turmoil.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s raw style might not appeal to those who like more traditional storytelling. Even with its flaws, the emotional heart stays strong and clear. It&amp;#x27;s a brave look at how fragile people can be, without losing its story&amp;#x27;s clarity.&lt;/p&gt;&lt;p class="specs-note"&gt;1993 · English. &lt;a href="https://en.wikipedia.org/wiki/Naked_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1993/naked.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances raw emotion with sharp dialogue, but its intensity can feel overwhelming for some viewers.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Happy-Go-Lucky — A teacher's optimism tested by chaos</title>
      <link>https://deslypeter.com/writing/happy-go-lucky-2008-review</link>
      <guid>https://deslypeter.com/writing/happy-go-lucky-2008-review.html?lang=en</guid>
      <description>The film balances humor and frustration but struggles to fully commit to either tone. Sally Hawkins brings warmth, yet the narrative lacks a clear emotional anchor.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict is a teacher&amp;#x27;s struggle against disorder in her classroom and personal life, but the stakes remain underdeveloped. Her optimism feels genuine but occasionally at odds with the surrounding chaos, making her motivations unclear. Mike Leigh&amp;#x27;s approach leans on improvisation, which gives the film a loose, lived-in quality but also muddies its focus.&lt;/p&gt;&lt;p&gt;The film moves at an inconsistent pace, with long, quiet conversations that can feel tedious even with the lead&amp;#x27;s charm. The dialogue feels improvised, which adds realism but sometimes weakens the emotional punch. The mix of comedy and drama doesn’t quite click, making it hard to settle into one mood.&lt;/p&gt;&lt;p&gt;Sally Hawkins delivers a performance full of energy and warmth, anchoring the film even when its direction falters. Eddie Marsan&amp;#x27;s supporting role provides some depth but is underused in the overall narrative structure. The other actors contribute well, but their characters lack clear arcs or dramatic resolution.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s charm comes from its unpredictability, but that same quality stops it from really diving into its themes. It misses a chance to explore the emotional weight of the teacher&amp;#x27;s job beyond light humor. Still, it&amp;#x27;s an enjoyable watch because of the strong acting and natural feel.&lt;/p&gt;&lt;p class="specs-note"&gt;2008 · English. &lt;a href="https://en.wikipedia.org/wiki/Happy-Go-Lucky_(2008_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2008/happy_go_lucky.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances humor and frustration but struggles to fully commit to either tone. Sally Hawkins brings warmth, yet the narrative lacks a clear emotional anchor.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Another Year — A quiet life disrupted by small truths</title>
      <link>https://deslypeter.com/writing/another-year-2010-review</link>
      <guid>https://deslypeter.com/writing/another-year-2010-review.html?lang=en</guid>
      <description>The film balances humor and melancholy with precision, though its focus on one character risks limiting the emotional scope.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story centers on a middle-aged couple whose lives are subtly unsettled by new relationships and personal revelations. Mike Leigh builds tension through ordinary conversations that carry unexpected weight without overt drama. The characters&amp;#x27; motivations are rooted in real-life struggles, making their choices feel earned rather than forced.&lt;/p&gt;&lt;p&gt;Leigh&amp;#x27;s direction lets scenes unfold naturally, giving time for moments to settle without pushing toward a quick ending. The dialogue feels real, with pauses and hesitations that show the characters&amp;#x27; inner struggles. The film avoids big, dramatic moves, instead using small, thoughtful actions to show what&amp;#x27;s going on inside them.&lt;/p&gt;&lt;p&gt;Lesley Manville delivers a grounded performance that anchors the film&amp;#x27;s quieter moments with subtle vulnerability. Jim Broadbent and Imelda Staunton add warmth and depth to their roles without overshadowing the central themes. The supporting cast provides measured reactions that highlight the emotional stakes of each situation.&lt;/p&gt;&lt;p&gt;The film sometimes focuses too much on one viewpoint, which makes it harder to see the bigger picture. Some side stories don&amp;#x27;t get enough attention, leaving parts of the characters&amp;#x27; journeys feeling rushed or unfinished. Still, the film&amp;#x27;s honesty and attention to detail make it worth watching, even if it&amp;#x27;s a bit reserved.&lt;/p&gt;&lt;p class="specs-note"&gt;2010 · English. &lt;a href="https://en.wikipedia.org/wiki/Another_Year_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/44009"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances humor and melancholy with precision, though its focus on one character risks limiting the emotional scope.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Tyrannosaur — A slow-burn tragedy of quiet violence</title>
      <link>https://deslypeter.com/writing/tyrannosaur-2011-review</link>
      <guid>https://deslypeter.com/writing/tyrannosaur-2011-review.html?lang=en</guid>
      <description>The film’s emotional power comes from holding back, but sometimes the pacing makes conflicts feel unclear rather than intentional.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story revolves around two isolated, destructive characters whose lives cross in a quiet English town. Their tension is real, but the film keeps their reasons hidden for much of the time. This makes it harder to connect with their pain or understand the moral weight of what they do.&lt;/p&gt;&lt;p&gt;The film uses long silences and slow movement to create a heavy mood, but it doesn’t always feel intentional. The lack of a clear ending might frustrate some, but it fits the film’s theme of pain that never really goes away. The acting is low-key, which can make the characters feel more distant than deeply real.&lt;/p&gt;&lt;p&gt;The male lead carries most of the emotional burden, his grief and rage subtly conveyed through small gestures and pauses in speech. His counterpart is equally reserved, but her choices remain harder to parse without more context or exposition. The dialogue avoids grand speeches, opting instead for clipped exchanges that reflect their emotional armor.&lt;/p&gt;&lt;p&gt;The film’s best quality is refusing to give easy answers, even if that makes its message feel a bit vague. The look is simple, matching the mood but not really helping the story stand out. Still, it’s a strong, if uneven, look at guilt and trying to make up for past mistakes.&lt;/p&gt;&lt;p class="specs-note"&gt;2011 · English. &lt;a href="https://en.wikipedia.org/wiki/Tyrannosaur_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film’s emotional power comes from holding back, but sometimes the pacing makes conflicts feel unclear rather than intentional.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Selfish Giant — A boy's grief becomes a town's burden</title>
      <link>https://deslypeter.com/writing/the-selfish-giant-2013-review</link>
      <guid>https://deslypeter.com/writing/the-selfish-giant-2013-review.html?lang=en</guid>
      <description>The film has strong emotional moments, but the story doesn't always hold your attention. Its real power comes from how honestly it shows people's pain, even if the structure isn't perfect.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main conflict is a boy&amp;#x27;s grief and his need for closure, which the town won&amp;#x27;t give him. This creates a quiet, sad situation that lingers but doesn&amp;#x27;t really find a satisfying ending. The film&amp;#x27;s real strength is how honestly it shows the characters&amp;#x27; emotions, even if the plot isn&amp;#x27;t always clear.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s pacing is a bit off—some scenes feel too long, others too short. There&amp;#x27;s a tension between the boy&amp;#x27;s personal grief and the town&amp;#x27;s refusal to face it, but the film doesn&amp;#x27;t explore this tension in enough depth. Some questions are left hanging.&lt;/p&gt;&lt;p&gt;The acting is low-key but effective, showing a lot without needing to shout emotions. The dialogue is simple but meaningful, often using silence or what&amp;#x27;s not said rather than direct explanations. The film&amp;#x27;s restraint is its best quality, but it also makes the ending feel a bit incomplete.&lt;/p&gt;&lt;p&gt;The film tries to explore guilt and loneliness, but these ideas don&amp;#x27;t always come together clearly. Sometimes the emotional weight feels too much for the story to handle. Still, it&amp;#x27;s compelling because it shows human pain without holding back.&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Selfish_Giant_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film has strong emotional moments, but the story doesn&amp;#x27;t always hold your attention. Its real power comes from how honestly it shows people&amp;#x27;s pain, even if the structure isn&amp;#x27;t perfect.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Kes — A boy and a bird find purpose in each other</title>
      <link>https://deslypeter.com/writing/kes-1969-review</link>
      <guid>https://deslypeter.com/writing/kes-1969-review.html?lang=en</guid>
      <description>The film balances hope with the harsh realities of working-class life. The bond between the boy and the bird is both tender and quietly tragic.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central relationship feels real because it is built on shared struggle rather than sentimentality. The boy’s determination to train the kestrel reflects a yearning for something beyond his circumstances. His actions are driven by an unspoken need for control in a life that offers little stability.&lt;/p&gt;&lt;p&gt;The direction keeps things real, avoiding melodrama even during small wins. The pacing lets the emotions grow slowly but steadily, without pushing for a quick ending. Scenes move at a deliberate pace to highlight the boy’s loneliness and the pressure of his decisions.&lt;/p&gt;&lt;p&gt;The performance captures the boy’s vulnerability without oversimplifying his emotions. His voice and body language suggest a quiet resilience beneath the surface tension. The dialogue is sparse but meaningful, revealing character through what is left unsaid.&lt;/p&gt;&lt;p&gt;The film sometimes relies too much on its symbols, making the bird feel more like a sign than a real character in some parts. But the heart of the story is strong enough to keep the quieter moments from feeling empty.&lt;/p&gt;&lt;p class="specs-note"&gt;1969 · English. &lt;a href="https://en.wikipedia.org/wiki/Kes_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1970/kes.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances hope with the harsh realities of working-class life. The bond between the boy and the bird is both tender and quietly tragic.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>I, Daniel Blake — A man waiting for a system to fail</title>
      <link>https://deslypeter.com/writing/i-daniel-blake-2016-review</link>
      <guid>https://deslypeter.com/writing/i-daniel-blake-2016-review.html?lang=en</guid>
      <description>The film quietly exposes the cruelty of bureaucracy without needing to dramatize its violence. Its restraint makes the suffering feel more real than if it had been shouted.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The emotional core is Daniel Blake’s struggle against a system that refuses to acknowledge his humanity, even as it demands it. His patience and quiet dignity are tested by a world that offers no grace or understanding. The film avoids melodrama by focusing on the exhaustion of waiting for help that never arrives.&lt;/p&gt;&lt;p&gt;The director uses long pauses and minimal dialogue to show how heavy Daniel’s situation feels. There&amp;#x27;s not much visual flair, but the simplicity keeps the emotional stakes clear. The pacing is slow, like watching a man&amp;#x27;s faith in society slowly break down.&lt;/p&gt;&lt;p&gt;The performances are understated but precise, with no unnecessary gestures or lines. The conversations feel natural, avoiding the trap of overly dramatic confrontations. The film avoids exploiting its subject by keeping the focus on Daniel’s internal conflict rather than external villains.&lt;/p&gt;&lt;p&gt;The tone can feel too bleak without much emotional release. Some viewers might not like how the story ends without a clear resolution. But the film’s honesty and refusal to oversimplify its themes make it a powerful and necessary watch.&lt;/p&gt;&lt;p class="specs-note"&gt;2016 · English. &lt;a href="https://en.wikipedia.org/wiki/I%2C_Daniel_Blake_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film quietly exposes the cruelty of bureaucracy without needing to dramatize its violence. Its restraint makes the suffering feel more real than if it had been shouted.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Sorry We Missed You — A slow unraveling of routine and self</title>
      <link>https://deslypeter.com/writing/sorry-we-missed-you-2019-review</link>
      <guid>https://deslypeter.com/writing/sorry-we-missed-you-2019-review.html?lang=en</guid>
      <description>The film’s tension comes from watching a life fall apart through small, repeated choices. It is more about endurance than revelation.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central situation involves a man trying to keep his job while managing personal responsibilities that constantly shift. There is no sudden twist or dramatic confrontation—only the weight of daily struggles and their slow accumulation. This approach makes the film feel authentic but also emotionally distant for some viewers.&lt;/p&gt;&lt;p&gt;The film moves slowly, focusing on everyday tasks without a clear story push. This feels real but might not grab everyone looking for a more traditional plot. The characters talk plainly, without drama or exaggerated feelings.&lt;/p&gt;&lt;p&gt;Their conversations sound real but don’t always hit the emotional beats needed to keep the audience fully involved. The film uses repetition and routine a lot, which can feel hypnotic but also a bit boring. The characters handle their lives realistically, even when things get tough.&lt;/p&gt;&lt;p&gt;But this realism means there’s less emotional payoff or a satisfying ending. The film doesn’t tie up its stories neatly, which might frustrate some viewers. Still, it gives a strong sense of how economic pressure can quietly take away personal control.&lt;/p&gt;&lt;p class="specs-note"&gt;2019 · English. &lt;a href="https://en.wikipedia.org/wiki/Sorry_We_Missed_You_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film’s tension comes from watching a life fall apart through small, repeated choices. It is more about endurance than revelation.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Lovers — A mismatched pair with a shared goal</title>
      <link>https://deslypeter.com/writing/the-lovers-2017-review</link>
      <guid>https://deslypeter.com/writing/the-lovers-2017-review.html?lang=en</guid>
      <description>The film leans on its cast's familiarity but lacks the emotional urgency to make their situation feel urgent or unique.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two people meet at a wedding, drawn by loneliness rather than love, yet the script offers little reason to care about their connection. Their conversations are polite but unremarkable, lacking the spark that would justify a full narrative arc. The film&amp;#x27;s humor is situational rather than sharp, relying on awkwardness without deeper irony or wit.&lt;/p&gt;&lt;p&gt;The film doesn&amp;#x27;t care much about the characters&amp;#x27; emotions. It treats their journey as something new rather than something meaningful. Scenes drag on without a clear point, making the romance feel like a test of patience rather than a real connection. The pace is slow and boring, with no real change in mood or structure to keep things interesting.&lt;/p&gt;&lt;p&gt;Debra Winger and Tracy Letts bring warmth but not enough depth to elevate the material beyond its surface-level premise. Their chemistry is restrained, which works against a story that needs emotional investment to succeed. Supporting actors contribute little beyond their roles, with no memorable lines or moments that stand out from the rest.&lt;/p&gt;&lt;p&gt;The film feels old-fashioned, like it&amp;#x27;s trying too hard to copy old romantic comedies. It can&amp;#x27;t balance humor and heart without leaning too far in one direction. Even with good actors, the script doesn&amp;#x27;t give enough reason to care about the characters or their choices.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Lovers_(2017_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2017/lovers.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its cast&amp;#x27;s familiarity but lacks the emotional urgency to make their situation feel urgent or unique.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Limits of Control — A man walks through Spain with no clear purpose</title>
      <link>https://deslypeter.com/writing/the-limits-of-control-2009-review</link>
      <guid>https://deslypeter.com/writing/the-limits-of-control-2009-review.html?lang=en</guid>
      <description>The film's deliberate slowness and vague dialogue make it difficult to engage with emotionally or intellectually, despite its visual appeal.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A lone assassin drifts through Spain with no clear mission or emotional hook. His journey feels aimless, and without a strong conflict or goal, the story lacks momentum. The viewer ends up just watching, not really invested in what happens next.&lt;/p&gt;&lt;p&gt;The cinematography is impressive, but it can&amp;#x27;t make up for the film&amp;#x27;s lack of real content. Long stretches of dialogue feel pointless, like waiting for something that never comes. The slow pace turns even the most visually appealing scenes into a drag.&lt;/p&gt;&lt;p&gt;Isaach de Bankolé plays his role with calm detachment, but that doesn&amp;#x27;t help the film feel more grounded. Hiam Abbass and Gael García Bernal are present but their characters don&amp;#x27;t get much development. The dialogue is flat, with conversations that don&amp;#x27;t seem to have much point.&lt;/p&gt;&lt;p&gt;The film tries hard to be ambitious, but it doesn&amp;#x27;t have a story or characters that make it worth watching. It looks great, but emotionally it feels empty. You&amp;#x27;re left with more questions than answers, and not much to connect with personally.&lt;/p&gt;&lt;p class="specs-note"&gt;2009 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Limits_of_Control"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2009/limits_of_control.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s deliberate slowness and vague dialogue make it difficult to engage with emotionally or intellectually, despite its visual appeal.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Dead Man — Johnny Depp's deadpan vulnerability anchors the film</title>
      <link>https://deslypeter.com/writing/dead-man-1995-review</link>
      <guid>https://deslypeter.com/writing/dead-man-1995-review.html?lang=en</guid>
      <description>The film balances spiritual ambiguity with a melancholic tone, though its deliberate pacing may test some viewers' patience.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;William Blake’s aimless wanderings reflect a man lost in both time and purpose, his quiet desperation heightened by Johnny Depp&amp;#x27;s restrained performance. His encounter with Nobody, played by Gary Farmer, unfolds without melodrama, relying on sparse dialogue to suggest deeper meanings. The film never confirms if Blake is truly a reincarnated poet or merely a man grasping for meaning in a hostile world.&lt;/p&gt;&lt;p&gt;Jarmusch’s direction uses long pauses and natural rhythms, letting the empty landscapes say as much as the characters do. The Western elements are stripped of usual genre stuff, focusing on thinking about existence and culture clashes. Scenes feel dreamy, with silence often more important than action or explanation.&lt;/p&gt;&lt;p&gt;Depp’s portrayal avoids histrionics, letting Blake’s confusion and vulnerability drive the narrative forward. Gary Farmer brings a quiet authority to Nobody, his presence suggesting both wisdom and mystery without overt explanation. The sparse dialogue between Blake and Nobody feels purposeful, each line carrying layers of implication.&lt;/p&gt;&lt;p&gt;The film’s slow pace might frustrate people who want a traditional story or clear ending. It won’t simplify its spiritual ideas, which could turn off viewers wanting a simple narrative. Still, the emotional heart stays strong, thanks to Depp’s acting and Jarmusch’s visual style.&lt;/p&gt;&lt;p class="specs-note"&gt;1995 · English. &lt;a href="https://en.wikipedia.org/wiki/Dead_Man"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances spiritual ambiguity with a melancholic tone, though its deliberate pacing may test some viewers&amp;#x27; patience.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Down by Law — A deadpan drift through trouble</title>
      <link>https://deslypeter.com/writing/down-by-law-1986-review</link>
      <guid>https://deslypeter.com/writing/down-by-law-1986-review.html?lang=en</guid>
      <description>The film balances humor and futility with a loose, drifting rhythm. The actors bring strange charm to aimless predicaments.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Three men in a cell share a quiet, absurd situation without a clear goal or escape. Their conversations are sparse but loaded with dry wit and shared frustration. The tone avoids melodrama by leaning into the banality of their situation.&lt;/p&gt;&lt;p&gt;The pacing feels deliberate, as if time itself is on pause inside the prison walls. There is no real urgency, which makes the humor feel more earned than forced. Tom Waits carries the weight of the film with a weary but charismatic presence.&lt;/p&gt;&lt;p&gt;John Lurie’s deadpan delivery adds to the film’s detached charm. Roberto Benigni brings a childlike confusion that contrasts with the others’ cynicism. Ellen Barkin’s brief appearance adds a layer of unpredictability without disrupting the mood.&lt;/p&gt;&lt;p&gt;The dialogue is minimal but sharp, often catching meaning in what is left unsaid. At times, the humor feels too thin for the film’s bleak setting. Still, the characters remain compelling enough to keep the audience engaged despite the lack of direction.&lt;/p&gt;&lt;p class="specs-note"&gt;1986 · English. &lt;a href="https://en.wikipedia.org/wiki/Down_by_Law_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1986/down_by_law.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances humor and futility with a loose, drifting rhythm. The actors bring strange charm to aimless predicaments.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Stranger Than Paradise — Company does not cure boredom</title>
      <link>https://deslypeter.com/writing/stranger-than-paradise-1984-review</link>
      <guid>https://deslypeter.com/writing/stranger-than-paradise-1984-review.html?lang=en</guid>
      <description>Stranger Than Paradise finds dry humour in people who seem unsure what to do with one another. The small interactions are often lovely, although the deliberate distance can make the film feel slight.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Stranger Than Paradise makes doing very little together an interesting problem. Its characters share space without necessarily finding much to say. Jim Jarmusch is good at letting that awkwardness remain ordinary. The film does not need every silence to conceal a revelation. Sometimes people are simply bored, defensive or unsure how to make company feel comfortable.&lt;/p&gt;&lt;p&gt;The unhurried approach lets small changes in a relationship register. An invitation, an objection or a brief attempt at kindness can matter without becoming a big dramatic event. I liked that attention to modest gestures of acceptance. The humour is often in the difference between how casual somebody wants to appear and how much an exchange matters.&lt;/p&gt;&lt;p&gt;John Lurie, Eszter Balint and Richard Edson suit the dry tone. Their performances do not push the viewer towards an easy judgement about who is being reasonable. The dialogue has a useful plainness. An unremarkable remark can become funny because the response is delayed or less welcoming than the speaker expects.&lt;/p&gt;&lt;p&gt;The distance is also a limitation. At times I wanted the film to offer more than another variation on people having little to do. Still, the restraint gives its better moments a particular charm. It is a small, distinctive comedy about how travelling somewhere else does not automatically make being with other people any easier.&lt;/p&gt;&lt;p class="specs-note"&gt;1984 · English. &lt;a href="https://en.wikipedia.org/wiki/Stranger_Than_Paradise"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1984/stranger_than_paradise.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Stranger Than Paradise finds dry humour in people who seem unsure what to do with one another. The small interactions are often lovely, although the deliberate distance can make the film feel slight.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Man Who Wasn't There — A quiet crime with no obvious villains</title>
      <link>https://deslypeter.com/writing/the-man-who-wasn-t-there-2001-review</link>
      <guid>https://deslypeter.com/writing/the-man-who-wasn-t-there-2001-review.html?lang=en</guid>
      <description>The film's restraint makes its moral ambiguity feel real rather than calculated. The performances suggest a tragedy unfolding without clear direction.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Ed Crane&amp;#x27;s decision to blackmail his wife’s lover begins as a desperate plan but quickly becomes something more dangerous. The film avoids flashy crime tropes, focusing instead on the slow unraveling of choices that seem small at first. The Coen brothers frame the story with a deliberate slowness that reflects the characters’ emotional distance from their own actions.&lt;/p&gt;&lt;p&gt;The dialogue is sparse but layered, often revealing more through what&amp;#x27;s left unsaid than what&amp;#x27;s spoken. The pacing is methodical, building tension not through urgency but through inevitability. The film&amp;#x27;s structure lets the audience feel the weight of decisions without being told how to feel about them.&lt;/p&gt;&lt;p&gt;Billy Bob Thornton brings a low-key intensity that makes Ed’s descent feel personal rather than dramatic. Frances McDormand and James Gandolfini play their roles with minimal expression, letting silence carry the emotional stakes. The supporting cast adds a dry, observational tone that contrasts with the growing moral complexity of the central crime.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s greatest strength is its refusal to offer easy resolutions or clear villains. At times, the quiet approach risks underplaying the consequences of Ed’s choices. Still, the Coens balance moral ambiguity with enough emotional clarity to make the tragedy feel earned.&lt;/p&gt;&lt;p class="specs-note"&gt;2001 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Man_Who_Wasn%2527t_There_(2001_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2001/man_who_wasnt_there.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s restraint makes its moral ambiguity feel real rather than calculated. The performances suggest a tragedy unfolding without clear direction.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Miller's Crossing — A man torn between loyalties</title>
      <link>https://deslypeter.com/writing/miller-s-crossing-1990-review</link>
      <guid>https://deslypeter.com/writing/miller-s-crossing-1990-review.html?lang=en</guid>
      <description>The film balances moral complexity with sharp dialogue, though its slow pacing occasionally softens the tension of its choices.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Tom Reagan is caught in a web of betrayal and allegiance that feels deeply personal rather than just strategic. The Coen brothers craft a world where every conversation carries weight, even when its purpose isn&amp;#x27;t immediately clear. Gabriel Byrne conveys internal conflict without needing to shout or overact.&lt;/p&gt;&lt;p&gt;Albert Finney’s performance adds weight, making the moral stakes feel urgent and real. Marcia Gay Harden brings quiet authority to her role, keeping the film’s more dramatic moments grounded. The dialogue is sharp but never showy, letting subtext shape the characters’ relationships.&lt;/p&gt;&lt;p&gt;John Turturro’s performance is subtle, hinting at motives without spelling them out. The pacing leans toward deliberate, which can make certain scenes feel drawn out before their payoff. The film&amp;#x27;s emotional core lies in how its characters navigate ethical ambiguity.&lt;/p&gt;&lt;p&gt;There are moments where the dialogue’s complexity feels more like a puzzle than a lived experience. Despite this, the performances keep the audience invested in the characters’ fates. The film remains a compelling study of loyalty and consequence, even when its rhythm lags slightly.&lt;/p&gt;&lt;p class="specs-note"&gt;1990 · English. &lt;a href="https://en.wikipedia.org/wiki/Miller%2527s_Crossing"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1990/millers_crossing.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances moral complexity with sharp dialogue, though its slow pacing occasionally softens the tension of its choices.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Blood Simple — Frances McDormand's intensity anchors the chaos</title>
      <link>https://deslypeter.com/writing/blood-simple-1984-review</link>
      <guid>https://deslypeter.com/writing/blood-simple-1984-review.html?lang=en</guid>
      <description>The film’s tension comes from its characters’ flawed choices rather than plot twists. The Coens balance moral ambiguity with sharp dialogue, though some scenes feel overly stylized.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;John Getz portrays a man trapped by his own indecision, making his eventual downfall both inevitable and tragic. McDormand’s performance is quietly explosive, suggesting layers of resentment beneath her calm exterior. The script gives the characters few clear motives, which makes their actions feel more like impulses than calculated decisions.&lt;/p&gt;&lt;p&gt;The Coens use a stylized visual style that can take attention away from the emotions at the heart of the story. The dialogue is sharp and full of dry humor, but it doesn’t always make the characters’ true intentions clear. The film moves slowly, letting quiet tension build before sudden bursts of violence interrupt the calm.&lt;/p&gt;&lt;p&gt;M. Emmet Walsh and Dan Hedaya bring a weary cynicism that contrasts with Getz’s confusion. Samm-Art Williams adds a menacing presence without overplaying his role as a hired killer. The film’s structure keeps the audience guessing, but not always in a satisfying way.&lt;/p&gt;&lt;p&gt;The film struggles to balance the characters’ inner conflicts with the violent actions they take. As the Coens’ debut, it shows promise but sometimes favors style over substance. Even with its flaws, Blood Simple is still a compelling look at guilt, betrayal, and failing morally.&lt;/p&gt;&lt;p class="specs-note"&gt;1984 · English. &lt;a href="https://en.wikipedia.org/wiki/Blood_Simple"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1985/blood_simple.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film’s tension comes from its characters’ flawed choices rather than plot twists. The Coens balance moral ambiguity with sharp dialogue, though some scenes feel overly stylized.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Barton Fink — A playwright's unease in a strange town</title>
      <link>https://deslypeter.com/writing/barton-fink-1991-review</link>
      <guid>https://deslypeter.com/writing/barton-fink-1991-review.html?lang=en</guid>
      <description>The film's claustrophobic tone and layered dialogue reveal the slow unraveling of Barton Fink's confidence. The Coen brothers balance humor with creeping dread, but some tonal shifts feel abrupt.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Barton Fink arrives in Hollywood with ambition, only to find himself isolated by his own expectations and the eerie quiet of the Hotel Earle. The dialogue is sharp, often laced with double meanings that reflect the characters&amp;#x27; hidden anxieties and unresolved pasts. John Turturro conveys a nervous energy that makes Barton Fink&amp;#x27;s descent into paranoia feel personal rather than theatrical.&lt;/p&gt;&lt;p&gt;The hotel setting feels oppressive, like the walls are closing in on Barton&amp;#x27;s shaky grip on reality. John Goodman&amp;#x27;s Charlie Meadows provides comic relief but also adds real moments of connection and vulnerability. The Coen brothers use silence well, letting tension build without needing jump scares or big reveals.&lt;/p&gt;&lt;p&gt;Judy Davis brings a subtle menace to her role, adding depth to the film’s exploration of identity and performance. Michael Lerner&amp;#x27;s portrayal of the hotel manager adds to the surreal atmosphere with his cryptic behavior and unsettling presence. Steve Buscemi contributes a darkly humorous edge that contrasts with the more serious themes of the story.&lt;/p&gt;&lt;p&gt;The jump from comedy to thriller feels rough in spots, breaking the film’s steady mood. Some subplots, like Barton&amp;#x27;s chats with other guests, are underdeveloped and feel a bit forced. But despite these issues, the film is still a strong look at artistic pressure and mental unease.&lt;/p&gt;&lt;p class="specs-note"&gt;1991 · English. &lt;a href="https://en.wikipedia.org/wiki/Barton_Fink"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s claustrophobic tone and layered dialogue reveal the slow unraveling of Barton Fink&amp;#x27;s confidence. The Coen brothers balance humor with creeping dread, but some tonal shifts feel abrupt.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Raising Arizona — A criminal and his wife try to steal a child</title>
      <link>https://deslypeter.com/writing/raising-arizona-1987-review</link>
      <guid>https://deslypeter.com/writing/raising-arizona-1987-review.html?lang=en</guid>
      <description>The film balances absurdity with heartfelt moments, but its tone shifts unevenly. Nicolas Cage's performance is energetic yet inconsistent.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film follows a couple who kidnap a child they think will make them happy. Their plan is messy but comes from a place of real need. The script leans on slapstick, which sometimes drowns out the more serious parts.&lt;/p&gt;&lt;p&gt;The direction keeps things moving, but some scenes feel rushed or not fully thought through. There are a lot of visual jokes, which can make the story feel less clear. Still, the weird and quirky characters keep the film from feeling too flat.&lt;/p&gt;&lt;p&gt;Nicolas Cage gives a wild performance, but he doesn&amp;#x27;t always show the deeper sides of his character. Holly Hunter is more steady, helping to ground the chaos. John Goodman does well, but his character doesn&amp;#x27;t get much to do.&lt;/p&gt;&lt;p&gt;The jokes don&amp;#x27;t always land, especially when the film tries to switch between funny and serious moments. There are some warm, genuine scenes that make it more than just a silly comedy. It&amp;#x27;s not perfect, but it&amp;#x27;s still a fun watch with some emotional ups and downs.&lt;/p&gt;&lt;p class="specs-note"&gt;1987 · English. &lt;a href="https://en.wikipedia.org/wiki/Raising_Arizona"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1987/raising_arizona.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances absurdity with heartfelt moments, but its tone shifts unevenly. Nicolas Cage&amp;#x27;s performance is energetic yet inconsistent.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>O Brother, Where Art Thou? — A road trip with mythic ambitions</title>
      <link>https://deslypeter.com/writing/o-brother-where-art-thou-2000-review</link>
      <guid>https://deslypeter.com/writing/o-brother-where-art-thou-2000-review.html?lang=en</guid>
      <description>The film balances slapstick and ancient storytelling, but its folk wisdom sometimes overwhelms the characters’ flaws. The Coens’ tone shifts are sharp but occasionally uneven.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Three men flee a prison in a car that is not fast enough for their needs or the jokes they make along the way. Their journey follows a mythic outline, yet their actions often feel desperate rather than heroic. The script mixes biblical parables with modern comedy, creating a tone that is both archaic and contemporary.&lt;/p&gt;&lt;p&gt;George Clooney plays the aimless man with a relaxed attitude, but his performance never fully convinces. Tim Blake Nelson and John Turturro bounce off each other with energy, even when their dialogue gets repetitive. The Coens use music like another character, shaping the mood without overexplaining the emotions.&lt;/p&gt;&lt;p&gt;John Goodman brings a grounded humor to his role as a conman with a soft heart. Holly Hunter’s performance is subtle but effective in grounding the film’s more absurd elements. The pacing is brisk, but some scenes stretch longer than necessary for comic effect.&lt;/p&gt;&lt;p&gt;The mythic structure gives the film a satisfying shape but sometimes feels like a trick. The humor is best when it leans into its own futility rather than its grand ideas. The charm comes from treating ancient stories as just another way to escape trouble.&lt;/p&gt;&lt;p class="specs-note"&gt;2000 · English. &lt;a href="https://en.wikipedia.org/wiki/O_Brother%2C_Where_Art_Thou%253F"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/134"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances slapstick and ancient storytelling, but its folk wisdom sometimes overwhelms the characters’ flaws. The Coens’ tone shifts are sharp but occasionally uneven.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Being John Malkovich — A mind as a maze with no exit</title>
      <link>https://deslypeter.com/writing/being-john-malkovich-1999-review</link>
      <guid>https://deslypeter.com/writing/being-john-malkovich-1999-review.html?lang=en</guid>
      <description>The film's surreal tone and emotional stakes balance unevenly, but the central idea remains striking. The performances elevate its wild imagination above its own confusion.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The tension comes from wanting to escape one’s self while being trapped inside another’s thoughts. John Cusack’s character is driven by a need for control in a world that refuses to be tamed. The portal into John Malkovich’s mind becomes both a fantasy and a prison.&lt;/p&gt;&lt;p&gt;Spike Jonze mixes dreamlike visuals with real emotions. The film moves between silly and sad moments, which can feel jarring but often works. It uses its strange tone to hide some plot holes, which sometimes makes it less powerful.&lt;/p&gt;&lt;p&gt;John Cusack delivers a grounded performance amid the surrealism, keeping the story tethered to emotional truth. Catherine Keener’s presence adds a layer of introspection that contrasts with the film’s chaotic energy. Dialogue often leans into whimsy, but it never loses sight of the characters’ desperation.&lt;/p&gt;&lt;p&gt;The film tries too hard in some parts, especially when switching between its wild and serious tones. The strange ideas can cover up the quieter, more emotional parts, which are actually the best. Even with its problems, it&amp;#x27;s still a brave experiment that makes you think about who you are and how you control your life.&lt;/p&gt;&lt;p class="specs-note"&gt;1999 · English. &lt;a href="https://en.wikipedia.org/wiki/Being_John_Malkovich"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/492"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s surreal tone and emotional stakes balance unevenly, but the central idea remains striking. The performances elevate its wild imagination above its own confusion.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Election — Reese Witherspoon's vulnerability anchors the chaos</title>
      <link>https://deslypeter.com/writing/election-1999-review</link>
      <guid>https://deslypeter.com/writing/election-1999-review.html?lang=en</guid>
      <description>The film balances satire and sincerity, but its humor occasionally overshadows the emotional stakes beneath the surface.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Reese Witherspoon’s portrayal of a high school student caught in an adult power struggle is both sharp and vulnerable. Matthew Broderick plays a manipulative teacher with a veneer of charm that hides his moral decay. Chris Klein&amp;#x27;s character is defined by his quiet desperation, which contrasts effectively with the more flamboyant roles around him.&lt;/p&gt;&lt;p&gt;The dialogue is fast-paced and leans into exaggerated tones that highlight the film&amp;#x27;s satirical side. It moves between absurdity and real tension without losing its comedic rhythm. The story keeps going even when some character motives aren&amp;#x27;t fully clear.&lt;/p&gt;&lt;p&gt;Witherspoon’s performance gives the film a grounded emotional core amid its satire. Broderick’s timing is impeccable, but his role risks becoming a caricature rather than a fully realized person. Klein’s quieter moments provide a necessary counterbalance to the film&amp;#x27;s louder humor.&lt;/p&gt;&lt;p&gt;The script relies a lot on wit, which can make the characters feel more like types than real people. Still, the film stays engaging thanks to its sharp writing and good performances. It works well as a comedy, but sometimes gives up depth for jokes.&lt;/p&gt;&lt;p class="specs-note"&gt;1999 · English. &lt;a href="https://en.wikipedia.org/wiki/Election_(1999_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/9451"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1999/election.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances satire and sincerity, but its humor occasionally overshadows the emotional stakes beneath the surface.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>About Schmidt — A quiet reckoning with regret</title>
      <link>https://deslypeter.com/writing/about-schmidt-2002-review</link>
      <guid>https://deslypeter.com/writing/about-schmidt-2002-review.html?lang=en</guid>
      <description>Jack Nicholson's performance anchors the film, but its emotional weight is undercut by uneven pacing and tonal shifts that dilute the central themes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film follows a retired judge dealing with his life’s failures after his wife’s death. It sets up a melancholic tone that doesn’t quite match the comedy-drama label. His journey to meet his estranged daughter drives the narrative, but the emotional stakes feel underdeveloped in key moments. Alexander Payne tries to balance humor and sorrow, but the tonal shifts between scenes often feel jarring rather than intentional.&lt;/p&gt;&lt;p&gt;The direction leans on long silences and awkward pauses, which sometimes enhance the mood but also stretch the film’s runtime unnecessarily. The script gives Nicholson room for reflection, but the supporting characters lack the same depth or motivation. Hope Davis portrays the daughter with sincerity, but her role is limited to a few key scenes that don’t fully justify her screen time.&lt;/p&gt;&lt;p&gt;Jack Nicholson delivers a nuanced performance, capturing the loneliness of a man confronting his own failures with quiet dignity. His timing and delivery suggest years of experience, making even small moments feel weighted with meaning. Kathy Bates plays the late wife with warmth, but her limited presence prevents a deeper exploration of the central relationship.&lt;/p&gt;&lt;p&gt;The film’s humor feels forced in places, especially when it tries to undercut the heavier themes with lightweight dialogue. There is a clear attempt at emotional resonance, but it often falls short due to pacing choices that emphasize detachment over engagement. Despite its flaws, About Schmidt remains a thoughtful, if uneven, portrayal of aging and regret, anchored by Nicholson’s performance.&lt;/p&gt;&lt;p class="specs-note"&gt;2002 · English. &lt;a href="https://en.wikipedia.org/wiki/About_Schmidt"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/2755"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2002/about_schmidt.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Jack Nicholson&amp;#x27;s performance anchors the film, but its emotional weight is undercut by uneven pacing and tonal shifts that dilute the central themes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Sideways — A man's frustration with life and love</title>
      <link>https://deslypeter.com/writing/sideways-2004-review</link>
      <guid>https://deslypeter.com/writing/sideways-2004-review.html?lang=en</guid>
      <description>The film balances humor and heartache, but its romantic elements feel secondary to the character-driven comedy. The performances elevate the material beyond its premise.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two men embark on a wine-tasting road trip that becomes an unintentional therapy session for one of them. Miles Raymond&amp;#x27;s cynicism is both a shield and a barrier, making his eventual vulnerability hard-earned but satisfying. Jack Cole&amp;#x27;s charm and self-deprecation create a dynamic contrast to Miles&amp;#x27; bitterness.&lt;/p&gt;&lt;p&gt;The film moves at a calm pace, like the characters&amp;#x27; winding trip. Each wine-tasting scene hides a quiet tension between what they expect and what actually happens. The dialogue skips over clichés, using jokes to hide bigger worries.&lt;/p&gt;&lt;p&gt;Paul Giamatti conveys Miles&amp;#x27; exhaustion without ever making him unlikable or pitiable. Thomas Haden Church brings a warmth that keeps Jack from becoming a caricature of his own flaws. Sandra Oh and Virginia Madsen add emotional stakes without overshadowing the central dynamic.&lt;/p&gt;&lt;p&gt;The romantic parts feel like side effects rather than main points, which is both good and bad. Some scenes push the premise for laughs rather than real growth. But the film&amp;#x27;s honesty about middle-age struggles makes it stick with you.&lt;/p&gt;&lt;p class="specs-note"&gt;2004 · English. &lt;a href="https://en.wikipedia.org/wiki/Sideways"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/9675"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2004/sideways.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances humor and heartache, but its romantic elements feel secondary to the character-driven comedy. The performances elevate the material beyond its premise.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Descendants — A father's grief reframed through family tension</title>
      <link>https://deslypeter.com/writing/the-descendants-2011-review</link>
      <guid>https://deslypeter.com/writing/the-descendants-2011-review.html?lang=en</guid>
      <description>The film balances humor and heartbreak but leans too heavily on its premise, reducing emotional stakes to a structural gimmick.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict revolves around a man confronting his daughter’s accident while navigating strained relationships with his ex-wife and stepchildren. George Clooney&amp;#x27;s performance anchors the emotional core despite the script&amp;#x27;s occasional missteps. Shailene Woodley adds depth as the estranged daughter, though her role is constrained by the narrative’s focus on the father.&lt;/p&gt;&lt;p&gt;The dialogue leans more on cleverness than real emotion, which throws off the film&amp;#x27;s tone. Alexander Payne keeps things sharp overall, but sometimes the irony gets in the way of the real feelings. The pacing jumps around between quiet moments and satire, which can mess with how emotions build up.&lt;/p&gt;&lt;p&gt;Beau Bridges and Judy Greer deliver grounded performances that contrast with the script’s more stylized moments. The father-daughter dynamic is compelling but underexplored in favor of broader family conflicts. Matthew Lillard&amp;#x27;s role as a lawyer adds levity but lacks narrative purpose beyond comic relief.&lt;/p&gt;&lt;p&gt;The film tries to handle grief and making up with people, but it ends up oversimplifying those heavy topics. Some scenes feel too planned out, turning deep emotions into jokes or dramatic moments. Still, it does a decent job showing how messy and awkward the healing process can be, even if it&amp;#x27;s not perfect.&lt;/p&gt;&lt;p class="specs-note"&gt;2011 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Descendants"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/65057"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2011/descendants.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances humor and heartbreak but leans too heavily on its premise, reducing emotional stakes to a structural gimmick.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Win Win — A man's lies begin to unravel</title>
      <link>https://deslypeter.com/writing/win-win-2011-review</link>
      <guid>https://deslypeter.com/writing/win-win-2011-review.html?lang=en</guid>
      <description>The film balances dark humor with emotional stakes, but its moral ambiguity leaves some questions unanswered. Paul Giamatti anchors the central tension with a layered performance.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story hinges on a coach’s ethical compromise and the ripple effects of his choices. His lies are small at first, but they accumulate into something more troubling for everyone involved. The film does not excuse the behavior, but it also avoids outright condemnation.&lt;/p&gt;&lt;p&gt;Tom McCarthy’s direction keeps the tone light but doesn’t fully address the moral weight. Scenes move quickly, balancing dialogue with quiet tension. The pacing is efficient, but some emotional beats feel rushed in favor of comedic timing.&lt;/p&gt;&lt;p&gt;Paul Giamatti conveys the character&amp;#x27;s internal conflict without overacting. His voice and body language suggest a man trying to convince himself as much as others. Amy Ryan and Melanie Lynskey provide sharp contrast with their more grounded, honest performances.&lt;/p&gt;&lt;p&gt;The film’s humor is smart but sometimes clashes with its moral questions. Some jokes land well, but they sometimes undercut the emotional stakes. Overall, it succeeds as a character study rather than a fully satisfying drama.&lt;/p&gt;&lt;p class="specs-note"&gt;2011 · English. &lt;a href="https://en.wikipedia.org/wiki/Win_Win_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2011/win_win.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances dark humor with emotional stakes, but its moral ambiguity leaves some questions unanswered. Paul Giamatti anchors the central tension with a layered performance.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Visitor — A lonely man's quiet transformation</title>
      <link>https://deslypeter.com/writing/the-visitor-2007-review</link>
      <guid>https://deslypeter.com/writing/the-visitor-2007-review.html?lang=en</guid>
      <description>Richard Jenkins conveys a subtle shift in perspective without melodrama. The film’s emotional stakes are undercut by its own restraint.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict is the slow unraveling of a man’s assumptions about himself and others, set against New York’s post-9/11 backdrop. His initial detachment gives way to unease as he becomes entangled with an immigrant couple living in his apartment. The film relies on small moments to suggest deeper themes, but these often feel underdeveloped.&lt;/p&gt;&lt;p&gt;The film moves slowly, giving time for quiet observation but also making some scenes feel stretched, especially when the dialogue isn’t urgent or emotionally clear. It goes from isolation to a tentative connection, but never really finds a satisfying emotional ending.&lt;/p&gt;&lt;p&gt;Richard Jenkins gives a controlled performance, avoiding big gestures but showing inner conflict. Haaz Sleiman and Danai Gurira bring quiet dignity to their roles, but their reasons for acting the way they do aren’t fully explained. The dialogue leans on explanation rather than natural conversation, making the emotional stakes feel a bit distant.&lt;/p&gt;&lt;p&gt;The film’s strength is its willingness to sit with uncomfortable feelings rather than offer a neat resolution. But this approach might leave some viewers feeling disconnected from the themes. Despite its flaws, The Visitor is a thoughtful, if uneven, look at identity and belonging.&lt;/p&gt;&lt;p class="specs-note"&gt;2007 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Visitor_(2007_drama_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2008/visitor.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Richard Jenkins conveys a subtle shift in perspective without melodrama. The film’s emotional stakes are undercut by its own restraint.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Junebug — A quiet tension beneath polite exchanges</title>
      <link>https://deslypeter.com/writing/junebug-2005-review</link>
      <guid>https://deslypeter.com/writing/junebug-2005-review.html?lang=en</guid>
      <description>The film mixes humor and sadness but holds back too much, so the emotional parts don't fully come through even with good acting.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Junebug is about a family meeting where old and new problems are hidden under normal talk. The characters speak carefully, like they&amp;#x27;re avoiding something big. This slow pace creates a mood, but it can make it hard for the audience to follow what&amp;#x27;s really going on.&lt;/p&gt;&lt;p&gt;The film is quiet, focusing on pauses instead of big moments. It lingers on small actions, but these feel slow and without clear reasons. The story depends on what&amp;#x27;s not said, which can make the conflicts feel weak.&lt;/p&gt;&lt;p&gt;Amy Adams gives a warm and honest performance without overdoing it. Ben McKenzie and Embeth Davidtz hold the film together with controlled acting that hints at bigger stories. The dialogue is simple, leaving a lot to the audience to figure out, but sometimes that makes the story unclear.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s quiet style feels more like a choice than something that comes naturally. There are times when the emotions feel forced by the tone. Even with its flaws, Junebug does show a kind of fragile connection through its careful, slow storytelling.&lt;/p&gt;&lt;p class="specs-note"&gt;2005 · English. &lt;a href="https://en.wikipedia.org/wiki/Junebug_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2005/junebug.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film mixes humor and sadness but holds back too much, so the emotional parts don&amp;#x27;t fully come through even with good acting.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>You Can Count on Me — A fractured bond tested by time</title>
      <link>https://deslypeter.com/writing/you-can-count-on-me-2000-review</link>
      <guid>https://deslypeter.com/writing/you-can-count-on-me-2000-review.html?lang=en</guid>
      <description>The film balances emotional depth with a measured pace, though its quiet moments occasionally test the patience of those seeking more overt drama.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Sammy&amp;#x27;s isolation is shown through small, everyday interactions that reveal her loneliness without needing to spell it out. Her relationship with her brother is built on shared history rather than dramatic confrontation. The film avoids melodrama by focusing on the subtle shifts in their connection over time.&lt;/p&gt;&lt;p&gt;The direction keeps things calm, letting silence and glances do most of the work. Scenes move at a steady pace that matches the characters&amp;#x27; inner struggles. It&amp;#x27;s not fast-paced, which might bore people looking for more drama.&lt;/p&gt;&lt;p&gt;Laura Linney portrays Sammy with quiet strength, conveying vulnerability without overt emotion. Mark Ruffalo brings a grounded presence to his role, balancing warmth with underlying resentment. Dialogue feels natural, avoiding cliché while still revealing the characters&amp;#x27; histories.&lt;/p&gt;&lt;p&gt;The film moves slowly, which can feel tedious but also lets the emotions sink in. Some scenes depend on what&amp;#x27;s not said rather than what&amp;#x27;s spoken, so you have to pay attention. Even with its slow approach, it stays interesting because of how it explores personal relationships and regret.&lt;/p&gt;&lt;p class="specs-note"&gt;2000 · English. &lt;a href="https://en.wikipedia.org/wiki/You_Can_Count_on_Me"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/14295"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2000/you_can_count_on_me.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances emotional depth with a measured pace, though its quiet moments occasionally test the patience of those seeking more overt drama.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Little Children — A quiet unraveling beneath the surface</title>
      <link>https://deslypeter.com/writing/little-children-2006-review</link>
      <guid>https://deslypeter.com/writing/little-children-2006-review.html?lang=en</guid>
      <description>The film balances emotional complexity with a deliberate pace, but its central romance feels underdeveloped compared to its character studies.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Sarah Pierce’s dissatisfaction is shown through small gestures and strained conversations rather than overt confession. Her affair creates tension without resolving the deeper loneliness that drives her choices. The film avoids melodrama by focusing on the emotional distance between characters.&lt;/p&gt;&lt;p&gt;Todd Field uses long pauses and minimal camera movement to emphasize the weight of unspoken thoughts. This style works best in scenes where characters confront their pasts, but feels less effective during romantic moments. The film’s rhythm leans into introspection rather than dramatic confrontation.&lt;/p&gt;&lt;p&gt;Kate Winslet conveys Sarah’s restlessness without overplaying her emotions. Jennifer Connelly brings a sharpness to her role that contrasts with Winslet’s more vulnerable energy. Jackie Earle Haley adds a grounded presence, making his character’s moral ambiguity feel real.&lt;/p&gt;&lt;p&gt;The central romance doesn’t have enough urgency to carry its emotional weight. The film’s pacing sometimes softens the impact of its quieter moments. Still, Little Children does a good job of showing the quiet despair of its characters.&lt;/p&gt;&lt;p class="specs-note"&gt;2006 · English. &lt;a href="https://en.wikipedia.org/wiki/Little_Children_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/1440"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2006/little_children.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances emotional complexity with a deliberate pace, but its central romance feels underdeveloped compared to its character studies.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>In the Bedroom — A family's grief becomes a moral test</title>
      <link>https://deslypeter.com/writing/in-the-bedroom-2001-review</link>
      <guid>https://deslypeter.com/writing/in-the-bedroom-2001-review.html?lang=en</guid>
      <description>The film tries to mix personal sadness with tricky moral questions, but it keeps the audience at arm's length with a cold, deliberate style that softens its emotional punch.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central tension lies in how a family deals with a violent crime committed against their son, and whether they should seek justice through violence. The narrative unfolds slowly, emphasizing the weight of grief and the moral choices it forces upon those involved. Ruth&amp;#x27;s struggle to reconcile her love for her son with the possibility of revenge forms the emotional core of the film.&lt;/p&gt;&lt;p&gt;The film focuses on quiet scenes instead of big dramatic moments, which can feel emotionally distant rather than intentional. The slow pace builds tension, but sometimes it drags without a clear reason beyond that. There are long parts with little dialogue, leaving the audience to sit with the discomfort rather than leading them through it.&lt;/p&gt;&lt;p&gt;Tom Wilkinson and Sissy Spacek deliver restrained performances that capture the weight of their characters&amp;#x27; decisions. Their restraint, however, can make the film&amp;#x27;s moral questions feel distant rather than urgent. Marisa Tomei and Nick Stahl bring emotional complexity to their roles, but they are often overshadowed by the film’s tone.&lt;/p&gt;&lt;p&gt;The main question is interesting, but the film avoids taking a clear side, leaving some questions hanging. Its refusal to wrap things up might frustrate people looking for emotional release or clear answers. Even with its flaws, it&amp;#x27;s still a meaningful look at grief and justice, even if it doesn&amp;#x27;t fully deliver on its emotional potential.&lt;/p&gt;&lt;p class="specs-note"&gt;2001 · English. &lt;a href="https://en.wikipedia.org/wiki/In_the_Bedroom"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/1999"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film tries to mix personal sadness with tricky moral questions, but it keeps the audience at arm&amp;#x27;s length with a cold, deliberate style that softens its emotional punch.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Welcome to the Dollhouse — A child's loneliness made visible</title>
      <link>https://deslypeter.com/writing/welcome-to-the-dollhouse-1995-review</link>
      <guid>https://deslypeter.com/writing/welcome-to-the-dollhouse-1995-review.html?lang=en</guid>
      <description>Heather Matarazzo brings a raw vulnerability to her role, but the film’s tone shifts uneasily between humor and cruelty without clear purpose.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Dawn’s desperate attempts to fit in are portrayed with a mix of awkwardness and charm that feels genuine but inconsistent. The film captures the harsh realities of middle school social hierarchies but struggles to balance its dark themes with comedic elements. Heather Matarazzo delivers a performance that is both heartbreaking and oddly compelling, even when the material falters.&lt;/p&gt;&lt;p&gt;The film relies a lot on awkward humor, which can make Dawn’s journey feel less emotional. The scenes jump between slapstick and serious moments, creating a rhythm that feels off. But it still shows the loneliness of being a teenager without making it seem too nice.&lt;/p&gt;&lt;p&gt;Heather Matarazzo’s portrayal is the film&amp;#x27;s strongest asset, grounding the story in real emotional complexity. The supporting characters are underdeveloped, often serving more as vehicles for satire than fully realized people. Dialogue oscillates between sharp wit and forced awkwardness, making it hard to find a consistent voice.&lt;/p&gt;&lt;p&gt;The film tries to make a point about society, but it’s often pushed aside by the jokes. Dawn’s problems don’t really get resolved, which leaves some feelings hanging. Still, it’s brave to show how tough bullying and broken families can be.&lt;/p&gt;&lt;p class="specs-note"&gt;1995 · English. &lt;a href="https://en.wikipedia.org/wiki/Welcome_to_the_Dollhouse"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/11446"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Heather Matarazzo brings a raw vulnerability to her role, but the film’s tone shifts uneasily between humor and cruelty without clear purpose.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Dog Day Afternoon — A tense standoff with moral weight</title>
      <link>https://deslypeter.com/writing/dog-day-afternoon-1975-review</link>
      <guid>https://deslypeter.com/writing/dog-day-afternoon-1975-review.html?lang=en</guid>
      <description>The film balances a criminal act with the emotional stakes of those involved. Al Pacino's performance elevates the tension beyond mere spectacle.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The robbery is not just about money but about personal desperation and familial pressure, shaping the characters&amp;#x27; choices. John Wojtowicz&amp;#x27;s actions are driven by a need to provide for his ill mother, adding complexity to his role as a criminal. The script avoids making him a villain, instead focusing on the emotional and moral ambiguity of his situation.&lt;/p&gt;&lt;p&gt;Sidney Lumet’s direction keeps the tension high without rushing toward resolution or moralizing too quickly. The pacing is deliberate, letting the audience sit with the characters instead of pushing them away. Longer scenes feel natural, capturing the anxiety of a hostage situation without fake urgency.&lt;/p&gt;&lt;p&gt;Al Pacino conveys vulnerability beneath his bravado, making Wojtowicz relatable despite his crimes. John Cazale&amp;#x27;s performance as the conflicted police officer adds another layer to the moral complexity. Dialogue is sharp and realistic, often revealing hidden fears or desires without heavy-handed exposition.&lt;/p&gt;&lt;p&gt;There are moments where the film leans too heavily on its real-life origins, which can make the story feel less original. But the emotional core stays strong, keeping the focus on human struggle rather than just crime. The film’s strength is in not simplifying its characters or their choices, giving a nuanced look at morality.&lt;/p&gt;&lt;p class="specs-note"&gt;1975 · English. &lt;a href="https://en.wikipedia.org/wiki/Dog_Day_Afternoon"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1975/dog_day_afternoon.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances a criminal act with the emotional stakes of those involved. Al Pacino&amp;#x27;s performance elevates the tension beyond mere spectacle.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Dogville — A stage set as a moral landscape</title>
      <link>https://deslypeter.com/writing/dogville-2003-review</link>
      <guid>https://deslypeter.com/writing/dogville-2003-review.html?lang=en</guid>
      <description>Dogville's sparse design forces attention on the characters' choices. The moral dilemmas feel urgent, even if the structure risks abstraction.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film unfolds in a single, bare space that becomes a metaphor for human morality and exploitation. Grace&amp;#x27;s arrival disrupts the town&amp;#x27;s fragile peace, revealing hidden cruelties beneath polite surfaces. The townspeople&amp;#x27;s decisions are tested through escalating demands on Grace, pushing them toward moral collapse.&lt;/p&gt;&lt;p&gt;The direction has a strong theatrical feel, which can make the emotions feel a bit removed at times. The pacing is slow but builds tension gradually, with pressure increasing as the story moves forward. The simple set design doesn&amp;#x27;t offer much visual relief, which makes the emotional weight of each scene feel heavier.&lt;/p&gt;&lt;p&gt;Nicole Kidman&amp;#x27;s performance is restrained yet emotionally charged, anchoring the film&amp;#x27;s moral gravity. Paul Bettany and Stellan Skarsgård bring layered complexity to their roles as town leaders with hidden ambitions. The dialogue often feels heightened, echoing stage conventions that may not fully serve the story&amp;#x27;s emotional core.&lt;/p&gt;&lt;p&gt;There is a risk of intellectualizing the drama at the expense of raw human emotion. The film&amp;#x27;s ambition overshadows its quieter moments, which can feel underdeveloped in comparison. Despite this, the moral inquiry remains compelling, asking difficult questions about complicity and survival.&lt;/p&gt;&lt;p class="specs-note"&gt;2003 · English. &lt;a href="https://en.wikipedia.org/wiki/Dogville"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2004/dogville.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Dogville&amp;#x27;s sparse design forces attention on the characters&amp;#x27; choices. The moral dilemmas feel urgent, even if the structure risks abstraction.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Duel — A silent threat behind the wheel</title>
      <link>https://deslypeter.com/writing/duel-1971-review</link>
      <guid>https://deslypeter.com/writing/duel-1971-review.html?lang=en</guid>
      <description>The unseen menace creates tension through absence rather than presence. The film's focus on the driver’s fear elevates it beyond simple chase tropes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict is a man being stalked by an unknown driver, making the danger feel personal and inescapable. Dennis Weaver portrays a commuter whose vulnerability is heightened by the isolation of his situation. The script avoids explaining the trucker’s motives, which keeps the threat ambiguous but persistent.&lt;/p&gt;&lt;p&gt;Spielberg uses long stretches of quiet driving to show the passenger&amp;#x27;s helplessness. Not seeing the trucker adds to the pressure on the protagonist. The film keeps a steady rhythm that doesn&amp;#x27;t let up or get repetitive, even though it&amp;#x27;s short.&lt;/p&gt;&lt;p&gt;Dennis Weaver conveys fear without melodrama, grounding his performance in believable reactions. Jacqueline Scott and Carey Loftin provide brief but effective supporting roles that contrast with the main tension. Dialogue is minimal but purposeful, often reinforcing the protagonist’s isolation and confusion.&lt;/p&gt;&lt;p&gt;The film sometimes relies too much on its own idea, which can make the tension feel predictable. Its best part is how it uses space and sound to turn a simple car ride into a life-or-death situation. Duel still works because it lets the audience feel the fear without explaining everything.&lt;/p&gt;&lt;p class="specs-note"&gt;1971 · English. &lt;a href="https://en.wikipedia.org/wiki/Duel_(1971_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1971/duel.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The unseen menace creates tension through absence rather than presence. The film&amp;#x27;s focus on the driver’s fear elevates it beyond simple chase tropes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Hitcher — A predator in the backseat</title>
      <link>https://deslypeter.com/writing/the-hitcher-1986-review</link>
      <guid>https://deslypeter.com/writing/the-hitcher-1986-review.html?lang=en</guid>
      <description>The Hitcher leans into its own tension, but never fully justifies its violence. Rutger Hauer’s menace is effective but not entirely convincing as a sustained threat.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film follows a stranded driver and a hitchhiker whose motives are unclear from the beginning. There&amp;#x27;s a clear sense of danger, but it&amp;#x27;s hard to tell if that danger is real or imagined. The characters don&amp;#x27;t have much depth, which makes their conflict feel more like a setup than a real story.&lt;/p&gt;&lt;p&gt;The direction keeps the tension high with tight framing and limited settings, but it doesn&amp;#x27;t let up for long. The dialogue is tense, but it lacks the emotional depth needed to make the threat feel personal. The film moves quickly, but it never slows down enough to let the audience catch their breath or think about what&amp;#x27;s happening.&lt;/p&gt;&lt;p&gt;Rutger Hauer brings a calm menace that is convincing in moments, though his character lacks a clear motivation beyond violence. C. Thomas Howell plays his role with nervous energy, but his fear never fully justifies the escalating danger around him. Jennifer Jason Leigh’s presence adds some emotional weight, but her scenes are limited to brief exchanges without much development.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s atmosphere is its strongest point, but it overshadows the characters. The threat feels more like a gimmick than a real danger. It does a good job of building suspense, but the lack of character depth weakens the impact of the ending. Despite its flaws, The Hitcher is still an effective example of how to create tension, even if it feels a bit formulaic at times.&lt;/p&gt;&lt;p class="specs-note"&gt;1986 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Hitcher_(1986_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1986/hitcher.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Hitcher leans into its own tension, but never fully justifies its violence. Rutger Hauer’s menace is effective but not entirely convincing as a sustained threat.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Driver — Ryan O'Neal’s silence speaks volumes</title>
      <link>https://deslypeter.com/writing/the-driver-1978-review</link>
      <guid>https://deslypeter.com/writing/the-driver-1978-review.html?lang=en</guid>
      <description>The Driver balances tension with a detached tone, but its emotional distance softens the impact of its moral choices.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Ryan O’Neal plays a criminal who avoids confrontation, making his eventual conflict feel inevitable yet emotionally thin. Bruce Dern’s detective is methodical, but lacks the personal stakes that would make his pursuit more urgent. Isabelle Adjani’s role adds some emotional weight, though her screen time remains limited and underdeveloped.&lt;/p&gt;&lt;p&gt;The film has a steady pace, avoiding big action scenes but finding it hard to build suspense from regular heists. The dialogue is short and to the point, not really showing why the characters are doing what they&amp;#x27;re doing. Walter Hill focuses more on the mood than on moving the story forward, which creates a feeling but not much forward motion.&lt;/p&gt;&lt;p&gt;O’Neal’s performance is controlled but lacks vulnerability, making his choices feel more like a puzzle than a personal tragedy. Adjani’s presence hints at deeper themes, but they are left unexplored due to the film’s restrained approach. Dern’s character remains professional yet emotionally flat, which limits the stakes of his conflict with O’Neal.&lt;/p&gt;&lt;p&gt;The film is well-structured, but its emotional heart doesn&amp;#x27;t match its style. It works as a stylish example of restraint but struggles when it needs to connect with people. Its quiet confidence is effective until the end, where its moral uncertainty becomes more confusing than interesting.&lt;/p&gt;&lt;p class="specs-note"&gt;1978 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Driver"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1978/driver.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Driver balances tension with a detached tone, but its emotional distance softens the impact of its moral choices.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Thief — A heist film with quiet tension</title>
      <link>https://deslypeter.com/writing/thief-1981-review</link>
      <guid>https://deslypeter.com/writing/thief-1981-review.html?lang=en</guid>
      <description>The slow-burn pacing and emotional stakes elevate the crime above standard genre fare. The central relationship feels lived-in rather than manufactured.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film centers on a safecracker trying to escape his criminal past, but the real focus is his strained connection with his wife. There&amp;#x27;s tension in how much he trusts her, and whether she truly wants to leave the life behind. Michael Mann avoids flashy action sequences, favoring close-ups that emphasize the weight of each decision.&lt;/p&gt;&lt;p&gt;The direction keeps the audience in the room with the characters rather than following them on a chase. Long pauses and sparse dialogue make the emotional stakes feel immediate and unflinching. The film&amp;#x27;s rhythm is deliberate, letting quiet moments carry as much tension as any break-in sequence.&lt;/p&gt;&lt;p&gt;James Caan portrays the lead with controlled intensity, never letting his character become a caricature of crime. Tuesday Weld brings a grounded presence that contrasts with the high-stakes world around her. Their conversations feel real, with pauses and hesitations that suggest a history beyond what&amp;#x27;s shown.&lt;/p&gt;&lt;p&gt;The film occasionally leans too heavily on its own atmosphere, risking emotional detachment. At times, the pacing feels slow without enough narrative urgency to justify it. Still, the focus on personal stakes over spectacle makes this heist story feel more intimate and human.&lt;/p&gt;&lt;p class="specs-note"&gt;1981 · English. &lt;a href="https://en.wikipedia.org/wiki/Thief_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1981/thief.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The slow-burn pacing and emotional stakes elevate the crime above standard genre fare. The central relationship feels lived-in rather than manufactured.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Manhunter — A profiler's past haunts his present work</title>
      <link>https://deslypeter.com/writing/manhunter-1986-review</link>
      <guid>https://deslypeter.com/writing/manhunter-1986-review.html?lang=en</guid>
      <description>The film balances psychological tension with procedural detail, but its emotional core feels underdeveloped despite strong performances.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Will Graham’s return to the field is driven by a need to understand his own limits rather than just solving a case. Michael Mann builds atmosphere through silence and careful pacing, letting the isolation of the characters speak for itself. The script often leans on exposition rather than showing Graham&amp;#x27;s internal conflict in real time.&lt;/p&gt;&lt;p&gt;William Petersen shows Graham’s exhaustion without overdoing it, making his struggle feel real rather than dramatic. Tom Noonan brings menace to Dollarhyde through small gestures and calm dialogue. Brian Cox plays the FBI agent with quiet confidence, but his character doesn’t get much depth.&lt;/p&gt;&lt;p&gt;The film’s focus on the killer’s perspective risks overshadowing the profiler’s emotional journey. The score and cinematography enhance the mood without overpowering the narrative’s quieter moments. Joan Allen’s presence adds emotional depth to Graham’s personal life, though her role is limited.&lt;/p&gt;&lt;p&gt;Some scenes drag, especially the ones with the killer in prison. The film has strong performances and a good tone, but it never really decides if it’s horror or a police story. Still, Manhunter is a solid early example of how the serial killer genre can explore real psychological tension.&lt;/p&gt;&lt;p class="specs-note"&gt;1986 · English. &lt;a href="https://en.wikipedia.org/wiki/Manhunter_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances psychological tension with procedural detail, but its emotional core feels underdeveloped despite strong performances.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>To Live and Die in L.A. — A chase with no clear exit</title>
      <link>https://deslypeter.com/writing/to-live-and-die-in-l-a-1985-review</link>
      <guid>https://deslypeter.com/writing/to-live-and-die-in-l-a-1985-review.html?lang=en</guid>
      <description>The film balances tension and moral ambiguity, but its procedural focus leans too heavily on spectacle rather than character depth.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two Secret Service agents pursue a counterfeiter whose crimes blur the line between artistry and criminality. Their mission becomes as much about personal obsession as professional duty, complicating their sense of justice. The script rarely pauses to question whether their pursuit is worth the cost in human terms.&lt;/p&gt;&lt;p&gt;William Friedkin directs with tight framing, keeping the audience at a distance. The editing moves quickly between scenes, emphasizing urgency but sometimes making things hard to follow. The score supports the film’s mood without overpowering quieter moments.&lt;/p&gt;&lt;p&gt;William Petersen conveys determination without much interior conflict, making his character feel functional rather than fully realized. Willem Dafoe brings a dangerous charm to his role, hinting at deeper layers beneath the surface performance. John Pankow grounds the film in bureaucratic realism, offering a contrast to the more flamboyant characters.&lt;/p&gt;&lt;p&gt;The pacing is fast but can feel repetitive, making key confrontations less emotionally powerful. The tension between duty and desire isn’t explored much, with action scenes taking priority. Still, the film stays engaging because of its clear, if limited, vision.&lt;/p&gt;&lt;p class="specs-note"&gt;1985 · English. &lt;a href="https://en.wikipedia.org/wiki/To_Live_and_Die_in_L.A._(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1985/to_live_and_die_in_la.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances tension and moral ambiguity, but its procedural focus leans too heavily on spectacle rather than character depth.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Sorcerer — Four men carry a deadly burden</title>
      <link>https://deslypeter.com/writing/sorcerer-1977-review</link>
      <guid>https://deslypeter.com/writing/sorcerer-1977-review.html?lang=en</guid>
      <description>The film balances physical peril with psychological strain. Its tension lies not in escaping danger, but in the weight of past choices.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Each man&amp;#x27;s history haunts their steps as they transport unstable explosives across treacherous terrain. Their motivations are buried beneath layers of regret and survival instinct, rarely spoken but always present. The stakes are not just external—each carries a personal reckoning that threatens to unravel them.&lt;/p&gt;&lt;p&gt;Friedkin keeps the tension tight without flashy tricks or fake suspense. The journey moves slowly, with long stretches of silence broken by sudden, violent moments. There&amp;#x27;s no clear ending—just the slow fading of hope as the burden gets heavier.&lt;/p&gt;&lt;p&gt;Roy Scheider conveys desperation without melodrama, his performance grounded in physical exhaustion. Francisco Rabal and Bruno Cremer embody the quiet despair of men who have nothing left to lose. Their dialogue is sparse but charged with unspoken histories and simmering distrust.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s pace sometimes drags under its own symbolism. Some scenes feel too long, testing patience with their bleakness. But the emotional heart stays strong: it&amp;#x27;s about redemption through endurance.&lt;/p&gt;&lt;p class="specs-note"&gt;1977 · English. &lt;a href="https://en.wikipedia.org/wiki/Sorcerer_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/38985"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1977/sorcerer.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances physical peril with psychological strain. Its tension lies not in escaping danger, but in the weight of past choices.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Point Blank — Lee Marvin's brooding presence anchors the film</title>
      <link>https://deslypeter.com/writing/point-blank-1967-review</link>
      <guid>https://deslypeter.com/writing/point-blank-1967-review.html?lang=en</guid>
      <description>The film balances moral ambiguity with a taut narrative, though its pacing falters in quieter moments. Marvin’s performance remains its most consistent strength.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Marvin plays a man seeking revenge for his wife’s murder, but his motives remain emotionally distant, complicating the audience&amp;#x27;s investment. The script gives him few lines that reveal inner conflict, leaving much to his physicality and measured delivery. His co-stars deliver solid performances, but their roles often feel secondary to Marvin&amp;#x27;s presence.&lt;/p&gt;&lt;p&gt;The film moves quickly through its plot beats, but some scene transitions lose the urgency of earlier parts. There’s a deliberate slowness in certain moments that breaks the tension built by the action. Still, the direction keeps the story focused on Marvin’s character without over-explaining his choices.&lt;/p&gt;&lt;p&gt;Angie Dickinson portrays his wife with emotional restraint, but her role is limited to memory and backstory. Her scenes are brief but impactful, suggesting a deeper tragedy beneath the surface. The dialogue often feels clipped, as if designed to reflect the urgency of the protagonist’s mission rather than character development.&lt;/p&gt;&lt;p&gt;There is an occasional stiffness in the performances that makes emotional stakes feel less immediate. This is especially true during moments meant to convey grief or regret, which are underdeveloped compared to the action sequences. Still, Marvin’s grounded performance and the film’s sharp pacing ensure it remains a compelling, if uneven, entry in the crime genre.&lt;/p&gt;&lt;p class="specs-note"&gt;1967 · English. &lt;a href="https://en.wikipedia.org/wiki/Point_Blank_(1967_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/26039"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1967/point_blank.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances moral ambiguity with a taut narrative, though its pacing falters in quieter moments. Marvin’s performance remains its most consistent strength.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Get Carter — A mood of weary resolve</title>
      <link>https://deslypeter.com/writing/get-carter-1971-review</link>
      <guid>https://deslypeter.com/writing/get-carter-1971-review.html?lang=en</guid>
      <description>The film balances bleak realism with moments of dry wit, but its emotional core feels underdeveloped despite the protagonist's clear determination.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The tone is grim, shaped by the protagonist’s relentless pursuit of justice in a world that offers no easy answers. His moral certainty clashes with the chaos around him, but this tension isn’t explored much. The dialogue is terse, giving the film a grounded feel but also limiting how much emotion it can show.&lt;/p&gt;&lt;p&gt;The pacing moves steadily forward without much variation, relying on the protagonist’s single-minded focus to keep things moving. There are moments where the tension between what’s expected and what happens feels sharp, but they’re not consistently developed. The lack of clear stakes beyond revenge weakens the emotional impact, even though the atmosphere is heavy.&lt;/p&gt;&lt;p&gt;The performances suggest a character driven by purpose rather than complexity, which fits the film’s tone but limits how much it connects with the viewer. The protagonist’s actions match his goals, but his internal motivations are vague. Supporting characters don’t give much insight into the main figure beyond what’s needed for the plot.&lt;/p&gt;&lt;p&gt;The film’s strength is its atmosphere rather than its character development or themes. This makes it a solid but ultimately unremarkable entry in the crime genre, with few lasting impressions beyond its mood. Its restrained approach works within its own limits, but it doesn’t elevate it beyond being a competent, if forgettable, experience.&lt;/p&gt;&lt;p class="specs-note"&gt;1971 · English. &lt;a href="https://en.wikipedia.org/wiki/Get_Carter_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1971/get_carter.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances bleak realism with moments of dry wit, but its emotional core feels underdeveloped despite the protagonist&amp;#x27;s clear determination.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Hit — A tense exchange without a clear exit</title>
      <link>https://deslypeter.com/writing/the-hit-1984-review</link>
      <guid>https://deslypeter.com/writing/the-hit-1984-review.html?lang=en</guid>
      <description>The Hit balances suspense with character moments, but its emotional reach is limited by the pacing and lack of depth in its central relationship.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film unfolds through tight conversations that feel urgent yet incomplete, leaving room for suspicion rather than resolution. The protagonist&amp;#x27;s actions are driven by necessity, but their internal conflict remains underexplored, making their choices feel pragmatic rather than emotionally resonant. Dialogue is clipped and purposeful, emphasizing the high stakes without offering much in the way of personal insight.&lt;/p&gt;&lt;p&gt;The direction keeps the tension high, but the setting feels static and repetitive because of the lack of visual variety. The pacing is deliberate, but some scenes drag without adding to the story or character development. The film relies on the uncertainty of its situation instead of showing the emotional cost of its choices.&lt;/p&gt;&lt;p&gt;Performances are grounded but restrained, which fits the mood but makes it harder to connect with the audience emotionally. The supporting characters feel more like obstacles than fully developed people, which weakens their role in the main conflict. There&amp;#x27;s a clear sense of danger, but it&amp;#x27;s not tied to personal stakes that would make the outcome feel important.&lt;/p&gt;&lt;p&gt;The structure keeps the viewer engaged, but the lack of emotional payoff makes the overall impact weaker. Some moments hint at deeper themes, but they&amp;#x27;re left unexplored to keep the tension going. Despite these issues, The Hit is a taut and watchable example of suspenseful storytelling.&lt;/p&gt;&lt;p class="specs-note"&gt;1984 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Hit_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1984/hit.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Hit balances suspense with character moments, but its emotional reach is limited by the pacing and lack of depth in its central relationship.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Offence — A detective's guilt wears thin over time</title>
      <link>https://deslypeter.com/writing/the-offence-1973-review</link>
      <guid>https://deslypeter.com/writing/the-offence-1973-review.html?lang=en</guid>
      <description>The film’s tight focus on moral disintegration is compelling, but its emotional depth is undercut by a repetitive rhythm that softens the impact of its central tragedy.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The detective’s crime is not just an act, but a burden he must carry through repeated confrontations with his own conscience. Each flashback reveals more about Johnson than the victim, making the audience question whether justice or vengeance is truly at stake. The structure creates tension by forcing the viewer to live alongside Johnson&amp;#x27;s unraveling thoughts.&lt;/p&gt;&lt;p&gt;Lumet’s direction keeps the scenes tight, but the tone sometimes feels repetitive, which softens the urgency of the crisis. The flashbacks are well-timed, yet they repeat emotional moments without adding much new. The pacing is slow, and it can feel like the film lingers too long on Johnson’s internal struggle instead of moving the story forward.&lt;/p&gt;&lt;p&gt;Sean Connery delivers a restrained performance that avoids melodrama but struggles to fully convey the depth of his character’s turmoil. Trevor Howard and Vivien Merchant provide strong support, grounding the film in moments of emotional clarity. The dialogue is sparse but effective, often revealing more through silence than explicit confession.&lt;/p&gt;&lt;p&gt;The repetition of Johnson&amp;#x27;s crime feels necessary for its thematic weight, yet it risks making his guilt feel less like a burden and more like a routine. There’s a certain elegance to the film’s moral ambiguity, even if its emotional core is occasionally diluted by its own structure. Despite its flaws, The Offence remains a powerful, if uneven, exploration of how far a man will go to justify his actions.&lt;/p&gt;&lt;p class="specs-note"&gt;1973 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Offence"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1973/offence.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film’s tight focus on moral disintegration is compelling, but its emotional depth is undercut by a repetitive rhythm that softens the impact of its central tragedy.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Hill — A prison of the mind and body</title>
      <link>https://deslypeter.com/writing/the-hill-1965-review</link>
      <guid>https://deslypeter.com/writing/the-hill-1965-review.html?lang=en</guid>
      <description>The Hill's rigid structure and slow pacing create a claustrophobic tension that is both oppressive and methodical, though its deliberate rhythm may test patience.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film centers on a group of prisoners forced to build a hill under brutal conditions, their fates tied to the success of the project. Their desperation and conflicting loyalties are revealed through terse exchanges and glances that carry unspoken weight. The Hill&amp;#x27;s emotional core lies in how men respond to powerlessness, with no clear escape from their shared fate.&lt;/p&gt;&lt;p&gt;The film focuses on the monotony of physical labor, which reflects the characters&amp;#x27; mental exhaustion. The pace doesn&amp;#x27;t change much, so the suffering might feel more like a routine than a real experience. Without big dramatic moments or a clear ending, some viewers might feel lost by the time it&amp;#x27;s over.&lt;/p&gt;&lt;p&gt;Performances are understated but effective, with actors conveying inner turmoil through subtle shifts in posture and tone. Dialogue is sparse but charged, often revealing tensions that remain unresolved for much of the film. The actors’ restraint allows the audience to focus on the oppressive atmosphere rather than overt emotion.&lt;/p&gt;&lt;p&gt;The film shows how cruel systems can be without using drama or overacting. Its slow build might frustrate people looking for emotional release, but it gives a thoughtful look at power and obedience. Even with its pacing problems, The Hill is still a strong look at how people endure extreme pressure.&lt;/p&gt;&lt;p class="specs-note"&gt;1965 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Hill_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1965/hill.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Hill&amp;#x27;s rigid structure and slow pacing create a claustrophobic tension that is both oppressive and methodical, though its deliberate rhythm may test patience.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Pawnbroker — Rod Steiger's silence speaks volumes</title>
      <link>https://deslypeter.com/writing/the-pawnbroker-1964-review</link>
      <guid>https://deslypeter.com/writing/the-pawnbroker-1964-review.html?lang=en</guid>
      <description>The film captures the emotional weight of trauma without melodrama. Its pacing is deliberate but occasionally slow, testing patience.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Steiger’s portrayal of a traumatized pawnbroker anchors the film in quiet despair and moral ambiguity. His character&amp;#x27;s internal conflict is shown through pauses and glances rather than direct confession or exposition. The screenplay avoids easy resolutions, focusing instead on the emotional aftermath of violence.&lt;/p&gt;&lt;p&gt;Lumet’s direction uses stillness to show the protagonist’s isolation. The film feels heavy and somber, with few bright moments. Some scenes drag, and the dialogue can feel too long without a clear reason.&lt;/p&gt;&lt;p&gt;Geraldine Fitzgerald and Brock Peters provide emotional counterpoints but are secondary to Steiger’s performance. Their interactions reveal the protagonist&amp;#x27;s fractured psyche through subtle tension and unspoken history. Dialogue is sparse but weighted with subtext, demanding attention from the viewer.&lt;/p&gt;&lt;p&gt;The film’s focus on trauma can feel too narrow, limiting its bigger themes. But its emotional heart is strong and deeply human. Steiger’s performance lifts the material, making it a gripping, if slow, look at guilt and survival.&lt;/p&gt;&lt;p class="specs-note"&gt;1964 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Pawnbroker_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1965/pawnbroker.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film captures the emotional weight of trauma without melodrama. Its pacing is deliberate but occasionally slow, testing patience.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Seconds — A disquieting look at identity and transformation</title>
      <link>https://deslypeter.com/writing/seconds-1966-review</link>
      <guid>https://deslypeter.com/writing/seconds-1966-review.html?lang=en</guid>
      <description>The film's unsettling tone and deliberate pacing elevate its psychological tension, though the ending feels slightly detached from its earlier unease.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central dramatic situation revolves around a man seeking escape through radical change, only to find himself trapped in a new existence he cannot control. Rock Hudson portrays a man unraveling beneath the surface of his new identity, hinting at inner turmoil without overt expression. His performance is restrained, allowing the audience to infer his emotional state from subtle shifts in behavior.&lt;/p&gt;&lt;p&gt;The dialogue feels stiff and rehearsed, showing how disconnected the characters are from who they used to be. John Randolph is cold and efficient as part of The Company, making the transformation process feel clinical. The film takes its time, with long stretches that highlight the main character&amp;#x27;s isolation and confusion.&lt;/p&gt;&lt;p&gt;Salome Jens brings an eerie quality to her role, with her lines hinting at deeper layers beneath the surface. The film moves through stages of transformation, each more unsettling than the last, but it never gives clear answers. The mix of psychological horror and sci-fi elements sometimes feels unresolved or underdeveloped.&lt;/p&gt;&lt;p&gt;The atmosphere is consistently heavy, focusing on the main character&amp;#x27;s inner struggle rather than action. Even with its flaws, the film&amp;#x27;s look at identity is still compelling and makes you think. The heart of it is the question of whether change can ever be truly freeing or if it just swaps one prison for another.&lt;/p&gt;&lt;p class="specs-note"&gt;1966 · English. &lt;a href="https://en.wikipedia.org/wiki/Seconds_(1966_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1966/seconds.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s unsettling tone and deliberate pacing elevate its psychological tension, though the ending feels slightly detached from its earlier unease.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Swimmer — A man's delusion becomes a burden</title>
      <link>https://deslypeter.com/writing/the-swimmer-1968-review</link>
      <guid>https://deslypeter.com/writing/the-swimmer-1968-review.html?lang=en</guid>
      <description>The film balances poetic decay with emotional collapse, but its slow rhythm risks alienating viewers who crave resolution.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict revolves around a man who believes he is swimming through his own neighborhood, losing grip on reality. His journey reflects a descent into personal failure and the erosion of social connections. The film&amp;#x27;s surreal tone is grounded in the protagonist’s deteriorating mental state.&lt;/p&gt;&lt;p&gt;The film takes its time, focusing on quiet, lonely moments instead of rushing to a big emotional payoff. The visuals match the main character&amp;#x27;s confusion, but some parts drag and repeat themselves. The slow pace makes you sit with the discomfort rather than giving quick emotional fixes.&lt;/p&gt;&lt;p&gt;Burt Lancaster conveys a fragile pride beneath the surface of his character’s denial. His performance balances bravado with vulnerability, making the collapse feel earned. Janice Rule and Marge Champion provide emotional anchors in otherwise abstract scenes.&lt;/p&gt;&lt;p&gt;The script uses symbols a lot, but not always clearly. Sometimes the film&amp;#x27;s vague style feels more like a choice than something the story really needs. Still, it&amp;#x27;s a strong look at self-deception and downfall.&lt;/p&gt;&lt;p class="specs-note"&gt;1968 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Swimmer_(1968_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1968/swimmer.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances poetic decay with emotional collapse, but its slow rhythm risks alienating viewers who crave resolution.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Birdy — A friendship tested by war and identity</title>
      <link>https://deslypeter.com/writing/birdy-1984-review</link>
      <guid>https://deslypeter.com/writing/birdy-1984-review.html?lang=en</guid>
      <description>The film captures the psychological toll of war but falters in balancing its characters’ inner lives with external events. The performances are strong, yet the narrative occasionally feels fragmented.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film tells the story of two friends whose friendship is tested by their time in the Vietnam War. It uses flashbacks and a frame narrative to show their bond, which is the heart of the film. But the ending feels messy and unclear. The back-and-forth between past and present builds tension, but it also makes things confusing at times.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s pacing is all over the place. Some parts feel too fast, while others drag on without much point. The flashbacks do show us more about their relationship, but they don&amp;#x27;t always carry the emotional weight needed to hold the story together. The film tries to explore themes like identity and trauma, but it doesn&amp;#x27;t really commit to any one angle.&lt;/p&gt;&lt;p&gt;Matthew Modine and Nicolas Cage deliver nuanced performances, capturing the fragility of their characters. Their chemistry is believable, especially in quieter moments where their connection feels genuine. However, the dialogue sometimes leans into melodrama, undermining the subtlety of their emotions.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s best parts come from its visuals rather than its script. It often uses tired ideas about war and masculinity without giving us anything new. Even with its flaws, Birdy is still a gripping, if flawed, look at friendship and the damage war can do.&lt;/p&gt;&lt;p class="specs-note"&gt;1984 · English. &lt;a href="https://en.wikipedia.org/wiki/Birdy_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film captures the psychological toll of war but falters in balancing its characters’ inner lives with external events. The performances are strong, yet the narrative occasionally feels fragmented.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Last Picture Show — Small-town dreams and fading hope</title>
      <link>https://deslypeter.com/writing/the-last-picture-show-1971-review</link>
      <guid>https://deslypeter.com/writing/the-last-picture-show-1971-review.html?lang=en</guid>
      <description>The film balances nostalgia with the ache of missed chances. Its emotional core is its greatest strength, even if its pacing occasionally softens the impact.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two high-school friends navigate growing up in a town that offers few options beyond repetition or departure. Their friendship is tested by ambition, desire and the weight of expectation from their community. The film&amp;#x27;s focus on male adolescence feels both intimate and universal, shaped by the setting and time period.&lt;/p&gt;&lt;p&gt;Bogdanovich&amp;#x27;s direction focuses on quiet moments, letting silence show the characters&amp;#x27; regrets. The scenes move slowly at first, then build to sudden emotional moments, creating a natural rhythm. Some parts feel too slow, making tense moments less urgent than they could be.&lt;/p&gt;&lt;p&gt;Jeff Bridges and Timothy Bottoms embody the tension between loyalty and personal aspiration without overacting. Their chemistry is subtle but convincing, grounding the film&amp;#x27;s more dramatic themes in real, flawed relationships. Ellen Burstyn and Cloris Leachman add weight to the town&amp;#x27;s decaying atmosphere with their grounded performances.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s nostalgic tone can make its critique of stagnation feel soft. But the characters&amp;#x27; real emotions make up for any pacing or tone issues. It&amp;#x27;s still a touching look at youth, memory, and time, with enough depth to stay relevant.&lt;/p&gt;&lt;p class="specs-note"&gt;1971 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Last_Picture_Show"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1971/last_picture_show.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances nostalgia with the ache of missed chances. Its emotional core is its greatest strength, even if its pacing occasionally softens the impact.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Five Easy Pieces — Jack Nicholson's brooding stillness</title>
      <link>https://deslypeter.com/writing/five-easy-pieces-1970-review</link>
      <guid>https://deslypeter.com/writing/five-easy-pieces-1970-review.html?lang=en</guid>
      <description>The film's emotional core lies in its reluctance to offer easy resolutions. The tension between Bobby’s past and present remains unresolved but deeply felt.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Jack Nicholson carries the film with a presence that feels both detached and deeply wounded, anchoring the story in quiet frustration. Bobby Dupea is a man caught between his working-class reality and an unfulfilled artistic potential, a conflict that drives much of the drama without needing exposition. The script avoids melodrama by focusing on small, awkward interactions that reveal the character’s inner turmoil.&lt;/p&gt;&lt;p&gt;The direction keeps scenes grounded in real-time tension, avoiding theatrical flourishes that might soften the character&amp;#x27;s edges. The pacing is deliberately slow, mirroring Bobby’s reluctance to confront his past or his identity. This approach might feel slow for some, but it lets the emotional stakes build gradually rather than being forced by plot mechanics.&lt;/p&gt;&lt;p&gt;Karen Black and Susan Anspach provide sharp contrast to Nicholson&amp;#x27;s stoicism, their dialogue often laced with biting honesty. Their performances highlight Bobby’s isolation without ever reducing him to a passive figure in their stories. The film’s weakness is that it doesn’t fully explore the emotional fallout of Bobby’s decisions, leaving some threads dangling without resolution.&lt;/p&gt;&lt;p&gt;This ambiguity may frustrate viewers expecting catharsis but aligns with the character&amp;#x27;s own indecision and emotional paralysis. The restraint in direction and dialogue gives the film a raw authenticity that feels more real than polished. Despite its flaws, the film remains a compelling study of identity and disconnection, anchored by Nicholson’s powerful, understated performance.&lt;/p&gt;&lt;p class="specs-note"&gt;1970 · English. &lt;a href="https://en.wikipedia.org/wiki/Five_Easy_Pieces"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1970/five_easy_pieces.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s emotional core lies in its reluctance to offer easy resolutions. The tension between Bobby’s past and present remains unresolved but deeply felt.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The King of Comedy — A darkly funny obsession with fame</title>
      <link>https://deslypeter.com/writing/the-king-of-comedy-1982-review</link>
      <guid>https://deslypeter.com/writing/the-king-of-comedy-1982-review.html?lang=en</guid>
      <description>The film explores how far someone will go for a moment in the spotlight, but its tone occasionally undermines its own bleakness.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict revolves around a man&amp;#x27;s desperate pursuit of stardom through a dangerous connection with a comedian. De Niro’s character is both pitiable and repulsive, embodying the film’s critique of fame’s corrupting allure. Jerry Lewis plays a figure of influence who remains morally ambiguous throughout.&lt;/p&gt;&lt;p&gt;The dialogue leans into exaggerated humor that doesn’t always match the film’s darker themes of violence and manipulation. Sandra Bernhard’s lines are sharp and highlight the absurdity of media obsession. The pacing is uneven—some parts drag, while others move too fast to let the emotions sink in.&lt;/p&gt;&lt;p&gt;De Niro’s performance is intense but occasionally overwrought, especially in moments of self-pity. Lewis’s character is underdeveloped, making his moral choices feel inconsistent. Bernhard’s wit provides a necessary counterbalance to the film’s darker impulses.&lt;/p&gt;&lt;p&gt;The film has a strong satirical edge, but its tone and focus sometimes waver. Its critique of media culture still feels relevant, even if the story feels a bit forced in places. Despite these issues, it does capture the uneasy tension between ambition and morality.&lt;/p&gt;&lt;p class="specs-note"&gt;1982 · English. &lt;a href="https://en.wikipedia.org/wiki/The_King_of_Comedy_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1983/king_of_comedy.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film explores how far someone will go for a moment in the spotlight, but its tone occasionally undermines its own bleakness.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>After Hours — A night out that spirals into absurdity</title>
      <link>https://deslypeter.com/writing/after-hours-1985-review</link>
      <guid>https://deslypeter.com/writing/after-hours-1985-review.html?lang=en</guid>
      <description>The film's rhythm balances dark humor with escalating tension. The central character’s confusion mirrors the audience's disorientation.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Paul Hackett stumbles through a series of bizarre encounters as he tries to return home after a night out in New York. His journey becomes increasingly surreal, with each new situation compounding his frustration and bewilderment. The film’s humor arises from the contrast between Paul&amp;#x27;s desperation and the absurdity of his surroundings.&lt;/p&gt;&lt;p&gt;Scorsese keeps the tension high by moving quickly between scenes, without needing jump scares or big thrills. The city feels like another character, changing around Paul as he walks its streets. Each situation is short but packed with meaning, avoiding long speeches or clear answers.&lt;/p&gt;&lt;p&gt;Griffin Dunne conveys Paul&amp;#x27;s vulnerability and confusion without overacting or melodrama. His performance keeps the character grounded even when the plot becomes increasingly farcical. Supporting actors deliver sharp, concise lines that reflect their own peculiarities without overshadowing Paul’s plight.&lt;/p&gt;&lt;p&gt;The film relies too much on its own idea in the later parts, turning some characters into stereotypes. Still, the mix of humor and tension works for most of the movie. After Hours is successful because it makes you feel Paul&amp;#x27;s confusion as he moves through a night that never really makes sense.&lt;/p&gt;&lt;p class="specs-note"&gt;1985 · English. &lt;a href="https://en.wikipedia.org/wiki/After_Hours_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1985/after_hours.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s rhythm balances dark humor with escalating tension. The central character’s confusion mirrors the audience&amp;#x27;s disorientation.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Alice Doesn't Live Here Anymore — A woman and her son on a journey with no clear destination</title>
      <link>https://deslypeter.com/writing/alice-doesn-t-live-here-anymore-1974-review</link>
      <guid>https://deslypeter.com/writing/alice-doesn-t-live-here-anymore-1974-review.html?lang=en</guid>
      <description>The film balances humor and hardship but never fully resolves the tension between its characters' needs and the road they're on.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Alice&amp;#x27;s struggle to rebuild her life is presented without melodrama, focusing instead on small choices and quiet frustrations. The journey westward becomes a metaphor for emotional uncertainty rather than a plot-driven mission. Ellen Burstyn conveys weariness without bitterness, grounding the film in realism.&lt;/p&gt;&lt;p&gt;Scorsese’s direction feels more natural than showy, but it can leave some viewers feeling underwhelmed. The dialogue relies on repetition and subtext, which might make the emotional moments harder to grasp. Supporting actors like Harvey Keitel add some texture, but they don’t really lift the central conflict above its limits.&lt;/p&gt;&lt;p&gt;Diane Ladd’s performance as a friend adds warmth but lacks depth in her limited screen time. Kris Kristofferson’s presence feels more like a stylistic choice than a narrative necessity. The film’s humor arises from situational irony rather than character-driven wit, limiting its emotional resonance.&lt;/p&gt;&lt;p&gt;The characters don’t really connect with each other, which feels honest but might frustrate people looking for catharsis or closure. Even with its flaws, the film still manages to be a compelling look at a woman trying to find her place in a world that doesn’t seem to care.&lt;/p&gt;&lt;p class="specs-note"&gt;1974 · English. &lt;a href="https://en.wikipedia.org/wiki/Alice_Doesn%2527t_Live_Here_Anymore"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1974/alice_doesnt_live_here_anymore.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances humor and hardship but never fully resolves the tension between its characters&amp;#x27; needs and the road they&amp;#x27;re on.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Age of Innocence — A love that cannot be spoken aloud</title>
      <link>https://deslypeter.com/writing/the-age-of-innocence-1993-review</link>
      <guid>https://deslypeter.com/writing/the-age-of-innocence-1993-review.html?lang=en</guid>
      <description>The film's emotional core lies in what remains unsaid. The performances anchor the tension between duty and desire, even when words fail.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Newland Archer is trapped between his marriage and a forbidden attraction, but the film never lets us know which path he truly wants. The film explores how social expectations can silence the most urgent emotions, leaving only gestures to convey what cannot be said. Daniel Day-Lewis embodies the internal conflict without needing explicit confession, making his restraint the story&amp;#x27;s quietest force.&lt;/p&gt;&lt;p&gt;Scorsese focuses on quiet moments — pauses, looks — that hold a lot of feeling. The film moves slowly, like Archer trying to decide between love and duty. Every scene with Countess Olenska feels like a test, showing how close he is to breaking the rules of his life.&lt;/p&gt;&lt;p&gt;Michelle Pfeiffer conveys vulnerability without melodrama, letting her character&amp;#x27;s defiance emerge through small, controlled choices. Winona Ryder plays May as both loyal and stifled, showing how love can be suffocating when bound by duty. The dialogue is precise, often indirect, leaving room for what is not said to carry the emotional weight.&lt;/p&gt;&lt;p&gt;The film might accidentally make the era&amp;#x27;s limits seem more appealing than they are. Sometimes, the quiet approach feels like it&amp;#x27;s holding back emotion instead of letting it flow. But the acting and how the story is told still make the hidden feelings feel real and important.&lt;/p&gt;&lt;p class="specs-note"&gt;1993 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Age_of_Innocence_(1993_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/10436"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1993/age_of_innocence.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s emotional core lies in what remains unsaid. The performances anchor the tension between duty and desire, even when words fail.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Assassination of Jesse James by the Coward Robert Ford — Brad Pitt as Jesse James is a performance of quiet, burning obsession</title>
      <link>https://deslypeter.com/writing/the-assassination-of-jesse-james-by-the-coward-robert-ford-2007-review</link>
      <guid>https://deslypeter.com/writing/the-assassination-of-jesse-james-by-the-coward-robert-ford-2007-review.html?lang=en</guid>
      <description>The film captures the intoxicating pull of myth and the slow unraveling of a man's legend. The pacing sometimes lags but never distracts from the emotional core.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Brad Pitt embodies Jesse James with a magnetic stillness that feels both haunted and dangerous. Casey Affleck’s Robert Ford is a portrait of obsession, his eyes betraying the weight of his admiration and fear. The relationship between the two men is the film&amp;#x27;s heartbeat—tense, layered, and psychologically rich.&lt;/p&gt;&lt;p&gt;Andrew Dominik uses long shots and silence to let the mood carry the story. The wide angles make even busy scenes feel lonely. The slower pacing during quiet moments can feel slow, but it also helps you feel the emotional weight.&lt;/p&gt;&lt;p&gt;Mary-Louise Parker&amp;#x27;s performance adds a haunting undercurrent to the film’s moral complexity. Paul Schneider and Jeremy Renner provide grounding as supporting figures caught between myth and reality. The dialogue is sparse but deliberate, often carrying subtext that lingers beyond its delivery.&lt;/p&gt;&lt;p&gt;The film sometimes treats Jesse James’ legend with too much respect. This makes the moral questions feel less sharp than they could be. Still, the way Jesse and Robert’s relationship plays out keeps the story emotionally powerful.&lt;/p&gt;&lt;p class="specs-note"&gt;2007 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Assassination_of_Jesse_James_by_the_Coward_Robert_Ford"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/4512"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2007/assassination_of_jesse_james_by_the_coward_robert_ford.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film captures the intoxicating pull of myth and the slow unraveling of a man&amp;#x27;s legend. The pacing sometimes lags but never distracts from the emotional core.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Proposition — A tense moral bargain in the Australian outback</title>
      <link>https://deslypeter.com/writing/the-proposition-2005-review</link>
      <guid>https://deslypeter.com/writing/the-proposition-2005-review.html?lang=en</guid>
      <description>The film balances brutal violence with uneasy morality, but its pacing and tone occasionally undermine its own tension.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main conflict is a man forced to kill his brother or let someone else die. It raises ethical questions but doesn&amp;#x27;t offer clear answers. The setting highlights how isolated the characters are in their moral choices, though the story sometimes leans into melodrama. The dialogue is short and direct, matching the harsh world but sometimes missing emotional depth.&lt;/p&gt;&lt;p&gt;The film uses wide shots to show the vastness of the outback, which mirrors the characters&amp;#x27; emotional distance. The editing keeps tension high but can feel rushed, leaving little time to develop the side characters. The main conflict is strong, but the supporting roles often feel underdeveloped and focused on the main story.&lt;/p&gt;&lt;p&gt;The protagonist&amp;#x27;s internal struggle is portrayed with a mix of grit and ambiguity, avoiding easy moral judgments. Performances are grounded but limited by the script’s occasional lack of subtlety in emotional beats. The film’s violence is starkly presented without excessive stylization, which adds to its unsettling atmosphere.&lt;/p&gt;&lt;p&gt;The central idea is heavy, but the way it&amp;#x27;s put together sometimes feels limited by its own themes and structure. The moral complexity is there but not always fully explored because the story moves quickly, focusing more on plot than on deeper thinking. Despite these issues, the film is still a gripping look at guilt, duty, and survival in a tough environment.&lt;/p&gt;&lt;p class="specs-note"&gt;2005 · English. &lt;a href="https://www.themoviedb.org/movie/16608"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2006/proposition.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances brutal violence with uneasy morality, but its pacing and tone occasionally undermine its own tension.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Badlands — A restless heart in a broken world</title>
      <link>https://deslypeter.com/writing/badlands-1973-review</link>
      <guid>https://deslypeter.com/writing/badlands-1973-review.html?lang=en</guid>
      <description>The film balances innocence and violence with quiet unease. The performances hold the tension without melodrama or overstatement.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Holly&amp;#x27;s youthful perspective frames the killings as something distant, yet her actions escalate toward inevitability. Kit&amp;#x27;s charm masks a deepening instability that the film never fully explains but constantly implies. The relationship between Holly and Kit is built on shared purpose rather than emotional connection.&lt;/p&gt;&lt;p&gt;The direction focuses on small moments—like a car ride or a glance—to show the weight of their choices without being obvious. The dialogue feels natural, avoiding the exaggerated speech common in crime films from that time. There&amp;#x27;s no heavy moralizing; the violence is shown with little shock but a steady sense of discomfort.&lt;/p&gt;&lt;p&gt;Martin Sheen and Sissy Spacek share a chemistry that suggests mutual dependence rather than love or obsession. Their performances avoid histrionics, letting their actions speak for the emotional stakes. Warren Oates plays the lawman with quiet authority, never overreaching into caricature.&lt;/p&gt;&lt;p&gt;The film moves at a slow pace, matching Holly&amp;#x27;s perspective and the gradual breakdown of their lives. Sometimes, the film&amp;#x27;s restraint might feel like it&amp;#x27;s holding back from the tension, but it avoids being overly emotional. Its best part is how it makes the audience feel involved in a way that feels natural rather than forced.&lt;/p&gt;&lt;p class="specs-note"&gt;1973 · English. &lt;a href="https://en.wikipedia.org/wiki/Badlands_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1973/badlands.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances innocence and violence with quiet unease. The performances hold the tension without melodrama or overstatement.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>A Face in the Crowd — A charismatic threat without a weapon</title>
      <link>https://deslypeter.com/writing/a-face-in-the-crowd-1957-review</link>
      <guid>https://deslypeter.com/writing/a-face-in-the-crowd-1957-review.html?lang=en</guid>
      <description>The film explores the danger of public adoration for a man who hides his cruelty behind charm. The performances anchor the satire in real emotional stakes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central drama is built on a man&amp;#x27;s rise to fame through manipulation and self-promotion, masking deep personal flaws. His growing influence is shown through how others react to him, not just what he says or does. The film avoids outright condemnation by showing his appeal as genuine, if misguided.&lt;/p&gt;&lt;p&gt;The film moves at a steady pace, building from admiration to unease. Scenes don&amp;#x27;t feel rushed or dragged out. The dialogue is sharp but not overdone, letting the characters&amp;#x27; moral struggles come through naturally. The tension grows through small changes in tone rather than big dramatic moments.&lt;/p&gt;&lt;p&gt;Andy Griffith carries the role with a mix of likability and menace that keeps the audience unsettled. His performance balances charm with unsettling unpredictability, making his downfall feel inevitable yet tragic. Patricia Neal and Walter Matthau provide emotional depth as those who recognize his flaws but are powerless to stop him.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s strength is that it doesn&amp;#x27;t paint its characters as simple villains or saints. Sometimes, the moral complexity feels a bit forced, slowing the story down a little. But the film still works as a strong warning about the risks of letting public adoration go unchecked.&lt;/p&gt;&lt;p class="specs-note"&gt;1957 · English. &lt;a href="https://en.wikipedia.org/wiki/A_Face_in_the_Crowd_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film explores the danger of public adoration for a man who hides his cruelty behind charm. The performances anchor the satire in real emotional stakes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Sweet Smell of Success — A toxic dance of ambition and manipulation</title>
      <link>https://deslypeter.com/writing/sweet-smell-of-success-1957-review</link>
      <guid>https://deslypeter.com/writing/sweet-smell-of-success-1957-review.html?lang=en</guid>
      <description>The film's tension lies in the power struggle between two men with opposing goals. The dialogue crackles with subtext, revealing hidden motives beneath polite conversation.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two men dominate the screen: one a ruthless press agent, the other a desperate playwright. Their relationship is built on control and resentment. Burt Lancaster&amp;#x27;s character exudes cold authority, while Tony Curtis plays his subordinate with simmering frustration. The script forces both men to constantly outmaneuver each other, making every exchange feel like a battle for survival.&lt;/p&gt;&lt;p&gt;The film moves quickly, with long pauses that make the tension between the two men feel heavier. Small actions—like a glance or a pause—hint at bigger conflicts. The dialogue is short but pointed, often hiding real intentions behind friendly words.&lt;/p&gt;&lt;p&gt;Lancaster&amp;#x27;s performance is chillingly calculated, never allowing his character to show vulnerability. Curtis conveys desperation through subtle shifts in tone and body language. Supporting actors add texture without overshadowing the central dynamic between the leads.&lt;/p&gt;&lt;p&gt;The film keeps its dark mood from getting too heavy by adding dry humor. It makes the audience feel like they&amp;#x27;re part of the characters&amp;#x27; games, even though it&amp;#x27;s not clear who&amp;#x27;s right. The characters are so well done and the story is so tight that it still hits emotionally.&lt;/p&gt;&lt;p class="specs-note"&gt;1957 · English. &lt;a href="https://en.wikipedia.org/wiki/Sweet_Smell_of_Success"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1957/sweet_smell_of_success.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s tension lies in the power struggle between two men with opposing goals. The dialogue crackles with subtext, revealing hidden motives beneath polite conversation.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Ace in the Hole — Kirk Douglas as a manipulative reporter</title>
      <link>https://deslypeter.com/writing/ace-in-the-hole-1951-review</link>
      <guid>https://deslypeter.com/writing/ace-in-the-hole-1951-review.html?lang=en</guid>
      <description>The film’s moral decay is balanced by sharp dialogue, but the ending feels rushed compared to its buildup.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Kirk Douglas plays a man who exploits others while claiming to fight for truth, creating a tense moral conflict. His character&amp;#x27;s charm and ruthlessness make him both compelling and deeply unsettling in his actions. The story hinges on his ability to manipulate people and events toward his own gain, often with tragic results.&lt;/p&gt;&lt;p&gt;Wilder keeps the tension high but sometimes leans into melodrama. The script moves quickly, but some character motivations feel underdeveloped by the time the climax arrives. Scenes are tightly written, yet the pacing sometimes outpaces the emotional weight of the situation.&lt;/p&gt;&lt;p&gt;Kirk Douglas delivers a performance that is both charismatic and morally ambiguous, anchoring the film’s tension. Jan Sterling’s role as his wife adds depth to the moral conflict but lacks the screen time needed for full development. Their dialogue crackles with tension, revealing layers of betrayal and desperation without over-explaining.&lt;/p&gt;&lt;p&gt;The central theme of exploitation is clear, but the resolution feels abrupt in its judgment of the characters involved. Despite this, the film remains a sharp critique of media sensationalism and personal greed. Its flaws are minor compared to its bold storytelling and strong performances, making it a memorable drama.&lt;/p&gt;&lt;p class="specs-note"&gt;1951 · English. &lt;a href="https://en.wikipedia.org/wiki/Ace_in_the_Hole_(1951_film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film’s moral decay is balanced by sharp dialogue, but the ending feels rushed compared to its buildup.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Ox-Bow Incident — A town's fury turns to guilt</title>
      <link>https://deslypeter.com/writing/the-ox-bow-incident-1943-review</link>
      <guid>https://deslypeter.com/writing/the-ox-bow-incident-1943-review.html?lang=en</guid>
      <description>The film exposes the dangers of mob justice with a restrained tone. The performances anchor its moral weight without melodrama.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The town’s anger at a murdered rancher leads to swift, brutal action that later feels irreversible. A group of men, including two outsiders, form a posse convinced of their right to punish the accused. Their certainty is built on incomplete information and collective fear, not proof.&lt;/p&gt;&lt;p&gt;The direction keeps tension tight without flashy visuals or sudden reveals. It moves steadily toward a moral reckoning rather than a plot twist. There are few moments of relief from the pressure of what they&amp;#x27;ve done.&lt;/p&gt;&lt;p&gt;Henry Fonda’s performance is quietly intense, showing the weight of his choices without histrionics. Dana Andrews conveys the unease of someone caught between duty and doubt. Mary Beth Hughes brings a quiet strength to her role, contrasting with the men&amp;#x27;s aggression.&lt;/p&gt;&lt;p&gt;The film’s moral clarity is its strongest feature, but it occasionally leans too heavily on its own message. At times, the direction feels too calculated in delivering its lesson rather than letting it unfold naturally. Still, the emotional stakes remain high enough to make the message feel earned rather than imposed.&lt;/p&gt;&lt;p class="specs-note"&gt;1943 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Ox-Bow_Incident"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1943/ox_bow_incident.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film exposes the dangers of mob justice with a restrained tone. The performances anchor its moral weight without melodrama.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Treasure of the Sierra Madre — A search for gold becomes a test of trust</title>
      <link>https://deslypeter.com/writing/the-treasure-of-the-sierra-madre-1948-review</link>
      <guid>https://deslypeter.com/writing/the-treasure-of-the-sierra-madre-1948-review.html?lang=en</guid>
      <description>The film balances greed and friendship with careful pacing. The performances make the moral dilemmas feel urgent rather than didactic.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two men join an old prospector in a desperate hunt for gold, but their relationships shift as the stakes rise. The dialogue often hides what is truly at risk, making conversations tense without being melodramatic. John Huston&amp;#x27;s direction keeps the focus on how people act under pressure rather than on the landscape or action.&lt;/p&gt;&lt;p&gt;The film moves at a steady pace, showing how the characters&amp;#x27; decisions reveal who they really are. Walter Huston plays his part with experience without becoming a wise old man stereotype. His scenes with Humphrey Bogart show how desperate people can get and how that desperation can make it hard to know who to trust.&lt;/p&gt;&lt;p&gt;Tim Holt&amp;#x27;s performance adds youthful recklessness that contrasts with the older men&amp;#x27;s caution. The tension grows from what is left unsaid rather than from loud confrontations or plot twists. There is a quiet power in how the characters&amp;#x27; goals shift as they uncover more about themselves.&lt;/p&gt;&lt;p&gt;The slow pace might feel too calm for some, but it gives time for the emotions to sink in without rushing to a finish. The film doesn&amp;#x27;t offer simple solutions, leaving the audience thinking about whether gold is worth losing what makes you human.&lt;/p&gt;&lt;p class="specs-note"&gt;1948 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Treasure_of_the_Sierra_Madre_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1948/treasure_of_the_sierra_madre.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances greed and friendship with careful pacing. The performances make the moral dilemmas feel urgent rather than didactic.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Grapes of Wrath — Hardship without the loss of dignity</title>
      <link>https://deslypeter.com/writing/the-grapes-of-wrath-1940-review</link>
      <guid>https://deslypeter.com/writing/the-grapes-of-wrath-1940-review.html?lang=en</guid>
      <description>The Grapes of Wrath makes economic hardship felt through a family rather than an abstract argument. Henry Fonda and Jane Darwell give John Ford’s film a human strength that still carries enormous weight.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The Grapes of Wrath is especially good at showing how much effort it takes to retain a little dignity when the practical conditions of life keep worsening. John Ford keeps the family at the centre of that pressure. Their needs are immediate and understandable, which gives the wider social questions a human scale.&lt;/p&gt;&lt;p&gt;Henry Fonda plays Tom Joad with a directness that feels more real than simple heroism. He makes anger understandable without making every response comfortable. Jane Darwell brings a different kind of strength as Ma Joad. Her focus on keeping the family together gives the film an emotional thread that a series of hardships alone wouldn&amp;#x27;t provide.&lt;/p&gt;&lt;p&gt;The dialogue works because the people speaking usually need something more immediate than an argument. They want work, shelter, an explanation or a little consideration. Larger ideas emerge from those needs. I liked how the film allows a plain exchange to carry political weight without making the characters seem aware that they are delivering a lesson.&lt;/p&gt;&lt;p&gt;The time period and style are clearly shown, but the central issues still feel relevant. The film understands the difference between admiring endurance and accepting the conditions that make it necessary. That difference gives its compassion real weight. The performances make the family worth caring about before the film asks what their treatment says about the world around them.&lt;/p&gt;&lt;p class="specs-note"&gt;1940 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Grapes_of_Wrath_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1940/grapes_of_wrath.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Grapes of Wrath makes economic hardship felt through a family rather than an abstract argument. Henry Fonda and Jane Darwell give John Ford’s film a human strength that still carries enormous weight.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Last Detail — A duty that becomes a test of patience</title>
      <link>https://deslypeter.com/writing/the-last-detail-1973-review</link>
      <guid>https://deslypeter.com/writing/the-last-detail-1973-review.html?lang=en</guid>
      <description>The film balances dark humor with moral unease, but its tone falters in the final act. Nicholson's performance remains its most consistent anchor.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two sailors are forced to take a recruit on a long journey, testing their own limits and his vulnerability. The dynamic between the older sailor and the younger recruit reveals tension beneath the surface humor. The film leans into the absurdity of the situation without fully committing to its emotional gravity.&lt;/p&gt;&lt;p&gt;The film moves quickly, but it doesn&amp;#x27;t spend much time on what matters most. There&amp;#x27;s a rhythm to the journey, but it often feels more like going through a list than telling a story. The mood shifts suddenly between funny and serious, which makes it feel a bit off-balance.&lt;/p&gt;&lt;p&gt;Jack Nicholson brings a weary charm that grounds the film&amp;#x27;s more chaotic moments. His character&amp;#x27;s cynicism masks a deeper frustration with authority and responsibility. Randy Quaid and Carol Kane add tension but struggle to match Nicholson&amp;#x27;s presence in quieter scenes.&lt;/p&gt;&lt;p&gt;The humor sometimes feels fake, which takes away from the real emotions in the story. The film isn&amp;#x27;t sure if it wants to be a comedy or a character study. But the way the characters interact is still interesting enough to keep people watching.&lt;/p&gt;&lt;p class="specs-note"&gt;1973 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Last_Detail"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1973/last_detail.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances dark humor with moral unease, but its tone falters in the final act. Nicholson&amp;#x27;s performance remains its most consistent anchor.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Commitments — Colm Meaney's frustration is convincing</title>
      <link>https://deslypeter.com/writing/the-commitments-1991-review</link>
      <guid>https://deslypeter.com/writing/the-commitments-1991-review.html?lang=en</guid>
      <description>The Commitments leans on charm and music but lacks the emotional depth to fully commit to its characters' struggles.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Colm Meaney carries the film with a believable mix of ambition and self-doubt, anchoring the story in real frustration. The script gives Jimmy Rabbitte a clear goal, but the supporting roles feel more like stage props than fully realized people. The musical numbers are lively, yet they occasionally distract from the characters&amp;#x27; personal stakes.&lt;/p&gt;&lt;p&gt;Alan Parker keeps the film moving with a steady energy, but it doesn’t pause long enough for the quieter emotional moments. The dialogue is sharp and often funny, but it leans too much on Dublin slang, which might not land well with everyone. The story moves quickly, leaving little time to dig into why the characters act the way they do.&lt;/p&gt;&lt;p&gt;Robert Arkins adds some humor as a band member, but his role lacks the weight of the central story. The Commitments is at its best when focusing on Jimmy&amp;#x27;s personal drive rather than the group dynamic. There’s an uneven balance between comedy and drama that keeps the film from fully resonating.&lt;/p&gt;&lt;p&gt;The music is a big part of what makes the film enjoyable, but it can’t make up for the underdeveloped side characters. The film has a clear charm, but it doesn’t quite back up its emotional goals. It’s a fun, lively movie with some heartfelt moments, but it doesn’t always keep its energy up for long.&lt;/p&gt;&lt;p class="specs-note"&gt;1991 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Commitments_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1991/commitments.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Commitments leans on charm and music but lacks the emotional depth to fully commit to its characters&amp;#x27; struggles.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Loneliness of the Long Distance Runner — A solitary figure against institutional pressure</title>
      <link>https://deslypeter.com/writing/the-loneliness-of-the-long-distance-runner-1962-review</link>
      <guid>https://deslypeter.com/writing/the-loneliness-of-the-long-distance-runner-1962-review.html?lang=en</guid>
      <description>The film mixes youthful rebellion with a feeling that things can't be changed. It has a strong emotional centre, but the story relies too much on its own setup.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main character&amp;#x27;s loneliness comes through in how he runs, not in what he says or argues. There&amp;#x27;s a quiet struggle between what he wants and what&amp;#x27;s being forced on him. The film doesn&amp;#x27;t show us his thoughts much, which makes it harder to connect with him emotionally.&lt;/p&gt;&lt;p&gt;The film moves forward at a steady pace but doesn&amp;#x27;t let us look deep inside his mind. The lack of a clear ending feels on purpose, but it might leave the audience feeling a bit disconnected. The direction keeps things visually simple, sometimes at the cost of emotional clarity.&lt;/p&gt;&lt;p&gt;The acting is low-key but doesn&amp;#x27;t give enough depth to understand his decisions. He carries himself with a certain calm, but it doesn&amp;#x27;t always grab you. The dialogue is minimal but often feels like it&amp;#x27;s getting in the way instead of helping.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s message about personal freedom is clear, but it feels a bit distant. The way it&amp;#x27;s put together might be on purpose, but it sometimes hides how emotionally involved we&amp;#x27;re meant to be. It&amp;#x27;s still a thoughtful film, even if it doesn&amp;#x27;t fully reach its emotional goals.&lt;/p&gt;&lt;p class="specs-note"&gt;1962 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Loneliness_of_the_Long_Distance_Runner_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film mixes youthful rebellion with a feeling that things can&amp;#x27;t be changed. It has a strong emotional centre, but the story relies too much on its own setup.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Killing Fields — A war-torn city as a character in its own right</title>
      <link>https://deslypeter.com/writing/the-killing-fields-1984-review</link>
      <guid>https://deslypeter.com/writing/the-killing-fields-1984-review.html?lang=en</guid>
      <description>The Killing Fields captures the brutality of war without needing to explain every detail. The film’s emotional core is its refusal to look away from suffering.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict revolves around survival amid chaos, where moral choices are rarely clear or kind. Characters move through a city that feels like an antagonist, shaping their fates with indifference. The film’s pacing allows moments of quiet despair without rushing toward resolution.&lt;/p&gt;&lt;p&gt;The film shows destruction and loss through visuals rather than explicit violence. The dialogue is minimal but heavy with meaning, carrying the weight of what&amp;#x27;s left unsaid. The tragedy unfolds slowly, matching the characters&amp;#x27; confusion and exhaustion.&lt;/p&gt;&lt;p&gt;Performances are understated yet powerful, conveying trauma through silence as much as speech. The lack of named actors does not hinder the emotional impact of their roles. Each interaction feels urgent but incomplete, reinforcing the sense of entrapment.&lt;/p&gt;&lt;p&gt;One issue is that the film&amp;#x27;s focus on suffering can feel repetitive in how it shows despair. There are moments where the story leans too much on its grim subject without giving much relief. Still, it&amp;#x27;s a strong look at how people endure in the face of overwhelming destruction.&lt;/p&gt;&lt;p class="specs-note"&gt;1984 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Killing_Fields_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1984/killing_fields.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Killing Fields captures the brutality of war without needing to explain every detail. The film’s emotional core is its refusal to look away from suffering.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Year of Living Dangerously — A crisis of identity amid political unrest</title>
      <link>https://deslypeter.com/writing/the-year-of-living-dangerously-1982-review</link>
      <guid>https://deslypeter.com/writing/the-year-of-living-dangerously-1982-review.html?lang=en</guid>
      <description>The film balances personal turmoil with historical upheaval, but its emotional core is often overshadowed by its ambition.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main conflict is a journalist getting caught up in a foreign revolution, but his personal struggles don&amp;#x27;t get enough attention compared to the outside chaos. The film moves quickly, which makes the quieter, emotional moments feel rushed and disconnected. It tries to connect the personal and political sides of the story, but they often feel like separate things.&lt;/p&gt;&lt;p&gt;The visuals show the setting&amp;#x27;s instability well, but the protagonist&amp;#x27;s emotional journey isn&amp;#x27;t fully grounded. Conversations between characters feel forced, like they&amp;#x27;re trying to carry both the personal and political tension on their own. It&amp;#x27;s unclear how the journalist&amp;#x27;s choices are shaped by his environment or his inner struggles.&lt;/p&gt;&lt;p&gt;The acting shows promise but doesn&amp;#x27;t have the depth needed to make the character&amp;#x27;s choices feel urgent or real. The supporting cast seems more focused on the setting than the emotional journey of the main character. Important scenes rely on dialogue that feels more like explanation than emotional connection.&lt;/p&gt;&lt;p&gt;The film has big ambitions, but some emotional parts don&amp;#x27;t get resolved. The historical context is interesting, but it doesn&amp;#x27;t fully match up with the personal journey of the main character. This mismatch makes some of the most powerful scenes feel a bit disconnected, leaving the overall experience slightly off-balance.&lt;/p&gt;&lt;p class="specs-note"&gt;1982 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Year_of_Living_Dangerously_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1982/year_of_living_dangerously.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances personal turmoil with historical upheaval, but its emotional core is often overshadowed by its ambition.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Quiet American — A love affair with dangerous consequences</title>
      <link>https://deslypeter.com/writing/the-quiet-american-2002-review</link>
      <guid>https://deslypeter.com/writing/the-quiet-american-2002-review.html?lang=en</guid>
      <description>The film balances personal tragedy and political tension, but its emotional core feels underdeveloped compared to the sharp dialogue and setting.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict is a romantic entanglement that becomes a moral trap for the characters involved. Michael Caine&amp;#x27;s character navigates guilt and responsibility with a measured tone, but his motivations remain underexplored. Brendan Fraser plays an idealist whose conviction clashes with the real-world violence around him.&lt;/p&gt;&lt;p&gt;The film moves between fast-paced political scenes and slower emotional moments, but the rhythm doesn&amp;#x27;t always feel right. Conversations often feel like they&amp;#x27;re delivering information rather than showing how characters think or feel. The setting is well done, but it doesn&amp;#x27;t really affect what&amp;#x27;s going on inside the characters.&lt;/p&gt;&lt;p&gt;Michael Caine&amp;#x27;s performance anchors the film, even when the script offers little depth for his character. Brendan Fraser conveys youthful fervor but lacks the emotional range to carry the film&amp;#x27;s moral weight. Supporting actors contribute to the atmosphere without overshadowing the central relationship.&lt;/p&gt;&lt;p&gt;The film has a clear message about politics, but it doesn&amp;#x27;t really tie that message to what&amp;#x27;s happening with the characters. Some scenes use dialogue that feels more like lessons than real emotions. Even with its problems, it does a decent job showing how idealism can run into real-world problems.&lt;/p&gt;&lt;p class="specs-note"&gt;2002 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Quiet_American_(2002_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/8198"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2002/quiet_american.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances personal tragedy and political tension, but its emotional core feels underdeveloped compared to the sharp dialogue and setting.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The American — A quiet performance in a loud setting</title>
      <link>https://deslypeter.com/writing/the-american-2010-review</link>
      <guid>https://deslypeter.com/writing/the-american-2010-review.html?lang=en</guid>
      <description>George Clooney's restrained acting contrasts with the film's tense atmosphere, but the narrative lacks urgency and emotional stakes to match its ambitions.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;George Clooney portrays an assassin seeking anonymity, but his performance remains emotionally distant despite the role&amp;#x27;s potential for depth. The script offers few clear motivations, leaving the character&amp;#x27;s actions underdeveloped and his internal conflict vague. The film leans heavily on visual tension rather than dialogue or character development to maintain suspense.&lt;/p&gt;&lt;p&gt;The scenes drag because there&amp;#x27;s no clear story or emotional hook. The side characters don&amp;#x27;t add much beyond a tense vibe, and they don&amp;#x27;t help the main character or the story&amp;#x27;s moral questions feel more real. The film focuses more on mood than on substance, which makes it feel like a style experiment rather than a complete thriller.&lt;/p&gt;&lt;p&gt;Clooney&amp;#x27;s presence is steady but underutilized, with few moments allowing his subtlety to shine through the film&amp;#x27;s colder tone. Dialogue often feels artificial, lacking the natural rhythm needed to support the film&amp;#x27;s dramatic and psychological ambitions. The pacing is uneven, with some sequences moving too slowly while others feel rushed or disconnected from the central mystery.&lt;/p&gt;&lt;p&gt;There are some ideas about identity and morality, but they don&amp;#x27;t get much attention or development. The film uses visuals instead of clear storytelling, which makes it feel like it&amp;#x27;s aiming higher than it actually hits. Still, Clooney&amp;#x27;s performance is steady, and there are moments where it feels like there&amp;#x27;s more depth than the script lets him show.&lt;/p&gt;&lt;p class="specs-note"&gt;2010 · English. &lt;a href="https://en.wikipedia.org/wiki/The_American_(2010_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/27579"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2010/american.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;George Clooney&amp;#x27;s restrained acting contrasts with the film&amp;#x27;s tense atmosphere, but the narrative lacks urgency and emotional stakes to match its ambitions.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Duellists — A duel of patience and pride</title>
      <link>https://deslypeter.com/writing/the-duellists-1977-review</link>
      <guid>https://deslypeter.com/writing/the-duellists-1977-review.html?lang=en</guid>
      <description>The film balances restraint with tension, but its pacing occasionally saps the emotional stakes. The central conflict feels more ritual than urgent.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film is about two men locked in a rivalry driven by pride and honor. Their repeated clashes feel more like rituals than real conflicts. The focus on form over urgency makes their struggle feel repetitive and less emotionally engaging.&lt;/p&gt;&lt;p&gt;The film uses silence and stillness to show the weight of history between the two men. Their dialogue is sparse but full of unspoken tension and grudges. However, the lack of background detail makes their motivations feel distant and more symbolic than personal.&lt;/p&gt;&lt;p&gt;The actors give controlled performances with moments of warmth, especially when showing hesitation or doubt. They use posture and eye contact to show tension rather than big gestures. This can work well, but it also leaves some ambiguity that feels unresolved rather than intentional.&lt;/p&gt;&lt;p&gt;The film’s structure is elegant but sometimes weakens its emotional impact. Its themes of honor and repetition are interesting, but the formal style can make the characters feel more like symbols than real people. It’s a good meditation on pride, but the characters don’t always feel fully human.&lt;/p&gt;&lt;p class="specs-note"&gt;1977 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Duellists_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1978/duellists.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances restraint with tension, but its pacing occasionally saps the emotional stakes. The central conflict feels more ritual than urgent.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Cook, the Thief, His Wife &amp; Her Lover — A quiet tension between desire and violence</title>
      <link>https://deslypeter.com/writing/the-cook-the-thief-his-wife-her-lover-1989-review</link>
      <guid>https://deslypeter.com/writing/the-cook-the-thief-his-wife-her-lover-1989-review.html?lang=en</guid>
      <description>The film balances sensuality with brutality, but its emotional core feels underdeveloped. The central conflict is compelling but rarely fully realized.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story reveals its stakes through small, intimate moments between characters. It takes its time building relationships, which can feel like a deliberate pause rather than a natural rhythm. The tension between passion and violence remains unresolved, leaving some emotional threads unfinished.&lt;/p&gt;&lt;p&gt;The pacing gives space for quiet intimacy but also drags in scenes that could have been tighter. The dialogue is restrained, as if the characters are holding back from full emotional expression. This distance might make it harder for the audience to connect with them.&lt;/p&gt;&lt;p&gt;The lead performers convey desire and conflict without overacting, which adds to the film&amp;#x27;s subtlety. Their performances suggest inner turmoil but rarely expose it fully to the viewer. Supporting roles add texture but do not always serve the central emotional arc clearly.&lt;/p&gt;&lt;p&gt;The film’s look is rich and atmospheric, adding to its mood of decadence and decay. But this visual focus sometimes drowns out the urgency of the main conflict. The film feels like it has potential that never fully comes together into a satisfying emotional experience.&lt;/p&gt;&lt;p class="specs-note"&gt;1989 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Cook%2C_the_Thief%2C_His_Wife_%26_Her_Lover_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1990/cook_the_thief_his_wife_and_her_lover.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances sensuality with brutality, but its emotional core feels underdeveloped. The central conflict is compelling but rarely fully realized.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Draughtsman's Contract — A drawing becomes a threat</title>
      <link>https://deslypeter.com/writing/the-draughtsman-s-contract-1982-review</link>
      <guid>https://deslypeter.com/writing/the-draughtsman-s-contract-1982-review.html?lang=en</guid>
      <description>The Draughtsman's Contract balances tension with elegance, but its emotional stakes feel slightly restrained by its formalism.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The draughtsman’s commission creates a situation where art and violence collide in a way that feels intentional and uncomfortable. The quiet scenes hint at a deeper anxiety hidden beneath polite talk and precise lines. The film moves slowly, but it relies on repetition more than it builds toward a strong emotional peak.&lt;/p&gt;&lt;p&gt;The dialogue has a tense edge without ever turning confrontational. Characters speak clearly, but their reasons stay just out of reach, like the draughtsman’s incomplete drawings. The film looks clean and controlled, but its emotional punch doesn’t match its visual precision.&lt;/p&gt;&lt;p&gt;Performances are restrained, which fits the tone but limits the depth of character engagement. There is a sense of restraint that keeps the drama from fully breaking through the surface formality. The draughtsman’s obsession with accuracy becomes a metaphor for the film’s own careful construction.&lt;/p&gt;&lt;p&gt;Even with its elegance, the emotional heart feels a bit far from the viewer. The tension is there, but it doesn’t fully settle in a way that gives the audience what they want. Its formal beauty is clear, but it leaves some emotional ground untouched.&lt;/p&gt;&lt;p class="specs-note"&gt;1982 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Draughtsman%27s_Contract_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1983/draughtsmans_contract.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Draughtsman&amp;#x27;s Contract balances tension with elegance, but its emotional stakes feel slightly restrained by its formalism.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Devils — A clash of wills and faith</title>
      <link>https://deslypeter.com/writing/the-devils-1971-review</link>
      <guid>https://deslypeter.com/writing/the-devils-1971-review.html?lang=en</guid>
      <description>The Devils explores the tension between spiritual conviction and institutional control. Its restrained approach leaves some emotional weight unexplored, but the core conflict remains sharp.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A man&amp;#x27;s unwavering belief in his visions puts him at odds with a rigid system that demands obedience over truth. The pressure of conformity creates a personal struggle that feels urgent yet underdeveloped in its resolution. The film leans into silence and suggestion rather than overt drama, which risks distancing the audience from the central conflict.&lt;/p&gt;&lt;p&gt;The pacing is deliberate, allowing tension to build without rushing toward resolution or explanation. This measured approach emphasizes the psychological stakes but may leave some viewers wanting more direct engagement with the characters&amp;#x27; turmoil. The dialogue carries weight, especially in moments where conviction is challenged by authority.&lt;/p&gt;&lt;p&gt;The performances suggest internal conflict without overexplaining motivations, which can feel both restrained and effective. There are moments when the emotional core of the story feels slightly obscured by the film&amp;#x27;s formal restraint. The tension between personal truth and institutional power remains the central force driving the narrative forward.&lt;/p&gt;&lt;p&gt;The film’s refusal to offer easy answers aligns with its themes but may leave some questions unresolved. This ambiguity is a strength in some respects, yet it also prevents deeper exploration of the characters&amp;#x27; inner lives. Despite these limitations, The Devils maintains a compelling focus on the moral and spiritual stakes at its heart.&lt;/p&gt;&lt;p class="specs-note"&gt;1971 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Devils_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1971/devils.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Devils explores the tension between spiritual conviction and institutional control. Its restrained approach leaves some emotional weight unexplored, but the core conflict remains sharp.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Don't Look Now — A performance that lingers in the silence</title>
      <link>https://deslypeter.com/writing/don-t-look-now-1973-review</link>
      <guid>https://deslypeter.com/writing/don-t-look-now-1973-review.html?lang=en</guid>
      <description>The film’s tension lies not in its plot but in how characters navigate their own confusion. The direction leans on suggestion rather than explanation, with one notable exception.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central dramatic situation is a couple grappling with grief and an unclear threat, their emotions layered beneath polite restraint. The actors convey inner turmoil without overt gestures, relying on pauses and glances to suggest deeper conflicts. This restraint allows the audience to project their own fears onto the characters’ ambiguous actions.&lt;/p&gt;&lt;p&gt;The film moves slowly, spending time in quiet, uneasy moments instead of pushing toward a quick ending. There are long parts with little dialogue but lots of unspoken tension, letting the audience fill in the gaps. The director avoids typical horror tricks, building fear through small details in the environment and the emotional distance between characters.&lt;/p&gt;&lt;p&gt;The lead performance is understated yet deeply affecting, capturing a man’s struggle to hold onto reality. The supporting cast adds complexity without overshadowing the central couple’s dynamic, their interactions hinting at hidden tensions. Dialogue is sparse but precise, with each line carrying multiple meanings depending on context.&lt;/p&gt;&lt;p&gt;One thing that feels off is how much the film relies on suggestion, sometimes leaving emotions underdeveloped. Still, the acting and mood stick with you after the movie ends. The mix of mystery and real feelings makes it a quiet, powerful but slightly unfinished experience.&lt;/p&gt;&lt;p class="specs-note"&gt;1973 · English. &lt;a href="https://en.wikipedia.org/wiki/Don%27t_Look_Now_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1973/dont_look_now.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film’s tension lies not in its plot but in how characters navigate their own confusion. The direction leans on suggestion rather than explanation, with one notable exception.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Angel Heart — A city of shadows and secrets</title>
      <link>https://deslypeter.com/writing/angel-heart-1987-review</link>
      <guid>https://deslypeter.com/writing/angel-heart-1987-review.html?lang=en</guid>
      <description>The film leans into its noir tone but falters in balancing mystery with emotional depth. The cast delivers strong performances, yet the narrative becomes overly cryptic.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Harry Angel&amp;#x27;s search for Johnny Favorite is driven by a mix of curiosity and desperation that feels personal rather than professional. The film&amp;#x27;s setting in New Orleans adds an eerie texture to the unfolding mystery but does not fully justify its supernatural elements. Mickey Rourke brings a brooding intensity to Harry, grounding the surreal aspects of the plot with a sense of tangible struggle.&lt;/p&gt;&lt;p&gt;Alan Parker&amp;#x27;s direction focuses more on mood than on making things clear. Some scenes feel more like they&amp;#x27;re trying to set a tone than move the story forward. The pacing is slow, and a few parts drag without really adding tension or revealing much about the characters. Lisa Bonet and Charlotte Rampling add to the film&amp;#x27;s mysterious feel with performances that are vague but not without emotion.&lt;/p&gt;&lt;p&gt;Robert De Niro&amp;#x27;s role adds a layer of moral ambiguity, though his screen time feels limited in its impact. Dialogue often leans into poetic ambiguity rather than clear exposition, which can frustrate as much as it intrigues. The film&amp;#x27;s refusal to fully explain its supernatural elements leaves some questions unanswered but also risks alienating the audience.&lt;/p&gt;&lt;p&gt;The film has a certain charm in not giving everything a neat ending, even if it sometimes sacrifices clarity for mood. The emotional parts are clear, but they don&amp;#x27;t always match up with the more out-there supernatural ideas. Despite its flaws, Angel Heart is still an interesting mix of noir and supernatural mystery.&lt;/p&gt;&lt;p class="specs-note"&gt;1987 · English. &lt;a href="https://en.wikipedia.org/wiki/Angel_Heart"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1987/angel_heart.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans into its noir tone but falters in balancing mystery with emotional depth. The cast delivers strong performances, yet the narrative becomes overly cryptic.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Serpent and the Rainbow — A slow unraveling of folklore and fear</title>
      <link>https://deslypeter.com/writing/the-serpent-and-the-rainbow-1988-review</link>
      <guid>https://deslypeter.com/writing/the-serpent-and-the-rainbow-1988-review.html?lang=en</guid>
      <description>The film leans heavily on its source material but struggles to translate ethnobotanical intrigue into emotional or narrative urgency. The pacing feels drawn out, diluting the tension.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story revolves around a journalist investigating claims of real zombies in Haiti, following the non-fiction accounts of Wade Davis. This premise offers a unique angle but lacks the sharp focus needed to make it compelling or immersive. The film&amp;#x27;s approach to the subject feels more like an academic exercise than a gripping narrative.&lt;/p&gt;&lt;p&gt;Wes Craven&amp;#x27;s direction is respectful but cautious, avoiding deeper exploration of cultural or psychological themes. Bill Pullman plays his character well, but he stays emotionally distant from the material he&amp;#x27;s investigating. Cathy Tyson and Paul Winfield add depth to their roles, though the script doesn&amp;#x27;t give them much to work with.&lt;/p&gt;&lt;p&gt;The dialogue often feels academic or detached, making it hard to connect with the audience on a personal level. The central mystery unfolds too slowly, and the stakes don&amp;#x27;t feel urgent. The film&amp;#x27;s tone wavers between eerie and inert, never fully committing to either.&lt;/p&gt;&lt;p&gt;Its reliance on folklore without deeper exploration weakens its impact as a horror story. The slow pacing and infrequent scares make it more curious than frightening. Despite its intentions, The Serpent and the Rainbow feels like an intriguing idea that never quite reaches its full potential.&lt;/p&gt;&lt;p class="specs-note"&gt;1988 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Serpent_and_the_Rainbow_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1988/serpent_and_the_rainbow.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans heavily on its source material but struggles to translate ethnobotanical intrigue into emotional or narrative urgency. The pacing feels drawn out, diluting the tension.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Entity — A house that refuses to be safe</title>
      <link>https://deslypeter.com/writing/the-entity-1982-review</link>
      <guid>https://deslypeter.com/writing/the-entity-1982-review.html?lang=en</guid>
      <description>The Entity leans heavily on jump scares and supernatural clichés, with limited success in building tension or emotional stakes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s central conflict is a woman trapped in a home she cannot escape, besieged by an invisible force. Her isolation is clear, but the narrative often prioritizes shock over psychological depth. Barbara Hershey portrays fear with conviction, though her character’s choices sometimes lack clarity.&lt;/p&gt;&lt;p&gt;The film moves at an inconsistent pace, with long quiet stretches followed by sudden horror scenes. The sound design helps build tension, but the unease doesn’t last long. The invisible entity is never clearly shown, so its presence feels more suggested than real.&lt;/p&gt;&lt;p&gt;Barbara Hershey’s performance anchors the film, even when the script falters. Ron Silver’s role as her husband adds some emotional complexity but remains underdeveloped. Dialogue often feels rushed, with little time to explore the characters’ fears or motivations.&lt;/p&gt;&lt;p&gt;The film uses a lot of supernatural clichés, which makes it feel unoriginal. There’s one moment where the protagonist faces the unknown that actually feels unsettling, but it gets lost in the usual horror tropes. Even with its flaws, the film has a certain old-fashioned fear that still feels real in some quiet scenes.&lt;/p&gt;&lt;p class="specs-note"&gt;1982 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Entity"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1982/entity.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Entity leans heavily on jump scares and supernatural clichés, with limited success in building tension or emotional stakes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Images — A mind unraveling in isolation</title>
      <link>https://deslypeter.com/writing/images-1972-review</link>
      <guid>https://deslypeter.com/writing/images-1972-review.html?lang=en</guid>
      <description>The film builds tension well, but its ambiguity gets in the way. The main character's mental decline feels real, but the story never really comes together.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A woman&amp;#x27;s battle with her sanity is at the heart of the film, set in a remote place that makes her isolation feel worse. Her fear and confusion are shown without being over the top, using small changes in tone and actions. The film has a creepy mood, but its strange logic sometimes makes it hard to follow.&lt;/p&gt;&lt;p&gt;The film uses silence and stillness to create a heavy, lingering mood in every scene. There&amp;#x27;s not much dialogue, which adds tension but also leaves some emotional moments feeling incomplete. The pacing is slow, letting quiet fear build, but it can drag when it needs to be clearer.&lt;/p&gt;&lt;p&gt;Susannah York shows vulnerability without overdoing it, making her breakdown feel real and personal. Her performance gives the film&amp;#x27;s more abstract parts a solid base of fear and confusion. René Auberjonois adds to the unease as a character whose reality is unclear, making the main character&amp;#x27;s confusion worse.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s ambiguity is its best feature but also its biggest problem—some questions stay unanswered. There are times when the horror feels more like a mood than something that hits you emotionally. Even with its flaws, Images does a good job of showing how hard it is to tell real life from illusion when your mind is unstable.&lt;/p&gt;&lt;p class="specs-note"&gt;1972 · English. &lt;a href="https://en.wikipedia.org/wiki/Images_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1972/images.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film builds tension well, but its ambiguity gets in the way. The main character&amp;#x27;s mental decline feels real, but the story never really comes together.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Dead Ringers — Jeremy Irons as twins with a shared obsession</title>
      <link>https://deslypeter.com/writing/dead-ringers-1988-review</link>
      <guid>https://deslypeter.com/writing/dead-ringers-1988-review.html?lang=en</guid>
      <description>The film's tension comes from the brothers' unraveling, not just their secrets. The direction leans into unease but occasionally softens the stakes.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Jeremy Irons embodies both twins with such precision that their differences feel like variations on the same emotional axis. Their shared obsession with female anatomy becomes a metaphor for their inability to distinguish self from other. The script leans heavily on dialogue to reveal inner conflict, which risks feeling more intellectual than visceral.&lt;/p&gt;&lt;p&gt;Cronenberg&amp;#x27;s direction keeps a cold, clinical feel, which makes the psychological horror more intense but also makes some moments of raw emotion feel distant. Geneviève Bujold plays their patient with restraint, adding a layer of uncertainty to the power struggles in the film. The quieter scenes drag a bit, with long internal monologues that don&amp;#x27;t always feel necessary or satisfying.&lt;/p&gt;&lt;p&gt;Irons avoids making the twins feel like caricatures, giving their downfall a more tragic than grotesque edge. The film&amp;#x27;s best part is how it keeps the audience guessing, never letting them feel fully in control of the story. But some side plots don&amp;#x27;t get enough attention, leaving some emotional moments feeling incomplete or underdeveloped.&lt;/p&gt;&lt;p&gt;The use of mirrors and reflections is a visual motif that reinforces the theme of identity but rarely surprises. Despite this, the central performances remain compelling enough to sustain the film&amp;#x27;s unsettling tone. Its most effective moments are those where the brothers&amp;#x27; detachment from reality feels almost poetic in its inevitability.&lt;/p&gt;&lt;p class="specs-note"&gt;1988 · English. &lt;a href="https://en.wikipedia.org/wiki/Dead_Ringers_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1988/dead_ringers.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s tension comes from the brothers&amp;#x27; unraveling, not just their secrets. The direction leans into unease but occasionally softens the stakes.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Crash — A collision of perspectives</title>
      <link>https://deslypeter.com/writing/crash-1996-review</link>
      <guid>https://deslypeter.com/writing/crash-1996-review.html?lang=en</guid>
      <description>The film's attempt to weave multiple stories falls short of its own emotional ambition. The tone shifts awkwardly between tragedy and triviality.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film tries to explore race, class and identity through a series of separate scenes. But these moments often feel like rough drafts rather than complete ideas. The film has a clear goal, but it doesn&amp;#x27;t hold together well emotionally or thematically.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s rhythm is all over the place. Some parts move too slowly, while others rush past key ideas. The dialogue leans on tired phrases instead of offering new perspectives or character growth. There are a few tense moments, but they don&amp;#x27;t last long enough to make an impression.&lt;/p&gt;&lt;p&gt;Acting quality varies. Some actors bring real depth to their roles, while others come off as stiff and unconvincing. Without a strong central thread, the individual stories and their overall message feel disconnected. The film&amp;#x27;s attempts at humor or irony can sometimes get in the way of its more serious themes.&lt;/p&gt;&lt;p&gt;The way the stories are put together feels clumsy, like they were patched together instead of growing naturally from one another. The themes have promise, but they&amp;#x27;re not given enough time or care to fully develop. The film&amp;#x27;s emotional impact is weakened by its lack of focus and its own high aims.&lt;/p&gt;&lt;p class="specs-note"&gt;1996 · English. &lt;a href="https://en.wikipedia.org/wiki/Crash_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s attempt to weave multiple stories falls short of its own emotional ambition. The tone shifts awkwardly between tragedy and triviality.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Spider — A mind unraveling in reverse</title>
      <link>https://deslypeter.com/writing/spider-2002-review</link>
      <guid>https://deslypeter.com/writing/spider-2002-review.html?lang=en</guid>
      <description>The film balances psychological tension with its own narrative repetition, but the emotional stakes feel underdeveloped alongside the formal structure.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story unfolds as a man’s mental state deteriorates, forcing him to revisit past traumas repeatedly without clear resolution. His regression feels more like a stylistic choice than an emotionally driven process, which weakens the personal impact. The lack of resolution leaves the audience with a puzzle rather than a human story.&lt;/p&gt;&lt;p&gt;The pacing is slow and often repeats the same scenes, reflecting the man&amp;#x27;s mental state but not really moving the story forward. Each time he goes back to his past, it feels a bit less tense than the time before. The film makes you think about its structure, but it doesn&amp;#x27;t always give you strong emotions or clear answers.&lt;/p&gt;&lt;p&gt;The performance conveys confusion and distress but lacks a clear arc of transformation or realization. There is a sense of isolation in his condition, but the film does not fully explore how that affects others around him. The dialogue often feels functional rather than revealing, serving the structure more than the character development.&lt;/p&gt;&lt;p&gt;The repetition feels more like a trick than a real part of the story. The idea is interesting, but it sometimes takes away from the real emotions in the film. It&amp;#x27;s still worth watching, but it has trouble balancing its clever style with the real feelings of the characters.&lt;/p&gt;&lt;p class="specs-note"&gt;2002 · English. &lt;a href="https://www.themoviedb.org/movie/9613"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2002/spider.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances psychological tension with its own narrative repetition, but the emotional stakes feel underdeveloped alongside the formal structure.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Shivers — A slow unraveling of control</title>
      <link>https://deslypeter.com/writing/shivers-1975-review</link>
      <guid>https://deslypeter.com/writing/shivers-1975-review.html?lang=en</guid>
      <description>The film's tension relies on a creeping dread that never fully justifies its own persistence. The pacing feels drawn out without clear purpose.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main problem is that the story doesn&amp;#x27;t clearly explain why the group is losing control or what&amp;#x27;s at stake. The characters are scared, but their reasons for being scared aren&amp;#x27;t clear. This makes it hard to care about what happens next. The film moves so slowly that it&amp;#x27;s easy to lose interest before anything important occurs.&lt;/p&gt;&lt;p&gt;The film focuses a lot on creating a mood, but there aren&amp;#x27;t enough real events to make that mood feel grounded. The dialogue is sparse and often feels like it&amp;#x27;s just repeating itself without adding much. In the end, the film leaves more confusion than satisfaction.&lt;/p&gt;&lt;p&gt;The actors don&amp;#x27;t really change their tone or intensity much, which makes it hard to tell the characters apart. The film also struggles to show the difference between real danger and everyday life, which weakens the tension. There&amp;#x27;s a hint of deeper meaning, but it never becomes a clear theme.&lt;/p&gt;&lt;p&gt;The slow start doesn&amp;#x27;t help much because the characters aren&amp;#x27;t interesting or the stakes aren&amp;#x27;t clear. The setting adds some eerie atmosphere, but it doesn&amp;#x27;t fix the film&amp;#x27;s bigger problems. The whole experience feels disconnected and hard to justify.&lt;/p&gt;&lt;p class="specs-note"&gt;1975 · English. &lt;a href="https://en.wikipedia.org/wiki/Shivers_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s tension relies on a creeping dread that never fully justifies its own persistence. The pacing feels drawn out without clear purpose.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Scanners — A mind as weapon and target</title>
      <link>https://deslypeter.com/writing/scanners-1981-review</link>
      <guid>https://deslypeter.com/writing/scanners-1981-review.html?lang=en</guid>
      <description>The film leans on body horror without exploring the emotional stakes of its premise. It delivers spectacle but lacks a convincing human core.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main conflict is a brain being used for violence, but the characters feel more like plot devices than real people with fears. The film doesn&amp;#x27;t explore the protagonist&amp;#x27;s inner struggles or the moral cost of his powers. It moves fast between action scenes but leaves the emotional parts underdeveloped and unexamined.&lt;/p&gt;&lt;p&gt;The dialogue is more about moving the plot than revealing character. The film&amp;#x27;s focus on shock value hides its potential for deeper psychology. Without clear stakes or emotional investment, the ending feels empty rather than powerful.&lt;/p&gt;&lt;p&gt;The acting is okay but doesn&amp;#x27;t lift the material beyond basic horror. The protagonist&amp;#x27;s decisions are unclear, making it hard to sympathize with or understand his actions. The supporting characters are barely developed, serving only as obstacles or plot tools.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s body horror feels more exploitative than insightful. It misses a chance to explore identity and control in a thoughtful way. The idea has promise, but the execution doesn&amp;#x27;t fully deliver on its emotional or intellectual potential.&lt;/p&gt;&lt;p class="specs-note"&gt;1981 · English. &lt;a href="https://en.wikipedia.org/wiki/Scanners_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on body horror without exploring the emotional stakes of its premise. It delivers spectacle but lacks a convincing human core.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Possession — A tense, fractured marriage unravels with eerie precision</title>
      <link>https://deslypeter.com/writing/possession-1981-review</link>
      <guid>https://deslypeter.com/writing/possession-1981-review.html?lang=en</guid>
      <description>The film's emotional core is its unraveling relationship, though its abstract tone may alienate some viewers seeking clear answers.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central couple&amp;#x27;s disintegration feels immediate and unsettling, built on subtle shifts in behavior rather than outright conflict. Their conversations carry an undercurrent of fear that lingers without being explicitly stated. The director uses silence effectively to underscore the emotional distance between them.&lt;/p&gt;&lt;p&gt;The film moves slowly, letting tension grow without pushing for a quick ending. Visuals hint at things without spelling them out, which can be satisfying or annoying depending on how much you like reading between the lines.&lt;/p&gt;&lt;p&gt;The performances are restrained but evocative, avoiding melodrama in favor of quiet unease. Each character&amp;#x27;s motivations remain ambiguous, which adds to the film&amp;#x27;s psychological complexity. Dialogue is sparse but charged with unspoken tension and regret.&lt;/p&gt;&lt;p&gt;The ambiguity might feel like a style choice rather than something the story needs. Some people might find the ending too vague or frustrating. But the film&amp;#x27;s real strength is how it makes you feel without giving you all the answers.&lt;/p&gt;&lt;p class="specs-note"&gt;1981 · English. &lt;a href="https://en.wikipedia.org/wiki/Possession_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/1981/possession.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s emotional core is its unraveling relationship, though its abstract tone may alienate some viewers seeking clear answers.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Kill List — A descent into moral ambiguity</title>
      <link>https://deslypeter.com/writing/kill-list-2011-review</link>
      <guid>https://deslypeter.com/writing/kill-list-2011-review.html?lang=en</guid>
      <description>The film leans into tension and unease, but its narrative spirals occasionally feel forced rather than earned.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The hitman comes back to work with a quiet unease that stays under the surface of every conversation. The promise of payment feels like a trap almost as soon as it&amp;#x27;s mentioned, setting up a slow breakdown. There&amp;#x27;s tension between his calm professionalism and the instability growing inside him.&lt;/p&gt;&lt;p&gt;The direction keeps the audience on edge most of the time, but it rarely gives clear answers. The film moves slowly, often staying on scenes that feel more about mood than plot. This pacing can add to the atmosphere but sometimes delays the resolution just for the tone.&lt;/p&gt;&lt;p&gt;The acting shows internal conflict without spelling it out, which works in some scenes. But some characters aren&amp;#x27;t fully developed, making their roles feel weaker than they should. The dialogue is sparse and cryptic, which might be a style choice but also feels like a weakness in the story.&lt;/p&gt;&lt;p&gt;The film tries to show deep psychology, but it sometimes feels more like an idea than a real experience. Its moral grey areas are its best part, even if some ideas aren&amp;#x27;t fully explored. Despite its flaws, the tension and mood are enough to keep the viewer interested all the way through.&lt;/p&gt;&lt;p class="specs-note"&gt;2011 · English. &lt;a href="https://www.themoviedb.org/movie/74725"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans into tension and unease, but its narrative spirals occasionally feel forced rather than earned.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Sightseers — A road trip with a hidden agenda</title>
      <link>https://deslypeter.com/writing/sightseers-2012-review</link>
      <guid>https://deslypeter.com/writing/sightseers-2012-review.html?lang=en</guid>
      <description>The film balances dark humor and tension, but its pacing occasionally undermines the emotional stakes of its characters' choices.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story reveals the travelers&amp;#x27; intentions through conversations and actions, without spelling things out. Quiet moments are often broken by sudden shifts in tone or purpose, keeping the audience alert but a bit confused. Secrets are doled out slowly, though not always in a way that feels satisfying.&lt;/p&gt;&lt;p&gt;The film uses visual contrasts between peaceful landscapes and tense moments between people. It tries to make the characters&amp;#x27; choices feel personal rather than just part of the plot. But some tone shifts feel sudden, which weakens certain emotional moments.&lt;/p&gt;&lt;p&gt;The actors show internal conflict but leave their true motivations open to interpretation. The dialogue feels like it&amp;#x27;s being improvised, which adds realism but can make the story harder to follow. Supporting characters are more about their roles than their personal histories.&lt;/p&gt;&lt;p&gt;The humor is dark and sharp, often surprising the audience with its unpredictability. Sometimes the focus on absurdity makes the more serious parts of the story feel less important. But despite these issues, the film stays engaging because of its bold storytelling and character choices&lt;/p&gt;&lt;p class="specs-note"&gt;2012 · English. &lt;a href="https://en.wikipedia.org/wiki/Sightseers_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances dark humor and tension, but its pacing occasionally undermines the emotional stakes of its characters&amp;#x27; choices.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>A Field in England — A group of men wander through a strange field</title>
      <link>https://deslypeter.com/writing/a-field-in-england-2013-review</link>
      <guid>https://deslypeter.com/writing/a-field-in-england-2013-review.html?lang=en</guid>
      <description>The film’s lack of clear purpose or resolution makes its haunting tone feel more like a mood than a story. It never fully justifies its own existence.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Men wander a field, but their actions and relationships are unclear. It creates confusion rather than mystery. The dialogue is sparse and repetitive, not helping us understand the characters or their motives. There&amp;#x27;s no real conflict or resolution, just more questions than answers.&lt;/p&gt;&lt;p&gt;The pacing is slow and unfocused, with no clear direction to hold it together. The visuals create an eerie mood, but they don&amp;#x27;t make up for the weak storytelling. Some might like the ambiguity, but the film lacks the emotional or intellectual depth to be truly engaging.&lt;/p&gt;&lt;p&gt;The actors don&amp;#x27;t have much to work with, so their performances feel underdeveloped. The dialogue doesn&amp;#x27;t help us understand the characters&amp;#x27; thoughts or goals. The setting is atmospheric but doesn&amp;#x27;t fit well with the plot, making the whole experience feel disconnected.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s simple style might not appeal to people who like clear stories. It tries to create a mood but doesn&amp;#x27;t have enough substance to keep people interested after the initial eerie feeling. It might intrigue some with its abstract style, but it doesn&amp;#x27;t leave a strong impression.&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://en.wikipedia.org/wiki/A_Field_in_England_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film’s lack of clear purpose or resolution makes its haunting tone feel more like a mood than a story. It never fully justifies its own existence.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Berberian Sound Studio — A sound designer's isolation in a foreign land</title>
      <link>https://deslypeter.com/writing/berberian-sound-studio-2012-review</link>
      <guid>https://deslypeter.com/writing/berberian-sound-studio-2012-review.html?lang=en</guid>
      <description>The film relies too much on its own artificial feel, making the emotional parts feel far away instead of urgent. The acting doesn't give enough depth to make the mystery interesting.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main conflict is a man working alone in a strange place, but his emotional distance weakens the story. The sound design tries to create unease, but the character&amp;#x27;s lack of connection makes it hard to get involved. The film&amp;#x27;s focus on its own artificiality risks losing the human side of the story.&lt;/p&gt;&lt;p&gt;The pacing is all over the place, with some scenes dragging and others rushing toward a vague ending. The dialogue feels slow and more like reading than natural conversation. The protagonist&amp;#x27;s unclear motives make his actions seem random rather than meaningful.&lt;/p&gt;&lt;p&gt;The acting is flat, not giving enough depth to the characters or connecting with the audience. The sound is ambitious but often feels like a trick rather than a real part of the story. The film&amp;#x27;s effort to build tension is hurt by its self-aware style.&lt;/p&gt;&lt;p&gt;The plot lacks clear direction, making it hard for the audience to connect with the protagonist&amp;#x27;s journey. While the visual style is unique, it doesn&amp;#x27;t fix the weak character development. The result is a technically interesting but emotionally distant experience that doesn&amp;#x27;t fully engage.&lt;/p&gt;&lt;p class="specs-note"&gt;2012 · English. &lt;a href="https://en.wikipedia.org/wiki/Berberian_Sound_Studio_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film relies too much on its own artificial feel, making the emotional parts feel far away instead of urgent. The acting doesn&amp;#x27;t give enough depth to make the mystery interesting.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Censor — A performer's struggle with content</title>
      <link>https://deslypeter.com/writing/censor-2021-review</link>
      <guid>https://deslypeter.com/writing/censor-2021-review.html?lang=en</guid>
      <description>The film leans on its protagonist's inner turmoil but fails to offer much beyond the surface of her conflict. The emotional stakes feel underdeveloped despite strong visual choices.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central character&amp;#x27;s obsession with media content drives the narrative, yet her motivations remain vague and unexplored. Her actions suggest a need for control, but the film never fully unpacks what she is trying to escape or achieve. This lack of clarity weakens the emotional impact of her journey through corrupted material.&lt;/p&gt;&lt;p&gt;The film jumps too fast between scary images and quiet moments, making the rhythm feel off. The visual style tries to show the protagonist&amp;#x27;s mental state, but it often feels like it&amp;#x27;s just there for show. There&amp;#x27;s some interesting ideas about how media affects the mind, but the film never really follows through on them.&lt;/p&gt;&lt;p&gt;The protagonist’s performance conveys anxiety well, though her internal logic remains elusive. Her reactions to content are intense, but without clear context, they feel more like emotional gestures than a coherent arc. Supporting characters exist only as reflections of the main character&amp;#x27;s fears, lacking their own distinct motivations or depth.&lt;/p&gt;&lt;p&gt;The film depends too much on being shocking, which makes it hard to take its bigger messages seriously. It wants to say something important but doesn&amp;#x27;t back it up with strong writing or direction. It ends up with more questions than answers, but not in a way that feels satisfying.&lt;/p&gt;&lt;p class="specs-note"&gt;2021 · English. &lt;a href="https://en.wikipedia.org/wiki/Censor_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its protagonist&amp;#x27;s inner turmoil but fails to offer much beyond the surface of her conflict. The emotional stakes feel underdeveloped despite strong visual choices.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>In Fabric — A slow, uneasy tension lingers in the air</title>
      <link>https://deslypeter.com/writing/in-fabric-2018-review</link>
      <guid>https://deslypeter.com/writing/in-fabric-2018-review.html?lang=en</guid>
      <description>The film goes for discomfort instead of real substance. Its tone often gets in the way of the story it's trying to tell. It doesn't have enough emotional depth to make its unsettling vibe feel justified.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main story is about a shop and its owner, but their reasons for doing what they do are unclear and not well thought out. The film moves slowly on purpose, but this doesn&amp;#x27;t really help the story or make it more interesting. It tries to create unease by hinting at things rather than explaining them, but it doesn&amp;#x27;t really work.&lt;/p&gt;&lt;p&gt;The film focuses more on mood than meaning, making it hard to connect with the characters. The dialogue is minimal and feels awkward, like it&amp;#x27;s trying to be mysterious without actually being interesting. The film uses repetition and confusion, which can be good, but here it feels like it&amp;#x27;s just avoiding real storytelling.&lt;/p&gt;&lt;p&gt;The acting is flat and doesn&amp;#x27;t bring the film&amp;#x27;s abstract ideas to life. There&amp;#x27;s not much emotional connection to the characters or what happens to them, so the unsettling vibe feels empty. The film depends too much on atmosphere instead of a solid story, which makes it feel unfinished and unsatisfying.&lt;/p&gt;&lt;p&gt;Its surreal moments don&amp;#x27;t have a clear point or satisfying ending, leaving the audience confused about what it&amp;#x27;s trying to say. Even though there are some visually interesting scenes, they don&amp;#x27;t make up for the weak storytelling. The film ends up being more annoying than scary, with not much to like about it.&lt;/p&gt;&lt;p class="specs-note"&gt;2018 · English. &lt;a href="https://en.wikipedia.org/wiki/In_Fabric_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film goes for discomfort instead of real substance. Its tone often gets in the way of the story it&amp;#x27;s trying to tell. It doesn&amp;#x27;t have enough emotional depth to make its unsettling vibe feel justified.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Caveat — A puzzle with no clear solution</title>
      <link>https://deslypeter.com/writing/caveat-2020-review</link>
      <guid>https://deslypeter.com/writing/caveat-2020-review.html?lang=en</guid>
      <description>The film's refusal to resolve its central mystery leaves emotional stakes underdeveloped, despite a clever structure that keeps the audience engaged.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story unfolds in fragments, withholding key details until late in the narrative, which creates tension but also confusion. Characters are introduced through their actions rather than dialogue, making their motivations difficult to grasp. This approach risks alienating viewers who rely on clear character arcs and emotional investment.&lt;/p&gt;&lt;p&gt;The pacing is slow, and it feels more like a test of patience than a deliberate storytelling choice. The film tries to be ambiguous, but the lack of resolution feels like a weakness rather than a purposeful theme. It asks for your attention, but doesn&amp;#x27;t give you much reason to care about what happens to the characters.&lt;/p&gt;&lt;p&gt;The acting is low-key but doesn&amp;#x27;t have the emotional weight to support the film&amp;#x27;s abstract ideas. There&amp;#x27;s not much dialogue, and what there is tends to be cryptic. This leaves little room for character growth or connection. The plot&amp;#x27;s ambiguity doesn&amp;#x27;t make up for the lack of emotional or thematic clarity.&lt;/p&gt;&lt;p&gt;Even though the film has an interesting structure, it doesn&amp;#x27;t deliver the satisfaction or emotional punch it promises. The main mystery stays unanswered, which might leave some viewers feeling unsatisfied. The structure is creative, but it ends up making it harder for the film to connect with its audience emotionally.&lt;/p&gt;&lt;p class="specs-note"&gt;2020 · English. &lt;a href="https://en.wikipedia.org/wiki/Caveat_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s refusal to resolve its central mystery leaves emotional stakes underdeveloped, despite a clever structure that keeps the audience engaged.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Oddity — A quiet unease lingers in the background</title>
      <link>https://deslypeter.com/writing/oddity-2024-review</link>
      <guid>https://deslypeter.com/writing/oddity-2024-review.html?lang=en</guid>
      <description>The film leans on its atmospheric tension but falters when trying to balance mystery with emotional stakes, resulting in a mostly effective but uneven experience.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main problem is a fear the protagonist can&amp;#x27;t talk about. The film moves slowly, which builds atmosphere but makes the story feel stuck. It works when the tension is felt, but it stumbles when it needs to explain things clearly.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s pacing is all over the place. Some scenes are too long, others too short, and not much happens emotionally. The dialogue is quiet and confusing, which makes the characters feel distant. This can be interesting, but it sometimes makes it hard to connect with the main character.&lt;/p&gt;&lt;p&gt;The acting is low-key, which fits the mood but makes it harder to get emotionally involved. Some character choices feel random because their reasons aren&amp;#x27;t clear. The film tries to explore loneliness and regret, but it doesn&amp;#x27;t follow through on those ideas in a satisfying way.&lt;/p&gt;&lt;p&gt;Even with its problems, there are moments that feel real and moving. The film focuses on mood rather than action, which can be good but also makes the story feel shallow. It&amp;#x27;s worth watching, but it doesn&amp;#x27;t reach much higher than its basic ideas.&lt;/p&gt;&lt;p class="specs-note"&gt;2024 · English. &lt;a href="https://en.wikipedia.org/wiki/Oddity_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2024/oddity.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its atmospheric tension but falters when trying to balance mystery with emotional stakes, resulting in a mostly effective but uneven experience.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Autopsy of Jane Doe — A father-son tension under a corpse's gaze</title>
      <link>https://deslypeter.com/writing/the-autopsy-of-jane-doe-2016-review</link>
      <guid>https://deslypeter.com/writing/the-autopsy-of-jane-doe-2016-review.html?lang=en</guid>
      <description>The film leans on its eerie setting but struggles to sustain the emotional stakes of its central relationship. The mystery feels more like a backdrop than a driver.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The pressure between father and son is palpable, even when their dialogue is sparse or indirect. The corpse in the morgue becomes a silent observer of their strained dynamic rather than a catalyst for change. The film&amp;#x27;s tension relies on the audience knowing more about the characters&amp;#x27; history than they do.&lt;/p&gt;&lt;p&gt;The film moves slowly as the mystery unfolds, with some parts feeling too drawn out. The quiet, uneasy moments are spoiled by reveals that feel too expected. The dialogue is often awkward, especially when characters have to explain things without much emotion.&lt;/p&gt;&lt;p&gt;The father&amp;#x27;s hesitation and the son&amp;#x27;s frustration are suggested but not really shown in detail. The characters&amp;#x27; reasons for acting the way they do aren&amp;#x27;t clear, which makes their emotional journey feel flat. The setting helps create a mood, but the film doesn&amp;#x27;t use it well to dig deeper into the characters&amp;#x27; minds.&lt;/p&gt;&lt;p&gt;The film tries to build suspense, but it often feels like it&amp;#x27;s following a list instead of building naturally. The mystery is interesting but doesn&amp;#x27;t really make you care about what happens. Still, there are quiet moments that leave you feeling uneasy long after the film is over.&lt;/p&gt;&lt;p class="specs-note"&gt;2016 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Autopsy_of_Jane_Doe_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its eerie setting but struggles to sustain the emotional stakes of its central relationship. The mystery feels more like a backdrop than a driver.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Babadook — A mother's grief becomes a monster</title>
      <link>https://deslypeter.com/writing/the-babadook-2014-review</link>
      <guid>https://deslypeter.com/writing/the-babadook-2014-review.html?lang=en</guid>
      <description>The Babadook balances psychological tension with supernatural dread, but its emotional core feels underdeveloped despite strong performances.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film focuses on the mother&amp;#x27;s mental state but doesn&amp;#x27;t explore her past or motivations enough. The Babadook is more of an abstract idea than a fully formed character, which weakens its effect. The child&amp;#x27;s role is passive, making their emotional journey less impactful.&lt;/p&gt;&lt;p&gt;The direction creates a tight, uncomfortable atmosphere that heightens the tension between mother and son. Shadows and sounds build unease without relying too much on sudden scares. The pacing slows down during quieter moments, where more character depth could have been added.&lt;/p&gt;&lt;p&gt;The lead actor shows deep sorrow but doesn&amp;#x27;t have enough range to fully show her mental breakdown. Supporting actors do well but don&amp;#x27;t lift the film beyond its basic idea. The dialogue often feels stiff, especially in scenes meant to show emotional cracks.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s metaphor for grief is interesting but not fully worked out, leaving some ideas hanging. Its ambition is greater than its execution, especially in the final act where the ending feels too quick. Despite these issues, The Babadook is still a memorable look at trauma and its lasting effects.&lt;/p&gt;&lt;p class="specs-note"&gt;2014 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Babadook_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Babadook balances psychological tension with supernatural dread, but its emotional core feels underdeveloped despite strong performances.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Relic — A slow-burn unease lingers in the air</title>
      <link>https://deslypeter.com/writing/relic-2020-review</link>
      <guid>https://deslypeter.com/writing/relic-2020-review.html?lang=en</guid>
      <description>The film balances familial tension with supernatural dread, but its pacing occasionally softens the urgency of its own mystery.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict revolves around a family unraveling as they confront an unseen force in their home. Emily Mortimer&amp;#x27;s performance carries the weight of uncertainty without overreaching into melodrama. Robyn Nevin and Bella Heathcote provide layered tension that grounds the supernatural elements.&lt;/p&gt;&lt;p&gt;The film focuses on mood more than story, which can make it feel more like a mood than a plot. The dialogue is quiet, letting the emotions hang in the air instead of being spelled out. It does a good job of making you feel uneasy through small details and awkward moments between characters.&lt;/p&gt;&lt;p&gt;The film tries to mix psychological horror with family drama, but the two don&amp;#x27;t always fit well. The acting is solid, but it doesn&amp;#x27;t always fix the parts of the script that feel unclear. The direction is more about feeling than action, which might not satisfy people looking for a fast-paced horror movie.&lt;/p&gt;&lt;p&gt;Even with its problems, the film makes you feel alone and trapped. The heart of the story is strong enough to keep you watching, even when the pacing stumbles. The mood stays creepy all the way through, even when the story gets a bit confusing.&lt;/p&gt;&lt;p class="specs-note"&gt;2020 · English. &lt;a href="https://en.wikipedia.org/wiki/Relic_(2020_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2020/relic.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances familial tension with supernatural dread, but its pacing occasionally softens the urgency of its own mystery.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Dark and the Wicked — A farm steeped in grief and silence</title>
      <link>https://deslypeter.com/writing/the-dark-and-the-wicked-2020-review</link>
      <guid>https://deslypeter.com/writing/the-dark-and-the-wicked-2020-review.html?lang=en</guid>
      <description>The film leans on its eerie setting but lacks the emotional depth to make the supernatural threat feel urgent or personal.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two siblings return to their family&amp;#x27;s farm after their mother&amp;#x27;s suicide, drawn by a sense of unresolved duty and fear. The script offers little in the way of clear motivations, leaving the characters&amp;#x27; actions feeling hesitant rather than purposeful. Bryan Bertino builds tension through silence and isolation but never fully commits to a singular vision.&lt;/p&gt;&lt;p&gt;The pacing is slow, but the story doesn&amp;#x27;t build enough urgency to make the horror feel real or immediate. The farm is a strong setting, but it&amp;#x27;s not explored much beyond its spooky atmosphere. Marin Ireland does a good job showing quiet fear without overdoing it, but her character doesn&amp;#x27;t have much emotional depth to hold onto.&lt;/p&gt;&lt;p&gt;Michael Abbott Jr. plays his role with some vulnerability but doesn&amp;#x27;t fully convince as a strong character. Xander Berkeley brings a serious tone, but his character doesn&amp;#x27;t have much to do or connect with the audience. The dialogue often feels forced, like it&amp;#x27;s waiting for a jump scare instead of building real tension.&lt;/p&gt;&lt;p&gt;There are some good creepy moments that show what the film could have been. But the story doesn&amp;#x27;t follow through on its emotional promises, and the lack of direction makes the horror feel more like a missed opportunity than a real scare. The setting is interesting, but the film doesn&amp;#x27;t do enough with it to make the horror stick.&lt;/p&gt;&lt;p class="specs-note"&gt;2020 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Dark_and_the_Wicked"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2020/dark_and_the_wicked.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its eerie setting but lacks the emotional depth to make the supernatural threat feel urgent or personal.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>It Comes at Night — A slow-burn tension with no clear resolution</title>
      <link>https://deslypeter.com/writing/it-comes-at-night-2017-review</link>
      <guid>https://deslypeter.com/writing/it-comes-at-night-2017-review.html?lang=en</guid>
      <description>The film leans into unease but lacks a satisfying emotional core. Performances are strong, yet the ambiguity feels more frustrating than profound.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The family’s isolation is both their refuge and their prison, creating an immediate sense of claustrophobia and distrust. Decisions are made in silence, with few words exchanged, emphasizing the fragility of human connection under pressure. The script avoids easy answers, leaving characters to navigate moral uncertainty without clear guidance.&lt;/p&gt;&lt;p&gt;Shults uses long pauses and sparse dialogue to build tension, but this can also slow the narrative’s momentum. Visual restraint is used effectively, though the lack of clear visual cues sometimes muddles the stakes. The pacing feels uneven, with some scenes dragging while others resolve too quickly for full impact.&lt;/p&gt;&lt;p&gt;Joel Edgerton carries much of the weight, his performance grounded and tense without overreaching. Kelvin Harrison Jr. adds a quiet vulnerability that contrasts with the film’s colder tone. Riley Keough’s character is underutilized, her role feeling more like a subplot than a central concern.&lt;/p&gt;&lt;p&gt;The ambiguity works as a stylistic choice but risks alienating viewers seeking resolution. Some emotional beats feel underdeveloped, leaving characters’ motivations slightly unclear. Despite its flaws, the film succeeds in making the audience question what they would do in such an extreme situation.&lt;/p&gt;&lt;p class="specs-note"&gt;2017 · English. &lt;a href="https://en.wikipedia.org/wiki/It_Comes_at_Night"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2017/it_comes_at_night.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans into unease but lacks a satisfying emotional core. Performances are strong, yet the ambiguity feels more frustrating than profound.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Blackcoat's Daughter — Isolation as a psychological test</title>
      <link>https://deslypeter.com/writing/the-blackcoat-s-daughter-2015-review</link>
      <guid>https://deslypeter.com/writing/the-blackcoat-s-daughter-2015-review.html?lang=en</guid>
      <description>The film's emotional core is its focus on two girls trapped in an empty school, but the pacing and tone undercut its potential for real tension.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two girls are left alone in a nearly abandoned school during a blizzard, with no clear reason why they are there or how to leave. Their fear is personal but rarely felt as urgent or immediate as the situation demands. The film leans on atmosphere rather than action, which risks distancing the audience from their plight.&lt;/p&gt;&lt;p&gt;The dialogue sometimes feels forced, making their conversations seem more planned than natural. Without a clear enemy or outside danger, their fear lacks a solid reason to focus on. This uncertainty might work for some but can make the emotional stakes feel unclear.&lt;/p&gt;&lt;p&gt;The performances are restrained, which fits the tone but limits the depth of connection with the characters. There is a quiet unease in certain moments that suggests stronger potential than what is fully realized. The film&amp;#x27;s structure moves slowly, which may frustrate viewers expecting more immediate tension.&lt;/p&gt;&lt;p&gt;It has some good moments that stick with you even after the film ends. The problem is that the emotional and mental tension isn&amp;#x27;t fully explained or wrapped up. It&amp;#x27;s an intriguing idea but has trouble keeping the right balance between its mood and the need to keep the audience hooked.&lt;/p&gt;&lt;p class="specs-note"&gt;2015 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Blackcoat%27s_Daughter_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s emotional core is its focus on two girls trapped in an empty school, but the pacing and tone undercut its potential for real tension.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Witch — Anya Taylor-Joy's silence speaks volumes</title>
      <link>https://deslypeter.com/writing/the-witch-2015-review</link>
      <guid>https://deslypeter.com/writing/the-witch-2015-review.html?lang=en</guid>
      <description>The Witch builds unease through naturalistic performances and deliberate pacing. Its final act risks overreaching its own restrained tone.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The family’s isolation is felt immediately, not explained through exposition or dialogue. A child’s disappearance becomes the catalyst for escalating tension without melodrama. The script avoids easy horror tropes, focusing instead on the slow erosion of trust.&lt;/p&gt;&lt;p&gt;The camera focuses on everyday tasks, making the supernatural feel like it&amp;#x27;s part of the normal world. Long periods without much happening let the audience sit with the family&amp;#x27;s growing worry. This slow pace is intentional but can feel slow in the quieter parts.&lt;/p&gt;&lt;p&gt;Anya Taylor-Joy conveys fear without screaming, her eyes holding the weight of suspicion. Ralph Ineson’s performance as the patriarch is quietly menacing, his voice carrying authority and doubt. Kate Dickie brings a simmering tension to her role, her presence always felt rather than shown.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s uncertainty is its best part but also its weakest. Some questions stay unanswered, which can feel unsatisfying. A few scenes drag on and lose their emotional punch. However, the film&amp;#x27;s stick-to-its-own-rules approach makes its creepy ending both surprising and unsettling.&lt;/p&gt;&lt;p class="specs-note"&gt;2015 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Witch_(2015_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/310131"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2016/witch.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Witch builds unease through naturalistic performances and deliberate pacing. Its final act risks overreaching its own restrained tone.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The House of the Devil — A slow, uneasy build-up</title>
      <link>https://deslypeter.com/writing/the-house-of-the-devil-2009-review</link>
      <guid>https://deslypeter.com/writing/the-house-of-the-devil-2009-review.html?lang=en</guid>
      <description>The House of the Devil balances tension with deliberate pacing but falters in its final act. The performances are strong, yet the horror lacks a sharp edge.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s central conflict revolves around a young woman&amp;#x27;s decision to take a babysitting job she barely understands. The slow reveal of what lies ahead creates a mood of isolation and dread, but never fully resolves into terror. Ti West builds tension through silence and suggestion rather than jump scares or explicit violence.&lt;/p&gt;&lt;p&gt;The editing holds on moments that feel creepy but doesn&amp;#x27;t push them far enough to be truly scary. Long parts of the film don&amp;#x27;t have clear dangers, so the later horror feels sudden instead of built up. The pacing is slow and careful, but this can make the film feel like it&amp;#x27;s dragging as it moves toward the end.&lt;/p&gt;&lt;p&gt;Jocelin Donahue conveys vulnerability and confusion with quiet precision, grounding the supernatural elements in real fear. Tom Noonan&amp;#x27;s performance is unsettlingly calm, adding to the sense of something wrong without overacting. Dee Wallace and Mary Woronov provide a sinister presence that lingers in the background of the story.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s structure is thoughtful but sometimes wanders, making the horror feel less urgent. Some scenes depend too much on hints instead of clear direction, leaving the audience unsure of what to be scared of. Even with these issues, the mood and acting make for a memorable, if imperfect, slow-burn horror film.&lt;/p&gt;&lt;p class="specs-note"&gt;2009 · English. &lt;a href="https://en.wikipedia.org/wiki/The_House_of_the_Devil"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/25983"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2009/house_of_the_devil.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The House of the Devil balances tension with deliberate pacing but falters in its final act. The performances are strong, yet the horror lacks a sharp edge.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Innkeepers — A slow reveal of unease</title>
      <link>https://deslypeter.com/writing/the-innkeepers-2011-review</link>
      <guid>https://deslypeter.com/writing/the-innkeepers-2011-review.html?lang=en</guid>
      <description>The film leans on atmosphere but lacks the emotional core to make its supernatural claims feel urgent or personal.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The employees get obsessed with the hotel&amp;#x27;s past, but this obsession takes focus away from their loneliness. Their interest in the haunted history feels forced, like it&amp;#x27;s there just to move the plot forward. The film doesn&amp;#x27;t really explain why the strange things happening matter to them personally or how they escalate.&lt;/p&gt;&lt;p&gt;The film drags out tense moments, turning them into long pauses that don&amp;#x27;t add much. It&amp;#x27;s unclear what&amp;#x27;s real and what&amp;#x27;s imagined, which makes it hard for the audience to feel the unease the film is trying to create. It never really decides if it&amp;#x27;s a ghost story or a look at loneliness.&lt;/p&gt;&lt;p&gt;The main characters keep going even though they&amp;#x27;re confused, but their reasons for doing so aren&amp;#x27;t clear. Their conversations during tense scenes feel stiff and not natural. The film hints at bigger ideas but doesn&amp;#x27;t explore them enough to make them meaningful.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s best part is how still and quiet it feels, but this is ruined by a lack of direction. The ghostly elements feel more like background decoration than something that affects the characters&amp;#x27; emotions. Even with its problems, it tries to explore memory and loneliness, but it never really gets there.&lt;/p&gt;&lt;p class="specs-note"&gt;2011 · English. &lt;a href="https://www.themoviedb.org/movie/58428"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2011/innkeepers.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on atmosphere but lacks the emotional core to make its supernatural claims feel urgent or personal.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Sacrament — A cult's secrets are hard to untangle</title>
      <link>https://deslypeter.com/writing/the-sacrament-2013-review</link>
      <guid>https://deslypeter.com/writing/the-sacrament-2013-review.html?lang=en</guid>
      <description>The film leans on its real-world inspiration but lacks the emotional urgency to make its revelations feel urgent or unsettling.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main conflict revolves around a group&amp;#x27;s isolation and the protagonist&amp;#x27;s growing discomfort, but the tension doesn&amp;#x27;t feel fully earned. The situation is clear: someone investigating a cult, but the stakes are unclear and underdeveloped. The film avoids giving much detail about the cult&amp;#x27;s activities or the characters&amp;#x27; pasts, which weakens its impact.&lt;/p&gt;&lt;p&gt;The pacing slows down in key moments, making the events feel more like a list than a compelling story. The dialogue often feels forced, as if the script is trying too hard to sound like real conversations but failing to capture their natural flow. The protagonist&amp;#x27;s reasons for acting the way they do aren&amp;#x27;t clear, making it hard to care about their journey.&lt;/p&gt;&lt;p&gt;The acting is okay but not impressive, with little change in tone or intensity. There&amp;#x27;s a feeling of distance from the characters&amp;#x27; inner thoughts, making their choices seem random rather than natural. The film tries to create unease but rarely keeps it going beyond a basic level of discomfort.&lt;/p&gt;&lt;p&gt;Its use of real events might give it some credibility, but it also limits how deeply it can explore themes or emotions. The structure feels more like a documentary experiment than a complete story with real emotional weight. Despite its goals, the film never really justifies why it exists beyond being a curiosity.&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Sacrament_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2014/sacrament.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its real-world inspiration but lacks the emotional urgency to make its revelations feel urgent or unsettling.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The House That Jack Built — A murderer's obsession with his own story</title>
      <link>https://deslypeter.com/writing/the-house-that-jack-built-2018-review</link>
      <guid>https://deslypeter.com/writing/the-house-that-jack-built-2018-review.html?lang=en</guid>
      <description>The film's focus on its own violence can overshadow the emotional parts. The way it's structured feels more like a display than a real story device.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The main conflict is between the killer&amp;#x27;s need to explain his actions and the audience&amp;#x27;s discomfort with his point of view. Each new murder adds another chapter to his self-justifying story, but the emotional gap grows with each act. There&amp;#x27;s no clear moral guide for the killer&amp;#x27;s choices, which makes his reasons feel disconnected from real consequences.&lt;/p&gt;&lt;p&gt;The pacing lets long monologues sit without adding to the characters or conflict. The film focuses on its own style without giving a good reason to follow its logic. The lack of emotional connection to the victims weakens the impact of the violence.&lt;/p&gt;&lt;p&gt;The voiceover narration is more about the filmmaker&amp;#x27;s style than revealing anything new. The tone and rhythm don&amp;#x27;t change much, making the experience feel repetitive and distant. The film&amp;#x27;s ambition is bigger than its ability to connect emotionally with the audience.&lt;/p&gt;&lt;p&gt;The idea of a murderer telling his own story is interesting but not fully explored. The lack of a clear ending or redemption leaves the story feeling unfinished and unsatisfying. The structure is bold, but it doesn&amp;#x27;t balance form with real meaning well.&lt;/p&gt;&lt;p class="specs-note"&gt;2018 · English. &lt;a href="https://en.wikipedia.org/wiki/The_House_That_Jack_Built_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s focus on its own violence can overshadow the emotional parts. The way it&amp;#x27;s structured feels more like a display than a real story device.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Neon Demon — A performance with no emotional anchor</title>
      <link>https://deslypeter.com/writing/the-neon-demon-2016-review</link>
      <guid>https://deslypeter.com/writing/the-neon-demon-2016-review.html?lang=en</guid>
      <description>The film leans on style over substance, leaving the protagonist's motivations and fears underdeveloped despite a strong visual palette.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Elle Fanning&amp;#x27;s performance as the model feels flat, like a style choice rather than a real emotion. Her character&amp;#x27;s loneliness isn&amp;#x27;t explained, so the horror comes off as more of a surface reaction to beauty and jealousy. The other actors say their lines with a detached feel, but their characters don&amp;#x27;t have much to work with.&lt;/p&gt;&lt;p&gt;The film focuses more on strange, dreamlike images than on telling a clear story. Music and lighting take over scenes, sometimes messing up the rhythm or emotional flow. There&amp;#x27;s a lot of interest in symmetry and mirrors, but it doesn&amp;#x27;t help us understand the characters&amp;#x27; minds.&lt;/p&gt;&lt;p&gt;The dialogue sounds too planned, like it was written rather than spoken naturally. The film&amp;#x27;s mood keeps changing between being exploitative and thoughtful, but it never really decides which one it wants to be. Jena Malone and Keanu Reeves are there, but their characters don&amp;#x27;t get much depth.&lt;/p&gt;&lt;p&gt;The real fear in the film never feels personal or deep—it&amp;#x27;s more about visual shocks than real psychological tension. Even though it tries to be ambitious, it doesn&amp;#x27;t connect its style with real character growth. It&amp;#x27;s more about looking cool than making you care about what happens to the main character.&lt;/p&gt;&lt;p class="specs-note"&gt;2016 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Neon_Demon"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/301365"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2016/neon_demon.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on style over substance, leaving the protagonist&amp;#x27;s motivations and fears underdeveloped despite a strong visual palette.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Only God Forgives — A tense, overheated moral vacuum</title>
      <link>https://deslypeter.com/writing/only-god-forgives-2013-review</link>
      <guid>https://deslypeter.com/writing/only-god-forgives-2013-review.html?lang=en</guid>
      <description>The film's style overshadows its substance. It leans on mood rather than narrative or character clarity, leaving little to anchor the viewer.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central conflict revolves around a father&amp;#x27;s violent quest for justice in Bangkok, but the emotional stakes remain muddled. Ryan Gosling plays a man consumed by vengeance yet emotionally detached, creating a disconnect between his actions and motivations. Kristin Scott Thomas delivers a performance that feels underutilized, her character existing more as an idea than a fully realized presence.&lt;/p&gt;&lt;p&gt;The film uses stylized violence and neon visuals, but the pacing feels forced. Long pauses and quiet moments try to set the mood, but they often skip over the story and characters. The oppressive tone is consistent, but it doesn’t always help the plot or people in it.&lt;/p&gt;&lt;p&gt;Ryan Gosling&amp;#x27;s performance is technically precise but lacks emotional depth, making his character more of a symbol than a person. Kristin Scott Thomas and Vithaya Pansringarm share scenes that suggest tension but rarely build into meaningful conflict. The dialogue often feels sparse and underdeveloped, failing to give the characters enough room to breathe or evolve.&lt;/p&gt;&lt;p&gt;The film’s look is its best part, but it doesn’t make up for the weak storytelling. There’s a certain visual appeal, but it doesn’t fix the lack of emotional connection. It tries to explore moral gray areas, but it doesn’t follow through on its own ideas.&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://en.wikipedia.org/wiki/Only_God_Forgives"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/77987"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2013/only_god_forgives.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s style overshadows its substance. It leans on mood rather than narrative or character clarity, leaving little to anchor the viewer.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Guest — A visitor who never quite leaves</title>
      <link>https://deslypeter.com/writing/the-guest-2014-review</link>
      <guid>https://deslypeter.com/writing/the-guest-2014-review.html?lang=en</guid>
      <description>The Guest balances tension with its own contradictions. Dan Stevens plays a man whose charm and violence are both oddly convincing.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film begins with a man arriving unannounced, claiming to be a friend of the family&amp;#x27;s dead son. His presence unsettles the household but also offers a strange kind of comfort in its early stages. The script leans on mystery without ever fully justifying the stakes of its central character.&lt;/p&gt;&lt;p&gt;The film uses close-ups and quiet moments between dialogue to build a tense atmosphere. It keeps the threat feeling constant, even when not much is happening. But sometimes the structure repeats itself, which can slow down the tension.&lt;/p&gt;&lt;p&gt;Dan Stevens carries the role with a smoothness that borders on disarming, making his violence feel more like a performance than a threat. Maika Monroe gives a grounded performance but struggles to match the intensity of her character’s suspicion. Supporting actors add weight to the sense of unease, even when their roles are minimal.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s middle section drags a bit, relying too much on suspense without giving new clues. This makes some parts feel slow and repetitive instead of exciting. Still, The Guest does a good job of leaving you with a lingering mood after it&amp;#x27;s over.&lt;/p&gt;&lt;p class="specs-note"&gt;2014 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Guest_(2014_American_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2014/guest.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Guest balances tension with its own contradictions. Dan Stevens plays a man whose charm and violence are both oddly convincing.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Blue Jay — A fragile bond under pressure</title>
      <link>https://deslypeter.com/writing/blue-jay-2016-review</link>
      <guid>https://deslypeter.com/writing/blue-jay-2016-review.html?lang=en</guid>
      <description>The film leans on emotional intimacy but struggles to sustain tension. The pacing feels hesitant, leaving moments unresolved.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two people meet by chance and try to make something meaningful from a brief encounter. Their conversation is filled with pauses, hesitations, and unspoken thoughts that suggest deeper histories. The setting is simple, but the emotional stakes are high, creating an uneasy balance between hope and doubt.&lt;/p&gt;&lt;p&gt;The film avoids big drama, using small looks and quiet moments to show tension. This can make the situation feel less urgent, and the stakes might not hit as hard as they should. Some viewers might find the slow pace and lack of clear direction frustrating.&lt;/p&gt;&lt;p&gt;The actors handle the dialogue carefully, but their performances don’t have the energy needed to drive the story forward. Their chemistry feels real, but it’s not enough to fix the script’s weak direction. The dialogue often wanders, focusing more on mood than on conflict or resolution.&lt;/p&gt;&lt;p&gt;The film is honest about how the characters avoid big confrontations, but that honesty also means there’s not much emotional payoff. The quiet scenes are the best part, but they don’t make up for the story’s weaknesses. It’s an interesting experiment, but not a fully satisfying look at connection and uncertainty.&lt;/p&gt;&lt;p class="specs-note"&gt;2016 · English. &lt;a href="https://en.wikipedia.org/wiki/Blue_Jay_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2016/blue_jay.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on emotional intimacy but struggles to sustain tension. The pacing feels hesitant, leaving moments unresolved.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>A Dark Song — A ritual to escape the past</title>
      <link>https://deslypeter.com/writing/a-dark-song-2016-review</link>
      <guid>https://deslypeter.com/writing/a-dark-song-2016-review.html?lang=en</guid>
      <description>The film leans on eerie silence and slow dread, but its emotional core is underdeveloped. The central conflict feels more like a premise than a lived experience.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A grieving woman hires an occultist to help her contact her dead child. That gives the ritual a clear purpose, but the film doesn&amp;#x27;t make their desperation or fear feel convincing. I found their motives hard to connect with, even when I understood what they wanted. The premise carries more weight than the relationship.&lt;/p&gt;&lt;p&gt;The film moves slowly, with long pauses that sometimes feel like they&amp;#x27;re just filling time rather than building tension. Still, some moments have a weight that hints at deeper emotions. The dialogue is simple and repeated, which might show the characters&amp;#x27; mental state but also makes it hard to stay engaged.&lt;/p&gt;&lt;p&gt;The actors convey a sense of unease without clear direction or emotional anchors. Their performances are restrained but lack the urgency needed to elevate the narrative tension. The ritual’s mechanics are never fully explained, leaving confusion rather than intrigue.&lt;/p&gt;&lt;p&gt;The film has a mood that stays with you, even if the story isn&amp;#x27;t clear. It shows promise but doesn&amp;#x27;t deliver much in the way of satisfying emotions.&lt;/p&gt;&lt;p class="specs-note"&gt;2016 · English. &lt;a href="https://en.wikipedia.org/wiki/A_Dark_Song_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on eerie silence and slow dread, but its emotional core is underdeveloped. The central conflict feels more like a premise than a lived experience.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Survivalist — A man alone in a collapsing world</title>
      <link>https://deslypeter.com/writing/the-survivalist-2015-review</link>
      <guid>https://deslypeter.com/writing/the-survivalist-2015-review.html?lang=en</guid>
      <description>The film leans on its central premise but struggles to sustain tension beyond the initial survival scenario. The lead's isolation feels more like a setting than a story.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The protagonist’s internal struggle is clear, but his actions often lack urgency or purpose that could justify the film’s direction. The pacing slows as the plot relies on repetition rather than escalation of stakes. The performance anchors the film, but it cannot compensate for a script that avoids deeper character exploration.&lt;/p&gt;&lt;p&gt;The setting is simple, which limits how much the story can develop through external conflict or resolution. The dialogue sometimes feels forced, especially in scenes where more emotional depth could have been added. There are a few tense moments, but they don’t add up to something that fixes the film’s bigger problems.&lt;/p&gt;&lt;p&gt;The lead&amp;#x27;s determination is relatable, yet his motivations remain underdeveloped and inconsistent. The film attempts to explore themes of survival, but it never fully commits to a narrative that would justify its tone. The lack of clear direction or resolution leaves the story feeling incomplete and unsatisfying.&lt;/p&gt;&lt;p&gt;There are a few moments where the tension feels real, but they don’t last long enough to keep things interesting. The film’s simple style works in some scenes but gets boring without more conflict or depth. Still, the main performance gives the story a base that could have supported something more ambitious.&lt;/p&gt;&lt;p class="specs-note"&gt;2015 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Survivalist_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its central premise but struggles to sustain tension beyond the initial survival scenario. The lead&amp;#x27;s isolation feels more like a setting than a story.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Road — A world without light or hope</title>
      <link>https://deslypeter.com/writing/the-road-2009-review</link>
      <guid>https://deslypeter.com/writing/the-road-2009-review.html?lang=en</guid>
      <description>The film balances bleak realism with emotional restraint, but its minimalist approach risks distancing the audience from its characters' humanity.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The father and son navigate a desolate landscape where survival is the only goal, and trust is a luxury they cannot afford. Their journey is defined by scarcity, fear, and quiet desperation rather than grand gestures or dramatic confrontations. The screenplay leans heavily on sparse dialogue, which reflects the characters&amp;#x27; isolation but can also feel emotionally distant.&lt;/p&gt;&lt;p&gt;The film uses wide shots of empty spaces to show how big their struggle is, without explaining everything. The pacing is slow, with long silences that build tension but might bore some viewers during quiet moments. There&amp;#x27;s a rhythm to their movement that feels like a routine, but the film never really explains why they keep going.&lt;/p&gt;&lt;p&gt;Viggo Mortensen carries much of the emotional weight with a stoic performance that avoids melodrama but risks underplaying vulnerability. Kodi Smit-McPhee conveys fear and confusion without overacting, though his limited lines leave little room for depth. Charlize Theron and Robert Duvall appear briefly but are effective in their roles as fleeting threats or fleeting kindnesses.&lt;/p&gt;&lt;p&gt;The film’s restraint is its strength but also its limitation—some moments feel too detached to really connect with the heart. It does a good job showing how bleak the world is, but the characters&amp;#x27; inner struggles don&amp;#x27;t always feel relatable. Even with its flaws, The Road is still a strong film about love and survival in a broken world.&lt;/p&gt;&lt;p class="specs-note"&gt;2009 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Road_(2009_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/20766"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2009/road.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances bleak realism with emotional restraint, but its minimalist approach risks distancing the audience from its characters&amp;#x27; humanity.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Rover — A man and a girl on the run</title>
      <link>https://deslypeter.com/writing/the-rover-2014-review</link>
      <guid>https://deslypeter.com/writing/the-rover-2014-review.html?lang=en</guid>
      <description>The film’s tension is built from sparse details and uncertain alliances, but its emotional core feels underdeveloped despite strong performances.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A man and a girl travel through a lawless wasteland, their relationship defined more by survival than shared purpose. Their journey is driven by a vague threat, which limits the depth of their motivations or conflicts. The sparse dialogue emphasizes isolation but leaves little room for emotional investment.&lt;/p&gt;&lt;p&gt;The direction uses wide shots to show their vulnerability in the empty landscape. The pacing is slow, but without clear stakes, the urgency feels off. The setting creates a mood more than it drives the story, and there&amp;#x27;s not much to ground the moral or emotional weight of what&amp;#x27;s happening.&lt;/p&gt;&lt;p&gt;The male lead carries a quiet desperation, but his actions often lack clear reasoning or resolution. His companion is equally ambiguous, her role shifting without enough narrative foundation. Their interactions are tense but rarely reveal deeper layers of character.&lt;/p&gt;&lt;p&gt;The film relies on visuals to tell its story, which works sometimes but falls short when dialogue is needed to explain what&amp;#x27;s going on. There&amp;#x27;s a feeling of violence coming, but the threat never really comes to a satisfying head. The characters don&amp;#x27;t have clear directions in their journey, so their story feels more like a half-finished idea than something that leaves a strong impression.&lt;/p&gt;&lt;p class="specs-note"&gt;2014 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Rover_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2014/rover.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film’s tension is built from sparse details and uncertain alliances, but its emotional core feels underdeveloped despite strong performances.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>These Final Hours — A quiet, unresolved tension</title>
      <link>https://deslypeter.com/writing/these-final-hours-2013-review</link>
      <guid>https://deslypeter.com/writing/these-final-hours-2013-review.html?lang=en</guid>
      <description>The film uses its setting well, but it doesn't have a strong emotional centre. Without clear reasons for the characters' actions, the tension feels weak, even though the mood is atmospheric.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The story takes place in a small space with little outside conflict. It focuses on the characters&amp;#x27; uncertainty and hesitation. They don&amp;#x27;t act quickly, which makes the mood feel passive rather than urgent. This hesitation seems more like a style choice than something that moves the story forward.&lt;/p&gt;&lt;p&gt;The film moves slowly, often drifting without a clear goal. There are quiet moments that hint at deeper character development, but they never fully come together. The dialogue is minimal, which fits the mood but also makes it hard to follow.&lt;/p&gt;&lt;p&gt;The acting is understated, but the actors don&amp;#x27;t show enough emotion to make the story stand out. The film has a sad tone, but it doesn&amp;#x27;t really explain why it&amp;#x27;s sad or what it&amp;#x27;s trying to say. There&amp;#x27;s a feeling of longing that never gets resolved.&lt;/p&gt;&lt;p&gt;The setting helps create the mood, but it doesn&amp;#x27;t play an active role in the story. Without clear conflicts, it&amp;#x27;s hard to care about the characters&amp;#x27; choices. Even though the film has a strong atmosphere, it doesn&amp;#x27;t fully justify its emotional or narrative weight.&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://en.wikipedia.org/wiki/These_Final_Hours_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film uses its setting well, but it doesn&amp;#x27;t have a strong emotional centre. Without clear reasons for the characters&amp;#x27; actions, the tension feels weak, even though the mood is atmospheric.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Faults — A fragile moral line</title>
      <link>https://deslypeter.com/writing/faults-2014-review</link>
      <guid>https://deslypeter.com/writing/faults-2014-review.html?lang=en</guid>
      <description>The film balances dark humor with real emotional stakes, but its tone occasionally undermines the gravity of its characters' choices.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The central tension is between a couple&amp;#x27;s attempt to help someone and their own ethical boundaries being tested. The characters are placed in situations where their values clash with their actions, creating immediate friction. The script leans into absurdity but never fully commits to either comedy or thriller as its primary mode.&lt;/p&gt;&lt;p&gt;The film moves quickly between jokes and unsettling moments, which can feel disjointed. There&amp;#x27;s not enough tension to make the moral dilemmas feel serious. The dialogue leans into irony, but the characters don&amp;#x27;t really change much throughout the film.&lt;/p&gt;&lt;p&gt;Mary Elizabeth Winstead carries much of the emotional weight with a grounded performance amidst the chaos. Leland Orser adds a layer of menace that keeps the film from becoming purely farcical. Supporting actors contribute to the chaotic energy, but few moments allow them to fully develop their characters.&lt;/p&gt;&lt;p&gt;The humor can take attention away from the serious themes about trust and morality. The film struggles to find a consistent tone between satire and real tension. Still, Faults has an interesting idea worth checking out, even if it never fully sorts out its tone.&lt;/p&gt;&lt;p class="specs-note"&gt;2014 · English. &lt;a href="https://en.wikipedia.org/wiki/Faults_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2015/faults.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances dark humor with real emotional stakes, but its tone occasionally undermines the gravity of its characters&amp;#x27; choices.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Compliance — A chilling performance anchors a moral dilemma</title>
      <link>https://deslypeter.com/writing/compliance-2012-review</link>
      <guid>https://deslypeter.com/writing/compliance-2012-review.html?lang=en</guid>
      <description>The film exposes the dangers of blind obedience but falters in its emotional impact. The real-life inspiration adds weight, yet the tone remains clinical.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Ann Dowd&amp;#x27;s portrayal of the restaurant manager is unsettlingly convincing, capturing a slow unraveling of judgment. Her character’s compliance with an authority figure feels disturbingly plausible, rooted in real-world dynamics. The film leans into the horror of ordinary people following orders without questioning their morality.&lt;/p&gt;&lt;p&gt;The film moves at a steady pace that builds tension but doesn&amp;#x27;t reach strong emotional highs or lows. Scenes are carefully put together, focusing on dialogue and little action to show the pressure of the situation. There&amp;#x27;s not much room for characters to grow beyond what&amp;#x27;s needed for the main story.&lt;/p&gt;&lt;p&gt;Dreama Walker’s performance as the employee adds vulnerability, though her role remains constrained by the plot’s design. Bill Camp’s voice as the fake officer is chillingly authoritative but never fully explored as a character. The dialogue feels naturalistic, yet it often serves the film&amp;#x27;s purpose rather than revealing complex inner lives.&lt;/p&gt;&lt;p&gt;The film relies a lot on its real-life story, which makes the horror feel real but limits how much it can invent. Sometimes, the focus on how things work gets in the way of connecting with the people involved, making it hard to feel emotionally involved. Still, the uncomfortable truth of the situation stays with you, acting as a warning about how people follow authority without thinking.&lt;/p&gt;&lt;p class="specs-note"&gt;2012 · English. &lt;a href="https://en.wikipedia.org/wiki/Compliance_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/84188"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2012/compliance.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film exposes the dangers of blind obedience but falters in its emotional impact. The real-life inspiration adds weight, yet the tone remains clinical.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Cheap Thrills — A darkly comedic descent into moral decay</title>
      <link>https://deslypeter.com/writing/cheap-thrills-2013-review</link>
      <guid>https://deslypeter.com/writing/cheap-thrills-2013-review.html?lang=en</guid>
      <description>The film's unsettling tone is undercut by a lack of emotional stakes. The characters' choices feel arbitrary rather than tragic or revelatory.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Two friends are lured into a game that promises money but demands ethical compromise, exposing their vulnerabilities. The premise leans on the absurdity of the challenges without fully justifying their appeal or consequences. The script often prioritizes shock value over character depth, leaving motivations unclear and relationships shallow.&lt;/p&gt;&lt;p&gt;The film jumps between tones in a way that feels more like a stylistic choice than something that grows naturally from the story. Some scenes are slow and drag, while others rush past moments that could have built real tension or resolution. The humor doesn&amp;#x27;t always land, especially when the characters are making choices that hurt themselves more than help them.&lt;/p&gt;&lt;p&gt;Pat Healy and Sara Paxton carry the film but lack clear emotional anchors to make their choices feel authentic. Their performances are competent but do not elevate the material beyond its surface-level provocations. David Koechner&amp;#x27;s role adds some levity, yet his character remains underdeveloped and disconnected from the main conflict.&lt;/p&gt;&lt;p&gt;The film has clear ambition, but it doesn&amp;#x27;t manage to balance its darker themes with a solid story. The moral questions it raises are interesting, but the script doesn&amp;#x27;t follow through on them properly. It&amp;#x27;s a provocative look at greed and peer pressure, but it never really finds a reason to exist beyond that.&lt;/p&gt;&lt;p class="specs-note"&gt;2013 · English. &lt;a href="https://en.wikipedia.org/wiki/Cheap_Thrills_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.themoviedb.org/movie/175291"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2014/cheap_thrills.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film&amp;#x27;s unsettling tone is undercut by a lack of emotional stakes. The characters&amp;#x27; choices feel arbitrary rather than tragic or revelatory.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Perfect Host — A criminal's lie becomes a trap</title>
      <link>https://deslypeter.com/writing/the-perfect-host-2010-review</link>
      <guid>https://deslypeter.com/writing/the-perfect-host-2010-review.html?lang=en</guid>
      <description>The film leans on its own contradictions, offering few rewards for the viewer’s patience or the character’s desperation.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s main conflict is a criminal who misunderstands his host&amp;#x27;s true nature and the risks of his deception. As the guest&amp;#x27;s confidence fades and he realizes the dinner party isn&amp;#x27;t what it seems, the film fails to explain why this matters. The tension between the guest and host relies on vague threats rather than clear motivations or consequences.&lt;/p&gt;&lt;p&gt;The film&amp;#x27;s pacing is uneven, with long stretches that don&amp;#x27;t build urgency or character depth. Dialogue often stalls mid-sentence, as if waiting for a punchline that never comes. The rhythm between scenes feels inconsistent, making it hard to grasp the stakes of the situation.&lt;/p&gt;&lt;p&gt;The lead actor shows unease but his choices lack clarity, making it hard to root for or against him. Supporting characters are underdeveloped, their roles unclear and their actions unconvincing as threats. The dialogue feels stilted, with lines that suggest tension but don&amp;#x27;t deliver real conflict.&lt;/p&gt;&lt;p&gt;The film’s premise has potential but is undermined by its own lack of focus and coherence. It offers few emotional or intellectual rewards for the audience’s time. Despite its flaws, it occasionally hints at a more interesting story buried beneath its confusion.&lt;/p&gt;&lt;p class="specs-note"&gt;2010 · English. &lt;a href="https://www.themoviedb.org/movie/66195"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2011/perfect_host.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its own contradictions, offering few rewards for the viewer’s patience or the character’s desperation.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Exam — A test with no clear answers</title>
      <link>https://deslypeter.com/writing/exam-2009-review</link>
      <guid>https://deslypeter.com/writing/exam-2009-review.html?lang=en</guid>
      <description>The film leans on claustrophobia and paranoia but lacks emotional stakes or satisfying resolution, leaving tension unresolved.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;A group of candidates is locked in a room for an ambiguous corporate exam, creating a situation where suspicion becomes inevitable. The test&amp;#x27;s simplicity contrasts with the growing mistrust among participants, but their motivations remain vague and unexplored. The lack of clear stakes or personal histories makes it hard to care about who betrays whom.&lt;/p&gt;&lt;p&gt;The film keeps things moving, but it never explains why the candidates are locked in the room or what they’re hoping to gain. The pressure of the situation is clear, but the script doesn’t dig into the characters’ thoughts or feelings much. The dialogue feels forced, like it’s just there to make people argue instead of showing who they really are.&lt;/p&gt;&lt;p&gt;Performances are functional but lack nuance, making it difficult to distinguish between allies and enemies. The film’s focus on ambiguity is its strength, but it fails to deliver a satisfying payoff for that choice. There&amp;#x27;s little room for redemption or clarity, which weakens the emotional impact of the unfolding events.&lt;/p&gt;&lt;p&gt;The tension is high, but the story feels like it’s just setting things up rather than finishing them. The film doesn’t explain its own rules or what’s at stake, which makes it confusing instead of mysterious. Even though the idea is smart, it never fully works out the consequences of its own choices.&lt;/p&gt;&lt;p class="specs-note"&gt;2009 · English. &lt;a href="https://www.themoviedb.org/movie/29917"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on claustrophobia and paranoia but lacks emotional stakes or satisfying resolution, leaving tension unresolved.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Circle — Trust is a currency that runs out fast</title>
      <link>https://deslypeter.com/writing/circle-2015-review</link>
      <guid>https://deslypeter.com/writing/circle-2015-review.html?lang=en</guid>
      <description>The film leans on its premise but falters in execution, offering tension without the emotional or structural depth to sustain it effectively.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Participants are stuck in a situation where trusting the wrong person could mean death. The main problem is figuring out who to trust, which creates tension. But the film doesn&amp;#x27;t give enough reason to care about the characters or their choices, so the pressure feels empty.&lt;/p&gt;&lt;p&gt;The film moves too fast, like it&amp;#x27;s trying to keep suspense alive without letting ideas settle. Scenes jump around, making it hard to follow what&amp;#x27;s happening or why characters act the way they do. There&amp;#x27;s some effort to explore the characters&amp;#x27; minds, but it doesn&amp;#x27;t go deep enough.&lt;/p&gt;&lt;p&gt;The acting is okay but not memorable. Characters don&amp;#x27;t show much emotion, and their fear or doubt feels forced. The dialogue is stiff, like it was written for the situation rather than for real people. The script keeps repeating the main idea without showing what it really means for the characters.&lt;/p&gt;&lt;p&gt;The film tries to say something about how people act in groups, but it doesn&amp;#x27;t offer anything new or interesting. The main problem is that the idea isn&amp;#x27;t matched with enough real substance. Even though the concept sounds good, the film doesn&amp;#x27;t make the choices feel important or meaningful.&lt;/p&gt;&lt;p class="specs-note"&gt;2015 · English. &lt;a href="https://www.themoviedb.org/movie/335866"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its premise but falters in execution, offering tension without the emotional or structural depth to sustain it effectively.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Killing Room — A performance struggles to fill the gaps</title>
      <link>https://deslypeter.com/writing/the-killing-room-2009-review</link>
      <guid>https://deslypeter.com/writing/the-killing-room-2009-review.html?lang=en</guid>
      <description>The Killing Room is a tense but uneven thriller where the central performance falters under the weight of its own ambition, leaving emotional stakes unclear.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The protagonist&amp;#x27;s desperation doesn&amp;#x27;t feel fully formed, making their decisions hard to believe even though the film&amp;#x27;s atmosphere is intense. The script gives little reason for their actions beyond basic tension, which weakens the psychological depth. A major confrontation lacks the emotional impact it needs to feel meaningful in the story.&lt;/p&gt;&lt;p&gt;The direction tries to build suspense but doesn&amp;#x27;t keep it up with steady pacing or clear goals. The visuals are minimal and don&amp;#x27;t really help with the mood or character relationships. There&amp;#x27;s not much in the way of visual or sound cues to show what the protagonist is feeling internally.&lt;/p&gt;&lt;p&gt;The lead actor is sincere but not always reliable, struggling to hold the film&amp;#x27;s emotional center. The tone shifts suggest bigger themes, but they&amp;#x27;re never explored deeply enough. The supporting characters feel more like roadblocks than people with their own reasons and goals.&lt;/p&gt;&lt;p&gt;The film misses a chance to build trust between the main character and others, making key scenes feel flat. The ending comes too quickly, without enough setup to make it satisfying. Even with these problems, the film&amp;#x27;s attempt to explore moral gray areas is interesting, though it doesn&amp;#x27;t fully come together.&lt;/p&gt;&lt;p class="specs-note"&gt;2009 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Killing_Room_(film)"&gt;Film details&lt;/a&gt;&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;5&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The Killing Room is a tense but uneven thriller where the central performance falters under the weight of its own ambition, leaving emotional stakes unclear.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Stanford Prison Experiment — A controlled descent into moral ambiguity</title>
      <link>https://deslypeter.com/writing/the-stanford-prison-experiment-2015-review</link>
      <guid>https://deslypeter.com/writing/the-stanford-prison-experiment-2015-review.html?lang=en</guid>
      <description>The film leans on its real-life subject for tension but struggles to balance ethical critique with human complexity. The central conflict remains emotionally distant.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The experiment feels more like a stage setup than a real psychological study, making it hard to connect emotionally. The actors do their jobs well, but their performances don&amp;#x27;t bring enough raw feeling to make the characters&amp;#x27; choices feel urgent or personal. The script relies on exposition instead of natural dialogue, which makes the moral dilemmas feel more like school lessons than real emotions.&lt;/p&gt;&lt;p&gt;The direction focuses on the cold, sterile environments rather than the characters&amp;#x27; inner struggles, which limits the psychological depth of the situation. The pacing is slow and often feels like going through a list rather than exploring how people sink into madness. The film holds back from showing the full consequences of the characters&amp;#x27; actions, which keeps the audience from really feeling their suffering.&lt;/p&gt;&lt;p&gt;Without strong personal stakes, the ethical questions feel more like a puzzle than a real human drama. There&amp;#x27;s an attempt to make the audience think, but it doesn&amp;#x27;t really get into the emotional aftermath of what happens. Weak character development makes the moral questions feel less powerful.&lt;/p&gt;&lt;p&gt;Even with its flaws, the film does bring up important ideas about power and corruption. It&amp;#x27;s an interesting but emotionally shallow look at a disturbing real event. The mix of critique and entertainment doesn&amp;#x27;t quite work, leaving the viewer with more questions than real emotional impact.&lt;/p&gt;&lt;p class="specs-note"&gt;2015 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Stanford_Prison_Experiment_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2015/stanford_prison_experiment.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film leans on its real-life subject for tension but struggles to balance ethical critique with human complexity. The central conflict remains emotionally distant.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Experimenter — A dramatized experiment in obedience</title>
      <link>https://deslypeter.com/writing/experimenter-2015-review</link>
      <guid>https://deslypeter.com/writing/experimenter-2015-review.html?lang=en</guid>
      <description>The film balances ethical inquiry with personal stakes but leans too heavily on its subject matter, limiting emotional resonance.</description>
      <pubDate>Tue, 20 Oct 2026 21:14:31 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Experimenter is about moral compromise, focusing on Stanley Milgram’s famous experiment and what came after. The main conflict is between scientific ambition and human conscience, shown through layered conversations and slow reveals. Peter Sarsgaard plays Milgram with intellectual energy, but he doesn’t show enough of the inner conflict Milgram must have felt.&lt;/p&gt;&lt;p&gt;Winona Ryder’s character adds some depth, but her role feels underdeveloped compared to Milgram’s. The dialogue often feels more like information dumps than real character development, making relationships feel more like exchanges than real connections. The pacing is slow but uneven—some parts drag, while others rush through complex moral questions.&lt;/p&gt;&lt;p&gt;Jim Gaffigan and Edoardo Ballerini bring some emotional weight, especially in scenes showing the psychological cost of the experiment. The film’s structure can be confusing, jumping between Milgram’s past and present without clear signposts. Still, it raises important questions about authority and morality that stick with you after the credits roll.&lt;/p&gt;&lt;p&gt;Because it’s based on real events, the film feels more like a documentary than a dramatized story. It misses a chance to explore Milgram’s personal life beyond his obsession with obedience. It’s informative, but its emotional punch is weakened by its academic tone, which makes a deeply human topic feel distant.&lt;/p&gt;&lt;p class="specs-note"&gt;2015 · English. &lt;a href="https://en.wikipedia.org/wiki/Experimenter_(film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2015/experimenter.html"&gt;Poster source&lt;/a&gt; · Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The film balances ethical inquiry with personal stakes but leans too heavily on its subject matter, limiting emotional resonance.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Wild Tales — patience has its limits</title>
      <link>https://deslypeter.com/writing/wild-tales-review</link>
      <guid>https://deslypeter.com/writing/wild-tales-review.html?lang=en</guid>
      <description>Six darkly funny stories about people losing their patience, and then much more. Sharp timing makes the revenge feel horribly satisfying.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Wild Tales&lt;/em&gt; understands the appeal of imagining what you would say or do if you stopped being reasonable. Across six stories, people reach that point and keep going. The pleasure is in watching an ordinary frustration become something wildly disproportionate.&lt;/p&gt;&lt;p&gt;Damián Szifron knows how to ramp things up. He sets up a grievance quickly, lets you see it, then keeps pushing to see how far your sympathy will go. The situations get outrageous, but the irritation underneath is often familiar enough to make the excess satisfying.&lt;/p&gt;&lt;p&gt;The comic timing is the best part for me. A pause, a stubborn response, or someone refusing to let a small thing go can turn the direction of a scene. The dialogue has bite without every exchange needing a punchline. People are usually quite serious about themselves, which makes them funnier.&lt;/p&gt;&lt;p&gt;Like most anthologies, some stories work better than others. A few make their point early and repeat it, while others keep finding new ways to get more absurd. The shared mood keeps the film consistent enough that the different characters don't feel like starting over.&lt;/p&gt;&lt;p&gt;8/10. Wild, darkly funny, and satisfying in a way that is not always comfortable to admit. It gets a lot of comedy out of people who absolutely refuse to calm down.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Damián Szifron · 2014 · Spanish. &lt;a href="https://www.sonyclassics.com/wildtales/"&gt;Film details&lt;/a&gt; · &lt;a href="https://en.wikipedia.org/wiki/Wild_Tales_(film)"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Six darkly funny stories about people losing their patience, and then much more. Sharp timing makes the revenge feel horribly satisfying.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Tumbbad — greed in the rain</title>
      <link>https://deslypeter.com/writing/tumbbad-review</link>
      <guid>https://deslypeter.com/writing/tumbbad-review.html?lang=en</guid>
      <description>Stunning atmosphere gives this horror-fantasy its hold. The treasure is tempting, but the world around it makes every return feel wrong.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The atmosphere in &lt;em&gt;Tumbbad&lt;/em&gt; is stunning. The rain, dark interiors, and decaying buildings make the place feel damp enough to reach through the screen. Long before the danger is fully visible, the setting has already made returning there seem like a terrible idea.&lt;/p&gt;&lt;p&gt;The greed is what makes the story work. The treasure isn't some harmless quest — it's something people keep making room for, even when it costs them. Sohum Shah plays the desire with a stubborn, practical edge. You can see how someone might turn a dangerous risk into a habit.&lt;/p&gt;&lt;p&gt;The visual storytelling is stronger than any explanation could be. Light reveals just enough of a space to make you worry about the rest, and the fantasy elements feel connected to the physical world around them. The monster matters, but so does the journey towards it.&lt;/p&gt;&lt;p&gt;Some of the dialogue spells out the lesson about greed pretty clearly. I was already getting that from the choices and the visuals, so a few lines felt redundant. The family story also moves quickly in places, but it doesn't really hurt the feeling of the world.&lt;/p&gt;&lt;p&gt;8/10. A horror-fantasy with a strong sense of place. The atmosphere is the main reason to watch, and it makes the temptation at the heart of the story feel dangerous every time.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Rahi Anil Barve and Adesh Prasad · 2018 · Hindi. &lt;a href="https://www.sicvenezia.eu/4727/edizione-2018/film-2018/tumbbad/?lang=en"&gt;Film details&lt;/a&gt; · &lt;a href="https://en.wikipedia.org/wiki/Tumbbad"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Stunning atmosphere gives this horror-fantasy its hold. The treasure is tempting, but the world around it makes every return feel wrong.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Invisible Guest — keep your story straight</title>
      <link>https://deslypeter.com/writing/the-invisible-guest-review</link>
      <guid>https://deslypeter.com/writing/the-invisible-guest-review.html?lang=en</guid>
      <description>An accused businessman and a lawyer test a story under pressure. A twist-filled thriller that keeps the conversation moving.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;&lt;em&gt;The Invisible Guest&lt;/em&gt; is easy to get pulled into. A businessman accused of murder has limited time to prepare his defence with a lawyer, and the conversation quickly becomes a contest over what happened and what can be made to sound convincing.&lt;/p&gt;&lt;p&gt;Oriol Paulo keeps the story moving without letting scenes settle. A detail gets questioned, an account gets reconsidered, and suddenly you're weighing things differently. I liked the active feeling of listening rather than waiting for the next event.&lt;/p&gt;&lt;p&gt;Mario Casas and Ana Wagener give the central exchanges a useful imbalance. His explanations and her insistence on testing them create tension even when the film is largely dealing in words. The dialogue is doing a lot of plot work, but the pressure between the performers keeps it from feeling like a summary.&lt;/p&gt;&lt;p&gt;The film is very structured, and sometimes I felt the writing was pushing for another twist instead of letting people act naturally. The characters aren't always as interesting as the story they're caught in. Still, the pacing makes it easy to follow along.&lt;/p&gt;&lt;p&gt;8/10. A fun, tightly written thriller with plenty of twists. The less you know about the details going in, the more enjoyable the questioning will be.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Oriol Paulo · 2016 · Spanish. &lt;a href="https://infoicaa.mcu.es/CatalogoICAA/Peliculas/GetPdf?Pelicula=154415"&gt;Film details&lt;/a&gt; · &lt;a href="https://en.wikipedia.org/wiki/The_Invisible_Guest"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;An accused businessman and a lawyer test a story under pressure. A twist-filled thriller that keeps the conversation moving.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Timecrimes — making a bad situation worse</title>
      <link>https://deslypeter.com/writing/timecrimes-review</link>
      <guid>https://deslypeter.com/writing/timecrimes-review.html?lang=en</guid>
      <description>A small time-travel thriller with a tightly plotted loop. Ordinary surroundings make the increasingly tangled situation more effective.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Timecrimes&lt;/em&gt; keeps its world small, which is one of its best decisions. An ordinary man gets caught in a time loop, but the film does not need a vast future or complicated machinery to make the problem interesting. A few familiar places are enough.&lt;/p&gt;&lt;p&gt;Nacho Vigalondo makes the same places feel different as the story unfolds. Something that seemed simple at first takes on new meaning with more context. The way the film uses a limited setting to create tension and move the plot forward is smart. It makes the most of what it has.&lt;/p&gt;&lt;p&gt;Karra Elejalde makes the central character convincingly unheroic. He reacts, panics, and tries to improve a situation he does not fully understand. That ordinariness helps the science-fiction premise feel like an immediate problem rather than a theory being demonstrated.&lt;/p&gt;&lt;p&gt;The time-travel rules kept me more engaged than the characters did. Some of the choices feel forced just to keep the loop working. The people around the main character aren't fully developed. The look and feel of the film also varies — some scenes work well, others don't.&lt;/p&gt;&lt;p&gt;7/10. It's compact, clever, and well-structured. It shows how a time-travel story can be effective by focusing on a few key consequences rather than trying to build a huge universe.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Nacho Vigalondo · 2007 · Spanish. &lt;a href="https://infoicaa.mcu.es/CatalogoICAA/es-es/Peliculas/Detalle?Pelicula=96306&amp;amp;q=true"&gt;Film details&lt;/a&gt; · &lt;a href="https://en.wikipedia.org/wiki/Timecrimes"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;A small time-travel thriller with a tightly plotted loop. Ordinary surroundings make the increasingly tangled situation more effective.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Calibre — trying to act normal</title>
      <link>https://deslypeter.com/writing/calibre-review</link>
      <guid>https://deslypeter.com/writing/calibre-review.html?lang=en</guid>
      <description>A hunting trip goes terribly wrong, and ordinary interactions become a source of dread. Effective tension, though the story felt familiar.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The most effective moments in &lt;em&gt;Calibre&lt;/em&gt; are the ones where someone has to answer a simple question. Two friends take a hunting trip in the Scottish Highlands, a terrible accident happens, and suddenly keeping a conversation ordinary becomes very difficult.&lt;/p&gt;&lt;p&gt;Matt Palmer uses the setting well. The landscape is beautiful, but it doesn't feel safe once the tension builds. The village feels like a place where people watch each other, making it harder to avoid notice when you're trying to stay hidden.&lt;/p&gt;&lt;p&gt;Jack Lowden is convincing at showing fear without always verbalising it. Martin McCann brings a different, more forceful energy to the friendship, and the difference between them gives the quieter scenes some friction. I found the effort of keeping their composure more absorbing than the broader thriller machinery.&lt;/p&gt;&lt;p&gt;The issue for me is how familiar it feels. Once the situation is set, a lot of what happens next feels like the next expected step. The tension is well handled, but I wanted more from the characters beyond how they react to the crisis. Some choices also feel forced to keep the tension going.&lt;/p&gt;&lt;p&gt;6/10. A tense, well-acted thriller with a strong setting. It kept me watching, but the filmmaking had more impact than the story itself.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Matt Palmer · 2018 · English. &lt;a href="https://www.screen.scot/film-in-scotland/made-in-scotland/film/2018/calibre"&gt;Film details&lt;/a&gt; · &lt;a href="https://en.wikipedia.org/wiki/Calibre_(film)"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;6&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;A hunting trip goes terribly wrong, and ordinary interactions become a source of dread. Effective tension, though the story felt familiar.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Soft &amp; Quiet — ordinary words, growing dread</title>
      <link>https://deslypeter.com/writing/soft-and-quiet-review</link>
      <guid>https://deslypeter.com/writing/soft-and-quiet-review.html?lang=en</guid>
      <description>Beth de Araújo turns ordinary conversation into something deeply unsettling. Relentless direction and convincing performances make this a difficult, effective watch.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Soft &amp;amp; Quiet&lt;/em&gt; is a hard film to sit through. What makes it disturbing is how ordinary the surroundings are. There is no reassuring distance between the horror and the sort of places people move through every day.&lt;/p&gt;&lt;p&gt;Beth de Araújo keeps the camera close and the action moving, like one long stretch of time. That approach leaves no room for the discomfort to settle. There's no cut to another person's day, and not much chance to step back and collect yourself.&lt;/p&gt;&lt;p&gt;The dialogue is the part that gets under my skin. Grievances are offered casually, people encourage each other, and ugly beliefs find reassurance in the group. The performances make those exchanges feel socially familiar even when what is being said is repellent. Stefanie Estes is especially effective at the contrast between a composed manner and the hostility underneath it.&lt;/p&gt;&lt;p&gt;I appreciated how the direction makes you notice permission being given in small ways: a response, a laugh, a decision to go along. The film understands that a group can make people feel justified rather than responsible. It does not need a speech to make that frightening.&lt;/p&gt;&lt;p&gt;My reservation is how relentless it becomes. At times the escalation feels designed to leave you as distressed as possible, and I wanted a little more depth beyond that pressure. Still, the control of the performances and the camera makes the experience difficult to dismiss.&lt;/p&gt;&lt;p&gt;8/10. Disturbing, tightly directed, and very effective at finding horror in familiar behaviour. I would go in without reading the plot; the performances and the growing unease are enough to know about beforehand.&lt;/p&gt;&lt;p class="specs-note"&gt;Written and directed by Beth de Araújo · 2022 · English. &lt;a href="https://www.americancinematheque.com/series/beth-de-araujos-soft-quiet-limited-engagement/"&gt;Film details&lt;/a&gt; · &lt;a href="https://en.wikipedia.org/wiki/Soft_%26_Quiet"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Beth de Araújo turns ordinary conversation into something deeply unsettling. Relentless direction and convincing performances make this a difficult, effective watch.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Hunt — when people stop listening</title>
      <link>https://deslypeter.com/writing/the-hunt-review</link>
      <guid>https://deslypeter.com/writing/the-hunt-review.html?lang=en</guid>
      <description>Mads Mikkelsen is brilliant as a teacher facing a false accusation. A painful drama about how quickly a community can become certain.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Mads Mikkelsen is the reason &lt;em&gt;The Hunt&lt;/em&gt; works so well for me. He plays Lucas, a kindergarten teacher falsely accused of abuse, with a restraint that makes the situation more painful. You can see him trying to remain recognisable to people who have already decided who he is.&lt;/p&gt;&lt;p&gt;Thomas Vinterberg sets up the small town as familiar and safe before turning it hostile. The people know each other, share routines, and feel at home in their usual places. Once that comfort is gone, even simple interactions become tense. The direction doesn't need fancy tricks to show the growing hostility.&lt;/p&gt;&lt;p&gt;The conversations are especially frustrating in a convincing way. People ask questions while already seeming to know the answer they want. Concern becomes certainty, and listening becomes something they think they have already done. The film makes that process feel frighteningly easy.&lt;/p&gt;&lt;p&gt;Mikkelsen keeps the character human through it. There is hurt, confusion, and anger, without every scene becoming a display of suffering. Some of the escalation feels heavily arranged to put him under maximum pressure, but his performance keeps bringing it back to an individual person.&lt;/p&gt;&lt;p&gt;8/10. A tough film with a standout lead performance. What stuck with me was how fast people you know can become people you can't reach.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Thomas Vinterberg · 2012 · Danish. &lt;a href="https://www.magpictures.com/thehunt/"&gt;Film details&lt;/a&gt; · &lt;a href="https://en.wikipedia.org/wiki/The_Hunt_(2012_film)"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Mads Mikkelsen is brilliant as a teacher facing a false accusation. A painful drama about how quickly a community can become certain.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Children of Men — nowhere to stand still</title>
      <link>https://deslypeter.com/writing/children-of-men-review</link>
      <guid>https://deslypeter.com/writing/children-of-men-review.html?lang=en</guid>
      <description>A worn-out man, a pregnancy in an infertile world, and some remarkable long takes. The direction makes the danger feel immediate.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The world of &lt;em&gt;Children of Men&lt;/em&gt; looks exhausted. No babies have been born for eighteen years, and the loss of a future is visible in the way people move through the present. The film gives you that feeling through streets, broadcasts, and background detail rather than a long explanation.&lt;/p&gt;&lt;p&gt;Clive Owen plays Theo well — a man who seems worn out before the story even starts. Protecting a pregnant woman gives him a purpose, but he doesn’t suddenly turn into a smooth action hero. His hesitation and awkwardness help keep the danger real.&lt;/p&gt;&lt;p&gt;The long takes are the standout. Alfonso Cuarón lets movement and action build within a shot, so you have time to register the surroundings and then realise how exposed everyone is. They look astonishing, but their strongest effect is making it feel as though there is no convenient break from what is happening.&lt;/p&gt;&lt;p&gt;I didn’t connect with some of the supporting characters as much. The film’s energy is so strong that a few relationships feel rushed, and the symbolism can feel a bit heavy-handed. I liked the filmmaking more than I engaged with the full story.&lt;/p&gt;&lt;p&gt;7/10. Worth seeing for the atmosphere, Owen’s worn-out performance, and those amazing long takes that feel like they’re unfolding in real time.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Alfonso Cuarón · 2006 · English. &lt;a href="https://en.wikipedia.org/wiki/Children_of_Men"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2006/children_of_men.html"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;A worn-out man, a pregnancy in an infertile world, and some remarkable long takes. The direction makes the danger feel immediate.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Gattaca — more than a test result</title>
      <link>https://deslypeter.com/writing/gattaca-review</link>
      <guid>https://deslypeter.com/writing/gattaca-review.html?lang=en</guid>
      <description>A thoughtful science-fiction premise about genetic privilege and ambition. Its quiet style suits a man trying to pass every inspection.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The idea behind &lt;em&gt;Gattaca&lt;/em&gt; is what drew me in: a society can measure your genes and mistake that information for the whole of your potential. Vincent, born without genetic selection, takes another man’s identity to pursue his ambition of going to space. Even a routine check can threaten everything.&lt;/p&gt;&lt;p&gt;Andrew Niccol creates a clean, controlled look for the world. The buildings, clothes, and daily routines suggest people are expected to fit into a system that’s already decided their place. The restraint fits a story where being noticed can be dangerous.&lt;/p&gt;&lt;p&gt;Ethan Hawke gives Vincent determination without making him constantly announce it. Jude Law adds a more bitter kind of frustration, and their scenes together give the premise some personal weight. The practical effort of maintaining the deception can be more interesting than the larger speeches about ambition.&lt;/p&gt;&lt;p&gt;The dialogue is clear, sometimes too much so. Some lines feel like they’re meant to explain the film’s message, and the investigation isn’t as gripping as the world itself. I wanted more depth in how that society handles contradictions, not just the one example it shows.&lt;/p&gt;&lt;p&gt;7/10. A strong premise, elegant design, and enough emotion to make the questions worth thinking about. I found the quieter moments more effective than the direct statements.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Andrew Niccol · 1997 · English. &lt;a href="https://en.wikipedia.org/wiki/Gattaca"&gt;Film details&lt;/a&gt; · &lt;a href="https://en.wikipedia.org/wiki/Gattaca"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;A thoughtful science-fiction premise about genetic privilege and ambition. Its quiet style suits a man trying to pass every inspection.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Nightcrawler — ambition without a conscience</title>
      <link>https://deslypeter.com/writing/nightcrawler-review</link>
      <guid>https://deslypeter.com/writing/nightcrawler-review.html?lang=en</guid>
      <description>Jake Gyllenhaal makes ambition deeply creepy. A dark, gripping look at a man who turns other people’s worst nights into a business.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Jake Gyllenhaal makes Lou Bloom unsettling before he has done much at all. The attentive stare, the careful politeness, the way he sounds as if he has memorised advice about succeeding: something is wrong even when the words are perfectly reasonable.&lt;/p&gt;&lt;p&gt;In &lt;em&gt;Nightcrawler&lt;/em&gt;, Lou starts filming crime scenes around Los Angeles and selling the footage to television news. Dan Gilroy makes the work feel both grubby and competitive. The city at night looks inviting from a distance, while the business taking place in it is anything but.&lt;/p&gt;&lt;p&gt;The dialogue is the best part for me. Lou talks about opportunity, improvement, and professional relationships with an enthusiasm that makes those phrases feel sinister. Gyllenhaal rarely softens the delivery to make him easier to like. Rene Russo is an excellent match for him, especially when a conversation becomes a negotiation over what someone is willing to accept.&lt;/p&gt;&lt;p&gt;It is dark and gripping, though the point about ambition and the market for suffering becomes clear fairly early. After a while, I wanted the film to complicate that argument more rather than keep demonstrating it. The central performance held my attention even when the idea started to repeat.&lt;/p&gt;&lt;p&gt;7/10. A very strong performance in a sharply observed thriller. Lou’s calm way of speaking is often creepier than the footage he is trying to sell.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Dan Gilroy · 2014 · English. &lt;a href="https://www.universalpicturesathome.com/movies/nightcrawler"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2014/nightcrawler.html"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Jake Gyllenhaal makes ambition deeply creepy. A dark, gripping look at a man who turns other people’s worst nights into a business.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Incendies — the weight of what goes unsaid</title>
      <link>https://deslypeter.com/writing/incendies-review</link>
      <guid>https://deslypeter.com/writing/incendies-review.html?lang=en</guid>
      <description>Patient direction and powerful performances give this family drama its force. A difficult watch that earns most of its emotional weight.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Incendies&lt;/em&gt; gives silence a lot of room. People hesitate before answering, or look as if answering would cost more than they can manage. That restraint drew me in more than any explanation of the family history could have.&lt;/p&gt;&lt;p&gt;Denis Villeneuve moves between a mother’s past and her children’s search with a clear sense of purpose. The changes in time ask for attention, but the film never feels interested in confusing you for the sake of it. There is always a person trying to understand another person underneath the structure.&lt;/p&gt;&lt;p&gt;Lubna Azabal is the strongest reason it works for me. She gives Nawal a stubborn physical presence, even when there is very little dialogue. The performance makes suffering feel specific to a person rather than something included simply to make a scene more serious.&lt;/p&gt;&lt;p&gt;The violence is difficult, and the film can be relentless. Occasionally the story feels too tightly arranged, with its construction more visible than I would like. The quieter scenes are often the ones I trust most: a face, a pause, someone trying to find the next words.&lt;/p&gt;&lt;p&gt;8/10. Controlled direction and an excellent central performance make this worth the emotional effort. I would keep any reading beforehand to a minimum.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Denis Villeneuve · 2010 · French / Arabic. &lt;a href="https://www.sonyclassics.com/incendies/"&gt;Film details&lt;/a&gt; · &lt;a href="https://en.wikipedia.org/wiki/Incendies"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Patient direction and powerful performances give this family drama its force. A difficult watch that earns most of its emotional weight.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Memories of Murder — confidence is not evidence</title>
      <link>https://deslypeter.com/writing/memories-of-murder-review</link>
      <guid>https://deslypeter.com/writing/memories-of-murder-review.html?lang=en</guid>
      <description>Bong Joon-ho finds grim humour in a messy investigation without losing sight of its cruelty. The detectives’ behaviour is as absorbing as the case.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;There is a strange rhythm to &lt;em&gt;Memories of Murder&lt;/em&gt;. A scene can be almost ridiculous, then become deeply unpleasant before you have quite stopped laughing. Bong Joon-ho makes those changes feel like part of the same world.&lt;/p&gt;&lt;p&gt;The detectives keep me watching. They argue, jump to conclusions, and treat authority like a badge of correctness. Song Kang-ho makes confidence look both silly and scary. Kim Sang-kyung’s calmer approach adds real tension to their clashes.&lt;/p&gt;&lt;p&gt;I like how much happens around the investigation. People wander through spaces they should not be in, crowds gather, and the weather makes already difficult work worse. The direction lets you notice the disorder instead of always pointing straight at the next clue.&lt;/p&gt;&lt;p&gt;The dialogue is often blunt, which suits people more comfortable asserting themselves than admitting uncertainty. As the pressure builds, those habits stop being amusing. The film is good at making you question a method you may initially have accepted as part of the genre.&lt;/p&gt;&lt;p&gt;A few parts feel a bit repetitive, but that’s fair — the investigation itself is slow and frustrating. 8/10. It’s funny in awkward moments, well-observed, and much more about flawed people than perfect detectives.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Bong Joon-ho · 2003 · Korean. &lt;a href="https://www.neonrated.com/film/memories-of-murder"&gt;Film details&lt;/a&gt; · &lt;a href="https://en.wikipedia.org/wiki/Memories_of_Murder"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Bong Joon-ho finds grim humour in a messy investigation without losing sight of its cruelty. The detectives’ behaviour is as absorbing as the case.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Predestination — a story worth listening to</title>
      <link>https://deslypeter.com/writing/predestination-review</link>
      <guid>https://deslypeter.com/writing/predestination-review.html?lang=en</guid>
      <description>Sarah Snook gives this intricate science-fiction story a human centre. The performances held me more consistently than the mechanics.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The best stretch of &lt;em&gt;Predestination&lt;/em&gt; is built around someone telling a story and someone else listening. For a film with a complicated science-fiction premise, it is surprisingly willing to sit with a conversation. I liked that confidence.&lt;/p&gt;&lt;p&gt;Sarah Snook makes the story feel real rather than just told. There's hurt and defensiveness in her performance, but also dry humour that stops the character from being all hardship. Ethan Hawke is a good listener in the scene; his restraint helps keep it together.&lt;/p&gt;&lt;p&gt;Michael and Peter Spierig give the different settings a clear visual identity without burying them in futuristic decoration. The scale is fairly contained, which leaves the actors room to carry the film.&lt;/p&gt;&lt;p&gt;My reservation is how much attention the structure eventually demands. Following the connections can become more absorbing than caring about the people making them. Some of the explanation also feels heavier than it needs to be. I admired the design, but did not always feel as involved as I had during the quieter conversation.&lt;/p&gt;&lt;p&gt;7/10. An inventive, well-acted film with a particularly strong performance from Snook. Worth watching with a clear head, and without a plot summary open beside it.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Michael and Peter Spierig · 2014 · English. &lt;a href="https://www.sonypictures.com/movies/predestination"&gt;Film details&lt;/a&gt; · &lt;a href="https://en.wikipedia.org/wiki/Predestination_(film)"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Sarah Snook gives this intricate science-fiction story a human centre. The performances held me more consistently than the mechanics.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Coherence — an ordinary room turns uneasy</title>
      <link>https://deslypeter.com/writing/coherence-review</link>
      <guid>https://deslypeter.com/writing/coherence-review.html?lang=en</guid>
      <description>A dinner-party conversation becomes an effective source of unease. Resourceful and absorbing, though the rough edges sometimes show.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Coherence&lt;/em&gt; gets a lot out of a familiar discomfort: being at a dinner where people have more history with each other than they are saying aloud. Before anything unusual happens, the interruptions and small tensions give the evening a believable awkwardness.&lt;/p&gt;&lt;p&gt;James Ward Byrkit keeps the camera close to that social mess. People talk over each other, miss information, and disagree about what deserves attention. It can feel untidy, but that untidiness helps the uncertainty spread. You are trying to follow the conversation at the same time as the characters.&lt;/p&gt;&lt;p&gt;Emily Baldoni gives the film a useful point of focus. Her watchfulness lets you settle into one person’s experience without making everyone else feel like background. The ordinary rooms and darkness outside do much of the visual work; the film rarely needs anything elaborate to make a space feel wrong.&lt;/p&gt;&lt;p&gt;The roughness is not always a strength. Some of the overlapping dialogue becomes tiring, and there are moments when the group seems to be explaining a problem for the audience rather than speaking naturally. The characters are also unevenly developed, so I cared more about some reactions than others.&lt;/p&gt;&lt;p&gt;7/10. A clever, resourceful thriller whose strongest tool is an uncomfortable conversation. Best given your full attention before anyone explains the premise too thoroughly.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by James Ward Byrkit · 2013 · English. &lt;a href="https://store.oscilloscope.net/products/coherence"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2014/coherence.html"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;A dinner-party conversation becomes an effective source of unease. Resourceful and absorbing, though the rough edges sometimes show.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Se7en — a city with no breathing room</title>
      <link>https://deslypeter.com/writing/se7en-review</link>
      <guid>https://deslypeter.com/writing/se7en-review.html?lang=en</guid>
      <description>A grim atmosphere and two very different detectives make this more than a hunt for clues. Fincher keeps the pressure on.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The rain in &lt;em&gt;Se7en&lt;/em&gt; feels less like weather than something the characters have to carry around. The streets are cramped, the rooms are poorly lit, and even an ordinary day at work looks exhausting. David Fincher builds a place you want to leave almost as soon as you arrive.&lt;/p&gt;&lt;p&gt;The contrast between the two detectives is what keeps me engaged. Morgan Freeman’s Somerset carries the weight of someone who’s seen too much. Brad Pitt’s Mills is all quick reactions and barely contained frustration. Their dialogue works because they don’t seem to want to be friends — not yet.&lt;/p&gt;&lt;p&gt;The direction is meticulous without making the investigation feel clean. You spend time watching people read, wait, and try to make sense of ugly things. The violence is disturbing, but the suggestion of it can be just as effective as what is shown.&lt;/p&gt;&lt;p&gt;At times, the bleakness feels too neatly planned. The film has a message about the world, and you can feel it nudging everyone toward that message. But the performances add enough real-life tension to keep it from feeling forced.&lt;/p&gt;&lt;p&gt;8/10. A tense, tightly controlled thriller where the mood is just as important as the mystery. Best watched without looking up the ending.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by David Fincher · 1995 · English. &lt;a href="https://en.wikipedia.org/wiki/Seven_(1995_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://en.wikipedia.org/wiki/Seven_(1995_film)"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;A grim atmosphere and two very different detectives make this more than a hunt for clues. Fincher keeps the pressure on.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Prestige — the cost of being better</title>
      <link>https://deslypeter.com/writing/the-prestige-review</link>
      <guid>https://deslypeter.com/writing/the-prestige-review.html?lang=en</guid>
      <description>A rivalry that gets more absorbing as it gets less reasonable. The craft is impressive, but the wounded pride makes it work.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The part of &lt;em&gt;The Prestige&lt;/em&gt; I find most convincing is how quickly professional admiration can turn sour. These men care about their work, but being good soon seems less important than making sure the other man is worse off.&lt;/p&gt;&lt;p&gt;Hugh Jackman and Christian Bale play the rivalry with different tones. Jackman has the relaxed confidence of someone who knows how to win a room; Bale is more guarded and rougher. Neither makes obsession look noble. Michael Caine adds a grounded presence to their world, especially when everyone else is getting harder to read.&lt;/p&gt;&lt;p&gt;Christopher Nolan moves between periods and perspectives with confidence. The structure demands your attention, but there's usually an emotional reason to stay curious — something like a slight, a disappointment, or an injured ego can drive a whole scene.&lt;/p&gt;&lt;p&gt;Some of the dialogue about sacrifice feels a bit heavy-handed. I also wanted the women to have more space beyond being shaped by the rivalry. Those limits stand out in a film so focused on the men's ambitions.&lt;/p&gt;&lt;p&gt;8/10. Cleverly constructed and compelling, with enough bitterness underneath the showmanship to give it weight. I would avoid reading any plot breakdown beforehand.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Christopher Nolan · 2006 · English. &lt;a href="https://d23.com/a-to-z/prestige-the-film/"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2006/prestige.html"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;A rivalry that gets more absorbing as it gets less reasonable. The craft is impressive, but the wounded pride makes it work.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Gladiator — spectacle with someone to follow</title>
      <link>https://deslypeter.com/writing/gladiator-review</link>
      <guid>https://deslypeter.com/writing/gladiator-review.html?lang=en</guid>
      <description>Big battles and a direct emotional story, anchored by Russell Crowe. The spectacle works because the central performance stays grounded.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Gladiator&lt;/em&gt; does not need a complicated story to get you involved. It gives you someone to follow, something for him to lose, and a world where power is rarely fair. The scale is enormous, but the emotional pull is fairly direct.&lt;/p&gt;&lt;p&gt;Russell Crowe makes the simple story work. He doesn't turn every scene into a chance for a big speech. The quiet moments show restraint, which makes the louder, public scenes feel more powerful. Joaquin Phoenix brings a different kind of energy — he feels out of place even when he's in charge, and there's a sense of bitterness and need in his performance.&lt;/p&gt;&lt;p&gt;Ridley Scott is good at making spectacle feel physical. The crowds, dust, and noise give the arena scenes a weight that goes beyond the choreography. Hans Zimmer and Lisa Gerrard’s music also supplies a tenderness the fighting alone would never provide.&lt;/p&gt;&lt;p&gt;The film is a bit broad in places. Some characters are clearly drawn, and the emotions are not always subtle. A few action scenes are so fast that I wanted to see what was happening more clearly. But the film's confidence in its basic story keeps it from falling apart.&lt;/p&gt;&lt;p&gt;8/10. A gripping epic with a strong lead performance and a big scale that still makes room for personal loss.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Ridley Scott · 2000 · English. &lt;a href="https://amblin.com/movie/gladiator/"&gt;Film details&lt;/a&gt; · &lt;a href="https://en.wikipedia.org/wiki/Gladiator_(2000_film)"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Big battles and a direct emotional story, anchored by Russell Crowe. The spectacle works because the central performance stays grounded.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Departed — nobody gets to relax</title>
      <link>https://deslypeter.com/writing/the-departed-review</link>
      <guid>https://deslypeter.com/writing/the-departed-review.html?lang=en</guid>
      <description>Fast, abrasive, and full of people watching what they say. The dialogue gives the tension a nasty sense of humour.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;&lt;em&gt;The Departed&lt;/em&gt; makes a phone call feel like a dangerous activity. People are constantly measuring what they can say, whom they can trust, and whether they have already said too much. That pressure is there even when a scene is funny.&lt;/p&gt;&lt;p&gt;The dialogue is a big part of the appeal. William Monahan gives people sharp, defensive voices; an insult can be a joke, a test, or a way of taking control of a room. Mark Wahlberg gets some of the most aggressive material, but the quieter exchanges can be just as hostile.&lt;/p&gt;&lt;p&gt;Leonardo DiCaprio makes anxiety visible without needing to explain it. Matt Damon is good at the opposite sort of tension: trying to appear comfortable while keeping track of everything. Watching those performances against each other gives the film much of its momentum.&lt;/p&gt;&lt;p&gt;Martin Scorsese keeps the cutting and music lively enough that the length rarely feels heavy. Jack Nicholson’s performance is entertaining, though there are moments when its size pulls me out of the otherwise convincing unease. Some of the supporting relationships could also use more space.&lt;/p&gt;&lt;p&gt;8/10. Messy people, excellent tension, and dialogue with real bite. It is at its best when everyone in a room has a reason to lie.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Martin Scorsese · 2006 · English. &lt;a href="https://en.wikipedia.org/wiki/The_Departed"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2006/departed.html"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Fast, abrasive, and full of people watching what they say. The dialogue gives the tension a nasty sense of humour.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Shutter Island — unease in every room</title>
      <link>https://deslypeter.com/writing/shutter-island-review</link>
      <guid>https://deslypeter.com/writing/shutter-island-review.html?lang=en</guid>
      <description>A mystery driven by atmosphere and an increasingly strained central performance. The setting does a lot of the unsettling work.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The setting is the first thing that works in &lt;em&gt;Shutter Island&lt;/em&gt;. The ferry, the gates, the corridors: each new space makes the outside world feel further away. Martin Scorsese gets a lot of tension from the simple act of entering a room.&lt;/p&gt;&lt;p&gt;Leonardo DiCaprio plays Teddy Daniels with a focus that makes even simple questions feel personal. Mark Ruffalo’s quieter approach balances him well. Their back-and-forth gives you something steady to hold on to as the environment grows more tense.&lt;/p&gt;&lt;p&gt;I like the way the direction mixes the practical business of an investigation with images that feel much less stable. The sound and music are forceful, sometimes almost overwhelming, but they fit the sense of someone unable to settle. The film is rarely interested in allowing a neutral moment.&lt;/p&gt;&lt;p&gt;That focus is also where I have a problem. A few scenes push the mood so strongly that the film’s structure becomes obvious, and some dialogue feels like it’s trying too hard to explain things. I found it more engaging when it left a look or an awkward silence hanging without resolution.&lt;/p&gt;&lt;p&gt;8/10. A moody, well-acted mystery that’s easy to get drawn into. Give it your attention and skip the plot summaries.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Martin Scorsese · 2010 · English. &lt;a href="https://www.paramount.com/movies/shutter-island"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2010/shutter_island.html"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;A mystery driven by atmosphere and an increasingly strained central performance. The setting does a lot of the unsettling work.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Prisoners — fear hardening into certainty</title>
      <link>https://deslypeter.com/writing/prisoners-review</link>
      <guid>https://deslypeter.com/writing/prisoners-review.html?lang=en</guid>
      <description>A heavy, patient thriller about desperation and the damage certainty can do. Jackman and Gyllenhaal give it very different kinds of intensity.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Prisoners&lt;/em&gt; is uncomfortable because it gives fear time to turn into something else. A search for missing children becomes a test of what people are willing to believe, and how quickly believing something can become permission to act.&lt;/p&gt;&lt;p&gt;Hugh Jackman is frighteningly forceful here. His anger feels connected to the panic underneath, making the performance harder to dismiss. Jake Gyllenhaal takes a different approach: restrained, watchful, and showing how hard it is to keep that restraint.&lt;/p&gt;&lt;p&gt;Denis Villeneuve does not rush to relieve the pressure. Roger Deakins’s photography makes the grey streets and dim interiors feel lived in rather than merely gloomy. The spaces between conversations are often where the discomfort really builds.&lt;/p&gt;&lt;p&gt;The dialogue works best when people talk past each other. Everyone wants answers, but they are not always asking the same questions. I appreciated that the film makes understanding someone’s desperation very different from accepting their decisions.&lt;/p&gt;&lt;p&gt;It’s a long, punishing watch, and some parts feel more planned than the performances around them. Still, the central conflict is heavy enough to keep those parts from dragging too much.&lt;/p&gt;&lt;p&gt;8/10. Strong performances and patient direction make this difficult to shake off. A thriller that gives its moral discomfort as much attention as its investigation.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Denis Villeneuve · 2013 · English. &lt;a href="https://en.wikipedia.org/wiki/Prisoners_(2013_film)"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2013/prisoners.html"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;A heavy, patient thriller about desperation and the damage certainty can do. Jackman and Gyllenhaal give it very different kinds of intensity.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Django Unchained — conversation under pressure</title>
      <link>https://deslypeter.com/writing/django-unchained-review</link>
      <guid>https://deslypeter.com/writing/django-unchained-review.html?lang=en</guid>
      <description>Big performances, sharp dialogue, and a Western that takes its time before it erupts. Entertaining, brutal, and occasionally overextended.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The conversations are what I enjoy most in &lt;em&gt;Django Unchained&lt;/em&gt;. Quentin Tarantino lets someone speak politely for long enough that the politeness starts to feel threatening. A pause over a table can carry as much tension as a weapon.&lt;/p&gt;&lt;p&gt;Christoph Waltz is especially good at that rhythm. He makes elaborate speech sound effortless, with humour that can change the balance of a scene. Jamie Foxx gives Django a more economical presence, which is a useful counterweight to all the people who enjoy hearing themselves talk.&lt;/p&gt;&lt;p&gt;Leonardo DiCaprio and Samuel L. Jackson make their scenes deeply unpleasant in different ways. The film’s broad style does not soften the cruelty of the world it depicts. The shifts between humour, horror, and exaggerated violence can be jarring; some are very effective, and others left me wanting a little more restraint.&lt;/p&gt;&lt;p&gt;The music and the wide landscapes give it plenty of Western energy. My main issue is the length. A few stretches repeat a point or keep a scene running after its strongest moment, and the momentum becomes uneven.&lt;/p&gt;&lt;p&gt;8/10. The dialogue and performances are the strongest reasons to watch. A tighter version of the film might work better, but the best scenes have enough confidence and tension to earn the time.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Quentin Tarantino · 2012 · English. &lt;a href="https://en.wikipedia.org/wiki/Django_Unchained"&gt;Film details&lt;/a&gt; · &lt;a href="https://www.impawards.com/2012/django_unchained.html"&gt;Poster source&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Big performances, sharp dialogue, and a Western that takes its time before it erupts. Entertaining, brutal, and occasionally overextended.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Perfect Days — finding enough in a day</title>
      <link>https://deslypeter.com/writing/perfect-days-review</link>
      <guid>https://deslypeter.com/writing/perfect-days-review.html?lang=en</guid>
      <description>Wim Wenders makes a daily routine feel worth paying attention to. Quiet, warm, and carried by a lovely performance from Koji Yakusho.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;Not much needs to happen in &lt;em&gt;Perfect Days&lt;/em&gt; for a scene to work. A cassette goes into the player, sunlight falls through some leaves, someone stops for lunch. Written down, that sounds almost too slight. Watching it, the small differences start to matter.&lt;/p&gt;&lt;p&gt;Wim Wenders follows Hirayama, a man who cleans public toilets in Tokyo, with real patience. The routine gives the film its shape, but it never makes him feel like a collection of charming habits. There is a private life behind that calm face, and Koji Yakusho lets us sense it without spelling everything out.&lt;/p&gt;&lt;p&gt;The direction is what I like most here. Wenders knows when to leave a shot alone. He gives an ordinary task enough time to become interesting, and lets a change in expression do work that a speech would only flatten. The music fits that approach too: these are songs someone lives with, rather than songs chosen to tell us what to feel.&lt;/p&gt;&lt;p&gt;It does ask you to settle into its pace. If you keep waiting for a larger plot to take over, a few stretches may feel repetitive. For me, the repetition is mostly what makes the interruptions count.&lt;/p&gt;&lt;p&gt;9/10. A film that made the ordinary feel valuable without pretending life is simple. Yakusho gives it a warmth that never turns sugary.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Wim Wenders · 2023 · Japanese. Film details: &lt;a href="https://www.neonrated.com/film/perfect-days"&gt;NEON&lt;/a&gt;. Poster artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Wim Wenders makes a daily routine feel worth paying attention to. Quiet, warm, and carried by a lovely performance from Koji Yakusho.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Usual Suspects — everyone has a story</title>
      <link>https://deslypeter.com/writing/usual-suspects-review</link>
      <guid>https://deslypeter.com/writing/usual-suspects-review.html?lang=en</guid>
      <description>Sharp dialogue and a slippery crime story. The pleasure is in listening carefully, even when you’re not sure whom to trust.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;&lt;em&gt;The Usual Suspects&lt;/em&gt; throws a lot of names and information at you, but it also gives you people who are fun to listen to. That matters. A complicated crime story gets tiring quickly if its characters only exist to deliver the next clue.&lt;/p&gt;&lt;p&gt;Christopher McQuarrie’s dialogue gives the group plenty of swagger. They interrupt, needle each other, and make confidence sound like a professional skill. Even when a conversation is doing heavy work for the plot, there is usually enough personality in it to keep it moving.&lt;/p&gt;&lt;p&gt;Bryan Singer keeps the storytelling restless, moving between an interrogation and the events being described. The question of how a story gets told becomes as interesting as what supposedly happened. I liked having to decide which details deserved my attention, rather than having every important moment underlined.&lt;/p&gt;&lt;p&gt;There are places where the film seems a little pleased with its own cleverness. Keeping track of the names can also take more effort than getting invested in the people behind them. Still, the performances and the dry humour keep it from becoming just an exercise in plotting.&lt;/p&gt;&lt;p&gt;8/10. Tightly put together, entertaining, and especially good when it lets a conversation become a contest. Go in knowing as little as possible.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Bryan Singer · 1995 · English. Film details: &lt;a href="https://www.bfi.org.uk/film/9d219601-811f-5a27-b1c5-b667c1d2084e/the-usual-suspects"&gt;BFI&lt;/a&gt;. Poster artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Sharp dialogue and a slippery crime story. The pleasure is in listening carefully, even when you’re not sure whom to trust.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>The Boy in the Striped Pyjamas — difficult to sit with</title>
      <link>https://deslypeter.com/writing/boy-in-the-striped-pyjamas-review</link>
      <guid>https://deslypeter.com/writing/boy-in-the-striped-pyjamas-review.html?lang=en</guid>
      <description>The young performances give this drama its emotional force. Powerful as fiction, though its view of history needs care.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;The strongest parts of &lt;em&gt;The Boy in the Striped Pyjamas&lt;/em&gt; are often the simplest conversations. A child asks something directly, and an adult avoids answering it. You can feel the distance between what is being said and what is being understood.&lt;/p&gt;&lt;p&gt;Asa Butterfield plays Bruno with a curiosity that makes their conversations uncomfortable. Jack Scanlon gives Shmuel a quieter presence, and their scenes rely more on awkward attempts to connect than on fancy dialogue. The acting gives the film a human heart.&lt;/p&gt;&lt;p&gt;Mark Herman keeps the telling straightforward. The contrast between the children’s limited understanding and the adults’ behaviour does much of the work. Vera Farmiga is particularly effective in scenes where a reaction tells you more than the words around it.&lt;/p&gt;&lt;p&gt;Some of the writing pushes hard for an emotional response, and the simplified setup has serious limits. &lt;a href="https://holocausteducation.org.uk/research/the-boy-in-the-striped-pyjamas-in-english-secondary-schools/"&gt;UCL’s Centre for Holocaust Education has documented the historical misconceptions associated with the story&lt;/a&gt;. I would treat it as a fictional drama, rather than a reliable picture of camp life.&lt;/p&gt;&lt;p&gt;9/10 for its emotional impact and the performances. A painful watch, keeping in mind the difference between moving fiction and accurate history.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Mark Herman · 2008 · English. Film details: &lt;a href="https://www.miramax.com/movie/the-boy-in-the-striped-pajamas/"&gt;Miramax&lt;/a&gt;. Poster artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;The young performances give this drama its emotional force. Powerful as fiction, though its view of history needs care.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Oldboy — every frame feels deliberate</title>
      <link>https://deslypeter.com/writing/oldboy-review</link>
      <guid>https://deslypeter.com/writing/oldboy-review.html?lang=en</guid>
      <description>Park Chan-wook brings striking control to a brutal story. Visually bold, uncomfortable, and carried by Choi Min-sik.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Oldboy&lt;/em&gt; has an intensity that is there before anyone throws a punch. Rooms feel oppressive, faces are held in the frame just long enough to become uncomfortable, and even a quiet conversation can feel threatening.&lt;/p&gt;&lt;p&gt;Park Chan-wook’s direction is why it works for me. The compositions are precise but not stiff. He can make a space look almost beautiful while still making you want to get out of it. The visual style is striking, but it stays tied to the character’s confusion and anger.&lt;/p&gt;&lt;p&gt;Choi Min-sik gives the film a physical weight. He can be frightening, pathetic, and oddly funny without making those shifts feel like separate performances. The action has that same weight: people get tired, movement gets ugly, and violence feels punishing rather than effortless.&lt;/p&gt;&lt;p&gt;The dialogue has a heightened quality that suits this world, although the film’s push for extremes can be exhausting. There were moments when I admired the control more than I enjoyed being in the scene. That is part of the experience, but also why this is an 8 for me.&lt;/p&gt;&lt;p&gt;8/10. Bold direction and a remarkable central performance. This is the original Korean film from 2003, and it is best approached without reading much about the story.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Park Chan-wook · 2003 · Korean. Film details: &lt;a href="https://player.bfi.org.uk/subscription/film/watch-oldboy-2003-online"&gt;BFI&lt;/a&gt;. Poster artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Park Chan-wook brings striking control to a brutal story. Visually bold, uncomfortable, and carried by Choi Min-sik.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Mr. Nobody — too many possible lives</title>
      <link>https://deslypeter.com/writing/mr-nobody-review</link>
      <guid>https://deslypeter.com/writing/mr-nobody-review.html?lang=en</guid>
      <description>An imaginative film about choices and the lives we might have led. Beautiful in places, though its ideas sometimes crowd out its people.</description>
      <pubDate>Mon, 19 Oct 2026 14:32:01 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-free review.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Mr. Nobody&lt;/em&gt; starts with the sort of question that can eat up an afternoon: what would your life look like if you had made a different choice? Then it refuses to settle for just one alternative.&lt;/p&gt;&lt;p&gt;Jaco Van Dormael moves between possible lives with real visual imagination. A cut, a repeated image, or a change in setting can make two very different paths feel connected. I enjoyed that freedom, especially when the film trusted an image to carry the idea.&lt;/p&gt;&lt;p&gt;The structure is also where it gets in its own way. There are so many possibilities competing for attention that some relationships feel more like examples in an argument than people I have had time to know. Jared Leto gives the film a consistent presence, but the emotional connection comes and goes.&lt;/p&gt;&lt;p&gt;The dialogue is mixed for me. Some exchanges catch the uncertainty of trying to choose a life. Others explain the bigger ideas a little too neatly, when the images have already made the point. I wanted more time inside a few moments and a little less time being told what they might mean.&lt;/p&gt;&lt;p&gt;7/10. Ambitious, sometimes beautiful, and worth watching for its imagination. I liked the questions more consistently than the way it arranged all the answers.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Jaco Van Dormael · 2009 · English. Film details: &lt;a href="https://www.magpictures.com/mrnobody/"&gt;Magnolia Pictures&lt;/a&gt;. Poster artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;An imaginative film about choices and the lives we might have led. Beautiful in places, though its ideas sometimes crowd out its people.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>2001: A Space Odyssey — space to think</title>
      <link>https://deslypeter.com/writing/2001-a-space-odyssey-review</link>
      <guid>https://deslypeter.com/writing/2001-a-space-odyssey-review.html?lang=en</guid>
      <description>Strange, patient, and visually extraordinary. Kubrick makes space feel enormous, while one calm computer voice makes it feel very small.</description>
      <pubDate>Mon, 19 Oct 2026 08:30:57 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-light review.&lt;/p&gt;&lt;p&gt;There is a particular kind of silence in &lt;em&gt;2001: A Space Odyssey&lt;/em&gt;. It gives you enough time to admire the image, then enough time to become uncomfortable inside it. Stanley Kubrick is in no hurry to explain what you are looking at. Sometimes that feels generous. Sometimes it feels like a test.&lt;/p&gt;&lt;p&gt;The film moves from the beginnings of human development towards a future of space travel, machines, and questions that technology cannot neatly answer. That is a large canvas, but its power often comes from something very small: a red light, a breath, a voice responding a little too calmly.&lt;/p&gt;&lt;h2&gt;Images that deserve your attention&lt;/h2&gt;&lt;p&gt;The space sequences have a precision that makes them absorbing even when very little seems to be happening. Movement, geometry, colour, and music do much of the storytelling. The technology has weight and routine around it. Space travel involves waiting, working, and moving carefully through an environment that does not care whether you survive.&lt;/p&gt;&lt;p&gt;That patience is part of the appeal. The film allows an image to become an experience before moving on. Watching while checking a phone would cut away much of what makes it interesting.&lt;/p&gt;&lt;h2&gt;HAL brings the unease closer&lt;/h2&gt;&lt;p&gt;HAL is a brilliant change of scale. The film can contemplate humanity and the universe, then find tension in a conversation between people and a computer. The voice is polite. The environment is controlled. Reassurance starts to sound suspicious.&lt;/p&gt;&lt;p&gt;There is something lasting about that discomfort. Trusting a machine is easy when its decisions agree with yours. The difficult part begins when you cannot understand the reasoning and cannot simply walk away.&lt;/p&gt;&lt;h2&gt;The patience comes with a price&lt;/h2&gt;&lt;p&gt;This is not an easy film to recommend to someone looking for a brisk story. The deliberate pacing can feel heavy, and the emotional distance may make the human characters harder to connect with than the design around them.&lt;/p&gt;&lt;p&gt;The more abstract passages also resist a single tidy explanation. That openness can keep the film alive in your mind, but it can equally leave you feeling that it has asked for a lot without giving enough back. Admiring its craft and struggling with its pace are perfectly compatible reactions.&lt;/p&gt;&lt;h2&gt;Worth watching?&lt;/h2&gt;&lt;p&gt;Yes, especially for its visual imagination and the unease surrounding HAL. Give it a quiet evening and a screen that lets the images breathe. There is no need to solve every moment to appreciate the scale of the attempt.&lt;/p&gt;&lt;p&gt;An 8/10 fits a film with remarkable ambition and a rhythm that asks something of the viewer. It rewards attention more readily than impatience.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Stanley Kubrick. Science fiction · English. Film details and official artwork: &lt;a href="https://www.warnerbros.com/movies/2001-space-odyssey"&gt;Warner Bros.&lt;/a&gt; Artwork © Warner Bros. Entertainment.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Strange, patient, and visually extraordinary. Kubrick makes space feel enormous, while one calm computer voice makes it feel very small.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Three Billboards Outside Ebbing, Missouri — anger with nowhere to go</title>
      <link>https://deslypeter.com/writing/three-billboards-outside-ebbing-missouri-review</link>
      <guid>https://deslypeter.com/writing/three-billboards-outside-ebbing-missouri-review.html?lang=en</guid>
      <description>Grief turns into a public confrontation. Frances McDormand anchors a sharp, uncomfortable drama that makes room for humour without easing the hurt.</description>
      <pubDate>Mon, 19 Oct 2026 08:30:57 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-light review. Discusses grief and violence without revealing the ending.&lt;/p&gt;&lt;p&gt;Three signs beside a road become a way of forcing an entire town to look at something it would rather leave alone. Mildred Hayes wants movement in her daughter&amp;#x27;s unsolved murder case. The billboards are direct, confrontational, and impossible to mistake for a polite request.&lt;/p&gt;&lt;p&gt;That is the starting point of &lt;em&gt;Three Billboards Outside Ebbing, Missouri&lt;/em&gt;. What follows is less interested in laying out clues than in what grief does when it has nowhere useful to go.&lt;/p&gt;&lt;h2&gt;Frances McDormand holds the centre&lt;/h2&gt;&lt;p&gt;McDormand gives Mildred an anger that feels like effort. It takes work to keep fighting everyone, and the performance allows the exhaustion to show without making her suddenly gentle. She can be funny, cruel, and painfully vulnerable without seeming like a different person between scenes.&lt;/p&gt;&lt;p&gt;The character does not need to be pleasant to command attention. Her refusal to let the town settle into its routines gives the film its force. At the same time, her certainty does not make every decision wise or every target fair.&lt;/p&gt;&lt;h2&gt;The humour catches you off guard&lt;/h2&gt;&lt;p&gt;Martin McDonagh's dialogue is often funny, even when it's not the right time to laugh. The jokes come from stubbornness, irritation, and people saying things that make bad situations worse.&lt;/p&gt;&lt;p&gt;It does not remove the grief. If anything, the contrast makes the hurt more visible. A scene can turn sharply because the film lets hostility, affection, and absurdity occupy the same space.&lt;/p&gt;&lt;h2&gt;People are more difficult than positions&lt;/h2&gt;&lt;p&gt;Woody Harrelson and Sam Rockwell give the confrontation different kinds of resistance. The town never becomes a simple arrangement of one person who is right and everyone else who is wrong. That complication keeps the drama moving beyond the original provocation.&lt;/p&gt;&lt;p&gt;The film raises questions about how it handles cruelty, racism, and the chance for change. Feeling someone's pain doesn't undo the harm they do. Some shifts in who you sympathise with might feel earned, others might feel too kind. The film is strongest when it leaves that discomfort in place.&lt;/p&gt;&lt;h2&gt;Why it lands&lt;/h2&gt;&lt;p&gt;The performances give the sharp writing emotional weight. There are moments that could become speeches or symbols, yet the faces and silences keep pulling them back towards people trying to live with something unbearable.&lt;/p&gt;&lt;p&gt;The tonal changes will not work for everyone, and it is worth knowing that the subject matter is distressing. This is not a light comedy with a dramatic premise attached.&lt;/p&gt;&lt;p&gt;A 9/10 rating shows how strong the acting is and how the film makes space for difficult emotions. There's a lot to argue about, which is part of why the drama stays with you after you've seen it.&lt;/p&gt;&lt;p class="specs-note"&gt;Written and directed by Martin McDonagh. Dark comedy / drama · English. Film details and official poster: &lt;a href="https://www.searchlightpictures.com/threebillboardsoutsideebbingmissouri/"&gt;Searchlight Pictures&lt;/a&gt;. Artwork © Searchlight Pictures.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;Grief turns into a public confrontation. Frances McDormand anchors a sharp, uncomfortable drama that makes room for humour without easing the hurt.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>No Country for Old Men — listen to the silence</title>
      <link>https://deslypeter.com/writing/no-country-for-old-men-review</link>
      <guid>https://deslypeter.com/writing/no-country-for-old-men-review.html?lang=en</guid>
      <description>A bag of money, a relentless pursuit, and tension built from tiny sounds. The Coens make danger feel close without giving it an easy explanation.</description>
      <pubDate>Mon, 19 Oct 2026 08:30:57 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-light review. Contains discussion of violence, but no major plot revelations.&lt;/p&gt;&lt;p&gt;A man finds money at a crime scene and decides to take it. Plenty of thrillers could begin there. What makes &lt;em&gt;No Country for Old Men&lt;/em&gt; so unsettling is how quickly the prospect of an escape gives way to the practical business of staying alive.&lt;/p&gt;&lt;p&gt;The danger feels real because it's grounded in physical details. Doors, distances, and the consequences of actions are clear. Small choices carry weight because someone is always watching closely.&lt;/p&gt;&lt;h2&gt;Tension without much fuss&lt;/h2&gt;&lt;p&gt;The Coens understand how long a viewer will stare at a doorway when given a reason to worry about what is behind it. Footsteps, pauses, and the arrangement of a room become enough to hold a scene. The filmmaking trusts you to notice.&lt;/p&gt;&lt;p&gt;Josh Brolin gives Llewelyn Moss a convincing resourcefulness. Watching him think through a problem makes the pursuit more engaging than a series of narrow escapes would be. Competence offers a little hope, without promising safety.&lt;/p&gt;&lt;h2&gt;A frightening kind of calm&lt;/h2&gt;&lt;p&gt;Javier Bardem makes Anton Chigurh unsettling through his calm and patience. His lack of emotion doesn't make him fair. It makes the people facing him work harder to figure out a situation that may not give them much of a chance.&lt;/p&gt;&lt;p&gt;The familiar image of the character can almost obscure how effective the performance is in motion. A pause or an ordinary question can become threatening because he seems so detached from the social habits everyone else relies on.&lt;/p&gt;&lt;h2&gt;The sheriff changes the weight of it&lt;/h2&gt;&lt;p&gt;Tommy Lee Jones gives Sheriff Bell a weariness that adds something beyond the pursuit. His presence asks what it means to keep trying to make sense of violence, especially when the explanations you have lived with start to feel inadequate.&lt;/p&gt;&lt;p&gt;That is where the film&amp;#x27;s title begins to feel heavier. There is a thriller moving forward and a man trying to understand the world around it. The two do not always want the same kind of answer.&lt;/p&gt;&lt;h2&gt;A fair warning about expectations&lt;/h2&gt;&lt;p&gt;The film breaks some of the usual rules of a chase story. If you're expecting every loose thread to be tied up, you might feel left hanging.&lt;/p&gt;&lt;p&gt;That refusal has a purpose, but it does not mean every viewer has to enjoy it. The film&amp;#x27;s control is easier to appreciate if you let the uncertainty be part of the experience.&lt;/p&gt;&lt;h2&gt;The verdict&lt;/h2&gt;&lt;p&gt;9/10. Precise performances, extraordinary command of tension, and a sense of unease that reaches beyond the immediate danger. A film that makes listening feel as important as watching.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Joel and Ethan Coen. Crime thriller · English. Film details and official poster: &lt;a href="https://www.miramax.com/movie/no-country-for-old-men/"&gt;Miramax&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;A bag of money, a relentless pursuit, and tension built from tiny sounds. The Coens make danger feel close without giving it an easy explanation.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Psycho — the unease is in the ordinary</title>
      <link>https://deslypeter.com/writing/psycho-review</link>
      <guid>https://deslypeter.com/writing/psycho-review.html?lang=en</guid>
      <description>A roadside motel, an awkward conversation, and ordinary details that stop feeling ordinary. Hitchcock’s suspense still works beyond its famous reputation.</description>
      <pubDate>Mon, 19 Oct 2026 08:30:57 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-light review of Alfred Hitchcock&amp;#x27;s original film. The major twists are left untouched.&lt;/p&gt;&lt;p&gt;It is difficult to approach &lt;em&gt;Psycho&lt;/em&gt; without bringing something you already know. The title, the music, and the motel have travelled far beyond the film itself. Yet knowing the reputation does not explain away the tension of watching it unfold.&lt;/p&gt;&lt;p&gt;Marion Crane is on the road after taking money that is not hers. An isolated motel offers a place to stop. That simple decision creates a setting where politeness and discomfort begin to overlap.&lt;/p&gt;&lt;h2&gt;An ordinary conversation can do a lot&lt;/h2&gt;&lt;p&gt;Anthony Perkins makes Norman Bates interesting before the film asks you to decide what to make of him. The awkwardness is not played at one obvious volume. There is courtesy, hesitation, and something harder to place.&lt;/p&gt;&lt;p&gt;Janet Leigh gives Marion enough interior life to make the early uncertainty involving. Watching her read a situation matters. Hitchcock allows the viewer to do the same, then makes that act of interpretation increasingly uncomfortable.&lt;/p&gt;&lt;h2&gt;The frame does some of the worrying&lt;/h2&gt;&lt;p&gt;Rooms, windows, and lines of sight feel carefully chosen. The black-and-white photography gives ordinary spaces a severity that suits the story. A house above a motel can become an entire relationship before anyone has explained much.&lt;/p&gt;&lt;p&gt;The editing and music are forceful when they need to be, but quieter moments carry plenty of weight. Suspense comes from where attention is placed and how long it stays there. An image can feel threatening without anything visibly changing inside it.&lt;/p&gt;&lt;h2&gt;More than the famous parts&lt;/h2&gt;&lt;p&gt;The film&amp;#x27;s cultural familiarity can make it seem like a collection of celebrated moments waiting to happen. It works better when treated as a complete experience. The apparently smaller scenes give those moments their context.&lt;/p&gt;&lt;p&gt;There is an uncomfortable intimacy to the viewing position, too. The film repeatedly invites curiosity about people and spaces, then makes that curiosity feel less innocent than it first appeared.&lt;/p&gt;&lt;h2&gt;What shows its age&lt;/h2&gt;&lt;p&gt;Some of the explanation-heavy dialogue feels more tied to its era than the visual storytelling does. The psychological language is best approached as part of the film&amp;#x27;s dramatic construction, rather than treated as a modern account of mental health.&lt;/p&gt;&lt;p&gt;Viewers expecting the pace of a contemporary horror film may also find the setup deliberate. Its strength lies in anticipation and manipulation of attention, rather than a constant supply of shocks.&lt;/p&gt;&lt;h2&gt;The verdict&lt;/h2&gt;&lt;p&gt;8/10. Still an effective piece of suspense, with performances and visual control that deserve attention beyond the familiar references. Avoid plot summaries if you can. Even for a widely discussed film, there is value in letting it choose when to reveal things.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Alfred Hitchcock. Psychological suspense / horror · English. Film details and official poster: &lt;a href="https://www.universalpicturesathome.com/movies/psycho-1960"&gt;Universal Pictures At Home&lt;/a&gt;. Artwork © Universal Studios.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;A roadside motel, an awkward conversation, and ordinary details that stop feeling ordinary. Hitchcock’s suspense still works beyond its famous reputation.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Burning — the doubt stays with you</title>
      <link>https://deslypeter.com/writing/burning-review</link>
      <guid>https://deslypeter.com/writing/burning-review.html?lang=en</guid>
      <description>A quiet Korean mystery shaped by class, desire, and the limits of what can be known. Lee Chang-dong lets suspicion grow in the spaces between events.</description>
      <pubDate>Mon, 19 Oct 2026 08:30:57 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-light review. No explanation of the ending or claims about what the mystery definitively means.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Burning&lt;/em&gt; is very good at making an ordinary detail feel slightly wrong. A conversation, a room, or the absence of something expected can become difficult to forget. The film gives you time to notice, then leaves you uncertain about how much significance to attach to it.&lt;/p&gt;&lt;p&gt;Jongsu reconnects with Haemi, someone he knew earlier in life. When she returns from a trip with the wealthy, self-assured Ben, the relationship between the three becomes increasingly uncomfortable. That is enough of the setup to know before watching.&lt;/p&gt;&lt;h2&gt;The distance between people&lt;/h2&gt;&lt;p&gt;Class is present in the ease with which people occupy their lives. Ben seems comfortable wherever he goes. Jongsu often appears to be working out how to stand, speak, or respond. Their differences do not need a speech to become visible.&lt;/p&gt;&lt;p&gt;The discomfort is also personal. Desire and insecurity make it harder to separate what is observed from what is feared. The film asks you to pay attention to that difference without offering a reliable place outside it.&lt;/p&gt;&lt;h2&gt;Three performances, no easy access&lt;/h2&gt;&lt;p&gt;Yoo Ah-in gives Jongsu a withdrawn quality that makes watching him watch other people part of the experience. Jun Jong-seo brings an openness to Haemi that does not make her fully available to the people trying to understand her.&lt;/p&gt;&lt;p&gt;Steven Yeun makes Ben&amp;#x27;s confidence quietly disconcerting. The performance leaves room for several readings of the same smile or remark. That uncertainty is more effective than making the character announce what you should think of him.&lt;/p&gt;&lt;h2&gt;A slow burn that needs the time&lt;/h2&gt;&lt;p&gt;Lee Chang-dong allows scenes to unfold long enough for their mood to change. The attention to spaces, light, and pauses helps the film build a world where a mystery can take root without turning everything into a clue.&lt;/p&gt;&lt;p&gt;It is a demanding pace. At nearly two and a half hours, the film can feel slow if you are waiting for each scene to advance the plot in an obvious way. Its interest lies partly in the accumulation of feeling, which is not always the same as the accumulation of information.&lt;/p&gt;&lt;h2&gt;Uncertainty is the point of tension&lt;/h2&gt;&lt;p&gt;The temptation is to turn every detail into evidence for one complete explanation. The film is more unsettling when the limits of that evidence remain visible. Suspicion can tell you something about a situation, but it can also tell you something about the person who is suspicious.&lt;/p&gt;&lt;p&gt;That openness will be a strength for some viewers and a frustration for others. Anyone wanting the reassurance of a neatly explained mystery should know that the film has different priorities.&lt;/p&gt;&lt;h2&gt;The verdict&lt;/h2&gt;&lt;p&gt;8/10. Patient, beautifully controlled, and uncomfortable in ways that linger. Best watched when you can give the small details your full attention, with enough room afterwards to disagree about what they mean.&lt;/p&gt;&lt;p class="specs-note"&gt;Directed by Lee Chang-dong. Psychological mystery / drama · Korean · 148 minutes. Film details and official poster: &lt;a href="https://wellgousa.com/films/burning"&gt;Well Go USA&lt;/a&gt;. Artwork © its respective rights holders.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;My verdict&lt;/strong&gt;&lt;p&gt;A quiet Korean mystery shaped by class, desire, and the limits of what can be known. Lee Chang-dong lets suspicion grow in the spaces between events.&lt;/p&gt;&lt;/div&gt;&lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Burn After Reading: everyone has a plan</title>
      <link>https://deslypeter.com/writing/burn-after-reading-review</link>
      <guid>https://deslypeter.com/writing/burn-after-reading-review.html?lang=en</guid>
      <description>Unpredictable, darkly funny, and surprisingly realistic in how people behave. A Coen brothers comedy that earns an 8/10 from me.</description>
      <pubDate>Mon, 19 Oct 2026 08:30:57 +0200</pubDate>
      <category>movies</category>
      <content:encoded>&lt;div class="body"&gt;&lt;p class="specs-note"&gt;Spoiler-light review.&lt;/p&gt;&lt;p&gt;What worked for me was how unpredictable it felt. I liked not knowing where it would go next. And beneath all the absurdity, the people felt realistic: their selfishness, their assumptions, and the way they make a situation worse while believing they have it under control.&lt;/p&gt;&lt;p&gt;Give a room full of people half the facts and complete faith in their own intelligence. Then let them make decisions. That is the engine of &lt;em&gt;Burn After Reading&lt;/em&gt;, and it runs on the kind of confidence that should probably require a licence.&lt;/p&gt;&lt;p&gt;There is a disc. There are two gym employees who think they have found something valuable. And there is an ex-CIA analyst whose life is already coming apart. What follows has the ingredients of an espionage thriller, but very little of the competence.&lt;/p&gt;&lt;h2&gt;A spy film with the wrong people in it&lt;/h2&gt;&lt;p&gt;The joke is not simply that these people are foolish. It is that each one thinks they understand what sort of story they are in. Someone sees an opportunity. Someone else sees a threat. Nobody pauses long enough to check whether the information connecting those ideas means anything.&lt;/p&gt;&lt;p&gt;The film gets a lot of mileage out of that gap. Ordinary wants become elaborate schemes. Small misunderstandings collect consequences. Even when the machinery starts moving in a dangerous direction, the people inside it remain busy with their own concerns.&lt;/p&gt;&lt;h2&gt;The cast is the main attraction&lt;/h2&gt;&lt;p&gt;Brad Pitt plays Chad with an enthusiasm that makes him both ridiculous and oddly endearing. The physical comedy matters as much as the dialogue: the posture, the expressions, the certainty that he is helping. Frances McDormand gives Linda a harder edge. Her determination keeps the story moving, even when a sensible person would have walked away.&lt;/p&gt;&lt;p&gt;George Clooney brings nervous energy to Harry, while John Malkovich makes Osborne&amp;#x27;s irritation feel permanently close to boiling over. Tilda Swinton adds a much colder presence. Put them together and the pleasure comes from watching very different kinds of self-importance collide.&lt;/p&gt;&lt;h2&gt;Funny, until it suddenly isn&amp;#x27;t&lt;/h2&gt;&lt;p&gt;The Coens do not soften the consequences just because the setup is absurd. The humour can turn uncomfortable quickly. That gives the film its bite, but it also means the experience is less cosy than the cast and the comedy label might suggest.&lt;/p&gt;&lt;p&gt;There is no reassuring genius waiting to explain the whole mess. The film&amp;#x27;s distance from its characters is part of the joke. It watches their behaviour closely without offering much comfort when their plans fail.&lt;/p&gt;&lt;h2&gt;What might not work for everyone&lt;/h2&gt;&lt;p&gt;Spending time with this many selfish, misguided people can be tiring. If you need a character to root for, the film makes that difficult. And if you arrive wanting an intricate spy mystery whose pieces fit together satisfyingly, the deliberate waste and confusion may feel frustrating.&lt;/p&gt;&lt;p&gt;Its abrupt turns are another dividing line. For some viewers, they are what make the comedy land. For others, they interrupt the fun. Both reactions make sense: the film is intentionally unsentimental about the people it has persuaded you to watch.&lt;/p&gt;&lt;h2&gt;Worth an evening?&lt;/h2&gt;&lt;p&gt;Yes, for viewers who enjoy dry humour, uncomfortable situations, and a thriller structure being quietly dismantled from within. The cast gives the foolishness enough personality to keep it entertaining, and the film stays focused rather than stretching the premise.&lt;/p&gt;&lt;p&gt;Best approached as a dark comedy about people making a mess, rather than a mystery waiting to be solved. Go in without knowing the big turns. The less you bring with you, the better the surprises work.&lt;/p&gt;&lt;div class="verdict"&gt;&lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;&lt;strong&gt;Unpredictable, with believable human flaws.&lt;/strong&gt;&lt;p&gt;The unpredictable story kept it interesting for me. The situation is absurd, but the way people behave feels realistic. That combination is what makes it work.&lt;/p&gt;&lt;/div&gt;&lt;p class="specs-note"&gt;Directed by Joel and Ethan Coen. English · Dark comedy · 96 minutes. Film details: &lt;a href="https://www.focusfeatures.com/burn_after_reading"&gt;Focus Features&lt;/a&gt;. Poster: &lt;a href="https://www.universalpicturesathome.com/movies/burn-after-reading"&gt;Universal Pictures At Home&lt;/a&gt;, © Focus Features.&lt;/p&gt;
    &lt;p class="sign"&gt;— Desly&lt;/p&gt;&lt;/div&gt;</content:encoded>
    </item>
    <item>
      <title>Goodbye passwords</title>
      <link>https://deslypeter.com/writing/goodbye-passwords</link>
      <guid>https://deslypeter.com/writing/goodbye-passwords.html?lang=en</guid>
      <description>Passkeys are the biggest change to how we log in since the password itself. Here's what they are, why they're safer, and how to start using them today.</description>
      <pubDate>Sun, 18 Oct 2026 19:27:24 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;How many passwords do you have? Be honest. Now, how many of them are actually different?&lt;/p&gt;
&lt;p&gt;Most of us rely on a few favourite passwords, tweaking them slightly — a capital letter here, an exclamation mark there, a year at the end. We know it's bad. We do it anyway, because nobody can remember two hundred random strings of characters.&lt;/p&gt;
&lt;p&gt;Working in DevOps, I see the other side of this too. A huge share of security problems still start with a stolen or guessed password. Not clever hacking, just someone typing the right word into the wrong website.&lt;/p&gt;
&lt;p&gt;Passkeys are the first real fix I've seen for this. And the good news: you can start using them today.&lt;/p&gt;
&lt;h2&gt;What a passkey actually is&lt;/h2&gt;
&lt;p&gt;A passkey replaces your password with something you don't have to remember, and that can't be stolen from the website.&lt;/p&gt;
&lt;p&gt;When you create a passkey for a website, your phone or computer makes a matching pair of digital keys. One is &lt;strong&gt;private&lt;/strong&gt; and never leaves your device. The other is &lt;strong&gt;public&lt;/strong&gt;, and that's all the website stores.&lt;/p&gt;
&lt;p&gt;When you sign in, the website sends a little challenge. Your device answers it with the private key, after you unlock it with your face, fingerprint or PIN. The website checks the answer with the public key. If it matches, you're in.&lt;/p&gt;
&lt;p&gt;No password is typed. No password is sent. No password is stored on the server.&lt;/p&gt;
&lt;blockquote&gt;The website keeps a lock. Only your phone has the key.&lt;/blockquote&gt;
&lt;h2&gt;Why it's so much safer&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Nothing to steal from the website.&lt;/strong&gt; When a company gets hacked and its password database leaks, millions of accounts are suddenly at risk. With passkeys, all the hackers get is public keys. They're useless on their own.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Phishing stops working.&lt;/strong&gt; This is the big one. A fake login page can trick a human into typing a password. It can't trick a passkey, because a passkey is tied to the real website's address. If the site isn't really your bank, your phone simply won't offer the passkey.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nothing to reuse.&lt;/strong&gt; Every passkey is unique to one website. One leak can't unlock the rest of your life.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nothing to forget.&lt;/strong&gt; You unlock your phone dozens of times a day anyway. Signing in feels exactly like that.&lt;/p&gt;
&lt;h2&gt;Who supports them&lt;/h2&gt;
&lt;p&gt;Passkeys are built on a standard from the FIDO Alliance, and Apple, Google and Microsoft all committed to supporting them together. That's rare, and it's why this is actually happening.&lt;/p&gt;
&lt;p&gt;On an iPhone or Mac, passkeys are saved in your Apple account's keychain and sync between your devices. On Android and Chrome, they're saved in Google Password Manager. Windows has them too. Password managers like 1Password and Bitwarden can store them as well, which helps if you use a mix of devices.&lt;/p&gt;
&lt;p&gt;A growing list of big services already let you sign in with one: Google, Apple, Microsoft, Amazon, PayPal, GitHub, WhatsApp and many more. Microsoft has even started making new accounts passwordless by default.&lt;/p&gt;
&lt;h2&gt;How to start (it takes five minutes)&lt;/h2&gt;
&lt;p&gt;Pick the account that matters most. Usually that's your main email, because email is the key that resets everything else.&lt;/p&gt;
&lt;p&gt;Go to the security settings of that account and look for "passkeys" or "sign in with a passkey". Click create, confirm with your face or fingerprint, and you're done. Next time you sign in, your device will offer the passkey instead of asking for a password.&lt;/p&gt;
&lt;p&gt;On a computer that isn't yours, many sites can show a QR code. Scan it with your phone, approve it there, and you're signed in, without typing anything on that computer.&lt;/p&gt;
&lt;h2&gt;The honest downsides&lt;/h2&gt;
&lt;p&gt;It's not perfect yet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Switching ecosystems can be awkward.&lt;/strong&gt; If all your passkeys live in Apple's keychain and you move to Android, moving them over has historically been a pain. The industry is working on a standard way to transfer them, but it's still early.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Not every site supports them.&lt;/strong&gt; Plenty of websites still only take passwords. You'll live in a mixed world for a while.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Losing your devices needs a plan.&lt;/strong&gt; Because passkeys sync through your account, losing one phone is fine. Losing access to your whole Apple or Google account is not. Set up account recovery properly, with a recovery contact or recovery key.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It can be confusing.&lt;/strong&gt; Different sites word it differently, and sometimes they still ask for a password "just in case". It will get smoother.&lt;/p&gt;
&lt;h2&gt;Are passwords really going away?&lt;/h2&gt;
&lt;p&gt;Not overnight. Passwords have been around since the earliest days of computing and they'll stick around for a long time on older sites. But for the accounts that matter most, I think within a few years typing a password will feel as old-fashioned as writing a cheque.&lt;/p&gt;
&lt;p&gt;I've started switching my important accounts over. The first time I signed in with just my face, on a site that used to need a long password and a code from my phone, it honestly felt like cheating.&lt;/p&gt;
&lt;p class="sign"&gt;My take: set up a passkey for your email today. It's the five minutes of security you'll never regret.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>Will AI take my DevOps job?</title>
      <link>https://deslypeter.com/writing/will-ai-take-my-devops-job</link>
      <guid>https://deslypeter.com/writing/will-ai-take-my-devops-job.html?lang=en</guid>
      <description>An honest view from inside: what AI can already do in my world of pipelines, servers and late-night alerts, what it can't, and how the job is changing.</description>
      <pubDate>Sun, 18 Oct 2026 19:27:24 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Every few weeks someone sends me a video with a title like "AI agent replaces entire DevOps team." I watch it, I laugh a little, and then, if I'm honest, I think about it a bit longer than I'd like to admit.&lt;/p&gt;
&lt;p&gt;I'm a DevOps engineer. My job is to make sure software gets built, tested, shipped and kept running. Pipelines, cloud infrastructure, containers, monitoring, and the occasional alert that ruins a quiet evening. So when people say AI will automate everything, my job is supposed to be near the top of the list. Here's what I actually think.&lt;/p&gt;
&lt;h2&gt;What AI is already good at in my world&lt;/h2&gt;
&lt;p&gt;Let's be fair first. AI has become genuinely useful in DevOps, and pretending otherwise would be silly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Writing the boring configuration.&lt;/strong&gt; A pipeline file, a Dockerfile, a Kubernetes manifest, a chunk of Terraform. Things that follow patterns and that I used to copy from old projects or documentation. An AI assistant gets me a solid first draft in seconds.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reading logs faster than any human.&lt;/strong&gt; When something breaks, the answer is usually buried in thousands of lines of logs. AI tools are very good at summarising them, spotting the one error that matters and pointing at the change that probably caused it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Explaining unfamiliar things.&lt;/strong&gt; An old script nobody remembers writing, a tool I haven't used before, a strange error message. Asking an AI to explain it saves a lot of searching.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Doing small fixes on its own.&lt;/strong&gt; The newest tools act more like agents. They can see a failing test, read the logs, guess the cause, write a fix and open a pull request. The picture above isn't science fiction anymore.&lt;/p&gt;
&lt;h2&gt;What it can't do, yet&lt;/h2&gt;
&lt;p&gt;And yet, the hard parts of my job are mostly not typing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Knowing the context.&lt;/strong&gt; Why is this service configured in this strange way? Because three years ago it caused an outage, and the fix was this exact strange setting. That knowledge lives in people's heads, old tickets and half-remembered conversations. AI sees the code. It doesn't see the history.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taking responsibility.&lt;/strong&gt; When production is down and customers are affected, someone has to decide: roll back, or push a fix forward? Wake up the database team, or wait ten minutes? Those calls involve risk, trade-offs and accountability. An AI can suggest. A human has to own it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Being confidently wrong, safely.&lt;/strong&gt; AI writes configuration that looks perfect and is subtly broken. A permission that's far too open. A setting that works in testing and falls over under real traffic. In infrastructure, small mistakes can be very expensive, or very public. Every AI suggestion still needs someone who can tell the difference.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Talking to people.&lt;/strong&gt; A surprising amount of DevOps is conversation: understanding what developers need, agreeing on standards, explaining to a manager why we can't just "turn on the cloud and save money". No model does that for me.&lt;/p&gt;
&lt;blockquote&gt;AI is a very fast junior engineer who never gets tired, and never quite knows when it's wrong.&lt;/blockquote&gt;
&lt;h2&gt;How the job is actually changing&lt;/h2&gt;
&lt;p&gt;I don't think the job is disappearing. I think it's moving up a level.&lt;/p&gt;
&lt;p&gt;Less time writing configuration by hand, more time reviewing it. Less time digging through logs, more time deciding what to do about what the logs say. Less time on repetitive fixes, more time designing systems that don't break in the first place. And a new kind of work: setting up the guardrails that let AI agents help safely. What they're allowed to touch, what needs a human approval, how we test their changes, how we undo them.&lt;/p&gt;
&lt;p&gt;That last part is very DevOps. We've always been the people who build the safety rails for automation. AI is just a new, very powerful kind of automation.&lt;/p&gt;
&lt;h2&gt;And then there's MLOps&lt;/h2&gt;
&lt;p&gt;There's also a funny twist. Someone has to build, deploy and keep the AI systems themselves running. Models need pipelines, monitoring, versioning, rollbacks and on-call too. That's a big part of why I started learning MLOps. If AI is coming into my world, I'd rather understand how it works from the inside than watch it from the outside.&lt;/p&gt;
&lt;h2&gt;What I'd tell someone starting in DevOps today&lt;/h2&gt;
&lt;p&gt;Learn the fundamentals properly, because they're what let you judge AI's output: networking, Linux, how the cloud actually works, security basics. Use AI tools every day and get good at them, the same way earlier generations learned scripting. And practise the human side: writing clearly, explaining trade-offs, staying calm when things break.&lt;/p&gt;
&lt;p&gt;The engineers who struggle won't be the ones replaced by AI. They'll be the ones replaced by engineers who use AI well.&lt;/p&gt;
&lt;h2&gt;So, will AI take my job?&lt;/h2&gt;
&lt;p&gt;Parts of it, yes. The repetitive parts, the copy-and-paste parts, the "read ten thousand log lines" parts. Honestly, I won't miss them.&lt;/p&gt;
&lt;p&gt;The job itself? I think it will look quite different in five years. But someone will still need to understand the whole system, make the hard calls, and be the one who says "no, don't deploy that." For now, that's still me.&lt;/p&gt;
&lt;p class="sign"&gt;My take: AI proposes, humans decide. My job is making sure it stays that way where it matters.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>Proving a photo is real</title>
      <link>https://deslypeter.com/writing/proving-a-photo-is-real</link>
      <guid>https://deslypeter.com/writing/proving-a-photo-is-real.html?lang=en</guid>
      <description>AI can now make a fake photo in seconds. The answer isn't spotting fakes. It's proving which photos are real, and the tech to do that is quietly arriving.</description>
      <pubDate>Sun, 18 Oct 2026 19:27:24 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Remember the picture of the Pope in a huge white puffer jacket? It went everywhere. People shared it, laughed at it, and a lot of them believed it. It was made with an AI image generator. Nobody took that photo, because there was no photo.&lt;/p&gt;
&lt;p&gt;Tools have improved since then. Now you can type a sentence and get an image that looks like it came out of a real camera. Hands are fine now. Text is fine. Light and shadows are convincing.&lt;/p&gt;
&lt;p&gt;As someone who takes photos, this worries me in a specific way. Not that people will make fake images, that was always possible. It's that people will stop believing real ones.&lt;/p&gt;
&lt;h2&gt;Spotting fakes is a losing game&lt;/h2&gt;
&lt;p&gt;For a while, the advice was: look for six fingers, weird earrings, melted text in the background. That advice is already out of date. Every time someone finds a tell, the next model fixes it.&lt;/p&gt;
&lt;p&gt;AI detection tools have the same problem. They guess, they get it wrong, and they will always be one step behind. So the smarter people in this space flipped the question. Instead of asking "is this fake?", ask "can this prove it's real?"&lt;/p&gt;
&lt;blockquote&gt;You can't catch every fake. But you can give real photos a way to prove themselves.&lt;/blockquote&gt;
&lt;h2&gt;Content Credentials, explained simply&lt;/h2&gt;
&lt;p&gt;The idea is called &lt;em&gt;content provenance&lt;/em&gt;, and the most important standard for it comes from a group called the C2PA, the Coalition for Content Provenance and Authenticity. It was started in 2021 by companies including Adobe, Microsoft, Intel, Arm, the BBC and Truepic. The friendly name for what they built is &lt;strong&gt;Content Credentials&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Think of it as a nutrition label for a photo, with a tamper-proof seal.&lt;/p&gt;
&lt;p&gt;When a supported camera takes a picture, it attaches a small record: this image was captured by a camera, at this time, and here is a cryptographic signature to prove it. When you edit the photo in a supported app, the app adds its own entry: exposure changed, cropped, this part was generated with AI. Each step is signed. If anyone changes the image without updating the record, the signature breaks, and anyone checking can see it.&lt;/p&gt;
&lt;p&gt;It doesn't say whether a photo is "true". A real photo can still be misleading. But it tells you where the image came from and what happened to it along the way. That's a lot more than we have now.&lt;/p&gt;
&lt;h2&gt;Who's actually using it&lt;/h2&gt;
&lt;p&gt;This isn't just a white paper anymore. Leica released the first camera with Content Credentials built in, back in 2023. Sony, Nikon and Canon have all started adding support to some of their professional models, mostly aimed at news photographers. Recent phones from Google and Samsung have started adding credentials too, at least to some photos and to images edited with their AI tools.&lt;/p&gt;
&lt;p&gt;On the software side, Adobe's apps can attach credentials when you export, and Adobe's own image generator marks its output as AI-made. OpenAI adds credentials to images made by its generators. Google also uses its own invisible watermark, SynthID, for AI images.&lt;/p&gt;
&lt;p&gt;And you can check an image yourself. There's a free tool at contentcredentials.org/verify. Drop an image in, and if it has credentials, it shows you the history.&lt;/p&gt;
&lt;h2&gt;The catch: credentials are easy to lose&lt;/h2&gt;
&lt;p&gt;Here's the honest problem. Content Credentials live in the file's metadata. Take a screenshot, and they're gone. Upload to many social media sites, and they get stripped when the image is compressed. Send it through a chat app, often the same.&lt;/p&gt;
&lt;p&gt;So right now, a photo without credentials proves nothing. It might be fake, or it might be a perfectly real photo that lost its label on the way. The system only becomes really powerful when the big platforms keep the credentials and show them to you. Some have started: LinkedIn shows a small label on images that carry them, and others show "AI info" tags. It's progress, but slow.&lt;/p&gt;
&lt;p&gt;Invisible watermarks, hidden in the pixels themselves, help with this, because they can survive a screenshot. Combining the two, a signed record plus a watermark that points back to it, is where things seem to be heading.&lt;/p&gt;
&lt;h2&gt;The privacy question&lt;/h2&gt;
&lt;p&gt;There's a tension here that I feel personally. When I put photos on this website, I deliberately remove the location data hidden in the files. Nobody needs to know exactly where I was standing, or where I live.&lt;/p&gt;
&lt;p&gt;A credential that proves a photo is real could, if you're not careful, also reveal who took it and where. The standard lets you choose what to include. You can sign a photo as yours without publishing your GPS location. For a journalist in a dangerous place, that choice matters a lot. For the rest of us, it's worth checking the settings before switching it on.&lt;/p&gt;
&lt;h2&gt;What this means for photographers like me&lt;/h2&gt;
&lt;p&gt;Honestly, my cameras don't support this yet, and neither do the photos on this site. But I think in a few years it will be normal, the way the little padlock in your browser became normal for websites. You won't think about it. You'll just notice when it's missing.&lt;/p&gt;
&lt;p&gt;For news photos, evidence and anything important, I think we'll slowly learn to ask: where did this come from? Does it have credentials? And for everything else, maybe a healthy habit: before you share the shocking picture, take five seconds and wonder whether anyone actually took it.&lt;/p&gt;
&lt;p class="sign"&gt;My take: we can't stop fake photos. But we can make real ones easier to trust.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>Your next car is a computer on wheels</title>
      <link>https://deslypeter.com/writing/your-next-car-is-a-computer-on-wheels</link>
      <guid>https://deslypeter.com/writing/your-next-car-is-a-computer-on-wheels.html?lang=en</guid>
      <description>Cars used to be finished the day they left the factory. Now they get updates, new features and subscriptions. As a car person and a software person, I have mixed feelings.</description>
      <pubDate>Sun, 18 Oct 2026 19:27:24 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;For as long as I can remember, I've been a car person. The sound, the design, the feeling of a good road. I grew up thinking a car was a machine: engine, gearbox, suspension, and a bit of electronics to keep it all running.&lt;/p&gt;
&lt;p&gt;That idea is quietly going out of date. The car you buy next is very likely to be, at its heart, a computer. One that happens to have wheels, seats and a very large battery or fuel tank attached.&lt;/p&gt;
&lt;h2&gt;What "software-defined" actually means&lt;/h2&gt;
&lt;p&gt;The industry calls it the &lt;em&gt;software-defined vehicle&lt;/em&gt;. Behind the buzzword is a real change in how cars are built.&lt;/p&gt;
&lt;p&gt;For decades, every function in a car had its own little computer. One for the windows, one for the airbags, one for the engine, one for the radio. A modern car can have more than a hundred of them, from different suppliers, all talking to each other. It works, but it's messy, and it's very hard to update.&lt;/p&gt;
&lt;p&gt;The new approach is more like how your phone works: a few powerful central computers, with the car split into zones that handle the hardware nearby. The behaviour of the car, from how the screen looks to how the brakes feel, is controlled more and more by software. And that software can change after you buy the car.&lt;/p&gt;
&lt;blockquote&gt;A car used to be at its best on the day you bought it. Now it can get better on your driveway.&lt;/blockquote&gt;
&lt;h2&gt;The good part: cars that improve&lt;/h2&gt;
&lt;p&gt;Tesla made over-the-air updates normal. Your car downloads an update overnight, like a phone, and in the morning it has a new feature or a fix. The famous example is from 2018, when a well-known consumer magazine criticised the Model 3's braking distance. Tesla pushed an update within days, and the braking distance improved. No workshop visit, no recall letter.&lt;/p&gt;
&lt;p&gt;Today almost every manufacturer does some version of this. Maps, the infotainment system, driver assistance, battery management, even the way the car charges can all be improved remotely. Some recalls that once meant a trip to the dealer can now be fixed overnight. As someone who works in DevOps, I love this. It's exactly how good software should be delivered: small, frequent, safe updates.&lt;/p&gt;
&lt;h2&gt;The part that annoys me: paying again for what you own&lt;/h2&gt;
&lt;p&gt;Here's where the car person in me gets angry.&lt;/p&gt;
&lt;p&gt;A few years ago, BMW offered heated seats as a monthly subscription in some countries. The heating elements were already built into the seat. You had paid for the hardware. You just had to keep paying to switch it on. The backlash was so strong that BMW dropped the idea for heated seats in 2023.&lt;/p&gt;
&lt;p&gt;Mercedes offered extra acceleration on some of its electric cars in the US as a yearly subscription. Same motor, same battery. The car simply goes faster once you pay.&lt;/p&gt;
&lt;p&gt;I get why manufacturers do it. Building one version of a car and unlocking features with software is cheaper. But if the hardware is in my car and I paid for my car, it feels wrong to rent it back. Optional services like live traffic or streaming are one thing. Locking the seat heater in a German winter is another.&lt;/p&gt;
&lt;h2&gt;When software goes wrong&lt;/h2&gt;
&lt;p&gt;Software makes cars better, but it also brings software problems.&lt;/p&gt;
&lt;p&gt;Volkswagen's early ID.3 electric cars had missing features that were promised later through updates. Reviews focused more on bugs and slow screens than on driving. VW fixed much of it over time, but it showed that building good software is a very different skill from building good cars.&lt;/p&gt;
&lt;p&gt;Then there's security. In 2015, two security researchers showed they could take control of a Jeep Cherokee remotely, over the internet, while a journalist was driving it on a highway. Chrysler recalled 1.4 million vehicles to fix it. A car that's always connected is a car that has to be defended like any other computer on the internet.&lt;/p&gt;
&lt;h2&gt;Your car knows a lot about you&lt;/h2&gt;
&lt;p&gt;This is the part people think about least. A connected car knows where you go, when, how fast, how hard you brake, and often which phone is connected and who you call. Some cars have cameras inside watching the driver.&lt;/p&gt;
&lt;p&gt;When the Mozilla Foundation reviewed car brands for privacy in 2023, it called cars the worst product category it had ever looked at. Phones and smart speakers did better. Most of us read the privacy settings on our phones. Almost nobody reads them in their car.&lt;/p&gt;
&lt;h2&gt;What I'd look for in my next car&lt;/h2&gt;
&lt;p&gt;After reading way too much about this, here's my personal checklist:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Proper over-the-air updates&lt;/strong&gt; for the whole car, not just the maps. And a track record of the manufacturer actually delivering them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No subscriptions for hardware I already paid for.&lt;/strong&gt; Services, fine. Seat heating, no.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Physical buttons&lt;/strong&gt; for the things you use while driving. Climate, volume, hazard lights. I like screens, but not for everything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clear privacy settings&lt;/strong&gt; I can understand and actually switch off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Phone integration that works&lt;/strong&gt;, because for many of us, our phone's software is still better than the car's.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Where this is going&lt;/h2&gt;
&lt;p&gt;I don't think we're going back. Cars will keep becoming more like computers, and in many ways that's great: safer, smarter, and better for longer. The manufacturers that get the software right will win. The ones that treat software as a way to charge us again for the same metal will, I hope, lose.&lt;/p&gt;
&lt;p&gt;The engine sound may be fading. But the car person in me is still excited. It's just that now, I also care about the release notes.&lt;/p&gt;
&lt;p class="sign"&gt;My take: buy the car for how it drives, but check how it updates.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>What if the internet is already dead?</title>
      <link>https://deslypeter.com/writing/what-if-dead-internet</link>
      <guid>https://deslypeter.com/writing/what-if-dead-internet.html?lang=en</guid>
      <description>The theory says most of what you see online is bots talking to bots. A few years ago it sounded paranoid. Now it sounds a little too familiar.</description>
      <pubDate>Sun, 18 Oct 2026 19:27:24 +0200</pubDate>
      <category>whatif</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Scroll through the comments under any viral post. "So true!" "This is amazing 🔥" "Who else is watching this at 3 a.m.?" A profile picture that's a little too perfect, a username with eight random numbers at the end, and a bio that says nothing at all.&lt;/p&gt;
&lt;p&gt;At some point you start wondering: is anyone actually here?&lt;/p&gt;
&lt;p&gt;That feeling has a name. The Dead Internet Theory.&lt;/p&gt;
&lt;h2&gt;Where it came from&lt;/h2&gt;
&lt;p&gt;The theory took shape in 2021, in a long post on a small online forum. The author argued that the internet "died" somewhere around 2016 or 2017. Since then, they claimed, most of the content and activity online has been generated by bots and algorithms, with real humans a shrinking minority. The darker version says it's deliberate: governments and corporations filling the internet with fake activity to shape what we think and buy.&lt;/p&gt;
&lt;p&gt;The Atlantic wrote about it later that year, under a headline that asked whether the internet had died five years earlier and we'd simply missed it. It was presented as a strange, slightly ridiculous idea. Fun to read about. Obviously not true.&lt;/p&gt;
&lt;blockquote&gt;The theory started as paranoia. Then the bots got better at writing.&lt;/blockquote&gt;
&lt;h2&gt;Why it suddenly feels less crazy&lt;/h2&gt;
&lt;p&gt;Then generative AI arrived. And a lot of things the theory predicted started showing up in plain sight.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The bot traffic is real.&lt;/strong&gt; Imperva, a security company, releases an annual report on website visitors. For years, bots have accounted for nearly half of all web traffic. In their latest reports, automated traffic now outnumbers human traffic.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI content is everywhere.&lt;/strong&gt; In 2024, Facebook feeds were full of strange AI-generated images, like "Shrimp Jesus"—a picture of Jesus made of shrimp. Thousands of comments said "Amen". Many of those comments looked automated too. Bots posting for bots, with algorithms encouraging them, because engagement is engagement.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Even the people building it noticed.&lt;/strong&gt; Sam Altman, CEO of OpenAI, joked online that he never took the dead internet theory seriously. But he added that there seem to be a lot of AI-run accounts around now. When the person behind ChatGPT says that, you pay attention.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Search results feel emptier.&lt;/strong&gt; Look up a product review and you'll often find pages that read like they were written by nobody, for nobody, mostly to sell you something. That's because many of them were.&lt;/p&gt;
&lt;h2&gt;Where the theory goes too far&lt;/h2&gt;
&lt;p&gt;Here's where I get off the train.&lt;/p&gt;
&lt;p&gt;The internet clearly isn't dead. Real people are still here: arguing in group chats, posting holiday photos, writing long angry reviews, building websites like this one. I still get comments from people I can actually talk back to. Bots are many, but they're mostly noise. They don't replace us.&lt;/p&gt;
&lt;p&gt;The "secret plan" idea doesn't hold up. There's no proof of a single coordinated conspiracy. What there is, is something more boring and in some ways worse: lots of separate actors—spammers, scammers, marketers, propaganda farms, and platforms hungry for engagement—all with a motive to create fake activity. No one needs to plan it. The money does the planning.&lt;/p&gt;
&lt;h2&gt;How I deal with it&lt;/h2&gt;
&lt;p&gt;I've started treating the internet a bit like a busy city. Most of the noise isn't meant for me. I look for signs of a real person: someone who has a history, a face, a point of view, who replies like a human, makes typos, disagrees sometimes.&lt;/p&gt;
&lt;p&gt;I follow people, not feeds. I pay more attention to small communities where everyone knows everyone. And I've accepted that the "comment section" is, more and more, a performance by machines for an algorithm.&lt;/p&gt;
&lt;p&gt;The funny thing is, that makes real human corners of the internet feel more valuable. Like this one, I hope.&lt;/p&gt;
&lt;p class="sign"&gt;Verdict: not dead, but crowded with bots. The internet's still alive, just harder to hear over the machines.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>What if my phone is slowing down on purpose?</title>
      <link>https://deslypeter.com/writing/what-if-phone-slowing-down</link>
      <guid>https://deslypeter.com/writing/what-if-phone-slowing-down.html?lang=en</guid>
      <description>Every phone gets slower after a new model comes out. Coincidence, or a plan to make you upgrade? The answer is more interesting, and partly true.</description>
      <pubDate>Sun, 18 Oct 2026 19:27:24 +0200</pubDate>
      <category>whatif</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;You know the feeling. Your phone was fast. Then, around the time the shiny new model launches, apps start taking a second longer to open. The keyboard lags. The battery gives up before dinner. And a small voice says: they're doing this on purpose.&lt;/p&gt;
&lt;p&gt;The theory is called &lt;em&gt;planned obsolescence&lt;/em&gt;, the idea that companies design products to fail or slow down so you'll buy new ones. This one has some real history behind it, unlike most theories in this section.&lt;/p&gt;
&lt;h2&gt;It has happened before&lt;/h2&gt;
&lt;p&gt;In the 1920s, the world's biggest light bulb makers formed a group known as the Phoebus cartel. They agreed to limit bulb life to about 1,000 hours, and fined members whose bulbs lasted too long. It's one of the clearest documented cases of a whole industry making products worse on purpose.&lt;/p&gt;
&lt;p&gt;So the idea isn't crazy. The question is whether it's happening in your pocket.&lt;/p&gt;
&lt;h2&gt;Then came "batterygate"&lt;/h2&gt;
&lt;p&gt;In 2017, users noticed that some older iPhones got dramatically faster after a battery replacement. A developer at Geekbench, a popular performance-testing app, looked at the data and found a clear pattern: iPhones with worn batteries were running slower.&lt;/p&gt;
&lt;p&gt;Apple confirmed it. An iOS update had added a feature that slowed down iPhones with ageing batteries. Apple's explanation was that old batteries can't always deliver enough power at peak demand, which was causing some phones to shut down unexpectedly. Slowing the processor prevented the shutdowns.&lt;/p&gt;
&lt;blockquote&gt;The slowdown was real. Not telling anyone was the real mistake.&lt;/blockquote&gt;
&lt;p&gt;That explanation is technically reasonable. The problem was that Apple didn't tell anyone. People thought their phones were simply getting old and bought new ones, when a cheaper battery would have fixed it.&lt;/p&gt;
&lt;p&gt;The fallout was huge. Apple apologised and cut the price of battery replacements. It added a Battery Health screen to iOS so you can see your battery's condition and whether the phone is being slowed down. It paid hundreds of millions of dollars to settle lawsuits in the US, and France fined it 25 million euros. In Italy, regulators fined both Apple and Samsung over software updates that hurt older phones' performance.&lt;/p&gt;
&lt;h2&gt;So is my phone slowing down on purpose?&lt;/h2&gt;
&lt;p&gt;Probably not in the way the theory says. There's no good evidence that phones secretly get a "slow down now" signal when a new model launches. But several real things make phones feel slower over time, and they tend to happen together:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The battery ages.&lt;/strong&gt; Lithium batteries lose capacity with every charge cycle. A worn battery means shorter life, and on some phones, managed performance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apps get heavier.&lt;/strong&gt; Apps are built for the newest phones. Each update adds features, animations and, yes, more tracking. Your old processor has to work harder to do the same thing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New software is built for new hardware.&lt;/strong&gt; A big yearly update is designed for this year's phone first. Older models run it, but not always gracefully.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage fills up.&lt;/strong&gt; A nearly full phone has less room to breathe, and things slow down.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Our expectations change.&lt;/strong&gt; Try a friend's brand-new phone for five minutes, and your own suddenly feels sluggish. Nothing changed except what you compared it to.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The good news: the rules are changing&lt;/h2&gt;
&lt;p&gt;The batterygate scandal helped push governments to act. In the EU, new rules now require phones to have batteries that keep most of their capacity for hundreds of charge cycles, make spare parts available for years, and keep getting software updates for years after a model stops being sold. Right-to-repair is slowly becoming the law, not just a slogan.&lt;/p&gt;
&lt;h2&gt;What I do&lt;/h2&gt;
&lt;p&gt;When a phone starts feeling slow, before I think about upgrading, I check the battery health first. If it's worn, a new battery is far cheaper than a new phone and often feels like getting a new phone. Then I clear out storage and delete apps I don't use. Most of the time, that's enough to buy another year or two.&lt;/p&gt;
&lt;p&gt;And when I do upgrade, I try to make it because the new phone does something I actually want, not because the old one has been made to feel tired.&lt;/p&gt;
&lt;p class="sign"&gt;Verdict: partly true. It has happened, it got caught, and it got fined. But most slowdowns are batteries, bloat and time, not a secret plan.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>What if Area 51 is hiding aliens?</title>
      <link>https://deslypeter.com/writing/what-if-area-51-aliens</link>
      <guid>https://deslypeter.com/writing/what-if-area-51-aliens.html?lang=en</guid>
      <description>A secret base in the desert, a crashed "flying disc", and governments now holding real hearings about UFOs. What's actually going on out there?</description>
      <pubDate>Sun, 18 Oct 2026 19:27:24 +0200</pubDate>
      <category>whatif</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;There's a sign at the edge of a desert in Nevada that, as a photographer, I find almost personally offensive. It says, more or less: restricted area, use of deadly force authorised, and photography prohibited.&lt;/p&gt;
&lt;p&gt;Behind that sign is Area 51, probably the most famous secret base in the world. For over seventy years, people have believed that what's hidden there isn't just secret planes. They think it's alien spacecraft, maybe even the aliens themselves.&lt;/p&gt;
&lt;h2&gt;The base that didn't exist&lt;/h2&gt;
&lt;p&gt;Part of what makes Area 51 so fascinating is that, for decades, the US government wouldn't even admit it was there. It didn't appear on official maps. Pilots were told to avoid the airspace. Workers flew in from Las Vegas on unmarked planes and weren't allowed to talk about their jobs.&lt;/p&gt;
&lt;p&gt;The CIA only officially acknowledged the base in 2013, when declassified documents about the U-2 spy plane were released. If you want to grow a conspiracy theory, there's no better soil than a government pretending something doesn't exist.&lt;/p&gt;
&lt;h2&gt;Roswell: where the alien story starts&lt;/h2&gt;
&lt;p&gt;In 1947, a rancher near Roswell, New Mexico found strange debris on his land: rubber, foil, sticks and tape. The local army airfield put out a press release saying it had recovered a "flying disc". The next day, it corrected the story: it was a weather balloon.&lt;/p&gt;
&lt;p&gt;That correction, of course, was exactly what a cover-up would look like. Decades later, the Roswell story grew into crashed saucers, alien bodies and autopsies, and the bodies were said to have been taken to, you guessed it, Area 51.&lt;/p&gt;
&lt;p&gt;In the 1990s, the US Air Force released reports explaining that the debris came from Project Mogul, a top-secret programme using high-altitude balloons to listen for Soviet nuclear tests. The "alien bodies", they said, were most likely memories of crash-test dummies dropped from balloons in later years, mixed up over time. It fits the rubber, foil and sticks pretty well.&lt;/p&gt;
&lt;blockquote&gt;The truth is out there. It just might be a balloon.&lt;/blockquote&gt;
&lt;h2&gt;The real secret: spy planes&lt;/h2&gt;
&lt;p&gt;Here's the part I find most convincing. Area 51 was built in 1955 to test the U-2, a spy plane designed to fly far higher than any airliner of the time. Later came the A-12, the even faster ancestor of the SR-71 Blackbird, and the stealth prototypes that became the F-117, which looked like nothing anyone had seen before.&lt;/p&gt;
&lt;p&gt;A CIA history published in the 1990s admitted something remarkable: many UFO sightings in the 1950s and 60s were actually these secret planes. A silver aircraft glinting in the sun at 60,000 feet, where people thought nothing could fly, looks a lot like a UFO. And the government was happy to let people believe in aliens rather than reveal its spy programmes.&lt;/p&gt;
&lt;p&gt;So, in a way, the theory is right. Area 51 really was hiding strange flying objects. They were just ours.&lt;/p&gt;
&lt;h2&gt;But then the Pentagon started talking about UFOs&lt;/h2&gt;
&lt;p&gt;This is where it gets interesting again. In 2017, the New York Times revealed a secret Pentagon programme that had been studying UFOs. In 2020, the US Navy officially released videos taken by fighter pilots, showing objects that seemed to move in impossible ways. UFOs got a new official name: UAPs, unidentified anomalous phenomena.&lt;/p&gt;
&lt;p&gt;In 2023, a former intelligence officer told the US Congress under oath that the government had recovered crafts and "non-human biologics". It was headline news around the world.&lt;/p&gt;
&lt;p&gt;But in 2024, the Pentagon's own UFO office published a review of decades of records and said it found no evidence of alien technology, or of any secret recovery programme. Most cases, when there's enough data, turn out to be balloons, drones, birds, satellites, or sensor glitches. Some remain unexplained, mainly because the data is poor, not because it's alien.&lt;/p&gt;
&lt;h2&gt;Why we want it to be true&lt;/h2&gt;
&lt;p&gt;I think the Area 51 legend survives because it combines two things people believe deeply: that we're not alone in the universe, and that governments don't tell us everything. The second one is definitely true. The first one might be.&lt;/p&gt;
&lt;p&gt;And honestly, I'd love it to be real. Who wouldn't want proof that we're not alone? But wanting something to be true is exactly when you need to be most careful.&lt;/p&gt;
&lt;p&gt;In 2019, a joke Facebook event called "Storm Area 51, They Can't Stop All of Us" got millions of people clicking "going". On the day, only a small crowd showed up in the desert, mostly for the festivals and the photos. Which, honestly, is the most human response to a conspiracy theory I can imagine.&lt;/p&gt;
&lt;p class="sign"&gt;Verdict: a real secret base, real secret aircraft, and very real cover-ups. Aliens? No evidence yet. But I'll keep watching the sky.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>What if aliens built the pyramids?</title>
      <link>https://deslypeter.com/writing/what-if-aliens-built-the-pyramids</link>
      <guid>https://deslypeter.com/writing/what-if-aliens-built-the-pyramids.html?lang=en</guid>
      <description>Millions of stone blocks, perfect angles, and no cranes. Ancient astronauts make a great TV show. The real story is better.</description>
      <pubDate>Sun, 18 Oct 2026 19:27:24 +0200</pubDate>
      <category>whatif</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;When I visited the little church of St. Bartholomä at Königssee, under the Alps, I remember standing there wondering how people got all that stone to a lake shore you can really only reach by boat. Hundreds of years ago. No trucks, no cranes, no power tools.&lt;/p&gt;
&lt;p&gt;Now imagine that feeling multiplied by a few thousand, and you get the Great Pyramid of Giza.&lt;/p&gt;
&lt;p&gt;It was built around 4,500 years ago for the pharaoh Khufu. It's made of roughly 2.3 million stone blocks, some weighing many tonnes. It was originally about 146 metres tall, and for nearly four thousand years it was the tallest building humans had ever made. It's aligned to the compass points with astonishing accuracy.&lt;/p&gt;
&lt;p&gt;So it's not surprising that some people look at it and think: humans couldn't have done that.&lt;/p&gt;
&lt;h2&gt;Where the alien idea comes from&lt;/h2&gt;
&lt;p&gt;The "ancient astronauts" theory became famous in 1968 with a book by Erich von Däniken called &lt;em&gt;Chariots of the Gods?&lt;/em&gt;. He argued that many ancient wonders, from the pyramids to Stonehenge to the Nazca lines in Peru, were built with help from visitors from space, who early humans then remembered as gods.&lt;/p&gt;
&lt;p&gt;The book sold millions of copies. Decades later, a TV series called &lt;em&gt;Ancient Aliens&lt;/em&gt; turned the idea into a long-running show, complete with dramatic music, and gave the internet a famous meme: "I'm not saying it was aliens... but it was aliens."&lt;/p&gt;
&lt;blockquote&gt;The question isn't whether humans could build the pyramids. It's why we find it so hard to believe they did.&lt;/blockquote&gt;
&lt;h2&gt;What the evidence actually shows&lt;/h2&gt;
&lt;p&gt;Here's what I find fascinating. We don't just have the pyramids. We have a surprising amount of evidence about the people who built them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The workers' town.&lt;/strong&gt; Near the pyramids, archaeologists found the remains of a town where the builders lived: bakeries, breweries, sleeping quarters, and enough animal bones to show the workers were well fed with meat. Not slaves in chains, as old movies showed, but organised crews of labourers, many of them likely farmers working in rotation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The workers' tombs.&lt;/strong&gt; Right next to the pyramids are the graves of the builders themselves, buried with honour near their king. Some skeletons show healed injuries and signs of medical care.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Their graffiti.&lt;/strong&gt; Inside the pyramids, in places nobody was supposed to see, work gangs painted their team names. Names like "Friends of Khufu". It's ancient office banter.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A logbook.&lt;/strong&gt; In 2013, archaeologists found the oldest known inscribed papyri, at a harbour on the Red Sea coast. Among them was the diary of an official called Merer, who describes his team transporting limestone blocks by boat along the Nile to Giza, for the Great Pyramid. It's literally a work diary from the construction project.&lt;/p&gt;
&lt;h2&gt;How they moved the stones&lt;/h2&gt;
&lt;p&gt;The Egyptians moved huge blocks on wooden sledges. An ancient tomb painting shows a giant statue being dragged on a sledge while a man pours water onto the sand in front of it. In 2014, physicists tested this and found that wetting the sand to the right amount roughly halves the friction. It's a simple, clever trick, and it works.&lt;/p&gt;
&lt;p&gt;And they had the Nile. A study in 2024 found evidence of an ancient, now-dried branch of the river that once flowed close to the pyramid sites. Boats could bring stone almost to the building site.&lt;/p&gt;
&lt;p&gt;Ramps, levers, sledges, boats, an enormous, well-organised workforce, and about twenty years. No spaceships needed.&lt;/p&gt;
&lt;h2&gt;The best evidence: they got it wrong first&lt;/h2&gt;
&lt;p&gt;This is my favourite part. The Egyptians didn't get pyramids right the first time.&lt;/p&gt;
&lt;p&gt;The earliest one, the Step Pyramid of Djoser, is basically a stack of flat platforms. A later attempt at Meidum seems to have partially collapsed. Then came the Bent Pyramid, which changes angle halfway up, almost certainly because the builders realised the original slope was too steep and unstable. Only after that did they build the Red Pyramid, and then the Great Pyramid.&lt;/p&gt;
&lt;p&gt;That's not what you'd expect from aliens with advanced technology. That's what you'd expect from humans learning by trial and error, over generations. It's engineering. It's beautiful.&lt;/p&gt;
&lt;h2&gt;Why the theory bothers me a little&lt;/h2&gt;
&lt;p&gt;It's worth noticing which ancient wonders get credited to aliens. It's usually the pyramids of Egypt, the cities of the Americas, the monuments of Africa and Asia. Rarely anything built in Europe.&lt;/p&gt;
&lt;p&gt;Many Egyptians find the alien theory insulting, and I understand why. It quietly takes away one of humanity's greatest achievements from the people who actually did the work.&lt;/p&gt;
&lt;p&gt;Coming from Kerala, a place with its own ancient temples, palaces and traditions of craftsmanship, I'd rather celebrate what people built with their own hands and brains. That, to me, is far more impressive than little green men with a crane.&lt;/p&gt;
&lt;p class="sign"&gt;Verdict: built by humans. Thousands of skilled, well-fed, organised humans, who left their names on the walls. No aliens needed.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>Who really killed JFK?</title>
      <link>https://deslypeter.com/writing/what-if-jfk-conspiracy</link>
      <guid>https://deslypeter.com/writing/what-if-jfk-conspiracy.html?lang=en</guid>
      <description>One gunman, or more? Sixty years of investigations, a famous home movie, a "magic bullet" and a mountain of released files. Here's what holds up.</description>
      <pubDate>Sun, 18 Oct 2026 19:27:24 +0200</pubDate>
      <category>whatif</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Some conspiracy theories are fun. This one isn't really. A president was shot in front of his wife and a cheering crowd, and the man accused of doing it was himself shot dead two days later, live on television. If you had designed an event to make people suspicious forever, you couldn't have done it better.&lt;/p&gt;
&lt;p&gt;I wanted to look at it properly. It's the granddaddy of all modern conspiracy theories.&lt;/p&gt;
&lt;h2&gt;What happened&lt;/h2&gt;
&lt;p&gt;On 22 November 1963, President John F. Kennedy was riding in an open car through Dealey Plaza in Dallas, Texas. At 12:30, shots were fired. Kennedy was hit in the neck and the head. Texas Governor John Connally, sitting in front of him, was badly wounded.&lt;/p&gt;
&lt;p&gt;Within hours, police arrested Lee Harvey Oswald, a former US Marine who had once defected to the Soviet Union and come back. He worked at the Texas School Book Depository, overlooking the route, and a rifle was found on the sixth floor. Oswald said he was "just a patsy". Two days later, while being moved through a police basement, he was shot by a nightclub owner called Jack Ruby. There would be no trial.&lt;/p&gt;
&lt;h2&gt;The official answer&lt;/h2&gt;
&lt;p&gt;In 1964, the Warren Commission said Oswald fired three shots from the sixth-floor window and acted alone.&lt;/p&gt;
&lt;p&gt;The most attacked part of the report is the so-called "single bullet theory". It says one bullet passed through Kennedy's neck and then went on to cause all of Connally's wounds, in his back, chest, wrist and thigh. Critics nicknamed it the "magic bullet", especially because the bullet was found in surprisingly good condition.&lt;/p&gt;
&lt;blockquote&gt;When the official story needs a "magic bullet", people will start looking for a magician.&lt;/blockquote&gt;
&lt;h2&gt;Why so many people don't buy it&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The Zapruder film.&lt;/strong&gt; A local man, Abraham Zapruder, filmed the whole thing on his home movie camera. In the film, Kennedy's head moves sharply backwards at the fatal shot, which to many viewers suggests a shot from the front, from the grassy knoll, not from behind.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The grassy knoll.&lt;/strong&gt; Several witnesses said they heard shots from behind a wooden fence on a small hill in front of the car.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A second investigation disagreed.&lt;/strong&gt; In 1979, a US House committee concluded that Kennedy was "probably assassinated as a result of a conspiracy". That conclusion leaned heavily on a police radio recording that seemed to contain a fourth shot. A few years later, a panel of scientists re-examined that recording and found that the sounds came from about a minute after the shooting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The CIA did hide things.&lt;/strong&gt; This is the part that matters most to me. Later investigations showed the CIA hadn't told the Warren Commission about its secret plots to assassinate Fidel Castro, and that it had been watching Oswald closely weeks before, during a visit to Mexico City. Governments hiding things isn't a theory here. It's documented.&lt;/p&gt;
&lt;h2&gt;What the evidence says now&lt;/h2&gt;
&lt;p&gt;Modern 3D reconstructions of the car show that Connally was sitting lower and further inside than Kennedy, and turned in his seat. From the sixth-floor window, a straight line through Kennedy's neck does lead to Connally's wounds. The "magic" bullet path looks much less magical when you model the real positions. Medical experts also explain the backward head movement as a reaction of the body, not proof of a shot from the front. That's still argued about.&lt;/p&gt;
&lt;p&gt;And then there are the files. After Oliver Stone's film &lt;em&gt;JFK&lt;/em&gt; in 1991 caused public outrage, the US passed a law to release all the assassination records. That took decades. Tens of thousands of pages were finally released in 2025. Historians found plenty of embarrassing detail about the CIA's Cold War operations. What they didn't find was a smoking gun showing that someone other than Oswald pulled the trigger.&lt;/p&gt;
&lt;h2&gt;Where I land&lt;/h2&gt;
&lt;p&gt;I think the evidence points to Oswald firing the shots. I also understand completely why people don't trust that answer. The CIA withheld information, the investigation was rushed, and the man who could have told us the most was killed before he could speak.&lt;/p&gt;
&lt;p&gt;I think the real cover-up was probably not murder. It was embarrassment: intelligence agencies hiding how much they knew about Oswald, and the things they were doing that they didn't want anyone to see. Secrecy around the truth can look exactly like a lie.&lt;/p&gt;
&lt;p&gt;That might be the most important lesson of all the conspiracy theories in this section. When institutions hide things, even small, unrelated things, people fill the gap with the worst possible story. And sometimes, honestly, who can blame them?&lt;/p&gt;
&lt;p class="sign"&gt;Verdict: most likely Oswald, most likely alone. But the secrecy was real, and that's why the doubt will never die.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>What if Tesla invented free energy?</title>
      <link>https://deslypeter.com/writing/what-if-tesla-free-energy</link>
      <guid>https://deslypeter.com/writing/what-if-tesla-free-energy.html?lang=en</guid>
      <description>The story goes that Nikola Tesla found a way to give the world free wireless power, and the money men buried it. The real story of the man is even better.</description>
      <pubDate>Sun, 18 Oct 2026 19:27:24 +0200</pubDate>
      <category>whatif</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Nikola Tesla has become a kind of internet saint. A misunderstood genius, robbed by Edison, ignored by history, whose greatest invention was hidden from us. The car company named itself after him. There are memes, T-shirts and videos with millions of views claiming that Tesla invented free energy, and that powerful people made sure we'd never have it.&lt;/p&gt;
&lt;p&gt;As someone who loves technology, I really wanted to know: how much of that is true?&lt;/p&gt;
&lt;h2&gt;The genius part is real&lt;/h2&gt;
&lt;p&gt;Let's start with what's not in doubt. Tesla was brilliant. His work on alternating current, AC, and the induction motor helped create the electrical system the whole world still uses. In the famous "war of the currents" in the late 1880s, Tesla's AC, backed by George Westinghouse, beat Thomas Edison's direct current. In 1895, AC power from a new plant at Niagara Falls began lighting up the region. Every time you plug something into a wall socket, you're using an idea Tesla helped make possible.&lt;/p&gt;
&lt;p&gt;He also did pioneering work on radio. In 1943, the US Supreme Court ruled on a long patent battle and invalidated a key radio patent held by Guglielmo Marconi, partly because Tesla and others had got there first.&lt;/p&gt;
&lt;h2&gt;The tower&lt;/h2&gt;
&lt;p&gt;The free energy story centres on one place: Wardenclyffe, on Long Island, New York. In 1901, with funding from the banker J.P. Morgan, Tesla began building a huge tower, about 57 metres tall, with a giant mushroom-shaped dome on top.&lt;/p&gt;
&lt;p&gt;The plan started as wireless communication across the Atlantic. But Tesla's real dream was bigger: to transmit electrical power without wires, using the Earth itself as part of the circuit. Power for everyone, everywhere.&lt;/p&gt;
&lt;p&gt;Then the money ran out. Morgan stopped funding the project. A popular story says Morgan pulled out because he asked, "Where do we put the meter?" There's no evidence he ever said that. More likely, he simply saw that Marconi was already sending radio signals across the Atlantic with much cheaper equipment, and Tesla kept asking for more money for a vision that kept growing. The tower was never finished. It was torn down in 1917 and sold for scrap to pay debts.&lt;/p&gt;
&lt;blockquote&gt;Tesla's tower wasn't buried by conspiracy. It was buried by a budget.&lt;/blockquote&gt;
&lt;h2&gt;The missing papers&lt;/h2&gt;
&lt;p&gt;When Tesla died in a New York hotel room in 1943, broke and living alone, the US government seized his papers. That sounds sinister, and it fuels a lot of the theory. It was the middle of World War II, and Tesla had talked publicly about a "death ray".&lt;/p&gt;
&lt;p&gt;The government asked an MIT engineer, John G. Trump, to examine the papers. His conclusion was that they were mostly speculative and philosophical, and contained nothing that could be built into a dangerous weapon. Trivia I couldn't resist: John Trump was the uncle of a future US president. The FBI has since released its files on Tesla.&lt;/p&gt;
&lt;h2&gt;The physics problem&lt;/h2&gt;
&lt;p&gt;This is where the "free energy" idea really falls apart, and where I think the myth does Tesla a disservice.&lt;/p&gt;
&lt;p&gt;Tesla never claimed to create energy from nothing. His idea was to &lt;em&gt;transmit&lt;/em&gt; energy, generated somewhere like a power station at Niagara, through the air and the ground. It still needed a power plant. Someone still had to pay for that.&lt;/p&gt;
&lt;p&gt;And broadcasting power over long distances runs into a basic problem: it spreads out and gets lost. Send it in every direction, and almost all of it never reaches the device that needs it. That's why wires, boring as they are, are still the most efficient way to move electricity across a country.&lt;/p&gt;
&lt;p&gt;A true "free energy" machine, one that produces more energy than it uses, would break the law of conservation of energy, one of the most tested rules in all of physics. Nobody has ever built one that works, and many have tried.&lt;/p&gt;
&lt;h2&gt;Tesla's dream, today&lt;/h2&gt;
&lt;p&gt;Here's the nice ending. Part of Tesla's dream did come true. The phone on your desk probably charges wirelessly. Electric toothbrushes, smartwatches and some electric cars use wireless charging. It works using electromagnetic induction, the same physics Tesla played with. It just works over centimetres, not continents.&lt;/p&gt;
&lt;p&gt;Researchers are also experimenting with beaming power using lasers and microwaves, even from solar panels in space. It's early, it's expensive, and it's far from free. But Tesla would have loved it.&lt;/p&gt;
&lt;h2&gt;Where I land&lt;/h2&gt;
&lt;p&gt;I don't think Tesla's genius was suppressed. I think it was misunderstood, underfunded and sometimes over-promised by the man himself. He was a visionary who was often right about the future, and sometimes very wrong about the details.&lt;/p&gt;
&lt;p&gt;And honestly, the real Tesla, a brilliant immigrant engineer who changed the world, died poor and was nearly forgotten, is a much more powerful story than any secret machine.&lt;/p&gt;
&lt;p class="sign"&gt;Verdict: a real genius with a real dream. No free energy, no secret cover-up. Just physics, and a very expensive tower.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>What if the Titanic never sank?</title>
      <link>https://deslypeter.com/writing/what-if-titanic-switch</link>
      <guid>https://deslypeter.com/writing/what-if-titanic-switch.html?lang=en</guid>
      <description>The theory says the ship at the bottom of the Atlantic is actually her damaged twin, sunk on purpose for the insurance money. It's a clever story. The wreck tells a different one.</description>
      <pubDate>Sun, 18 Oct 2026 19:27:24 +0200</pubDate>
      <category>whatif</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Everyone knows the story of the Titanic. The "unsinkable" ship, the iceberg, the band playing on, not enough lifeboats, more than 1,500 people lost on a freezing April night in 1912.&lt;/p&gt;
&lt;p&gt;There's a theory that the ship that sank wasn't the Titanic at all. It was her nearly identical older sister, the Olympic, swapped in secret and sunk on purpose so the owners could collect insurance money.&lt;/p&gt;
&lt;p&gt;It's one of those theories that sounds ridiculous at first and then, for about ten minutes, surprisingly convincing. So let's give it those ten minutes.&lt;/p&gt;
&lt;h2&gt;Two sisters&lt;/h2&gt;
&lt;p&gt;The White Star Line built three giant sister ships in Belfast: Olympic, Titanic and later Britannic. Olympic was finished first, in 1911. Titanic followed a year later. From the outside, they looked almost exactly the same: the same black hull, the same four tall funnels, the same lines.&lt;/p&gt;
&lt;p&gt;In September 1911, Olympic collided with a British warship, HMS Hawke. Olympic was badly damaged, and an inquiry decided Olympic was to blame. That meant, the theory says, the insurance wouldn't pay for the repairs. Repairs were expensive, and they delayed work on Titanic.&lt;/p&gt;
&lt;h2&gt;The theory&lt;/h2&gt;
&lt;p&gt;The idea was popularised in a 1998 book by Robin Gardiner. It goes like this: White Star secretly swapped the two ships. The damaged Olympic was dressed up as Titanic, sent out on the maiden voyage, and deliberately sunk to collect the insurance on a "brand-new" ship. Rescue ships were supposedly waiting nearby, but something went wrong. The real Titanic, meanwhile, sailed on for years under the name Olympic.&lt;/p&gt;
&lt;p&gt;There's an even darker version. J.P. Morgan, the banker whose company owned White Star, cancelled his trip at the last minute. Some of the richest men in the world died on board. So, the theory goes, maybe the sinking was planned to get rid of them. That version has even less behind it.&lt;/p&gt;
&lt;blockquote&gt;For the switch to work, thousands of shipyard workers would have had to keep a perfect secret, forever.&lt;/blockquote&gt;
&lt;h2&gt;Why it falls apart&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The money doesn't work.&lt;/strong&gt; Titanic was insured for about £1 million, but she cost about £1.5 million to build. Sinking her on purpose would have meant losing a huge amount of money, not making it. And White Star lost its reputation, faced lawsuits and paid out claims for years.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The sisters weren't identical.&lt;/strong&gt; When Titanic was built, the designers made changes based on Olympic's first months at sea. The most visible one: the forward half of Titanic's A-deck promenade was enclosed with windows, to protect passengers from spray. On Olympic, it was open. The number and spacing of some portholes near the bow were also different. Photos of the wreck show Titanic's layout, not Olympic's.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The number on the propeller.&lt;/strong&gt; In the shipyard, Olympic was hull number 400 and Titanic was 401. Explorers of the wreck have reported the number 401 stamped on one of the propeller blades.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The wreck has been scanned in detail.&lt;/strong&gt; In 2023, a team made a full digital 3D scan of the wreck, from hundreds of thousands of images. It's the most detailed record we have of the ship, and it's Titanic.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thousands of people would have known.&lt;/strong&gt; Swapping two of the biggest moving objects on Earth would have needed thousands of shipyard workers, crew and officials to keep quiet for the rest of their lives. Not one credible person ever confessed.&lt;/p&gt;
&lt;h2&gt;What happened to Olympic&lt;/h2&gt;
&lt;p&gt;Olympic went on to have a long and successful career. She carried troops in World War I, was nicknamed "Old Reliable", and stayed in service until 1935, when she was retired and scrapped. Some of her fittings ended up in a hotel in England, where you can still see them today.&lt;/p&gt;
&lt;h2&gt;Why we love this story&lt;/h2&gt;
&lt;p&gt;I think the Titanic switch theory survives because the real story is so hard to accept. A ship called unsinkable sank on her first voyage, because of speed, overconfidence, an iceberg and not enough lifeboats. That's not a plot. It's just a terrible series of human decisions.&lt;/p&gt;
&lt;p&gt;A secret swap gives the tragedy a villain and a reason. And people prefer stories with reasons. But sometimes the real lesson is simpler and harder: no ship is unsinkable, and no amount of confidence replaces a lifeboat.&lt;/p&gt;
&lt;p class="sign"&gt;Verdict: no switch. The ship at the bottom of the Atlantic is Titanic, hull number 401. The tragedy was real, and that's sad enough.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>iPhone Air, one year later</title>
      <link>https://deslypeter.com/writing/iphone-air-review</link>
      <guid>https://deslypeter.com/writing/iphone-air-review.html?lang=en</guid>
      <description>A year, a few drops, zero cases. Here's what it's actually like to live with the thinnest iPhone ever made.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>technical</category>
      <content:encoded>
  &lt;div class="body"&gt;&lt;p&gt;For a full year now, the iPhone Air has been my only phone. Every day, every trip, every walk, and a fair number of photos on this website. So this isn't a first-impressions review. This is what's left after the "wow, it's so thin" phase wears off.&lt;/p&gt;
&lt;p&gt;Short version: I'm happy with it. Not blindly happy. There are things I'd change. But I'd buy it again.&lt;/p&gt;
&lt;h2&gt;The design is the whole point&lt;/h2&gt;
&lt;p&gt;Let's start with the obvious. This phone is sleek. At 5.6 mm thick and 165 grams, it doesn't feel like a brick in your pocket the way most phones do now. You forget it's there, and then you pick it up and still get that small "huh, nice" feeling, even after a year.&lt;/p&gt;
&lt;figure class="inline"&gt;&lt;img src="https://deslypeter.com/images/iphone-air-profile.jpg" alt="iPhone Air seen from the side, held between two fingers" width="980" height="700" decoding="async" loading="lazy"&gt;&lt;figcaption&gt;5.64 mm, side on · Image: Apple&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;It's genuinely good to carry. Jeans pocket, jacket pocket, one hand on a crowded tram. Big screen, small presence. That combination is the reason to buy this phone, and it delivers.&lt;/p&gt;
&lt;h2&gt;Tougher than it looks&lt;/h2&gt;
&lt;p&gt;This was my biggest worry. A phone this thin feels like it should snap if you look at it wrong. I'll be honest: I don't use a case. And it has fallen. More than once. Onto real floors.&lt;/p&gt;
&lt;p&gt;It's still fine. No bend, no cracked glass, nothing that would make me nervous. The titanium frame and the Ceramic Shield glass on the front and back are doing their job. I'm not recommending you drop-test your phone, but if durability is the thing stopping you, after a year of real life I can tell you it's sturdier than it looks.&lt;/p&gt;
&lt;blockquote&gt;It looks fragile. It isn't. That's the best surprise of the year.&lt;/blockquote&gt;
&lt;h2&gt;Battery: one full day, and that's it&lt;/h2&gt;
&lt;p&gt;The battery gets me through one full day. Morning to night, with photos, maps, messages, some video, I go to bed with something left. But it's one day, not two. If you're used to phones that last into the next afternoon, this isn't that.&lt;/p&gt;
&lt;p&gt;On long travel days, heavy navigation or a lot of 4K video, I keep an eye on the percentage. Apple sells a MagSafe battery made for this phone, which takes video playback from 27 to 40 hours. That says a lot about where the trade-off is. You're carrying less phone, so you're carrying less battery.&lt;/p&gt;
&lt;h2&gt;Camera&lt;/h2&gt;
&lt;p&gt;There's one camera on the back: a 48MP main sensor with a 2x "optical-quality" crop for portraits. For everyday photos it's excellent. Sharp, natural colours, great in daylight, solid at night. Some of the photos in my gallery were shot on it.&lt;/p&gt;
&lt;p&gt;What you don't get is an ultra-wide or a real zoom lens. As someone who takes photography seriously, I notice that. No wide landscapes from close up, no macro, no 5x shots of something far away. For most people it won't matter. For me, it's the one thing that occasionally makes me reach for another camera.&lt;/p&gt;
&lt;h2&gt;Performance and storage&lt;/h2&gt;
&lt;p&gt;The A19 Pro chip is the same family as the Pro models, and after a year it still feels fast. Editing photos, switching between apps, nothing stutters. I went with the 512 GB version and I'm glad I did. With photos and 4K video, I've never had to think about storage. If you shoot a lot, don't go for the smallest option.&lt;/p&gt;
&lt;h2&gt;The good and the not-so-good&lt;/h2&gt;
&lt;p&gt;Here's the honest list, including the things that bug me and that you should know before buying:&lt;/p&gt;
&lt;div class="proscons"&gt;
  &lt;div class="pros"&gt;&lt;h3&gt;What I like&lt;/h3&gt;&lt;ul&gt;
    &lt;li&gt;Sleek, light and genuinely easy to carry&lt;/li&gt;
    &lt;li&gt;Surprisingly sturdy, even after several falls without a case&lt;/li&gt;
    &lt;li&gt;Gorgeous 6.5-inch 120Hz display, bright outdoors&lt;/li&gt;
    &lt;li&gt;Fast A19 Pro chip that still feels new after a year&lt;/li&gt;
    &lt;li&gt;Excellent main camera for everyday photos&lt;/li&gt;
    &lt;li&gt;512 GB means I never think about storage&lt;/li&gt;
  &lt;/ul&gt;&lt;/div&gt;
  &lt;div class="cons"&gt;&lt;h3&gt;What I don't&lt;/h3&gt;&lt;ul&gt;
    &lt;li&gt;Battery lasts one day, with little margin on heavy days&lt;/li&gt;
    &lt;li&gt;Only one rear camera: no ultra-wide, no macro, no real zoom&lt;/li&gt;
    &lt;li&gt;Single speaker, so sound is fine but not rich&lt;/li&gt;
    &lt;li&gt;eSIM only. Great once set up, annoying when you travel and want a local SIM card&lt;/li&gt;
    &lt;li&gt;USB-C at USB 2 speed makes big video transfers slow&lt;/li&gt;
    &lt;li&gt;You pay Pro-level money for a phone with fewer features than the Pro&lt;/li&gt;
  &lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Technical specifications&lt;/h2&gt;
&lt;table class="specs"&gt;
  &lt;tr&gt;&lt;th&gt;Storage&lt;/th&gt;&lt;td&gt;256 GB, &lt;span class="mine"&gt;512 GB (mine)&lt;/span&gt;, 1 TB&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Display&lt;/th&gt;&lt;td&gt;6.5" Super Retina XDR OLED, 2736 × 1260 at 460 ppi, ProMotion up to 120Hz, Always-On, up to 3000 nits outdoors&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Chip&lt;/th&gt;&lt;td&gt;A19 Pro: 6-core CPU, 5-core GPU with Neural Accelerators, 16-core Neural Engine&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Rear camera&lt;/th&gt;&lt;td&gt;48MP Fusion Main (26 mm, ƒ/1.6, sensor-shift OIS), 12MP 2x Telephoto (optical quality), digital zoom up to 10x&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Video&lt;/th&gt;&lt;td&gt;4K Dolby Vision up to 60 fps, Action mode, slo-mo up to 240 fps&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Front camera&lt;/th&gt;&lt;td&gt;18MP Center Stage, ƒ/1.9, 4K Dolby Vision video&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Battery&lt;/th&gt;&lt;td&gt;Up to 27 hours video playback (40 hours with iPhone Air MagSafe Battery)&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Charging&lt;/th&gt;&lt;td&gt;USB-C (USB 2), 50% in about 30 min with 20W+, MagSafe and Qi2 up to 20W&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Build&lt;/th&gt;&lt;td&gt;Titanium frame, Ceramic Shield 2 front, Ceramic Shield back, IP68 (6 m for 30 min)&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Size &amp;amp; weight&lt;/th&gt;&lt;td&gt;156.2 × 74.7 × 5.64 mm, 165 g&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Connectivity&lt;/th&gt;&lt;td&gt;5G (Apple C1X modem), Wi-Fi 7, Bluetooth 6, Thread, NFC, second-gen Ultra Wideband&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;SIM&lt;/th&gt;&lt;td&gt;Dual eSIM only, no physical SIM&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Controls&lt;/th&gt;&lt;td&gt;Action button, Camera Control, Face ID&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Colours&lt;/th&gt;&lt;td&gt;Space Black, Cloud White, Light Gold, Sky Blue&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p class="specs-note"&gt;Specifications from Apple's official tech specs page. Battery figures are Apple's own test results; real-world use varies.&lt;/p&gt;
&lt;h2&gt;Who should buy it&lt;/h2&gt;
&lt;p&gt;If you want a big screen in a phone that's a pleasure to carry, and you mostly take everyday photos, the iPhone Air is a great choice. If you need two-day battery life, an ultra-wide or zoom lens, or you swap SIM cards a lot while travelling, look at the Pro or the regular iPhone instead.&lt;/p&gt;
&lt;div class="verdict"&gt;
  &lt;div class="score"&gt;8&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;
  &lt;strong&gt;Would I buy it again? Yes.&lt;/strong&gt;
  &lt;p&gt;A year in, the design still makes me smile, it's survived my clumsiness, and it gets through my day. Just know what you're giving up for that thinness.&lt;/p&gt;
&lt;/div&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>Samsung HW-Q995GF, six months later</title>
      <link>https://deslypeter.com/writing/samsung-hw-q995gf-review</link>
      <guid>https://deslypeter.com/writing/samsung-hw-q995gf-review.html?lang=en</guid>
      <description>Movies, gaming, music and editing in a 12-by-12 room. The most immersive sound I've had at home, and a few honest catches.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>technical</category>
      <content:encoded>
  &lt;div class="body"&gt;&lt;p&gt;Six months ago I set up the Samsung HW-Q995GF, and since then it's been running almost every day. Movies, gaming, music, and even while I'm editing. If you only read one line of this review, make it this one: the sound is awesome. Immersive in a way I honestly didn't expect from a soundbar.&lt;/p&gt;
&lt;p&gt;It's not perfect, but I'll get to the annoyances. This is the best sound setup I've owned.&lt;/p&gt;
&lt;h2&gt;My setup&lt;/h2&gt;
&lt;p&gt;For context, this isn't a huge living room. My room is roughly 12 by 12 feet, about 3.7 by 3.7 metres, and the soundbar sits with my &lt;a href="https://deslypeter.com/writing/samsung-odyssey-g7-37-review.html"&gt;Samsung Odyssey 37-inch 4K screen&lt;/a&gt;. The box comes with four pieces: the main bar, a wireless subwoofer, and two wireless rear speakers. Together that's 11.1.4 channels and 23 speakers in the main bar alone. In a room this size, that's a lot of sound, in the best way.&lt;/p&gt;
&lt;h2&gt;The sound: immersive is the right word&lt;/h2&gt;
&lt;p&gt;The thing that makes this system special is the Dolby Atmos height effects. Rain sounds like it's falling from above you. A helicopter actually moves over your head. Both the main bar and the rear speakers have up-firing drivers that bounce sound off the ceiling, and in my room it works properly. It doesn't sound like a speaker in front of you. It sounds like the room itself.&lt;/p&gt;
&lt;p&gt;The bass is deep and controlled. The subwoofer has two 8-inch drivers, and it hits hard in action scenes without turning everything into boom. Dialogue stays clear even in loud scenes, which matters more than people think. No more turning the volume up for quiet talking and then down again for explosions.&lt;/p&gt;
&lt;blockquote&gt;It doesn't sound like a speaker in front of you. It sounds like the room itself.&lt;/blockquote&gt;
&lt;h2&gt;Gaming, music and editing&lt;/h2&gt;
&lt;p&gt;For gaming, the rear speakers change everything. Footsteps behind you actually come from behind you. Samsung's Game Pro mode tunes the sound automatically when it detects a console.&lt;/p&gt;
&lt;p&gt;For music I mostly use AirPlay straight from my iPhone. It just works, no pairing dance. Spotify Connect and Tidal Connect are built in too.&lt;/p&gt;
&lt;p&gt;And since I edit on the same setup, I appreciate that it plays back high-resolution audio cleanly. It's not a studio monitor and I wouldn't do a final mix on it, but for reviewing edits it's a huge step up from monitor speakers.&lt;/p&gt;
&lt;h2&gt;The wireless rears&lt;/h2&gt;
&lt;p&gt;I love that the rear speakers are wireless. No cables running across the floor to the back of the room. One small catch: "wireless" means no audio cable. They still need a power socket each, so plan where they'll go.&lt;/p&gt;
&lt;p&gt;In six months, a satellite speaker disconnected once. It reconnected and hasn't happened again since, but it's worth mentioning in an honest review.&lt;/p&gt;
&lt;h2&gt;The downsides&lt;/h2&gt;
&lt;p&gt;This thing is heavy. The full set weighs about 24 kg, and the main bar alone is 7.3 kg and over 1.2 metres wide. I've owned other soundbars that I could pick up and move to another room in a minute. This is not that. Once it's set up, it stays where it is.&lt;/p&gt;
&lt;div class="proscons"&gt;
  &lt;div class="pros"&gt;&lt;h3&gt;What I like&lt;/h3&gt;&lt;ul&gt;
    &lt;li&gt;Awesome, genuinely immersive sound&lt;/li&gt;
    &lt;li&gt;Dolby Atmos height effects that actually work&lt;/li&gt;
    &lt;li&gt;Deep, controlled bass from the dual 8-inch subwoofer&lt;/li&gt;
    &lt;li&gt;Clear dialogue, even in loud scenes&lt;/li&gt;
    &lt;li&gt;Wireless rear speakers make real surround easy&lt;/li&gt;
    &lt;li&gt;AirPlay 2, Spotify Connect and Tidal Connect built in&lt;/li&gt;
    &lt;li&gt;Great for movies, gaming, music and editing alike&lt;/li&gt;
  &lt;/ul&gt;&lt;/div&gt;
  &lt;div class="cons"&gt;&lt;h3&gt;What I don't&lt;/h3&gt;&lt;ul&gt;
    &lt;li&gt;Heavy and not portable, about 24 kg for the full set&lt;/li&gt;
    &lt;li&gt;A satellite speaker disconnected once in six months&lt;/li&gt;
    &lt;li&gt;The rears still need their own power sockets&lt;/li&gt;
    &lt;li&gt;HDMI pass-through tops out at 4K 60Hz, so connect 120Hz consoles to the screen directly&lt;/li&gt;
    &lt;li&gt;Bluetooth only supports the basic SBC codec. Use AirPlay or Wi-Fi for music instead&lt;/li&gt;
    &lt;li&gt;Premium price. You're paying for the whole system&lt;/li&gt;
  &lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Technical specifications&lt;/h2&gt;
&lt;table class="specs"&gt;
  &lt;tr&gt;&lt;th&gt;System&lt;/th&gt;&lt;td&gt;11.1.4 channels: main bar, wireless subwoofer, wireless 4.0.2 rear speakers&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Speakers&lt;/th&gt;&lt;td&gt;23 in the main bar (front, side, up-firing and centre)&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Subwoofer&lt;/th&gt;&lt;td&gt;Wireless, dual 8-inch drivers&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Rear speakers&lt;/th&gt;&lt;td&gt;Wireless, with up-firing drivers&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Audio formats&lt;/th&gt;&lt;td&gt;Dolby Atmos (incl. wireless), Dolby TrueHD, Dolby Digital, DTS:X, DTS 5.1, multichannel LPCM, Hi-Res 24-bit&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Sound features&lt;/th&gt;&lt;td&gt;SpaceFit Sound Pro, Adaptive Sound, Active Voice Amplifier Pro, Game Pro mode, Night mode, Q-Symphony&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;HDMI&lt;/th&gt;&lt;td&gt;2 in, 1 out, ARC and eARC, 4K 60Hz pass-through with HDR10+&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Other inputs&lt;/th&gt;&lt;td&gt;Optical&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Wireless&lt;/th&gt;&lt;td&gt;Wi-Fi (2.4 / 5 GHz), Bluetooth 5.2&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Streaming&lt;/th&gt;&lt;td&gt;AirPlay 2, Spotify Connect, Tidal Connect, Google Cast&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Voice&lt;/th&gt;&lt;td&gt;Alexa built in; works with Google Assistant devices&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Main bar&lt;/th&gt;&lt;td&gt;1232 × 70.8 × 138 mm, 7.3 kg&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Subwoofer size&lt;/th&gt;&lt;td&gt;249 × 251.8 × 249 mm, 8.3 kg&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Rear speakers size&lt;/th&gt;&lt;td&gt;129.5 × 201.3 × 140.4 mm, 3.4 kg each&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Full set&lt;/th&gt;&lt;td&gt;About 23.8 kg&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p class="specs-note"&gt;Specifications from Samsung's official product page. Features can vary by region and firmware.&lt;/p&gt;
&lt;h2&gt;Who should buy it&lt;/h2&gt;
&lt;p&gt;If you want real cinema sound at home without running cables for a full speaker system, and you have the space for it, this is it. It's fantastic for movies, gaming and music. If you need something light that you'll move around, or you're on a tighter budget, a smaller soundbar will make more sense.&lt;/p&gt;
&lt;div class="verdict"&gt;
  &lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;
  &lt;strong&gt;Highly recommended.&lt;/strong&gt;
  &lt;p&gt;Six months in, it's still the best sound I've had at home. Heavy, yes. One hiccup, yes. But every movie night reminds me why I bought it.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a class="buy" href="https://www.samsung.com/de/audio-devices/soundbar/q990f-black-hw-q995gf-zg/" target="_blank" rel="noopener"&gt;View the HW-Q995GF on Samsung.com ↗&lt;/a&gt;&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>Samsung Odyssey G7 37", six months later</title>
      <link>https://deslypeter.com/writing/samsung-odyssey-g7-37-review</link>
      <guid>https://deslypeter.com/writing/samsung-odyssey-g7-37-review.html?lang=en</guid>
      <description>PS5 Pro gaming, photo editing, movies and work on one curved 4K screen. Brilliant picture, frustrating ports.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>technical</category>
      <content:encoded>
  &lt;div class="body"&gt;&lt;p&gt;For the past six months, the Samsung Odyssey G7 37-inch has been the centre of my desk. It's where I play on my PS5 Pro, edit my photos, watch movies, and do my actual work. One screen doing four jobs, and doing them all well. That's the short version.&lt;/p&gt;
&lt;p&gt;The longer version has a couple of "I wish Samsung had…" moments, mostly about ports. But first, the good stuff, because there's a lot of it.&lt;/p&gt;
&lt;h2&gt;The screen is the star&lt;/h2&gt;
&lt;p&gt;37 inches is a sweet spot I didn't know I wanted. It's big enough to feel immersive, but not so big that I'm turning my head to read a menu. The 1000R curve wraps the edges slightly towards you, so at this size everything stays comfortably in view.&lt;/p&gt;
&lt;p&gt;And it's 4K. At 37 inches, text is crisp, photos are sharp right down to the fine detail, and you can fit a lot on screen when working. After using it for a while, going back to a lower-resolution screen feels blurry.&lt;/p&gt;
&lt;blockquote&gt;One screen, four jobs: gaming, editing, movies and work. It handles all of them.&lt;/blockquote&gt;
&lt;h2&gt;Gaming with the PS5 Pro&lt;/h2&gt;
&lt;p&gt;Gaming is where it really shines. Motion looks smooth, and with HDR turned on, games look properly vivid. The panel goes up to 165Hz, which you'll see on a PC. The PS5 Pro itself tops out at 120Hz, so that's what you get from the console, and it still looks great. Both HDMI ports are HDMI 2.1, which is what you need for 4K at high refresh rates from a modern console.&lt;/p&gt;
&lt;h2&gt;Photo editing and colour&lt;/h2&gt;
&lt;p&gt;As someone who edits a lot of photos, colour matters to me, and I'm happy with it. Colours look rich and accurate, and HDR content has real punch. Samsung quotes 90% DCI-P3 and 99% sRGB coverage, and in practice my edits look the way I expect when I check them on other screens.&lt;/p&gt;
&lt;p&gt;One small thing for photographers: on a curved screen, perfectly straight lines can look slightly bent at the edges. It's not a problem for normal editing, but for very precise architectural work, I double-check on a flat screen.&lt;/p&gt;
&lt;h2&gt;Movies and work&lt;/h2&gt;
&lt;p&gt;Movies look fantastic on it, especially in a dark room where the VA panel's deep contrast helps. For work, the sheer amount of space at 4K means two windows side by side without squinting. I switch between my PC and my Mac, and having two HDMI ports plus DisplayPort makes that easy enough.&lt;/p&gt;
&lt;h2&gt;What annoys me: ports and eARC&lt;/h2&gt;
&lt;p&gt;This is my main complaint. The ports are limited. You get two HDMI 2.1, one DisplayPort 1.4, a small USB hub and a headphone jack. That's it. With a PC, a Mac and a PS5 Pro all wanting a connection, I run out of inputs quickly.&lt;/p&gt;
&lt;p&gt;There's also no eARC, and the monitor has no built-in speakers at all. On a TV, eARC lets you send audio from everything plugged into the screen straight to a soundbar with one cable. Here, getting sound from all my devices to my &lt;a href="https://deslypeter.com/writing/samsung-hw-q995gf-review.html"&gt;Samsung soundbar&lt;/a&gt; takes more planning than it should. If you're building a setup like mine, think about your audio routing before you buy.&lt;/p&gt;
&lt;div class="proscons"&gt;
  &lt;div class="pros"&gt;&lt;h3&gt;What I like&lt;/h3&gt;&lt;ul&gt;
    &lt;li&gt;Razor-sharp 4K at a perfect 37-inch size&lt;/li&gt;
    &lt;li&gt;Comfortable 1000R curve that keeps everything in view&lt;/li&gt;
    &lt;li&gt;Smooth 165Hz on PC, 120Hz on PS5 Pro&lt;/li&gt;
    &lt;li&gt;Vivid HDR for games and movies&lt;/li&gt;
    &lt;li&gt;Rich, accurate colours for photo editing&lt;/li&gt;
    &lt;li&gt;HDMI 2.1 for modern consoles&lt;/li&gt;
    &lt;li&gt;Height, tilt and swivel adjustable stand&lt;/li&gt;
  &lt;/ul&gt;&lt;/div&gt;
  &lt;div class="cons"&gt;&lt;h3&gt;What I don't&lt;/h3&gt;&lt;ul&gt;
    &lt;li&gt;Limited ports for a multi-device setup&lt;/li&gt;
    &lt;li&gt;No eARC, and no built-in speakers&lt;/li&gt;
    &lt;li&gt;No USB-C, so a Mac or laptop needs an HDMI or DisplayPort cable or adapter&lt;/li&gt;
    &lt;li&gt;350 nits typical brightness, so HDR doesn't hit as hard as OLED or mini-LED&lt;/li&gt;
    &lt;li&gt;VA panels can show slight smearing in very dark, fast scenes&lt;/li&gt;
    &lt;li&gt;Wide footprint, over 80 cm across, so measure your desk&lt;/li&gt;
  &lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Technical specifications&lt;/h2&gt;
&lt;table class="specs"&gt;
  &lt;tr&gt;&lt;th&gt;Model&lt;/th&gt;&lt;td&gt;Odyssey G7 G75F, 37" (LS37FG750EW)&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Panel&lt;/th&gt;&lt;td&gt;37" curved VA, 1000R&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Resolution&lt;/th&gt;&lt;td&gt;4K UHD, 3840 × 2160, 16:9&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Refresh &amp;amp; response&lt;/th&gt;&lt;td&gt;Up to 165Hz, 1ms (GtG)&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Brightness &amp;amp; contrast&lt;/th&gt;&lt;td&gt;350 nits typical, 3000:1 static contrast&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;HDR&lt;/th&gt;&lt;td&gt;VESA DisplayHDR 600, HDR10+ Gaming&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Colour&lt;/th&gt;&lt;td&gt;1.07 billion colours, 90% DCI-P3, 99% sRGB&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Adaptive sync&lt;/th&gt;&lt;td&gt;AMD FreeSync Premium Pro&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Ports&lt;/th&gt;&lt;td&gt;2× HDMI 2.1, 1× DisplayPort 1.4, USB hub (1 upstream, 2× USB-A 3.2), headphone out&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;USB-C&lt;/th&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Speakers&lt;/th&gt;&lt;td&gt;None&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Stand&lt;/th&gt;&lt;td&gt;Height 120 mm, tilt −5° to 20°, swivel ±20°, VESA 100 × 100&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Size &amp;amp; weight&lt;/th&gt;&lt;td&gt;81.6 × 67.4 × 30.4 cm with stand, 11.2 kg&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Extras&lt;/th&gt;&lt;td&gt;Picture-in-Picture, Auto Source Switch+, Black Equalizer, Eye Saver Mode, Flicker Free, CoreSync lighting&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p class="specs-note"&gt;Specifications from Samsung's official product page. Response time is measured in Extreme mode.&lt;/p&gt;
&lt;h2&gt;Who should buy it&lt;/h2&gt;
&lt;p&gt;If you want one big, sharp screen for gaming, editing, movies and work, and you're mostly connecting one or two devices, the Odyssey G7 37" is an easy recommendation. If you have a lot of devices, need USB-C for a laptop, or want simple one-cable audio to a soundbar, check the ports carefully first.&lt;/p&gt;
&lt;div class="verdict"&gt;
  &lt;div class="score"&gt;7&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;
  &lt;strong&gt;Would I buy it again? Yes, with a few reservations.&lt;/strong&gt;
  &lt;p&gt;Six months in, the picture still impresses me every day. More ports and eARC would have made it an 8 or higher.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a class="buy" href="https://www.samsung.com/in/monitors/gaming/odyssey-g7-g75f-37-inch-165hz-uhd-ls37fg750ewxxl/" target="_blank" rel="noopener"&gt;View the Odyssey G7 37" on Samsung.com ↗&lt;/a&gt;&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>Insta360 Link 2, six months later</title>
      <link>https://deslypeter.com/writing/insta360-link-2-review</link>
      <guid>https://deslypeter.com/writing/insta360-link-2-review.html?lang=en</guid>
      <description>Work meetings and recordings on my Mac. A webcam that makes people ask what camera you're using.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>technical</category>
      <content:encoded>
  &lt;div class="body"&gt;&lt;p&gt;For about six months now, the Insta360 Link 2 has been sitting on top of my screen, plugged into my Mac. I use it every working day for meetings, and for recording videos. I bought it expecting a better picture than a normal webcam. What I didn't expect was how much the little gimbal and the smart features would change how I work on camera.&lt;/p&gt;
&lt;p&gt;Short version: it's the best webcam I've used, and I don't say that lightly.&lt;/p&gt;
&lt;h2&gt;Picture quality&lt;/h2&gt;
&lt;p&gt;This is the first thing people notice. Colleagues have literally asked me what camera I'm using. The image is sharp, it records in 4K, and with HDR switched on, a bright window behind me doesn't blow everything out. Skin tones look natural, not orange or washed out the way cheaper webcams make you look.&lt;/p&gt;
&lt;p&gt;Low light is where it really separates itself. Evening calls, a dim room, a single lamp on, and it still looks clean. That's thanks to a bigger 1/2-inch sensor and a bright f/1.8 lens, which is far more than most webcams have.&lt;/p&gt;
&lt;blockquote&gt;Colleagues have literally asked me what camera I'm using.&lt;/blockquote&gt;
&lt;h2&gt;AI tracking and gestures&lt;/h2&gt;
&lt;p&gt;The camera sits on a small 2-axis gimbal, so it can physically turn and tilt to follow you. When I stand up, lean back or walk to grab something during a recording, it keeps me in frame. For recording videos this is brilliant, because I don't have to stay glued to one spot.&lt;/p&gt;
&lt;p&gt;The gestures took me a day to get used to, and now I use them without thinking. Raise your hand and it starts or stops tracking, and you can zoom with a gesture too. It feels a bit like magic the first few times, and then it just becomes normal.&lt;/p&gt;
&lt;h2&gt;Desk view and whiteboard mode&lt;/h2&gt;
&lt;p&gt;These two modes are underrated. Desk view tilts the camera down so you can show something on your desk: a sketch, a gadget, notes on paper. Whiteboard mode finds a whiteboard and straightens and enhances it so people can actually read it. For explaining things in meetings, both are genuinely useful, not gimmicks.&lt;/p&gt;
&lt;h2&gt;The microphones&lt;/h2&gt;
&lt;p&gt;I honestly expected to keep using a separate microphone. I don't. The built-in mics sound clear, and the AI noise cancelling does a good job of removing background noise. There are three modes: Voice Focus, Voice Suppression and Music Balance. For meetings, Voice Focus is my default. People hear me, not the street outside.&lt;/p&gt;
&lt;h2&gt;On the Mac&lt;/h2&gt;
&lt;p&gt;It's plug and play over USB-C with my Mac. FaceTime, Zoom, Teams, everything recognised it immediately. The Insta360 Link Controller app is where you fine-tune things like tracking, modes and noise cancelling, and once it's set up, you rarely need to open it again.&lt;/p&gt;
&lt;h2&gt;The two things I'd change&lt;/h2&gt;
&lt;div class="proscons"&gt;
  &lt;div class="pros"&gt;&lt;h3&gt;What I like&lt;/h3&gt;&lt;ul&gt;
    &lt;li&gt;Sharp 4K picture with HDR and natural colours&lt;/li&gt;
    &lt;li&gt;Excellent in low light, thanks to a large 1/2" sensor and an f/1.8 lens&lt;/li&gt;
    &lt;li&gt;AI tracking on a real gimbal that keeps you in frame&lt;/li&gt;
    &lt;li&gt;Gesture control that quickly becomes second nature&lt;/li&gt;
    &lt;li&gt;Desk view and whiteboard mode are genuinely useful&lt;/li&gt;
    &lt;li&gt;Clear built-in microphones with AI noise cancelling&lt;/li&gt;
    &lt;li&gt;Plug and play on Mac&lt;/li&gt;
  &lt;/ul&gt;&lt;/div&gt;
  &lt;div class="cons"&gt;&lt;h3&gt;What I don't&lt;/h3&gt;&lt;ul&gt;
    &lt;li&gt;It's expensive for a webcam, several times the price of a basic one&lt;/li&gt;
    &lt;li&gt;4K tops out at 30 fps. For smooth 60 fps you have to drop to 1080p&lt;/li&gt;
  &lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Neither is a deal-breaker. The price is easier to accept once you realise you might not need a separate microphone. And for meetings and most recordings, 4K at 30 fps looks great. It's only for fast motion that I'd want 60.&lt;/p&gt;
&lt;h2&gt;Technical specifications&lt;/h2&gt;
&lt;table class="specs"&gt;
  &lt;tr&gt;&lt;th&gt;Sensor&lt;/th&gt;&lt;td&gt;1/2" sensor&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Lens&lt;/th&gt;&lt;td&gt;f/1.8, 26 mm equivalent, 79.5° diagonal field of view (67° horizontal)&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Video&lt;/th&gt;&lt;td&gt;4K at 30 fps, 1080p at 60 fps, HDR, landscape or portrait&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Zoom &amp;amp; focus&lt;/th&gt;&lt;td&gt;Up to 4x digital zoom, autofocus from 10 cm&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Gimbal&lt;/th&gt;&lt;td&gt;2-axis (pan and tilt) with AI tracking&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Smart modes&lt;/th&gt;&lt;td&gt;Gesture control, desk view, whiteboard mode, portrait mode, privacy mode&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Audio&lt;/th&gt;&lt;td&gt;Built-in microphones with AI noise cancelling (Voice Focus, Voice Suppression, Music Balance)&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Video formats&lt;/th&gt;&lt;td&gt;H.264 and MJPEG, 8-bit&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Connection&lt;/th&gt;&lt;td&gt;USB-C&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Weight&lt;/th&gt;&lt;td&gt;About 101.5 g (camera), 166.5 g with magnetic mount&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Works with&lt;/th&gt;&lt;td&gt;Mac and Windows; Zoom, Teams, Google Meet, OBS and more&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;th&gt;Software&lt;/th&gt;&lt;td&gt;Insta360 Link Controller&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p class="specs-note"&gt;Specifications from Insta360's support documentation and published reviews. Not to be confused with the Link 2 Pro, which has a larger 1/1.3" sensor.&lt;/p&gt;
&lt;h2&gt;Who should buy it&lt;/h2&gt;
&lt;p&gt;If you spend a lot of your day on video calls, or you record yourself for videos and tutorials, the Link 2 is worth every cent. You look better, you sound better, and you're free to move. If you only join the odd call each week, a basic webcam will do the job for much less.&lt;/p&gt;
&lt;div class="verdict"&gt;
  &lt;div class="score"&gt;9&lt;small&gt;/10&lt;/small&gt;&lt;/div&gt;
  &lt;strong&gt;Highly recommended.&lt;/strong&gt;
  &lt;p&gt;Six months in, it's the one piece of my desk setup that everyone on the other end notices. Pricey, but it earns it.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a class="buy" href="https://www.amazon.de/dp/B0DM5YP22D" target="_blank" rel="noopener"&gt;View the Insta360 Link 2 on Amazon ↗&lt;/a&gt;&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>AI &amp; MLOps, from the ground up</title>
      <link>https://deslypeter.com/writing/ai-mlops-from-the-ground-up</link>
      <guid>https://deslypeter.com/writing/ai-mlops-from-the-ground-up.html?lang=en</guid>
      <description>I'm learning how machine learning actually gets built, shipped and kept alive. These are my notes from the very beginning.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Everyone is talking about AI. Every app has an AI button now, every company has an AI strategy, and every second post I see is someone explaining how AI will change everything. At some point I realised I'd been reading about it far more than I understood it.&lt;/p&gt;
&lt;p&gt;So I decided to stop just reading and actually learn it. Properly, from the ground up. The illustration above shows the loop I'm trying to understand: data, training, tracking, serving, monitoring, and then retraining again.&lt;/p&gt;
&lt;h2&gt;Why MLOps and not just "AI"&lt;/h2&gt;
&lt;p&gt;Training a model in a notebook is the fun, exciting part. You load some data, run a few lines of code, and suddenly the computer is predicting things. It feels like magic.&lt;/p&gt;
&lt;p&gt;But a model sitting in a notebook on my laptop doesn't help anyone. The hard part, and the part I find genuinely interesting, is everything after that. How do you turn it into something people can actually use? How do you know it still works next month, when the data has changed? How do you update it without breaking things? That's MLOps: the engineering that takes machine learning from an experiment to something reliable.&lt;/p&gt;
&lt;blockquote&gt;Building a model is the beginning. Keeping it working is the real job.&lt;/blockquote&gt;
&lt;h2&gt;My plan&lt;/h2&gt;
&lt;p&gt;I wrote myself a roadmap. Twenty-four weeks, about 8 to 10 hours a week, starting with Python and data foundations and ending with a model that is deployed, monitored, and can be retrained safely.&lt;/p&gt;
&lt;p&gt;The idea I like most is to build one project the whole way through instead of lots of small disconnected exercises. It starts as a simple notebook and grows step by step: into a tested Python package, then a tracked and reproducible training pipeline, then an API, then a container, then something running in the cloud with dashboards watching it. Every new skill gets added to the same system, so I can see why it matters.&lt;/p&gt;
&lt;p&gt;My weeks have a rhythm, too: a couple of hours learning concepts, most of the time building, an hour or two on testing and automation, and one hour at the end to look back and write down what I learned. That last hour is the one I'm most tempted to skip, and probably the most important.&lt;/p&gt;
&lt;h2&gt;Where I actually am&lt;/h2&gt;
&lt;p&gt;Honestly? Right at the start. Phase 0. I've set up the project, the tools and the structure. My first real test checks that a function calculating an average still gives the right answer with negative numbers. Not exactly artificial intelligence.&lt;/p&gt;
&lt;p&gt;But that's kind of the point. My first checkpoint is that a single command can check my code style and run all my tests, and pass. It's small and unglamorous, and it's the foundation everything else will stand on. I'd rather build that properly now than have a clever model on top of a mess later.&lt;/p&gt;
&lt;h2&gt;The tools I'll be learning&lt;/h2&gt;
&lt;p&gt;For anyone curious, the plan is one tool per problem to start with: Python with pandas and scikit-learn for the machine learning, pytest for testing, MLflow to track experiments, DVC to version data, FastAPI to serve predictions, Docker to package everything, GitHub Actions to automate it, and Prometheus, Grafana and Evidently to monitor it. My roadmap has a line I keep coming back to: the exact tools matter less than understanding reproducibility, automation, observability and safe change.&lt;/p&gt;
&lt;h2&gt;What I'd tell someone starting today&lt;/h2&gt;
&lt;p&gt;Start smaller than you think. Pick a boring, simple problem with public data. Get the basics working end to end before chasing the fancy stuff. And write down what you learn every week, because future you will forget.&lt;/p&gt;
&lt;p&gt;I'll keep writing here as I go. The wins, the bugs, and the moments where I have no idea what I'm doing. Which, I suspect, will be most of them.&lt;/p&gt;
&lt;p class="sign"&gt;Status: Phase 0 complete-ish. 23 weeks to go.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>The camera is software now</title>
      <link>https://deslypeter.com/writing/the-camera-is-software-now</link>
      <guid>https://deslypeter.com/writing/the-camera-is-software-now.html?lang=en</guid>
      <description>How computational photography quietly changed what a "good camera" means, and why my phone beats my DSLR more often than I'd like to admit.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Look at the sky in the photo above. Deep orange clouds, detail in the bright parts, and the water still visible underneath. I took it on a phone. A few years ago, a shot like that would have needed a proper camera, a tripod and some patience. Or it would have come out as a bright white sky over a black silhouette.&lt;/p&gt;
&lt;p&gt;I own a DSLR. I learned photography on one. And I'll be honest: these days, my phone wins more often than I'd like to admit. Not because its lens or sensor is better. It isn't. It wins because of software.&lt;/p&gt;
&lt;h2&gt;What's actually happening when you press the button&lt;/h2&gt;
&lt;p&gt;When you take a photo on a modern phone, it usually isn't taking one photo. It's often capturing several frames, some of them before you even press the shutter, at different exposures. Then the processor lines them up and merges them, taking the shadow detail from one frame, the highlight detail from another, and reducing noise by combining them all.&lt;/p&gt;
&lt;p&gt;This is called computational photography. Google made it famous on its Pixel phones with HDR+ and later Night Sight, which could produce surprisingly bright, clean photos in near darkness. Apple has Smart HDR, Deep Fusion and Night mode. Samsung has its own versions. The names differ, but the idea is the same: use computing power to make up for a tiny lens and a small sensor.&lt;/p&gt;
&lt;blockquote&gt;The lens collects the light. The software decides what the photo looks like.&lt;/blockquote&gt;
&lt;h2&gt;The things software can do that glass can't&lt;/h2&gt;
&lt;p&gt;Portrait mode is a good example. A big camera gets that soft, blurry background from physics: a large sensor and a wide aperture. A phone fakes it. It works out how far away everything is and blurs the background artificially. Early versions looked obviously fake, with blurry hair edges and ears. Now it's often good enough that most people can't tell.&lt;/p&gt;
&lt;p&gt;Night mode is even more impressive. Holding a phone still for a few seconds while it captures and stacks frames gives you a photo of a street at night that genuinely looks better than what your eyes saw.&lt;/p&gt;
&lt;h2&gt;Where it gets uncomfortable&lt;/h2&gt;
&lt;p&gt;Here's the part that makes me think. In 2023, a Reddit user tested Samsung's famous "Space Zoom" moon photos. He photographed a deliberately blurred image of the Moon on a screen, and the phone added crisp detail that simply wasn't there. Samsung explained that it used AI to enhance the Moon. Many people asked a fair question: is that still a photo, or is it a picture of what the phone thinks the Moon should look like?&lt;/p&gt;
&lt;p&gt;Now phones can remove people from the background, swap faces between frames so everyone is smiling, or generate parts of an image that were never captured. All useful. All a little strange.&lt;/p&gt;
&lt;h2&gt;So what is a "good camera" now?&lt;/h2&gt;
&lt;p&gt;I think it's becoming two different things. If you want a quick, great-looking photo of a moment, a phone is now the best camera for most people, most of the time. If you want control, a real optical zoom, shallow depth of field from physics, or a photo that is exactly what was in front of you, a dedicated camera still matters.&lt;/p&gt;
&lt;p&gt;I use both. The phone for life, the camera when I want to slow down. And I've learned to see the software as another tool, like a lens or a filter. Just one that makes a lot of decisions for you, quickly and quietly.&lt;/p&gt;
&lt;p class="sign"&gt;My take: the best camera is still the one you have with you. It just happens to be a computer now.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>AI in everyday apps</title>
      <link>https://deslypeter.com/writing/ai-in-everyday-apps</link>
      <guid>https://deslypeter.com/writing/ai-in-everyday-apps.html?lang=en</guid>
      <description>Which new AI features I actually use, which ones I've switched off, and how to tell the difference.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>newtech</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Somewhere in the last couple of years, every app on my phone got an AI button. My keyboard can rewrite my messages. My photos app can erase people. My notifications can summarise themselves. My search can explain things instead of just finding them.&lt;/p&gt;
&lt;p&gt;Some is genuinely useful. Some is a flashy icon on a feature nobody wanted. After using them all for a while, here's how I'd sort them.&lt;/p&gt;
&lt;h2&gt;The ones I actually use&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Removing things from photos.&lt;/strong&gt; Google's Magic Eraser, Apple's Clean Up, Samsung's object eraser. Tap a stranger in the background or a bin next to a building, and it's gone. As a photographer I was sceptical, but for casual photos it saves a lot of shots. I'd never use it to pretend a scene was different from reality, but a random tourist's elbow? Gone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Transcription and live captions.&lt;/strong&gt; Voice memos and meeting recordings turned into searchable text, on the device. This is one of those quietly life-changing features. I record a thought while walking and find it later by searching a word.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Translation.&lt;/strong&gt; Pointing a camera at a menu or a sign and reading it in my own language still feels like science fiction. Having lived and travelled abroad, this one has saved me more than once.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Search that understands what I'm looking at.&lt;/strong&gt; Google's Circle to Search, and similar visual search features, let you circle something on screen and ask about it. Useful when you see a gadget in a video and want to know what it is.&lt;/p&gt;
&lt;blockquote&gt;The best AI features don't feel like AI. They just feel like the app got smarter.&lt;/blockquote&gt;
&lt;h2&gt;The ones I've switched off&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Notification summaries, for important things.&lt;/strong&gt; The idea is great: a stack of messages squeezed into one line. In practice, summaries sometimes miss the point or get it wrong, and that's not okay when it's news or something that matters. Apple even paused summaries for news apps in early 2025 after they produced misleading headlines. I keep them for group chats and turn them off for anything serious.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rewriting my messages.&lt;/strong&gt; It's impressive that my keyboard can make a text sound more "professional" or "friendly". But when it does, it stops sounding like me. For a work email, maybe. For a message to a friend? No thanks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Chatbots squeezed into apps that didn't need them.&lt;/strong&gt; I don't need to "chat" with my shopping app. I need it to find the thing and show me the price.&lt;/p&gt;
&lt;h2&gt;How I decide&lt;/h2&gt;
&lt;p&gt;I've ended up with a simple test. A good AI feature does one of three things: it saves me real time, it does something I genuinely couldn't do before, or it removes a small annoyance without me thinking about it. A bad one makes me check its work, changes my voice, or adds a step to something that was already easy.&lt;/p&gt;
&lt;p&gt;And one more rule: if it's going to read my messages, photos or voice, I want to know where that happens. A lot of new features run on the device itself, which I much prefer. When something gets sent to a server, I'd like to be asked.&lt;/p&gt;
&lt;h2&gt;Where this is going&lt;/h2&gt;
&lt;p&gt;I think the hype will settle down, the sparkle icons will slowly disappear, and the useful features will just become normal parts of every app. Nobody calls autocorrect "AI" anymore. In a few years, that's probably how we'll talk about erasing objects from photos or translating a menu.&lt;/p&gt;
&lt;p class="sign"&gt;My rule: use the AI that gives you time back. Switch off the AI that asks for your attention.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>What if we're living in a simulation?</title>
      <link>https://deslypeter.com/writing/what-if-simulation</link>
      <guid>https://deslypeter.com/writing/what-if-simulation.html?lang=en</guid>
      <description>The idea that reality might be code, and why it keeps me up a little longer than it should.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>whatif</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;I think everyone has had this moment. You're lying in bed, staring at the ceiling, and a strange thought sneaks in: what if none of this is real? Not in a dramatic movie way. Just quietly. What if it's all running on something?&lt;/p&gt;
&lt;p&gt;It sounds like the plot of The Matrix, and partly it is. But the modern version of this idea didn't come from Hollywood. It came from a philosopher.&lt;/p&gt;
&lt;h2&gt;Where it comes from&lt;/h2&gt;
&lt;p&gt;In 2003, the Oxford philosopher Nick Bostrom published a paper with a very calm title: "Are You Living in a Computer Simulation?" His argument goes roughly like this. If a civilisation ever gets advanced enough to run realistic simulations of its ancestors, and if it actually wants to, it could run millions of them. In that case, simulated minds would massively outnumber real ones. So statistically, you'd probably be one of the simulated ones.&lt;/p&gt;
&lt;p&gt;He didn't say we definitely are. He said one of three things must be true: civilisations almost never get that advanced, or they get there and don't bother, or we're very likely in a simulation. Pick one. None of them is especially comforting.&lt;/p&gt;
&lt;blockquote&gt;The scary part isn't the idea. It's that it's surprisingly hard to argue against.&lt;/blockquote&gt;
&lt;h2&gt;Why people take it seriously&lt;/h2&gt;
&lt;p&gt;It got a big boost in 2016, when Elon Musk said on stage that the chance we're living in "base reality" is one in billions. Suddenly everyone was talking about it.&lt;/p&gt;
&lt;p&gt;And when you look at the world through that lens, some things do feel a bit suspicious. The universe runs on maths. Physics seems to have a smallest meaningful scale, below which space and time stop making sense. Light has a hard speed limit, almost like a processing limit. Physicists have even proposed experiments to look for tiny "grid" patterns in high-energy cosmic rays, the kind of fingerprint a simulation might leave.&lt;/p&gt;
&lt;h2&gt;What the evidence actually says&lt;/h2&gt;
&lt;p&gt;Here's the honest bit: there's no evidence that we're in a simulation. None of those proposed tests has found anything. And the bigger problem is that the theory is almost impossible to test. Any strange result could be explained as "that's just how the simulation works", and any normal result as "the simulation is very good". When an idea can't be proven wrong, scientists file it under philosophy, not physics.&lt;/p&gt;
&lt;p&gt;Also, simulating an entire universe down to every atom would need a computer bigger than the universe itself. Believers say the simulation could cut corners and only render what someone is looking at, like a video game. Which is a clever answer, and also exactly the kind of answer that can't be checked.&lt;/p&gt;
&lt;h2&gt;Where I land&lt;/h2&gt;
&lt;p&gt;I don't believe it. But I can't fully dismiss it either, and I think that's okay. For me the idea is less about computers and more about humility. We're tiny, we're new here, and there's a lot we don't understand.&lt;/p&gt;
&lt;p&gt;And if it is a simulation? The coffee still tastes good, the sunsets are still beautiful, and the people I love are still worth loving. Real enough for me.&lt;/p&gt;
&lt;p class="sign"&gt;Verdict: fascinating, unprovable, probably not. But fun to think about at 2 a.m.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>What if the Moon landing was staged?</title>
      <link>https://deslypeter.com/writing/what-if-moon-landing</link>
      <guid>https://deslypeter.com/writing/what-if-moon-landing.html?lang=en</guid>
      <description>The famous “proof”, the photos, and why I'm sure they really went. Mostly because of a few mirrors.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>whatif</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Look at the photo at the top. Buzz Aldrin, the American flag, the lunar module on the left, and a pitch-black sky. It's one of the most famous photographs ever taken. And for some people, it's also the evidence that the whole thing was faked. The flag looks like it's waving. There are no stars. So which is it?&lt;/p&gt;
&lt;p&gt;The Moon landing conspiracy is probably the most famous one of all. The claim is that in 1969, NASA didn't actually land on the Moon, and the whole thing was filmed in a studio to beat the Soviet Union in the space race. It really took off in 1976, when Bill Kaysing published a book called "We Never Went to the Moon". Since then it's never quite gone away.&lt;/p&gt;
&lt;h2&gt;The famous "proof"&lt;/h2&gt;
&lt;p&gt;If you've ever gone down this rabbit hole, you'll know the classics:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The flag is waving, but there's no wind on the Moon.&lt;/strong&gt; It does look like it's waving. But the flag had a horizontal rod along the top to hold it out, and it moved because the astronauts were twisting the pole into the ground. With no air to slow it down, it kept swinging longer than it would on Earth. In still frames it stays perfectly still.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;There are no stars in the sky.&lt;/strong&gt; True, and every photographer knows why. The lunar surface in sunlight is extremely bright. If you expose for a bright subject, faint stars disappear. Try photographing a lit-up building at night and see how many stars you get.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The shadows aren't parallel, so there must be studio lights.&lt;/strong&gt; On uneven ground, shadows from a single light source fall at different angles. Add perspective from a wide lens and they look even stranger. I see this in my own photos all the time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The radiation in the Van Allen belts would have killed them.&lt;/strong&gt; The belts are real and dangerous if you stay in them. Apollo crews passed through fairly quickly, on a path that avoided the worst parts. The total radiation dose they received was low, roughly in the range of a few medical scans.&lt;/p&gt;
&lt;blockquote&gt;Faking the Moon landing in 1969 would arguably have been harder than actually going.&lt;/blockquote&gt;
&lt;h2&gt;Why I'm convinced they went&lt;/h2&gt;
&lt;p&gt;This is the part that settled it for me. Apollo astronauts left retroreflectors on the Moon, basically special mirrors. Observatories on Earth still fire lasers at them today and time how long the light takes to bounce back. That's how we know the Moon is slowly drifting away from us, about 3.8 cm a year.&lt;/p&gt;
&lt;p&gt;On top of that, the Apollo missions brought back around 382 kg of Moon rock, which has been studied by scientists all over the world. NASA's Lunar Reconnaissance Orbiter has photographed the landing sites from orbit, showing the hardware and even the astronauts' tracks. And the Soviet Union, who had every reason to expose a fake, tracked the missions and never claimed it was staged.&lt;/p&gt;
&lt;p&gt;Thousands of people worked on Apollo. Keeping that many people quiet for more than fifty years would be its own miracle.&lt;/p&gt;
&lt;h2&gt;Why the theory survives anyway&lt;/h2&gt;
&lt;p&gt;I get why people doubt it. It's genuinely hard to believe. The computers were weaker than the phone in my pocket, and then we just stopped going for decades. That gap makes it feel unreal. Mistrust of governments doesn't help either.&lt;/p&gt;
&lt;p&gt;But "it sounds unbelievable" isn't the same as "it didn't happen". Sometimes humans really do pull off something incredible.&lt;/p&gt;
&lt;p class="sign"&gt;Verdict: they went. The mirrors are still up there to prove it.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>What if Atlantis was real?</title>
      <link>https://deslypeter.com/writing/what-if-atlantis</link>
      <guid>https://deslypeter.com/writing/what-if-atlantis.html?lang=en</guid>
      <description>Plato's lost city, sunken ruins, and where myth ends and history begins.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>whatif</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Every time I look down at clear, shallow water, like in the photo above, part of my brain goes looking for ruins. Square shapes. Old walls. A road under the sand. I think that's the Atlantis effect. Once you've heard the story, the sea never looks quite the same.&lt;/p&gt;
&lt;h2&gt;Where the story comes from&lt;/h2&gt;
&lt;p&gt;Here's something many people don't know: almost everything we know about Atlantis comes from one person. The Greek philosopher Plato described it around 360 BC in two of his dialogues, Timaeus and Critias.&lt;/p&gt;
&lt;p&gt;In his telling, Atlantis was a powerful island empire beyond the "Pillars of Hercules", which is usually taken to mean the Strait of Gibraltar. It was rich, advanced and proud, and it went to war against Athens. Then, as punishment from the gods, it sank into the sea "in a single day and night of misfortune". Plato said all of this happened about 9,000 years before his time.&lt;/p&gt;
&lt;blockquote&gt;Almost everything we know about Atlantis comes from one man, writing a story with a moral.&lt;/blockquote&gt;
&lt;h2&gt;The theories&lt;/h2&gt;
&lt;p&gt;People have been trying to find it ever since. A few of the favourites:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Santorini.&lt;/strong&gt; Around 1600 BC, a massive volcanic eruption destroyed the island of Thera, now Santorini, and severely damaged the Minoan civilisation. It's an advanced island culture, a sudden disaster, and the sea is involved. It's the most popular real-world candidate, even though the dates and location don't match Plato's account exactly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Bimini Road.&lt;/strong&gt; Off the Bahamas there's an underwater line of flat stones that looks a lot like a paved road. Geologists say it's natural beachrock that cracked into blocks. It still looks amazing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Eye of the Sahara.&lt;/strong&gt; The Richat Structure in Mauritania is a giant set of rings visible from space. Some people say its circles match Plato's description of Atlantis. Geologists say it's an eroded dome of rock. And it's in the middle of a desert, which is a strange place for a city that sank into the sea.&lt;/p&gt;
&lt;h2&gt;What the evidence actually says&lt;/h2&gt;
&lt;p&gt;No archaeological evidence for Atlantis has ever been found. No ruins, no artefacts, no writing from the time mentioning it. Most historians think Plato made it up as a lesson: a story about a proud, powerful nation that gets too big for itself and is destroyed. He used stories like this often to make philosophical points.&lt;/p&gt;
&lt;p&gt;The modern Atlantis craze mostly started in 1882, when an American writer called Ignatius Donnelly published a bestselling book claiming it was real and the source of all ancient civilisations. That book did more for Atlantis than Plato ever did.&lt;/p&gt;
&lt;h2&gt;Why I still love it&lt;/h2&gt;
&lt;p&gt;I don't think Atlantis was a real place. But I understand why the story has survived for more than 2,000 years. It's about something we're all a little afraid of: that everything we build could disappear, and the sea would just carry on.&lt;/p&gt;
&lt;p&gt;And who knows. The ocean is mostly unexplored. I'll keep looking down at clear water anyway.&lt;/p&gt;
&lt;p class="sign"&gt;Verdict: a brilliant story, probably not a real place. Santorini is the best "maybe".&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>What if the Mandela Effect is real?</title>
      <link>https://deslypeter.com/writing/what-if-mandela-effect</link>
      <guid>https://deslypeter.com/writing/what-if-mandela-effect.html?lang=en</guid>
      <description>Why so many of us remember things that never happened, and why it's even weirder than it sounds.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>whatif</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Quick test. How do you spell the name of the cartoon bear family? Berenstein Bears? It's Berenstain. With an "a".&lt;/p&gt;
&lt;p&gt;In Star Wars, Darth Vader says "Luke, I am your father", right? He doesn't. The actual line is "No, I am your father." And the Monopoly man has a monocle. Except he doesn't, and he never did.&lt;/p&gt;
&lt;p&gt;If you got any of those wrong, you're in very good company. This is the Mandela Effect, and the first time I fell into it, I genuinely felt a bit dizzy.&lt;/p&gt;
&lt;h2&gt;Where the name comes from&lt;/h2&gt;
&lt;p&gt;The term was coined around 2009 by Fiona Broome, a paranormal researcher. She discovered that she, and lots of other people, clearly remembered Nelson Mandela dying in prison in the 1980s. Some even remembered news coverage of his funeral. In reality, Mandela was released in 1990, became President of South Africa, and died in 2013.&lt;/p&gt;
&lt;p&gt;So many people shared the same false memory that it got a name.&lt;/p&gt;
&lt;blockquote&gt;The strangest part isn't being wrong. It's being wrong in exactly the same way as millions of strangers.&lt;/blockquote&gt;
&lt;h2&gt;The wild explanation&lt;/h2&gt;
&lt;p&gt;Here's where the rabbit hole gets deep. Some people believe the Mandela Effect is evidence of parallel universes. The theory goes that we've slipped between slightly different realities, and in our original one, it really was "Berenstein" and the Monopoly man really did have a monocle. Some people blame the particle collider at CERN for "shifting" timelines.&lt;/p&gt;
&lt;p&gt;I'll be honest, it's a fun idea. It would explain everything. It's also the kind of explanation that explains everything without needing any evidence.&lt;/p&gt;
&lt;h2&gt;What science says&lt;/h2&gt;
&lt;p&gt;The less dramatic, but honestly more interesting, answer is that human memory doesn't work like a video recording. Every time you remember something, your brain rebuilds it, filling in gaps with what seems likely. And "likely" is shaped by patterns. "-stein" is a far more common name ending than "-stain". Rich old cartoon tycoons often wear monocles. "Luke, I am your father" is how everyone quotes the line, so that's what gets reinforced.&lt;/p&gt;
&lt;p&gt;In 2022, psychologists Deepasri Prasad and Wilma Bainbridge published a study showing that people consistently got the same details wrong in famous logos and characters, like Pikachu's tail (no black tip) and the Fruit of the Loom logo (no cornucopia). The errors weren't random. Many people made the same mistakes, even about images they'd seen thousands of times.&lt;/p&gt;
&lt;h2&gt;Where I land&lt;/h2&gt;
&lt;p&gt;I don't think we're sliding between universes. I think our brains are prediction machines that are usually right and occasionally, collectively, very wrong.&lt;/p&gt;
&lt;p&gt;And honestly, that's a bit humbling. If I can be completely sure about a cartoon bear's name and still be wrong, what else am I sure about? Maybe that's the real lesson. Hold your memories a little more loosely.&lt;/p&gt;
&lt;p class="sign"&gt;Verdict: real effect, no parallel universes required. Your brain is just guessing, confidently.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>What if the Bermuda Triangle is cursed?</title>
      <link>https://deslypeter.com/writing/what-if-bermuda-triangle</link>
      <guid>https://deslypeter.com/writing/what-if-bermuda-triangle.html?lang=en</guid>
      <description>Lost ships, missing planes, and what the numbers actually say about the world's most famous patch of sea.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>whatif</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;I took the photo above on a beach at dusk. A whole ship, run aground and left on the sand, black against a pink sky. Standing next to something that big, built to survive the ocean, and seeing the ocean win anyway, you understand why sailors have always told scary stories about the sea. It's beautiful, it's huge, and it doesn't care about you at all.&lt;/p&gt;
&lt;p&gt;The Bermuda Triangle is the most famous of those stories. A rough triangle of the Atlantic between Miami, Bermuda and Puerto Rico, where ships and planes supposedly vanish without a trace.&lt;/p&gt;
&lt;h2&gt;The legend&lt;/h2&gt;
&lt;p&gt;The name was coined in 1964 by a writer called Vincent Gaddis, in a magazine article. Ten years later, Charles Berlitz published "The Bermuda Triangle", which became a huge bestseller. Explanations ranged from strange magnetic fields to alien abductions to leftover technology from, yes, Atlantis.&lt;/p&gt;
&lt;p&gt;And there were real disappearances to point to. In 1918, the US Navy ship USS Cyclops vanished with about 300 people on board, and no wreck has ever been found. In 1945, five US Navy bombers known as Flight 19 disappeared during a training flight, and a rescue plane sent to find them was lost too. Stories like that are genuinely chilling.&lt;/p&gt;
&lt;blockquote&gt;The ocean doesn't need a curse to be dangerous. That's the scary part.&lt;/blockquote&gt;
&lt;h2&gt;What the numbers say&lt;/h2&gt;
&lt;p&gt;Here's what surprised me when I looked into it. The Bermuda Triangle isn't statistically more dangerous than other busy stretches of ocean. The US Coast Guard doesn't recognise it as an especially dangerous area. Lloyd's of London, the insurance market, which knows a thing or two about ships sinking, doesn't charge higher rates to sail through it.&lt;/p&gt;
&lt;p&gt;It's one of the busiest shipping and flight areas in the world. More traffic means more accidents, simply by numbers. Add the Gulf Stream, a fast, powerful current that can scatter wreckage quickly, sudden tropical storms, and some very deep water, and you have plenty of reasons for things to go wrong without anything supernatural.&lt;/p&gt;
&lt;p&gt;In 1975, a librarian called Larry Kusche went back to the original records of the famous cases. He found that many of the "mysteries" had been exaggerated, some ships had sunk in storms that the legends didn't mention, and a few hadn't even been in the Triangle at all.&lt;/p&gt;
&lt;h2&gt;Why the legend won't die&lt;/h2&gt;
&lt;p&gt;Because it's a great story. A mysterious triangle on the map, a few real tragedies, and the human brain's love of patterns. Once something has a scary name, every accident nearby becomes "another one".&lt;/p&gt;
&lt;p&gt;And there's something comforting about a curse, in a strange way. A curse means there's a reason. The truth, that the ocean is simply powerful and sometimes things go wrong, is harder to sit with.&lt;/p&gt;
&lt;p class="sign"&gt;Verdict: not cursed. Just a busy, stormy, beautiful, dangerous piece of sea. Like a lot of the sea.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>Munich, again and again</title>
      <link>https://deslypeter.com/writing/munich-again-and-again</link>
      <guid>https://deslypeter.com/writing/munich-again-and-again.html?lang=en</guid>
      <description>Work brought me here many times. Every time, the city gave me something new to carry home.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>writing</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Munich is a city that's very close to my heart. I didn't plan for that. I went there for work, and then I kept going back for work, and somewhere between all those trips it stopped feeling like a business destination and started feeling like a place that knew me.&lt;/p&gt;
&lt;p&gt;The photo at the top is from one of those visits. That's St. Paul's Church on the left, and on the right, tents and rides spread out below the rooftops. The whole city glowing in the evening light. I remember standing there thinking it looked like a toy model of itself.&lt;/p&gt;
&lt;h2&gt;A new piece of history every time&lt;/h2&gt;
&lt;p&gt;The funny thing about visiting a city many times is that you'd expect it to get boring. Munich never did. Every trip I found a new place, a new corner with a story behind it. A church I'd somehow walked past ten times without going in. A square with a history I'd never heard of. A building that had survived things I could barely imagine.&lt;/p&gt;
&lt;p&gt;It's a city that rewards you for paying attention. You think you've seen it, and then it shows you something else.&lt;/p&gt;
&lt;h2&gt;The beer&lt;/h2&gt;
&lt;p&gt;I have to say it. The beer is on another level. I'm not an expert and I won't pretend to be. But sitting in a beer garden on a long summer evening, with a proper Maß in front of you and people you like around the table, is one of those simple things that's very hard to beat. I wrote about one of those evenings in &lt;a href="https://deslypeter.com/writing/crackling-in-munich.html"&gt;Crackling in Munich&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;Some cities you visit for work. Some cities end up working on you.&lt;/blockquote&gt;
&lt;h2&gt;The first winter&lt;/h2&gt;
&lt;p&gt;My first winter there was really an experience. Coming from Kerala, cold is not something you understand until it actually hits you. Short days, grey skies, breath you can see, and the strange joy of walking into a warm café after being outside for too long. I learned a lot that winter, mostly about layers.&lt;/p&gt;
&lt;h2&gt;Family, even at work&lt;/h2&gt;
&lt;p&gt;What made Munich special, though, wasn't the buildings or the beer. It was the people. Even at work, everyone was considered family. Colleagues became friends, and friends became the reason I looked forward to every trip back.&lt;/p&gt;
&lt;p&gt;When I think about Munich now, three things come to mind: friends, travel and work. All mixed together, and all good. Those are the things I carry in my heart from that city.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>Kozhikode, close to my heart</title>
      <link>https://deslypeter.com/writing/kozhikode-close-to-my-heart</link>
      <guid>https://deslypeter.com/writing/kozhikode-close-to-my-heart.html?lang=en</guid>
      <description>Biryani, an evening walk around Mananchira, kites over the beach, and a city that feels like a warm hug.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>writing</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Some cities you visit. Some cities stay with you. Kozhikode is the second kind for me.&lt;/p&gt;
&lt;p&gt;My wife and I travelled there together, and I still think about that time more than I probably should. It wasn't a big, fancy trip. We didn't tick off a list of sights. We mostly walked, ate, talked to people, and ate some more. And somehow that turned into one of my favourite memories of us.&lt;/p&gt;
&lt;h2&gt;The food&lt;/h2&gt;
&lt;p&gt;Let's be honest, half the reason anyone goes to Kozhikode is the food. The delicacies there are just alluring. You walk past a restaurant and the smell alone changes your plans for the evening.&lt;/p&gt;
&lt;p&gt;We went to Paragon, because you have to go to Paragon. We went to Rahmath, because everyone told us to, and everyone was right. And then there was Kuttichira biryani, which is a whole different thing. The rice is small-grained and fragrant, the meat falls apart, and every plate tastes like someone's family has been perfecting it for generations. Which, honestly, they probably have.&lt;/p&gt;
&lt;blockquote&gt;I've eaten biryani in a lot of places since. It's good. It's just not Kozhikode.&lt;/blockquote&gt;
&lt;p&gt;Missing those. A lot. Some nights I seriously consider whether a flight is a reasonable price to pay for one plate.&lt;/p&gt;
&lt;h2&gt;The evenings&lt;/h2&gt;
&lt;p&gt;In the evenings we walked around Mananchira square. Nothing special happens there, and that's exactly the point. People sitting on benches, kids running around, families out for a slow walk after dinner. You just become part of the city for an hour.&lt;/p&gt;
&lt;p&gt;And then the beach. The photo at the top was taken there, at sunset. The whole sky went orange, and the old broken pier stood out in the water like a row of dark teeth, gulls sitting on top of the posts. Someone walked slowly along the wet sand and their reflection walked with them. Everyone in the city seems to come out at that hour. Nobody is in a hurry.&lt;/p&gt;
&lt;h2&gt;The people&lt;/h2&gt;
&lt;p&gt;What I remember most, though, is the people. They are nice in a way that doesn't feel like politeness. Someone gives you directions and then walks you halfway there. A shopkeeper asks where you're from and suddenly you've been chatting for ten minutes. You leave feeling like you made friends, even if you never learned their names.&lt;/p&gt;
&lt;p&gt;Kozhikode is so close to my heart. Part of it is the city. Part of it is the biryani. But mostly, I think, it's that it was ours.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>Crackling in Munich</title>
      <link>https://deslypeter.com/writing/crackling-in-munich</link>
      <guid>https://deslypeter.com/writing/crackling-in-munich.html?lang=en</guid>
      <description>A beer garden, a glass of beer the size of my head, and a plate of Schweinshaxe that ruined all other pork for me.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>writing</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;The day after Königssee we ended up in Munich, sitting in a beer garden, very hungry. When in Bavaria, you order the thing Bavaria is famous for. So I ordered Schweinshaxe.&lt;/p&gt;
&lt;p&gt;If you haven't had it: it's pork knuckle, roasted slowly for hours until the skin turns into crackling. It comes with a big potato dumpling and a dark gravy that you will want to drink with a spoon. Nobody tells you how big it is. Nobody tells you how loud it is either. The first time your knife goes through that crackling, it actually makes a sound, like breaking a very thin, very delicious window.&lt;/p&gt;
&lt;blockquote&gt;Some food you eat. Some food you remember. This was the second kind.&lt;/blockquote&gt;
&lt;h2&gt;The table&lt;/h2&gt;
&lt;p&gt;The beer came in a proper Maß, one full litre in a glass so heavy you need two hands for the first few sips. Across the table someone had ordered roast duck, with red cabbage and a slice of orange on the side, and it looked so good I took a photo of that plate too.&lt;/p&gt;
&lt;p&gt;The photo at the top of this page says more about that evening than anything I can write. The Schweinshaxe in front. The Maß on the left, already half gone. And behind it, a friend in a blue hoodie, phone in hand, also taking a picture of his food. We were all doing the same thing. It wasn't really about the food anymore. It was about wanting to keep the moment.&lt;/p&gt;
&lt;h2&gt;What I learned&lt;/h2&gt;
&lt;p&gt;Bavarian food is not light food. It is food that assumes you walked up a mountain that morning. Which, in a way, we kind of had.&lt;/p&gt;
&lt;p&gt;I've had pork knuckle a few times since. It's never quite the same. Maybe the recipe was special. Or maybe it was the beer garden, the long evening, and the tired, happy feeling after two days of road trip and lakes and churches. I suspect it was mostly that.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>A church under the Alps</title>
      <link>https://deslypeter.com/writing/a-church-under-the-alps</link>
      <guid>https://deslypeter.com/writing/a-church-under-the-alps.html?lang=en</guid>
      <description>A road trip to Königssee, a surprise on the way, and a boat ride I still think about.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>writing</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Some trips you remember for one big moment. This one I remember in pieces, and all of them are good.&lt;/p&gt;
&lt;p&gt;It started as a road trip. The kind where the drive is half the point. Green fields, small Bavarian villages, and the mountains slowly getting bigger in the windscreen until they stopped looking like a postcard and started looking like a wall.&lt;/p&gt;
&lt;p&gt;On the way we passed a Fossil watch production unit. I don't know why that stuck with me so much. Maybe because I'd only ever seen those watches in shop windows, behind glass, and here was the place they actually came from, just sitting by the road like any other building. It's a strange feeling when something you know as a brand suddenly becomes a real place.&lt;/p&gt;
&lt;h2&gt;The boat&lt;/h2&gt;
&lt;p&gt;At Königssee you can't just drive to the church. You take a boat across the lake. The water is this unreal green, so clear you keep looking over the side, and the mountains come straight down into it on both sides.&lt;/p&gt;
&lt;p&gt;The boat trip was fantastic. There was music on board, and a guide who explained the history of the place as we went: why the church was built where it is, what the lake has meant to people here for centuries. I understood maybe most of it. It didn't matter. The voice, the music and the quiet of the lake all kind of blended together.&lt;/p&gt;
&lt;blockquote&gt;Some places don't need you to understand them. They just need you to be quiet for a minute.&lt;/blockquote&gt;
&lt;h2&gt;The church&lt;/h2&gt;
&lt;p&gt;And then St. Bartholomä comes into view. A small white church with red onion domes, sitting right at the edge of the water, with the Alps rising up behind it. Honestly, the architecture was a blessing for the eyes. It looks almost too perfect, like someone placed it there to make the mountains look even bigger.&lt;/p&gt;
&lt;p&gt;I took this photo on my iPhone 7 Plus. Nothing special in terms of gear. But I remember standing there thinking I didn't need a better camera. I just needed to not mess it up.&lt;/p&gt;
&lt;p&gt;I've taken a lot of photos since then, with much better cameras. This one is still on the wall in my head.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>Twenty minutes of blue</title>
      <link>https://deslypeter.com/writing/twenty-minutes-of-blue</link>
      <guid>https://deslypeter.com/writing/twenty-minutes-of-blue.html?lang=en</guid>
      <description>A small autumn walk through Offenburg, and the short window after sunset when everything looks better than it should.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>writing</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;Everyone talks about golden hour. It's nice, sure. Warm light, long shadows, everyone looks good. But I've slowly become a blue hour person.&lt;/p&gt;
&lt;p&gt;Blue hour is the time right after sunset, before it's fully dark. The sky becomes a deep, clean blue, and the city lights come on. For a short while, the sky and lights balance each other. The sky isn't too bright, the lights aren't too harsh. Everything just glows.&lt;/p&gt;
&lt;p&gt;The problem is it doesn't last. Twenty minutes, maybe thirty if the weather is kind. Then the sky goes black and it's just a night photo.&lt;/p&gt;
&lt;h2&gt;A small walk in Offenburg&lt;/h2&gt;
&lt;p&gt;This one happened on an autumn evening in Offenburg. Nothing planned. We just went out for a small walk through town, the kind you take to stretch your legs after a long day, and ended up in the town square.&lt;/p&gt;
&lt;p&gt;And then the sky did that thing. It turned that exact shade of blue. The big canopy over the square was lit from underneath in pink and purple, the tree beside it still had its yellow autumn leaves catching the street light, and people were standing around a small stall like it was any other evening. For them, it was.&lt;/p&gt;
&lt;p&gt;I stopped and took the photo. It's the one at the top of this page, and still one of my favourites.&lt;/p&gt;
&lt;blockquote&gt;Good light doesn't wait for you to be ready. You either carry the camera or you don't.&lt;/blockquote&gt;
&lt;p&gt;I think about this outside photography too. A lot of the good stuff comes in short windows. A conversation that only happens because you stayed out ten minutes longer. A walk you almost skipped because you were tired.&lt;/p&gt;
&lt;p&gt;That probably sounds like a fridge magnet. I'm still learning how to say these things without sounding like one. But I do believe it.&lt;/p&gt;
&lt;p&gt;So now I check sunset times. If I'm out and the sky starts turning blue, I stop and look around. Most evenings nothing happens. Some evenings you get the square.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>The cat who taught me to wait</title>
      <link>https://deslypeter.com/writing/the-cat-who-taught-me-to-wait</link>
      <guid>https://deslypeter.com/writing/the-cat-who-taught-me-to-wait.html?lang=en</guid>
      <description>My first real camera, a lot of blurry photos, and the most patient teacher I've had.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>writing</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;The Canon 4000D is not a fancy camera. It's the one shops recommend when you say "I want to get into photography" and then mention a budget. When I bought it, for the first few weeks I shot everything on the green auto mode, because the dial had too many letters on it and I didn't want to admit I didn't know what half of them meant.&lt;/p&gt;
&lt;p&gt;The photos were fine. They looked like phone photos, just heavier.&lt;/p&gt;
&lt;p&gt;Then there was this cat. Orange and white, it seemed to live nowhere and everywhere. It had a favourite spot on a black metal rail outside. Every afternoon around four, it would stretch out there like it owned the place. I started trying to photograph it mostly because it was the only subject that would sit still long enough for me to fiddle with settings.&lt;/p&gt;
&lt;h2&gt;Learning by getting it wrong&lt;/h2&gt;
&lt;p&gt;I switched to aperture priority because a YouTube video told me to. Opened the lens up as wide as the kit lens would go. Zoomed all the way in. Suddenly the background melted into this soft green blur and the cat looked like it was in a magazine. I genuinely said "oh" out loud.&lt;/p&gt;
&lt;p&gt;Most of the photos were still bad. The focus would land on the rail instead of the eyes. Or the cat would blink. Or yawn, which is either the worst or the best photo depending on your mood. I took maybe two hundred pictures of that one animal over a couple of weeks.&lt;/p&gt;
&lt;blockquote&gt;The cat never moved for me. I had to learn to move for the cat.&lt;/blockquote&gt;
&lt;p&gt;What it actually taught me wasn't about aperture. It was about waiting. You don't take a good photo of a cat. You sit near a cat for twenty minutes until it decides to look at you for half a second, and you'd better be ready when it does.&lt;/p&gt;
&lt;p&gt;That's become how I shoot pretty much everything now. People, light, streets. I get set up, I get quiet, and I wait for the half second.&lt;/p&gt;
&lt;p&gt;I don't know where the cat is now. I hope it found a warmer rail.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>Where the road runs out</title>
      <link>https://deslypeter.com/writing/where-the-road-runs-out</link>
      <guid>https://deslypeter.com/writing/where-the-road-runs-out.html?lang=en</guid>
      <description>Two bikes, one GoPro with a dying battery, and a strip of tar with the sea on both sides.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>writing</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;We left before five because someone had read online that the wind gets bad after noon. Nobody checked if that was true. It didn't matter. Leaving in the dark always makes a trip feel more serious than it is.&lt;/p&gt;
&lt;p&gt;There were two of us and two KTMs. Mine had a bag strapped to the back that kept sliding left no matter how many times I fixed it. By the time the sun was properly up we'd stopped three times, twice for the bag and once for tea that was mostly sugar.&lt;/p&gt;
&lt;p&gt;The Pamban bridge is the first moment you realise you're going somewhere strange. The land just stops and the road keeps going. The water underneath isn't one colour, it's about six, and they change as clouds pass. I pulled over, which you probably shouldn't do on a bridge, and held the GoPro out over the railing as far as my arm would go. That's the photo on this site. I didn't frame it. I just pointed and hoped.&lt;/p&gt;
&lt;blockquote&gt;Some of my favourite photos are ones I didn't really take. I just happened to be holding the camera.&lt;/blockquote&gt;
&lt;p&gt;After Rameswaram the road to Dhanushkodi gets thinner and thinner until it feels like a ruler laid on top of the sea. Water on the left, water on the right. The wind was exactly as bad as the internet promised. At the end there's a roundabout, and then nothing. Just sand, and the idea that Sri Lanka is somewhere out there, closer than most cities I've been to.&lt;/p&gt;
&lt;p&gt;We sat there longer than planned. Nobody said much. The GoPro died around then, which is why the shot of the bike at dusk is from my phone. I almost didn't take it because I thought phone photos "didn't count". Funny, it's one of the ones people ask me about most.&lt;/p&gt;
&lt;h2&gt;What I kept&lt;/h2&gt;
&lt;p&gt;I don't remember most of the ride back. I remember the colour of the water from the bridge, the sound the wind made in my helmet, and my friend laughing at my bag sliding off for the fourth time. The photos help, but honestly they mostly remind me of things the camera didn't catch.&lt;/p&gt;
&lt;p&gt;I want to go back with a proper camera one day. I also kind of don't. Some places are better as one imperfect memory.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
    <item>
      <title>The photos I don't post</title>
      <link>https://deslypeter.com/writing/the-photos-i-dont-post</link>
      <guid>https://deslypeter.com/writing/the-photos-i-dont-post.html?lang=en</guid>
      <description>My best work is of people I love. Most of it will never be on this site, and that's fine.</description>
      <pubDate>Sun, 18 Oct 2026 15:57:29 +0200</pubDate>
      <category>writing</category>
      <content:encoded>
  &lt;div class="body"&gt;
&lt;p&gt;If you scroll through the photographs on this site you'll see cats, bikes, bridges, the sea. What you won't see is what I actually shoot the most, which is people. Mostly family. Kids at family gatherings, couples on their big days, grandparents who don't want their photo taken and then ask for a copy.&lt;/p&gt;
&lt;p&gt;Honestly, that's where my best work is. Portraits taught me more than anything else. Getting the eyes sharp when a one-year-old won't stop moving. Finding the one spot in a backyard where the light falls softly. Making someone who hates cameras laugh just long enough.&lt;/p&gt;
&lt;h2&gt;So why not show them?&lt;/h2&gt;
&lt;p&gt;Because they're not really mine to show. Those moments belong to the people in them. A toddler can't agree to being on a stranger's screen. A family celebration isn't content. When I took those photos, nobody was thinking about a website. They trusted me with a camera at a private moment, and I'd like to keep that trust.&lt;/p&gt;
&lt;blockquote&gt;A photo can be your best work and still not be yours to share.&lt;/blockquote&gt;
&lt;p&gt;The photo at the top of this page is the closest I'll get. It's a silhouette of a kid watching the sun go down. You can't tell who it is. I like it partly for that reason. It could be anyone's kid on anyone's balcony. It feels more universal because it's anonymous.&lt;/p&gt;
&lt;h2&gt;What it changed&lt;/h2&gt;
&lt;p&gt;Thinking about this actually made me a better photographer, I think. When you're not shooting for likes, you shoot for the people in front of you. You care if &lt;em&gt;they&lt;/em&gt; love the photo, not if it does well online. Some of my favourite pictures have only been seen by about five people, and those five people have them printed on a wall.&lt;/p&gt;
&lt;p&gt;That's a pretty good audience, if you ask me.&lt;/p&gt;

    &lt;p class="sign"&gt;— Desly&lt;/p&gt;
  &lt;/div&gt;
</content:encoded>
    </item>
  </channel>
</rss>