@ctietze@mastodon.social
@ctietze@mastodon.social avatar

ctietze

@ctietze@mastodon.social

Developer of indie macOS apps. The Archive, WordCounter, TableFlip, Move!

Using #Xcode to write #Swift and sometimes #SwiftUI apps for #iOS and #Mac.

OG #Zettelkasten zealot.
Local #urbansketchers group founder.

#Bielefeld (Germany)

─────────────
#fedi22

This profile is from a federated server and may be incomplete. Browse more on the original instance.

ctietze, to emacs
@ctietze@mastodon.social avatar

Anyone using #Emacs org mode with programmatic searches, e.g. with org-ql.el, or buffer regexp matching, who collects the resulting headings with body text?

Use case: my headlines are workout summaries, but below each headings there is a table with details and text with comments, and I want to concatenate the headings + the body text below into an export buffer.

A monthly overview, for example.

org-ql makes querying simple, but I don't manage to get beyond the headings :/

ctietze, to random
@ctietze@mastodon.social avatar

Ugh, I still can make Emacs hang during org mode buffer exporting

ctietze, (edited ) to random
@ctietze@mastodon.social avatar

Imagine what could've happened to these daily stats -- if life didn't happen, I hadn't spent 2h by train there and back by car to the next city's car mechanic, went to the gym and shopped for errands, etc

Today was a 10k word day. It just turned out that I haven't spent all these words.

ctietze, to random
@ctietze@mastodon.social avatar

Knowledge is personal, manage it that way https://mcgeesmusings.net/2024/06/06/knowledge-is-personal-manage-it-that-way/

"The starting point for effective knowledge management in organizations needs to be knowledge management at the personal level. If you are a knowledge worker, effective personal knowledge management matters."

Amen!

#zettelkasten #pkm

ctietze, to random
@ctietze@mastodon.social avatar

Amazing how I can have 32GB sitting in the system's Trash in 2024.

ctietze, to random
@ctietze@mastodon.social avatar

Maybe I'm cynic.

But a phone that's US$1000+ is an ... interesting Father's Day gift.

As would be handing over a thousand bucks.

ctietze, to emacs
@ctietze@mastodon.social avatar

nerds, can you help me with the name of a concept?

We have multiple modes that collect snippets from other buffers, e.g. in occur-mode, rg.el, or 's "collect" buffers that are editable and will change the original location accordingly.

I'm thinking of "transclusion" here, but the most Emacs-y thing that comes to mind is, well, 'occur-mode' itself, but what's the name of concept of what occur.el does? 🤔

ctietze, (edited ) to random
@ctietze@mastodon.social avatar

Ok, I managed to test a couple of string assumptions with Pinyin characters.

I can't figure out how to write RTL Arabic, though

ctietze, to random
@ctietze@mastodon.social avatar

It's Sunday.

I could do taxes.

Or a Swift Playdate project.

Hm.

ctietze, to random
@ctietze@mastodon.social avatar

From the recent Daring Fireball footnote mention of TableFlipApp.com I noticed a sales increase of ~$600 total.

The bummer is:

It's a 5:1 Mac App Store to direct sales ratio.

I did not expect so many people to purchase on the MAS!

ctietze, to random
@ctietze@mastodon.social avatar

Oof.

I never saw an EXC_BREAKPOINT before.

With Zombies turned on in my scheme, I get an EXC_BAD_ACCESS on a suspiciously high memory address, 0x7e9838841fa0, and the last entry in the call stack is [_NSUndoStack popAndInvoke].

Yikes.

ctietze, to random
@ctietze@mastodon.social avatar

I need help.

It's 2024 and I still need to enter my SSH key in the Terminal once after a reboot of my Mac.

How do y'all do this stuff nowadays?

I already have this to no avail in my ~/.ssh/config

Host *
IgnoreUnknown AddKeysToAgent,UseKeychain
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa

Git clients like GitUp just fail with an SSH error, never ask for a password

ctietze, to random
@ctietze@mastodon.social avatar

Hot damn,

is there no decent filter/effect/fill tool for any of the good digital drawing apps that produces 1-bit dithering?

Like MacPaint 1.5 basically.

It's all either an effect to apply a dithering algorithm to a colorful image, or a gradient.

Tried Acorn, Affinity Designer and Photos, and Aseprite.

I'm too old to use a pixel tool to draw diagonal lines at 2px spacing

ctietze, to random
@ctietze@mastodon.social avatar

I never got this error in an AppKit/macOS app, yet:

CLIENT ERROR: TUINSRemoteViewController does not override -viewServiceDidTerminateWithError: and thus cannot react to catastrophic errors beyond logging them

Catastrophic errors!

Oh my.

ctietze, to random
@ctietze@mastodon.social avatar

In other news, the cold water faucet in our kitchen began to sputter.

Sounds very much like when you turn on the water mains connection after installing a new faucet and the air is being pushed out.

I wouldn't know where the air would come from, or where the water that should be in its stead went to.

ctietze, to random
@ctietze@mastodon.social avatar

📦 Swift Package:

FastSpring In-App Purchases
https://christiantietze.de/posts/2024/05/swift-package-fastspring-in-app-purchase/

Simplify selling licenses from your indie apps outside of the Mac App Store with this custom store package.

ctietze, to random
@ctietze@mastodon.social avatar

I don't want to start a political discussion.

I wonder, "philosophically" more or less, though, what kind of incentives are missing for so many people.

Context: There are very loud (maybe majority, maybe minority) voices that want to ban a party that is considered "right wing" in the traditional sense.

Problem: If you ban the existence of a group that many people associate with, what outlet will they look for, next?

Is there an attractive alternative so they can participate somewhere else?

ctietze, to random
@ctietze@mastodon.social avatar

@simonbs I'm looking to learn how other text editor devs deal with transformations like wrapping the selection in something complicated.

I couldn't find anything like that in the Runestone source. Did I look in the wrong place? 🤔

For context, I'm extracting a declarative API at the moment to express text transformations like "make each selected line a Markdown list item" or "wrap selection in code block":

https://github.com/CleanCocoa/DeclarativeTextKit

Could you need something like that at all?

ctietze, to SwiftUI
@ctietze@mastodon.social avatar

Does "flexibleSpace" in for macOS not work correctly?

Anything besides a Spacer() that's required in the item?

ctietze, to random
@ctietze@mastodon.social avatar

For the record:

This took a whole day to think through, experiment with, and get to work.

  1. Undo grouping. The outermost block makes this whole thing 1 transaction.

  2. Enable Modifying(range) as a generic block-based wrapper around any potentially undoable commands in the first place,

  3. including other Modifying blocks, which was a bit of a challenge,

  4. while at the "leaves" still only allow either multiple Inserts or Deletes but not both at the same time.

Oof!

ctietze, (edited ) to random
@ctietze@mastodon.social avatar

My day is ruined.

I'm working with UndoManager again and, I'm not sure why, this always gets me confused.

E.g.:

My notes from 2017 clearly advise to not registerUndo with the inverse action again when already redoing an operation -- because that could put the inverse on the undo stack where the original undone operation already is.

Then inspecting simple example cases shows this is not the case. So I must've done something 'special'

I'm sure this will surface eventually, but ugh

ctietze, to random
@ctietze@mastodon.social avatar

World premiere:

The DeclarativeTextKit demo I built this package for.

A single shortcut encloses the 'block' around the insertion point in triple backticks (determined by the Markdown AST in this case, but could also be a plain paragraphRange) and lets you type where the language specification would go.

Another invocation removes the lines again.

⌘Z for undo works as expected in the app. (Need to port this feature to the package.)

video/mp4

ctietze, to swift
@ctietze@mastodon.social avatar

Are there any API design best practices about error handling?

So far, I sketched everything with Result<Value,Error> so I get typed errors.

But both stack unwinding and the lack of ceremony of throws is appealing, too. API consumers probably don't need fine grained detail which of the 20 error cases occurred.

ctietze, to random
@ctietze@mastodon.social avatar

New blog post:

📝 Declarative Text Kit: Inserting Strings and Lines With a Result Builder https://christiantietze.de/posts/2024/05/declarative-text-kit-inserting-strings-and-lines/

How to write a Swift Result Builder DSL to compose different commands into a single sequence, leaning on the compiler.

The "functional" key insight for me during this step in the development of a declarative Text Kit API was this:

Decompose your DSL's units further.

Then recompose these in buildPartialBlock to enforce rules.

Find out what that means in the post :)

ctietze, to random
@ctietze@mastodon.social avatar

Phew, wrote a huge blog post today.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • provamag3
  • mdbf
  • ngwrru68w68
  • modclub
  • magazineikmin
  • thenastyranch
  • rosin
  • khanakhh
  • InstantRegret
  • Youngstown
  • slotface
  • Durango
  • kavyap
  • DreamBathrooms
  • JUstTest
  • GTA5RPClips
  • ethstaker
  • normalnudes
  • tester
  • osvaldo12
  • everett
  • cubers
  • tacticalgear
  • anitta
  • megavids
  • Leos
  • cisconetworking
  • lostlight
  • All magazines