diff --git a/escpos.py b/escpos.py index 2a451f9..1da78b1 100755 --- a/escpos.py +++ b/escpos.py @@ -5,6 +5,8 @@ escpos = { "init_printer": "\x1B\x40", + "select_international_character_set": "\x1B\x52\x00", + "justify_left": "\x1B\x61\x00", "justify_center": "\x1B\x61\x01", "justify_right": "\x1B\x61\x02", diff --git a/manifestos.py b/manifestos.py index cc89d00..25eb57c 100755 --- a/manifestos.py +++ b/manifestos.py @@ -31,5 +31,5 @@ manifestos = { '2018_Purple_Noise_Manifesto_[EN]' : 'https://www.obn.org/purplenoise/wp-content/uploads/2019/02/Manifesto18FEB2019.pdf', '2019_Cyberwitches_Manifesto_[EN]' : 'http://lucilehaute.fr/cyberwitches-manifesto/cyberwitches-manifesto-en.html', '2019_Cyberwitches_Manifesto_[FR]' : 'http://lucilehaute.fr/cyberwitches-manifesto/cyberwitches-manifesto.html', - '2019_The_Call_for_Feminist_Data_[EN]' : 'https://vvvvvvaria.org/~mb/techfem/feminist_manifesto_large.pdf' + '2018_The_Call_for_Feminist_Data_[EN]' : 'https://vvvvvvaria.org/~mb/techfem/feminist_manifesto_large.pdf' } \ No newline at end of file diff --git a/printer.py b/printer.py index be829ce..b6d88b1 100755 --- a/printer.py +++ b/printer.py @@ -44,6 +44,7 @@ def printNow(query, results): if connected == True: print(escpos['reset'], file=stdout, flush=True) print(escpos['init_printer'], file=stdout, flush=True) + print(escpos['select_international_character_set'], file=stdout, flush=True) print(escpos['margin_left'], file=stdout, flush=True) print(escpos['justify_center'], file=stdout, flush=True) @@ -73,19 +74,19 @@ def printNow(query, results): print(linebreak, file=stdout, flush=True) # print line break ascii art print('\n', file=stdout, flush=True) title = insert_linebreaks(document['name'], 46) - print(escpos['normalfont'], title, file=stdout, flush=True) # print the document name + print(title, file=stdout, flush=True) # print the document name print('\n', file=stdout, flush=True) # start of sentence - part = insert_linebreaks(part, 21) - print(escpos['largefont'], part, escpos['bold'], file=stdout, flush=True) # print current part of sentence + part = insert_linebreaks(part, 46) + print(part, escpos['bold'], file=stdout, flush=True) # print current part of sentence if i + 1 != len(sentence_splitted): # if this part is not the last one print(match, escpos['reset'], file=stdout, flush=True) # print query # line breaker after each sentence if i + 1 == len(sentence_splitted): - print('\n | \n', escpos['normalfont'], file=stdout, flush=True) + print('\n | \n', file=stdout, flush=True) sleep(3) print(escpos['paperfeed_1l'], file=stdout, flush=True) diff --git a/readings.py b/readings.py index 58f81e3..7961745 100644 --- a/readings.py +++ b/readings.py @@ -154,7 +154,7 @@ def request_results(query): # (sentences, tfidf value, manifesto name) x = 0 for tfidf, manifesto in order: - print('\n---', manifesto, '---') + # print('\n---', manifesto, '---') results[x] = {} results[x]['name'] = index[manifesto]['name'] # nicely readable name results[x]['filename'] = manifesto @@ -176,7 +176,7 @@ def request_results(query): # Append sentence to final set of matching results results[x]['matches'].append(sentence) - print('Matching sentence:', sentence.replace('\n', ' ')) + # print('Matching sentence:', sentence.replace('\n', ' ')) # Transform sentence into an HTML elements html = insert_query_highlight(query, sentence, r, g, b) diff --git a/start.py b/start.py index cfdaecd..d861bb5 100644 --- a/start.py +++ b/start.py @@ -3,7 +3,7 @@ import os, sys from sys import stdout import flask -from flask import request, redirect +from flask import request, redirect, send_from_directory import tfidf import readings import printer @@ -62,10 +62,17 @@ def index_lang(lang): index = readings.load_index() filenames = [manifesto for manifesto, _ in index.items()] suggestions = open('words.txt', 'r').readlines() - mappings = readings.request_mappings_all() - mappings_top = [[tfidf, word] for manifesto, words in mappings.items() for tfidf, word in words] - mappings_top.sort(reverse=True) - return flask.render_template(lang+'/index.html', filenames=filenames, suggestions=suggestions, mappings=mappings_top[:100], lang=lang) + mappings_top = open('tfidf.top50.txt', 'r').readlines() + return flask.render_template(lang+'/index.html', filenames=filenames, suggestions=suggestions, mappings=mappings_top, lang=lang) + +@APP.route('//about', methods=['GET', 'POST']) +def about(lang): + """ + Displays the about page accessible at '//about'. + """ + index = readings.load_index() + filenames = sorted([manifesto for manifesto, _ in index.items()]) + return flask.render_template(lang+'/about.html', filenames=filenames, lang=lang) @APP.route('//manifesto/', methods=['GET', 'POST']) def manifesto(lang, name): @@ -97,17 +104,12 @@ def contrast_mappings_name(lang, name): mappings, filenames = readings.request_mappings(name) return flask.render_template(lang+'/mappings-name.html', filenames=filenames, mappings=mappings[name], manifesto=name, lang=lang) -@APP.route('//colophon', methods=['GET', 'POST']) -def colophon(lang): - """ - Displays colophon page. - """ - index = readings.load_index() - filenames = sorted([manifesto for manifesto, _ in index.items()]) - return flask.render_template(lang+'/colophon.html', filenames=filenames, lang=lang) +@APP.route('/favicon.ico') +def favicon(): + return send_from_directory(os.path.join(APP.root_path, 'static'), 'favicon.ico') if __name__ == '__main__': if not 'index.json' in os.listdir('.'): tfidf.create_index() - # APP.debug=True + APP.debug=True APP.run() \ No newline at end of file diff --git a/static/css/fonts/go-mono/Go-Mono-Bold-Italic.ttf b/static/css/fonts/go-mono/Go-Mono-Bold-Italic.ttf new file mode 100644 index 0000000..0884406 Binary files /dev/null and b/static/css/fonts/go-mono/Go-Mono-Bold-Italic.ttf differ diff --git a/static/css/fonts/go-mono/Go-Mono-Bold.ttf b/static/css/fonts/go-mono/Go-Mono-Bold.ttf new file mode 100644 index 0000000..bbad5fd Binary files /dev/null and b/static/css/fonts/go-mono/Go-Mono-Bold.ttf differ diff --git a/static/css/fonts/go-mono/Go-Mono-Italic.ttf b/static/css/fonts/go-mono/Go-Mono-Italic.ttf new file mode 100644 index 0000000..ec27133 Binary files /dev/null and b/static/css/fonts/go-mono/Go-Mono-Italic.ttf differ diff --git a/static/css/fonts/go-mono/Go-Mono.ttf b/static/css/fonts/go-mono/Go-Mono.ttf new file mode 100644 index 0000000..e64e22f Binary files /dev/null and b/static/css/fonts/go-mono/Go-Mono.ttf differ diff --git a/static/css/fonts/go-mono/README b/static/css/fonts/go-mono/README new file mode 100644 index 0000000..7043c36 --- /dev/null +++ b/static/css/fonts/go-mono/README @@ -0,0 +1,36 @@ +These fonts were created by the Bigelow & Holmes foundry specifically for the +Go project. See https://blog.golang.org/go-fonts for details. + +They are licensed under the same open source license as the rest of the Go +project's software: + +Copyright (c) 2016 Bigelow & Holmes Inc.. All rights reserved. + +Distribution of this font is governed by the following license. If you do not +agree to this license, including the disclaimer, do not distribute or modify +this font. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Google Inc. nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +DISCLAIMER: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/static/css/fonts/unifont-11.0.03.ttf b/static/css/fonts/unifont-11.0.03.ttf deleted file mode 100644 index b540e1b..0000000 Binary files a/static/css/fonts/unifont-11.0.03.ttf and /dev/null differ diff --git a/static/css/stylesheet.css b/static/css/stylesheet.css index 75198e4..a8172d4 100644 --- a/static/css/stylesheet.css +++ b/static/css/stylesheet.css @@ -1,10 +1,20 @@ @font-face{ - font-family: 'unifont'; - src:url('fonts/unifont-11.0.03.ttf'); + font-family: 'mono'; + src:url('fonts/go-mono/Go-Mono.ttf'); + font-style: normal; + font-weight: normal; +} +@font-face{ + font-family: 'mono'; + src:url('fonts/go-mono/Go-Mono-Italic.ttf'); + font-style: italic; + font-weight: normal; } @font-face{ font-family: 'script'; src:url('fonts/LiberationSansNarrow-Bold.ttf'); + font-style: normal; + font-weight: normal; } /* animations */ @@ -21,8 +31,9 @@ body{ position: relative; min-width: 900px; margin:20px; - font-family: unifont, sans-serif; + font-family: mono, sans-serif; font-size: 8px; + background-color: #f0dfff; overflow-x: hidden; z-index: -1; } @@ -51,12 +62,18 @@ p{ margin:0; } code{ - font-family: 'unifont'; + font-family: 'mono'; font-size: 16px; } blockquote{ margin-left:50px; } +i{ + vertical-align: text-bottom; + position: absolute; + margin-left: 3.5em; + margin-top: -1px; +} .blink{ animation: 2s linear 1s infinite blink; } @@ -66,11 +83,11 @@ blockquote{ z-index: -1; width: calc(100% - 400px); min-width: 600px; - /*width: calc(100% - 300px);*/ margin:10px 0 20px 0; - font-family: unifont, sans-serif; + font-family: mono, sans-serif; font-size: 16px; - line-height: 1.35; + line-height: 1.65; + letter-spacing: -0.01em; } #nav-wrapper{ position: relative; @@ -85,7 +102,8 @@ blockquote{ #logo a{ font-family: 'script'; font-size: 64px; - font-weight: bold; + /*font-weight: bold;*/ + -webkit-text-stroke: 2px black; line-height: 1; letter-spacing: -0.035em; border: 0; @@ -101,17 +119,19 @@ blockquote{ width: 100%; height: 40px; padding:0px 10px; - border:1px solid black; + border:1px dotted; + font-family: 'mono'; + font-size: 16px; + background-color: #f2f2f3; } #search #submit{ position: absolute; - width: 26px; - height: 26px; - right: -12px; - top:24px; - border:0; - border-radius: 100%; - background-color:transparent; + width: 103px; + height: 42px; + right: -140px; + top: 15px; + font-family: 'mono'; + font-size: 16px; text-align: center; } #search #submit:hover{ @@ -142,16 +162,25 @@ blockquote{ strong, strong.query, strong.word, .result{ font-family: 'script'; font-size: 22px; - line-height: 1.35; - font-weight: bold; - letter-spacing: -0.035em; + line-height: 1.5; + /*font-weight: bold;*/ + -webkit-text-stroke: 1px; + letter-spacing: 0.015em; +} + +.guides{ + max-width: 600px; + margin:2em 0 4em 10px; } + .guides li{ + margin-bottom: 0.5em; + } /* crossing TEXT */ .cross{ position: relative; - max-width: 800px; - margin-top: 1em; + max-width: 1000px; + margin-top: 4em; padding-right: 2em; clear: both; } @@ -174,6 +203,7 @@ strong, strong.query, strong.word, .result{ p.techfem:before{ content:' ◕'; padding-right: 0.5em; + vertical-align: text-bottom; } p.tfidf{ } @@ -185,12 +215,16 @@ strong, strong.query, strong.word, .result{ p.tfidf:before{ content:'◧'; padding-right: 0.5em; + vertical-align: text-bottom; } p.note{ width: 100%; text-align: center; padding-bottom: 1em; } + .cross strong{ + line-height: 0; + } /* make sure that these blocks don't flow into the cross text blocks*/ #results, #notused, #suggestions, #conditionals, #analytics ,.analytics, .mappings, #colophon{ @@ -220,9 +254,10 @@ strong, strong.query, strong.word, .result{ text-align: center; } .result .title, .result .ascii{ - font-family: 'unifont'; + font-family: 'mono'; font-size: 16px; font-weight: normal; + -webkit-text-stroke: 0; } .result .title{ padding:10px; @@ -236,7 +271,7 @@ strong, strong.query, strong.word, .result{ top:-7px; margin:20px; font-size: 16px; - line-height: 1.2; + line-height: 1.4; } #txt-list ul{ margin:1em 0 0 0; @@ -244,10 +279,9 @@ strong, strong.query, strong.word, .result{ } #txt-list ul li{ margin:0; - padding:0 0 10px 0; - text-indent: -40px; + padding:0 0 1em 0; + text-indent: -3.2em; list-style: none; - /*word-break: break-all;*/ } #txt-list li a.contrast, a.contrast{ border: 0; @@ -256,7 +290,7 @@ strong, strong.query, strong.word, .result{ #colophon{ display: block; width: 100%; - margin-left: 2em; + margin: 5em 0; } #manifesto_content_wrapper{ @@ -273,6 +307,8 @@ strong, strong.query, strong.word, .result{ } iframe#manifesto_content { width: 100%; - height: calc(100vh - 200px); + height: calc(100vh - 300px); + border:1px dotted; + background-color: white; } diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000..30c43de Binary files /dev/null and b/static/favicon.ico differ diff --git a/templates/en/colophon.html b/templates/en/about.html similarity index 58% rename from templates/en/colophon.html rename to templates/en/about.html index 185762b..efd8390 100644 --- a/templates/en/colophon.html +++ b/templates/en/about.html @@ -8,17 +8,40 @@

-
-
-
-
+
+

A cross-reading allows for a specific type of reading that does not follow a linear order, but follows a self-chosen path. Reading becomes an act of creating relations and threading connections, reading across different domains.

+ +

This cyber/technofeminist cross-reader does not follow one but two axes, bridging the act of reading a collection of texts, with the act of reading a tool. Reading across a collection of manifestos, while reading the algorithm that is used to do so.

+ +

These cross-readings connect ...

+

... the Term Frequency Inverse Document Frequency algorithm, or TF-IDF in short

+

... a collection of cyber- and technofeminist manifestos

+ +

The TF-IDF is a commonly used algorithm to find the most important words of a document. The algorithm is (partly) written by the female computer scientist Karen Spärck Jones in the 1970s and has become one of the important algorithms of many search tools online, such as digital library systems or corporate search engines like Yandex or Google. The algorithm turns written documents into a sorted lists of search results, using a specific relative and inversed way of counting, that is sensitive for contrast in written documents.

+ +

The cyber/technofeminist manifestos connect feminist thinking to technology, introducing feminist servers, cyborg figures, cyberwitches, or pleas for the glitch as cultural digital artefact. This collection, which is obviously incomplete, brings a diverse set of technofeminist documents together that are published between 1912 and 2019. The manifestos speak about very different concerns and questions, but they connect in terms of energy level. Urging to make a statement, ready to activate. +

+ An interesting note to mention: Karen Spärck Jones was an advocate for the position of women in computing. “I’ve been trying to think a little bit—but it’s very dispiriting!—about how to try to get more women into computer science. On the whole, everybody who thinks about this is depressed, because we’re going backwards rather than forwards.”

+ +

These two axes, the algorithm and the manifestos, interoperate. They support and strengthen eachother as the X and Y of this cross-reading tool.

+ +

The TF-IDF algorithm, while responding to a search request, creates cross-readings through the manifestos. It outputs a list of search results around the subject of search, creating a field of statements, questions and concerns around one single word. Meanwhile, the algorithm starts to interoperate with the manifesto as a format. Sensitive as it is for bulletpointed writing, repetition and unique words -- elements that are used a lot in these statement driven documents. The algorithm prioritizes higher contrastful language over academic writing, repetition over very diverse vocabularies and the use of unique words over the use of common ones.

+ +

See this cross-reading tool as an exercise in reading, across a field of technofeminist thinking and a tool for algorithmic sorting.

+ + + +
+ + +
+

Colophon

The cyber/technofeminist cross-reader is developed by Manetta Berends
in the context of the exhibition Computer Grrrls in Paris (March - July 2019).


-

Commissioned by:
Inke Arns (Hartware Medien Kunst Verein, Dortmund)
@@ -33,7 +56,7 @@ Julie Boschat-Thorez


Fonts:
- Unifont
+ Go-Mono
Liberation Sans Narrow Bold

Software:
@@ -52,9 +75,7 @@ This project is made possible with the support of the DICRéAM fund, Paris.

-
-

[Note on context]

The collection of cyber/technofeminist manifestos includes the following documents: @@ -130,7 +151,6 @@ Cyberwitches Manifesto [EN, FR]
written by Lucile Haute (2019)

-

The algorithm introduces the idea of a context specific way of counting words.
diff --git a/templates/en/base.html b/templates/en/base.html index 5a8acf0..37ad5a9 100644 --- a/templates/en/base.html +++ b/templates/en/base.html @@ -13,7 +13,7 @@ {% for filename in filenames | sort %}

  • {{ filename | prettyfilename }} - +
  • {% endfor %}
      @@ -25,7 +25,7 @@
      EN / FR   - colophon + about
      - -
      -
      -
      - -
      -

      [Note on activating]

      -

      - The TF-IDF algorithm is an activator. Activating non-linear threads through a dataset of words. -

      - As a navigator the algorithm is a provider of order, deciding on the importance of the search term for a manifesto. -

      -

      - The cyber- and technofeminist manifesto are written and published to activate. Declaring intentions, motives or specific views on technology. Their writing styles, different as they are, are often statement-based, short and sometimes militant. -

      - "Nothing should be accepted as fixed, permanent, or 'given' -- neither material conditions nor social forms.." (Xenofeminist manifesto),
      - "So that is why no revolution should be without her." (The Manifesto of Futurist Woman) -

      -
      {% endif %} - -
      -
      -
      -
      -
      -
      -
      {% endblock %} {% block suggestions %}

      SUGGESTIONS

      -

      The cross-reader took the freedom to suggest. Some of its suggestions are pre-selected, such as the list of suggested cross-readings. Other suggestions are generated, using language as a playful tool to trigger connections and explore the dimensionality of a single word.

      -
      {% if analytics %} {% if analytics.stemmer %} @@ -91,21 +62,34 @@
      -

      Contrast mappings suggestions (top 50 TF-IDF results) for {{ results[0]['name']}}:

      +

      Cross-reading suggestions (top 50 TF-IDF results) through {{ results[0]['name']}}:

      {% for tfidf, word in analytics.mappings[:50] %} {% if word == query %} - {{ word }} + {{ word }} {% else %} - {{ word }} + {{ word }} {% endif%} {% endfor%}

      -
      -
      {% endif%}
      + +
      +

      [Note on activating]

      +

      + The TF-IDF algorithm is an activator. Activating non-linear threads through a dataset of words. +

      + As a navigator the algorithm is a provider of order, deciding on the importance of the search term for a manifesto. +

      +

      + The cyber- and technofeminist manifesto are written and published to activate. Declaring intentions, motives or specific views on technology. Their writing styles, different as they are, are often statement-based, short and sometimes militant. +

      + "Nothing should be accepted as fixed, permanent, or 'given' -- neither material conditions nor social forms.." (Xenofeminist manifesto),
      + "So that is why no revolution should be without her." (The Manifesto of Futurist Woman) +

      +
      {% endblock %} diff --git a/templates/fr/colophon.html b/templates/fr/about.html similarity index 57% rename from templates/fr/colophon.html rename to templates/fr/about.html index d678d42..7c27b57 100644 --- a/templates/fr/colophon.html +++ b/templates/fr/about.html @@ -9,19 +9,37 @@

      -
      -
      -
      + +
      +

      La lecture transversale permet un type de lecture spécifique, ne poursuivant pas un ordre linéaire, selon un parcours choisi. La lecture devient un acte de création de relations et de tissage de connections, via la traversée de différents domaines.

      + +

      Cette liseuse transversale cyber/technoféministe s’établit sur deux axes, alliant la lecture d’un corpus de textes et celle d’un outil technologique. Le processus de lecture englobe un ensemble de manifestes ainsi que l’algorithme utilisé pour ce faire.

      + +

      Ces lectures transversales connectent ...

      +

      ... l’algorithme TF-IDF, de l’anglais Term Frequency Inverse Document Frequency

      +

      ... et une collection de manifestes cyber et technoféministes

      + +

      Le TF-IDF est un algorithme utilisé communément afin d’identifier les mots les plus importants au sein d’un document. Cet algorithme a été en partie développé par l’informaticienne Späcrk Jones dans les années 70. Il est devenu l’un des algorithmes les plus importants pour un grand nombre de moteurs de recherche en ligne tels que Yandex ou Google. L’algorithme transforme les documents textuels en listes, où les résultats de recherche sont triés. Il utilise un mode de comptage inversé, sensible aux variations présentes au sein de ces documents.

      + +

      Les manifestes cyber/technoféministes lient pensée féministe et technologie, en introduisant le concept de serveurs féministes, des figures cyborg, des cyber-sorcières, voire des plaidoyers à la faveur du glitch comme artefact culturel numérique. Cette collection, évidemment non exhaustive, rassemble divers documents technoféministes publiés entre 1912 et 2019. Bien que ces manifestes évoquent des questions et préoccupations diverses, ils convergent sur le plan de l’énergie déployée. Ils posent l’urgence d’établir un constat, prêts à être mis en oeuvre. +

      + Par ailleurs, il convient de noter que Karen Spärck Jones défendait la place des femmes dans le milieu informatique. “J’ai essayé de réfléchir un peu – mais c’est très décourageant! - à la façon de parvenir à ce que plus de femmes soient présentes en informatique. Globalement, chaque personne réfléchissant sur le sujet finit par être déprimée, car nous reculons plus que nous ne progressons.”

      + +

      Ces deux axes, celui de l’algorithme et celui des manifestes, opèrent ensemble. Ils se soutiennent et se renforcent mutuellement, créant de nouvelles dimensions de lectures via cette liseuse transversale.

      + +

      L’algorithme TF-IDF génère une lecture transversale des manifestes tout en répondant à une requête. Il en ressort une liste de résultats autour du terme; un ensemble de déclarations, questions et préoccupations autour d’un même terme. Simultanément, l’algorithme interagit avec le format du manifeste : il est sensible aux puces typographiques, aux répétitions et aux mots uniques – des éléments qui caractérisent ces documents d’ordre déclaratif. L’algorithme donne la priorité aux formes textuelles très contrastées par rapport à celles ayant un style plus académique, à la répétition sur la diversité de vocabulaire, et à l’usage de mots uniques sur les mots plus communs.

      + +

      Cet outil de lecture transversale est donc à considérer tel un exercice de lecture, à travers le champ commun de la pensée technoféministe et d’un outil de classification algorithmique.

      + +
      +

      Colophon

      La cyber/technofeminist cross-reader a été développée par Manetta Berends
      pour l’exposition Computer Grrrls à Paris (Mars - Juillet 2019).

      -
      -
      -

      Commission par:
      Inke Arns (Hartware Medien Kunst Verein, Dortmund)
      @@ -35,7 +53,7 @@ Julie Boschat-Thorez

      Polices d’écriture:
      - Unifont
      + Go-Mono
      Liberation Sans Narrow Bold

      Logiciel:
      @@ -55,13 +73,8 @@

      -
      -
      -
      -

      [Note sur la contextualisation]

      -

      La collection des manifestes cyber/technoféministes comprend les documents suivants:

      @@ -137,7 +150,6 @@ Cyberwitches Manifesto [EN, FR]
      par Lucile Haute (2019)

      -

      L’algorithme amorce des idées sur le comptage localisé de mots.
      diff --git a/templates/fr/base.html b/templates/fr/base.html index 4913eb0..46ca22e 100644 --- a/templates/fr/base.html +++ b/templates/fr/base.html @@ -8,12 +8,12 @@

      -

      Processing and cross-calculating through the following manifesto's:

      +

      Traitement et calcul croisé à travers les manifestes suivants:

        {% for filename in filenames | sort %}
      • {{ filename | prettyfilename }} - +
      • {% endfor %}
          @@ -25,7 +25,7 @@
          EN / FR   - colophon + le projet
          +
          +

          [Note on activating]

          +

          + L’algorithme TF-IDF est un catalyseur, générant des connections multidimentionelles à travers un ensemble de mots, qui constituent ici les données. +

          + Tel un guide pour le lecteur, l’algorithme délivre un classement, en décidant de l’importance du terme de recherche au sein de chaque manifeste. +

          +

          + Les manifestes cyber et technoféministes sont écrits et publiés dans un but d’application. Ils émettent des déclarations sur les intentions, motivations et vues spécifiques sur la technologie. Leurs styles d’écriture, aussi différents soient-ils, sont souvent basés sur la mise en forme de déclarations courtes, voire même militantes. +

          + «Rien ne devrait être admis comme figé, permanent ou «donné» – ni les conditions matérielles ni les formes sociales» (Manifeste Xénoféministe),
          + «Voilà pourquoi aucune révolution ne doit lui rester étrangère.» (Le manifeste de la femme futuriste) +

          +
          +