Archive for the ‘Taodyne’ Category

Animation and 3D: the web is doing it wrong

In Animation and 3D: the web is doing it wrong, I argue that the way the web does animation and 3D is completely bogus and deserves to die. With Tao Presentations, we offer a dynamic document description language that lets us write shorter code that is much closer to storytelling. We’d like to bring this to the web.

Have you ever created a dynamic animation on a web site, or displayed a 3D object? Really, why is it so complicated? Why should I learn how to use half a dozen libraries, write dozens of line of boilerplate HTML, WebGL and CSS code, just to rotate some text on the screen or display a 3D object? Why do I need three (or four, or five) languages, libraries or frameworks to design a single animated web page?
In the realm of business presentations, Tao Presentations solved this problem with a 3D dynamic document description language, letting you easily create sophisticated interactive 3D animations and presentations. What if we brought this very innovative platform to the web? What kind of applications would become possible if we improved web browsers in the areas of storytelling, interactivity, 3D or multimedia?

Building a 3D clock in under 10 minutes

In this screencast, I show how you can build a dynamic, real-time clock in less than 10 minutes with Tao Presentations.

Coding a DNA strand in 3D

In this live coding session, we demonstrate how to quickly create a DNA strand in 3D:

The whole code is below:

import LuckyStarsTheme
theme "LuckyStars"

picture_slide "Did DNA come from outer space?", 
    light 0
    light_position 1000, 1000, 1000
    translate -300, 0, -300
    rotatey mouse_x
    random_seed 12345
    dna_strand with -30 .. 30

slide "Arguments in favor", 
    * "Tardigrades can live in space"

dna_strand N:integer -> 
        translatey 50 * N
        rotatey 10 * N
            rotatey 90
            color "#BBB"
            cylinder 0, 0, 0, 10, 10, 200
        dna_base_pair random (0, 3)

dna_base_pair N:integer -> 
    dna_base_color N mod 4
    sphere 100, 0, 0, 40
    dna_base_color (N + 2) mod 4
    sphere -100, 0, 0, 40
    dna_base_name 140, N mod 4
    dna_base_name -140, (N + 2) mod 4

dna_base_color 0 -> color "red"
dna_base_color 1 -> color "blue"
dna_base_color 2 -> color "green"
dna_base_color 3 -> color "grey"

dna_base_name X:integer, N:integer -> 
    text_box X, 0, 40, 40, 
        font "Arial", 30
        color "white"
        align 0.5
        vertical_align 0.5
        dna_base_text N

dna_base_text 0 -> text "C"
dna_base_text 1 -> text "A"
dna_base_text 2 -> text "G"
dna_base_text 3 -> text "T"

When Google oversteps its authority

Recently, a user of Tao Presentations informed us that Google Chrome displayed a dire warning after he downloaded our software: “Tao Presentations may be malicious software”. Uh oh, for the average Joe, that’s a big no-no.

Google locks out “unapproved” programs

It’s not just us. Recently, I tried to download some of the amazing demos created by Iñigo Quilez. Same thing. Seriously, a 4K exe that manages to display a complete mountain? And Google Chrome would have me believe that there’s room in there for “malicious software”? Get real.

Now, it took me quite a while to find a solution to this problem. Apparently, you just need to record your site in Google’s Webmaster tools, and after scanning your site and ensuring (I assume) that there’s no known virus signature in the files, things should improve.

I still find this really annoying that a browser vendor would, by default, tag unknown files as “malicious”. Who are they to make this judgment call?

Why didn’t Google implement a real solution?

Shouldn’t they instead have something a little more sophisticated, that actually detects malicious signatures? You know, like a real anti-virus? Don’t tell me that Google doesn’t have smart enough engineers to write an in-browser anti-virus that doesn’t completely suck.

Nah, instead they went the easy route: anything that we don’t know is malicious. And we tell your users so.

I used to be a big fan of Chrome. Not anymore. Because of this single issue. I think this demonstrate an incredibly stupid arrogance and lack of technical diligence on Google’s part.

Google overstepped its authority and took advantage of their weight. Let’s not get used to it.

Adding chapter numbering in Apple Pages

At Taodyne, we mostly use Apple Pages to create our documents. For large documents, I’d like to be able to create numbered chapters, something like “Chapter 1″, “Chapter 2″, and so on. Apple Pages does not seem to have that feature. Let’s not get used to it,  and let’s fix it.

Apple Pages can read numbered chapters from Word

One thing that I observed is that when you read a Microsoft Word document that contains numbered chapters, Apple Pages preserves that formatting. In other words, if the user interface may not know how to edit numbered lists with text in them, the rendering engine knows how to render them, and the regular editing within Pages will correctly renumber these documents.

To verify that my recollection of this capability of Pages was correct, I first created a document in Microsoft Word that looks like this:

Section 1 – Hello

Chapter 1 – This is a chapter

I. This is a numbered section

1. This is a numbered sub-section

It doesn’t just “look like” this. The Section and Chapter text were edited in the Numbering section of Microsoft Word, so this is auto-numbering.

Then I saved this document to disk, and imported it into Pages. And indeed, when I edit it in Pages, numbering works just like in Microsoft Word.

The Pages XML format

Let’s look inside the document to see what’s there. A quick tour through the command line shows that Apple Pages documents are really zipped collections of files, including XML files representing the document itself:

% unzip Hello.pages 
Archive:  Hello.pages
 extracting: thumbs/PageCapThumbV2-1.tiff  
 extracting: QuickLook/Thumbnail.jpg  
 extracting: QuickLook/Preview.pdf   
 extracting: buildVersionHistory.plist  
  inflating: index.xml

The most interesting of these documents is the index.xml file. It contains the actual description of the document in XML format. And if I look inside, I see something interesting:

<sf:list-label-typeinfo sf:type="text"><sf:text-label sf:type="decimal" sf:format="Section %L -" sf:first="1"/>

So this sf:format= accepts a rather general format, with %L serving as the marker for where the number should go.

The solution for adding chapter numbers

So the solution for adding chapter numbers is simple:

  1. Once, you will need Microsoft Word to create a document that has the kind of chapter numbering that you need. You may have multiple levels of numbering (e.g. chapter, section, etc).
  2. Import this document in Pages. This will give you a new list style.
  3. When you want to number chapters, select the given list style.
  4. To edit the formatting of the numbering text, select the whole line, change colors or fonts, and in the list style, select “Redefine style for selection”. In other words, the list style defines the font and color for the numbering independently from the paragraph style, and can do that for multiple levels.

Now, you have proper chapter numbering in Apple Pages.

Vote for Taodyne at CeBIT Start Me Up

Please show your support for Taodyne by voting for us at the CeBIT Start Me Up competition.

Taodyne – Tao Presentations documents: execution and drawing model

This article explains how Tao Presentations proceeds to transform a document (.ddd) into images on the screen. It describes an interesting mechanism making it easy to create dynamic documents that depend on events such as time or mouse movements. Moreover, this technique also allows Tao Presntations to optimize the rendering of graphic elements, enabling smooth 60Hz drawings even with complex contents.

Taodyne – Tao Presentations documents: execution and drawing model.

Moi Président de PME

Quel “président” j’aimerais être?

Un président de PME qui, d’abord, respecte la France, qui l’aime. Je suis le président d’une petite société, je ne peux être que président de pratiquement rien, chef de rien, mais en définitive responsable de tout.

Moi, président de PME, je ne suis même pas le chef d’une minorité. Je n’ai pas le temps de recevoir qui que ce soit parce que je travaille soir et week-ends.

Moi, président de PME, j’ai à traiter avec des investisseurs, pas à polémiquer de savoir si on les appelle associés ou collaborateurs.

Moi, président de PME, je participe à toutes sortes de collectes de fond parce que que je n’ai pas l’option du déficit budgétaire.

Moi, président de PME, je fais fonctionner la boîte de façon indépendante, mais j’ai des compte à rendre si j’agis contre l’avis de mon “conseil d’administration” (ou ce qui en tient lieu dans une SAS).

Moi, président de PME, je n’ai pas la prétention de nommer des directeurs, je sais très bien que c’est par leur indépendance d’esprit et leur initiative qu’ils ont mérité ce titre

Moi, président de PME, je fais en sorte que mon comportement soit à chaque instant exemplaire, tout en ayant une conscience plus aigue que jamais de mes propres limites.

Moi, président de PME, ce n’est pas de gaité de coeur que j’ai un statut très peu protégé, sachant très bien que si mes actions venaient à être contestées, aucun magistrat n’hésiterait jamais à me convoquer.

Moi, président de PME, j’ai constitué une équipe paritaire, avec autant de femmes que d’hommes dans la mesure où on peut le faire dans une équipe de cinq. Et alors?

Moi, président de PME, je suis soumis tout comme mes investisseurs à un code de déontologie qui interdit tout conflit d’intérêts. Là encore, et alors?

Moi, président de PME, je constate que mes associés ne cumulent rien, sinon les heures de travail mal payées, car on peut considérer qu’à partir de 70h par semaine, on se consacre plus que pleinement à sa tâche.

Moi, président de PME, j’aimerais bien voir un peu de décentralisation, j’aimerais bien qu’on donne aux forces vives locales que sont les PMEs un nouveau souffle, qu’on tire parti de leurs compétences, qu’on leur accorde un peu de liberté.

Moi, président de PME, j’aimerais bien grossir assez pour avoir des partenaires sociaux ou consacrer du temps aux associations professionnelles. Je préférerais quelques discussions régulières à des lois imposées sans négociation.

Moi, président de PME, je me contenterais bien d’un petit débat. On a évoqué la taxation du capital, et il est légitime qu’il puisse y avoir sur ces questions là un débat citoyen.

Moi, président de PME, je suis soumis à la proportionnelle face à mes actionnaires, et ce n’est pas en 2017, c’est dès maintenant que l’ensemble de leurs sensibilités est représentée.

Moi, président de PME, je suis la tête dans le guidon, avec toute la hauteur de vue qui va avec. J’aimerais bien fixer de grandes orientations, de grandes impulsions, mais en même temps, je dois m’occuper de tout et je dois avoir toujours le souci de la proximité avec les clients.

J’aurais bien aimé une vie un peu plus normale, mais rien n’est normal quand on est président de PME. Etre président, c’est pas si facile. Notre monde traverse une crise majeure, en tous cas la France. Mais on peut encore réussir à se fâcher avec l’Europe. On peut encore créer plein de conflits en se montant les uns contre les autres ou en se disputant sur l’environnement Bien sûr qu’un président doit avoir une réponse toute prête qui prenne de haut ses sujets: “je n’aime pas les riches“, ça suffit largement à montrer qu’on est proche du peuple, qu’on est capable de comprendre toute la complexité de réalité économique et sociale en France.

Cela dit, moi, président de PME, j’aimerais bien qu’on laisse nos investisseurs tranquilles. Ca serait déjà pas mal comme changement tout de suite.

Et si vous ne comprenez pas pourquoi je dis ça:

(Mis à jour pour utiliser le terme de PME, plus général que SAS)

Meta: Talk about LLVM

I gave a short talk about LLVM today. The link to the talk is tao:// (sorry, can’t make it a hyperlink, as WordPress removes the tao:// part…). To watch this link, you will need Tao Presentations, which itself uses LLVM for the rendering.

Rendering of the LLVM talk with LLVM within Tao Presentations

This is not the first meta-talk made with Tao Presentations, but for some reason, this one reminds me of the first time I presented HPVM from a Powerpoint within HPVM.

Taodyne’s best wishes – Source code version

I have release the source code for the “Season’s Greetings” from Taodyne. This can give you an idea of what XL can do today. In that video, which is rendered in real-time and in 3D, the XL program executes 60 times per second to synchronize the animations on the screen with the background movie.

In other XL-related news, I’ve been working on an updated language reference document. This describes where I want to bring XL, notably the type system and library. A lot of what is in this document is not implemented yet, but it will give the directions that I intend to follow in the coming months.


Get every new post delivered to your Inbox.

Join 365 other followers

%d bloggers like this: