Freitag, 29. November 2013

mostly money: Geldgeschenk mit QR

Heute war ich auf einem Geburtstag.

Ich hatte im Vorfeld einige Geschenk-Ideen, konnte/wollte mich jedoch nicht auf eine festlegen und sie waren zu unterschiedlich um einen Amazon-Gutschein o.ä. daraus zu machen... => Da hilft nur Geld.


Um die Ideen (als Anregung) zu vermitteln und damit's nicht gar so plump daher kommt hab ich's wie folgt verpackt:

  • auf http://www.qrcode-generator.de gehen und sich Bilder für die einzelnen Links mit den Ideen generieren lassen
  • Es ähnlich wie bei einem Adventskalender ein paar Fensterchen hinzufügen
  • Das ganze beim dm (o.ä.) ausdrucken, sodass es nicht gar so als billiger Papierfetzen daher kommt
  • die Fensterchen ausschneiden und Geldscheine dahinter kleben (Tesa sollte verlustfrei entfernbar sein)
Im Zweifel kann man auch andere Geldscheinbereiche nehmen, dann wirkt's noch etwas farbiger ...

Samstag, 23. November 2013

Mostly Garbage: Lego-Mülltonnen-Abtrennung - Ausführung

Die Bestellung klappte prima - alles passte in ein 30kg-Paket, das ganz normal mit der Post kam.

Danach wurde gemütlich vor-aufgebaut:




Draussen hab ich es erst einmal komplett zusammengeschraubt und das ganze ins Wasser gebracht.
=> Hierfür bieten sich 2 Leute und eine ordentliche Wasserwaage an, die man möglichst überall dran hält.
Die Schnellspanverbinder zieht man handfest an.

Ritter Rost läßt grüßen

Danach kümmert man sich um das Innenleben der 3 entstandenen Rechtecke.
Wir haben uns entschloßen, Baustahlmatten einzubringen und diese danach wieder zu verstecken:
  • An der langen Rückseite soll Efeu eingepflanzt werden, das hochranken darf
  • An den Seiten werden vermutlich Haselnuss-Ruten zwischen die Baustahl-Streben eingeflochten























Zu Risiken und Oioioi lesen Sie bitte die Packungsbeilage und fragen Sie ...

  • Wenn man kurz ein bisschen Baustahl holen möchte, so kostet das
    • Nur 35 Euro für 300x230cm
    • Wenig Schweiss, es mit einem Bolzenschneider aufs passende Mass zu kriegen
    • Dafür Kopfzerbrechen, die 2m langen Matten in einen PKW und nach Hause zu bugsieren
  • Die Gewindefüße sind nicht sooo lang und lassen sich (zumindest bei mir) auch nicht komplett einschrauben (Innen-Gewinde zu kurz)
    • somit sollten die Alu-Eckpfosten schon prinzipiell in etwa die richtige Länge haben.
  • Die Ecken werden zum Teil noch mit dem Boden verbunden: dickes Alu-Blech parallel zu den Eckpfosten und mit der Rabatte sowie der Nut verschraubt.

Fazit

  • Der Aufbau hat wirklich max. 5-6 Stunden (mit allen kleineren Arbeiten drumrum) gedauert und einigermassen funktioniert.
  • Die kritischen Teile wie mm-genaues Sägen wurden durch den Zulieferer abgenommen, sodass es recht idiotensicher wird.
  • Ich kann's bisher empfehlen ;-)

Dienstag, 12. November 2013

Mostly Garbage: Lego-Mülltonnen-Abtrennung - Planung

Das Haus ist inzwischen recht fertig, die Garten-Teile drumrum ebenfalls - nur direkt vorne, kurz bevor man rein läuft, da sieht's wirklich nicht gut aus.

Das Problem

Wir haben von unserem Bauträger eine Fläche mit Beton-Steinen für die Mülltonnen bekommen und sie "funktioniert" - bloss sieht sie nicht gut aus. Damit der Regen besser abläuft oder weil sie es nicht besser hin bekommen haben ist die Fläche jedoch krumm in alle Richtungen, sodass eine Standard-Verhüllung ohne den Einsatz unheimlich vieler Unterlegscheiben nicht wirklich funktioniert.

Die Idee

Allgemein

Wir hatten uns folgendes gedacht:
  • Wir wollen ohne Türen zu öffnen oder die Tonnen vorzuziehen etwas einwerfen können.
    => Eine Lösung wären Deckel am Deckel was ein wenig aufwändiger wäre
    => Wir konnten uns jedoch auch mit einer nach vorne und oben offenen Lösung (ohne Deckel) anfreunden.
  • Wir haben etwas Respekt/Angst vor Unwetter u.ä.
    => Damit der Wind das ganze nicht einfach wegpustet würden wir es zum einen natürlich verankern (Schraube in Beton-Platte)
    => ... und dem Wind auch nicht viel Möglichkeiten bieten - sondern es winddurchlässig machen
    => Dadurch ist es auch ein wenig gegen Gemuffel geschützt und trocknet einfach 

Im Detail

  • Die Konstruktion soll ja einfach zu bauen und wetterfest sein, sodass sich Alu - und ganz konkret "Bosch-Profile" anboten
    => Letztlich sind es Noname-Varianten, die dafür ganz geschickt über's Internet bestellbar sind.
  • In die entstehenden "Fenster" sollen Baustahl-Matten (wie beim Beton-Giessen) eingesetzt werden an denen dann Efeu hochwachsen kann (wie bei einem normalen Rankgitter)
    => das Efeu würde im Boden des Vorgartens starten - somit kein Giessen
    => Efeu ist das ganze Jahr über grün - und die Stahlmatten versteckt
    => Der Wind kann durchpfeifen, sodass man keinen Drachen für den Sturm baut
erste grobe Skizze, wie es aussehen könnte - Füße noch nicht berücksichtigt
























  • Die 4 Eckpfosten wären jeweils unterschiedlich groß um den schrägen Untergrund abzufangen.
    => Im Groben bestellt man die Pfosten schon mal mit unterschiedlicher Länge
    => Im Feinen regelt man es über Glockenfüsse, die in ein Innengewinde der Profile eingeschraubt werden
    => Die Glockenfüsse gleichen den schrägen Boden aus, was bei anderen Verbindungen sonst zu größeren Problemen führt  entweder ist es am Boden schräg und unter Spannung oder der ganze Kasten wird schräg, dadurch dass man es orthogonal zum Boden fixiert.
    => der ganze obere Teil ist im Wasser und rechtwinklig

die technischere Variante, die die Verbindungsstücke und die Details zu adressieren versucht

  • Damit das ganze nicht weggetragen werden kann (die Glockenfüsse stehen ja nur so da) befestigt man das ganze mit 2-3 zusätzlichen Alu-Blechen, die an der Aussenseite der Pfosten angeschraubt werden können und bei uns mit der umrahmenden Rabatte fixiert werden

Kleingedrucktes

  • Die Ausführung wäre letztlich in schwarz eloxiertem Aluminium (wobei hier schon Kratzer auftauchen werden).

Sonntag, 30. Juni 2013

Mostly photos - 3D modelling the photoshop way ...

Lately I am trying to work out a nice way to shape a common estate, lying between our neighbourhood's houses.

So, I have to find out, how the rest would look like if we placed some trees or bushes there.
For now, I've played around with Gimp and some planes and fitted images of trees there in the right proportions...

That is exactly the tricky bit - knowing, how big a tree was according to its position and thereby its distance.
The easiest way would be to have a good 3D image with the right scale.
.... soooo .... let's get one.

The task ahead is to get this image as easy as possible with the least amount of equipment.
Smartphones are omnipresent and have quite some processing power, so it would be a shame, if you needed much more.

Problems and solutions

To get a 3D image you just have to make two photos of the same scene from slightly different perspectives.
To get the scale right (without knowing anything further) you would have to know quite much about the camera's lens system and configuration.
A much easier way is to place two folding rules into the scenery before you take the photos.

The right way to get the shift and direction between the photos right would be to use a tripod and some special gears for the linear shift.
A much easier way is to use the G-sensors and hope that an integration of the movements leads to the right position etc.

To get a real 3D image, the underlying images would have to be rectified. Another time .... knowing the lenses well enough to cope with their faults.
A much easier way is to see how it fails... Taking to pictures from the same position but with slightly different directions...
If the lens has no fish eye whatsoever, the pictures would be the same apart from a shift to the right for example... But you will have a fish eye and you (or the software) will have a hard time finding the corresponding pixels.

The rectification of the camera lenses can be done in a preliminary step and it would be strange if such an application/library wasn't already available...

And then ...?

You would only have to provide a good library of scaled and cropped images, you can blend in as an overlay...

Montag, 27. Mai 2013

mostly incompatible - part 3 : Hot-air balloon

I've started a little project to see, if everything works out as smoothly as I imagined.

  • Short story: It doesn't
  • Long story: If you tinker about long enough, you get something working...
The first project only connects a NIOS cpu to an onchip memory and connects a clock.
That really is almost nothing - but you already see what the system will (and won't) be capable of.

  • In order to have a more or less easy interface, many of the configuration decisions have to be wrapped and decided "on its own" - so it takes generics away from you...
  • The modelling isn't that easy and sometimes, it is better to have a working solution than a good-looking one ... compromises wherever you look.
The project can be checked out at Google Code.

An anonymus access should be possible using
svn checkout http://high-level-fpga-gen.googlecode.com/svn/trunk/ high-level-fpga-gen-read-only

You will have to 

  • install a Java JDK
  • set the CLASSPATH, so it includes the current directory
  • install Quartus and the NIOS IDE
  • start the NIOS command shell 
  • hop to the directory and call "./call_sopc"
... so if you're willing to give it a shot - good luck.
I will try to let the example grow for a while, so I will see another loadfull of difficulties.
At the moment, I don't see another easy way to find out if it's feasible at all ;0)

Donnerstag, 23. Mai 2013

mostly incompatible - part 2: Wrapping it up

The problem, stated in the last post, has an answer - an artificial layer above the status quo, where everything is just fine ;-)

What should be acomplished

  • You start with a collection of SOPC components, normally described by a _hw.tcl file and VHDL files for their implementation
  • You want to connect them in a useful manner, not worrying too much about the little details
  • The component should work out the connection details on its own - if possible.
  • HW dependencies / specifications should be implemented as transparent as possible.

Starting with the technique and hitting off from there ...


  • Every component will get a Java-File that can be included like
    "import fpga_components.component2.*;"
  • The Project itself gets another Java-File e.g. mySystem.java that is calling the components' functions in order to make the right connections (sometimes with arguments, referencing data files like the memoryInstance...xml files)
  • The Projects can inherit from one another (Java is quite suitable for clean inheritance) and overwrite properties (e.g. bit_width) and methods (when some part is just handled in a completely other way).
  • The output of that whole Java-Process would just be some small TCL-Files with the plain calls to the automated SOPC builder...
  • In the long run the _hw.tcl files should also be generated by the Java-File (... but that might be a nice second step ...) so the correspondent things can be done for Vivado etc. - but for a first run, the SOPC integration could be done with the already existing _hw.tcl files.
  • "service" components like a memory core with multiple ports collect all the requests from the connected components and configurate themselves afterwards accordingly (so - it is dynamically decided, whether a component gets port 3 or 4, whichever is the next unused one...).
  • For the normal case, that the memory core isn't written by yourself, its configuration is done with a Java-File nevertheless - the instantiation calls just call something external that is included otherwise.

First traps - right means used?

  • A first thought was to use precompiled .jar-Files - that way, you could have started out without knowing, which files are around...
  • For a first implementation, the version with "hard linked" files will be more transparent and the upcoming errors easier to find... (You just have to call "javac .." and "java ..." after one another to get it started - so linkage problems will occur already at javac).
  • Java is a "clean" language and on all platforms available.
  • The alternative might have been C# where the plugins would have been .dll files - do-able but not really easy to read.

Above above

  • The components should have a common core - so the base class(es) will also be a part of the fpga_components-directory and they will also be checked-out/copied-into/whatever.

=> Hot air without content

  • The real problems and real answers will occur on the battlefield - when the first classes have been written and the smoke clears...
  • A good way would be to port some existing code to the new manner and to try to implement a small project that just instantiates two or three of these components and glues them together ...

mostly incompatible - part 1 : VHDL - as if higher languages have never happened

Hacking plain VHDL without further abstractions is quite hard when you want to mantain dozens of different projects:
  • they are more or the less the same ...
  • ... but differ in the combination or configuration of the sub components that make them up
  • the answer was the SOPC builder from Altera, Xilinx has struggled a long time until they came out with Vivado and now Altera have dared to introduce QSys as a slightly incompatible successor.

The actual state

SOPC / QSys

  • The SOPC builder (and QSys) is a good and plainly implemented idea ...
  • ... you just have to make the connection where they are possible by filling out a binary matrix
  • ... but for every component interface you add, you either add a column or row - making the matrix extreeeemly big (20x60 for a normal system - just activate the right nodes ... of the 1200)
  • ... and the GUI is doing a poor job with that huge number of possible connections ...

Vivado

  • might be better than I think - since I don't develop with Xilinx chips and have only watched the presentation above (link)
  • it uses a schematic view and nice boxes with structured connections (so you don't have to see every signal)
  • since that is still too much trouble they added some heuristical automatisms like Auto-Connect for a few components it knows and a verify to find the wrongly connected dots faster ...
  • overall it seems a bit ... basic ...

Scripting as a first solution ...

In order to have a programmatic solution - without much clicking - you can use TCL scripts to automate the GUIs (Vivado, SOPC builder and QSys). They naturally use different syntax etc. but do more or less the same...
  • TCL isn't a language that is structured per se and the way Altera uses it doesn't help much either.
  • So - you can automate it, you can structure your different projects and model your systems in any way you want but ...
  • ... it isn't portable anymore
  • ... it is quite unreadable ...

... another layer above as the second

It would therefore be nice to define the system a bit more general.
The breaking-down to the actual implementation would be done in a secondary step, where the gory details can be locked away in funny code - once - and then you can forget about them.

Samstag, 18. Mai 2013

mostly botch 2: Problemchen bei den Traum-Maßen

Auf der anderen Seite unseres Häuschens haben wir noch nach einer Sitzmöglichkeit gesucht und mit wenig Platz sowie dem passenden Untergrund gekämpft.
Die Lösung kam wieder von Christine Reess, die uns vorschlug, die Bank auf das Lüftungsgitter unserer Luft-Wasser-Wärme-Pumpe zu stellen:

  • dort ist sie überdacht und wenn man drauf sitzt hat man die Wand im Rücken (Feng Shui freut sich)
  • der Platz ist dort eh noch frei und etwas massives, das die Luftzufuhr verhindert darf nicht drauf.
  • ... perfekt
Nach ein bisschen Amazon-Recherche hatten wir unseren Favorit gefunden.

  • Keine Wartung (alle Jahre neu anpinseln) notwendig
  • von der Farbe her wollten wir auch im Bereich weiss/grau/schwarz bleiben.
  • genau die richtigen Maße - Die Bank ist mit 126x81x57cm angegeben und unser Gitter ist 55cm breit, wobei 1-2cm hinten noch Luft sind...

Denkste

Das Päckchen kam an und war innerhalb von 10 Minuten aufgebaut - wirklich nett.
Leider stellte sich raus, dass mit 57cm Tiefe der Abstand der Füße gemeint war - weiter oben ist das Rückenteil etwas ausladender ...


Ein bisschen hatten wir so etwas schon befürchtet und auf die Fuß-Bohrungen gehofft.
Also auf in den Baumarkt und Bastelmaterial besorgt...

Die schwebende Bank

wie man sieht konnte man ein einfaches Alu-Profil 
  • für 6 Euro erstehen
  • mit einer kleinen Metallsäge kürzen
  • drunter legen und die Löcher anzeichnen => Vorsicht - Fussabstände waren bei uns links und rechts 15mm unterschiedlich - also nicht nach dem ersten Anzeichnen kopieren ;-)
  • mit einem 5er Bohrer ein Loch durch und mit 5mm x 20mm -Schrauben fest machen

Die Bank steht somit auf der Alu-Schiene und diese liegt auf dem Beton-Rand sowie den Gitter-Stäben auf. Alu ist zwar kein besonders harter Werkstoff aber genau deswegen kann man ihn als Laie bearbeiten und bei der Anwendung reichts hoffentlich (Scher-Winkel, Material unter Zug etc. - man kann sich's auf jeden Fall schön reden)
=> Zumindest wackelt es nicht, ist bequem und wir sind vorerst mal glücklich und hoffen dass es langfristig hält ...

Montag, 6. Mai 2013

mostly botch : Ein Kamin-Rankgitter für unseren Hopfen

Um die Terrasse auch an der Fensterfront ein wenig zu begrünen haben wir uns entschlossen, einen Hopfen den Kamin hochwachsen zu lassen.

Leider fanden wir keine fertigen Lösungen oder Tips dazu und mussten daher selbst kreativ werden.
Dieser Beitrag passt zu unserem Kamin - wahrscheinlich nicht zu Deinem - nimm ihn einfach als ersten Denkanstoss und den Beweis, dass selbst handwerklich unbegabte Leute was halbwegs passables hinbekommen, wenn sie nur darauf achten, faul zu bleiben ...

Hopfen


  • hinterlässt keine Spuren der Saugnäpfe, wie bei wildem Wein oder Efeu
  • verdorrt zum Winter hin komplett, sodass man zwischendurch auch wieder ran kann (Terrasse neu ölen etc.)
  • ist ein flotter Kletterer, sodass er über einen Sommer hinweg auch schnell wieder oben ist...

Ran an den Kamin

  • Eine erste Version verwendete Schrauben, die auch den Kamin gehalten hätten - also gschwind aufschrauben, Blech noch durchfitzeln und schnell wieder zuschrauben.
  • Das haben wir uns dann doch nicht getraut - keine Ahnung, was so ein Kamin sagt, wenn man ihn mal zwischendurch losschraubt ;-)
  • Es gab jedoch in den Langlöchern noch einen geschickten Platz, wo man eine weitere Schraube befestigen konnte...
  • Somit wird das Rankgitter oben befestigt und hängt dann einigermassen lose bis in den Kübel runter

Ausgangspunkt


  • fertige Bohnen-Gitter von 1.8m aus verzinktem Metall, die eine viel zu enge Biegung hatten
  • ein einfaches Alu-Blech mit 1m Länge
  • Drahtseilklemmen
  • einige M8er-Schrauben und Muttern sowie passende Unterlegscheiben
Das Blech kann man in Breite und Dicke variieren, je nachdem wie viel Stabilität man sich erhofft und wieviel Stress man sich geben möchte.

Alu wurde verwendet, da es nicht rostet, für Hobby-Bastler noch bearbeitbar ist und kein chemischer Quatsch mit dem Rest passiert.

Vorarbeiten

  • Uns reichte die Höhe von 1.8m und somit wollten wir nur die Breite der Gitter vergrößern - wir haben daher zwei davon etwas auseinandergebogen (ging super) und mit der Hälfte überlappend übereinander gelegt.
  • Danach wurden die beiden Gitter an allen Steg-Kreuzungen mit normalem verzinkten Gartendraht aneinander gebunden (verdrillen und mit einer Zange festzurren und abzwicken)
  • Die Breite des entstandenen Rankgitters wurde ausgemessen und in der Mitte des Alu-Blechs in diesem Abstand Bohrlöcher für die Drahtseilklemmen angezeichnet.

Bohren und Schrauben

Eine billige Bohrmaschine, Metallbohrer vom Tchibo und ein bisschen Geduld reichen, um Alu zu Leibe zu rücken.
Mit einem 4er-Bohrer wurden die Löcher für die zwei Klemmen gebohrt.

Danach wurde das Alu-Blech auf die gleiche gewünschte Rundung gebracht - geht gut ohne Schraubstock und Werkzeug - einfach in die Hand nehmen und biegen (am Ingenieurs-Bauch oder so).

Danach am besten Rank-Gitter und Alu-Blech unter leichtem Fluchen (weil's nur pi*Daumen passt) zusammenschrauben. An den Kamin ran halten und schauen, ob man noch etwas kürzen muss - weil's viel zu weit weg ist... Danach mit einem 8.5er-Bohrer links und rechts die Löcher für die Kamin-Installation bohren.

Abstand halten

Bei uns gab es noch eine Schraube weiter vorne, für die man eine Biegung hätte machen müssen ....

Statt dessen wurde eine längere Schraube verwendet und eine Mutter extra als Abstandshalter verwendet.

Zwischen den Lagen gabs jeweils noch ne Unterlegscheibe - weil das kleinste Päckchen 100 Stück enthielt ...

Im Winter wird die äusserste Schraube entfernt und das Rankgitter kann somit komplett abgenommen werden - weil bei uns im Januar der Kaminfeger ja auch überall ran will...

Ergebnis

wir finden's schön und hoffen, dass die abenteuerliche Konstruktion auch ne Weile hält.

Samstag, 27. April 2013

mostly spring : Juhu, es wird langsam grün


Strukturell hat sich nicht mehr allzu viel geändert aber der Frühling ist langsam da ist wollte ich gerne ein kurzes Update geben...




























  • Die Hecke fängt langsam an zu blühen und wird wohl ganz nett
  • Die Kräuter im Hochbeet (vorne rechts) haben fast alle den Winter gut überstanden und bereichern schon unsere Küche ...
  • Der Sandkasten hat eine primitive Abdeckung erhalten, da die Nachbarskatzen ihn schon für sich entdeckt hatten.
  • ... hierbei haben wir eine Polyestergewebe im Baumarkt gefunden, das den Regen und Wind durchlässt und zwei Edelstahlstangen zur Beschwerung links und rechts eingewebt.
  • Ein Vogelhäuschen am Stiel hat es auch in den Garten geschafft und wir haben vor, die Vögel das ganze Jahr durchzufüttern - wird ganz gut angenommen und ist für unseren Kleinen ganz interessant zum Zuschauen.

Montag, 22. April 2013

mostly holes - part 7 : Bijective views

in order to get a nice user interface, I've done some research on SVG, javascript and thought a lot about the boxes of the last post ...
  • The boxes would have to resize itself and you would just drag and drop the needed things into them.
  • To make it short - there are many libraries to help you do such funny things but it is still a pain in the ...
  • Taking a theoretically ideal implementation it would probably still be quite chaotic with resizing boxes that hop around on the screen...

changing the perspective

  • Nested boxes is, what I wanted at the start
  • In the background, I would have saved the data as XML or something like it ... which is also nested
  • ... so why don't we use something like XML from the start...?
  • a tree-view library might be just the thing to get something nice and clean.
  • It won't need any graphical base functions and might look not sooo bad as it sounds in the beginning.

Teaching an old cat new tricks 

  • the cat's text-balloon got an options mode you can now click on.
  • the interaction was placed into a "while(true)-loop" (... or what javascript makes of it) and global variables were used to glue the cat and the rest together
  • ... and a bit more abstract with me as the old cat ... that the javascript libraries have evolved into an art form that cannot be compared to the hacks, I've done a few years ago ;-)
=> The new version is out and I will try to make at least the first steps to an implementation of the sentenceSorter .... the PopUp with the Tree-View.

Montag, 1. April 2013

Mostly holes - part 6: Solutions out of the box

Having read my own posts anew, I doubt, anyone could make out something relevant and concrete up till now.
So, I will try to explain my vague attempt for a funny what-ever once more - but this time, I will just explain the technological core and hope that its application are more or less obvious and the previous rambling speeches fall into place.

Thinking inside the box

  • For a while now, ontologies try to sort things into hierarchies like biologists sorted animals into the tree of evolution. They do that good, but it's still only things.
  • Like many school pupils, I have spent a good portion of my youth learning Latin - a dead language.
  • Since this strange language didn't see the necessity to sort the words of a sentence (S-P-O) but place them arbitrarily we drew graphs of the sentences to find the predicate, the subject, object and the rest of the  crazy things.
  • The idea now would be to do that for normal sentences, too - in a digital but very informal fashion.
  • The user would try to divide the sentence up into some boxes that all contain a defined part of the sentence and put names on the boxes... as he sees fit.
  • Every sentence that is graphed that way would be either an implementation of an existing scheme with a new subject etc. or a new declaration, others can use from that point on.

An Example

To demonstrate the boxing process, I have opened up the NY Times and taken the first sentence, I've stumbled over

Apple’s chief executive, Tim Cook, took the unusual step Monday of apologizing to Chinese customers over the company’s warranty policy and said he would improve customer service in the country.


  • As you see, it really isn't that easy and you have to repeat some of the information that are present for the reader implicitly.
  • Things or persons are referenced to a normal ontology, so you get a one-to-one mapping.
  • It is quite some task to split up the sentences that way and it might take a while for a semi-automatic pre-organization...
=> So - for a mere hobby - the effort seems to be quite high...

What you gain by that

  • As chaotic as that sounds, it gives the user the possibility to handle proverbs (for example) "standalone" - without the normal usages of the verb. "say he would" is an example for it - I just didn't think it would be good, to take that box apart, too - so I just let it stay together ...
  • Translation between different languages often don't work word-for-word since some expressions just have no direct correspondence. Using graphs of both translations, you could establish a equivalency and a correspondence on box level (the same boxes occur in both versions).
  • Since the created boxes of the sentence have to make sense on their own, you fill them up with repetitions of already expressed things (Tim Cook / Apple) - but that way, you can use and search the box without dependencies to other statement parts...
  • A posed question that would have a graphed sentence as an answer might be posed in the form of a graph with wild-card-boxes and the answer might just be the content of the mysterious box.
  • When you only have labeled boxes as base entities, it isn't so bad to have different interpretations of a sentence - you can define rules to cut the boxes of one interpretation in half or glue the boxes of the other one together - whatever the better version is.
  • The old version would be labeled deprecated and the rule for the re-interpretation would be referenced.
  • That way, you could go wrong paths (in the way to structure the world of words) without having to throw away everything and start anew.

Sonntag, 24. März 2013

Mostly holes - part 5: Rage against the machines


  • The last post suggested, that all was clear now and just a bit of work was needed to get the project going.
  • That was a misconception!

The problem

  • The next step would have been to implement a server application, the browser plugin could connect to in order to get data and post retrieved information back to it.
  • That's what you would call "Cross Site Scripting" and it isn't a nice expression...
  • You could build a perfectly useful trojan horse using the same set of tools 
  • That's why browsers have build in a "Same Domain Policy" (SOP) that let the AJAX scripting communicate only to the server/domain where it resides itself...
  • You go to "http://amazon.de/someDirectory" and the site requests infos afterwards dynamically => It can only do that with http-Request going to "http://amazon.de/someOtherPlace".

Two ways - a fork

  • The normal way to overcome this SOP is using a special XMLRequest called JSONP. That way, you can ... Just Do It (as Nike would say).
  • Another way might be to go along with the SOP... and see, if the application can resign from calling the server all along. Instead the exchange with the server has to be done explicitly - whenever the user wants to get new data from others and check-in his own.
  • And you can try to ignore the browser details ... just building your own browser that works differently

JSONP

  • using JSONP, you would load a javascript function from a foreign server - that's OK with the SOP.
  • this function only gives back a JSON object with the data, you want to transport
  • since you want to get a dynamic response to a dynamic request (that might depend on the website, the user is on or on the content of HTML fields), the javascript URL, you incorporate ends with a "...?param1=value1&..." part -> a GET request with parameters
  • The way, the javascript code gets incorporated might be a problem for plug-in-writers.
  • The clippy-project already did something like that and it didn't work out ... making me restructure the javascript files and making them all locally available.

Loosely tied server interaction

  • In order to have a persistent data set, a chrome browser plugin can use either localStorage - a new HTML5 feature to save more data than what was possible using cookies... or it could use chrome.storage (making a port of the plugin to other browsers even more difficult)
  • Both options would build up a reasonable big data storage for the plugin and "Link", the cat might use this data when it gets into interaction at an arbitrary website, the user goes to.
  • In order to sync with the net, you would surf to the server, requesting a website of the server.
  • Here, the constraints of SOP don't apply anymore and we can exchange plugin and server data over XMLRequests ... hopefully
  • ... there is still the issue that the website-javascript and the plugin-javascript are executed without any interaction - they only share the HTML-DOM
  • That way, it might be necessary to use the DOM as an exchange medium.
  • => Let's just say - it might work - it might not ... if this option is selected, the first thing would be a technical proof-of-concept to shift some data around ...

Hey, it's just a browser

  • The last mentioned possibility seems quite absurd - building your own browser, just because you cannot cope with the ones already present...
  • Perhaps, the work wouldn't have to be that big, since there have already been people that felt likewise:
  • The Webkit project is open source and builds the base of the MacOS's Safari browser
  • There are even people that try to give you a useful interface to act on the webkit browser and integrate it into your own C# application
  • Having a full-fledged application instead of a browser plugin would make some things easier or even possible: The idea of placing the data in the DNS isn't really javascript compatible but might work out in a standalone-application.
  • The big downside of a stand-alone application is, that nobody might use it - installing a plug-in and (almost) forgetting about it might spread the usage of SITA much more easily.

???

At the moment, I really don't know which path I should choose - if you feel like it, please give me some feedback. And if the vague goal isn't "clear" to you, please tell me so, too.

Mittwoch, 20. Februar 2013

Mostly holes - part 4 : let's get this party started

After so much empty words, it was time to get in contact with reality again.
So, I've

  • looked at the development of browser plugins, 
  • decided for me, that the Chrome browser is a worthy first goal
  • read some of the source, the smore team has used for their Clippy tool
  • and with some sweat, scissors and much duct tape, I've got something to start with...
The project (if it should sometime be worth to be called that way) is hosted at Google Code and for curious minds, a first binary can be installed to torture your browser ...

  • Just go the Options (Einstellungen)
  • Go to Extensions (Erweiterungen)
  • move the .crx file into the window and answer with "yes" when he asks to install it.
  • ... the more comfortable way with the webstore costs some bureaucracy and 5 Dollars - so for now you have to do it manually ...

Samstag, 2. Februar 2013

Mostly stone: Warum etwas Granit einem Garten ganz gut tut

Wir haben eine Doppelhaus-Hälfte und im Vorfeld gemerkt, daß diese vom Grundriss her fast immer gleich aufgebaut sind.
Auch beim Garten versuchen die meisten ähnlich zu optimieren:

Wenn der Garten eher übersichtlich als groß  ist, dann tut man sich erst einmal schwer, ihn mit Treppen, Kübeln und Abtrennungen voll zu stellen.

Glücklicherweise hat sich eine befreundete Landschaftsarchitektin unserem Streifen Lehm angenommen und etwas gezaubert,  das uns super gefällt.
So gut, daß wir auch anderen die Angst vor hohen Zäunen, Tonnen von Stein und schwindenden Rasen-Flächen nehmen wollen.


Uns ging es darum,
  • den Blick von der Straße ins Haus etwas einzuschränken
  • die Terrasse nutzen zu können, ohne den Nachbarn zu stören
  • eine Abkürzung von der Straße ins Haus zu haben. 
  • Ein bisschen Kräuter für die Küche anzupflanzen.
  • Rosen für die Frau! Zumal sie in der Richtung bisher immer ein wenig zu kurz kam.

Im Detail

  •  Die Hainbuchen-Hecke schirmt momentan noch nicht wirklich von der Strasse ab - aber im Frühling/Sommer sollte das anders werden - wenn sie erst einmal ordentlich blüht.
  • Sie ist im Vergleich zu Tuja-Hecken einfacher zu schneiden, verliert jedoch für ein paar Monate im Winter ihr Laub.
  • Die Hochbeete schirmen einen recht gut gegen die Straße ab 
  • ... außerdem sind dort die Kräuter Schnecken-sicher 
  •  Der Sandkasten war eine der wenigen Sachen, die wir zum Teil selbst gemacht haben - dann sieht man erst einmal, wie aufwändig es ist, ein paar Steine einzubetonieren...
  • Auf der Rabatte (linke Seite) wird in nächster Zeit noch ein Sitzrost aus dem Terassen-Material geschraubt, sodass man sich auf den Rand hocken kann.
  •  Der Platz für Tisch und Stühle wurde recht großzügig ausgelegt, sodass man auch mal ein Fest darauf feiern kann.
  • Der Terassen-Belag ist Thermo-Esche, da sie eine ordentliche Alternative zu Tropenhölzern darstellt und recht langlebig ist.
  • Die hohen Granit-Stehlen sind nicht nur wartungsfreier Sichtschutz sondern halten auch die Geräusche recht gut ab
  • Trittsteine und Terrasse sorgen auch bei Schnee und Regen dafür, daß man zur Terrassen-Tür kommt.
  • Die 2 kleinen Solar-Leuchten geben in den ersten paar Abendstunden noch ein bissel Licht, sodass man auch nach einem abendlichen Einkauf weiß, wo man hintritt
  • Der Rosenbogen wird noch mit einer Kletterrose und einer Klematis überwuchert sodass es nicht gar so steinig aussieht wie bisher...

Wie schon gesagt - uns gefällt es wirklich gut und wir können die Vorzüge von etwas mehr Struktur nur jedem ans Herz legen...



Der Plan zum Nachbasteln

netterweise hat sich Christine Reess bereit erklärt, ihre Pläne auch zu veröffentlichen.

Und wenn's nicht ganz zur eigenen Situation passt - sie ist immer kreativ und ihre Dienste (als Landschaftsarchitektin) käuflich ;-)

Freitag, 1. Februar 2013

Mostly holes - part 3 : To find good Baby-SITAs

In the last part, an enormous amount of work was presented
... and some little benefit, you might get back...

It is highly improbable to get a bigger number of people to
work on something that abstract and sacrifice a big portion of
their spare time for something that might never work out.

... sounds depressing? Don't worry ... we'll get them ;-)

Cheap tricks that might work once more...

In the dark times before I learnt about the joy of LaTex (not what you think - follow the link), I was using a student version of Microsoft Office 2000 along with its Office Assistant.

It wasn't, that I needed much help of it and seldom asked anything but I found the animations tremendously funny - just look yourself - I would recomend "Print" and "Empty Garbage".

SITA's chance might be to be around just like Link, the cat, was on my desktop.

Today that would mean a good written browser plugin - but in the end it should work more or less like back then...

Example of an interaction

  • When the browser starts up, SITA might give you a short update what has happened on the net since the last time, you had a look
  • It might fetch some RSS feeds, compare it with other users if they found it interesting etc.
  • ... it might even do horrible stuff like looking if somebody has nudged you on facebook and stuff like that - whatever it takes to attract some babySITAs
  • The user is mildly interested and starts his day with the news - he scrolls down and starts read an article
  • SITA might look over his shoulder, see, that the focus is on an article about a big train accident and would stroll off into the net to see if some other user has commented on this or found additional infos
  • It might "come back" and tell the user about its findings or - when he feels brave enough and hasn't bothered its owner for a while it might start to ask what he looks at and what the vocabulary means, it doesn't know yet...

It takes all kinds

  • Some of you might already think "Oh, that sounds a bit too much - I just want to surf the net - don't you dare asking me things every 2 minutes"
  • It would be a total disaster when the users would feel that way.
  • Therefore SITA would have to be patient, uncomplainant and if it wants to start a dialog, it should do so in an unintrusive way like "Meeeow" - see the cat above with "GetAttention"
  • The user on the other hand should have the opportunity to encourage SITA to do more or make him stay quiet for a while (and more often in the long run).
  • It's a bit like the old Petz games or Black and White in that way, where you get other results relatively to the actions you treat the thing with.

Teaching an old Cat/Dog/Paperclip new tricks

  • As long as the user doesn't have some real advantages, he won't install such a "code monster"
  • Therefore we need THE KILLER FEATURE
  • For the audience we target prominently (geeks) this might be something like "Sita - fetch me some comics"
  • And Sita opens up all the comics, the user normally watches, in seperate browser taps - but not the ones, he has already read today.
  • In order to do such a specific task with these constraints someone has to be quite smart about it
  • At the start, this hasn't got to be SITA but a user, that has trained/programmed SITA to do that exact trick...
  • When more and more of these tricks are implemented, the users will try to extract the things, that SITA has to keep an eye on.
    Once the tricks have a trivial part, that changes, and a common part with some more difficult logic a new trick can be implemented a bit faster and when a clear pattern emerges at some point probably by SITA itself.

Mostly holes - part 2: Educating SITA

It takes a whole village to bring up children.
It might take the whole internet to bring up an artificial intelligence.
=> therefore the name Synthetic Intelligence Taught by All.

The goal

The goal in the end should be to have a system, that can utilize a big knowledge base, give correct answers using it and as a glitter on the horizon be creative about it.

... and what you get when you start

Like a small child, the system might just start to repeat repeat the primitive sentences, you have just taught him when it thinks, it might be appropriate.
That is just about what the semantic web has accomplished for now. Links to word definitions in other statements - like in Wikipedia.

It would be nice, when some more knowing responses could be given.

Cheating

It might be OK - for a start - to pass questions, that are too complicated, to real persons working in the background, who answer them in the same manner as SITA would have done.
The system would watch closely and might answer the same or similar question the next time on its own...
And over time less and less human support would be needed... provided an enormous amount of wishful thinking.
Return of invest: You could start out with a (quite slow) system, that answers your questions - and it might be an overwhelming surprise when you get your first answer that no human has laid its hands on... and these cases would increase (hopefully) exponentially.

Showing SITA the world

A first approach might be a tagging of persons and things in pictures of news sites.
The tags would define the area inside the picture and sort the tag-description into SITA’s grammar along with a little sentence that describes the scene and hopefully contains all used tags.
Return of invest: You might get good tagged pictures since the described parts of the picture are pinned and the tags are set in context with synonyms and generalizations.

The Furby effect 

Next to a visual understanding of real life things comes an auditive interaction to make up something that might pass as human-like.
Return of invest: When a user trains the system, it has to his dialect and voice into account.
Over time it would get better at understanding and repeating these dialects so (after long years) a textual chat might be read to you in the voice of the other person, since their voice representation etc. are available in the cloud.

Samstag, 12. Januar 2013

Mostly delays: What VHDL is all about

Last week I once more realized, that a big chunk of my daily work consists of finding the right places for the needed FlipFlops.

Until you get in contact with reality, you might think, that the implementation of some simple arithmetic is merely a task of rewriting it in another language (as in Java, Perl ...).
And - you aren't really wrong - you get a running solution.
The problem occurs, when it is synthesized in hardware and you find out that you can clock your completely combinatorical circuits with 2 MHz only...

That's the point where you start thinking about pipeline stages and registering of intermediate results.
And pipelined thinking is nothing that comes naturally to the human mind.
When you don't spend close attention to it, the simple task of summing up two signals becomes an exciting source of surprises: The place where you insert the pipeline register isn't the source of errors - it's the rest of the signals, you have to postpone accordingly, when you want to continue to work with the result.

Sounds strange - sounds uncalled-for - sounds familiar

  • Placing flipflops "manually" sounds a bit like the first PONG implementation
  • Of course, there is always a more comfortable way: Mathlab and Simulink for example - there even seems to be some more open alternatives, by now.
  • The problem with this cross-language-access might be in the less optimal resource usage and some missing configuration options (bitwidth, pixels/clock ...) that are hard to express in an abstract language (even though I regret to say, that I haven't given them a honest try).
  • It's a bit like people using pointer arithmetics in C. They know, it might be dangerous and a pain in the ... on the other hand, it just is as fast as it can get - and sometimes that's what counts.

Okay. Here's the problem...

  • Eventually you succeed in placing the logic and pipeline registers together and everything works.
  • After some months, you just want to make a little addition to the circuit and bring in a register stage at some point.
  • Now you have to check and adjust all the rest of the signals once more ... and after some months, the code might look quite new to you ;-)
  • Therefore the little change gets a big change and bares the risk of something going wrong along its implementation - something hard to explain to "normal" programmers.

Staying in VHDL but trying to make one's life easier

  • So the idea popped up to let the computer find out on its own how long the delay lines for the signals should be.
  • Being quite paranoid about automatisms that you cannot check transparently, I considered a external program that parsed the code, filled in the registers on its own and writes the extended code back to the same file.
  • The adjustments would be in commentary brackets - just like GUI code in the good old times of the MFC (/** DONT TOUCH THE FOLLOWING CODE. I - BILL GATES - HAVE FILLED IT IN **/) and the Visual Studio did some magic to it in the background...
  • That way, the resulting file would be self-sufficient and would run with all other software (Simulation, SOPC-Generator, ...) and, when changes to the register stages were needed, they would also turn up in the source file.

Shrinking the solution, hoping to get it done

  • Writing a full-fledged VHDL parser isn't that easy and so I already though about some code style rules, that would just have to be obeyed when you wanted support for the register stages.
  • The connection where the N register stages might turn up could be marked using special postfixes like some_signal__ac (for auto-connect) where it should be used and the signal some_signal where it is declared and passed a value...
  • The input signals and derived signals would have to be marked to fill them into groups that are synchronous to each other. And for synchronous signals that have entered an entity together, the parser can watch their delays ...

Shrinking the hopes

  • The first candidate for this automatism was the one that started the whole thought.
  • Therefore I didn't see it coming that after an hour of rewriting I voluntarily just quit.
  • There were signals that would have been unnecessarily delayed (since they only change every millionth clock and _then_ in an uncritical time span) ... and you would surely get register stages for them even though they aren't needed at all.
  • There were entities that brought in additional delays -  which would have to be described in handish and formal parser commentaries, so the automatism knows what to do with this.
  • There were edge-detections of signals (were you looked at the state of a signal now and a clock before) which broke the synchrony completely.
  • You might place the edge-detection into a sub-entity (with a correspondent commentary for its delay) to circumvent the last problem.
  • .... but I'm sure, there will be other problems that are as bad or worse...

Back to the roots - Back to "paper"

  • Up above I wrote "Eventually you succeed in placing the logic...".
  • Normally this involved a big sheet of paper were you sketched the signals and the flip flops to see, where you have missed one.
  • After some months this sheet of paper is normally lost and you have to start anew
  • To make life at least a little bit better, I switched to Graphviz for the sketches
  • The sketch can be checked in alongside.
  • You don't start to cry when you have to smush some more logic into the completed sketch.
  • The signals that belong to the same clock cycle can be grouped using subgraph s
As an example, I've got a first example here

digraph G {
DELAY_0 [ label="Delay by 2 clocks" shape="rectangle" ];
DELAY_1 [ label="Delay by 2 clocks" shape="rectangle" ];
SubEntity_0 [ label="SubEntity with 2 clks delay" shape="rectangle" ];
SubEntity_1 [ label="SubEntity with 2 clks delay" shape="rectangle" ];
STATE_M_0 [ label="Statemachine registered" ];   
subgraph cluster_0 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
input_pixel;
input_pixel_padded;
input_ddr_content;
arithemetics1;
good_pixel_at_start;
label = "clock cycle 0";
}
subgraph cluster_1 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
input_is_good_enough;
good;
bad;
label = "clock cycle 1";
}
subgraph cluster_2 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
output_ddr_state;
input_ddr_content_reg2;
keep_ddr_content;
changed_pixel;
use_changed_4_ddr_content;
org_after_arithmetic;
label = "clock cycle 2";
}
subgraph cluster_4 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
output_ddr_content;
result_pixel_14b;
result_pixel;
label = "clock cycle 4";
}
changed_pixel        -> SubEntity_1;
        org_after_arithmetic -> SubEntity_1;
        SubEntity_1         -> result_pixel_14b;
result_pixel_14b      -> result_pixel;
input_pixel           -> input_pixel_padded;
        input_ddr_content     -> SubEntity_0;
        input_pixel_padded    -> SubEntity_0        ;
SubEntity_0          -> changed_pixel ;
input_ddr_content -> input_ddr_content_reg2 [ label="2xReg" ]
input_is_good_enough  -> use_changed_4_ddr_content [ label="1xReg" ];
good                  -> STATE_M_0  ;
bad                   -> STATE_M_0  ;
input_ddr_content     -> STATE_M_0  [ label="1xReg" ] ;
STATE_M_0             -> output_ddr_state;
STATE_M_0             -> keep_ddr_content;
use_changed_4_ddr_content -> output_ddr_content_comb;
keep_ddr_content          -> output_ddr_content_comb;
output_ddr_state          -> output_ddr_content_comb;
changed_pixel             -> output_ddr_content_comb;
input_ddr_content_reg2    -> output_ddr_content_comb;
org_after_arithmetic      -> output_ddr_content_comb;
output_ddr_content_comb -> DELAY_1;
DELAY_1 -> output_ddr_content;
input_ddr_content     -> arithemetics1       ;
input_pixel_padded    -> arithemetics1       ;
arithemetics1            -> good_pixel_at_start;
good_pixel_at_start   -> input_is_good_enough [ label="1xReg" ];
input_is_good_enough  -> good;
input_is_good_enough  -> bad;
input_pixel_padded -> DELAY_0 ;
        DELAY_0            -> org_after_arithmetic;
}

leads to


The Plea

.... when there is somebody out there who knows an easier way to do this, please tell me.

Montag, 7. Januar 2013

Mostly holes - part 1 : Having the guts for big tasks

This might become an episodic post, ending with

  • episode 17 (rough guess)
  • me - having the feeling to have told everything at least twice and
  • you - waiting for the connections between all the funny bits and loose ends
  • some big embarassment since it doesn't work out at all - not even in my dreams

Gut feelings

Being an engineer for several years, you learn some old and valuable truths - the normal way - the hard way.

  • There is always some detail, you have missed
  • It's never that easy
  • When it goes bad, you surely had a bad feeling about it in the first place
The last point is quite critical, since the mind tends to play tricks on us most of the time.
But if you are really questioning about your "gut feeling" or you have even made some notes, you might discover one of the most precious tools, mother nature has given us - a "brain" between the place where sience and women would locate it.

Normally guts tend to be quite monosyllabic, with something like "Oh, oh", "6 months at the very least" or "Not again ....". But sometimes it goes off on its own and babbles on and on and on...

Hey brain, 
Hey you - are you listening?
I've got this thingy about language and such - you know?
It's really important, so listen closely:
There are computers you know - and hey - wow - they do all crazy sorts of things.
And there are babys and they spend most of their time eating and crying.
And after two or three years they just talk - so how hard can it be?
Maybe these computational linguists just make too much fuss about it ...
It surely is just a bit of database filling and once the words are in place the talking comes on its own.
Ooooh - let's just start the coding, and you will see, the rest falls into place.

I hope, you have spared yourself the last lines since they don't really make much sense.
That's the problem with gut feelings:
There aren't really any good points and arguments present but you somehow feel, there is something to it and you shouldn't ignore the message.

The message

  • It's a shame that "AI development" and "teaching computers our language" isn't one of the main tasks for "us" (software engineers and alike) anymore
  • Since so many people have already thought about these topics since the 80th, you cannot run along the same trodden paths when you want to get other results
  • You must try to keep the amount of necessary work for yourself to a minimum or you will never finish 
  • The advantage you have - when you start out now - is that the freaks of the 80th had LISP and we have the internet - millions of people doing Farmville.
  • When you have a running system and you can make it more exciting to help teach the net some language than to water virtual cabbage, you should have won!

Flicks of details without much connection

  • Traditional knowledge bases were quite statical, hierarchical systems that had to get everything right from the start - just like a house of cards
  • There are always many ways to explain something - a tree is "many leafes in the sky with a trunk going down to the roots" or "a giant root system that's powered by some leafes up above"
  • It shouldn't make a mess to have concurrent statements, meaning the same and it shouldn't make things much slower
  • The database should be easy to administer, to extend and should scale up nicely.
  • You might even use something strange as the DNS system to store the data since it covers some of the requirements above quite well (CNames, Subdomains, Caching) - and isn't that hostile to funny new applications
  • It's might not be necessary to make the teaching of sentences that formal - it should start of like baby talk
  • You shouldn't expect too much from the system in the first time
  • The Thing (whatever it might turn into) should therefore be at least "cuddly" from the start - otherwise the people will continue to tend to their cabbage... No kidding

Mittwoch, 2. Januar 2013

Java versus C


  • ... is a really redundant topic!
  • There is even a Wikipedia page telling all about the differences between the two programming languages.
  • So - I will only place some links to the gory, technical details and write some prose about life in general.
Reason for this post
  • Smartphones and tablets with Android OS are omnipresent and likely processors find their way into our daily work.
  • In every Android OS, the apps are mostly written in Java and work beautifully
  • The comparisons tell us that with new Just-In-Time-Compilers and the Dalvik VM, Java hasn't got any real performance penalties anymore
  • So it makes you wonder, if Java will eventually replace C in most devices - even if it is just a small microcontroller.
Why Java can't rule alone
  • There are still many systems out there that are just too small (code footprint < C64) for Java
  • The boot time for Java based systems is much higher - and many low power applications boot every few seconds and are asleep for 99.9 percent of the time.
  • Java can't access the hardware ... and shouldn't, since it's such a niiiice language ... it shouldn't get its hands dirty ;-)
Watching the PROs
  • When you watch the success stories closely you see, that All isn't Java that glitters
  • The Android systems are basically Linux systems - but they do good, not to tell anyone
  • Linux has been around a long time but few have the nerves to cope with it
  • Inside the Android OS, all the drivers are implemented in C and probably some more low level stuff is implemented in C.
  • The user / app writer however gets a nice clean interface and can forget about the rest.
And can you also make _a_call_ with your smartphone?

  • The tablets were the first "phones" that couldn't ring anybody anymore
  • Samsung has brought out the next step
  • GoogleTV will bring the apps to the television
  • It might not take too long until we see more industrial applications that incorporate the Android OS - just to get the interface right
  • ... and the application programmers will thank them.


Rio revival - a toddler game (to be verified)

I've got a two-year-old son, who has gotten his first board game for christmas.
Luckily he seems to like games as much as his father (which is quite an ambiguous statement, but I don't know how to put it otherwise).
So - after several rounds of "Mein erster Obstgarten""My first orchard", I am looking for some diversion.

  • When I was a kid, I was quite addicted to a game called "Rio".
  • Thinking about it now, it's quite dumb since you cannot decide very much... but my memory (and the comments in the link) tell me, that for the right age, it's a cool game.
Building it

  • In the original, you had to throw the dice and understand the numbers on the board
  • that's more than I want to demand from him, so the numbers "1", "2" ... "6" have to go and will be replaced by dice images
  • The sticks are nice but I'd prefer coins since he should't play with matches yet
  • Print out the right version
  • Color it the way you like (and better than me, please)
  • Glue it on a card board 
  • cover it in transparent film (if your child gets teeth at the moment and everything in his vicinity is soggy...)
  • Cut it out along with the round holes next to the dice
  • Glue it on another card board so the holes get a backside
  • Cut out the slot for the "6" after the glue has hardened.
Rules of the game

  • Every player gets 6 coins, you have to get rid off to win the game
  • You have to roll the dice and
  • ... when the correspondent field is empty, you can place a coin there
  • ... when the correspondent field is not empty, you have to take the coin
  • As long as you can place coins, you can continue to roll the dice
  • In the first round, you can only roll it once
  • When you roll a "6", the coin disappears through the slot, which is always a good thing...

Since I have surely forgotten half of the rules, here's a link to the  german description.

crashcam app

The Idea

  • Since smartphones are often used as car navigation systems, you might benefit from their universality.
  • They are normally placed at the windscreen and look at the streets by accident
  • In the unpleasant event of an accident, they could have taken a video or pictures of the event... when they had known before ...
  • The crashcam app would therefore take pictures all the time and when the accelerometer tells the app that it might have experienced a crash, it saves these pictures away...
  • It is questionable, if the recorded pictures can be evaluated as forensical proof, but they can at least give the owner and eye witness a clue what has happened and boost his sureness about the event.
Implementation

  • The best (straight-forward) implementation would be the integration into the navigation software
  • Information like the gps coordinates (that are already evaluated by the navigation software) would also be available and help to form a good picture of the situation (speed).
  • The pictures might be saved raw to ram (in 800x600 this would be 0.5 MB per frame)
  • When you make one frame per second and you grab 100 MB of the RAM, you can save 3 minutes of  footage in a cyclic memory that always overwrites the oldest data
  • In the event of a car crash, the data should be written to the SD card. Writing to it all the time would lead to a reduced lifetime of the card ... but it would increase the chances of having the data after the crash.
  • A second app (which might not have to be implemented as will) could start the crashcam app every time, the navigation software is started and shut it down once the navigation software is closed.
  • The smartphone is normally placed in a recharge-station, so the increased battery usage shouldn't be a big problem
Already doubts

  • Will a smartphone at the windshield survive a normal car crash? I would give it a chance of 50%
  • Will the battery stay in the phone? Should depend on the phone...