<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Social Coding Diary</title>
    <description>Diese Jekyll-Seite ist mein Tagebuch für das WPF Social Coding.
</description>
    <link>http://plsr.github.io/social-coding-diary/</link>
    <atom:link href="http://plsr.github.io/social-coding-diary/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sat, 23 Jul 2016 15:34:40 +0000</pubDate>
    <lastBuildDate>Sat, 23 Jul 2016 15:34:40 +0000</lastBuildDate>
    <generator>Jekyll v3.1.6</generator>
    
      <item>
        <title>Abschluss und Zusatztermin</title>
        <description>&lt;p&gt;Der Abschluß des Kurses fand auf dem DevHouse Friday statt. Hier hörten wir einen Talk von Jan Kus über die Ebics::Box, eine Box die ziemlich abgefahrene Finanz-APIs irgendwie einfacher macht.&lt;br /&gt;
Nach dem ersten Talk verstreute sich die Gruppe zum Teil in Cocktail-Bars und zum Teil in Subway-Schnellrestaurants in Gummersbach.&lt;/p&gt;

&lt;p&gt;Beim Zusatztermin beschäftigten wir uns noch einmal mit Testing. Neben weiteren Unit-Test befassten wir uns auch mit Acceptance-Tests.&lt;br /&gt;
Außerdem schauten wir uns Work-Setups an, sprechen über Dotfiles und lernten ein bisschen tmux-magic kennen. Für die Zukunft interessant finde ich vor allem Spacemacs, mit dem ich mich nach dem Urlaub auseinandersetzen möchte.&lt;/p&gt;
</description>
        <pubDate>Wed, 20 Jul 2016 08:45:56 +0000</pubDate>
        <link>http://plsr.github.io/social-coding-diary/log/2016/07/20/Abschluss-Zusatztermin.html</link>
        <guid isPermaLink="true">http://plsr.github.io/social-coding-diary/log/2016/07/20/Abschluss-Zusatztermin.html</guid>
        
        
        <category>log</category>
        
      </item>
    
      <item>
        <title>7. Termin</title>
        <description>&lt;p&gt;Thema beim 7. Termin waren Debugging und Testing. Anhand des Beispiels von &lt;a href=&quot;https://github.com/wpf-social-coding/batman-ipsum&quot;&gt;Batman Ipsum&lt;/a&gt; verscuhten wir zunächst, Bugs in einem unbekannten Programm zu finden. Anschließend ging es noch um die richtigen Wege, eine Issue zu eröffnen oder direkt einen Pull Request zu starten.&lt;/p&gt;

&lt;p&gt;Nachdem die Bugs gefunden und gefixed waren befassten wir uns mit dem Thema Unit-Testing und wie man vernünftige Tests schreibt. Dieses Thema wurde auch beim Zusatztermin am 20. Juli noch einmal angegangen.&lt;/p&gt;

&lt;p&gt;Zuhause fixten wir die vorhandenen Bugs noch einmal und öffneten Pull Requests. Für mich war hier vor allem das Forken interessant, da ich das vorher noch nich gemacht habe.&lt;/p&gt;
</description>
        <pubDate>Wed, 08 Jun 2016 08:45:56 +0000</pubDate>
        <link>http://plsr.github.io/social-coding-diary/log/2016/06/08/Termin-7.html</link>
        <guid isPermaLink="true">http://plsr.github.io/social-coding-diary/log/2016/06/08/Termin-7.html</guid>
        
        
        <category>log</category>
        
      </item>
    
      <item>
        <title>6. Termin</title>
        <description>&lt;p&gt;Am 6. Termin hielten wir die Talks, die wir über die vorausgegangenen Woche vorbereitet hatten.&lt;/p&gt;

&lt;p&gt;Mein Thema war das erstellen eine Twitter-Bots, der aus zwei alten meiner Tweets einen (möglichst sinnvollen) neuen erstellt. An sich bin ich mit dem Talk recht zufreiden, allerdings gibt es einige Kleinigkeiten, die mich stören.&lt;/p&gt;

&lt;p&gt;Zum ersten habe ich mein Ziel nicht erreicht, durch verschiedenen technische Probleme konnte ich keinen funktionierneden Bot bauen. Der Talk beschäftigte sich daher nicht mit dem eigentlichen Thema, sondern mit den Problemen, die auf dem Weg aufgetreten sind. Obwohl das nicht die optimale Ausgangslage hatte der Talk trotzdem genug substanz.&lt;/p&gt;

&lt;p&gt;Insgesamt war der Talk etwas zu kurz, durch den Wechsel des Inhaltes hatte ich nicht sonderlich viel Zeit, ihn vorher zu üben. Dazu kommt, dass ich beim Talk schneller gesprochen habe als bei den 2-3 Testläufen zuhause un dieser dadurch noch kürzer wurde. An sich würde ich die Erfahrung jedoch als positiv bezeichnen und ich konnte das angebrachte Feedback gut gebrauchen.&lt;/p&gt;

&lt;p&gt;Abschließend betrieben wir einmal selbst Code-Golfing. Wir schrieben zwei Javascript-Snippets (eines in Node.js, eines in Vanilla JS), mit deren Hilfe man Platzhalter-Bilder von &lt;a href=&quot;http://loremflickr.com/&quot;&gt;Lorem Flickr&lt;/a&gt; generieren konnte. Sowohl das &lt;a href=&quot;https://twitter.com/timomeh/status/738021433939505152&quot;&gt;Node.js Snippet&lt;/a&gt; als auch das &lt;a href=&quot;https://twitter.com/_chrispop/status/738022734236680192&quot;&gt;Vanilla JS Snippet&lt;/a&gt; passten in einen Tweet. Sehr spaßig!&lt;/p&gt;
</description>
        <pubDate>Wed, 01 Jun 2016 08:45:56 +0000</pubDate>
        <link>http://plsr.github.io/social-coding-diary/log/2016/06/01/Termin-6.html</link>
        <guid isPermaLink="true">http://plsr.github.io/social-coding-diary/log/2016/06/01/Termin-6.html</guid>
        
        
        <category>log</category>
        
      </item>
    
      <item>
        <title>5. Termin</title>
        <description>&lt;p&gt;Der 5. Termin beschäftigte sich mit der Frage, wie man einen eigenen Talk organisiert.&lt;/p&gt;

&lt;p&gt;Zunächst sollten ein paar Dinge geklärt werden, wie z.B. warum wird der Talk überhaupt gehlaten, also: welche Ziel hat er? Was ist die Zielgruppe des Talks? Expreten oder Anfänger? Ist das Publikum auf eine Disziplin beschränkt oder eher gemischt? Auf welcher Sprache wird der Talk gehalten? Im bezug auf die Sprache wurden auch einige Dos &amp;amp; Don’ts aufgezeigt.&lt;/p&gt;

&lt;p&gt;Nach dem klären dieser Fragen geht es um den eigentlichen Talk: Wie ist dieser aufgebaut, was wird wann erzählt und wie schafft man es, dass die Zuhörer sich nicht zu Tode langweilen? Hier wurde uns gezeigt, wie man am schlauesten eine Outline für einen Talk schreibt.&lt;/p&gt;

&lt;p&gt;Im letzten Teil ging es dann darum, wie die Slides visuell angenehm zu gestalten sind. Hier ging es sowohl um Bilder und Typographie, als auch um Colorschemes und Layout der Slides.&lt;/p&gt;

&lt;p&gt;Zum Ende haben wir uns Themen ausgesucht, über die wir beim nächsten Termin einen Talk halten wollten.&lt;/p&gt;
</description>
        <pubDate>Wed, 25 May 2016 08:45:56 +0000</pubDate>
        <link>http://plsr.github.io/social-coding-diary/log/2016/05/25/Termin-5.html</link>
        <guid isPermaLink="true">http://plsr.github.io/social-coding-diary/log/2016/05/25/Termin-5.html</guid>
        
        
        <category>log</category>
        
      </item>
    
      <item>
        <title>4. Termin</title>
        <description>&lt;p&gt;Der 4. Termin fand nicht im üblichen Format statt, sondern wir besuchten eine User-Group, die Cologne.rb. Wie der name schon vermuten lässt beschäftigt sich die Cologne.rb mit Ruby. Auch wenn es mein Name nicht unbedingt vermuten lässt beschäftigte ich mihc bisher eher weniger mit Ruby. Ich wusste daher nicht so recht, was ich erwarten sollte.&lt;/p&gt;

&lt;p&gt;Auf der Usergroup wurden drei Talks gehalten: Zum Thema Verschlüsselung, zum Thema Code Golf und ein Live-Beispiel zum Golfen.&lt;/p&gt;

&lt;p&gt;Der Talk zur Verschlüsselung war recht mathematisch und hat mich in den rechenintensiveren Teilen öfters verloren, die generelle Logik hinter der Verschlüsselung von Daten zu verstehen war allerdings sehr interessant.&lt;/p&gt;

&lt;p&gt;Sehr unterhaltsam war der Talk zum Code Golfing, bei dem es darum ging, ein lauffähiges Stück code in 140 Zeichen oder weniger bringen. Sowohl die Idee, als auch die Präsentation des Talks gefielen mir sehr gut.&lt;/p&gt;

&lt;p&gt;Als letztes gab es ein Livecoding zum Code Golf, bei dem der Versuch unternommen wurde, eine Ruby on Rails App in 140 Zeichen zu verpacken. Obwohl ich weder von Ruby noch von Rails großartige Vorkenntnisse besaß war es interessant zu sehen, aus welchen Teilen eine Rails App besteht und welche von ihnen man löschen kann ohne ihre Lauffähigkeit zu beeinflussen.&lt;/p&gt;

&lt;p&gt;Vor der Cologne.rb war ich nur auf einem Meetup (Webmontag), werde in Zukunft aber noch öfter an welchen Teilnehmen. Ich denke, Meetups sind ein gutes Format, um neue Leute und Ideen kennen zu lernen und den eigenen Horizont etwas zu erweitern (gerade, wenn man auf meetups “fremder Sprachen” teilnimmt).&lt;/p&gt;
</description>
        <pubDate>Wed, 18 May 2016 08:45:56 +0000</pubDate>
        <link>http://plsr.github.io/social-coding-diary/log/2016/05/18/Termin-4.html</link>
        <guid isPermaLink="true">http://plsr.github.io/social-coding-diary/log/2016/05/18/Termin-4.html</guid>
        
        
        <category>log</category>
        
      </item>
    
      <item>
        <title>3. Termin</title>
        <description>&lt;p&gt;Der dritte Termin beschäftigte sich mit deployment also der Frage, wie ich meine änderungen im Code in eine Live-Umgebung schiebe. Hierfür haben wir uns mit einem &lt;a href=&quot;https://github.com/wpf-social-coding/deploy_example&quot;&gt;Beispiel&lt;/a&gt; das Tool &lt;a href=&quot;https://www.heroku.com/&quot;&gt;Heroku&lt;/a&gt; angesehen.&lt;br /&gt;
Mit Heroku ist es sehr simpel, einen laufenden Serve für gar kein bis wenig Geld aufzusetzen. Wir haben uns angesehen, wie man eine App mit Heroku verknüpft und die änderungen pushed. Aus Spaß haben wir uns auch angesehen, was man machen müsste, wenn man den Server komplett selbst aufsetzen würde (mit Hilfe von &lt;a href=&quot;https://www.digitalocean.com/&quot;&gt;Digital Ocesn Droplets&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Außerdem haben wir uns mit Virtuals Machines beschäftigt und wie diese in Development und Deployment zum Einsatz kommen. Generell besteht der Vorteil bei ihrem Einsatz darin, dass man eine garantiert laufende Development-Umgebung bereit stellen kann die jeder sofot nutzen kann. Es müssen also keine dependencies mehr installiert werden. Das einzige, was (bei Vagrant) nach dem Clonen noch gemacht werden muss, ist das Ausführen von &lt;code class=&quot;highlighter-rouge&quot;&gt;Vagrant Up&lt;/code&gt;.&lt;/p&gt;
</description>
        <pubDate>Wed, 04 May 2016 08:45:56 +0000</pubDate>
        <link>http://plsr.github.io/social-coding-diary/log/2016/05/04/Termin-3.html</link>
        <guid isPermaLink="true">http://plsr.github.io/social-coding-diary/log/2016/05/04/Termin-3.html</guid>
        
        
        <category>log</category>
        
      </item>
    
      <item>
        <title>2. Termin</title>
        <description>&lt;p&gt;Der 2. Termin stand unter dem Motto “Start Hacking”. Zu Beginn gabe es einen kurzen Input: Was genau bedeutet Social Coding eigentlich? Welche Wege gibt es, um einem Projekt oder einer Community zu helfen, eben sozial zu coden?&lt;br /&gt;
Auch wenn hier sofort Github ins Gedächtnis kommt, ist das nicht alles. Genauso hilft es, Dokumentationen zu schreiben oder Blogpost zu veröffentlichen.&lt;/p&gt;

&lt;p&gt;Außerdem beschäƒtigte sich der Input mit der Frage, wie man ein Projekt findet, an dem man in irgendeiner Weise mitarbeiten möchten. Hier sind vor allem solche Projekte sinvoll, mit denen man persönlich, ob privat oder im Arbeitsalltag, zu tun hat.&lt;/p&gt;

&lt;p&gt;Im zweiten Teil des Termins sollten wir dann selber an etwas mitwirken. Für mich persönlich bot es sich an, Bug Tracking im Node-Modul &lt;a href=&quot;https://github.com/sass/node-sass&quot;&gt;Node Sass&lt;/a&gt; zu betreiben. Hier hatte ich seit längerem das Problem, dass die binaries des Moduls nicht automatisch gebuildet wurden, sondern ich diese manuell (über &lt;code class=&quot;highlighter-rouge&quot;&gt;node-sass/scripts/install.js&lt;/code&gt;) erzeugen musste.&lt;br /&gt;
Ich versuchte also nachzuvollziehen, wie das Modul aufgebaut ist und an welcher Stelle die binaries gebuildet werden sollten. Aufgrund der mäßig guten Internet-Verbindung stellte sich das als langwierige Aufgabe heraus, da ich den installationsprozess häufig durchlaufen lassen musste.&lt;/p&gt;

&lt;p&gt;Wirklichen Erfolg hatte ich damit leider nicht, der Bug besteht bis heute. Da ich allerding aus der einzige Mensch zu sein scheine, bei dem dieser Bug auftritt würde ich die Ursache dafür außerhalb von Nodes-Sass vermuten.
Insgesamt hat mir dieser Termin aber dabei geholfen, mich in fremden Code einzulesen und diesen auch zu Debuggen.&lt;/p&gt;
</description>
        <pubDate>Wed, 27 Apr 2016 08:45:56 +0000</pubDate>
        <link>http://plsr.github.io/social-coding-diary/log/2016/04/27/Termin-2.html</link>
        <guid isPermaLink="true">http://plsr.github.io/social-coding-diary/log/2016/04/27/Termin-2.html</guid>
        
        
        <category>log</category>
        
      </item>
    
      <item>
        <title>1. Termin</title>
        <description>&lt;p&gt;Der erste Termin beschäftigte sich mit den Basics von Git und GitHub. Da mir diese grundlegenden Basics weitestgehend bekannt waren werde ich diese hier nicht noch einmal explizit aufführen. Dieser Eintrag wird sich daher eher mit den Dingen beschäftigen, die mir noch nicht bekannt waren und diese ggf. weiter vertiefen. Dies betrifft vor allem die standard git befehle, die jederzeit mit &lt;code class=&quot;highlighter-rouge&quot;&gt;git --help&lt;/code&gt; über die command line eingesehen werden.&lt;/p&gt;

&lt;h2 id=&quot;generelle-funktionsweise-von-git&quot;&gt;Generelle Funktionsweise von Git&lt;/h2&gt;
&lt;p&gt;Initialisiert man einen Ordner durch den Befehl &lt;code class=&quot;highlighter-rouge&quot;&gt;git init&lt;/code&gt; als Git Repository wird in diesem Ordner ein Unterodner mit dem Namen &lt;code class=&quot;highlighter-rouge&quot;&gt;.git&lt;/code&gt; angelegt. Git identifiziert einzelne Zustände des Rpository über einen SHA1-Hash, der übern den Content gebildet wird und (in der Regel) eindeutig ist. Im &lt;code class=&quot;highlighter-rouge&quot;&gt;.git&lt;/code&gt; Ordner sind alle Versionen des Rpositories gespeichert und über den SHA1-Hash identifizierbar.&lt;br /&gt;
Objekte in git unterteilen sich in die Folgenden:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;blob&lt;/strong&gt; - ein file&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;commit&lt;/strong&gt; - Zeigt auf einen einzelnen tree&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;tree&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;tag&lt;/strong&gt; - Markiert einen Commit als einen besonderen (i.d.R. ein release)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Der Typ eines Objects kann mittels &lt;code class=&quot;highlighter-rouge&quot;&gt;git cat-file -t&lt;/code&gt; eingesehen werden. Um den Inhalt des Objects zu sehen, wird &lt;code class=&quot;highlighter-rouge&quot;&gt;git cat-file -p&lt;/code&gt; verwendet.&lt;/p&gt;

&lt;h2 id=&quot;stashing&quot;&gt;Stashing&lt;/h2&gt;

&lt;p&gt;Mein einziger Kontakt mit &lt;a href=&quot;https://git-scm.com/book/no-nb/v1/Git-Tools-Stashing&quot;&gt;Stashing&lt;/a&gt; war bisher ein Fix, um schon geaddte Dateien wieder aus dem Staging-Bereich zu entfernen. Die Lösung hier war es, diese änderungen in einen stash zu schieben und diesen anschließend zu löschen.&lt;br /&gt;
Übersetzt man “stash” mit “Lager” bekommt man eine recht genaue Vorstellung von der Funktionsweise des Commands. &lt;code class=&quot;highlighter-rouge&quot;&gt;git stash&lt;/code&gt; dient also dafür, aktuelle änderungen an einem anderen Ort zu speichern. Die Dokumentation führt ein gutes Beispiel auf:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Often, when you’ve been working on part of your project, things are in a messy state and you want to switch branches for a bit to work on something else. The problem is, you don’t want to do a commit of half-done work just so you can get back to this point later.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Die Anwendung von &lt;code class=&quot;highlighter-rouge&quot;&gt;git stash&lt;/code&gt; ist recht simpel: solange &lt;code class=&quot;highlighter-rouge&quot;&gt;git status&lt;/code&gt; nicht committete oder geaddete changes ausgibt ruft man &lt;code class=&quot;highlighter-rouge&quot;&gt;git stash&lt;/code&gt; auf und die änderungen werden in einen neuen Stash geschreiben. Git nummeriert die stashes dabei (angefangen bei 0) automatisch durch, wobei der neuste stash immer an der ersten Stelle (0) liegt. 
Mit &lt;code class=&quot;highlighter-rouge&quot;&gt;git stash list&lt;/code&gt; lassen sich die einzelnen stashes anzeigen, mit &lt;code class=&quot;highlighter-rouge&quot;&gt;git stash apply [stash@x]&lt;/code&gt; lassen sich stashes wieder in das working directory einfügen. Werden Stashes nicht mehr benötigt können diese mit &lt;code class=&quot;highlighter-rouge&quot;&gt;git stash drop&lt;/code&gt; wieder gelöscht werden.&lt;/p&gt;

&lt;h2 id=&quot;merging&quot;&gt;Merging&lt;/h2&gt;

&lt;p&gt;Normales Merging vie &lt;code class=&quot;highlighter-rouge&quot;&gt;git merge&lt;/code&gt; war mir bereits vor dem Termin ein Begriff, neu war für mich aber die option &lt;code class=&quot;highlighter-rouge&quot;&gt;--squash&lt;/code&gt;. Mit dieser Option werden die Commits des zu mergenden bracnhes nicht mit in die hsitory geschrfeiben, sondern als ein einzuger Commit auf den Head geschrieben.&lt;/p&gt;

</description>
        <pubDate>Wed, 20 Apr 2016 08:45:56 +0000</pubDate>
        <link>http://plsr.github.io/social-coding-diary/log/2016/04/20/Termin-1.html</link>
        <guid isPermaLink="true">http://plsr.github.io/social-coding-diary/log/2016/04/20/Termin-1.html</guid>
        
        
        <category>log</category>
        
      </item>
    
  </channel>
</rss>
