Skip to content
Dean’s
blog
  • Home
  • Stories
  • About

Tags

RSS feed
  • swift

    • Backend APIs: Constant evolution but tethered to the past

      May 12

    • SwiftUI Previews-based architecture

      Mar 15

    • One-way bindings in SwiftUI

      Jan 21

    • Asynchronous SwiftUI buttons

      Jan 14

    • Build a location sensitive iOS widget

      Dec 10

    • How (not) to monitor SwiftUI @State

      Oct 21

    • The curious case of ShareLink with plain text strings

      Sep 24

    • Shake to undo in a SwiftUI app

      Sep 5

    • Implement iOS 17’s new AirDrop experience

      Jun 14

    • SwiftUI backward-compatibility with Disfavored Overload

      Jun 10

    • Leveraging SwiftUI for any app extension

      Mar 31

    • Build a Vapor app on Debian 11

      Jan 25

    • Avoid 5 common mistakes with AES encryption

      Jul 12

    • iOS disclosure indicators done right

      Aug 12

    • iOS basics: UITableView setup with Swift 3

      Aug 7

  • ios

    • SwiftUI Previews-based architecture

      Mar 15

    • One-way bindings in SwiftUI

      Jan 21

    • Asynchronous SwiftUI buttons

      Jan 14

    • Don’t ship API keys!

      Dec 14

    • Build a location sensitive iOS widget

      Dec 10

    • How (not) to monitor SwiftUI @State

      Oct 21

    • The curious case of ShareLink with plain text strings

      Sep 24

    • Shake to undo in a SwiftUI app

      Sep 5

    • SwiftUI backward-compatibility with Disfavored Overload

      Jun 10

    • Leveraging SwiftUI for any app extension

      Mar 31

    • Generating lottery numbers using CryptoKit

      Jun 25

    • Avoid 5 common mistakes with AES encryption

      Jul 12

    • iOS disclosure indicators done right

      Aug 12

    • iOS basics: UITableView setup with Swift 3

      Aug 7

  • indie dev

    • Indie Diary #9 — What do we do now?

      Jun 22

    • Indie Diary #8 — Giving watchOS the love it deserves

      Aug 15

    • Indie Diary #7 — Recharging batteries

      May 1

    • Indie Diary #6 — Building a new app

      Mar 7

    • Indie Diary #5 — A year in review.

      Dec 31

    • Indie Diary #4 — SharePal launch.

      Nov 1

    • Indie Diary #3 — Conferences, support, preparing a launch.

      Oct 8

    • Indie Diary #2 — Padlok big release, and building Lego

      Aug 20

    • Indie Diary #1 — Indie App Sales

      Jul 16

    • Struggling: you’re not alone, you’re learning!

      Mar 3

    • Building a share feature with privacy in mind

      Mar 6

  • diary

    • Indie Diary #9 — What do we do now?

      Jun 22

    • Indie Diary #8 — Giving watchOS the love it deserves

      Aug 15

    • Indie Diary #7 — Recharging batteries

      May 1

    • Indie Diary #6 — Building a new app

      Mar 7

    • Indie Diary #5 — A year in review.

      Dec 31

    • Indie Diary #4 — SharePal launch.

      Nov 1

    • Indie Diary #3 — Conferences, support, preparing a launch.

      Oct 8

    • Indie Diary #2 — Padlok big release, and building Lego

      Aug 20

    • Indie Diary #1 — Indie App Sales

      Jul 16

    • Struggling: you’re not alone, you’re learning!

      Mar 3

  • swiftui

    • SwiftUI Previews-based architecture

      Mar 15

    • One-way bindings in SwiftUI

      Jan 21

    • Asynchronous SwiftUI buttons

      Jan 14

    • How (not) to monitor SwiftUI @State

      Oct 21

    • The curious case of ShareLink with plain text strings

      Sep 24

    • Shake to undo in a SwiftUI app

      Sep 5

    • Implement iOS 17’s new AirDrop experience

      Jun 14

    • SwiftUI backward-compatibility with Disfavored Overload

      Jun 10

    • Leveraging SwiftUI for any app extension

      Mar 31

  • padlok

    • Indie Diary #8 — Giving watchOS the love it deserves

      Aug 15

    • Indie Diary #5 — A year in review.

      Dec 31

    • Build a location sensitive iOS widget

      Dec 10

    • Indie Diary #4 — SharePal launch.

      Nov 1

    • Indie Diary #3 — Conferences, support, preparing a launch.

      Oct 8

    • Indie Diary #2 — Padlok big release, and building Lego

      Aug 20

    • Indie Diary #1 — Indie App Sales

      Jul 16

    • Building a share feature with privacy in mind

      Mar 6

  • apple

    • Attending Apple Intelligence and App Intents workshop at Paris

      Jan 17

    • Attending WWDC24 recap at Apple Paris

      Jun 27

    • Target iOS beta while using regular Xcode.app

      Feb 12

    • Generating lottery numbers using CryptoKit

      Jun 25

    • A (long) week at  WWDC19

      Jun 7

    • Attending  WWDC19

      Apr 1

  • event

    • Attending Apple Intelligence and App Intents workshop at Paris

      Jan 17

    • Attending WWDC24 recap at Apple Paris

      Jun 27

    • A (long) week at  WWDC19

      Jun 7

    • Attending  WWDC19

      Apr 1

  • sharepal

    • Indie Diary #5 — A year in review.

      Dec 31

    • Indie Diary #4 — SharePal launch.

      Nov 1

    • How (not) to monitor SwiftUI @State

      Oct 21

    • Indie Diary #3 — Conferences, support, preparing a launch.

      Oct 8

  • debian

    • Build a Vapor app on Debian 11

      Jan 25

    • IPv6 setup on Debian 9 Stretch

      Apr 14

    • Keep PHP up to date on Debian 9 Stretch

      Mar 20

  • share

    • The curious case of ShareLink with plain text strings

      Sep 24

    • Implement iOS 17’s new AirDrop experience

      Jun 14

    • Building a share feature with privacy in mind

      Mar 6

  • uikit

    • Implement iOS 17’s new AirDrop experience

      Jun 14

    • iOS disclosure indicators done right

      Aug 12

    • iOS basics: UITableView setup with Swift 3

      Aug 7

  • website

    • Automatic rsync deployment with Github Workflows

      Mar 17

    • Safari theme color and notch support

      Jun 27

    • Embrace macOS’s dark mode with Safari

      Mar 27

  • wwdc

    • Attending WWDC24 recap at Apple Paris

      Jun 27

    • A (long) week at  WWDC19

      Jun 7

    • Attending  WWDC19

      Apr 1

  • airdrop

    • The curious case of ShareLink with plain text strings

      Sep 24

    • Implement iOS 17’s new AirDrop experience

      Jun 14

  • api

    • Backend APIs: Constant evolution but tethered to the past

      May 12

    • Don’t ship API keys!

      Dec 14

  • backward-compatibility

    • How (not) to monitor SwiftUI @State

      Oct 21

    • SwiftUI backward-compatibility with Disfavored Overload

      Jun 10

  • blog

    • Renewing the blog (again!)

      Jul 31

    • Renewing the blog

      Aug 6

  • cryptography

    • Generating lottery numbers using CryptoKit

      Jun 25

    • Avoid 5 common mistakes with AES encryption

      Jul 12

  • css

    • Safari theme color and notch support

      Jun 27

    • Embrace macOS’s dark mode with Safari

      Mar 27

  • github

    • Renewing the blog (again!)

      Jul 31

    • Automatic rsync deployment with Github Workflows

      Mar 17

  • jekyll

    • Renewing the blog (again!)

      Jul 31

    • Renewing the blog

      Aug 6

  • network

    • Build a privacy-safe home network using Pi-hole

      Oct 20

    • How anyone could feed my cat

      Jan 31

  • ops

    • IPv6 setup on Debian 9 Stretch

      Apr 14

    • Keep PHP up to date on Debian 9 Stretch

      Mar 20

  • security

    • Don’t ship API keys!

      Dec 14

    • How anyone could feed my cat

      Jan 31

  • server

    • IPv6 setup on Debian 9 Stretch

      Apr 14

    • Keep PHP up to date on Debian 9 Stretch

      Mar 20

  • uitableview

    • iOS disclosure indicators done right

      Aug 12

    • iOS basics: UITableView setup with Swift 3

      Aug 7

  • vapor

    • Backend APIs: Constant evolution but tethered to the past

      May 12

    • Build a Vapor app on Debian 11

      Jan 25

  • aes

    • Avoid 5 common mistakes with AES encryption

      Jul 12

  • ai

    • Indie Diary #9 — What do we do now?

      Jun 22

  • app-intents

    • Attending Apple Intelligence and App Intents workshop at Paris

      Jan 17

  • backend

    • Don’t ship API keys!

      Dec 14

  • beta

    • Target iOS beta while using regular Xcode.app

      Feb 12

  • continuous integration

    • Automatic rsync deployment with Github Workflows

      Mar 17

  • cryptokit

    • Generating lottery numbers using CryptoKit

      Jun 25

  • cybersecurity

    • How anyone could feed my cat

      Jan 31

  • dark mode

    • Embrace macOS’s dark mode with Safari

      Mar 27

  • deployment

    • Automatic rsync deployment with Github Workflows

      Mar 17

  • disclosure indicator

    • iOS disclosure indicators done right

      Aug 12

  • dns

    • Build a privacy-safe home network using Pi-hole

      Oct 20

  • dotclear

    • Renewing the blog

      Aug 6

  • encryption

    • Avoid 5 common mistakes with AES encryption

      Jul 12

  • homekit

    • Indie Diary #6 — Building a new app

      Mar 7

  • hugo

    • Renewing the blog (again!)

      Jul 31

  • internet of things

    • How anyone could feed my cat

      Jan 31

  • ios17

    • Implement iOS 17’s new AirDrop experience

      Jun 14

  • iot

    • How anyone could feed my cat

      Jan 31

  • ipv6

    • IPv6 setup on Debian 9 Stretch

      Apr 14

  • journey

    • Struggling: you’re not alone, you’re learning!

      Mar 3

  • lan

    • Build a privacy-safe home network using Pi-hole

      Oct 20

  • launch

    • Indie Diary #4 — SharePal launch.

      Nov 1

  • location

    • Build a location sensitive iOS widget

      Dec 10

  • namedrop

    • Implement iOS 17’s new AirDrop experience

      Jun 14

  • nsspain

    • Indie Diary #3 — Conferences, support, preparing a launch.

      Oct 8

  • omee

    • Indie Diary #6 — Building a new app

      Mar 7

  • php

    • Keep PHP up to date on Debian 9 Stretch

      Mar 20

  • pihole

    • Build a privacy-safe home network using Pi-hole

      Oct 20

  • privacy

    • Building a share feature with privacy in mind

      Mar 6

  • random

    • Generating lottery numbers using CryptoKit

      Jun 25

  • raspberry pi

    • Build a privacy-safe home network using Pi-hole

      Oct 20

  • rest

    • Backend APIs: Constant evolution but tethered to the past

      May 12

  • safari

    • Safari theme color and notch support

      Jun 27

  • safe area

    • Safari theme color and notch support

      Jun 27

  • sales

    • Indie Diary #1 — Indie App Sales

      Jul 16

  • server-side

    • Build a Vapor app on Debian 11

      Jan 25

  • swift packages

    • Indie Diary #2 — Padlok big release, and building Lego

      Aug 20

  • update

    • Indie Diary #2 — Padlok big release, and building Lego

      Aug 20

  • watchos

    • Indie Diary #8 — Giving watchOS the love it deserves

      Aug 15

  • widget

    • Build a location sensitive iOS widget

      Dec 10

  • workflows

    • Automatic rsync deployment with Github Workflows

      Mar 17

  • xcode

    • Target iOS beta while using regular Xcode.app

      Feb 12

Thomas Durand (a.k.a Dean)

Indie developer of SharePal (opens in a new tab) and Padlok (opens in a new tab) iOS app.

Software architect, code owner and security engineer at DiliTrust (opens in a new tab) in Paris.

iOS and backend developer, keen photographer, currently in love with Swift (opens in a new tab).