Latest News

Avatar
Andi
Thursday, 02. April 2026, 18:52

iBoard - ABOUT

iBoard is a little practicing project, figuring out how Elixir-development and AI comes together. So, I recently wrote this Blog-server. The content here doesn’t really matter! The project is not public (yet) but will be published at GitHub once it fulfills some basic quality standards ;-)

The iBoard Project This web application is written in Elixir with Phoenix, LiveView, TailwindCSS, DaisyUI, Ecto/Postgres, to name the most important.

ExDocs

Documentation

The full dependency list reads like:

:bcrypt_elixir, "~> 3.0"
:phoenix, "~> 1.8.3"
:phoenix_ecto, "~> 4.5"
:ecto_sql, "~> 3.13"
:postgrex, ">= 0.0.0"
:phoenix_html, "~> 4.1"
:phoenix_live_reload, "~> 1.2", only: :dev
:phoenix_live_view, "~> 1.1.0"
:lazy_html, ">= 0.1.0", only: :test
:phoenix_live_dashboard, "~> 0.8.3"
:esbuild, "~> 0.10", runtime: Mix.env() == :dev
:tailwind, "~> 0.3", runtime: Mix.env() == :dev
:heroicons, github: "tailwindlabs/heroicons", tag: "v2.2.0"
:gen_smtp, "~> 1.2"
:swoosh, "~> 1.5"
:castore, "~> 1.0"
:req, "~> 0.5"
:telemetry_metrics, "~> 1.0"
:telemetry_poller, "~> 1.0"
:gettext, "~> 1.0"
:gettext_sigils, "~> 0.1.0"
:jason, "~> 1.2"
:dns_cluster, "~> 0.2.0"
:bandit, "~> 1.5"
:tzdata, "~> 1.1"
:boundary, "~> 0.10", runtime: false
:ex_doc, "~> 0.31", only: [:dev, :prod], runtime: false
:earmark, "~> 1.4"

With a big hug to this gorgeous community!

Follow the tag #iboard if you’re interested in the faith of this project.

Features so far (Buzzwords)

  • Accounts, Users (phx.gen.auth)
  • Posts, Drafts, Authors, Moderators, Likes, Followers
  • User management, invite by e-mail
  • Supports DaisyUI Themes
  • Supports Locale and Timezone
Avatar
Andi
Saturday, 30. May 2026, 18:50

Howto Write a Post

Getting started

To create a new post, open the navigation sidebar and click New Post. You will land on a form with two language tabs at the top (EN and DE) and several fields below.

Choosing one or both languages

Each post can be written in English, German, or both. The two tabs at the top of the form each have a checkbox:

  • Tick the box next to a language to include that language in the post.
  • Untick it to exclude the language. (At least one language must remain ticked.)
  • Click the language label itself to switch the editor to that language without touching the checkboxes.

If you publish a post with both languages, readers see the version that matches their selected content language.

Subject and body

The Subject is the headline of your post. The Body is the article itself and is written in Markdown. You can use:

  • # Headings, ## Sub-headings, etc.
  • **bold**, *italics*, `inline code`
  • Bulleted and numbered lists
  • Links: [label](https://example.com)
  • Fenced code blocks with three backticks
  • Block quotes with >

The body textarea grows automatically as you type.

Attaching files and images

Below the body you will find the Attachments uploader. You can drop up to five files of up to 50 MB each into that area, or click to pick them from your computer.

For every attachment you can fill in:

  • Title — used as the link label when the file is not an image.
  • Description — optional caption.

To embed an image inline in your text, insert a placeholder anywhere in the body using curly braces around the file name:

Here is the diagram:

{architecture.png}

And here is a downloadable PDF: {whitepaper.pdf}

When the post is rendered:

  • Files whose content type starts with image/ are inlined as <img> tags.
  • All other files become Markdown links to the uploaded file.

Tip: click the file name of any attachment in the form to copy its {placeholder} to your clipboard. A short flash confirms the copy.

Tags

The Tags field accepts space-separated words, for example:

howto elixir phoenix

When you focus the field, a dropdown opens with all tags that already exist in the system. Click a suggestion to add it, or just type a new tag — new tags are created on save.

Visibility

The Who can see this? select controls the audience:

  • Public — anyone on the internet can read the post.
  • Registered Users — only signed-in users.
  • Friends Only — only your mutual followers.
  • Direct Message — only the specific recipients you pick.

When you choose Direct Message a recipient picker appears. Type a name to search and click a result to add it.

Comments

The Who can comment? select is independent from visibility:

  • Nobody (Turned Off) — comments are disabled.
  • Friends / Followers / Registered Users / Public — progressively wider audiences.

Saving as a draft

Clicking Save Post does not publish the post — it is stored as a draft. Drafts are only visible to you (and to admins), so no follower will see anything yet. This gives you a chance to preview the rendered article and fix anything before the audience sees it.

Finding your drafts

Drafts are hidden from the default /posts view. To see them:

  1. Open My Postings (/posts).
  2. In the toolbar at the top, find the three-button switch (the three document icons sitting next to each other):
    • No Drafts (single document) — hides drafts, the default.
    • With Drafts (document with overlay) — shows published posts and drafts together. Drafts are marked with a small “Draft” indicator in the listing.
    • Drafts Only (empty document) — shows only your drafts.
  3. Pick With Drafts or Drafts Only and your unpublished post appears in the list.

Click the draft to open the preview. This is exactly how the article will look once published — images, attachments, formatting and all.

Publishing the draft

When you are happy with the preview, publish it in one of two ways:

  • From the listing: in the row of action icons next to your draft, click the green eye icon (Publish).
  • From the post itself: the toolbar above an unpublished post shows a Publish button.

Either path opens a small dialog asking whether you want to notify followers:

  • Yes, send e-mail — the post is published and a notification email is sent to your followers (and friends, deduplicated). The email is bilingual when the post is bilingual, includes inline images, and attaches all non-image files.
  • No, just publish — the post is published without sending any email. Use this for minor posts or when you don’t want to bother subscribers.

After publishing, the eye icon turns into an eye-with-slash icon (Unpublish) so you can move the post back to draft state any time.

About the “e-Mail followers” checkbox on the form

The checkbox e-Mail followers that sits next to the Save button is not used to publish a fresh draft — at that point the post has no published_at date yet, so no email is sent regardless of the checkbox.

This checkbox only matters when you edit an already-published post: tick it before saving to send a fresh notification email about the update; leave it unticked to save the edit silently. New drafts always use the publish dialog described above to decide on email.

Avatar
Andi
Saturday, 30. May 2026, 15:48

Latest Changes and Improvements

What’s new on the blog

A short tour of the changes that landed over the last few days. Most of it is quality-of-life work on the read and admin experience.

Resizable table columns

Every table in the application — the user admin, the posts table, attachments, authors, registration requests — now has draggable column widths.

  • Hover any column header and you’ll see a thin separator line on the right with a small diagonal grip in the corner.
  • Grab the grip and drag horizontally to resize the column.
  • Your widths are saved per table and per column to your browser’s local storage, so they survive reloads, navigation, and re-renders.

Since each user keeps their own preferences in their own browser, you can shape the tables to fit your screen without bothering anyone else.

Like count column on the posts table

The /posts table view has a new heart column between Comments and Attachments. It shows the like count as a small red badge when a post has any likes. The old unlabeled icon column is gone — the pinned (★) and system (📍) indicators now sit inline right next to the post subject, so the table is one column shorter overall.

Smaller screens, much better

If you read the blog on a phone (iPhone mini and similar), you’ll notice things fit a lot better now.

  • Top bar. The direct-message icon (with the unread badge) and your avatar are now visible at every viewport size, not just on wide screens. Settings, language, timezone, and the theme picker move to a “Preferences” section at the bottom of the sidebar when they don’t fit in the top bar.
  • Sidebar. Tapping any link in the sidebar — including the preferences — automatically closes the drawer, so you don’t have to dismiss it manually before you can read.
  • Post detail page. The toolbar above each article (back, reader/standard, edit, print) no longer overflows. On phones, the buttons collapse to icons, so you can find the print button without scrolling sideways.
  • Tags page, home stats, admin headers, flash messages. All re-flowed for narrow viewports — no more horizontal scrolling on a 375px screen.
  • Markdown content. Long URLs wrap, large images shrink to the viewport, and wide tables get their own internal horizontal scroller instead of forcing the whole page to scroll.

Tag selection scrolls to the article

When you pick a tag on /tags, the page now smoothly scrolls to the first matching article. The header stays just above the fold so you can see what you’ve selected.

Image preview: fullscreen finally works

Clicking the fullscreen button in the image preview was, until now, invisible: the dialog rendering covered the fullscreen layer, and the enlarged view only flashed for a second as the modal closed. Fullscreen now applies to the inner content of the preview, so the enlarged image is visible right away. Press Esc to exit fullscreen; the preview stays open.

No more duplicate emails for mutual followers

If you and another author follow each other (so you’re “friends”), you used to receive two notification emails every time the other person published a new post: one as a friend, one as a follower. Each user now lands in exactly one notification bucket, so you get one email per post — never two.

Avatar
Andi
Wednesday, 27. May 2026, 16:52

My Server Migration from AWS to Infomaniak in Switzerland

AI Thumbnail
AI Thumbnail — EN: David vs. Goliath: Why I turned my back on the complexity of US Big Tech and moved my servers to the Swiss Alps. DE: David gegen Goliath: Warum ich der Komplexität von US Big-Tech den Rücken gekehrt habe und mit meinen Servern in die Schweizer Alpen gezogen bin.

It is done. After much deliberation and some preparation time, I pulled the plug and migrated my entire server infrastructure from Amazon Web Services (AWS) to Infomaniak in Switzerland. For me, this step was not just a technical decision, but primarily a matter of principle.

In this report, I want to share my reasons for making this switch.

1. From Complexity to Simplicity

AWS is undoubtedly a powerful tool. It offers a technical solution for almost every conceivable problem. But for me – and probably for many other small to medium-sized projects – that is exactly the issue: the sheer volume of services, the cluttered dashboard, and the often incomprehensible pricing models are simply overwhelming. It feels like you spend more time setting up the right permissions (IAM) and trying to figure out why a service suddenly costs more than you do actually working on your projects.

Infomaniak, on the other hand, feels like a breath of fresh air. The interface is clean, logically structured, and above all, simple. You get exactly what you need without having to fight your way through a jungle of cryptic acronyms. The services do what they are supposed to do, the pricing is transparent and fair, and the learning curve is refreshingly gentle.

2. Digital Sovereignty: Goodbye, US Big Tech!

The second, equally important reason was my strong desire to reduce my dependence on major US technology corporations. In an era where data is the most valuable commodity, I no longer wanted to leave my infrastructure to the whims and privacy policies of American hyperscalers.

In Infomaniak, I found a partner that is not only based in Europe (Switzerland) but also strongly focuses on data privacy, sustainability (100% renewable energy), and independence. It is incredibly reassuring to know that my data falls under strict Swiss data protection laws rather than sitting on the servers of a company ultimately subject to the US Cloud Act.

Conclusion

The move naturally cost time and effort – a migration is never a walk in the park. But looking back, it was the best decision for my setup. I now have a system that I can fully oversee again, that doesn’t crush me with unnecessary complexity, and that gives me back a large chunk of my digital sovereignty. A clear win!

Avatar
Andi
Monday, 27. April 2026, 03:10

Offline Cafè Oida

Erstes Offline-Cafe in Wien eröffnet

Offline-Cafe
Offline-Cafe — Ein Handy, versperrt, in einer Glasbox.

Am Samstag hat in Wien das nach eigenen Angaben erste „Digital-Detox-Cafe“ eröffnet. Das „Offline Oida“ befindet sich im Innenhof einer ehemaligen Molkerei auf der Wieden. Alle elektronischen Geräte wie Handys und Laptops sollen dort ausgeschaltet bleiben.

Unter der Woche ist das Cafe das normale „Lokal im Hof“, doch am Wochenende verwandelt es sich nun in eine Zone ohne Klingeln und Scrollen. Geöffnet hat es ab sofort samstags und sonntags von 10.00 bis 18.00 Uhr.

Quelle: Der ganze Artikel auf ORF W…