Meine erste Heroku-App.

Ich wollte ja schon immer mal hip sein und irgendetwas machen, was auf Heroku läuft. Wie man das so macht als hipper Ruby-Programmierer.

Gestern Abend hörte ich die beiden letzten Folgen Konferenz 28 und weil die beiden ständig erwähnen, dass man ihnen die persönliche Lieblingsfolge mitteilen soll, kam ich auf die Idee eine kleine Seite dafür zu machen.

Also schnell was mit Sinatra und DataMapper zusammengeschustert. Dank entsprechendem Sinatra-Twitter-Auth-Gem ging sogar die Twitter-Authentifizerung recht schmerzfrei. Noch schnell ein bisschen “designt” und fertig. Naja, dann noch Gemfile, Procfile, config.ru und was man alles so für Heroku braucht und fertig war die kleine App: lieblingsfolge.herokuapp.com

Screen Shot 2013-02-12 at 00.49.02

Das ist alles kein Hexenwerk, und auch nicht besonders schön gemacht, aber es fühlt sich gut an mal wieder ein bisschen gelernt zu haben.

Wenn jemand das Design optimieren oder die Code-Einrückung (Hab für Sublime noch kein Fix Indentation Plugin gefunden) fixen will: Der Kram liegt bei Github.

Geschrieben am 12. February 2013, keine Kommentare, 10
·

Photoshop-Tipps für Programmierer.

In letzter Zeit schaue ich häufiger mal in Marcels Photoshop-Dateien. Am Anfang war das alles furchtbar nervig und schlimm (vor allem als ich versuchte die 2GB-PSDs mit Pixelmator zu öffnen), mittlerweile fand ich, dank Marcel und eigenem Rumprobieren, ein paar Tastatur-Shortcuts, die mir die Arbeit erleichtern.

Wahrscheinlich wird das meiste für alle klar sein, aber ich dokumentier hier ja auch gerne meinen Lernprozess.

  • Wenn man Alt gedrückt hat kann man mit dem Mausrad scrollen und dadurch zoomen, ohne das Lupen-Tool auszuwählen. O_____O
  • Hat man sich dann total verzoomt, kommt man mit Alt + Cmd + 0 wieder zurück zur 100%-Ansicht.
  • Will man irgendeine Box, die in irgendwo in der Ebenenhierarchie versteckt ist, auswählen muss man nur Alt + Cmd gedrückt halten und dann mit der rechten Maustaste auf das entsprechende Objekt klicken. Nun ist es in der Ebeneneliste ausgewählt, yeah!
  • Hat man ein Objekt ausgewählt und drückt Cmd + T (Transformationstool) dann wird im Informationspanel die aktuelle Größe angezeigt! Kein manuelles ausmessen mit dem Selektierdingsbums!

Okay, vielleicht hattet ihr mehr als vier Tipps erwartet. Ich dachte vor dem Schreiben auch, dass es mehr wird. Aber allein diese paar Sachen helfen schon ungemein. Vielleicht habt ihr ja selber noch hilfreiche Shortcuts für die Navigation in riesigen Datein? Dann her damit!

Geschrieben am 2. February 2013, 2 Kommentare, 10
·

Wohin mit dem Javascript?

Willkommen bei knuspermagier.de dem Webentwickler-Blog für echte Probleme.

Seit einiger Zeit frage ich mich, immer wenn ich irgendwo, sei es bei QUOTE.fm oder watched.li, Javascript einsetze, was denn wohl der Best Practise ist, was das Einbinden von Javascript auf Seiten angeht.

Beispiel: Seite A benutzt einen abgefahrenen jQuery-Slider-Effekt, der mit $('.images').superSlider({tausend parameter}); initialisiert werden muss. Auf Seite B gibt es ein paar Buttons, denen ich mit $('.buttons').live('click', function(){}); irgendwelche Events zuordne.

Die Möglichkeiten

  1. Ich habe eine große scripts.js, die auf jeder Seite eingebunden wird und sowohl den Initialisierungscode für den Slider enthält als auch die ganzen Click-Events für quasi alle Elemente der ganzen Seite, die sowas brauchen. Die Datei hat am Ende 5000 Zeilen und 2000 jQuery-Selectoren.
  2. Ich habe eine welcomepage.js mit dem Slider-Kram, eine buttons.js mit den Click-Events für die Buttons, und je nach Seite binde ich die entsprechende JS-Datei ein.
  3. Ich inline den Kram, den ich jeweils brauche, im HTML mit <script>-Tags.

(Bestandteil dieser Frage ist nicht, wie ich die scripts.js vielleicht aufteile um besser entwickeln zu können und sie dann am Ende zusammenfasse und minimiere oder dass ich dafür sorge, dass alle Inline-<script>-Tags erst am Ende der Seite ausgegeben werden.)

Meine Bedenken

  1. Die Datei enthält superviele Selektoren, die auf jeder Seite abgearbeitet werden. Dem könnte man vielleicht entgegenwirken, wenn man den einzelnen Seiten im <body> eine entsprechende Klasse gibt und in der scripts.js dann schaut, ob die Klassen gesetzt sind und dann entsprechend die Sachen ausführt. Aber ist das… sauber? Außerdem wird’s dann wieder komplizierter, wenn man Overlays/Kram hat der per Ajax-nachgeladen wird.
  2. Viele kleine Javascript-Dateien, die schlecht zusammengefasst werden können, was zu vielen Requests führt
  3. Viel Javascript-Kram im HTML, was schlecht gecached werden kann. Dafür ist der Code direkt da, wo er hingehört. Sachen, die man öfters braucht kommen natürlich auch in eine extra scripts.js, sodass man sich die auch nicht einspart.

Was ist nun die beste Lösung? Ich finde eigentlich die Dritte ganz schön, aber irgendwie ist Inline-Javascript ja immer etwas verpönt. Vielleicht gibt es auch noch eine Lösung, auf die ich nur nicht komme. Was sagen die echten Webentwickler dazu?

Geschrieben am 21. January 2013, 20 Kommentare, 11
·

Wo bleibt eigentlich Philipp?

Vor ein paar Tagen hatte ich eine lustige Idee. Wir wir ja alle wissen schlafe ich gern etwas länger habe ich oft probleme früh aus dem Bett zu kommen. Meine lieben Arbeitskollegen fragen sich daher häufig, wann ich denn endlich im Büro bin.

Also baute ich schnell eine kleine Seite mit dem passenden Namen wobleibtphilipp.de, die super-genau berechnet, wann ich wohl endlich da bin.

Natürlich ist das alles kein Hexenwerk und läuft nur halb-automatisch. Das Skript schaut nur, wann ich an meiner Bushaltestelle mit Foursquare eingecheckt habe und berechnet dann anhand der Bus- und U-Bahn-Fahrpläne meine ungefähre Ankunfszeit.

(Die Fahrpläne sind auch nur hardgecoded, weil ich keine Lust hatte die Seite vom HVV aufwändig zu scrapen. Hätten wir doch nur eine vernünftige API für öffentlichen Nahverkehr!)

Falls sich jemand den schnell zusammengehackten Code anschauen will: es ist auf Github!

Geschrieben am 23. November 2012, 8 Kommentare, 18
·

Spaß im Büro

Falls ihr mal einen Mac findet, der von seinem Besitzer bei Abwesenheit nicht gelockt wurde, packt doch mal folgendes in ein Terminal:

WORDS=('please help me' 'i am so alone' 'i am lonely' 'pssssst' 'hello' 'hey, listen.'); while [ 1 = 1 ]; do say "${WORDS[$[ $[ RANDOM % ${#WORDS[@]} ]]]}" -v Whisper; sleep 300; done

Hihihi.

(Das spricht alle fünf Minuten einen von den Sachen aus dem Words-Array mit der wunderschönen Flüsterstimme von OS X. Inspiriert von diesem Tweet.)

(Morgen werd ich das mal bei Martin ausprobieren. Hihihi.)

Geschrieben am 12. November 2012, 7 Kommentare, 37
·

watched.li(ve)

Nach nahezu unendlicher Wartezeit und ewiger Vertröstung von allen, die es gerne benutzen wollten ist es nun soweit. Die alpha-beta-sonstwas-Phase ist vorbei und watched.li kann nun endlich von jedem, der will benutzt werden!

watched.li?

Für Leute, die es noch nicht kennen: watched.li ist ein kleines Projekt, welches ich bereits 2010 oder so anfing. Ich wollte festhalten, welche Serien ich bis wohin geschaut hatte und bisher gab es dafür keine vernünftige Webseite. Ich baute also los, Jan machte irgendwann ein Design dafür und dann lief die Geschichte erstmal für ein Jahr in einer geschlossenen Betaphase, in die ich Schritt für Schritt immermal ein paar Leute rein ließ.

Vor ein paar Monaten war es dann soweit, dass Marcel und Martin ein neues Design für watched.li umsetzten und ich mich langsam auch an den Rewrite machte. Weil zwischendurch immer mal wieder wenig Zeit und Motivation hatte verzögerte sich das ganze Unternehmen etwas. Vor gut drei Wochen nahm ich mir dann aber mal ein Wochenende Zeit, ging die Sache an und stellte die Beta auf die neue Version um.

In den letzten Tagen fixten Martin und ich dann hier und da noch ein paar Bugs und nun ist es soweit: keine Beta mehr, jeder kann sich anmelden, viel Spaß!

Zukunft

Wie wird es weitergehen? Als nächstes werden wir erstmal daran arbeiten ein paar Funktionen einzubringen, die es in der alten Beta-Version schon einmal gab — Statistiken und öffentliche Benutzerprofile. Als nächstes steht dann eine API an, damit ihr euch tolle Sachen basteln könnt! (Und wir uns an die iPhone-App machen können)

Allerdings wird das alles nicht super-schnell gehen, denn, wie ihr wisst, hab ich da noch so was anderes am Laufen. Und ich will ja nebenbei auch noch ein paar Serien schauen!

Geschrieben am 15. October 2012, 38 Kommentare, 34
·