Replying to Avatar fiatjaf

Today I am releasing "narr", a lightweight RSS and Nostr longform reader for the desktop: https://github.com/fiatjaf/narr

It supports all sorts of RSS feed discovery from HTTP URLs and renders them beautifully in a simple straightforward interface, you can also paste nostr:... URIs, including nip05, npub and nprofile codes (they should also work without the nostr: prefix).

If you install narr and use it in the next 2 hours you'll be entitled to our special bonus offer: you'll get one free complaint and one free feature request, which you can write as a reply to this note -- but only if you include a screenshot of your setup.

Neat!

Running it with a dev server 😃

The prebuild binary for MacOS is not working on my ARM powered Macbook.

Building the Docker images are giving me some errors

$ docker build -t narr -f etc/dockerfile .

```

=> ERROR [build 5/5] RUN make build_linux

------

> [build 5/5] RUN make build_linux:

0.096 mkdir -p _output/linux

0.097 GOOS=linux go build -tags "sqlite_foreign_keys linux" -ldflags="-s -w -X 'main.Version=2.4' -X 'main.GitHash=57a78c6e'" -o _output/linux/narr ./cmd/narr

0.100 go: go.mod requires go >= 1.23.3 (running go 1.22.3; GOTOOLCHAIN=local)

0.101 make: *** [makefile:21: build_linux] Error 1

------

dockerfile:5

--------------------

3 | WORKDIR /src

4 | COPY . .

5 | >>> RUN make build_linux

6 |

7 | FROM alpine:latest

--------------------

ERROR: failed to solve: process "/bin/sh -c make build_linux" did not complete successfully: exit code: 2

```

$ docker build -t narr.arm -f etc/dockerfile.arm .

```

=> ERROR [ 9/10] RUN env CC=aarch64-linux-gnu-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm64 go build

------

> [ 9/10] RUN env CC=aarch64-linux-gnu-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm64 go build -tags "sqlite_foreign_keys linux" -ldflags="-s -w" -o /root/out/narr.arm64 ./cmd/narr:

0.110 rosetta error: failed to open elf at /lib64/ld-linux-x86-64.so.2

0.110 Trace/breakpoint trap

------

dockerfile.arm:26

--------------------

25 | # Build ARM64

26 | >>> RUN env \

27 | >>> CC=aarch64-linux-gnu-gcc \

28 | >>> CGO_ENABLED=1 \

29 | >>> GOOS=linux GOARCH=arm64 \

30 | >>> go build \

31 | >>> -tags "sqlite_foreign_keys linux" \

32 | >>> -ldflags="-s -w" \

33 | >>> -o /root/out/narr.arm64 ./cmd/narr

34 |

--------------------

ERROR: failed to solve: process "/bin/sh -c env CC=aarch64-linux-gnu-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm64 go build -tags \"sqlite_foreign_keys linux\" -ldflags=\"-s -w\" -o /root/out/narr.arm64 ./cmd/narr" did not complete successfully: exit code: 133

```

Reply to this note

Please Login to reply.

Discussion

Docker is a giant pain. I've updated the images now, blindly, so they have the latest Go compiler.

docker is only useful on OSX .. because your options are brew, or docker. Embarrasing

it's actually not that difficult to build go native server apps right in mac

https://go.dev/dl has the both apple platform binaries and with intellij or VSC you should be able to build anything

the only reason why he would be having problems is by using non-Go stuff like mongo or redis or pgsql or some other dumbshit

No it's docker and arm vs. not arm.. that kinda stuff.. but docker sucks more than just that

But yes, just use go.. aka, you're gonna have to learn how to install go (on osx).. 😁

I’m learning Go with little steps, using it natively on MacOS šŸ¤“ Reason: the Khatru relay framework hehe

But using Docker right, it can save a lot of time for people who just would like to run the thing with ease. I agree there are many hoops to go through to get it to work, but sometimes the effort is worth it.

this is why i adapted the badger event store btw

khatru is nice but most of the eventstore options you can choose from require complex native, socket based database servers to be installed as well, which is a nightmare for mac

if you stick with pure #golang you don't have any other tooling to care about, it's all in one

i would also say after having a lot of experience with khatru codebase (and eventstore and go-nostr) that relayer is better than khatru, but it's not maybe quite as complete in some parts, the architecture is better and its concurrency is less buggy

it's virtually identical, the shell, just absurd anyhows

i probably am going to have to scatch together some kind of build-testing rig for mac in the future with this chat client i'm building

it is actually easier to use go natively

there's almost nothing you can't do with pure go, and there is cross compilation tooling that lets you do it without even dirtying your hands with apple or windows shit

i was building GUI apps that could deploy on iOS and macOS and windows without having to leave my linux system like 6 years ago