instant-thinking.de

just enough to get you started and leave you confused

QuickLinks vom 19. Februar bis zum 22. April

| Kommentare

Meine pinboard.in-Links vom 19. Februar bis zum 22. April:

  • Syndicate - is a RSS Discovery Extension for Safari
  • AnyBar - is a small indicator for your OS X menubar that does one simple thing: it displays a color dot. What color means is up to you. When to change color is also up to you.
  • gws - is a KISS, bash, colorful helper to manage workspaces composed of git repositories.
  • xsv - is a fast CSV toolkit command line program written in Rust for indexing, slicing, analyzing, splitting and joining CSV files.
  • Mouse without Borders - is a product that makes you the captain of your computer fleet by allowing you to control up to four computers from a single mouse and keyboard. This means that with Mouse without Borders you can copy text or drag and drop files across computers.
  • RuboCop - is a Ruby code style checker based on the community-driven Ruby Style Guide.
  • HTML5 UP! - makes spiffy HTML5 site templates that are: Fully Responsive, Built on intelligent HTML5 + CSS3, Super Customizable, 100% Free under the Creative Commons
  • Caret - Based on the amazing Ace editing component, Caret brings professional-strength text editing to Chrome OS. With Caret, you no longer need to install a second OS to get what other platforms take for granted: a serious editor for local files, aimed at working programmers.
  • myvim - creates a tar archive of your .vimrc and .vim directory and append it to a small bash script that starts Vim with your usual settings and plugins.
  • vim-anywhere - Sometimes, you edit text outside of Vim. These are sad times. Enter vim-anywhere! Once invoked, vim-anywhere will open a buffer. Close it and it’s contents are copied to your clipboard and your previous application is refocused.

1

| Kommentare

Heute vor einem Jahr, um 05:15 Uhr in der Früh, kam Nina auf die Welt und komplettierte unsere Familie aufs bezauberndste.

Gestern vor einem Jahr, kurz vor Mitternacht, eröffnete ich ein Telefongespräch mit den eher unwirschen Worten “Renate, das ist keine Übung!”. Es war so weit. Nina hatte unmissverständlich klar gemacht, dass sie nun ziemlich startklar sei mit dieser ganzen Geburtsgeschichte und die verehrte Schwiegermutter war nun auserkoren, den zukünftigen großen Bruder zu beaufsichtigen während ich Kathi ins Alfried Krupp begleitete.

Es ging alles ziemlich gut und so konnte es tatsächlich eine ambulante Geburt werden.

Am frühen Nachmittag waren schon wieder alle zuhause und Linus konnte seine kleine Schwester gebührend begrüßen. Nur zwölf Monate später ist aus dem Bündel Mensch eine quirlige Einjährige geworden. Eine Forscherin, eine Gefahrensucherin, eine Meckerziege und eine Krawallbiene.

Nina, es ist so schön dich zu haben. Allesalles liebe zu deinem ersten Geburtstag. Ich bin schon total gespannt, was dein zweites Jahr auf diesem Planeten für dich und uns bereithält.

QuickLinks vom 17. Dezember bis zum 13. Februar

| Kommentare

Meine pinboard.in-Links vom 17. Dezember bis zum 13. Februar:

  • origami-pdf - Origami is a Ruby framework designed to parse, analyze, and forge PDF documents. This is NOT a PDF rendering library. It aims at providing a scripting tool to generate and analyze malicious PDF files. As well, it can be used to create on-the-fly customized PDFs, or to inject (evil) code into already existing documents.
  • Academic Markdown - is a Python module for generating .md, .html, .pdf, .docx, and .odt files from Markdown source. Pandoc is used for most of the heavy lifting. However, Academic Markdown offers some additional functionality that is useful for writing scientific documents, such as integration with Zotero references, and a number of useful Academic Markdown extensions. Who knew writing could be so nerdy?
  • Tmux Plugin Manager - (TPM for short) is - as its name more than suggests - a way to handle plugins to tmux. Both the plugin manager and the plugins it manages are pretty much just shell scripts - you get nothing here, that you could not have written yourself. However you get both the conveinience of a simple plugin manager, and the flexibility to easily extend its functionality.
  • Kanboard - is a simple and open source visual task board web application.
  • Pipe Viewer - is a terminal-based tool for monitoring the progress of data through a pipeline. It can be inserted into any normal pipeline between two processes to give a visual indication of how quickly data is passing through, how long it has taken, how near to completion it is, and an estimate of how long it will be until completion.
  • Yosemite San Francisco Font - Replace Helvetica Neue on your 10.10 Yosemite Mac with San Francisco – the Watch font.
  • icdiff - Your terminal can display color, but most diff tools don’t make good use of it. By highlighting changes, icdiff can show you the differences between similar files without getting in the way. This is especially helpful for identifying and understanding small changes within existing lines.
  • ddate - Perpetual Date Converter From Gregorian To POEE (Paratheo-Anametamystikhood Of Eris Esoteric) Calendar. Sacred Document Of The Frogs (old Erisian poem): 73 Days hath Chaos, Discord, Confusion, Bureaucracy, and Aftermath
  • git-extras - A very handy collection of git utilities – repo summary, repl, changelog population, author commit percentages and many, many more…
  • ZFS-TimeMachine - enables TimeMachine style backups for ZFS users. ZFS-Timemachine creates incremental backups of zfs datasets on one host to datasets on another host. This is done via sending snapshots, deleting old ones in time machine style. It works with FreeBSD and Macs (with TensCompliments ZFS implementation), but should work with other ZFS implementations as well.

Mobiles Scannen mit dem Fujitsu ScanSnap iX100

| Kommentare

Ich verfüge schon eine ganze Weile über einen echt guten Dokumentenscanner. Den Fujitsu ScanSnap S1500M. Das Teil ist nach wie vor die Wucht in Tüten und tut genau das was es soll. Sehr gut und sehr zuverlässig.

Der S1500M ist allerdings völlig ungeeignet für den mobilen Einsatz, er ist ziemlich schwer, benötigt eine eigene Stromversorgung und muss per USB an einen Computer angeschlossen werden.

Ganz anders ist dagegen der neue ScanSnap iX100, der mich in einer schnörkellosen Pappbox erreichte.

iX100 Übersicht

  • Der Scanner ist sehr leicht und handlich
  • Er bezieht seinen Strom aus einem Standard USB-Port und kann auch über den eingebauten Akku betrieben werden.
  • Mit dem iX100 genügt ein Smartphone oder ein Tablet1 zum scannen. Klassische Computer gehen natürlich auch.
  • Nach Gusto verbindet man das Gerät über ein bestehendes WLAN oder lässt den Scanner gleich selbst eins aufspannen.

Das Gerät fasst sich gut an und ist wertig verarbeitet. An Bedienelementen verfügt es nur über eine einzige Scan-Taste2. Sympathisch.

Nach dem auspacken wird dann doch einmalig ein echter Computer benötigt um den Scanner ins lokale WLAN zu bringen. Nach dem kurzen und schmerzlosen Prozedere kann der Scanner aber dann per iPhone bedient werden. Die kostenlose ScanSnap Connect Application gewinnt sicher keinen Schönheitspreis3, ist dafür aber funktional und schnell.

Auch der Scanvorgang an sich ist für ein mobiles Gerät fix getan: Knappe 5 Sekunden für eine A4-Seite halte ich für respektabel.

Das Ergebnis4 kann sich durchaus sehen lassen. Da muss man sich mit einem Smartphone schon etwas anstrengen5 um ein ähnlich gutes Ergebnis zu erzielen.

Was aber dann doch negativ auffällt:

Direkt aus dem Gerät fehlt die OCR. Daher muss, soll irgend etwas sinnvolles mit dem Scan passieren, in jedem Fall nochmal eine extra Applikation für die Texterkennung sorgen. Entweder auf dem mobilen Gerät oder auf dem klassischen Computer.

Ein weiteres fehlendes Feature ist der automatische Duplex-Scan. Will man beide Seiten eines Papiers erfassen hilft nur manuelles Wenden.

Ich bin es außerdem gewöhnt, direkt einen ganzen Stapel Papier in einen Dokumentenscanner laden zu können. Das ist hier mit dem Einzelblatteinzug natürlich nicht möglich, bei dem geplanten mobilen Gebrauch des Scanners aber auch nicht so gedacht.

iX100 Einsatzgebiet

Der Scanner ist klar auf den mobilen Einsatz zugeschnitten. In einem Rucksack oder einer Laptoptasche fällt das Gerät mit seinen 400 Gramm wortwörtlich nicht ins Gewicht. Einen S1500M durch die Gegend zu schleppen ist im Vergleich völlig indiskutabel.

Das einzige Problem des Scanners ist daher auch, dass ich dieses Einsatzgebiet im wesentlichen nicht habe.

Ich dachte zunächst, dass man damit schnell und einfach die eintrudelnde Papierpost direkt nach dem Öffnen in den Paperless-Workflow6 einführen könnte. Also direkt da, wo man die Briefumschläge öffnet. Bei uns geschieht das halt üblicherweise in der Küche und so könnte man sich den Roundtrip ins Arbeitszimmer sparen.

Aber das hat sich letztlich als nicht soo praktikabel erwiesen. Was schade ist, denn der Scanner machte sich in der Küchenschublade echt gut.

Hier zahlt es sich dann in Sachen Effizienz aber doch aus, die Post eine gewisse Zeit als Papier in einem formschönen Posteingangskörbchen aufzuheben und dann gesammelt dem S1500M vorzuwerfen.

Sollte ich tatsächlich einmal in der Situation sein eine einzelne Seite on the road scannen zu müssen, so erledigt das mein iPhone mit Scanbot durchaus zufriedenstellend und erledigt auch direkt die OCR. Im Zweifel trage ich das Papier halt nach Hause.

iX100 Fazit

Das ideale Einsatzgebiet des iX100 ist daher klar im professionellen Road Warrior Bereich zu sehen. Die Anzahl der Seiten die unterwegs zu erfassen sind, sollte dabei im niedrigen, zweitstelligen Bereich liegen. Darunter tut es auch ein iPhone, darüber ist man besser mit einem Desktop-Scanner bedient. In diesem Mengengerüst7 leister der iX100 dann aber genau das, was man von ihm erwartet.

Full Disclosure: Der iX100 wurde mir freundlicherweise von Fujitsu/Akima zur Verfügung gestellt.

  1. Ich habe es mit iPhone 6 und iPad 2 ausprobiert, Androids sollten auch funktionieren…

  2. Diese leuchtet im Betrieb auch noch hübsch blau…

  3. Und ist auch nicht an die Displayabmessungen eines iPhones der 6er Baureihe angepasst…

  4. Sacht redigiert, OCR nachträglich mit PDFpen unter OS X erstellt…

  5. Und eine gute Beleuchtung haben…

  6. Der hier beschriebene Workflow ist derzeit arg im Umbruch…

  7. Das allerdings schon eine etwas enge Nische darstellt…

4

| Kommentare

Heute vor vier Jahren kam Linus auf die Welt.

Schon fast ein ganzes Jahr ist er ein großer Bruder und gute zwei Monate wohnt er in seinem1 neuen Zuhause. Dazu der Umzug und auch sonst viel Action im Kindergarten und anderswo. Das vierte Lebensjahr war für Linus ein durchaus ereignisreiches.

Nun kann man am Horizont schon ein klein wenig die Schulzeit heranziehen sehen, es ist wirklich unfassbar wie schnell die Zeit vergeht.

Mach weiter so wie bisher du verrückter Sohn und habe ein tolles fünftes Lebensjahr. Ich bin schon sehr gespannt, was es für dich und uns bereithalten wird.

Alles erdenklich gute & liebe zu deinem Geburtstag. Wie schön, dass es dich gibt.

  1. und unserem…

Was sind wir? Eltern!

| Kommentare

Da wollte ich kürzlich in den späten Abenstunden der geliebten Ehefrau noch einen lustigen Tweet als Sketch-Monolog künstlerisch darbieten und dann passierte das:

  • Dennis: Wer sind wir?
  • Dennis: ELTERN!
  • Dennis: Was wollen wir?
  • Dennis: AUSSCHLAFEN!
  • Dennis: Was machen wir stattdessen?
  • Kathi: ELTERN!

Turns out: Die Ehefrau kennt1 den browsers!-Witz:

Ich liebe sie so sehr.

  1. Und versteht, und mag…

QuickLinks vom 15. Oktober bis zum 13. November

| Kommentare

Meine pinboard.in-Links vom 15. Oktober bis zum 13. November:

  • schmutz - Thoughts o̒f dirt sp̒ill over to̒ your unicode enabled ̇tex̒t.̣
  • cVim - provides awesome Vim bindings for Google Chrome including command mode.
  • Cider - is a simple wrapper for Homebrew and Homebrew Cask that allows you to save your setup across different machines. This lets you to restore a backup without having to deal with the mess that was the state of your previous installation, or painstakingly babysit the process step-by-step. In addition to Homebrew, Cider also supports managing your user defaults, restoring symlinks, and running scripts to conveniently manage other settings such as your dotfiles.
  • git-feed - a script to generate Atom feeds for git commit logs
  • Paperkey - A reasonable way to achieve a long term backup of OpenPGP (GnuPG, PGP, etc) keys is to print them out on paper. Paper and ink have amazingly long retention qualities - far longer than the magnetic or optical means that are generally used to back up computer data.
  • Haste - is an open-source pastebin software written in node.js, which is easily installable in any network. It can be backed by either redis or filesystem, and has a very easy adapter interface for other stores. A publicly available version can be found at hastebin.com
  • desktoplistview - is a tiny standalone executable that lets you switch your Windows desktop from icon to list view
  • Apple DE Keyboard Layout für Windows - Dies ist ein Tastaturlayout, das Sie auf einem Windows-System (ab XP) installieren und alternativ zur normalen deutschen Tastaturbelegung oder der “Deutsch (IBM)”-Belegung verwenden können. Es ahmt die Tastaturbelegung eines deutschen Apple-Macintosh-Systems nach.
  • Piccolo - is a tiny, pocket sized open source CNC-bot. Using laser-cutting, off-the-shelf hardware and Arduino, you can make your own simple 3 axis robot. Attach a brush or pen to make a quick drawing robot, or extend Piccolo with sensors, custom toolheads, or by using multiple Piccolos together. Experiment with 2D or 3D digital fabrication at a small scale!
  • HastyScribe - is a simple, self-contained, command-line program able to convert markdown files into self-contained HTML pages, automatically embedding all the needed fonts, stylesheets and images.

QuickLinks vom 29. August bis zum 09. Oktober

| Kommentare

Meine pinboard.in-Links vom 29. August bis zum 09. Oktober:

  • 1Password Anywhere for Chromebook - is a Chrome Extension for 1Password Anywhere use on Chromebooks. 1Password Anywhere for Chromebook uses the 1Password Anywhere feature. The gist is if your 1Password keychain lives in Dropbox, you can open an HTML file that will give you access to your 1Password data.
  • Kitchenplan - is a small tool to fully automate the installation and configuration of an OSX workstation (or server for that matter) using Chef. But while doing so manually is not a trivial undertaking, Kitchenplan has abstracted away all the hard parts.
  • PirateBox - is a DIY anonymous offline file-sharing and communications system built with free software and inexpensive off-the-shelf hardware. PirateBox creates offline wireless networks designed for anonymous file sharing, chatting, message boarding, and media streaming. You can think of it as your very own portable offline Internet in a box!
  • Localhomepage - A local home page for OS X web development. This is a small and simple local home page that automatically lists, and provides links to, your local sites.
  • Pencil - is built for the purpose of providing a free and open-source GUI prototyping tool that people can easily install and use to create mockups in popular desktop platforms. A collection of flowchart shapes are also available for drawing diagrams.
  • wasavi - is an extension for Chrome, Opera and Firefox. wasavi transforms TEXTAREA element of any page into a VI editor, so you can edit the text in VI. wasavi supports almost all VI commands and some ex commands.
  • wendy - (W)atch (ENT)ire (D)irector(Y) is an inotify-based directory watcher. With wendy, you can watch event in a directory or on a file, and launch a specific command when an event occurs. The program is made the moire simple possible, to leave the room to unlimited uses. Be creative!
  • Chartist - You may think that this is just yet an other charting library. But Chartist.js is the product of a community that was disappointed about the abilities provided by other charting libraries. Of course there are hundreds of other great charting libraries but after using them there were always tweaks you would have wished for that were not included.
  • MDwiki - is a CMS/Wiki completely built in HTML5/Javascript and runs 100% on the client. No special software installation or server side processing is required. Just upload the mdwiki.html shipped with MDwiki into the same directory as your markdown files and you are good to go!
  • Brackets - is a free open-source editor written in HTML, CSS, and Javascript with a primary focus on Web Development. It supports inline editing and live updates to Chrome of HTML, CSS and Javascript changes. It was created by Adobe Systems, licensed under the MIT License, and is currently maintained on GitHub. Brackets is available for cross-platform download on Mac, Windows, and Linux

Mit Javascript einen simplen, webbasierten Spielautomaten programmieren

| Kommentare

Es gibt viele Programmiersprachen in denen man einen einfachen Spielautomaten bauen kann. Die wohl am besten geeignete Sprache ist aber vermutlich Javascript. Mit Javascript kann das Spiel sowohl butterweiche Animation erhalten, als auch einfach auf verschiedene Plattformen portiert werden.

In diesem Post schauen wir uns zunächst an, wie ein Spielautomat funktioniert. Unter dem Namen Sittman and Pitt werden schon seit 1891 Spielautomaten betrieben. Seitdem haben sich Spielautomaten konstant weiterentwickelt um den Ansprüchen der modernen Spieler gerecht zu werden. Durch diese Entwicklung sind Spielautomaten nach wie vor eine der beliebtesten Freizeitbeschäftigungen der Welt.

Cryptologic, die Firma die das erste Online Kasino, InterCasino, seit 1996 besitzt, arbeitet immer noch weiter an der Site und hat die verfügbaren Spiele kürzlich auf HTML5 aufgerüstet um ein größeres Publikum zu erreichen. Der Code in diesem Post wird kein so schönes Ergebnis hervorbringen wie die Spiele der Firmen die sich auf das online gaming spezialisiert haben, aber dennoch ein Gerüst bieten mit dem gezeigt werden kann, wie ein online Spielautomat mit Javascript funktioniert.

Folgend befindet sich ein von Saurabh Odhyan erstelltes Spielautomaten-Tutorial. Ihre Lösung benutzt vor allem jQuery und verschiedene Plugins für die Animationen.

Odhyans Programm besteht aus einem Sprite, das den Spielautomaten in Bewegung bringt, drei Rädern und einem Button um die Räder zu drehen.

1
2
3
4
5
6
7
function Slot(el, max, step) {
    this.speed = 0; //speed of the slot at any point of time
    this.step = step; //speed will increase at this rate
    this.si = null; //holds setInterval object for the given slot
    this.el = el; //dom element of the slot
    this.maxSpeed = max; //max speed this slot can have
}

Der Automat wird vier Funktionen haben: Start, Stop, Anzeige der finalen Position eines Rades und Reset.

  • start() – Startet ein Rad
  • stop() – Stoppt ein Rad
  • finalPos() – Findet die Endposition des Rades wenn gestoppt wurde
  • reset() – Reset für die nächste Runde

Dann müssen noch je ein Objekt für jedes Rad und Werte für die Geschwindigkeit der Drehungen erstellt werden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
var a = new Slot('#slot1', 30, 1),
    b = new Slot('#slot2', 45, 2),
    c = new Slot('#slot3', 70, 3);

Slot.prototype.start = function() {
    var _this = this;
    $(_this.el).addClass('motion');
    $(_this.el).spStart();
    _this.si = window.setInterval(function() {
        if(_this.speed < _this.maxSpeed) {
            _this.speed += _this.step;
            $(_this.el).spSpeed(_this.speed);
        }
    }, 100);
};

Slot.prototype.stop = function() {
    var _this = this,
        limit = 30;
    clearInterval(_this.si);
    _this.si = window.setInterval(function() {
        if(_this.speed > limit) {
            _this.speed -= _this.step;
            $(_this.el).spSpeed(_this.speed);
        }
        if(_this.speed <= limit) {
            _this.finalPos(_this.el);
            $(_this.el).spSpeed(0);
            $(_this.el).spStop();
            clearInterval(_this.si);
            $(_this.el).removeClass('motion');
            _this.speed = 0;
        }
    }, 100);
};

Nachdem die Räder langsamer geworden sind wird ihre Endposition anhand der aktuellen Position berechnet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Slot.prototype.finalPos = function() {
    var el = this.el,
        pos,
        posMin = 2000000000,
        best,
        bgPos,
        i,
        j,
        k;

    el_id = $(el).attr('id');
    pos = document.getElementById(el_id).style.backgroundPosition;
    pos = pos.split(' ')[1];
    pos = parseInt(pos, 10);

    for(i = 0; i < posArr.length; i++) {
        for(j = 0;;j++) {
            k = posArr[i] + (imgHeight * j);
            if(k > pos) {
                if((k - pos) < posMin) {
                    posMin = k - pos;
                    best = k;
                }
                break;
            }
        }
    }

    best += imgHeight + 4;
    bgPos = "0 " + best + "px";
    $(el).animate({
        backgroundPosition:"(" + bgPos + ")"
    }, {
        duration: 200
    });
};

Um das fertige Ergebnis der Autorin zu sehen klicke hier. Außerdem stehen die im Code benutzten Bilder auf dieser Seite zum Download bereit. Für die Animation dieses Spiels wurde Spritely benutzt, das Programm kann hier heruntergeladen werden.