Staying sane as a solo developer

Some time ago i have searched for a guide like this, and since i couldn’t find one, I hope to help others in a similar situation by providing some guidance.

After all, this is my opinion, it is biased, it might be full of shit, please point it out, but this is what helped me the past few years and still is kind of what i do on a day to day basis to get my job done and people happy.

So long, enough of the babbling, let’s get to it.

I have to start somewhat further to explain my situation.

About Me

I’m a solo developer in a research institute in germany. On a daily basis we produce radiopharmaceuticals for human application aswell as pre-clinical and in-vitro studies. „Staying sane as a solo developer“ weiterlesen

Fotografie & Bildbearbeitung

Es wird wieder einmal Zeit für einen neuen Blogeintrag, dieses mal, wie man unschwer am Titel des Posts erkennen kann, zum Thema Fotografie.
Im Februar diesen Jahres habe ich mir einen kleineren Technikwunsch erfüllt und meine erste Spiegelreflex-Kamera gekauft, eine Nikon D5500 mit einem Nikkor 18-300mm Objektiv.

Nun wie das eben so ist tastet man sich langsam an ein Thema heran. Die ersten Bilder will man eher Niemandem zeigen, weil man von den ganzen Funktionen überfordert ist. Blende? Belichtungszeit? ISO? Brennweite? Und dann arbeitet man sich langsam dort ein und irgendwann kommt das erste brauchbare Bild heraus.

 
There was an error connecting to . Please try again later.
1 Message:
cURL error 52: Empty reply from server

Was mir sehr geholfen hat, war es mir YouTube Videos anzusehen. Auf zwei deutschsprachige Kanäle möchte ich hier ganz besonders hinweisen: Stephan Wiesner 

und Benjamin Jaworskyj .

Beides sehr coole Menschen, die sich mit so ziemlich allem, was es im Bereich Fotografie gibt beschäftigen, sehr coole Anleitungen posten und erklären, wie man an bestimmte Arten von Fotos überhaupt herangeht.

Und man beginnt sich näher mit der Materie zu beschäftigen, bekommt langsam ein Gefühl für den Bildaufbau und probiert neue Dinge aus, bei denen vieles nicht so klappt, wie man sich das vorstellt. Aber wenn es dann doch klappt, wird es immer vorzeigbarer:

 
There was an error connecting to . Please try again later.
1 Message:
cURL error 52: Empty reply from server

Raw oder JPG?

Eine der „großen Fragen“ der Menschheit. Alle Leute schwören auf RAW. Aber wieso? Jpeg ist ein Komprimierungs-Algorithmus, der „unnötige“ Daten aus dem Bild weglässt, also beispielsweise bei Blautöne bei dem Bild eines Himmels, die so nahe bei einander liegen, dass das Menschliche Auge sie nicht differenzieren kann auf einen zu reduzieren. Damit spart man Platz, aber man verschenkt Möglichkeiten in der Nachbearbeitung. Vielleicht will man diese zwei Farben im Himmel unterschiedlich stark betonen, um sie doch wahrnehmbar zu machen. Diese Möglichkeit ist dann nicht mehr gegeben, wenn diese zusätzlichen Informationen ein mal gelöscht wurden in einem Jpeg Bild. Auch hier gibt es wieder ein schönes Video von Ben, auf das ich verweisen möchte:

Womit wir schon beim nächsten Thema wären:

Bildbearbeitung

Mein Plan ist eigentlich einige meiner Bilder hier zur Verfügung zu stellen und zu erklären, was ich daran wie und wieso bearbeitet habe. Und das ganze eventuell auch mit dem entsprechenden RAW-Bild dazu zum selber ausprobieren. Es gibt dabei keine richtige oder falsche Lösung, erlaubt ist, wie bei allem künstlerischen, was gefällt.

Lightroom+Photoshop vs Affinity Photo vs Capture One vs ACDSee vs noch etwas anderes?

Angefangen habe ich meine Bildbearbeitung mit Affinity Photo. Für 50€ (?glaube ich) im Mac App-Store erhältlich und ein super Photoshop-Konkurrent. Klar, es kann noch nicht alles was Photoshop kann, aber eben bereits vieles. Leider fehlte mir persönlich die Möglichkeit der Verwaltung ein wenig in Affinity Photo. Es soll eben mit Photoshop konkurrieren und nicht mit Lightroom, deswegen habe ich mir irgendwann doch ein Adobe Creative Cloud Abo geholt. ~10€ im Monat sind natürlich nicht günstig, dafür erhält man jedoch den de-facto Standard der Bildbearbeitung in der stetig aktuellsten Version und damit kompatibel zu allen Kameras.

Außerdem geht mit diesem Standard einher, dass alle Plugins etc damit kompatibel sind, bei den weiteren Lösungen ist das nicht zwangsläufig gegeben.

Heißt das, dass es der Weisheit letzter Schluss ist? Absolut nicht. Aber aktuell so gut, dass ich es nicht einsehe mich in ein neues Programm einzuarbeiten und dafür Geld auszugeben. Ich werde mir alternativen mit Sicherheit ansehen (ACDSee kenne ich z.B. bereits von einer Bekannten) und eventuell auch meine Erfahrungen dazu aufschreiben, aber aktuell bin ich mit meiner Lösung zufrieden.

 
There was an error connecting to . Please try again later.
1 Message:
cURL error 52: Empty reply from server

Soweit so gut, zu guter letzt noch eines meiner aktuellen Lieblingsbilder, aufgenommen mit dem Tamron 90mm f2.8 F017N:

 
There was an error connecting to . Please try again later.
1 Message:
cURL error 52: Empty reply from server

Javascript und sein Ökosystem

Diejenigen unter euch, die auch im IT-Bereich oder im IT-Nahen Umfeld tätig sind werden es sicher mitbekommen haben, wie ein 11-Zeilen Paket auf npm die halbe Javascript-welt zum Zusammenbruch gebracht hat.

Um welches Paket es geht? leftpad. Was macht leftpad? es fügt einem String ein padding bestehend aus einem frei wählbaren Zeichen hinzu, um den string auf die länge X zu bringen

also wäre ein via leftpad aufgefüllter string „test“ mit dem zeichen x auf länge 10 „xxxxxxtest“.

Man sieht also, eine absolut gerechtfertigte Abhängigkeit, denn man kann wirklich NIEMANDEM zumuten, diesen hoch komplexen Code selbst zu schreiben.

Ich meine, was läuft bei den Leuten im Kopf falsch, dass man eine Abhängigkeit eingeht, also dafür sorgt, dass der eigene Code nur dann funktioniert, wenn diese Abhängigkeit erfüllt ist, für ein stück Code, den man in etwa 3 Minuten intensivem Denkens selbst schreiben kann oder in 20 Sekunden einfach von Stackoverflow kopieren kann? Verdammt, man könnte auch den Code aus dem blöden npm Paket kopieren und das Problem so lösen, aber ich gehe doch keine Abhängigkeiten ein, wenn ich nicht sicher sein kann, dass diese auch in einiger Zeit (und ob das nun morgen oder in 3 Jahren ist, ist dabei egal) noch verfügbar ist?

Mein Blick darauf

Ich arbeite in einem GMP-regulierten Umfeld, das heißt nicht nur, dass wir alles Dokumentieren müssen was wir tun, sondern auch nachweisbar überprüfen müssen, dass es sinnvoll ist, etwas durchzuführen. Im konkreten Fall: Jede Abhängigkeit ist gut durchdacht und geplant. Wir setzen auf offene Standards soweit möglich (z.b. zwar RabbitMQ als Messagebroker, das setzt aber aufs offene AMQP-Protokoll, und kann damit, falls die Software irgendwann nicht mehr verfügbar sein sollte, einfach ersetzt werden). Ebenso unser Datenbank-System (PostgreSQL), dass schon seit 1994 Opensource ist und immernoch aktiv entwickelt wird.
Und wenn man nicht garantieren kann, dass die Abhängigkeiten auch in Zukunft noch erfüllt werden, dann muss man eben sein Buildsystem überdenken. So toll es auch ist, dass man im prinzip mittels „npm install“ alle nötigen pakete installiert hat, wenn es dann nicht hakt steht man da. Da kann man auch gleich alles einfach mit ins Repository packen und hat es bereit. Speicherplatz-Verbrauch ist komplett zu vernachlässigen, da das ganze nur ein mal abgespeichert wird, und danach nurnoch referenziert wird, solange es keine Änderungen in den Dateien gibt.
Alles toll, heile Welt, wunderbar.

Pustekuchen

Und man denkt, dass Pakete, die aktiv entwickelt werden, dann zumindest mittels „npm install“ ihre dependencies auflösen können und man dann daran entwickelt kann. Nein.

npm ERR! Windows_NT 6.1.7601
npm ERR! argv „C:\\Program Files (x86)\\nodejs\\node.exe“ „C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js“ „install“
npm ERR! node v0.12.2
npm ERR! npm v2.7.4
npm ERR! code ELIFECYCLE
npm ERR! obvious-closure-library@20140401.0.2 postinstall: `./bin/postinstall`
npm ERR! Exit status 1

npm ERR!
npm ERR! Failed at the obvious-closure-library@20140401.0.2 postinstall script ‚./bin/postinstall‘.
npm ERR! This is most likely a problem with the obvious-closure-library package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! ./bin/postinstall
npm ERR! You can get their info via:
npm ERR! npm owner ls obvious-closure-library
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! E:\Git\dygraphs\npm-debug.log

Eigentlich hatte ich vor mich an der Entwicklung von dygraphs etwas zu beteiligen, aber wenn ich erst noch Zeit reinstecken muss herauszufinden, wie ich denn meine Buildumgebung so gestaltet bekomme, dass ich irgendwas daran machen kann, vergeht mir schon die Lust.
Aber ich gebe ja nicht so leicht auf, ich dachte „ok, ich bin unter windows, vielleicht wenn ich das ganze unter Linux mit einer richtigen Bash starte funktioniert es, dann kopier ich das ganze Verzeichnis rüber und kann daran Arbeiten.“ … nix ist. Dort wurde mir dann auf der Konsole gesagt, dass die binary früher „node“ hieß und jetzt „nodejs“, das wollte ich dann mit einem symlink umgehen. Computer sagt nein.

Es wundert mich, dass Javascript überhaupt noch existiert… Mal sehen, wann es denn mal Alternativen geben wird.