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

Skalierung und die Infrastruktur

Auf der Arbeit benutzen wir zur Datenhaltung der aufgenommenen Messwerte unserer Synthesen Postgresql als DBMS.
Zwar befinden sich die Client-PCs auf denen die Steuerungssoftware ausgeführt wird in einem eigenen, abgeschotteten Labornetz, jedoch müssen wir auch den Fall behandeln, falls der Datenbank-Server nicht erreichbar ist (wie zum Beispiel bei einem Netzwerkausfall). Außerdem ist es schöner, wenn die Clients keinen direkten Zugriff auf die Datenbank benötigen, weshalb wir die Software umstrukturiert haben und nun einen Message-Broker als Middleware einsetzen.

RabbitMQ to the Rescue

Durch den Einsatz von RabbitMQ als Message-Broker kann unser System nicht nur Netzwerkausfälle abfangen, es werden auch automatisch die aufgenommenen Daten dann übertragen, sobald die Verbindung wiederhergestellt wurde.

Dafür haben wir sowohl auf unserem Server, als auch den Client-PCs, an welchen die Synthesen durchgeführt werden, Erlang und RabbitMQ installiert, auf dem Server einen Nutzer eingerichtet (um Daten von einem Client dorthin übertragen zu dürfen) und die Software so angepasst, dass wir JSON-Nachrichten verschicken.

Architektur Syntheseclients und Server

Innerhalb der IIS-Website werden beim Start 4 RabbitMQ-Worker-Instanzen gespawnt, die permanent laufen und somit die gesendeten Nachrichten verarbeiten und in die Datenbank eintragen.
Die Daten werden vom Client via Shovel-Plugin auf den Server übertragen.

Datensicherheit

Da die Daten ankommen müssen und nicht verloren gehen dürfen, ist es wichtig, dass wir die Queues auf Durable stellen. Somit werden die Nachrichten beim Eingang auf die Festplatte gespeichert werden, und erst beim Empfang der Nachricht an der Gegenstelle von dort gelöscht. Genau so haben wir es beim Abruf der Daten innerhalb der IIS-Website gemacht, wo die Nachricht erst Acknowledged werden, wenn der Eintrag in die Datenbank Erfolgreich war.

Performance Benchmarking

Die einzige Frage, die sich dann noch Stellen würde, wäre, ob das System in der Lage ist die Daten in Echtzeit zu verarbeiten (solange die Netzwerkverbindung besteht natürlich), oder ob wir eventuell mehr Worker-Instanzen auf dem Server spawnen müssen, oder sogar einen zweiten Server benötigen.

Im Regelfall haben wir Maximal 20 Nachrichten pro Sekunde, die vom Client ausgehen (welche Aktionen durchgeführt wurden, ob ein Ereignis eingetreten ist, Messwerte wie Temperatur und Aktivität). Da wir jedoch mehrere Clients haben, die Nachrichten erzeugen, können wir grob 200 Nachrichten als oberstes Maximum rechnen (< 10 Apparaturen, nicht immer alle gleichzeitig im Betrieb).

Das Netzwerk ist mit 100MBit ausreichend dimensioniert, das einzige verbleibende Problem könnte dann jedoch das persistieren der Daten sein.

Erste Tests haben gezeigt, dass wir im aktuellen Setup rund 500 Nachrichten pro Sekunde verarbeiten können, könnten jedoch noch mehr Worker-Threads spawnen und die Anzahl noch etwas steigern.

Vorteil der Echtzeit-Verarbeitung

Durch die Echtzeit-Verarbeitung ist es uns möglich laufende Synthesen Live am PC zu Verfolgen. Das ist zwar nicht unbedingt nötig, aber dennoch ein nettes Feature.

Alles in Allem eine Erfolgreiche Aktion.

 

Informatik für Maschinenbaustudenten

Aktuell gebe ich einem Maschienenbaustudenten Nachhilfe in Informatik. Nicht nur, dass der Name des Fachs „Grundlagen der Informatik“ absolut nichts mit den Grundlagen zu tun hat, ich muss die Sinnhaftigkeit hinterfragen.

Wieso werden Maschienenbaustudenten dazu gezwungen eine Sprache wie C(++) oder Java zu lernen, wenn vernünftige Alternativen wie Python zur Verfügung stehen?

Die Typisierung in C ist absolut nicht Einsteigerfreundlich und behindert den eigentlichen Lernerfolg des Programmierens erheblich.
Anstatt das sich die gequälten darauf konzentrieren können die Prinzipien zu verstehen, wie die Verwendung von Schleifen, Kontrollabfragen, Funktionen usw. müssen Sie erst einmal einen C-Compiler installieren. Da die meisten Leute wohl Windows auf ihrem privaten PC nutzen, ist alleine das schon ein kleiner Akt. Aber nicht nur das, den Studenten wurde empfohlen in einer VirtualBox ein Windows XP zu installieren und darin zu entwickeln.

Python im Gegensatz dazu könnte mit wenigen Klicks installiert werden, braucht keinerlei Klammerung und der Code wird auf Grund der erzwungenen Einrückung direkt leserlich.

Zum anderen sollte das Fach eventuell in „Grundlagen der Programmierung“ umbenannt werden. Die Programmierung ist ein Teilgebiet der Informatik, aber im Prinzip ein relativ kleines. Es geht nicht darum zu Programmieren des programmierens willen, sondern, dass man ein Programm schreibt um ein Ziel zu erreichen, wie etwas zu berechnen, und es so zu schreiben, dass andere Leute, die den Code eventuell lesen werden, diesen auch verstehen. Es geht um die Entwicklung effizienter Algorithmen, um gute Systementwürfe, um das Zusammenspiel unterschiedlicher Systeme.

Die angehenden Ingenieure werden in ihrem Leben NIEMALS wieder Programmieren (außer haben selbst Interesse an der Thematik und beschäftigen sich abseits der Vorlesung damit).
In jedem anderen Fall wird es jemanden geben, der den Ingenieuren diese Arbeit abnimmt, und das Ergebnis schneller und besser erreicht, also WIESO ZEIT DAFÜR VERSCHWENDEN?

Aber das ist natürlich nur meine Meinung.

HD+ und das schöne HDCP

Gestern Abend habe ich mich dazu entschlossen mein HD+ Abo zu verlängern. Gesagt, getan, auf die Seite gegangen, die Nummer der Karte eingegeben, mich dort angemeldet und die Karte verlängert. Leider funktionierten die HD-Sender nicht. Ich hatte zwar Ton, aber kein Bild. Nur beim Umschalten von einem HD-Sender auf einen SD-Sender hatte ich kurz vor dem Kanalwechsel ein Bild.
Der Empfang funktionierte also, nur wieso habe ich statt HD-Genuss ein Schwarzes Bild?
Zum testen habe ich dann den Sat-Receiver (Technisat Technistar S1+) direkt an den Fernseher angeschlossen und siehe da, alles funktioniert.

Danach habe ich den Sat-Receiver wieder an meinen AVR angeschlossen und im Internet gesucht. Es gibt wohl noch mehr Leute die das Problem haben, und es tritt nicht ausschließlich in meiner Kombination (Denon + Technisat) auf, sondern auch viele andere machen Probleme.

Als Auslöser des Problems wurde HDCP genannt. Problemlösung sollte sein anstatt HDCP nur bei HD+-Kanälen anzuschalten und bei SD-Kanälen automatisch abzuschalten, dass man HDCP dauerhaft anschaltet. Leider war das nicht erfolgreich. Auch alle anderen möglichen Lösungsansätze (Auflösung ändern, Upscaling aus etc etc etc) waren nicht Erfolgreich.

Da mein Receiver schon etwas in die Jahre gekommen ist, habe ich mich dann jetzt dazu entschlossen mir einen Gigablue Quad Plus zu kaufen. Dort habe ich dann einen Twin-Tuner mit Option auf Quad-Tuner, auch im Mischbetrieb mit DVB-C oder DVB-T und dazu bin ich frei in der Wahl der Software und kann das System auch selbst ändern wenn ich es möchte.

Doch vor allem: Ich bin nicht an die Restriktionen von HD+ gebunden.

Wenn ich so einen Weg gehen muss um für mein Geld auch die Leistung wahrnehmen zu können, dann ist das eben so.

Nächste Woche wird es dann wahrscheinlich mehr zu dem Thema geben 🙂

Plex – Der heilige Gral fürs Heimkino

Schon seit einiger Zeit spiele ich zu Hause mit einem Plex Media Server herum. Für diejenigen, die Plex noch nicht kennen hier ein kurzer Übersicht:

Plex bietet das Streaming von Multimedia-Dateien im Netzwerk/Internet an. Klingt erstmal nicht sehr spannend, dafür gibt es noch andere Programme. Was Plex anders macht? Alles!
Zum einen gibt es einen Live Transcoder der mittels HLS (HTTP Live Streaming) die Dateien live streamen kann. Und zwar auch an Geräte, die dies eigentlich nicht unterstützen.
Zusätzlich hat ein Plex ein tolles Webinterface über welches man auch alle Medien verwenden kann. Die hinzugefügten Dateien werden automatisch getaggt und mit weiteren Informationen versehen, wie z.b. den Schauspielern, dem Jahr der Veröffentlichung, einem Cover usw usf.
Plex Webinterface

Zusätzlich gibt es ein Plugin für XBMC bei dem man direkt den Server hinzufügen kann und somit die bisherige Plex-Installation weiterverwenden kann.
Aber das mMn ultimative Feature:

Plexconnect

Nun, was ist Plexconnect? Plexconnect stellt einen kleinen Webserver und DNS Server bereit, um die Daten von Plex auch auf dem AppleTV verwenden zu können. Auch dem AppleTV3, für welchen es bekanntermaßen keinen Jailbreak gibt. Das ganze ist in 3 einfachen Schritten erledigt:

  1. Ein Zertifikat zum AppleTV hinzufügen (siehe Plexconnect Dokumentation für eine genaue Anleitung)
  2. Dem AppleTV den „gehackten“ DNS-Server eintragen, damit dieser bestimmte anfragen umleitet und zwar auf unseren lokalen Plex-Server
  3. Trailers-App starten und genießen

Hierüber ist es möglich MKVs live transkodieren zu lassen und und dem AppleTV zu streamen. Klingt gut? Ist es auch! 🙂

Serverauswahl - Mehrere Server sind natürlich möglichFilmauswahlWährend der WiedergabeAuswahl der Tonspur und des UntertitelsAuch in Dolby Digital

Die Bilder sind dank Belichtung zur späteren Stunde nicht die Besten, aber ich denke es wird deutlich, worauf ich hinaus will. Die ganzen tolles Features die Plex bietet direkt über das native Interface des AppleTVs, also einfach via Fernbedienung oder auch der Remote-App nutzbar. Und: Dolby Digital Sound, also 5.1 oder 7.1, wenn das Ausgangsmaterial entsprechend ist.

Jetzt fehlt nur noch ein kleiner Homeserver um nicht mein Macbook laufen lassen zu müssen. Die Filme an sich liegen schon auf der TimeCapsule die man dann auch einfach mounten kann.

Bis dahin! 🙂

Windows Selbstmord und Fedora 20

Der Windows 7 Selbstmord

Nachdem mein Rechner auf der Arbeit bereits einige Wochen anstatt in den Standby-Modus zu gehen, einen Bluescreen bekommen hat und darauf hin ausgegangen ist, wurde das Problem letzte Woche noch etwas schlimmer. Mit dem neuen Einschalten des Rechners und dem Starten der Programme konnte ich noch relativ gut leben, da die Boot-Zeit dank SSD sowieso vernachlässigbar war, aber mein Rechner entschied sich beim Bluescreen auch gleich noch das halbe Dateisystem mit in den Tod zu reissen. Nach dem Booten hat sich bereits Dropbox beschwert, dass es nicht mehr ordentlich ausgeführt werden kann. Außerdem hat Outlook irgendeine DLL nicht gefunden. Windows empfahl mir typischerweise erst einmal ein chkdsk durchzuführen. „Windows Selbstmord und Fedora 20“ weiterlesen

Willkommen in meinem Blog!

Hallo zusammen.

Ich heiße euch herzlich auf meinem kleinen Blog willkommen. Hier werde ich zukünftig einige (hoffentlich lesenswerte) Artikel rund um das Thema IT veröffentlichen.

Ich wünsche euch viel Spaß und hoffe auf zahlreiche Kommentare