How-to: “Machen wir mal eine Kampagne”

Nein zu No-Billag-Kundgebung in Bern

“Wir brauchen nur eine kleine Webseite, nichts Grossartiges”, hat Lukas Ende November zwischen einem Telefonat und einem Kaffee zu mir gesagt. Die Idee, aktiv etwas gegen die No-Billag-Kampagne zu tun, war geboren. Letztes Wochenende wurde die Initiative mit schallenden 71.6 % „gebodigt“.

Hier soll es aber mal nicht um die Politik selbst gehen, sondern um das, was dahinter steckt. Von verschiedenen Seiten kam mir zu Ohren wie “üh-krass-gross“ das IT-Team der Kampagne sein muss und dass so etwas in Klein gar nicht geht. Daher dachte ich, ich mache einen kurzen Blogpost zu diesem Thema.

Darf ich vorstellen: Ich – das “IT-Team” in Personalunion.


Und ja, es geht in Klein. Wie?

Webseite – Quick and stable

Screenshot - https://meinelieblingssendung.ch/

Ich wollte mich nicht um allzu viel Technologie kümmern (und wenn, um die wichtigen Komponenten der Kampagne). Jekyll sagt mir für einfache Seiten sehr zu und somit habe ich mich dem Cause Theme bedient (und es inzwischen fast komplett ausgehöhlt, auf die neueste Jekyll-Version kompatibel gemacht und einige Teile fast neu geschrieben – that escalated quickly). Rückblickend wäre ich teilweise schneller gewesen, das Ding neu zu schreiben anstatt es zu zer-frankensteinen. Egal.

Eine statische Seite mittels Jekyll zu generieren hat einen Vorteil; wenn viel Traffic kommt, läuft sie immer noch zuverlässig.

Da ich wirklich ungern manuell Markdown-Dokumente pflege, habe ich alles mittels NetlifyCMS und Github aufgebaut. Ebenso damit ich ein halbwegs schönes Editoren-Interface erhalte.

Gehostet wurde das Projekt für lau auf Netlify. Alternativen wären z. B. Surge, Now oder das gute alte S3. Dass ich bei einer Firma arbeite, die das ganze Hosting eigentlich aus dem Stand beherrscht, habe ich bewusst ausser Acht gelassen. Ich wollte schauen, wie die Erfahrung und die Benutzung anderer Dienste sind. Was bei Netlify möglich ist, kriege ich auch direkt mit Lagoon hin. So zumindest mein Resümee nach diesem Experiment.

Übrigens: Im Falle, dass wir doch mehr Traffic erhalten würden als erwartet, hatte ich schon zusätzliche CDN-Lösungen und ein anderes Hosting in der Hinterhand. Dank der statischen Natur von Jekyll-Seiten ist das Umziehen kein Problem.

Bei Netlify gäbe es sogar noch ein Beta-Feature, um Lambda-Funktionen laufen zu lassen. Ich konnte nur gerade keinen Usecase dafür finden. 😉

10 Fahnen, 50 Fahnen, 100 Fahnen, 400 Produkte

Während unseren ersten Diskussionen und der Ausarbeitung der Kampagne sind wir ziemlich zackig bei 50 Fahnen gelandet. Ursprünglich angedacht waren 10. Das hat meine initiale Idee von “Machen wir ein Webformular” ziemlich über den Haufen geworfen. Die Wunderfrage “Was passiert, wenn wir 1000 Bestellungen reinkriegen?” liess doch ein eher unbehagliches Gefühl aufkommen. Relativ schnell war klar, dass der Hauptteil der Kampagne ein Shopsystem mit bezahlung über Kreditkarte und Auftragsverwaltung sein muss. Erneut stand der Grundgedanke im Fokus, die Lösung mit dem geringsten Aufwand zu suchen. Ich landete bei Shopify, das für wenig Geld ziemlich viel Funktionalität bietet. Was uns auch in der Produktion in die Hände spielte da Flagprint, die für uns die Fahnen gedruckt haben, komplett eigenständig den Bestellablauf abhandeln konnten.

Am meisten Zeit wurde allerdings beim Zusammenstellen einer sauberen Spreadsheet-Tabelle aus dem Hause Google versenkt, die jedes Produkt für den ersten grossen Import (etwa 300 Einzelprodukte) in den Shop abbildet. Soviel sei verraten: Hierbei wurde relativ viel Code geschrieben, um alles zu automatisieren.

Spenden / Kreditkartenzahlungen

Das Cause Theme hat schon eine Verbindung zu Donorbox. Und da ich von ihrem Support sehr begeistert bin (sie haben ein Feature über das Wochenende geflickt – einfach so), setze ich gerne auf diese Lösung. Am liebsten hätte ich das Ganze über einen Schweizer Anbieter laufen lassen. Wenn die Zeit aber drängt und man in der Schweiz zunächst einen Vertrag zum Unterschreiben kriegt, erhält eine Lösung, die nach knapp 5 Minuten läuft, den Zuschlag. Einfaches Onboarding gewinnt im Produktgeschäft.

Das Kreditkartenhandling wurde über Stripe direkt abgehandelt und landete beim Kassier auf dem Konto. So geht das!

Aber Herr und Frau Schweizer möchten gerne via Banküberweisung zahlen?! Keine Sorge, auch das wurde von uns angeboten – jedoch nur auf Nachfrage, um den Aufwand tief zu halten.

Und nun?

Die Aktion war spannend und zeigte, mit wie wenig finanziellem Aufwand eine mehr oder weniger grosse Kampagnenseite auf die Beine gestellt werden kann. Das Projekt ist in knapp 2 Wochen entstanden. Vollkommen klar, dass immer und überall noch Luft nach oben bestünde. Ich wurde jedenfalls in meinen Stammcafés bereits mit einem Grinsen begrüsst bevor ich mich jeweils an die Arbeit machte.

Der Grundgedanke, so viel wie möglich zu vereinfachen, hat es mir ohne gross ins Schwitzen zu kommen ermöglicht, mich um die wirklichen Probleme zu kümmern und nicht mit Serverskalierungen beschäftigt zu sein. Zum Beispiel als Ende Dezember noch nicht klar war, wie der Bestellablauf funktionieren wird. Aber um solche Probleme kümmert man sich, wenn sie auftreten. Erst recht als Ein-Mensch-IT-Team.

Docker: no matching manifest for linux/amd64 in the manifest list entries

Early this morning I saw that several docker pulls ended with a weird error while trying to pull the nginx:alpine image.

~ > docker pull nginx:alpine
alpine: Pulling from library/nginx
no matching manifest for linux/amd64 in the manifest list entries

This lead me to following Github issues:

The second issue on Github leads to an issue which is caused during the build process of the official docker images. Nothing really which we could do on an infrastructure level. Even tagging an old version as latest didn’t help as we’re always pulling the new images.

I went the easy way and re-defined the source image our process to use the nginx:stable-alpine which points to a slightly older container but gets us around this issue.

Update: The normal nginx:alpine works again thanks to the fix implemented here.

Angelesen #49 – OSx > Ubuntu, ICOs in Switzerland, Waveforms

This week was busy, next week will be busy. Let’s keep this brief and head over to the links:

Google removes ‘View Image’ button from image search (engadget.com)

Say goodbye to the “View Image” link in Google Images. Google announced a few changes to its image search today, one of which being the removal of its option to check out an image without visiting the site that hosts it. It might be a bummer for some, but since it was a stipulation of Google’s settlement with Getty Images, it was only a matter of time before it happened. In a tweet, Google said today that the changes “are designed to strike a balance between serving user needs and publisher concerns, both stakeholders we value.”

Oh FFS!

From OSX to Ubuntu | Code | Nicolas Perriault (nicolas.perriault.net)

A year earlier I decided to switch from OSX to Ubuntu, so now is a good time to make a little retrospective. TL;DR: Linux now offers a pleasant desktop user experience and there’s no way back for me.

As i’m doing some development for features on pygmy that need to be tested on Ubuntu I decided to switch partially to that system for development. Used that article to get me around the hardest starter issues but I reckon that would be a seperate blogpost for here

FINMA – FINMA publishes ICO guidelines (finma.ch)

FINMA has seen a sharp increase in the number of initial coin offerings (ICOs) planned or executed in Switzerland and a corresponding increase in the number of enquiries about the applicability of regulation

Fertig wilder Westen in der Schweiz

Capturing Starman from 1 million miles away (deepskycolors.com)

After a quick nap, I go back to all my shots but find nothing, still puzzled about the whole thing. Then it hit me!! When I created the ephemeris from the JPL’s website, I did not enter my coordinates!! I went with the default, whatever that might be! Since the Roadster is still fairly close to us, parallax is significant, meaning, different locations on Earth will see Starman at slightly different coordinates. I quickly recalculate, get the new coordinates, go to my images and thanks to the wide field captured by my telescopes… boom!! There it was!! Impossible to miss!! It had been right there all along, I just never noticed!

I like the work that went into finding Starman with a huge telescope 🙂

Let’s Learn About Waveforms (waveforms.surge.sh)

A very good primer about Waveforms

EHANG 184 AAV Manned Flight Tests (youtube.com)

Flying Robots!

NGINX – HTTP/2: server push. (hg.nginx.org)

Resources to be pushed are configured with the “http2_push” directive.

HTTP/2 server push lands in Nginx

OpenSSH/Cookbook/Multiplexing – Wikibooks, open books for an open world (en.wikibooks.org)

And of course all that can be put into ssh_config(5) as shown in the previous section. Starting with 6.7, the combination of %r@%h:%p and variations on it can be replaced with %C which by itself generates a SHA1 hash from the concatenation of %l%h%p%r.

Learning of the Week: SSH Multiplexing issues fixed by not using hots and the remote usernames. Just using %C is enough with newer OpenSSH versions.

VLC 3.0 now supports Chromecast and the world is a better place (thenextweb.com)

  • 8K support (hardware decoding is on by default)
  • HDR and 10 bit video
  • HMDI Audio passthrough
  • Network browsing for NAS systems
  • 360 video and 3D audio
  • Modifying subtitle size live
  • Drag and drop support
  • HD DVD support

Yeah : VLC 3.0 is out!