Tumblelog by Soup.io
Newer posts are loading.
You are at the newest post.
Click here to check if anything new just came in.

February 05 2015

nomeata’s mind shares: Tiptoi-Bastelei im Modellansatz-Podcast

Letzten Samstag wurde ich von Sebastian Ritterbusch vom Podcast Modellansatz zum den Tiptoi-Basteleien interviewt, und heraus kam eine 80-minütige Sendung über das Reverse-Engineering, den Code und darüber, wie genau man 2^16-1 auswendig wissen sollte.

Das Interview fand direkt im Anschluss an den Tiptoi-Bastel-Workshop im Fablab Karlsruhe statt, bei dem ich knapp zehn Vätern gezeigt habe, wie das mit dem Erstellen von eigenen Tiptoi-Sachen so funktioniert. Der Workshop war am Ende tatsächlich ausgebucht; vielleicht gibt es da mal eine Wiederholung.

Andere waren in letzter Zeit auch nich untätig: Pronwan hat ein Video von seiner sehr coolen Monkey-Island-3-Adaption für den Tiptoi-Stift erstellt!

January 30 2015

nomeata’s mind shares: Tiptoi-Basteleien live im Radio

Heute um Punkt 12:10 hatte ich meinen ersten Live-Auftritt im Radio: Der Berliner Sender FluxFM, der diese Woche ein Special zum Thema Spielwaren macht, hat mich per Telefon zu den Basteleien rund um den Ravensburger Tiptoi-Stift interviewt. Viel kann man in ein paar Minuten natürlich nicht erzählen, aber auf der (inzwischen vervollständigten) deutschen Webseite zum Projekt, deren URL ich buchstabieren sollte, findet der geneigte Höhrer ja alle Infos. Wer nochmal hören auf wieviele „ähs“ und „genau“ ich in 5 Minuten komme kann sich nochmal den Mitschnitt anhören.

Während dem Gespräch war ich gerade vor den Toren der Spielwarenmesse in Nürnberg, zu der ich von Ravensburger eingeladen wurde, die inzwischen auf das Projekt aufmerksam geworden sind und mich kennen lernen wollten. So hatte ich die Gelegenheiten, ein paar Neuheiten für 2015 in Augenschein zu nehmen, etwa die nächste Version des Stiftes, die auch spezielle Hörbücher abspielen können wird, und neue Tiptoi-Bücher, unter anderem eines mit der kompletten Starwars-Geschichte aus Episode I-VI. Ich vermute dass letzteres eher die Eltern als die Kinder ansprechen wird.

Bezüglich des tttool und der Aktivitäten auf der Mailingliste hält es Ravensburger so, dass sie das weiter offiziell ignorieren. Das heißt für uns Bastler: Keine Unterstützung, aber auch keinen Ärger. Ich solle halt stets anmerken dass das alles inoffiziell ist, von Ravensburger nicht unterstützt wird und dass kommerzielle Verwendung sicherlich rechtlichen Ärger mit sich ziehen wird. Das kann ich so mittragen. Das heißt ja nicht dass Leute von Ravensburger nicht beobachten was wir so treiben und vielleicht die eine oder andere Idee aufgreifen werden...

Ansonsten war die Spielemesse eine interessante Erfahrung: Spielwaren soweit das Auge reicht, viele Hallen voll mit Plüschtieren, mit Holzspielzeug, mit Brettspielen, mit Elektro-Gadgets und sogar Feuerwerkskörper und Kostümbedarf. Für Kinder (die es dort nicht gibt) wäre es eine Folter, denn mitnehmen darf man nichts.

Ich hab mich vor allem an den Ständen der Brettspielverlage rumgetrieben und Spiele erklären lassen wie „Om nom nom“ von Brain Games und „Kolejka“, ein sehr schön gestaltetes Spiel über das Schlangestehen im Ostblock der 80er von HUCH! & friends. Besonders nett war es am Stand von Gerhards Spiel und Design, wo ich gegen den Mitarbeiter eine Runde „Mixtour“ verlieren und eine Runde „Fendo“ gewinnen durfte. Deren Holzspiele sind ein Hand- und Augenschmauß. Schade dass ich in der Regel keine Gelegenheit habe, solche abstrakte Spiele für zwei zu spielen. (Außer auf yucata.de, aber dafür brauche ich kein Spielbrett.)

Jenseits der Brettspiele fand ich noch erwähnenswert, da innovativ, aus Kartoffelstärke gefertigte Blöcke, die man mit Bildhauerwerkzeugen bearbeitet und die innen durch Farben umrissene Skulptur herausarbeit – Bildhauen nach Zahlen!

January 23 2015

nomeata’s mind shares: Ein Tiptoi-Taschenrechner

Die Tiptoi-Bastelei hat wieder neuen Schwung bekommen. Auf der neuen Tiptoi-Mailingliste sind bereits 27 Leute unterwegs, und wir haben neue Features des Tiptoi-Dateiformats GME entschlüsselt. Auch wird unser kleines All-Round-Tiptoi-Tool tttool mächtiger: Man kann jetzt den Skripten symbolische Namen geben, statt die Codes direkt zu verwenden, und auf Wunsch erstellt tttool Audio-Samples direkt mittels eines Text-To-Speech-Programms (siehe z.B. text2speech.yaml). Außerdem hat es jetzt eine anfängerfreundlich(ere) Deutsche Webseite.

Insbesondere wurde kürzlich ein Sprungbefehl entschlüsselt, mit dem man jetzt schon richtig komplizierte Abläufe ausführen kann. Als kleine Demonstration habe ich ein Photo eines Taschenrechners genommen, über alle Tasten (bis auf den Dezimalpunkt) Codes gelegt und in unserem selbsterfunden YAML-Dateiformat den Rechner zum Leben erweckt.

Ein Taschenrechner, der jetzt sprechen kann

Ein Taschenrechner, der jetzt sprechen kann

Die meiste Logik war dabei für das Vorlesen deutscher Zahlen bis im Zehntausender-Bereich (der Stift rechnet mit 16bit, mehr braucht man also nicht) nötig. Der Code mag vielleicht auch für andere nützlich sein.

Mit dem Ausdrucken hatte ich ein wenig Schwierigkeiten. Mit dem Farblaserdrucker, auf den ich Zugriff habe, konnte ich gar nichts erreichen, und auch der Schwarz-Weiß-Laserdrucker liefert erst dann etwas brauchbares, als ich die Flächen der Tasten (etwas krude) komplett weiß gefärbt habe.

Alle nötigen Dateien – YAML-Datei, die Audio-Dateien, die fertige GME sowei die Bilder in drei Varianten als GIMP-Datei – habe ich in ein Git-Repository gepackt, falls jemand damit spielen möchte.

PS: Die Deutsche Webseite ist noch etwas unvollständig. Ich freue mich über jede Hilfe bei der Pflege der Seite.

January 22 2015

The D Language: A sweetspot between Python and C

Python has been one of my favorite languages since I started contributing to the Mercurial project. In fact Mercurial being in Python instead of git’s C/Bash codebase was an incentive to start working on Mercurial. I admired it’s clean syntax, it’s functional patterns, including laziness through generators and it’s ease to use. Python is very express and thanks to battery-included, it’s very powerful right from the beginning. I wanted to write everything in Python, but I reached limitations. CPU intensive code couldn’t be easily parallelized, it’s general performance was limiting and you had to either ship your own python or rely on system python.

For deep system integration into libraries, performance and static binaries I’ve still relied on C. One might argue that I should have used C++ over C but I really loved C’s simplicity. All it’s syntax could fit in my brain and while it’s not typesafe (see void pointer), it’s incredible fast and you canchoose from the largest pool of libraries available.

So while C gave me the power and performance, Python gave me memory safety, expressiveness and not to worry about types. I’ve always looked for a middleground, something fast, something I can easily hook into C (before there was cython) and something expressive. Last year I found D and were lucky enough tobe able to be allowed to implement a Fuse filesystem in D and an Open Source library aroudn it: dfuse.

For once it feels I found a language that hit’s a sweet-spot between expressiveness, close to the system, and performance. There are drawbacks, for sure. I’ll talk about that in another post.

What is D? D is a programming language developer by Walter Bright and Andrei Alexandrescu over the last 10 years. It’s newest incarnation is D2 which has been developed since 2007 and available since 2010. Both have worked extensively with C++ in the past and incorporated good parts as well as redesigning the bad parts. The current version is 2.066.1. Multiple compilers are available, the reference implementation DMD, a GCC frontend called and an LLVM frontend named LDC. In addition a runtime is distributed which provides thread handling, garbage collection, etc. A standard library is available, called phobos and usually distributed together with the druntime (in fact druntime is compiled into the standard library).

What makes D beautiful? First of all, D is statically typed, but in most cases types are inferred through `auto` (which C++ borrowed later on). Secondly, D has excellent support for interacting with C and C++ (just recently namespace resolution for C++ symbols was added). But most important, D offers a variety of high level data structures as part of the language. This allows for fast and efficient prototyping. Solutions in D tend to be a nice mixture between a “python”-style solution using standard datatypes and a “C”-style approach of using specialized datastructures when needed.

  import std.stdio;

  int main(string[] args) {
    auto arr = ["apple", "bananas", "cherries"];
    foreach (auto e; arr) {
      writefln("got %s", e);
    }
    return 0;
  }

In addition, D offers a very elegant template syntax to provide powerful abstractions. For example the following code generates a highly optimized version of the filter for every lamda you pass in (unlike C where we would need a pointer dereference):

  T[] filter(alias fun, T)(T[] tofilter) {
    auto result = [];
    foreach (auto e; tofilter) {
      if (fun(e)) {
         result ~= e;
      }
    }
    return result;
  }

  [1,2,3,4].filter!(x => x % 2 == 0);

But my arguable most loved feature is the unified function call syntax. Think about a structure that has a set of functions:

  struct List {
    List* next;
    void add(...) {
    }
  }

but you want to add a new method `drop`, however you can’t modify the original code. UCFS allows you to use the dot-notation to indicate the first argument:

  void drop(List a, int n) {
  ...
  }

  List l = ...
  l.drop(1); // this translates to drop(l, 1);

This gives a powerful way to add abstractions on top of existing libraries without having to obtain or fork the source code.

Get Started

If you are interested in giving D a try, a few useful resources:

Compiler: The DMD compiler is the reference compiler. It does not produce as efficient code as GDC but usually supports the most recent features. You can obtain it from http://dlang.org.

Introductions and Books: I really like ‘The D Programming Language‘ by Andrei Alexandrescu. Sadly the book must be purchased but it’s worth it. http://ddili.org/ders/d.en/ is an excellent tutorial by Ali Çehreli.
Help: The D community is very approchable and helpful. Just write a post on the D forums or Mailinglist: http://forum.dlang.org/

Hacking: Want to hack on D or it’s standard library Phobos? It’s all on github: https://github.com/D-Programming-Language.

This is just a very short overview why I start loving D, I’ll go into more details about drawbacks, C interaction and using the standard library in the next few weeks. More D to come.

flattr this!

January 12 2015

January 11 2015

January 10 2015

January 05 2015

Wenger Online#Blog: Trommelschleifmaschine

Moritz wünschte sich eine Edelsteinschleifmaschine, leider sind diese nicht ganz billig oder von der Sorte die sich nach einem Durchgang selber zerlegen weil die Vibration die Lager zerstört. Prinzipiell gibt es für diese Anwendung zwei Arten von Schleifmaschinen, Trommel- und Vibrationsschleifmaschinen.

Bei der Trommelmaschine wir eine runde Dose langsam gedreht, im Inneren befinden sich die Steine, Wasser und Schleifpulver. Nach einer zeit von 1-2 Wochen muss das Schleifpulver gegen feineres getauscht werden. Bis zum Schluss mit Polierpulver hoffentlich der gewünscht Glanz entsteht. Dazu sollte die Härte der Steine ungefähr gleich sein, sonst zerstören die harten Steine die Weichen.

Case Tumbler Bei der Vibrationsschleifmaschine wird ein nach oben offener Gummitopf von unten in eine kreisförmige Rotation versetzt. Dabei reiben die Steine und das Schleifpulver aneinander und werden dabei immer wieder umgewälzt. Diese Maschinen sind schneller am Ziel, aber meistens viel lauter und Stromfressender. Die Belastung für die Maschine ist durch die Vibration höher, so dass die günstigen Modelle schnell zerbrechen.

Mit viel Spaß an der Sache schlachteten wir einen defekten Laserdrucker um Teile für die Maschine zu finden. Mindestens eine Woche lang konnte man überall im Haus Teile des Druckers wiederfinden, die wahlweise Raumschiffe, Raketen, Energiequellen und Städte darstellten. Ich weiß garnicht warum wir eigentlich noch Lego oder Playmobil kaufen müssen.

Im Drucker fanden wir einen schönen 24V Synchronmotor inkl. Ansteuerung. Der Motor läuft auch mit 12V sauber und mit viel Kraft. Die Steuerplatine hat folgende Anschlüsse:

1: CW/CCW Drehrichtungsumschaltung (mit GND oder 5V verbinden)

2: CLK Taktsignal welches die Geschwindigkeit vorgibt. (ca. 400 – 900 Hz)

3: READY Ausgang der das Erreichen der gewünschten Geschwindigkeit anzeigt (nicht verwenden)

4: START Eingang der den Motor bei einer steigenden Flanke starten lässt.

5: 5V mit den 5V vom Arduino verbinden.

6: SG Signal Ground / GND (mit GND vom Arduino verbinden)

7: PG Power Ground / GND (mit GND vom Arduino verbinden)

8: PG Power Ground / GND (mit GND vom Arduino verbinden)

9: 24V Stromversorgung (mit Vin vom Arduino verbinden)

10: 24V Stromversorgung (mit Vin vom Arduino verbinden)

Damit der Motor läuft verwenden wir einen total unterbeschäftigten Arduino, der im wesentlichen nur das Startsignal und einen Takt ausgibt.

In die Trommel aus einem Stück Abwasserrohr und zwei EnTotal nutzloser Arduinodstopfen muss ein Loch gebohrt werden, damit beim Schließen und Öffnen die Luft entweichen kann. Dieses Loch wird dann mit einem Klebestreifen zugeklebt.

In die Trommel kommen dann ca. 1 kg rohe Steine, 3-4 Esslöffel 80er SIC Schleifpulver und dann muss das erst mal 2-3 Wochen laufen. Später geht es nach dem Waschen der Steine (nicht über dem Waschbecken, der Steinstaub verstopft alle Abflüsse) mit immer feinerem Schleifpulver weiter.

Körnung 80: ca 2 Wochen

Körnung 220: ca 1 Woche

Körnung 400: ca 1 Woche

Körnung 800-1000: ca. 3 Tage

Polierpulver X3: 1-3 Tage

Getriebe Trommelschleifmaschine

Rohsteine Steine in der Trommel

80 SIC Schleifpulver

January 04 2015

nomeata’s mind shares: ...und wo sind die Ings?

Vor ein paar Tagen schrieb ich an dieser Stelle, dass die meisten Ortsnamen auf -ingen im Süden liegen, und belegte das mit einer Google-Maps-Karte mit eigezeichnetem mittlerem Breitengrad. Darauf hin wurde ich gebeten, dies doch auch für Orte auf -ing zu machen, und auf der Karte die Orte auch einzuzeichnen.

Dies habe ich jetzt gemacht. Diesmal verwendete ich die Generic Mapping Tools, wie schon bei dem Familienbuchprojekt. Hier die Grafik für die Orte auf -ingen und hier für die auf -ing.

Ich hab nur den Median eingezeichnet, der bei -ing bei 48,499°N liegt. Der Durchschnitt liegt bei 48,950°N.

Fazit: Orte auf -ingen liegen (meist) im Schwabenland, Orte auf -ing (meist) in Bayern, aber auf die Karte sollte man trotzdem schauen bevor man in die falsche Himmelsrichtung fährt.

December 29 2014

nomeata’s mind shares: Wo sind die -ingens

Wenn ich einen Ortsnamen höre, der auf -ingen endet, dann verorte ich ihn erstmal im Süden Deutschlands, zumindest ohne weitere Informationen. Kürzlich wurde angezweifelt, ob das sinnvoll sei, schließlich gibt es ja auch z.B. in Niedersachsen etliche Orte auf -ingen. Das konnte ich nicht auf mir sitzen lassen.

Also nahm ich die Daten von geonames.org für Deutschland. Von den 147327 Orten enden 2089 auf -ingen. Nun war es einfach den Durchschnitt und Median des Breitengrades für alle Orte (50,63° und 50,62°) sowie für alle Ingens (49,64° und 48,93°) auszurechnen. Besonders der Median war auf meiner Seite: Die Hälfte aller Orte auf -ingen in Deutschland liegen südlich von Karlsruhe!

Hier das Ganze nochmal als Bild:

Durchschnitt und Median der Orte auf -ingen

Durchschnitt und Median der Orte auf -ingen

December 26 2014

nomeata’s mind shares: Geschenke mit dem Tiptoi-Stift verteilen

Nachdem inzwischen klar ist, dass man mit haushaltsüblichen Mitteln die Punkt-Codes für den Tiptoi-Stift selber herstellen kann, wurde es für mich Zeit, damit etwas jenseits der üblichen Anwendungen zu machen. Und so spannte ich den Tiptoi-Stift in die großfamiliäre Bescherungszeremonie ein.

Die Idee war, dass auf allen Geschenken kleine Aufkleber zu finden sind, die, wenn man mit dem Stift draufgeht, verraten, für wen das Geschenk ist. So kann ein (und wirklich nur ein! – daher weniger Chaos) Kind die Aufkleber suchen, aktivieren und dem Empfänger das Geschenk bringen.

Von der technischen Seite her ist das einfach. Mit meinem Tiptoi-Tool erzeuge ich mit dem Befehl tttool generate-oid 272,3701-3716 einen eigenen Anschaltcode und genügend weitere Codes: Einen pro Familienmitglied („Grandpa“, „Homer“, „Marge“ etc.), und noch ein paar für Kombinationen („Dies ist für Homer und Marge.“). Mit GIMP verteilte ich diese großflächig auf ein Blatt. 1200dpi×A4 sind zwar ganz schön viele Pixel, aber auf meinem drei Jahre alten Laptop trotzdem noch gut zu bearbeiten.

Leider haben die im generate-oid-Befehl verwendeten Zahlen nicht viel mit den vom Stift gelesenen Zahlen zu tun. Daher musste ich mir die richtigen Werte erst noch vom Stift im Debug-Modus auf Chinesisch vorlesen lassen: Der Startcode ist 42, der erste weitere Code ist 8066 und dann gehts so weiter.

Mit diesen Daten habe ich dann ein sehr einfaches Tiptoi-Programm im tttool-eigenen YAML-Format erstellt:

product-id: 42
comment: Weihnachtsgeschenktags
welcome: hallo

scripts:
  8066:
  - P(grandpa)
  8067:
  - P(homer)
  8068:
  - P(marge)
  8069:
  - P(bart)
  8070:
  - P(lisa)
  8071:
  - P(bartundlisa,lisaundbart)
  8072:
  - P(maggie)
  8073:
  - P(moe)

Es werden keine Register verwendet, da es keine Dynamik gibt. Lediglich bei den Geschenken für zwei liest er die Namen in einer zufällig Reihnenfolge vor – nicht dass Bart sonst behauptet, das Geschenk ist ja mehr für ihn als für Lisa.

Natürlich habe ich auch die entsprechenden Texte aufgenommen und als grandpa.ogg, homer.ogg usw. im gleichen Verzeichnis gespeichert. Auch eine hallo.ogg habe ich aufgenommen, damit man auch mitbekommt, wenn der Stift den Anschaltcode erkannt hat.

Mit tttool assemble weihnachten.yaml entsteht nun die weihnachten.gme-Datei, die ich auf den Tiptoi-Stift kopiere.

Nun müssen nur noch die Codes auf die Geschenke. Zuerst hatte ich die Codes auf Etiketten gedruckt (daher auch die 2×6-Anordnung in der PNG-Datei), aber da war noch ein Bug im Punktmuster, den ich erst merkte, als ich kurz vor knapp das ganze mit einem Stift testen konnte. Als der Bug dann behoben war, hatte ich nur noch normales Druckerpapier zur Verfügung, aber mit so Klebe-Quadraten für Photoalben war es genauso gut möglich, die Geschenke zu markieren. Zumindest als mir aufgefallen ist, dass ich die Schnipsel auch wirklich richtig rum draufkleben sollte...

Die Reste der Codes

Die Reste der Codes

Den Anschaltcode darf man natürlich nicht vergessen; der kam auf einen Schoko-Goldtaler. Damit war dann alles bereit und die Kinder konnten zur Bescherung auf die Jagd nach kleinen weißen Quadraten gehen, und hatten einen rießen Spaß, als sie meine Stimme aus dem Stift hörten.

Mit etwas mehr Vorbereitungszeit könnte man die Aufkleber natürlich noch schöner gestalten, in dem man mit den Codes schöne kindgerechte Motive aufs Papier bringt. Dies dann vielleicht fürs nächste Mal.

PS: Am 31. Januar werde ich im Fablab Karlsruhe einen Workshop geben, in dem gezeigt wird, wie man sein eigenes Tiptoi-Produkt erstellt. Es gibt noch keine Webseite dafür, aber im Mikrokontroller-Forum stehen die wichtigsten Infos. Wenn du in der Gegend ist: Ich freue mich über jeden Teilnehmer!

PPS: Es gibt seit heute eine Tiptoi-Bastler-Mailingliste, auf der Ideen wie diese hier besprochen, Probleme mit dem tttool-geklärt und neue Erkentnisse über den Stift und das GME-Format ausgetauscht werden können. Auch hier bist du herzlich willkommen, mitzumachen.

December 20 2014

Wenger Online#Blog: Backe, backe Kuchen

Krümelmonster

Die Kinder waren fleißig und und getreu nach dem Lied “In der Weihnachtsbäckerei gibt es manche Leckerei, Zwischen Mehl und Milch macht so mancher Knilch eine riesengroße Kleckerei.” sah es nachher in der Küche aus…

Older posts are this way If this message doesn't go away, click anywhere on the page to continue loading posts.
Could not load more posts
Maybe Soup is currently being updated? I'll try again automatically in a few seconds...
Just a second, loading more posts...
You've reached the end.

Don't be the product, buy the product!

Schweinderl