Hausmitteilung: »Old-School-Developer«

miszellen

Bild »IBM Type 26 Printing Card Punch Keyboard« von Ivan Lian

[Foto: »IBM Type 26 Printing Card Punch Keyboard« von Ivan Lian, Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Generic Licence, thanks!]

Manche Leute wechseln ihre Blog-Domains schneller als Hipster-Devs das JavaScript-Framework!

Knapp zwei Monate nach der Eröffnung gibt es für nil? schon wieder etwas Neues. Die »Coolen« haben jetzt alle eine .dev-Domain! Deshalb firmiert dieses kleine Dev-Blog ab sofort mit dem Untertitel »Old-School-Web-Developer-Blog« auf einer eigenen modischen .dev-Domain: old-school.dev. Was dann natürlich eher nicht »old-school« ist, sondern mehr so Hipster-Dev-Kram. Die alte Domain hat selbstverständlich einen Redirect auf die neue. Außerdem hat das Blog ein kleines optisches »Realignment« bekommen. Und benutzt nun Flexbox statt Floats!

»Old-School«, was soll das heißen? Wir »erfahrenen« (oder »alten«…) Webentwickler sind in manchen Dingen etwas »altmodisch«. Wir überlegen es uns z.B. ganz genau, eine laufende Anwendung komplett neu zu schreiben, weil ein neues JavaScript-Framework versucht, einen Paradigmenwechsel in der Entwicklung durchzusetzen und in Reddit, Hacker News und Blogs alle schreiben, dass man das jetzt unbedingt so machen soll. Oder wir rendern komplexe Web-Anwendungen lieber auf dem Server, statt sie als monströse SPA mit dem heißesten neuen JS-Framework im Client ablaufen zu lassen…

Manchmal ist »Simple & Boring« die bessere Lösung. Und man sollte sich davor hüten, aus einer Flut von Artikeln und Vorträgen über ein neues Framework oder eine neue Software auf augenblickliche Relevanz für die eigene Arbeit zu schließen. Jeremy Keith schrieb dazu:

»I don’t know about you, but I constantly feel like I’m behind the curve because I’m not currently using TypeScript or GraphQL or React.«

Letztendlich ist »da draußen« eine Menge erprobtes und »altes« Zeug im Einsatz, man hört nur weniger davon. Denn es ist wie Metafizzy schrieb:

»You don’t hear about TextMate because TextMate is old. What would I tweet? Still using TextMate. Still good.«

So sieht es aus. In diesem Sinne: Weiter geht's, und »Happy Coding«!

Entwickler-Weisheiten: Serverless

serverless rants

»Uncle Dave« Wyner:

»Serverless is one of those unfortunate names that confuse the hell out of people because it’s a lie. Your software most definitely runs on a server.«

Lt. einer Quora-Frage wurde der schöne Begriff Serverless erstmals 2010 von einem Startup namens PiCLoud benutzt und dann 2012 in einem Blogeintrag bei Readwrite in den Diskurs geworfen.

Natürlich geht in Wirklichkeit nichts ohne Server, und wenn man Serverless deployed, benutzt man halt Server anderer Leute in der Cloud statt des eigenen. Wahrscheinlich wollte man damals kein Wort mit Cloud verwenden, weil das Wort Cloud nach der ersten großen Euphorie zu Web-2.0-Zeiten schon ein wenig nach »Sicherheitslücken« und »Abhängigkeit von Big Playern aus USA« klang…

Nuxt.js

nuxtjs vuejs javascript

Im Zuge meiner Versuche mit Vue.js habe ich Nuxt.js entdeckt. Wofür braucht man das? Im offiziellen Guide steht:

»Nuxt.js is a framework for creating Vue.js applications, you can choose between Universal, Static Generated or Single Page application.«

Also ein Framework, das auf einem Framework aufsetzt. ;-)

Nuxt.js erscheint aber nützliches, als es klingt. Es ist weniger ein weiteres JavaScript-Framework, sondern mehr eine Art Distribution sinnvoller Defaults für die Arbeit an einem Vue-Projekt. Und Nuxt.js liefert serienmäßig alles mit, um aus dem Vue-Meisterwerk eine »universelle« Anwendung zu machen, d.h., man kann mit einer Codebase eine javascript-lastige SPA bauen, aber auch in Vue programmieren und dann alle Vue-Routen als statische HTML-Dokumente rendern lassen. Oder das Ganze mischen.

Ein paar Links zum Einstieg:

Auf dem ersten Blick sieht Nuxt.js sehr vielversprechend aus, aber man muss es (wie alles im Developer-Leben) einmal mit etwas »Richtigem« benutzt haben. Deshalb wird es demnächst mal ausprobiert…

Projektbezogene irb-Historie für Rails

ruby rails irb

Problem: Wenn man mit rails c in der Console mit irb (interactive Ruby) arbeitet, hat man nur eine globale History. Diese liegt im home-Verzeichnis des Users unter .irb_history (aber .irb-history wenn man RVM benutzt). Das ist unschön, denn wenn man an einem Projekt arbeitet, möchte man auch nur den dafür relevanten Teil der History sehen.

Abhilfe schafft eine auf Github gefundene Konfigurationsdatei .irbrc im Homeverzeichnis. Diese speichert die Kommando-Historie fortan im Rails-Projektverzeichnis, »normale« Ruby-Arbeit aber weiterhin in der globalen Historie im home-Verzeichnis:

  # ~/.irbrc
  require 'irb/completion'
  require 'irb/ext/save-history'
  IRB.conf[:SAVE_HISTORY] = 1000
  if defined?(::Rails)
    IRB.conf[:HISTORY_FILE] = File.join(ENV['PWD'], '.irb-history')
  else
    IRB.conf[:HISTORY_FILE] = File.join(ENV['HOME'], '.irb-history')
  end

Fortan liegt eine .irb-history im Rails-Projektverzeichnis. Man sollte diese dann in die .gitignore aufnehmen.

Bonustipp: Wenn man in der Rails-Console mit Objekten arbeitet, kann die ständige Ausgabe der im Hintergrund ablaufenden SQl-Kommandos stören. Mit dem folgenden Befehl wird diese für die aktuelle irb-Session abgeschaltet:

  ActiveRecord::Base.logger = nil

Eine populäre Alternative zu irb ist pry. pry hat viele Features, fast schon zu viele, weshalb ich irb bevorzuge.