Compare commits

..

No commits in common. "main" and "main" have entirely different histories.
main ... main

220 changed files with 2059 additions and 13235 deletions

9
.gitignore vendored
View File

@ -1,9 +0,0 @@
*swp
Makefile
web/*
gem/*
src/pages.gmo
tmp/*
gemtest
webtest
src/log.gmo

121
LICENSE
View File

@ -1,121 +0,0 @@
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.

View File

@ -1,25 +1,27 @@
# compudanzas
this repository contains the script and source files for the compudanzas site in gemini and the web
this repository contains the scripts and source files for the compudanzas site in gemini and the web
* generated in web/ : [https://compudanzas.net](https://compudanzas.net)
* generated in gem/ : [gemini://compudanzas.net](gemini://compudanzas.net/)
# generate site
the generator script requires lua.
call the shell script:
it was developed using lua 5.3.3 but it probably works with previous versions.
in order to call the script and build the site:
```sh
$ lua generasitio.lua
```
./generasitio.sh
```
## archive
# files
the `etc/generador/` directory contains the previous generator files and `README.md`, written in bash, awk and python.
* `generasitio.sh`: the shell script that copies files and call the other scripts with the corresponding arguments (like last modified date)
* `gemtext2html.awk`: converts the files in .gmo format (modified .gmi) to an html version, according to the spec and my own taste
* `gmo2gmi.awk`: converts the files in .gmo format to real .gmi
* `genindice.awk`: generates the index of all pages
* `links.py`: calculates the incoming links between pages and adds them to the files
* `genlog.awk`: generates the log files (atom, twtxt, gemsub) from `src/log.txt`
* `gmo.nanorc`: syntax highlighting for .gmo format in nano
# .gmo format
@ -32,10 +34,10 @@ the same format as gmi (gemtext), but with the following line types:
## inline wikilinks
the generator can parse and convert inline {wikilinks}, as many as needed per line
the generator can parse and convert inline {wikilinks}, one per line
* in html, they get converted to an inline link
* in gemtext, the links are added after the line with the text
* in html, it gets converted to an inline link
* in gemtext, a link is added after the line with the link
.gmo text:
@ -60,6 +62,8 @@ see the roadmap for updates that want to happen.
spaces inside the wikilinks are converted to underscores.
for the moment, only one wikilink per line is allowed.
## gemtext-like wikilinks
the generator can also parse normal links in gemtext, one per line
@ -85,6 +89,12 @@ converted to gemtext:
=> ./references.gmi references
```
## incoming links calculation
`links.py` takes both of those types of wikilinks in order to perform its calculation.
it looks at the contents between the curly brackets, converts them to a filename format (replacing spaces for underscores), and assummes that file actually exists.
# license
[CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/)
[peer production license](https://wiki.p2pfoundation.net/Peer_Production_License)

View File

@ -1,98 +0,0 @@
# compudanzas
this repository contains the scripts and source files for the compudanzas site in gemini and the web
* generated in web/ : [https://compudanzas.net](https://compudanzas.net)
* generated in gem/ : [gemini://compudanzas.net](gemini://compudanzas.net/)
# generate site
call the shell script:
```
./generasitio.sh
```
# files
* `generasitio.sh`: the shell script that copies files and call the other scripts with the corresponding arguments (like last modified date)
* `gemtext2html.awk`: converts the files in .gmo format (modified .gmi) to an html version, according to the spec and my own taste
* `gmo2gmi.awk`: converts the files in .gmo format to real .gmi
* `genindice.awk`: generates the index of all pages
* `links.py`: calculates the incoming links between pages and adds them to the files
* `genlog.awk`: generates the log files (atom, twtxt, gemsub) from `src/log.txt`
* `gmo.nanorc`: syntax highlighting for .gmo format in nano
# .gmo format
the same format as gmi (gemtext), but with the following line types:
* `+` add this line to the html file but not to the gmi file
* `&` add this line to the gmi file but not to the html file
# wikilinks
## inline wikilinks
the generator can parse and convert inline {wikilinks}, as many as needed per line
* in html, they get converted to an inline link
* in gemtext, the links are added after the line with the text
.gmo text:
```
see the {roadmap} for updates that want to happen.
```
converted to html:
```html
<p>
see the <a href='./roadmap.html'>roadmap</a> for updates that want to happen.
</p>
```
converted to gemtext:
```gemtext
see the roadmap for updates that want to happen.
=> ./roadmap.gmi roadmap
```
spaces inside the wikilinks are converted to underscores.
## gemtext-like wikilinks
the generator can also parse normal links in gemtext, one per line
* in html, it gets converted to an inline link
* in gemtext, the link is left as is
.gmo text:
```
=> ./references.gmi {references}
```
converted to html:
```html
<p><a href='./references.html'>references</a></p>
```
converted to gemtext:
```
=> ./references.gmi references
```
## incoming links calculation
`links.py` takes both of those types of wikilinks in order to perform its calculation.
it looks at the contents between the curly brackets, converts them to a filename format (replacing spaces for underscores), and assummes that file actually exists.
# license
[peer production license](https://wiki.p2pfoundation.net/Peer_Production_License)

View File

@ -1,67 +0,0 @@
import re
import os
import shutil
def filename2Wikilink( s ):
return '{' + s.replace('_',' ').replace('.gmo','') + '}'
def wikilink2Filename( s, ext='.gmi' ):
return s.strip("{}").replace(' ','_') + ext
os.chdir('src/')
incoming = {}
for filename in os.listdir():
if filename.endswith('.gmo'):
# copy to tmp
shutil.copy(filename, '../tmp/'+filename)
# if filename != 'pages.gmo' and filename != 'index.gmo':
if filename != 'pages.gmo':
# convert filename to wikilink
wikilink=filename2Wikilink(filename)
if wikilink not in incoming:
incoming[wikilink] = set()
# open file and search for all outgoing links
with open(filename) as file:
pre_mode = False
for line in file:
if re.match("```",line) != None: # toggle preformatted mode
pre_mode = not pre_mode
if pre_mode: # skip preformatted mode
continue
while re.search("\{[^{}]+\}",line):
m = re.search("\{[^{}]+\}",line)
match = m.group() # matched string
if match not in incoming: # create a new set for that page
incoming[match] = set()
# add this file
incoming[match].add(wikilink)
line = line[m.end()+1:]
os.chdir('../tmp/')
# remove incoming links for:
# incoming.pop('{pages}')
incoming.pop('{home}')
#incoming.pop('{license}')
for key,links in incoming.items():
# get filename for key
filename = wikilink2Filename(key,'.gmo')
# print(key)
# open file in append mode
with open(filename, 'a') as file:
if len(links):
# write incoming links
# print( '{} incoming links\n'.format( len(links) ) )
file.write("\n\n# incoming links\n")
for link in links:
gemlink = '=> ./{} {}'.format(wikilink2Filename(link), link)
file.write(gemlink+"\n")
else:
print( '{}: orphan\n'.format(key) )
file.write("\n\nno incoming links\n")

View File

@ -1,53 +0,0 @@
# biosejo
a chronological account of sejo's life and research.
posts are listed below in reverse chronological order (most recent first.)
# 12022
## Movement: A personal reframing
Renewing a focus and commitment with physical movement.
=> ./biosejo_120220825.gmi {biosejo 120220825}
## On sticky notes
These days I've been working with paper, sticky notes, a lot, and I've been thinking about them. The following are some loose ideas regarding them and potential digital counterparts.
=> ./biosejo_120220717.gmi {biosejo 120220717}
## The other side
Hello from Madrid!
=> ./biosejo_120220710.gmi {biosejo 120220710}
## Closure(s) and not
A post about some recent events, closures, new beginnings, and other reflections.
=> ./biosejo_120220607.gmi {biosejo 120220607}
## Packing and unpacking
Moving things around and deciding what to keep and what to leave behind, internally and externally.
=> ./biosejo_120220519.gmi {biosejo 120220519}
## On systems, dreams and practice
Updates regarding systems I'm using, dreams that are coming back, and insights on daily practice.
=> ./biosejo_120220511.gmi {biosejo 120220511}
## Here we go: Intro, research and notes
In which I introduce {biosejo} and talk about my plans regarding research, note-taking, and movement.
=> ./biosejo_120220503.gmi {biosejo 120220503}
# subscribe
you can get the posts by subscribing to the following artisanal atom feed:
=> ./biosejo.xml [biosejo atom feed]
+ <a href="https://validator.w3.org/feed/check.cgi?url=https%3A%2F%2Fcompudanzas.net%2Fbiosejo.xml" target="_blank" rel="noreferrer noopener external" class="icon"><img src="./img/banner_valid-atom.png" alt="[Valid Atom 1.0]" title="Validate my Atom 1.0 feed" /></a>
additionally, updates here are replicated in the {log} and its multiple feeds.

View File

@ -1,512 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom'>
<id>https://compudanzas.net/biosejo.html</id>
<title>biosejo - compudanzas</title>
<author><name>sejo</name></author>
<generator>a mano</generator>
<link href='https://compudanzas.net/biosejo.xml' rel='self'/>
<link href='https://compudanzas.net/biosejo.html' rel='alternate'/>
<updated>2022-08-25T12:00:00Z</updated>
<entry>
<title>Movement: A personal reframing - biosejo 120220825</title>
<updated>2022-08-25T12:00:00+02:00</updated>
<link rel='alternate' href='https://compudanzas.net/biosejo_120220825.html'/>
<id>https://compudanzas.net/biosejo_120220825.html</id>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<h1>Movement: A personal reframing - biosejo 120220717</h1>
<p>Renewing a focus and commitment with physical movement.
</p>
<p>For the past years I've had several cycles of disenchantment with computers. Although nice things have come out of them, like Compudanzas, they have also represented a source of anxiety: it seems I have internalized that my way of contributing to the world, society and a solarpunk present and future *has* to be through computers. This thought has been reinforced by a way of looking to my own history, as I've been "always around computers", "always excelling at mathematical and logical thinking". "This is what I'm good at, this is where I can be most helpful". The disenchantment leaves me floating in the void.
</p>
<p>These past few days I arrived to an interesting revelation, a reframing of this personal history. Yes, the computers always there are true, but it's also true that I've been *always moving*. Be it in triathlon, skating, cycling, running, parkour, dancing (and running and cycling and compudanzas and running :), I can look at my life and see that physical movement has been always there. Some days ago I talked with some people of my elementary school that I had lost contact with and I noticed that for them it would be pretty consistent to hear that I'm doing a PhD in Computer Science and Technology, and that I'm preparing for a running race. Everything has changed, but also nothing has changed.
</p>
<p>I realized that yes, I might have been able to e.g. help and teach people how to program because I have more experience compared to them. But in a similar way, I could guide or share with other people towards and through physical movement. I have a lot of experience, even if I'm not a "pro". (I've never held a position of "professional programmer", and yet I could be there for others).
</p>
<p>I see moving in community as something important. We can learn a lot about ourselves and the world. Additionally, moving and having fun is something I want for a solarpunk present and future. I can reframe movement as my focus.
</p>
<p>Something interesting is that I think the new frame is "backwards compatible" with what I'm doing already. The movement-based core of my PhD and what I'm and will be doing there is a possible way to *move with others*. Another possible way comes from the embodied activities / games / dances from Compudanzas. And as a note to self, there are multiple other ways as well, and I don't need to "coat" them with computation so that I feel they are valid when coming from me. I have done it already, I'm not sure what got me blocked.
</p>
<p>I'm happy to have arrived at this perspective, and I'm happy to share it. I'm feeling very good and excited now :)
</p>
</div>
</content>
</entry>
<entry>
<title>On sticky notes - biosejo 120220717</title>
<updated>2022-07-17T21:00:00+02:00</updated>
<link rel='alternate' href='https://compudanzas.net/biosejo_120220717.html'/>
<id>https://compudanzas.net/biosejo_120220717.html</id>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<h1>On Sticky Notes - biosejo 120220717</h1>
<p>These days I've been working with paper, sticky notes, a lot, and I've been thinking about them. The following are some loose ideas regarding them and potential digital counterparts.
</p>
<p>I enjoy the thought of being in a Computer Science and Engineering PhD program working with paper, sitting on the floor, writing by hand, collaborating as a group. We are gathering reflections, features, ideas, from movement-based design methods in several projects, and we are writing them in sticky notes. I like how this simple, paper-based technology can afford so many uses and re-uses, and how it can be used to organize thought spatially.
</p>
<p>Due to their relatively fragile quality, I've been practicing my typographic skills transcribing all them into a table. This table has gotten me excited: I know and can imagine a lot of things that can be done when one has a list of strings of text. I've thought about visualizing the "sticky notes", showing or allowing for spatial arrangements, clusters, similarities, etc. Additionally, I've been thinking about a possible "mirror" representation that joins the tangible and the digital note.
</p>
<p>I find it interesting: the arrangement of several notes on paper can be documented and read in a photo, but at the same that is not necesarily parseable (automatically?). What would it imply to parse that information? And how does one, would I, represent the corresponding data? Is it just a matter of points in space, x and y coordinates linked to a sticky note id? That can replicate the image, and can aid in re-creating the spatial relationships (what are the points closer to point "i"?), but is that the information that we want to document / convey / show at the end?
</p>
<p>There's also the possibility of making groups, assigning tags - would that be just another extra field in the data structure? I feel this specifically is a rabbit hole regarding "information science", librarians, or something along those lines.
</p>
<p>When creating the digital table, there was the thought: can we then re-create the sticky notes set, or can we re-print one that was lost? When transcribing we are losing some typographic information. What happens when we update a sticky note in paper? How easy it is to find the corresponding digital representation to update it as well? Seems like some text-search would be enough here. But what happens when the digital representation is updated? How would we find and update the paper version?
</p>
<p>Would it make to have some ID system? And what about some "RFID" to locate the notes? (?) And coming back to spatial arrangements, how could we "scan" and gather the arrangement of the paper notes in order to save that data? (This is coming back to the spatial arrangement questions; what is what we'd like to save) Would having visual markers help in this scanning? And what about leveraging the advanced technologies used with so-called Augment Reality?
</p>
<p>I feel all of these questions have been definitely been explored already (e.g. [1]), but I find it interesting to be arriving at them, kind of unexpectedly. I guess my recent interests in the zettelkasten, combined with tangible computing, and now being under this new environment, are arising wanting to be (re)mixed.
</p>
<p><a href="https://www.researchgate.net/publication/221514765_Augmented_Surfaces_A_Spatially_Continuous_Work_Space_for_Hybrid_Computing_Environments" rel="external noreferrer noopener" target="_blank" class="arrow">[1] Augmented Surfaces: A Spatially Continuous Work Space for Hybrid Computing Environments </a></p>
<p>I'm excited to be in a place where I can contemplate these questions and do something about them. They may end up being combined with the stronger line of bodily movement in the research project!
</p>
<p>I welcome further ideas and references regarding these questions. Feels worth it to have these thought running in the back of my mind.
</p>
</div>
</content>
</entry>
<entry>
<title>The other side - biosejo 120220710</title>
<updated>2022-07-10T15:00:00+02:00</updated>
<link rel='alternate' href='https://compudanzas.net/biosejo_120220710.html'/>
<id>https://compudanzas.net/biosejo_120220710.html</id>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<h1>The other side - biosejo 120220710</h1>
<p>Hello from the other side - these characters are now written from Madrid, Spain!
</p>
<p>This past month was hectic: even though we felt ready, once we were faced with the surprising news of our visas being ready, we realized we still had several things to solve in Mexico! Additionally, once we arrived in Madrid, we have had another set of issues to overcome, combined with a lot of movement (walking, running, biking) and exploration. Hence, not a lot of time to sit down and write, until today.
</p>
<p>I see people walking on the street. Everything seems "normal". This is our new normal, it seems. I'm still getting used to the idea of being so far away from everyone and everything I knew. It is kind of unbelievable: the world is indeed very big!
</p>
<p>I'm very excited and motivated for this new stage of life!
</p>
<p>I love that for the most part, the work I've been doing these days regarding my Computer Science and Technology PhD has happened sitting in the floor together with other people, working with paper, writing by hand. Is this some kind of dream come true?
</p>
<p>Meanwhile, the Thesis Talk 2022 event happened: I wasn't selected for the final round this time, but my video can be found along with others in the event's site:
</p>
<p><a href="https://www.uc3m.es/doctorado/thesis-talk-2022" rel="external noreferrer noopener" target="_blank" class="arrow">Thesis Talk 2022 | UC3M</a></p>
<p><a href="https://media.uc3m.es/video/62a041428f4208d58e8b4570?track_id=62a041d38f4208248f8b4567" rel="external noreferrer noopener" target="_blank" class="arrow">My thesis talk video</a></p>
<p>I started working already with the aim of submitting a paper in a couple of months. It's a little bit daunting but also very exciting! I'm very curious to see how things start to fall in place during the following days and weeks.
</p>
<p>I'm glad I have this space to share some aspects of this new experience.
</p>
<p>See you soon!
</p>
</div>
</content>
</entry>
<entry>
<title>Closure(s) and not - biosejo 120220607</title>
<updated>2022-06-07T13:00:00-05:00</updated>
<link rel='alternate' href='https://compudanzas.net/biosejo_120220607.html'/>
<id>https://compudanzas.net/biosejo_120220607.html</id>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<h1>Closure(s) and not - biosejo 120220607</h1>
<p>A post about some recent events, closures, new beginnings, and other reflections.
</p>
<p>Testing, testing... We are reconnecting...
</p>
<p>The past couple of weeks have been a time of closing cycles. We had our farewell party, and my semester of teaching creative coding ended. With it, it was also the end my two years of teaching there. I'm very grateful about these events and experiences.
</p>
<p>Regarding paperwork, we are getting closer. It was very exciting to go to the consulate to request our visas. The idea of us moving to another continent felt even more real when going there. But we still have to wait...
</p>
<p>Interestingly, at the beginning of this year I decided that my "word of the year" would be Patience. I decided it because I was looking for a job change and other transformations, for example regarding my personal physical training. I knew that I had to take the process slowly, calmly, with compassion. Similar to how I treated the learning processes of my students.
</p>
<p>Due to how this Phd process started and has been happening, I have come back to the word again and again. Patience.
</p>
<p>Regarding the program, I did submit my video entry to the Thesis Talk event. Once its online I'll share it around here.
</p>
<p>Additionally, I have been making my 4-years long plan. It's funny because I tend to have trouble imagining that amount of time. Recently I think I've gotten more used to the idea of planning for a year. Four times that is a lot, but I'm super thankful with my advisors/directors who have been helping me with that. The word Patience comes again: it's okay (and I would say it's needed) to go slow.
</p>
<p>My process of reading and note-taking continues. Now I'm trying to use Zim Wiki, especially because it's more lightweight and that can be definitely felt in my relatively old computer. I haven't tried it yet, but it seems that regarding mobile/Android support, I can use the Markor program
</p>
<p><a href="https://zim-wiki.org/" rel="external noreferrer noopener" target="_blank" class="arrow">Zim - A Desktop Wiki</a></p>
<p><a href="https://gsantner.net/project/markor.html" rel="external noreferrer noopener" target="_blank" class="arrow">Markor Editor</a></p>
<p>Finally, I have been thinking a lot about so-called "social media" and the presence that I want for me there. I still haven't arrived to a conclusion, and I wonder if I will, but I have been thinking about embracing abundance and letting myself shine.
</p>
<p>Additionally, regarding my use of it, and the patterns of visiting these websites to check updates (even when most of them are in the fediverse, and not super engineeredto become addictive), I got inspired by this post by ~cblgh, that describes a setup for a "single-purpose" computer dedicated to social media. In my case, I'm attempting to use an Android device that has an OS version with some "digital wellness" features like the possibility of assigning timers to specific programs.
</p>
<p><a href="https://cblgh.org/social%20media%20computer/" rel="external noreferrer noopener" target="_blank" class="arrow">social media computer - alexander cobleigh</a></p>
<p>The writing of this post had been running away from me. I'm glad to have it done now, and I don't feel bad about letting a couple of weeks slip away. That's a novelty in my case, because some other times I would have gotten a little bit intense about "losing the streak".
</p>
<p>I feel calm, and I wish you could all see the tree-based sight I have in front of me.
</p>
</div>
</content>
</entry>
<entry>
<title>Packing and unpacking - biosejo 120220519</title>
<updated>2022-05-19T20:00:00-05:00</updated>
<link rel='alternate' href='https://compudanzas.net/biosejo_120220519.html'/>
<id>https://compudanzas.net/biosejo_120220519.html</id>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<h1>Packing and unpacking - biosejo 120220519</h1>
<p>Moving things around and deciding what to keep and what to leave behind, internally and externally.
</p>
<h1 id='Packing'>Packing</h1>
<p>During the past week we rehearsed packing for the grand move, in order to see if we were in our space and weight budget. It was a nice way to conclude a process that we have been going through in the past few weeks, "minimizing" our stuff and figuring out what we really need (and what we really want to really need)
</p>
<p>As we were going our budget a little bit, this was a good opportunity to push further and let go of some other stuff.
</p>
<p>In parallel, we have been having a nice experience of gifting stuff to friends, finding places to donate things (e.g. hacklabs that could use electronic components), trying to sell some others, and bringing the rest to recycling places.
</p>
<p>This is definitely a big jump into the unknown, so we are hoping we don't end up needing something that we thought we wouldn't.
</p>
<p>In any case, doing all this brought me in contact with several past notebooks and works of mine: these were windows for me to see who I was, who I have been, and who I wanted to be.
</p>
<h1 id='Unpacking'>Unpacking</h1>
<p>During this week, these windows-notebooks made me ponder a lot about my identity, especially about my online identity. Part of me would prefer not to, and just flow (embracing chaos and the absurd?). I'd prefer to use that time in some other way.
</p>
<p>However, another part of me is intrigued about how I've changed, online and offline.
</p>
<p>It seems that now I'm more conscious, compassionate, understanding, and open-minded. It seems that before I was way more sure of myself and my actions, and also more outgoing. I wasn't hesitant to start projects, to connect with people (online) or to embrace my humor. Always an introvert, though :)
</p>
<p>I wonder if that overconfidence came from being younger or only from being more naive. Both seem difficult to revert, but probably something can be done about it.
</p>
<p>Regarding naivete, I can identify how, when becoming more privacy-aware, I stopped using my legal name online, I deleted a lot of traces and connections, and I went "into the dark".
</p>
<p>I can also identify how, when becoming more aware of the upcoming <a href='./collapse.html'>collapse</a>, I stopped doing a lot of things that I found fun, I became somewhat cynic (despite not wanting to!), I questioned everything I was doing and being part of, I got paralyzed, and again, I went inwards, "into the dark".
</p>
<p>Additionally, all of this got combined with becoming aware of feminism and realizing all the stupid stuff I did due to being a man. I guess I over-corrected and then I wanted to lower my voice, to not occupy any space, to stop initiating and instigating creative projects. Going into the dark.
</p>
<p>As one can imagine, and as I realize now, thanks to a slow process that has been aided by this big change: that is not a nice way to live! And neither it's helpful, for me or for anyone!
</p>
<p>Side note: I was a little bit hesitant to write about this, but now I'm finding it very illuminating and lighter-feeling-inducing :)
</p>
<p>So here I am, slowly crawling outside. Slowly repeating, "my voice is important". I realize and remember, I'm part of a so-called minority, I shouldn't be the one shutting up. My voice is important. How does one gets their confidence back? How does one cultivate it? It's okay to shine.
</p>
<p>My outline implied talking about some other personal conflicts (the performance of professionalism), but interestingly this has given me enough to process already.
</p>
<p>Thanks for being here, dear reader, allowing all this to go outside.
</p>
</div>
</content>
</entry>
<entry>
<title>On systems, dreams and practice - biosejo 120220511</title>
<updated>2022-05-11T09:00:00-05:00</updated>
<link rel='alternate' href='https://compudanzas.net/biosejo_120220511.html'/>
<id>https://compudanzas.net/biosejo_120220511.html</id>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<h1>On systems, dreams and practice - biosejo 120220511</h1>
<p>Updates regarding systems I'm using, dreams that are coming back, and insights on daily practice.
</p>
<p>Something I like about weekly processes like this one is the perspective it sheds to the arbitrary, human-decided period of seven days. I guess it's like some kind of prism or lens: it can be seen as too long, or as too short of a period.
</p>
<p>I take several notes of the things I'm doing or want to be doing each day; this past week I made a new list of what are the things I want to be talking about in the post.
</p>
<h1 id='Systems'>Systems</h1>
<p>Going from more to less technical: Obsidian the tool, a thesis talk as a framework, and some new perspectives on reading.
</p>
<h2 id='Obsidian'>Obsidian</h2>
<p>I started using Obsidian.md, a text-editor focused on "interconnected note-taking" (my words).
<p><a href="https://obsidian.md" rel="external noreferrer noopener" target="_blank" class="arrow">Obsidian</a></p>
</p>
<p>I had read several good comments about it, but I thought it was yet another note-taking "app" with its specific database and probably non-compatible way of saving notes.
</p>
<p>Last week I found out it uses a directory with plain-text (markdown) files, and that it was completely compatible with the way I started writing in ceti, my digital zettelkasten that I mentioned on <a href='./biosejo_120220503.html'>biosejo 120220503</a>.
</p>
<p>Additionally, it has many nice features like link auto-completion, suggestion of possible backlinks, templates for new files, a nice way of previewing the markdown format, and the "famous" graph view to see the interconnectedness of the notes.
</p>
<p>I decided to use it as an ergonomic way of getting my notes on "paper" (on file?) while at the same figuring out what are the features that I would like to implement on my own tool. Again, the fact that all of the notes are text files allows me to write on them "manually" or to use Obsidian as an interface.
</p>
<h2 id='Thesis talk'>Thesis talk</h2>
<p>The doctorate school of my university is organizing a "Thesis talk" event, where PhD students/candidates present their project to a non-specialized audience in up to 3 minutes.
</p>
<p>I thought it would be a great idea to participate! I saw it as a way of getting involved with the school activities even though I'm not "there" yet, and also (and maybe more importantly?) as an opportunity to have a deadline and push myself to define in a clear and concise manner the research project I'll be developing.
</p>
<p>It happens that in June a requirement of the program is to present an initial research plan. I saw the Thesis Talk as a way to prepare for that!
</p>
<p>My advisor approved the idea: now I am signed up for the event, and I have until the end of May to submit a video recording of my presentation. If I make the cut to the final event, I would be able to present it live on the end of June: In theory we should be there in the university by then.
</p>
<p>I guess a past version of me wouldn't believe that I signed up for this: I'm glad I'm able now to bring myself to the table, and participate.
</p>
<h2 id='Reading'>Reading</h2>
<p>One way I see that the two previous points are connected is that I'm using my zettelkasten and the thesis talk opportunity as a way and system to figure out how to read better and how to map the different topics of the state of the art and also of my interests.
</p>
<p>The past few days it happened to me that I remembered some specific diagram and framework from an article I had read before this system, and I had a little bit of a problem to re-locate it.
</p>
<p>Thankfully, I'm using Zotero to manage my references and I could find it again.
</p>
<p>However, I've been in similar situations before: reading something casually, thinking that it wouldn't be important in the future, and then weeks/months/years later having an insight related to that, but with the reference being.
</p>
<p>This situation reminded me of that, and motivated me to keep my intention of growing this "external brain" in the form of my zettelkasten.
</p>
<p>Now the thing to overcome is sometimes feeling overwhelmed by the thought of "reading right", with notes and so on; this feeling has happened a couple of times in such a way that it makes me prefer not to do it right now.
</p>
<h1 id='Dreams'>Dreams</h1>
<p>This past week I had a very nice and useful insight about re-contextualizing my work.
</p>
<p>Most of my life I have admired the work of Nintendo. Nowadays I'm not a fan of the ways they have been handling some things like anti-piracy. Regardless of that, even though I didn't have a lot of games, I've been a fan of how they use cuteness, humor and ingenuity in play.
</p>
<p>I'm sure they are not the only ones who work in that way; let's say I'm only taking them as a referent. During my life there have been only very few big companies where I had said I'd like to be part of, and Nintendo is still one of them. For the record, Pixar would be the other one, although right now I wouldn't know what I'd like to do there.
</p>
<p>The point here is that I realized that my PhD research project, based on playful computing for body games and experiences, could lead me to Nintendo.
</p>
<p>Interestingly, that almost immediately changed the way I looked at the project, and allowed me to think of resources (like cuteness) that I wasn't probably considering yet.
</p>
<p>The real insight came when I realized that I don't have to be working for three or four years towards that: I can work right now "as if I was" already there. Or, said in another way: I don't have to be ever there to work and create as if I was there!
</p>
<p>I can keep analyzing what are the elements that I like about their creations and creative processes, and use them in my own way with my own team. The goal of eventually getting there is very nice and motivating, and I'm not discarding it as impossible or undesirable: it's just that I find it great how I can already feel very different and even more excited about my research right now!
</p>
<p>I have found it very interesting how this perspective has allowed me to think beyond the arbitrary "academic limits" that I had unconsciously set for myself and the project, despite not having a lot of academic experience.
</p>
<p>This new way of looking at things has been a nice counterpoint to some instances of self-doubt and of getting overwhelmed with all the topics and their interconnectedness.
</p>
<p>One step at a time, as if I was already in the dreamt place.
</p>
<h1 id='Practice'>Practice</h1>
<p>For me, all of this connects to the idea of practice, and to how I've been traditionally attracted to the ideas of discipline, determination, daily practice, and to people that have their "own thing" that develop during all their life.
</p>
<p>We watched Tony Hawk's documentary, Until the wheels fall off, and it made me think deeply again about these things.
</p>
<p>Interestingly, I tend to feel as if I didn't have my "own thing" yet, but to my partner it's obvious it's "computers". And well, not only to them: cleaning up the house and getting rid of previous documents and school papers, I read many times that several instances of myself in the past ~16 years thought that they were "good with computers" and wanted to work and create with them.
</p>
<p>I get a little bit intense and I think: "Well, if that's my thing, am I really practicing enought and getting better at it as time passes?"
</p>
<p>I can recognize how there have been times where e.g. I had a 100+ days practice of generative art, but at some point I lost focus. I guess that when I think I don't have "my thing" it's because 1) I'd like to see it as a creative practice, 2) I haven't been able to feel like I'm pulling it off, i.e. consciously and constantly getting better at it.
</p>
<p>In any case, I see now how the PhD project can serve me to have this focused framework and explore these ideas of practice. What would I normally do, if I was already "there" in the dreamt place? What would I practice? How would I enjoy and have fun?
</p>
<p>Also, to help this, I think and I know I have to be careful with the resources I consume: reading a lot of critical theory paralyzes me and makes me feel I can't do anything because everything seems to be "wrong".
</p>
<p>Similar to how performance allows us to enter in a state of "suspension of disbelief", I think I can find a way to enter a state where I can practice, play, enjoy, and have fun.
</p>
<p>In any case, I know some "critical people" have argued for the importance of play and fun. For the moment, I'll let them do the arguing, and I'll stop thinking I have to justify myself.
</p>
<p>One step at a time :)
</p>
<p>As a final note, and as an intersting turn (?) of events, we have been playing with our NDS consoles, and I got a way to download and play even more games. Even though this could be part of the research I'd like to do, I prefer to think of it as just giving myself the opportunity to have fun.
</p>
<p>Feel free to <a href='./contact.html'>contact</a> me to further discuss any of this. For the record, I'm glad to have this space to share!
</p>
<p>See you next week!
</p>
</div>
</content>
</entry>
<entry>
<title>Here we go: Intro, research and notes - biosejo 120220503</title>
<updated>2022-05-03T18:00:00-05:00</updated>
<link rel='alternate' href='https://compudanzas.net/biosejo_120220503.html'/>
<id>https://compudanzas.net/biosejo_120220503.html</id>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<h1>Here we go: Intro, research and notes - biosejo 120220503</h1>
<p>In which I introduce <a href='./biosejo.html'>biosejo</a> and talk about my plans regarding research, note-taking, and movement.
</p>
<h1 id='Intro'>Intro</h1>
<p>I tend to enjoy writing in chronological posts.
</p>
<p>Now that I think of it, I've done that in several instances for a period corresponding to at least half of my life.
</p>
<p>Here in the compudanzas site I've been exploring a <a href='./wiki.html'>wiki</a>-like structure, because non-linear arrangements, and specifically hypertext-based ones, have attracted me for a long time as well. I hadn't had the chance to explore this until I received plenty of inspiration from the Merveilles webring, especially from the XXIIVV wiki.
</p>
<p><a href="https://webring.xxiivv.com/" rel="external noreferrer noopener" target="_blank" class="arrow">Merveilles webring</a></p>
<p><a href="https://wiki.xxiivv.com/site/home.html" rel="external noreferrer noopener" target="_blank" class="arrow">XXIIVV</a></p>
<p>I have enjoyed the process a lot. I even started a digital Zettelkasten now, to create a living archive of my knowledge that I can explore to find new insights (more on this below).
</p>
<p>However, I also enjoy reading other people's chronological posts. I was okay reading them, not writing them, until... something (relevant) changed.
</p>
<p>I'm starting a predoctoral research position focusing on playful applications of computing to improve proprioception and movement!
</p>
<p>We have yet to move to another country in another continent. Meanwhile I've been reading, noticing that this would be a great time to improve my long-term retention of what I read, and therefore deciding to improve how I actually read and learn.
</p>
<p>This is where the Zettelkasten comes into play, but I'll talk more about it in a moment.
</p>
<p>The thing is that I decided that it would be a great exercise for me to linearize here not only my research, but also the surrounding events (aka "life"). On one hand I love knowledge-sharing, on the other this could be a way to keep close people (that will now be relatively far away) in touch with what I'm living, and on the third hand (or first foot?) I find this could be a great way to practice my writing.
</p>
<p>My intention is to write and share here once a week.
</p>
<h1 id='The Zettelkasten'>The Zettelkasten</h1>
<p>Very simply put, the Zettelkasten is a method to take and organize interconnected notes that tend to represent someone's knowledge. You can read more about it in the following link; these past few days I've been reading many of those posts!
</p>
<p><a href="https://zettelkasten.de/posts/overview/" rel="external noreferrer noopener" target="_blank" class="arrow">Getting Started - Zettelkasten Methon</a></p>
<p>I decided to start one because I realized that for my preliminary readings for the PhD program I wasn't really taking meaningful notes.
</p>
<p>Additionally, because what I'll be doing will be super interdisciplinary: relating movement, psychology, social sciences, philosophy, neuroscience, and also computer science and electronics, I thought that I would need a way to make sense of all this and to avoid getting lost.
</p>
<p>I had read about the method already, but now I went deeper and then started with a simple system based on plain text files. The automation and ergonomics will come later whenever I start feeling friction.
</p>
<p>My objective here is to improve my reading, being more deliberate about it. I tend to read relatively fast, sometimes just skimming, and I kind of "get" the main points, especially when I talk with my partner about them.
</p>
<p>However, I notice I could get a lot more out of reading if I take a more attentive and careful approach, creating and tending notes, interconnecting them with previous ones. Also, I can see how this can lead to longer-term retention and knowledge creationg.
</p>
<p>I'm excited about it!
</p>
<h1 id='Movement and less screens'>Movement and less screens</h1>
<p>Lastly, I want to share that I'm currently going through a process of simplification. Following a relatively common trend in my circles, I want to spend less time online, and less time in distraction (procrastination disguised as distraction?).
</p>
<p>For the zettelkasten I'm taking notes in paper first, and I'm also using paper notebooks to organize my ideas. This very post was outlined in paper!
</p>
<p>Also, the text-based focus of what I'm doing right now means that I can use my main computer in "text mode" or "console mode", and that I can use my android tablet with termux and a keyboard to have a similar and more portable writing experience.
</p>
<p><a href="https://termux.com/" rel="external noreferrer noopener" target="_blank" class="arrow">Termux</a></p>
<p>I'm also getting back to <a href='./running.html'>running</a> and moving, and I'm being more deliberate with my on-screen time by using a timer.
</p>
<p>It has been great to alternate focus with breaks, in contrast to being aimlessly in front of the computer for a long time!
</p>
<p>I'm really excited about all this and what's coming next.
</p>
<p>I reiterate my intention: See you next week!
</p>
</div>
</content>
</entry>
</feed>

View File

@ -1,64 +0,0 @@
# Here we go: Intro, research and notes - biosejo 120220503
In which I introduce {biosejo} and talk about my plans regarding research, note-taking, and movement.
# Intro
I tend to enjoy writing in chronological posts.
Now that I think of it, I've done that in several instances for a period corresponding to at least half of my life.
Here in the compudanzas site I've been exploring a {wiki}-like structure, because non-linear arrangements, and specifically hypertext-based ones, have attracted me for a long time as well. I hadn't had the chance to explore this until I received plenty of inspiration from the Merveilles webring, especially from the XXIIVV wiki.
=> https://webring.xxiivv.com/ Merveilles webring
=> https://wiki.xxiivv.com/site/home.html XXIIVV
I have enjoyed the process a lot. I even started a digital Zettelkasten now, to create a living archive of my knowledge that I can explore to find new insights (more on this below).
However, I also enjoy reading other people's chronological posts. I was okay reading them, not writing them, until... something (relevant) changed.
I'm starting a predoctoral research position focusing on playful applications of computing to improve proprioception and movement!
We have yet to move to another country in another continent. Meanwhile I've been reading, noticing that this would be a great time to improve my long-term retention of what I read, and therefore deciding to improve how I actually read and learn.
This is where the Zettelkasten comes into play, but I'll talk more about it in a moment.
The thing is that I decided that it would be a great exercise for me to linearize here not only my research, but also the surrounding events (aka "life"). On one hand I love knowledge-sharing, on the other this could be a way to keep close people (that will now be relatively far away) in touch with what I'm living, and on the third hand (or first foot?) I find this could be a great way to practice my writing.
My intention is to write and share here once a week.
# The Zettelkasten
Very simply put, the Zettelkasten is a method to take and organize interconnected notes that tend to represent someone's knowledge. You can read more about it in the following link; these past few days I've been reading many of those posts!
=> https://zettelkasten.de/posts/overview/ Getting Started - Zettelkasten Methon
I decided to start one because I realized that for my preliminary readings for the PhD program I wasn't really taking meaningful notes.
Additionally, because what I'll be doing will be super interdisciplinary: relating movement, psychology, social sciences, philosophy, neuroscience, and also computer science and electronics, I thought that I would need a way to make sense of all this and to avoid getting lost.
I had read about the method already, but now I went deeper and then started with a simple system based on plain text files. The automation and ergonomics will come later whenever I start feeling friction.
My objective here is to improve my reading, being more deliberate about it. I tend to read relatively fast, sometimes just skimming, and I kind of "get" the main points, especially when I talk with my partner about them.
However, I notice I could get a lot more out of reading if I take a more attentive and careful approach, creating and tending notes, interconnecting them with previous ones. Also, I can see how this can lead to longer-term retention and knowledge creationg.
I'm excited about it!
# Movement and less screens
Lastly, I want to share that I'm currently going through a process of simplification. Following a relatively common trend in my circles, I want to spend less time online, and less time in distraction (procrastination disguised as distraction?).
For the zettelkasten I'm taking notes in paper first, and I'm also using paper notebooks to organize my ideas. This very post was outlined in paper!
Also, the text-based focus of what I'm doing right now means that I can use my main computer in "text mode" or "console mode", and that I can use my android tablet with termux and a keyboard to have a similar and more portable writing experience.
=> https://termux.com/ Termux
I'm also getting back to running and moving, and I'm being more deliberate with my on-screen time by using a timer.
It has been great to alternate focus with breaks, in contrast to being aimlessly in front of the computer for a long time!
I'm really excited about all this and what's coming next.
I reiterate my intention: See you next week!

View File

@ -1,100 +0,0 @@
# On systems, dreams and practice - biosejo 120220511
Updates regarding systems I'm using, dreams that are coming back, and insights on daily practice.
Something I like about weekly processes like this one is the perspective it sheds to the arbitrary, human-decided period of seven days. I guess it's like some kind of prism or lens: it can be seen as too long, or as too short of a period.
I take several notes of the things I'm doing or want to be doing each day; this past week I made a new list of what are the things I want to be talking about in the post.
# Systems
Going from more to less technical: Obsidian the tool, a thesis talk as a framework, and some new perspectives on reading.
## Obsidian
I started using Obsidian.md, a text-editor focused on "interconnected note-taking" (my words).
=> https://obsidian.md Obsidian
I had read several good comments about it, but I thought it was yet another note-taking "app" with its specific database and probably non-compatible way of saving notes.
Last week I found out it uses a directory with plain-text (markdown) files, and that it was completely compatible with the way I started writing in ceti, my digital zettelkasten that I mentioned on {biosejo 120220503}.
Additionally, it has many nice features like link auto-completion, suggestion of possible backlinks, templates for new files, a nice way of previewing the markdown format, and the "famous" graph view to see the interconnectedness of the notes.
I decided to use it as an ergonomic way of getting my notes on "paper" (on file?) while at the same figuring out what are the features that I would like to implement on my own tool. Again, the fact that all of the notes are text files allows me to write on them "manually" or to use Obsidian as an interface.
## Thesis talk
The doctorate school of my university is organizing a "Thesis talk" event, where PhD students/candidates present their project to a non-specialized audience in up to 3 minutes.
I thought it would be a great idea to participate! I saw it as a way of getting involved with the school activities even though I'm not "there" yet, and also (and maybe more importantly?) as an opportunity to have a deadline and push myself to define in a clear and concise manner the research project I'll be developing.
It happens that in June a requirement of the program is to present an initial research plan. I saw the Thesis Talk as a way to prepare for that!
My advisor approved the idea: now I am signed up for the event, and I have until the end of May to submit a video recording of my presentation. If I make the cut to the final event, I would be able to present it live on the end of June: In theory we should be there in the university by then.
I guess a past version of me wouldn't believe that I signed up for this: I'm glad I'm able now to bring myself to the table, and participate.
## Reading
One way I see that the two previous points are connected is that I'm using my zettelkasten and the thesis talk opportunity as a way and system to figure out how to read better and how to map the different topics of the state of the art and also of my interests.
The past few days it happened to me that I remembered some specific diagram and framework from an article I had read before this system, and I had a little bit of a problem to re-locate it.
Thankfully, I'm using Zotero to manage my references and I could find it again.
However, I've been in similar situations before: reading something casually, thinking that it wouldn't be important in the future, and then weeks/months/years later having an insight related to that, but with the reference being.
This situation reminded me of that, and motivated me to keep my intention of growing this "external brain" in the form of my zettelkasten.
Now the thing to overcome is sometimes feeling overwhelmed by the thought of "reading right", with notes and so on; this feeling has happened a couple of times in such a way that it makes me prefer not to do it right now.
# Dreams
This past week I had a very nice and useful insight about re-contextualizing my work.
Most of my life I have admired the work of Nintendo. Nowadays I'm not a fan of the ways they have been handling some things like anti-piracy. Regardless of that, even though I didn't have a lot of games, I've been a fan of how they use cuteness, humor and ingenuity in play.
I'm sure they are not the only ones who work in that way; let's say I'm only taking them as a referent. During my life there have been only very few big companies where I had said I'd like to be part of, and Nintendo is still one of them. For the record, Pixar would be the other one, although right now I wouldn't know what I'd like to do there.
The point here is that I realized that my PhD research project, based on playful computing for body games and experiences, could lead me to Nintendo.
Interestingly, that almost immediately changed the way I looked at the project, and allowed me to think of resources (like cuteness) that I wasn't probably considering yet.
The real insight came when I realized that I don't have to be working for three or four years towards that: I can work right now "as if I was" already there. Or, said in another way: I don't have to be ever there to work and create as if I was there!
I can keep analyzing what are the elements that I like about their creations and creative processes, and use them in my own way with my own team. The goal of eventually getting there is very nice and motivating, and I'm not discarding it as impossible or undesirable: it's just that I find it great how I can already feel very different and even more excited about my research right now!
I have found it very interesting how this perspective has allowed me to think beyond the arbitrary "academic limits" that I had unconsciously set for myself and the project, despite not having a lot of academic experience.
This new way of looking at things has been a nice counterpoint to some instances of self-doubt and of getting overwhelmed with all the topics and their interconnectedness.
One step at a time, as if I was already in the dreamt place.
# Practice
For me, all of this connects to the idea of practice, and to how I've been traditionally attracted to the ideas of discipline, determination, daily practice, and to people that have their "own thing" that develop during all their life.
We watched Tony Hawk's documentary, Until the wheels fall off, and it made me think deeply again about these things.
Interestingly, I tend to feel as if I didn't have my "own thing" yet, but to my partner it's obvious it's "computers". And well, not only to them: cleaning up the house and getting rid of previous documents and school papers, I read many times that several instances of myself in the past ~16 years thought that they were "good with computers" and wanted to work and create with them.
I get a little bit intense and I think: "Well, if that's my thing, am I really practicing enought and getting better at it as time passes?"
I can recognize how there have been times where e.g. I had a 100+ days practice of generative art, but at some point I lost focus. I guess that when I think I don't have "my thing" it's because 1) I'd like to see it as a creative practice, 2) I haven't been able to feel like I'm pulling it off, i.e. consciously and constantly getting better at it.
In any case, I see now how the PhD project can serve me to have this focused framework and explore these ideas of practice. What would I normally do, if I was already "there" in the dreamt place? What would I practice? How would I enjoy and have fun?
Also, to help this, I think and I know I have to be careful with the resources I consume: reading a lot of critical theory paralyzes me and makes me feel I can't do anything because everything seems to be "wrong".
Similar to how performance allows us to enter in a state of "suspension of disbelief", I think I can find a way to enter a state where I can practice, play, enjoy, and have fun.
In any case, I know some "critical people" have argued for the importance of play and fun. For the moment, I'll let them do the arguing, and I'll stop thinking I have to justify myself.
One step at a time :)
As a final note, and as an intersting turn (?) of events, we have been playing with our NDS consoles, and I got a way to download and play even more games. Even though this could be part of the research I'd like to do, I prefer to think of it as just giving myself the opportunity to have fun.
Feel free to {contact} me to further discuss any of this. For the record, I'm glad to have this space to share!
See you next week!

View File

@ -1,41 +0,0 @@
# Packing and unpacking - biosejo 120220519
Moving things around and deciding what to keep and what to leave behind, internally and externally.
# Packing
During the past week we rehearsed packing for the grand move, in order to see if we were in our space and weight budget. It was a nice way to conclude a process that we have been going through in the past few weeks, "minimizing" our stuff and figuring out what we really need (and what we really want to really need)
As we were going our budget a little bit, this was a good opportunity to push further and let go of some other stuff.
In parallel, we have been having a nice experience of gifting stuff to friends, finding places to donate things (e.g. hacklabs that could use electronic components), trying to sell some others, and bringing the rest to recycling places.
This is definitely a big jump into the unknown, so we are hoping we don't end up needing something that we thought we wouldn't.
In any case, doing all this brought me in contact with several past notebooks and works of mine: these were windows for me to see who I was, who I have been, and who I wanted to be.
# Unpacking
During this week, these windows-notebooks made me ponder a lot about my identity, especially about my online identity. Part of me would prefer not to, and just flow (embracing chaos and the absurd?). I'd prefer to use that time in some other way.
However, another part of me is intrigued about how I've changed, online and offline.
It seems that now I'm more conscious, compassionate, understanding, and open-minded. It seems that before I was way more sure of myself and my actions, and also more outgoing. I wasn't hesitant to start projects, to connect with people (online) or to embrace my humor. Always an introvert, though :)
I wonder if that overconfidence came from being younger or only from being more naive. Both seem difficult to revert, but probably something can be done about it.
Regarding naivete, I can identify how, when becoming more privacy-aware, I stopped using my legal name online, I deleted a lot of traces and connections, and I went "into the dark".
I can also identify how, when becoming more aware of the upcoming {collapse}, I stopped doing a lot of things that I found fun, I became somewhat cynic (despite not wanting to!), I questioned everything I was doing and being part of, I got paralyzed, and again, I went inwards, "into the dark".
Additionally, all of this got combined with becoming aware of feminism and realizing all the stupid stuff I did due to being a man. I guess I over-corrected and then I wanted to lower my voice, to not occupy any space, to stop initiating and instigating creative projects. Going into the dark.
As one can imagine, and as I realize now, thanks to a slow process that has been aided by this big change: that is not a nice way to live! And neither it's helpful, for me or for anyone!
Side note: I was a little bit hesitant to write about this, but now I'm finding it very illuminating and lighter-feeling-inducing :)
So here I am, slowly crawling outside. Slowly repeating, "my voice is important". I realize and remember, I'm part of a so-called minority, I shouldn't be the one shutting up. My voice is important. How does one gets their confidence back? How does one cultivate it? It's okay to shine.
My outline implied talking about some other personal conflicts (the performance of professionalism), but interestingly this has given me enough to process already.
Thanks for being here, dear reader, allowing all this to go outside.

View File

@ -1,32 +0,0 @@
# Closure(s) and not - biosejo 120220607
A post about some recent events, closures, new beginnings, and other reflections.
Testing, testing... We are reconnecting...
The past couple of weeks have been a time of closing cycles. We had our farewell party, and my semester of teaching creative coding ended. With it, it was also the end my two years of teaching there. I'm very grateful about these events and experiences.
Regarding paperwork, we are getting closer. It was very exciting to go to the consulate to request our visas. The idea of us moving to another continent felt even more real when going there. But we still have to wait...
Interestingly, at the beginning of this year I decided that my "word of the year" would be Patience. I decided it because I was looking for a job change and other transformations, for example regarding my personal physical training. I knew that I had to take the process slowly, calmly, with compassion. Similar to how I treated the learning processes of my students.
Due to how this Phd process started and has been happening, I have come back to the word again and again. Patience.
Regarding the program, I did submit my video entry to the Thesis Talk event. Once its online I'll share it around here.
Additionally, I have been making my 4-years long plan. It's funny because I tend to have trouble imagining that amount of time. Recently I think I've gotten more used to the idea of planning for a year. Four times that is a lot, but I'm super thankful with my advisors/directors who have been helping me with that. The word Patience comes again: it's okay (and I would say it's needed) to go slow.
My process of reading and note-taking continues. Now I'm trying to use Zim Wiki, especially because it's more lightweight and that can be definitely felt in my relatively old computer. I haven't tried it yet, but it seems that regarding mobile/Android support, I can use the Markor program
=> https://zim-wiki.org/ Zim - A Desktop Wiki
=> https://gsantner.net/project/markor.html Markor Editor
Finally, I have been thinking a lot about so-called "social media" and the presence that I want for me there. I still haven't arrived to a conclusion, and I wonder if I will, but I have been thinking about embracing abundance and letting myself shine.
Additionally, regarding my use of it, and the patterns of visiting these websites to check updates (even when most of them are in the fediverse, and not super engineeredto become addictive), I got inspired by this post by ~cblgh, that describes a setup for a "single-purpose" computer dedicated to social media. In my case, I'm attempting to use an Android device that has an OS version with some "digital wellness" features like the possibility of assigning timers to specific programs.
=> https://cblgh.org/social%20media%20computer/ social media computer - alexander cobleigh
The writing of this post had been running away from me. I'm glad to have it done now, and I don't feel bad about letting a couple of weeks slip away. That's a novelty in my case, because some other times I would have gotten a little bit intense about "losing the streak".
I feel calm, and I wish you could all see the tree-based sight I have in front of me.

View File

@ -1,22 +0,0 @@
# The other side - biosejo 120220710
Hello from the other side - these characters are now written from Madrid, Spain!
This past month was hectic: even though we felt ready, once we were faced with the surprising news of our visas being ready, we realized we still had several things to solve in Mexico! Additionally, once we arrived in Madrid, we have had another set of issues to overcome, combined with a lot of movement (walking, running, biking) and exploration. Hence, not a lot of time to sit down and write, until today.
I see people walking on the street. Everything seems "normal". This is our new normal, it seems. I'm still getting used to the idea of being so far away from everyone and everything I knew. It is kind of unbelievable: the world is indeed very big!
I'm very excited and motivated for this new stage of life!
I love that for the most part, the work I've been doing these days regarding my Computer Science and Technology PhD has happened sitting in the floor together with other people, working with paper, writing by hand. Is this some kind of dream come true?
Meanwhile, the Thesis Talk 2022 event happened: I wasn't selected for the final round this time, but my video can be found along with others in the event's site:
=> https://www.uc3m.es/doctorado/thesis-talk-2022 Thesis Talk 2022 | UC3M
=> https://media.uc3m.es/video/62a041428f4208d58e8b4570 My thesis talk video
I started working already with the aim of submitting a paper in a couple of months. It's a little bit daunting but also very exciting! I'm very curious to see how things start to fall in place during the following days and weeks.
I'm glad I have this space to share some aspects of this new experience.
See you soon!

View File

@ -1,24 +0,0 @@
# On Sticky Notes - biosejo 120220717
These days I've been working with paper, sticky notes, a lot, and I've been thinking about them. The following are some loose ideas regarding them and potential digital counterparts.
I enjoy the thought of being in a Computer Science and Engineering PhD program working with paper, sitting on the floor, writing by hand, collaborating as a group. We are gathering reflections, features, ideas, from movement-based design methods in several projects, and we are writing them in sticky notes. I like how this simple, paper-based technology can afford so many uses and re-uses, and how it can be used to organize thought spatially.
Due to their relatively fragile quality, I've been practicing my typographic skills transcribing all them into a table. This table has gotten me excited: I know and can imagine a lot of things that can be done when one has a list of strings of text. I've thought about visualizing the "sticky notes", showing or allowing for spatial arrangements, clusters, similarities, etc. Additionally, I've been thinking about a possible "mirror" representation that joins the tangible and the digital note.
I find it interesting: the arrangement of several notes on paper can be documented and read in a photo, but at the same that is not necesarily parseable (automatically?). What would it imply to parse that information? And how does one, would I, represent the corresponding data? Is it just a matter of points in space, x and y coordinates linked to a sticky note id? That can replicate the image, and can aid in re-creating the spatial relationships (what are the points closer to point "i"?), but is that the information that we want to document / convey / show at the end?
There's also the possibility of making groups, assigning tags - would that be just another extra field in the data structure? I feel this specifically is a rabbit hole regarding "information science", librarians, or something along those lines.
When creating the digital table, there was the thought: can we then re-create the sticky notes set, or can we re-print one that was lost? When transcribing we are losing some typographic information. What happens when we update a sticky note in paper? How easy it is to find the corresponding digital representation to update it as well? Seems like some text-search would be enough here. But what happens when the digital representation is updated? How would we find and update the paper version?
Would it make to have some ID system? And what about some "RFID" to locate the notes? (?) And coming back to spatial arrangements, how could we "scan" and gather the arrangement of the paper notes in order to save that data? (This is coming back to the spatial arrangement questions; what is what we'd like to save) Would having visual markers help in this scanning? And what about leveraging the advanced technologies used with so-called Augment Reality?
I feel all of these questions have been definitely been explored already (e.g. [1], [2]), but I find it interesting to be arriving at them, kind of unexpectedly. I guess my recent interests in the zettelkasten, combined with tangible computing, and now being under this new environment, are arising wanting to be (re)mixed.
=> https://www.researchgate.net/publication/221514765_Augmented_Surfaces_A_Spatially_Continuous_Work_Space_for_Hybrid_Computing_Environments [1] Augmented Surfaces: A Spatially Continuous Work Space for Hybrid Computing Environments
=> https://dynamicland.org/ Dynamicland
I'm excited to be in a place where I can contemplate these questions and do something about them. They may end up being combined with the stronger line of bodily movement in the research project!
I welcome further ideas and references regarding these questions. Feels worth it to have these thought running in the back of my mind.

View File

@ -1,15 +0,0 @@
# Movement: A personal reframing - biosejo 120220717
Renewing a focus and commitment with physical movement.
For the past years I've had several cycles of disenchantment with computers. Although nice things have come out of them, like Compudanzas, they have also represented a source of anxiety: it seems I have internalized that my way of contributing to the world, society and a solarpunk present and future *has* to be through computers. This thought has been reinforced by a way of looking to my own history, as I've been "always around computers", "always excelling at mathematical and logical thinking". "This is what I'm good at, this is where I can be most helpful". The disenchantment leaves me floating in the void.
These past few days I arrived to an interesting revelation, a reframing of this personal history. Yes, the computers always there are true, but it's also true that I've been *always moving*. Be it in triathlon, skating, cycling, running, parkour, dancing (and running and cycling and compudanzas and running :), I can look at my life and see that physical movement has been always there. Some days ago I talked with some people of my elementary school that I had lost contact with and I noticed that for them it would be pretty consistent to hear that I'm doing a PhD in Computer Science and Technology, and that I'm preparing for a running race. Everything has changed, but also nothing has changed.
I realized that yes, I might have been able to e.g. help and teach people how to program because I have more experience compared to them. But in a similar way, I could guide or share with other people towards and through physical movement. I have a lot of experience, even if I'm not a "pro". (I've never held a position of "professional programmer", and yet I could be there for others).
I see moving in community as something important. We can learn a lot about ourselves and the world. Additionally, moving and having fun is something I want for a solarpunk present and future. I can reframe movement as my focus.
Something interesting is that I think the new frame is "backwards compatible" with what I'm doing already. The movement-based core of my PhD and what I'm and will be doing there is a possible way to *move with others*. Another possible way comes from the embodied activities / games / dances from Compudanzas. And as a note to self, there are multiple other ways as well, and I don't need to "coat" them with computation so that I feel they are valid when coming from me. I have done it already, I'm not sure what got me blocked.
I'm happy to have arrived at this perspective, and I'm happy to share it. I'm feeling very good and excited now :)

View File

@ -1,7 +0,0 @@
# queso mango
a handwritten, personal website.
=> https://quesomango.neocities.org/ queso mango 🥭
algunas notas anteceden a este sitio y se trajeron para acá. eventualmente algunas se regresaron a solo estar allá.

View File

@ -1,3 +0,0 @@
# running
page has been moved to el {queso mango}.

View File

@ -1,52 +0,0 @@
# sejo
instigator of compudanzas / persona instigadora de compudanzas.
# about
queer nerd researching playful movement and computing; flowing with curiosity and patience.
i'm interested in exploring and sharing digital technologies and related knowledge that have the aim of being empowering, benign and joyful.
for me, that usually implies experimenting and learning with simple tech, low-tech, and/or already-existing tech: i identify with the values of {permacomputing}.
for many applications i prefer paper over screens.
i enjoy {running}, cycling, skating and walking outdoors, as well as cooking and eating plant-based food (see {recetas}.)
i am usually amazed by emergent complexity in its different expressions on life and the universe.
# contact
## e-mail
sejo at posteo dot net
=> ./llave_sejo.asc [pgp key]
## xmpp
sejo at archipielago.uno
omemo keys:
```
dino: 15a8d9ad 5e43825d c7dee5ea 60826c55 8417befa 02cfd34f c1d352cd 73f4183c
conversations: E4CE63D9 8E9EAE14 A093A816 C3209FBD 25E14249 57D411A8 CD46D84C F2EEC674
```
# social media
## fediverse
=> https://merveilles.town/@sejo @sejo at merveilles.town
=> https://mar.archipielago.uno/sejo @sejo at mar.archipielago.uno
## ssb
via {la sala}:
=> https://sala.compudanzas.net/alias/sejo sejo
```
@y+CywqbY5If181KcX87nQLh4tqAGllkt3lvoY0f+zy0=.ed25519
```
## other
i might be present in commercial social networks in order to connect with people that haven't done their leap yet :)

View File

@ -55,17 +55,23 @@ function appendNav( t ){
}
function wikiLink( t ){
out = ""
while(match(t,/\{[^{}]+\}/)){ # has {key}
nombre = substr(t, RSTART+1, RLENGTH-2)
link = nombre2Link( nombre, "_" )
enlace = "<a href='./" link ".html'>" nombre "</a>"
out = out substr(t, 1, RSTART-1) enlace
i = match( t, /{.+}/)
if ( i ){
ifinal = index(t, "}") # índice del } final
t = substr(t, RSTART+RLENGTH)
prev = substr(t, 1, i-1) # string previa al link
# link = substr(t, i, ifinal-i+1) # {link}
nombre = substr(t, i+1, ifinal-i-1) # link
link = nombre
nombre = nombre2Link( nombre, "_" )
post = substr(t, ifinal+1) # string posterior
return prev "<a href='./" nombre ".html'>" link "</a>" post
}
else{
return t
}
out = out t "\n"
return out
}
function nombre2Link( t, r ){ # convierte un nombre con espacios, a uno con r (e.g. "_"
@ -103,8 +109,8 @@ NR == 1{
sub(/^\+[[:blank:]]+/,""){ # include literal
# sub(/^+ /,"",$0) # elimina el +
/^\+ /{ # include literal
sub(/^+ /,"",$0) # elimina el +
appendContenido( $0 )
next
}
@ -177,8 +183,8 @@ sub(/^\+[[:blank:]]+/,""){ # include literal
sub(".gmi$",".html",$1)
# quita { }
sub(/\{/,"",texto)
sub(/\}/,"",texto)
sub("{","",texto)
sub("}","",texto)
# crea link <a>
appendContenido("<p><a href='"$1"' class=arrow>"texto"</a></p>")
@ -197,7 +203,7 @@ sub(/^\+[[:blank:]]+/,""){ # include literal
next
}
/^\* /{ # lista
/^* /{ # lista
if(!modo_pre){
if(!modo_lista){ # inicia la lista
if(modo_parrafo){
@ -207,10 +213,8 @@ sub(/^\+[[:blank:]]+/,""){ # include literal
modo_lista = 1
appendContenido( "<ul>" )
}
gsub("<","\\&lt;",$0)
gsub(">","\\&gt;",$0)
sub(/\*[[:blank:]]+/,"<li>",$0)
sub(/$/,"</li>",$0)
sub("*[[:blank:]]+","<li>",$0)
sub("$","</li>",$0)
appendContenido( wikiLink($0) )
}
else
@ -348,22 +352,20 @@ END{
print "<footer>"
# footer with filename:
sub("tmp/","",FILENAME)
if( FILENAME !~ /^home/ ){
print "<p>"
print "<a href='https://tildegit.org/sejo/compudanzas/src/branch/main/src/" FILENAME "' rel='external noreferrer noopener' target=_blank>source file</a> &mdash;"
print "most recent update: "
print "<time datetime='"fecha"'>1" fecha"</time> &mdash; "
sub(".gmo",".gmi",FILENAME)
print "<a href='gemini://compudanzas.net/" FILENAME "' rel='external noreferrer noopener' target=_blank>view in gemini://</a>"
print "</p>"
}
print "<hr/>"
print "<p>"
print "<a href='https://tildegit.org/sejo/compudanzas/src/branch/main/src/" FILENAME "' rel='external noreferrer noopener' target=_blank>source file</a> &mdash;"
print "most recent update: "
print "<time datetime='"fecha"'>1" fecha"</time> &mdash; "
sub(".gmo",".gmi",FILENAME)
print "<a href='gemini://compudanzas.net/" FILENAME "' rel='external noreferrer noopener' target=_blank>view in gemini://</a>"
print "</p><hr/>"
# links:
print "<p><a href='./about.html'>about</a> <a href='./contact.html'>contact</a> <a href='./support.html'>support</a></p>"
# print "<p><a href='https://webring.xxiivv.com/#random' target='_blank' title='webring' rel='external noreferrer noopener'>webring</a>"
print "<p><a class='icon' href='./home.html' title='" sitio "'><img src='./img/iconocompudanzas_32.png' width=32 height=32 alt='icono de compudanzas'/></a>"
print "<a href='https://webring.xxiivv.com/#random' target='_blank' title='webring' class='icon'><img src='./img/icon.black.svg' width='32' height='32' alt='xxiivv webring'/></a></p>"
print "<a href='https://webring.xxiivv.com/#random' target='_blank' title='webring'><img src='./img/icon.black.svg' width='32' height='32' alt='xxiivv webring'/></a></p>"
print "<p><a href='https://post.lurk.org/@compudanzas' target='_blank' title='mastodon' rel='external me noreferrer noopener'>@compudanzas</a></p>"
print "<p>texts, images, and code are shared with the <a href='https://wiki.p2pfoundation.net/Peer_Production_License' target=_blank rel='external noreferrer noopener' title='Peer Production License'>peer production license</a></p>"
print "</footer>"
print "</body>"

View File

@ -1,563 +0,0 @@
meta = {
domain = "compudanzas.net",
title = "compudanzas",
description = "explorations of computing at a human scale",
fecha = os.date("%Y-%m-%d")
}
webdir = "web" -- web output directory
gemdir = "gem" -- gemini output directory
templates = {
webEn = {
header = { path = "pageheader.html", template = ""},
footer = { path = "pagefooter.html", template = ""},
incoming = { path = "pageincoming.html", template = ""}
},
webEs = {
header = { path = "pageheader_es.html", template = ""},
footer = { path = "pagefooter_es.html", template = ""},
incoming = { path = "pageincoming_es.html", template = ""}
},
gemEn = {
header = { path = "pageheader.gmi", template = ""},
footer = { path = "pagefooter.gmi", template = ""},
incoming = { path = "pageincoming.gmi", template = ""}
},
gemEs = {
header = { path = "pageheader.gmi", template = ""},
footer = { path = "pagefooter_es.gmi", template = ""},
incoming = { path = "pageincoming_es.gmi", template = ""}
},
}
pages = {}
function slugify( s )
return (string.gsub( s, "%s", "_" ))
end
function spacify( s ) -- opposite of slugify (?)
return (string.gsub( s, "_", " "))
end
function fillTemplate( template, pagemeta )
return ( string.gsub( template, "({.-})", function (key)
local var = string.sub(key,2,-2) -- remove { }
return meta[var] or pagemeta[var]
end) )
end
function getHeader( line ) -- returns title, level
local head, title = string.match(line,"^(#+)%s*(.-)$")
return title, #head
end
function getLink( line ) -- returns dest, text
return string.match( line, "^=>%s*(%S-)%s+(.-)$")
end
function isImagePath( text )
return text:match(".jpg$") or text:match(".gif$") or text:match(".png$")
end
function sanitize( line ) -- replace relevant html entities
return line:gsub("<","&lt;"):gsub(">","&gt;")
end
function closeTags()
local close = ""
if flags.list then
close = "</ul>\n"
flags.list = false
elseif flags.p then
close = "</p>\n"
flags.p = false
elseif flags.gallery then
close = "</gallery>\n"
flags.gallery = false
end
return close
end
function insertIncoming( pagename, incomingname )
if incomingname == "pages" then return false end
local incoming = pages[pagename].incoming
for i = 1, #incoming do
if incoming[i] == incomingname then
return false
end
end
table.insert( incoming, incomingname)
return true
end
function firstPass()
-- load templates
for _,t in pairs(templates) do
-- read templates
for k,subtemp in pairs( t ) do
local f = assert(io.open(string.format("templates/%s",subtemp.path),"r"))
subtemp.template = f:read("a")
f:close()
end
end
-- for each page:
-- convert gmo to gmi and html
-- and calculate incoming links
for name,page in pairs(pages) do
local pagemeta = pages[name]
local gmopath = string.format("src/%s.gmo", pagemeta.slug)
-- open file
local f = assert( io.open(gmopath, "r") )
-- initialize flags
flags = { list = false, pre = false , p = false, gallery = false }
-- table to store the lines to write to file
local lines = { web = {}, gem = {} }
local navlines = { "<ul>" }
-- convert one line at a time
local count = 1
for line in f:lines() do
-- the output line:
local out = { gem = line, web = nil}
if count == 1 then -- extract title
pagemeta.ptitle = string.match(line, "^#+%s*(.-)$")
elseif count == 2 then -- language
if line == "" then
pagemeta.lang = "en,es-MX" -- default
else
local langformat = "^lang=(%a+)"
local tradformat = "%s(%a+)->{(.-)}$"
pagemeta.lang = string.match(line,langformat)
local trlang, trname = string.match(line, tradformat)
if trlang ~= nil then
local ttext = "in english:"
if string.match( trlang, "^es" ) then
ttext = "en español:"
end
local weblink = string.format(
"<a href='./%s.html' rel='alternate'>%s</a>",
pages[ trname ].slug, trname )
local gemlink = string.format(
"=> ./%s.gmi %s",
pages[ trname ].slug, trname )
pagemeta.webtranslation = string.format(
"<p id='translation'>%s %s</p>",
ttext, weblink )
pagemeta.gemtranslation = string.format(
"%s\n%s\n", ttext, gemlink)
end
end
elseif count == 3 then -- obtain page description
pagemeta.pdescription,n = string.gsub(line,"[{}]","")
end
if count <=2 then goto nextline end -- skip normal processing for the first lines
-- CONVERT LINES
if string.match( line, "^```") then -- preformated
if flags.pre then
out.web = "</pre>"
else
out.web = "<pre>"
end
flags.pre = not flags.pre
goto insert -- skip more checks
end
if flags.pre then
out.web = sanitize( line )
goto insert
end
if string.match( line, "^%+") then -- + append html
out.gem = nil
out.web = string.sub(line,3) -- remove "+ "
elseif string.match( line, "^&") then -- & append gemtext
out.gem = string.sub(line,3) -- remove "& "
elseif string.match( line, "^$") then -- empty line
out.web = closeTags()
elseif string.match( line, "^#+") then -- HEADERS
local title, level = getHeader( line )
-- add h1 to navigation
if level==1 then
table.insert(navlines,string.format("<li><a href='#%s'>%s</a></li>",title,title))
end
local close = closeTags()
out.web = string.format("%s<h%d id='%s'>%s</h%d>",close,level,title,title,level)
elseif string.match( line, "^>") then -- BLOCKQUOTE
local close = closeTags()
out.web = string.format("%s<blockquote>%s</blockquote>", close, string.sub(line,3))
elseif string.match( line, "^%*") then -- LIST ITEMS
-- TODO reuse {wikilinks} code from paragraphs
-- TODO apply the sanitization to everything?
-- web
local strippedline = sanitize(string.sub(line, 3)) -- remove "* "
local webtext = string.gsub( strippedline, "{(.-)}", function (wikiname)
return string.format("<a href='./%s.html'>%s</a>", pages[wikiname].slug, wikiname)
end)
local li = string.format("<li>%s</li>", webtext)
if not flags.list then -- start list
out.web = string.format("<ul>\n%s", li)
flags.list = true
else -- append list element
out.web = li
end
-- gem
local gemlinks = {}
local gemline = string.gsub( line, "{(.-)}", function (wikiname)
table.insert(gemlinks, string.format("=> ./%s.gmi %s",pages[wikiname].slug, wikiname))
return wikiname
end)
out.gem = gemline
-- append links if there were any
if #gemlinks > 0 then
out.gem = out.gem.."\n"..table.concat(gemlinks,"\n")
end
elseif string.match( line, "^=>") then -- LINKS
local dest, text = getLink( line )
if string.match( dest, "^%./") then --local links
local cleantext = string.match( text, "^{(.-)}$" ) -- see if wikilink and clean
local htmldest = string.gsub( dest, "gmi", "html" )
if cleantext ~= nil then -- wikilink
local close = closeTags()
out.web = string.format("%s<p><a href='%s' class='arrow'>%s</a></p>",close,htmldest,cleantext)
out.gem = string.format("=> %s %s",dest,cleantext)
elseif isImagePath( dest ) then -- images
local img = string.format('<img src="%s" alt="%s" loading="lazy"/>',dest,text)
if not flags.gallery then
local close = closeTags()
out.web = string.format("%s<gallery>\n%s", close, img)
flags.gallery = true
else
out.web = img
end
else -- other files
local close = closeTags()
out.web = string.format("%s<p><a href='%s'>%s</a></p>",close,dest,text)
end
else -- external links
out.web = string.format('<p><a href="%s" rel="external noreferrer noopener" target="_blank" class="arrow">%s</a></p>', dest, text)
end
else -- PARAGRAPHS
-- web
-- search and replace wikilinks
local webline = string.gsub( line, "{(.-)}", function (wikiname)
return string.format("<a href='./%s.html'>%s</a>", pages[wikiname].slug, wikiname)
end)
if not flags.p then
out.web = string.format("<p>%s", webline)
flags.p = true
else
out.web = string.format("<br/>\n%s",webline)
end
-- gem
local gemlinks = {}
local gemline = string.gsub( line, "{(.-)}", function (wikiname)
table.insert(gemlinks, string.format("=> ./%s.gmi %s",pages[wikiname].slug, wikiname))
return wikiname
end)
out.gem = gemline
-- append links if there were any
if #gemlinks > 0 then
out.gem = out.gem.."\n"..table.concat(gemlinks,"\n")
end
end -- paragraphs
::insert:: -- insert line in table
for k,l in pairs(out) do
if l ~= nil then
table.insert( lines[k], l )
end
end
-- skip incoming links calculation if <pre> mode
if flags.pre then goto nextline end
-- calculate incoming links from outgoing
for outname in string.gmatch( line, "{([^ ]?.-[^ ]?)}" ) do
insertIncoming( outname, name )
end
::nextline::
count = count + 1
end -- end for line in f:lines()
-- finalize html
local close = closeTags()
if isPre then
table.insert( lines.web, "</pre>" )
elseif close~="" then
table.insert( lines.web, close )
end
table.insert( navlines, "</ul>" )
pagemeta.navcontent = table.concat( navlines, "\n" )
-- set templates
if string.match( pagemeta.lang, "^en" ) then
pagemeta.outs.web.templates = templates.webEn
pagemeta.outs.gem.templates = templates.gemEn
else
pagemeta.outs.web.templates = templates.webEs
pagemeta.outs.gem.templates = templates.gemEs
end
-- fill templates and write results
for key, out in pairs(pagemeta.outs) do
local fo = assert( io.open( out.path, "w" ) )
fo:write( fillTemplate(out.templates.header.template, pagemeta) )
fo:write( table.concat( lines[key],"\n" )) -- content
fo:write( "\n" )
fo:close()
end
-- close source file
f:close()
end
end
function secondPass() -- write incoming links and footer
for name,page in pairs(pages) do
local pagemeta = page
local doIncoming = true
if #pagemeta.incoming > 0 then
local gemlines = {}
local weblines = { "<ul>" }
-- format list of incoming links
for i = 1, #pagemeta.incoming do
name = pagemeta.incoming[i]
slug = pages[name].slug
table.insert( gemlines, string.format("=> ./%s.gmi %s",slug,name) )
table.insert( weblines, string.format("<li><a href='./%s.html'>%s</a></li>",slug,name) )
end
table.insert(weblines,"</ul>")
page.gemincoming = table.concat( gemlines, "\n" )
page.webincoming = table.concat( weblines )
else
doIncoming = false
print( string.format("{%s} is an orphan!", name) )
end
-- fill incoming and footer templates and write results
for key, out in pairs(pagemeta.outs) do
local fo = assert( io.open( out.path, "a" ) )
if doIncoming then
fo:write( fillTemplate(out.templates.incoming.template, pagemeta) )
end
fo:write( fillTemplate(out.templates.footer.template, pagemeta) )
fo:close()
end
end
end
function initPageMetadata( name, date ) -- return a table with metadata
local meta = {
incoming = {},
slug = slugify(name), name = name,
ptitle = "", pdescription = "",
updatedate = date,
navcontent = "",
gemincoming = "", webincoming = "",
gemtranslation = "", webtranslation = ""
}
meta.outs = {
web = { path = string.format("%s/%s.html", webdir, meta.slug) },
gem = { path = string.format("%s/%s.gmi", gemdir, meta.slug) }
}
return meta
end
function genIndex()
local indexpath = "src/pages.gmo"
-- initialize and open index file
os.execute(string.format("cp templates/index.gmi %s",indexpath))
local index = assert( io.open(indexpath,"a" ) )
-- get gmo files in chronological order
local gmofiles = io.popen("ls -to --time-style=+%F src/*gmo")
local count = 0
for filename in gmofiles:lines() do
local date,basename = string.match(filename,"^.+%s(.-)%ssrc/(.-).gmo$")
local name = spacify(basename)
-- create an entry for each file
if name ~= "pages" then
local entry = string.format("=> ./%s.gmi {%s}\n", basename, name)
index:write(entry)
end
-- also initialize each name in the pages table
-- initialize page metadata
pages[ name ] = initPageMetadata( name, date )
count = count + 1
end
gmofiles:close()
index:close()
return count
end
function genLog()
-- generate the following log files:
-- * twtxt gemini and web
-- * atom feed gemini and web
-- * gmo log
-- * gmisub
local logsrc = assert( io.open( "src/log.txt", "r" ) )
local logs = {
gemtw = { path = string.format("%s/tw.txt",gemdir), head="templates/twheader.txt" },
webtw = { path = string.format("%s/tw.txt",webdir), head="templates/twheader.txt" },
gmolog = { path = "src/log.gmo", head="templates/logheader.gmi" },
gematom = { path = string.format("%s/atom.xml",gemdir), head="templates/gematomheader.txt" },
webatom = { path = string.format("%s/atom.xml",webdir), head="templates/webatomheader.txt" },
gemfeed = { path = string.format("%s/feed.gmi",gemdir), head="templates/feedheader.gmi" }
}
-- create and open logs
for _,log in pairs(logs) do
os.execute(string.format("cp %s %s",log.head,log.path))
log.f = assert( io.open( log.path, "a" ) )
end
logs.gematom.f:write(string.format("<updated>%sT12:00:00Z</updated>\n",meta.fecha))
logs.webatom.f:write(string.format("<updated>%sT12:00:00Z</updated>\n",meta.fecha))
-- process each line of log.txt
for line in logsrc:lines() do
local pattern = "^(.-)%s(.-)%s{(.-)}$"
local timestamp, text, wikilink = string.match(line,pattern)
local slug = slugify(wikilink)
local date = string.sub(timestamp,1,10) -- YYYY-MM-DD
-- gmo log
local gmoformat = "+ <article>\n## %s\n%s\n=> ./%s.gmi {%s}\n+ </article>\n"
logs.gmolog.f:write(string.format(gmoformat, date, text, slug, wikilink))
-- gmi sub
local gmisubformat = "=> ./%s.gmi %s %s\n"
logs.gemfeed.f:write(string.format(gmisubformat, slug, date, text))
-- twtxt
local weburl = string.format("https://%s/%s.html",meta.domain,slug)
local gemurl = string.format("gemini://%s/%s.gmi",meta.domain,slug)
local twtxtformat = "%s\t%s | %s\n"
logs.webtw.f:write(string.format(twtxtformat, timestamp, text, weburl))
logs.gemtw.f:write(string.format(twtxtformat, timestamp, text, gemurl))
-- url encode
local encodedslug = slug:gsub("á","%%C3%%A1"):gsub("é","%%C3%%A9"):gsub("í","%%C3%%AD"):gsub("ó","%%C3%%B3"):gsub("ú","%%C3%%BA"):gsub("ñ","%%C3%%B1")
-- atom
local weburldate = string.format("https://%s/%s.html#%s",meta.domain,encodedslug,date)
local atomformat = [[
<entry>
<title>%s</title>
<updated>%s</updated>
<link rel='alternate' href='%s'/>
<id>%s</id>
</entry>
]]
logs.webatom.f:write(string.format(atomformat, text, timestamp, weburldate, weburldate))
logs.gematom.f:write(string.format(atomformat, text, timestamp, gemurl, gemurl))
end
--close logs
logs.webatom.f:write("</feed>\n")
logs.gematom.f:write("</feed>\n")
for _,log in pairs(logs) do
log.f:close()
end
logsrc:close()
end
-- THE SCRIPT
-- create directories
os.execute(string.format("mkdir -p %s/static %s/img %s/img",webdir,webdir,gemdir))
print(meta.fecha)
-- clean up
print("limpiando archivos previos...")
os.execute(string.format('find %s %s -regex ".+.\\(gmi\\|html\\)$" -exec rm {} +',webdir,gemdir))
-- copy images
print("copiando imágenes y otros archivos...")
os.execute( string.format("find src/img/ -type f -exec cp -vut %s/img/ {} +",webdir))
os.execute( string.format("find src/img/ -type f -exec cp -vut %s/img/ {} +",gemdir))
-- copy stylesheet and misc files
os.execute(string.format("cp -vu templates/estilo.css %s/static/",webdir))
local miscfiles = { "src/llave_sejo.asc" }
for k = 1, #miscfiles do
os.execute(string.format("cp -vu %s %s/", miscfiles[k], webdir))
os.execute(string.format("cp -vu %s %s/", miscfiles[k], gemdir))
end
-- generate log files
print("generando log...")
genLog()
-- generate index
print("generando índice de páginas...")
local n = genIndex()
-- start first pass
-- converting from gmo to gmi and html and calculating incoming links
print(string.format("convirtiendo %d páginas...",n))
firstPass()
-- second pass, write incoming links
print("escribiendo incoming links...")
secondPass()
-- update index files with home
os.execute("cp web/home.html web/index.html")
os.execute("cp gem/home.gmi gem/index.gmi")
print("listx!")

View File

@ -5,12 +5,12 @@ mkdir -p gem
mkdir -p tmp
fecha=$(date +%F)
fecha=$(date --rfc-3339=date)
echo "empezando conversión, estamos en ${fecha}"
echo "revisando y copiando imágenes..."
for f in $(find src/ -regex ".*\(jpg\|png\|gif\|svg\)")
for f in $(find src/ -regextype awk -regex ".*(jpg|png|gif|svg)")
do
path="web/${f#src/}" # quita el prefijo de src/ y agrega web/
gempath="gem/${f#src/}" # quita el prefijo de src/ y agrega gem/
@ -59,7 +59,7 @@ do
htmlpath="web/${path%gmo}html" # agrega "web/" y cambia el sufijo
gempath="gem/${path%gmo}gmi" # agrega "gem/"
fecha=$(date -r src/$path +%F)
fecha=$(date -r src/$path --rfc-3339=date)
# haz la conversión
awk -v fecha=$fecha -f gemtext2html.awk $f > $htmlpath

View File

@ -23,7 +23,7 @@ BEGIN{
FS = "\t"
"date +%F"| getline fecha
"date --rfc-3339=date"| getline fecha
system("cp " loggmoheader " " loggmopath)
system("cp " gematomheader " " atomgempath)
@ -60,9 +60,9 @@ BEGIN{
print "<title>" $2 "</title>" >> atomgempath
print "<updated>" $1 "</updated>" >> atomgempath
if ( match($3, /\{.+\}/) ){ # si hay wikilink
gsub(/\{/,"",$3)
gsub(/\}/,"",$3)
if ( match($3, /{.+}/) ){ # si hay wikilink
gsub("{","",$3)
gsub("}","",$3)
filename = $3
gsub(" ","_",filename)

View File

@ -11,7 +11,7 @@ color green "^=>.+$"
# pre
color blue start="```" end="```"
# list
color brightred "^\*"
color bold,black "^\*"
# gmo
# wikilinks
@ -19,4 +19,4 @@ color yellow "\{(\w| )+\}"
# htmlonly
color magenta "^\+.+$"
# gemtextonly
color red "^&.+$"
color lightred "^&.+$"

View File

@ -3,7 +3,7 @@ function nombre2Link( t, r ){ # convierte un nombre con espacios, a uno con r (e
return t
}
/^\+ /{ # literal html
/^+ /{ # literal html
next # salta la línea
}
@ -21,20 +21,16 @@ function nombre2Link( t, r ){ # convierte un nombre con espacios, a uno con r (e
# si tienen sintaxis de wikilink, y no son líneas de enlace, agrega el link
# (el % es por las líneas de uxn jaja)
/^[^=%]*{.+}/{
enlaces = ""
t = $0
while(match(t,/\{[^{}]+\}/)){ # has {key}
nombre = substr(t, RSTART+1, RLENGTH-2)
link = nombre2Link( nombre, "_" )
enlace = "=> ./" link ".gmi " nombre "\n"
enlaces = enlaces enlace
t = substr(t, RSTART+RLENGTH)
}
i = match( $0, /{.+}/)
ifinal = index($0, "}") # índice del } final
link = substr($0, i, ifinal-i+1) # {link}
nombre = substr($0, i+1, ifinal-i-1) # link
filename = nombre2Link( nombre, "_" )
gsub(/[{}]/,"")
print $0
gsub(/\n$/,"",enlaces)
print enlaces
print "=> ./" filename ".gmi " nombre
next
}
@ -51,11 +47,10 @@ END{
print ""
sub("tmp/","",FILENAME)
if(FILENAME != "home.gmo"){
print "updated on 1" fecha
print "most recent update on: 1" fecha
print "=> https://tildegit.org/sejo/compudanzas/src/branch/main/src/" FILENAME " source file"
}
print ""
print "=> ./home.gmi compudanzas"
print "=> ./contact.gmi contact"
print "=> ./home.gmi compudanzas home"
print "=> https://wiki.p2pfoundation.net/Peer_Production_License text, images, and code are shared with the peer production license"
}

70
links.py Normal file
View File

@ -0,0 +1,70 @@
import re
import os
import shutil
def filename2Wikilink( s ):
return '{' + s.replace('_',' ').replace('.gmo','') + '}'
def wikilink2Filename( s, ext='.gmi' ):
return s.strip("{}").replace(' ','_') + ext
os.chdir('src/')
incoming = {}
for filename in os.listdir():
if filename.endswith('.gmo'):
# copy to tmp
shutil.copy(filename, '../tmp/'+filename)
# if filename != 'pages.gmo' and filename != 'index.gmo':
if filename != 'pages.gmo':
# convert filename to wikilink
wikilink=filename2Wikilink(filename)
if wikilink not in incoming:
incoming[wikilink] = set()
# open file and search for all outgoing links
file = open(filename)
pre_mode = False
for line in file:
if re.match("```",line) != None: # toggle preformatted mode
pre_mode = not pre_mode
if pre_mode: # skip preformatted mode
continue
m=re.search("\{.+\}",line)
if m:
match = m.group(0) # get matched string
if match not in incoming: # create a new set for that page
incoming[match] = set()
# add this file
incoming[match].add(wikilink)
file.close()
os.chdir('../tmp/')
# remove incoming links for:
# incoming.pop('{pages}')
incoming.pop('{home}')
#incoming.pop('{license}')
for key,links in incoming.items():
# get filename for key
filename = wikilink2Filename(key,'.gmo')
# print(key)
# open file in append mode
file = open(filename, 'a')
if len(links):
# write incoming links
# print( '{} incoming links\n'.format( len(links) ) )
file.write("\n\n# incoming links\n")
for link in links:
gemlink = '=> ./{} {}'.format(wikilink2Filename(link), link)
# print(gemlink)
file.write(gemlink+"\n")
else:
print( '{}: orphan\n'.format(key) )
file.write("\n\nno incoming links\n")
file.close()

View File

@ -4,6 +4,5 @@ updates of the project
=> ./tw.txt [twtxt]
=> ./atom.xml [atom feed]
& => ./feed.gmi [gemsub feed]
# entries

View File

@ -1,28 +1,18 @@
# about
lang=en es->{acerca}
compudanzas is a research project exploring alternative modes of learning and creating computation.
we attempt to transition from a logic of productivity and efficiency, and circuits that destroy life, to dances, rituals, and other types of seemingly useless computers!
compudanzas is a research project exploring alternative modes of learning and creating computation.
en español: {acerca}
we reimagine computing and its implications.
we attempt to transition from a logic of productivity and efficiency, and circuits that destroy life, to dances, rituals, and other types of seemingly useless computers!
we move calmly, patiently, and with curiosity.
we identify with the ideas of {permacomputing} and computing within limits.
=> ./img/foto_laconsagracion_playa.jpg photo of the rite of computing: there is a wiggly row of shapes in the floor, each of them composed of small blocks of wood. a person is crouching, building one of these shapes. other two people are watching, sitting in the floor. there are some cardboard shapes with symbols, also in the floor.
# research
{las danzas} is our main line of exploration, but we also design and develop {coloring computers}, and we investigate {beans computing}.
we love to share with others in the form of {tutorials} or {talks and workshops}.
everything here is dedicated to the {public domain}.
whenever we write software, we try to do it at a {low-level}.
we tend to write some {poetry} related to these interests, some {thoughts} from our first-person perspective, and we also have a couple of {publications}. furthermore, we have shared some {videos}.
the {txiemonks} describe a possible vision for the project.
=> ./img/foto_laconsagracion_playa.jpg photo of the rite of computing: there is a wiggly row of shapes in the floor, each of them composed of small blocks of wood. a person is crouching, building one of these shapes. other two people are watching, sitting in the floor. there are some cardboard shapes with symbols, also in the floor.
# mission
@ -40,29 +30,51 @@ we see the project existing in these three dimensions:
* pedagogic: can we guide others to learn in a critical and embodied way about the fundamentals of computers and digital technologies?
* performative: can we play with and inspire through explorations of emerging complexity?
* speculative: can we use this practice to imagine alternative present-futures?
* speculative: can we use this practice to imagine alternative present-futures? (see {txiemonks})
=> ./img/foto_laconsagracion_04.jpg photo of pieces of wood in the floor, with some hands manipulating them
# research
{las danzas} is our main line of exploration.
we also design and develop {coloring computers}.
we love to share with others:
=> ./talks_and_workshops.gmi {talks and workshops}
=> ./tutorials.gmi {tutorials}
whenever we write software, we try to do it at a {low-level}.
and we tend to write some {poetry} related to these interests.
see the {log} for updates in the project.
see the {roadmap} for updates that want to happen.
we are a billingual project; for the moment some texts are in spanish and some others in english only.
=> ./references.gmi {references}
# support
{support} us and help us achieve the goal of having this dream project as our main activity
=> https://www.patreon.com/compudanzas support compudanzas on patreon
=> https://ko-fi-com/compudanzas support compudanzas on ko-fi
# meta
this {wiki} is always under construction.
this {wiki} is always under construction.
it exists in the web and in the {gemini} protocol:
=> https://compudanzas.net/ compudanzas (web)
=> gemini://compudanzas.net/ compudanzas (gemini)
we are a project based on {bilingüismo}; for the moment some texts are in spanish and some others in english only.
you can see the {log} for updates in the project, the {roadmap} for updates that want to happen, or the index of all {pages} in the site.
we are collecting a list of many of our {references}.
visit the index of all {pages} in the site.
# contact
find here different means of {contact}.
# support
{support} us and help us achieve the goal of having this dream project as our main activity!
=> ./contact.gmi {contact}

View File

@ -1,14 +0,0 @@
# academic life
some notes on my academic status (?) and reflections regarding its relationship with compudanzas.
I'm currently an academic researcher: a PhD student and predoctoral researcher in a Computer Science and Technology program. In there, my work can be classified under the terms of Human-computer interaction (HCI), interaction design, embodied/soma design, and wearable electronics.
My PhD project was handed down to me, as it seems to be the custom around here. In principle it's expected I develop it and not pivot to something entirely different, especially because my income and immigration status depend on it. That might be read as dire, but so far it's been alright. I have learned a lot and I have enjoyed the experience. I feel I've grown as a person by encountering and overcoming situations I'd have thought were above me.
Although there are many possible intersections between the PhD project and compudanzas, I decided to maintain them at a relatively safe distance. It seemed I didn't want to sacrifice the autonomy that I felt regarding compudanzas. Additionally, I wanted to advance my PhD project as it is, for practical reasons and also allowing myself some naïveté. This has implied I've spent a considerable amount of energy trying to keep the projects apart, mostly in the form of "not doing a lot with compudanzas". I realize that to some extent I wanted to keep compudanzas as something existing by itself, in the dualist world of the Ideas (?). Because of the recent research I've been doing, I can see the paradox now: I wanted to keep compudanzas "disembodied"!
After a year-long (or more) struggle I can see that it makes more sense (for everyone, myself very included), to not deny my current context, and to actually embrace it and share it. There are many ways that my PhD research can inform compudanzas but I blocked them before because I considered the projects as "something different".
I'm curious to see what happens when I let myself flow with acceptance. So far, starting the section on {thoughts} was an effect of this realization.

View File

@ -1,7 +1,9 @@
# acerca
lang=es en->{about}
compudanzas es un proyecto creativo de investigación que explora formas alternativas de aprender y hacer cómputo.
in english: {about}
reimaginamos la computación y sus implicaciones.
tratamos de transicionar desde una lógica de productividad y eficiencia, y circuitos que destruyen vida, hacia danzas, rituales, y otros tipos de computadoras aparentemente inútiles.
@ -12,26 +14,6 @@ nos identificamos con las ideas del {permacomputing}.
=> ./img/foto_laconsagracion_playa.jpg foto de la consagración de la computadora: hay una fila ondulada de figuras en el piso, cada una compuesta de pequeños bloques de madera. una persona está agachada, construyendo una de estas figuras. otras dos personas observan sentadas en el suelo. hay algunas piezas de cartón con símbolos también en el suelo.
# investigación
nuestra principal línea de exploración son {las danzas}, pero también diseñamos y desarrollamos {coloring computers}, y exploramos {cómputo frijol}.
¡nos encanta compartir! ya sea en tutoriales o pláticas y talleres.
=> ./talks_and_workshops.gmi {talks and workshops}
=> ./tutorials.gmi {tutorials}
todo aquí está dedicado al {dominio público}.
cuando escribimos software intentamos hacerlo siguiendo el {s-camino}, haciéndolo a un bajo nivel de abstracción.
tendemos a escribir poesía/{poetry} relacionada a estos intereses, pensamientos/{thoughts} en primera persona, y también tenemos algunas publicaciones:
=> ./publications.gmi {publications}
también, hemos compartido algunos {videos}.
les {txiemonks} describen una posible visión que nos convoca.
# misión
agrandamos a escala-humana y alentamos a velocidad-humana los procesos que dan paso a lo que se entiende como computación.
@ -42,16 +24,48 @@ a través de nuestros experimentos nos preguntamos: ¿qué pasa cuando las compu
¿cuál puede ser el rol de computadoras aparentemente inútiles, no electrónicas, muy lentas, a escala humana, en un mundo que parece estar en colapso?
¿son materiales didácticos alternativos y empoderadores? ¿{performances}? ¿puzzles? ¿pasatiempos? ¿trucos de magia?
¿son materiales didácticos alternativos y empoderadores? ¿{performances}? ¿puzzles? ¿pasatiempos? ¿trucos de magia?
concebimos al proyecto existiendo en estas tres dimensiones:
* pedagógica: ¿podemos guiar a otras a aprender de manera crítica los fundamentos de las computadoras y las tecnologías digitales?
* performática: ¿podemos jugar con e inspirar a través de exploraciones de complejidad emergente?
* especulativa: ¿podemos utilizar esta práctica para imaginar y realizar presentes-futuros alternativos?
* especulativa: ¿podemos utilizar esta práctica para imaginar y realizar presentes-futuros alternativos? (ver {txiemonks})
=> ./img/foto_laconsagracion_04.jpg foto de piezas de madera en el suelo, con algunas manos manipulándolas
# investigación
nuestra principal línea de exploración son {las danzas}.
también diseñamos y desarrollamos {coloring computers}.
nos encanta compartir:
=> ./talks_and_workshops.gmi {talks and workshops}
=> ./tutorials.gmi {tutorials}
cuando escribimos software intentamos hacerlo siguiendo el {s-camino}, haciéndolo a un bajo nivel de abstracción.
y tendemos a escribir poesía/{poetry} relacionada a estos intereses.
en el {log} puedes encontrar actualizaciones en el proyecto.
en el {roadmap} puedes encontrar actualizaciones que quieren suceder en el proyecto.
somos un proyecto bilingüe; por el momento algunos contenidos están solo en castellano y algunos solo en inglés.
si te interesa, puedes colaborar con nosotres realizando {traducciones}.
=> ./references.gmi {references}
# apoyo
¡necesitamos de tu {apoyo} para lograr la meta de tener a este proyecto de ensueño como nuestra actividad principal!
=> https://www.patreon.com/compudanzas apoya a compudanzas en patreon
=> https://ko-fi-com/compudanzas apoya a compudanzas en ko-fi
# meta
este {wiki} está siempre en construcción.
@ -61,18 +75,10 @@ existe en la web y en el protocolo {gemini}:
=> https://compudanzas.net/ compudanzas (web)
=> gemini://compudanzas.net/ compudanzas (gemini)
somos un proyecto de {bilingüismo}; por el momento algunos contenidos están solo en castellano y algunos solo en inglés. si te interesa, puedes colaborar con nosotres realizando {traducciones}.
puedes visitar el índice de todas las páginas en el sitio:
en el {log} puedes encontrar actualizaciones en el proyecto, en el {roadmap} puedes encontrar actualizaciones que quieren suceder en el proyecto, o también puedes ver el índice de todas las páginas en el sitio:
=> ./pages.gmi {pages}
estamos coleccionando referencias que nos inspiran y nutren:
=> ./references.gmi {references}
# contacto
por acá encuentras distintas formas de ponernos en {contacto}.
# apoyo
¡necesitamos de tu {apoyo} para lograr la meta de tener a este proyecto de ensueño como nuestra actividad principal!
=> ./contacto.gmi {contacto}

View File

@ -1,11 +0,0 @@
# compudanzas ahora
lang=es en->{now}
en qué andamos aproximadamente en estos momentos.
estamos preparando una charla online que presentaremos el jueves 25 de abril y también un taller para el congreso esLibre 2024 el 25 de mayo.
más información (y próximamente recursos) se encuentran en {talks and workshops} (página en {bilingüismo}).
estamos emocionades por comenzar a dedicar nuestro trabajo al {dominio público}.
puedes encontrar actualizaciones previas enlistadas cronológicamente en el {log}. y dependiendo de cómo hayas llegado aquí, puede ser que quieras saber {acerca} de compudanzas.

View File

@ -1,14 +0,0 @@
# (a)live computing dance
livecoding act based on the {qiudanz technique}, wooden blocks, and a coin-based random number generator for the dance and visuals, and orca for the music.
# algorave 10th birthday
we performed (a)live computing dance on algorave 10th anniversary, 12022-03-20 @ 16:20 UTC
+ <iframe title="(a)live computing dance @ algorave 10th birthday" src="https://spectra.video/videos/embed/b0613d4b-d9bd-4713-9a6d-34dc75e9afcb" allowfullscreen="" sandbox="allow-same-origin allow-scripts allow-popups" width="560" height="315" frameborder="0"></iframe>
=> https://spectra.video/w/nMfnE9R2vUgwQCjoyNAJxM video: (a)live computing dance @ algorave 10th birthday
=> https://ten.algorave.com/ algorave 10th birthday
regarding the {qiudanz technique} for the development of the performance, we used {qiudanz mode 1} for the introduction and mode 2 for the rest of the act.

View File

@ -1,29 +1,16 @@
# apoyo
lang=es en->{support}
contribuye a hacer posible el trabajo de compudanzas.
=> ./img/foto_laconsagracion_04.jpg foto de piezas de madera en el suelo manipuladas por algunas manos
compudanzas como la práctica de hacer tangible a la computación ha sido un proyecto de ensueño por ya varios años.
in english: {support}
=> ./img/foto_laconsagracion_04.jpg foto de piezas de madera en el suelo manipuladas por algunas manos
¡contribuye a hacerlo posible con tu apoyo económico!
# donaciones
puedes donar en las siguientes plataformas:
=> https://www.patreon.com/compudanzas apoya a compudanzas en patreon
=> https://es.liberapay.com/compudanzas/ compudanzas en liberapay
=> https://ko-fi.com/compudanzas compudanzas en ko-fi
+ <a href="https://www.patreon.com/bePatron?u=3070411" target="_blank"><img alt="Become a Patron!" src="./img/boton-patreon.png" height='30'/></a>
+ <a href="https://liberapay.com/compudanzas/donate" target="_blank"><img alt="Donate using Liberapay" src="./img/boton-liberapay.svg"></a>
+ <a href='https://ko-fi.com/N4N544999' target='_blank'><img height='30' style='border:0px;height:30px;' src='./img/boton-kofi.png' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>
# multimedia
también puedes apoyarnos comprando el libro {introducción a programación uxn}, {jarotsim}, o {norpet mascota digital}, todo estos proyectos en nuestra página de itch.io!
=> https://compudanzas.itch.io/ compudanzas - itch.io
¡muchas gracias!
sejo

View File

@ -1,11 +1,10 @@
# apuntes
lang=es
recordatorios de procesos
# no computacionales
=> ./recetas.gmi {recetas}
=> ./books.gmi {books}
# computacionales
@ -17,13 +16,6 @@ recordatorios de procesos
=> ./postfix.gmi {postfix}
=> ./awk.gmi {awk}
en {gemini} hay algunas notas sobre openssl para hacer requests y revisar certificados.
## programación
=> ./forth.gmi {forth}
=> ./apl.gmi {apl}
## misc
=> ./guix.gmi {guix}

View File

@ -1,5 +1,5 @@
# arte generativo en papel
lang=es
procesos computacionales con resultados complejos, para realizar a mano en papel.
¿ideas que inspiraron a las {coloring computers}?

View File

@ -1,5 +1,5 @@
# avr-asm
lang=es
explorando programación de microcontroladores avr a través de asm, en attiny85. {s-camino}
# herramientas
@ -73,7 +73,7 @@ PROGRAMMER = usbasp
# ensambla programa a .hex
hex:
avr-gcc -Os -DF_CPU=8000000 -mmcu=$(BOARD) -c $(PROG).S
avr-gcc -Os -DF_CPU=8000000 -mmcu=$(BOARD) -c $(PROG).S
avr-ld -o $(PROG).elf $(PROG).o
avr-objcopy $(PROG).elf -O ihex $(PROG).hex
rm $(PROG).o $(PROG).elf

View File

@ -6,9 +6,13 @@ some notes in process.
# projects
the static site generator for the compudanzas.net {wiki} is mostly written in awk:
=> https://tildegit.org/sejo/compudanzas generator and source files for the compudanzas.net site
g2e is an opinionated gempub to epub converter written in awk:
=> https://tildegit.org/sejo/g2e g2e
=> https://tildegit.org/sejo/g2e
my solutions for {advent of code 2021} have been written in awk.
@ -49,7 +53,7 @@ the index of the first character is 1!
* index( string, sub) : index of sub as a substring of string
* length( string )
* match( string, regex ) : index of the longest match of regex in string
* split( string, arr, regex ) : split string into array using regex as separator
* split( string, arr, regex ) : split string into array using regex as separato
* printf( format, expr-list)
* strtonum(string): useful to convert from hexadecimal (0x prefix) or octal (0 prefix)
* gsub( regex, sub, string): global substitution of regex with sub in string. if string is ommited, $0 is used
@ -108,8 +112,6 @@ FS = ""
## loop through the elements of an array
this approach might yield the results in different order depending on the awk implementation.
```
arr["a"] = 1
arr["b"] = 2

View File

@ -1,21 +1,11 @@
# beans computing
lang=en es->{cómputo frijol}
non-electronic {digital systems} based on manipulating beans according to simple logical rules.
inspired by {the beans computer}, but going at a lower level. most of the times this is related to {paper computing}.
inspired by {the beans computer}, but going at a lower level.
the {computadora de papel} is also related as a beans-based, "higher level" computer.
# projects
{norpet} is a proof-of-concept for ideas we have about beans computing in an 8x8 grid or board.
=> ./img/foto_norpet_02.png closeup photo of the norpet board completely solved in one of its states: the grid is full of either soy or black beans.
# prototypes
{bouncing ball logic} and {bouncer-2d prototype} provide some notes from the initial development of {poñg} around 12020.
=> ./img/secuencia_bounce2d-8x6-0a3.gif a sequence of four frames showing two paper boards with black and soy beans in them: the one in the left contains the processing cells, and the one in the right looks like a screen composed of soy beans except for one, which seems to be moving from the top left corner to the bottom and right.
# truth tables
we have only two classes of beans: black (1), and non-black (0).

View File

@ -1,14 +0,0 @@
# bilingüismo
the eternal, spiral-like conflict, situation, opportunity: sharing in english or spanish or both?
in english, it would be simpler: lingua franca. it's our second language, but we can get by. the possibility of finding a wider, more international, group of people with similar interests. but something is lost, isn't it?
en español, se siente más local (tanto en familiaridad como en potencial (y real) conexión con quienes están alrededor), lo podemos usar con más destreza, podemos jugar.
a reminder of the added work some of us in similar situations have:
* wondering in which language(s) to share something
* translating one way or the other
* supporting both languages
no se trata de decidir, we had decided it already, and we are deciding it again. saltando de uno a otro. embracing the corresponding complexity.

View File

@ -4,43 +4,31 @@ websites and {gemini} capsules from friends.
see also {references} for links to resources that inspire and/or inform of our work.
# gemini & web
=> //pachapunk.space/ pachapunk.space
=> //archipielago.uno/ archipielago.uno
=> //caracolito.mooo.com/ caracolito
=> //sunshinegardens.org/~xj9/ dreamspace
=> //alexschroeder.ch/ alex schroeder
=> //texto-plano.xyz/ texto plano
=> //tralfanum.archipielago.uno/ Traducciones Alfanumérico
# gemini
=> gemini://pachapunk.space/ pachapunk.space
=> gemini://xj-ix.luxe/ xjix
=> gemini://caracolito.mooo.com caracolito
=> gemini://gemini.ctrl-c.club/~lettuce/ lettuce
=> gemini://texto-plano.xyz/jota/ /casa de ~jota
=> gemini://oppen.digital/ ölab
=> gemini://gemini.circumlunar.space/~solderpunk/ solderpunk
=> gemini://alexschroeder.ch/ alex schroeder
=> gemini://gemini.circumlunar.space/users/hundredrabbits/ hundredrabbits
=> gemini://signals.pollux.casa/ signals
=> gemini://gemini.sensorstation.co sensor station
# web
=> https://pachapunk.space pachapunk.space
=> https://wiki.xxiivv.com/ xxiivv
=> https://100r.co/ 100R
=> http://100r.co/ 100R
=> https://leetusman.com/ lee tusman
=> https://xj-ix.luxe/ xjix
=> https://montoyamoraga.io/ montoyamoraga
=> https://www.adorevolution.com/ adorevolution
=> https://melmuvz.neocities.org mel*muvz
=> https://texto-plano.xyz/~jota/ /casa de ~jota
=> http://akkartik.name/about Kartik Agaram
=> https://eli.li/ Oatmeal
=> https://www.inversealien.space/ inversealien.space
=> https://mycelial.technology/ mycelial technology
=> https://cblgh.org/ alexander cobleigh
=> https://bleu255.com/~marloes/ Marloes de Valk
=> https://www.pixouls.xyz/ Pixel
=> https://oppen.digital/ ölab
=> https://grimgrains.com/ grimgrains
=> https://nilfm.cc/ nilfm
=> https://badd10de.dev/ badd10de
=> https://pbat.ch/ paul batchelor
=> https://grimgrains.com/ grimgrains
=> https://webring.xxiivv.com/#random webring

View File

@ -1,50 +0,0 @@
# books
the books I finished reading.
# 12024
* Ritos de Madurez (La Estirpe de Lilith) / Octavia E. Butler
* Imago (La Estirpe de Lilith) / Octavia E. Butler
* Solaris / Stanislaw Lem
* Una muerte muy dulce / Simone de Beauvoir
* Dónde aterrizar: cómo orientarse en política / Bruno Latour
* After lockdown: a metamorphosis / Bruno Latour
* 101 Essays That Will Change The Way You Think / Brianna Wiest
* The Moneyless Manifesto: Live Well, Live Rich, Live Free / Mark Boyle
* Hope in the Dark: Untold Histories, Wild Possibilities / Rebecca Solnit
Unfinished:
* Paz en la Tierra / Stanislaw Lem
# 12023
* La Costa Más Lejana (Terramar/Earthsea) / Ursula K. Le Guin
* Tehanu (Terramar/Earthsea) / Ursula K. Le Guin
* The Dispossessed / Ursula K. Le Guin
* La Mano Izquierda de la Oscuridad / Ursula K. Le Guin
* Saving Time: Discovering a Life Beyond the Clock / Jenny Odell
* Parable of the Sower / Octavia E. Butler
* The Word for World is Forest / Ursula K. Le Guin
* Deep Work: Rules for Focused Success in a Distracted World / Cal Newport
* The Mountain is You: Transforming Self-Sabotage into Self-Mastery / Brianna Wiest
* How to Live: 27 conflicting answers and one weird conclusion / Derek Sivers
* Hell Yeah or No: What's Worth Doing / Derek Sivers
* Parable of the Talents / Octavia E. Butler
* Amanecer (La Estirpe de Lilith) / Octavia E. Butler
Unfinished:
* The Waves / Virginia Woolf
* El Espejo de la Muerte / Miguel de Unamuno
# 12022
(a possibly incomplete log?)
* How to Do Nothing: Resisting the Attention Economy / Jenny Odell
* Tao: The Watercourse Way / Alan Watts
* Mindstorms: Children, Computers, and Powerful Ideas / Seymour Papert
=> https://mindstorms.media.mit.edu/ Mindstorms online
* Programming in Lua 4th ed / Roberto Ierusalimschy
* Un Mago de Terramar (Earthsea) / Ursula K. Le Guin
* Las Tumbas de Atuan (Earthsea) / Ursula K. Le Guin

View File

@ -1,44 +0,0 @@
# bouncer2d-8x6 computadora de mesa (prototipo)
lang=es en->{bouncer-2d prototype}
computadora de mesa con pantalla monocromática de 8x6: no electrónica, a escala humana, y muy lenta. un experimento de {cómputo frijol}.
siguiendo unas reglas simples, puedes colaborar con ella para computar y mostrar la animación de una pelota rebotando en las paredes de la pantalla, un cuado a la vez.
=> ./img/secuencia_bounce2d-8x6-0a3.gif secuencia de cuatro cuadros que muestra dos tableros de papel con frijoles negros y blancos sobre ellos: el tablero de la izquierda tiene las celdas de procesamiento y el tablero de la derecha se ve como una pantalla compuesta de frijoles blancos excepto por uno, que parece que se mueve desde la esquina superior izquierda hacia abajo y a la derecha.
# descargas
=> https://ipfs.io/ipfs/QmfQwdoc68dPXnGTspTiWu8xjpCLGUaH7YYFUmx84YUtwS/ bouncer2d-8x6 lista para ser impresa (pdf)
# estructura
como podrás ver, la computadora consiste en dos páginas, ambas con celdas impresas.
podemos verla como dividida en cuatro secciones.
primera página:
* fila superior: estado actual de la máquina, codificado
* bloque de enmedio: celdas de procesamiento
* fila inferior: estado siguiente de la máquina, codificado
segunda página:
* pantalla monocromática de 8x6 pixeles/celdas
# modo de uso:
* antes que nada, elige dos clases de elementos múltiples que tengas, A y B (por ejemplo, A="frijoles" y B="garbanzos)
* cada celda solo puede tener uno de esos elementos en un momento dado
## para la fila superior (estado actual)
* si esta es la primera iteración, coloca en esta fila una combinación arbitraria de elementos (por ejemplo, todas las celdas con garbanzos en ellas)
* de no ser así, cuando termines una iteración y estés lista para empezar una nueva, transfiere los elementos de la fila inferior (estado siguiente) hacia la superior, manteniendo el mismo orden. así, el "estado siguiente" se convierte en el "estado actual"
## para las demás celdas
* observa las celdas de la computadora: cada una tiene su nombre hasta arriba, y una lista de 1 a 3 nombres que corresponden a sus "entradas".
* en cada celda, acuérdate y aplica la regla: coloca un elemento de tipo A en su interior solamente cuando todas sus entradas son de tipo B. en cualquier otro caso, coloca un elemento de tipo B.
* por ejemplo, regresando a los frijoles y garbanzos: "coloca un frijol en la celda cuando todas sus entradas tienen garbanzos. si no es así, coloca un garbanzo"
* cuando termines de iterar en todas las celdas, habrás completado un cuadro de la animación. ¡captúralo de alguna manera para que lo compares con los que sigan!

View File

@ -1,42 +0,0 @@
# bouncer2d-8x6 tabletop computer (prototype)
lang=en es->{bouncer-2d prototipo}
a tabletop non-electronic, human-scale, very-slow computer with an 8x6 monochromatic screen. a prototype of {beans computing}.
following a simple set of rules, you can collaborate with it to compute and display an animation of a ball bouncing in the walls of the screen, one frame at a time.
=> ./img/secuencia_bounce2d-8x6-0a3.gif a sequence of four frames showing two paper boards with black and soy beans in them: the one in the left contains the processing cells, and the one in the right looks like a screen composed of soy beans except for one, which seems to be moving from the top left corner to the bottom and right.
# downloads
=> https://ipfs.io/ipfs/QmfQwdoc68dPXnGTspTiWu8xjpCLGUaH7YYFUmx84YUtwS/ bouncer2d-8x6 ready to be printed (pdf)
# structure
the computer has two pages, both of them with "cells". it has a total of four sections.
first page:
* top row: state of the machine (encoded)
* middle block: process cells
* bottom row: next state of the machine (encoded)
second page:
* 8x6 monochromatic screen
# how to use:
* first of all, choose two classes of elements, A and B (e.g. A="black beans" and B="chickpeas").
* each cell can only have one of those elements at a given time.
## for the top row
* if this is the first iteration, fill it with an arbitrary combination of your elements (e.g. all the cells with a chickpea in each)
* otherwise, when you finish an iteration and you are ready to start a new one, transfer the elements from the bottom row to the top row, keeping the same order.
## for all the other cells
* observe the cells in the computer: each one has a name at the top, and a list of 1 to 3 cell names that correspond to its inputs.
* for each cell, remember and apply the rule: put an element of class A inside the cell only when all of its inputs are B. otherwise put inside an element of class B.
* example rule: put a black bean inside the cell only when all of its inputs are chickpeas. otherwise, put a chickpea inside.
* when you finish iterating through all the cells, you would have completed a frame of the animation in the screen. capture it somehow!

View File

@ -1,211 +0,0 @@
# bouncing ball logic
lang=en
may this serve as a reference for non-electronic, human-scale, very-slow implementations of digital circuits that embody a virtual ball bouncing in a screen.
these notes emerged from the work around {poñg}, "a human-scale digital videogame, with logic provided by people".
this is a sub-collection from the {logiteca}.
# 1-dimension
## 4-pixels wide screen
the ball is a pixel that bounces back and forth.
description of the logic in {verilog}:
```
// bouncing ball (pixel) in a 4-pixels screen
// using NOR gates
module onedimensional_bounce( E2, E1, E0, P3, P2, P1, P0, NE2, NE1, NE0 );
input wire E2, E1, E0; // curent state
output wire P3, P2, P1, P0; // pixels
output wire NE2, NE1, NE0; // next state
// inversions
wire nE2, nE1, nE0;
// ors
wire NE0_1, NE0_2, NE1_2;
// input inversions (3 gates)
not g00( nE0, E0);
not g01( nE1, E1);
not g02( nE2, E2);
// NE2
assign NE2 = E1;
// NE1
nor g03( NE1_2, nE2, nE0);
nor g04( NE1, P0, NE1_2);
// NE0
nor g05( NE0_1, nE2, E1, nE0);
nor g06( NE0_2, E2, nE1, nE0);
nor g07( NE0, NE0_1, NE0_2);
// pixels
nor g08( P3, nE1, E0);
nor g09( P2, nE1, nE0);
nor g10( P1, E1, nE0);
nor g11( P0, E1, E0); // also "NE1_1"
endmodule
```
### board and cards implementation
compatible with {beans computing}: use two classes of beans to indicate a 1 or a 0.
current state:
```
+----+----+----+
| i2 | i1 | i0 |
+----+----+----+
```
process helpers
```
+----+----+----+----+----+----+
| p5 | p4 | p3 | p2 | p1 | p0 |
+----+----+----+----+----+----+
```
next state and screen:
```
+----+----+----+ +----+----+----+----+
| o6 | o5 | o4 | | o3 | o2 | o1 | o0 |
+----+----+----+ +----+----+----+----+
```
the NOR-based cards for process and output cells:
process helpers:
```
p0: i0
p1: i1
p2: i2
p3: p2, p0
p4: p2, i1, p0
p5: i2, p1, p0
```
next state:
```
o6: p1
o5: o0, p3
o4: p4, p5
```
screen:
```
o3: p1, i0
o2: p1, p0
o1: i1, p0
o0: i1, i0
```
(card p0 would be read: p0 is 1 when i0 is 0, and it's 0 otherwise; card p5 would be read: p5 is 1 when all i2, p1 and p0 are 0, and it's 0 otherwise)
# 2-dimensions
## 8x6 screen
the following description, converted into a gate-level representation, results in the {bouncer-2d prototype}. the notes of how that process happened have to be recovered and documented here.
### high-level verilog code
```
module bouncer2d
#(
parameter PIXELSW = 8,
parameter PIXELSH = 6
)
(
input [$clog2(PIXELSW)-1:0] posx,
input [$clog2(PIXELSH)-1:0] posy,
input dirx,
input diry,
output [$clog2(PIXELSW)-1:0] newposx,
output [$clog2(PIXELSH)-1:0] newposy,
output newdirx,
output newdiry,
output [(PIXELSW*PIXELSH)-1:0] screen
);
bouncer1d #( .NPIXELS( PIXELSW)) bouncex (
.pos( posx ),
.dir( dirx ),
.newpos( newposx ),
.newdir( newdirx )
);
bouncer1d #( .NPIXELS( PIXELSH)) bouncey (
.pos( posy ),
.dir( diry ),
.newpos( newposy ),
.newdir( newdiry )
);
screen_decoder #(.PIXELSW(PIXELSW), .PIXELSH( PIXELSH ))
decoder (
.posx( posx ),
.posy( posy ),
.screen( screen )
);
endmodule // bouncer2d
module screen_decoder
#(
parameter PIXELSW = 8,
parameter PIXELSH = 6
)
(
input [$clog2(PIXELSW)-1:0] posx,
input [$clog2(PIXELSH)-1:0] posy,
output [(PIXELSW*PIXELSH)-1:0] screen
);
// decoder!
genvar c, r;
generate
for(c=0; c<PIXELSW; c = c + 1) begin
for(r=0; r<PIXELSH; r = r + 1) begin
assign screen[c + r*PIXELSW] = (posx==c) && (posy==r);
end
end
endgenerate
// another possibility, less effective while synthesizing
// assign screen = (1<<posx) << (posy*PIXELSW);
endmodule // screen_decoder
module bouncer1d
#( parameter NPIXELS = 8)
(
input [$clog2(NPIXELS)-1:0] pos,
input dir, // 1 inc, 0 dec
output [$clog2(NPIXELS)-1:0] newpos,
output newdir
);
/* //without edge-cases
assign newdir = (dir==1 && pos==(NPIXELS-2)) ? 0 : (dir==0 && pos==1) ? 1 : dir;
assign newpos = (dir==1) ? pos + 1 : pos - 1;
*/
// with edge cases (and less gates when synthesizing!)
assign newdir = (pos==0) ? 1 : (pos>=NPIXELS-1) ? 0 : (dir==1 && pos==NPIXELS-2) || (dir==0 && pos==1) ? ~dir : dir;
assign newpos = (pos==0) ? 1 : (pos>=NPIXELS-1) ? NPIXELS - 2 : (dir==1)? pos + 1 : pos -1;
endmodule
```

View File

@ -2,30 +2,15 @@
a computer controlled by a string of bricks/bits and the cumulative actions of the participants.
presented in the itp winter show 2017 as a work of {escenaconsejo}.
# video
=> ./img/foto_change-a-bit_01.png photo of the installation: a row of nine bricks in the floor, all except two of them standing up. in the wall there's a projection of a monochromatic grid composed of different types of squares.
=> https://ipfs.io/ipfs/QmeGF5HpMmzWLDZy6WcWGrqYXbYoPLBiZnNfKYLHzJtRgg/ChangeABit_640.mp4 change-a-bit demo video (mp4, ~10MB)
## transcript
> change-a-bit
> a computer controlled by a string of bricks/bits.
> each brick/bit has two possible states: high (standing) or low (laying).
> the bricks/bits encode an instruction that effects a change in the screen.
> increasing the size, decreasing the speed of computing.
> the screen works as a memory showing an accumulation of changes.
> computing: manipulation of arranged minerals to achieve a pattern of light on a surface (?)
presented in the itp winter show 2017.
# interaction
each brick/bit has two possible states: high or low.
each brick/bit has two possible states: high or low.
the string of bricks/bits encodes an instruction for the computer: the cell in the screen that will be modified, and the visual pattern that will be assigned to it.

View File

@ -20,7 +20,7 @@ the directions come from combining these 3 levels with the 9 possible point dire
* medium
* high
## point directions
## point directions
* left
* right

View File

@ -1,5 +1,5 @@
# ciclo de memoria
lang=es
imaginemos la construcción de una memoria que existe en función el tiempo, como las antiguas líneas de retardo de mercurio, pero en el campo; un juego; un grupo de personas en {las danzas}.
un "dispositivo"-danza que almacena información binaria, con capacidad de ser escrita y leída.
@ -8,7 +8,7 @@ un "dispositivo"-danza que almacena información binaria, con capacidad de ser e
# guía
cada persona ve a alguien más, y es vista por otra distinta.
cada persona ve a alguien más, y es vista por otra distinta.
para iniciar, podemos acomodarnos en círculo. nuestra red es un ciclo.
@ -18,7 +18,7 @@ cada persona ve a alguien más, poniendo atención en cuál de las tres señales
* alto
* bajo
hay música con pulso.
hay música con pulso.
en cada beat, la persona replica la señal que vio adelante.
@ -30,7 +30,7 @@ para leer el dato almacenado, una persona-lectora fuera del ciclo se sintoniza a
la persona-lectora se enfoca en observar a una sola persona dentro, que se convierte en la persona-salida.
al observar la señal de corte, la persona-lectora empieza a anotar, repetir, transmitir, las señales de alto o bajo que vengan después.
al observar la señal de corte, la persona-lectora empieza a anotar, repetir, transmitir, las señales de alto o bajo que vengan después.
así continúa hasta observar de nuevo el corte: el dato habrá sido leído, y se mantiene en circulación.

View File

@ -27,15 +27,13 @@ deep adaptation agenda, the 4 Rs:
## how to live like the world is ending
* act like were about to die.
* act like we might not die right away.
* act like we might have a chance to stop this.
* act like we might not die right away.
* act like we might have a chance to stop this.
* act like everything will be okay.
=> http://birdsbeforethestorm.net/2019/12/how-to-live-like-the-world-is-ending/ how to live the world is ending - margaret killjoy
## more references
=> https://witsendnj.blogspot.com/2014/07/a-fine-frenzy-universal-dance-of.html A Fine Frenzy ~ the universal dance of delusion...and the paucity of hope
see {references}

View File

@ -2,11 +2,11 @@
non-electronic computers that work when you color them according to a simple set of rules.
an exploration of computation without electricity and semiconductors, an attempt to reinvent digital systems away from efficiency and productivity, and hopeful prototypes to expose the inner workings of computers.
an exploration of computation without electricity and semiconductors, an attempt to reinvent digital systems away from efficiency and productivity, and hopeful prototypes to expose the inner workings of computers.
=> https://ipfs.io/ipfs/QmaiMEk5Stw5Xvfs1btAwMg2sctwEq1MS9NDJAUEr1SHvf/ coloring computers pack archive
related and inspired by some previous experiments like {arte generativo en papel} and {paper computing} in general.
related and inspired by some previous experiments like {arte generativo en papel}
# 4-bits to 7-segment display hexadecimal decoder (12020)
@ -14,34 +14,13 @@ related and inspired by some previous experiments like {arte generativo en papel
=> ./img/foto_20201130_hex7segdecoder_02.png a human coloring the wires according to the logic rules
=> ./img/foto_20201130_hex7segdecoder_03.png the coloring computer/decoder, with an input of 0011, and an output that can be read as 3
a coloring decoder built with NOT (triangle), AND (semicircle), and OR (the other shape (?)) gates ({compuertas}), based on a manual design.
a coloring decoder built with NOT (triangle), AND (semicircle), and OR (the other shape (?)) gates ({compuertas}), based on a manual design.
=> ./img/dibujo_20201207_hex7segdecoder_small.png the complete decoder
=> https://opguides.info/engineering/circuits/digitallogic/ colored and animated version by Vega
=> https://opguides.info/engineering/digitallogic/ colored and animated version by Vega
=> https://ipfs.io/ipfs/QmZv53hr7QEzxrPaRNpiyU9VUNHw9UgyaTUqYD9x9iFpNA/dibujo_20201207_hex7segdecoder.png download the decoder in full size 1487x3057 (png, ~446KB)
## instructions
you use two colors to set the state of 4 "bits" at the top circles.
one color stands for "1", the other for "0".
what number, according to the conventions, would these 4 bits represent?
and what hexadecimal digit would correspond to that number?
you transmit those states/colors by coloring the wires.
the wires lead to three possible types of gates, all of them with their input(s) above, and their output below:
* NOT, a triangle: the output is the opposite color of the input
* AND, a semicircle: the output is color "1" only when ALL inputs are also color "1"; otherwise the output is color "0"
* OR, the other shape (?): the output is color "1" when ANY of the inputs are color "1"; otherwise the output is color "0".
you finish coloring, and you see the digit in the display as a result!
the description of the circuit in {verilog} can be found in the {logiteca}.
# computadora no(r)pal (12019)
=> ./img/dibujo_20190715-norpalera-fulladder_blanco_small.png logic circuit in the shape of nopal
@ -58,7 +37,7 @@ the original ones
=> ./img/foto_coloring-computers_7seg-lee.png photo of a pair of colored pages of the zine, with a 7 segment display showing the digits 2 and 3
=> ./img/foto_coloring-computers_pcd2019.png photo of a pair of colored pages of the zine, showing a digital circuit answering if two colors are the same
the booklet contains three series of computers: computers that compare, computers that count, and computers that play. they are all {nor}-based logic circuits designed by using truth tables, karnaugh maps, and maxterm expansions.
the booklet contains three series of computers: computers that compare, computers that count, and computers that play. they are all {nor}-based logic circuits designed by using truth tables, karnaugh maps, and maxterm expansions.
=> https://ipfs.io/ipfs/QmYz7DPRWypGQcbAHr7Mi8EKB6ntSPsEnUsCXbAhBiHQZP/ original site and resources
=> https://ipfs.io/ipfs/QmYz7DPRWypGQcbAHr7Mi8EKB6ntSPsEnUsCXbAhBiHQZP/coloringcomputers_pages.pdf download the page-by-page zine (pdf, ~1.5MB)

View File

@ -1,12 +1,12 @@
# compuertas lógicas
lang=es
las bases de los circuitos digitales, o {digital systems}
estos incluyen, claro está, a las:
=> ./danzas_compuertas.gmi {danzas compuertas}
=> ./coloring_computers.gmi {coloring computers}
=> ./cómputo_frijol.gmi {cómputo frijol}
=> ./beans_computing.gmi {beans computing}
usamos la convención de utilizar dos valores posibles: 1 para denominar arriba, o verdadero, y 0 para denominar abajo, o falso.
@ -18,7 +18,7 @@ la salida es igual a la entrada
## NOT
la salida es lo opuesto a la entrada.
la salida es lo opuesto a la entrada.
también podríamos decir que la salida es lo que no es la entrada.
@ -94,9 +94,9 @@ en cualquier otro caso, la salida es falsa.
también la podemos describir así: la salida es verdadera cuando las entradas son diferentes, y es falsa cuando las entradas son iguales.
## NOR
## NOR
la salida es verdadera cuando ninguna de sus entradas es verdadera.
la salida es verdadera cuando ninguna de sus entradas es verdadera.
que es lo mismo que decir que su salida es verdadera cuando todas sus entradas son falsas.
@ -127,7 +127,7 @@ por cómo funciona, también la podemos considerar como un AND que funciona con
## NAND
la salida es verdadera cuando aunque sea una de sus entrada es falsa.
la salida es verdadera cuando aunque sea una de sus entrada es falsa.
únicamente cuando todas sus entradas son verdaderas, su salida es falsa.
@ -154,7 +154,7 @@ por cómo funciona, también la podemos considerar como un OR que funciona con 0
todas las compuertas funcionan igual para más de dos entradas, excepto XOR.
importante: AND y OR poseen la propiedad distributiva.
importante: AND y OR poseen la propiedad distributiva.
por ejemplo, un AND de tres entradas (a, b, c) es equivalente a un AND de dos entradas (a, b), con su salida (x) conectada a la entrada de otro AND de dos entradas (x, c)

View File

@ -1,5 +1,5 @@
# computadora de papel
lang=es
adaptación de la wdr papiercomputer; modelo sencillo de una arquitectura computacional común.
=> https://wiki.xxiivv.com/site/papier.html papier computer
@ -88,7 +88,7 @@ este es el programa en formato de lista de números a colocar en la memoria de p
* 4: 2 1
* 5: 0 0
el primer dígito en la lista es el número de línea.
el primer dígito en la lista es el número de línea.
los dos dígitos siguientes son el primer y segundo números de instrucción

View File

@ -1,32 +1,14 @@
# contact
lang=en es->{contacto}
let's connect!
# e-mail
our e-mail address: compudanzas at posteo dot net
let's connect!
# media
en español: {contacto}
we host our {videos} on spectra.video, a peertube instance:
=> https://spectra.video/a/compudanzas/videos compudanzas - spectra
see the {log} for ways of following our updates.
our books: {introduction to uxn programming book} and {introducción a programación uxn} and other downloadables like {jarotsim} and {norpet} can be found in our itch.io page:
you can find us in the fediverse:
=> https://post.lurk.org/@compudanzas compudanzas in post.lurk.org
=> https://compudanzas.itch.io/ compudanzas - itch.io
we have a twitch.tv account to stream our {maintenance practice} and other events:
=> https://twitch.tv/compudanzas compudanzas - twitch.tv
# social media
we are active in the fediverse / mastodon:
=> https://post.lurk.org/@compudanzas @compudanzas in post.lurk.org
for the purposes of broadcasting, we use telegram and ig:
=> https://t.me/compudanza compudanzas telegram channel
=> https://instagram.com/compudanzas @compudanzas in ig
# updates
see the {log} for non-interactive ways of following our updates, and {location} to find out where we are.
and also via e-mail: compudanzas at posteo dot net
in some contexts you can find me as {sejo}

View File

@ -1,32 +1,14 @@
# contacto
lang=es en->{contact}
¡conectemos!
# correo-e
in english: {contact}
nuestra dirección de correo-e: compudanzas en posteo dot net
en el {log} hay algunas opciones para seguir nuestras actualizaciones.
# multimedia
nos encontramos en el fediverso:
=> https://post.lurk.org/@compudanzas compudanzas en post.lurk.org
hospedamos nuestros {videos} en spectra.video, una instancia de peertube:
=> https://spectra.video/a/compudanzas/videos compudanzas - spectra
y por e-mail: compudanzas en posteo dot net
nuestros libros {introducción a programación uxn} y {introduction to uxn programming book}, así como otros descargables como {jarotsim} y {norpet mascota digital} los puedes encontrar en nuestra página de itch.io
=> https://compudanzas.itch.io/ compudanzas - itch.io
tenemos una cuenta de twitch.tv donde transmitimos nuestra {maintenance practice} y otros eventos:
=> https://twitch.tv/compudanzas compudanzas - twitch.tv
# redes sociales
nos encuentras activamente en el fediverso / mastodon:
=> https://post.lurk.org/@compudanzas @compudanzas en post.lurk.org
para fines de difusión, utilizamos telegram e ig:
=> https://t.me/compudanza canal de compudanzas en telegram
=> https://instagram.com/compudanzas @compudanzas en ig
# actualizaciones
en el {log} se enlistan opciones no interactivas para seguir nuestras actualizaciones, y en {ubicación} enlistamos dónde nos encontramos.
en algunos contextos me puedes encontrar como {sejo}

View File

@ -1,13 +0,0 @@
# cómputo frijol
lang=es es->{beans computing}
sistemas digitales no electrónicos basados en manipular frijoles de acuerdo a reglas lógicas simples.
# proyectos
{norpet mascota digital} fue una prueba de concepto de cómputo frijol en tableros de 8x8.
=> ./img/foto_norpet_02.png foto del tablero de norpet completamente lleno en uno de sus estados: la cuadrícula está llena de frijoles negros y de soya, uno en cada casilla.
# prototipos
el {bouncer-2d prototipo} surge del desarrollo inicial de la {propuesta poñg}.
=> ./img/secuencia_bounce2d-8x6-0a3.gif secuencia de cuatro cuadros que muestra dos tableros de papel con frijoles negros y blancos sobre ellos: el tablero de la izquierda tiene las celdas de procesamiento y el tablero de la derecha se ve como una pantalla compuesta de frijoles blancos excepto por uno, que parece que se mueve desde la esquina superior izquierda hacia abajo y a la derecha.

View File

@ -1,11 +1,13 @@
# d-turing
lang=es
bailando los inicios, una máquina de turing
parte de {las danzas}
=> ./img/dibujo_d-turing_parentesis.png dibujo de tres personas emitiendo un símbolo cada una, alrededor de una cinta de símbolos
# componentes
## participantes
@ -50,7 +52,7 @@ la instructora tiene que conocer todos los movimientos nombrados arriba.
hay que acomodar la cinta de símbolos en una configuración inicial adecuada.
la cabeza en cinta se coloca al lado del primer símbolo.
la cabeza en cinta se coloca al lado del primer símbolo.
el semáforo empieza a moverse con el estado inicial.
@ -82,10 +84,6 @@ si la tabla no tiene una respuesta, entonces la máquina se detiene. el cómputo
encuentra aquí {máquinas de turing} para implementar y bailar.
# simulación
podemos utilizar {turingsim} o {jarotsim} para simular estas danzas.
# enlaces relevantes
=> https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf on computable numbers, with an application to the entscheidungsproblem - alan turing 1936

View File

@ -26,12 +26,12 @@ Our stage space contains a mix of the following elements: single blocks, engrave
The plaques contain formulas that describe the operations to perform during a given configuration. These operations consist in shifting the current point of action in the row of shapes, transforming} a current active shape into another, and transitioning to another configuration.
Once set in motion, the interactions between these heterogeneous parts cause emergent properties that perform computation; in that sense this machine is in dialog with the concept of assemblage as described by DeLanda [2].
Once set in motion, the interactions between these heterogeneous parts cause emergent properties that perform computation; in that sense this machine is in dialog with the concept of assemblage as described by DeLanda [2].
Each choreographic configuration is represented by a specific symbol in a plaque that invokes a predefined atmosphere to improvise with.
The dancers follow the formulas of one of these plaques held in the air, while performing discrete operations on the shapes of the worm. Sometimes these shapes will trigger a formula that require a transition: the plaque is exchanged for another, and the choreography changes into the new configuration.
A difference between this work and other Turing machine dances that could be found [1] is the absence of electronics in its workings and creation. By removing electricity as much as possible, the idea is to help blurring boundaries (organic - inorganic, human - machine) and to prompt questions about the nature} of computers.
Wechsler differentiated between "art that is concerned with computers, or art that is merely created using computers" [8] when discussing dance, computers, and art; the aim of the rite of computing is to be dance concerned with computers, and to be a computer that is [merely] created using dance.

View File

@ -1,5 +1,5 @@
# danza papier
lang=es
baile colaborativo que ejemplifica una arquitectura computacional común, basada en la wdr papiercomputer
=> https://wiki.xxiivv.com/site/papier.html papier computer
@ -22,7 +22,7 @@ la arquitectura base consta de al menos 6 personas:
* LU: la que responde preguntas lógicas
## materiales
## materiales
como materiales tangibles solo se requiere la lista de números que administra la Memoria.
@ -37,7 +37,7 @@ se necesita contar con, y conocer, el siguiente conjunto de movimientos.
### todas las personas
* dígito-movimiento: un movimiento por cada digito en la base elegida (por ejemplo, del 0 al 9 para trabajar en base 10)
* dígito-movimiento: un movimiento por cada digito en la base elegida (por ejemplo, del 0 al 9 para trabajar en base 10)
* posición: una forma de indicar si un dígito es el primero o el segundo
* finalización: un movimiento que indique que el cómputo ha terminado
@ -117,12 +117,12 @@ les Registros ahora pueden ser inspeccionados para leer los resultados del cómp
* CU se mueve dirigiéndose a les Registros, transmitiendo el dígito-movimiento que recibió como argumento
* Registros reciben el dígito
* Registro que tiene a ese dígito en su nombre, hace más evidente el dígito-movimiento que estaba realizando
* Registro que tiene a ese dígito en su nombre, hace más evidente el dígito-movimiento que estaba realizando
* les demás Registros reducen la amplitud de su propio dígito-movimiento.
* CU se mueve preguntando a LU si el Registro es 0.
* LU recibe la pregunta, y observa al Registro con movimiento amplio
* LU se mueve respondiendo sí o no
* CU recibe la respuesta de LU
* CU recibe la respuesta de LU
* CU se mueve dirigéndose a PC: si la respuesta que recibió de LU fue sí, entonces se mueve indicando un doble incremento; si la respuesta fue no, entonces se mueve indicando un incremento sencillo
* PC recibe la indicación, y pasa al siguiente dígito-movimiento, ya sea una o dos veces según lo recibido.
* la máquina pasa a la etapa fetch
@ -139,7 +139,7 @@ les Registros ahora pueden ser inspeccionados para leer los resultados del cómp
* CU se mueve dirigiéndose a les Registros, transmitiendo el dígito-movimiento que recibió como argumento
* Registros reciben el dígito
* Registro que tiene a ese dígito en su nombre, hace más evidente el dígito-movimiento que estaba realizando
* Registro que tiene a ese dígito en su nombre, hace más evidente el dígito-movimiento que estaba realizando
* les demás Registros reducen la amplitud de su propio dígito-movimiento.
* CU se mueve dirigiéndose a les Registros, transmitiendo la indicación de incremento
* Registro con el movimiento amplio, pasa al dígito-movimiento siguiente al que estaba realizando (incrementa en 1 al valor que estaba almacenando)
@ -153,7 +153,7 @@ les Registros ahora pueden ser inspeccionados para leer los resultados del cómp
* CU se mueve dirigiéndose a les Registros, transmitiendo el dígito-movimiento que recibió como argumento
* Registros reciben el dígito
* Registro que tiene a ese dígito en su nombre, hace más evidente el dígito-movimiento que estaba realizando
* Registro que tiene a ese dígito en su nombre, hace más evidente el dígito-movimiento que estaba realizando
* les demás Registros reducen la amplitud de su propio dígito-movimiento.
* CU se mueve dirigiéndose a les Registros, transmitiendo la indicación de decremento
* Registro con el movimiento amplio, pasa al dígito-movimiento anterior al que estaba realizando (decrementa en 1 al valor que estaba almacenando)
@ -178,7 +178,7 @@ este es el programa en formato de lista de números para que administre Memoria.
* 4: 2 1
* 5: 0 0
el primer dígito en la lista es el número de línea.
el primer dígito en la lista es el número de línea.
los dos dígitos siguientes son el primer y segundo dígitos de instrucción

View File

@ -1,6 +1,6 @@
# danzas compuertas
lang=es
antiguas historias hablaban de computar en conjunto, en comunidad.
antiguas historias hablaban de computar en conjunto, en comunidad.
tareas sencillas y divertidas que requieren atención y presencia y que combinadas dan paso a complejidad, a olas, a cambios.
@ -30,7 +30,7 @@ más circuitos posibles, en la {logiteca}
qué tal un sumador completo, aprovechando la idea de {ciclo de memoria}
aquí un diagrama animado que muestra un par de ciclos de memoria como entrada a un full-adder.
aquí un diagrama animado que muestra un par de ciclos de memoria como entrada a un full-adder.
el resultado del full-adder está conectado a otro ciclo de memoria. todos los componentes conformados por personas.

View File

@ -1,12 +1,12 @@
# danzasistemas-tag
lang=es
una compudanza basada en máquina abstracta (tag systems, o bien, máquina de post)
=> ./las_danzas.gmi {las danzas}
# descripción
las danzasistemas-tag consisten en "batallas" de baile en las que alternamos recibiendo y respondiendo secuencias de movimiento.
las danzasistemas-tag consisten en "batallas" de baile en las que alternamos recibiendo y respondiendo secuencias de movimiento.
las secuencias que respondemos son producto de procesar elementos de la secuencia que recibimos.
@ -49,13 +49,13 @@ si primer símbolo/movimiento es 'b', agrega 'a' al final.
si primer símbolo/movimiento es 'c', agrega 'aaa' al final.
nota cómo cada regla de producción agrega una cantidad distinta de símbolos/movimientos al final.
nota cómo cada regla de producción agrega una cantidad distinta de símbolos/movimientos al final.
## m: número de eliminación
en este caso, siempre descartaremos 2 símbolos/movimientos del inicio de la secuencia.
## desarrollo
## desarrollo
partiendo de una secuencia inicial 'aaa'...
@ -95,7 +95,7 @@ si primer símbolo/movimiento es 'b', agrega 'ba' al final.
en este caso, siempre descartaremos 1 símbolo/movimiento del inicio de la secuencia.
## desarrollo
## desarrollo
partiendo de una secuencia inicial 'aaa'...
@ -107,8 +107,8 @@ respuesta: bbb
respuesta: bbba
respuesta: bbaba
respuesta: bababa
respuesta: abababa
respuesta: bababab
respuesta: abababa
respuesta: bababab
```
@ -116,5 +116,3 @@ respuesta: bababab
=> https://mathworld.wolfram.com/TagSystem.html Tag System -- from Wolfram MathWorld
=> https://www.wolframscience.com/nks/p93--tag-systems/ Tag Systems: A New Kind of Science | Online by Stephen Wolfram
=> https://www.wolframscience.com/nks/p95--cyclic-tag-systems/ Cyclic Tag Systems: A New Kind of Science | Online by Stephen Wolfram

View File

@ -1,18 +1,18 @@
# después ahora
lang=es
textos hacia una práctica post-civilización.
# La invitación
Primero que nada, te invito, nos invito, a estar presentes.
Respirar profundo, y de ser posible, mirar por alguna ventana. Notar el espacio de posibilidades que nos presenta lo que llamamos cielo.
Respirar profundo, y de ser posible, mirar por alguna ventana. Notar el espacio de posibilidades que nos presenta lo que llamamos cielo.
Espero que no fuera hace mucho la vez más reciente que le habías visto.
Ahora bien, en este texto, partimos de la noción de que algo grande se está terminando. No solo grande, sino enorme; tal vez inabarcable, tal vez inconcebible.
Partimos de la noción de que la civilización se está terminando.
Partimos de la noción de que la civilización se está terminando.
O de que ya se terminó, según desde dónde le veamos.
@ -34,7 +34,7 @@ Personalmente, prefiero dejármelo sentir. No me va eso de hacerme creer que no
Ya no me creo el cuento del progreso, de las soluciones tecnocéntricas.
Vivir como si la civilización ya no existiera es lo que mejor me suena. Requiere creatividad, curiosidad, disposición, compasión y paciencia. Es alcanzable. No hay una fórmula específica, homogénea.
Vivir como si la civilización ya no existiera es lo que mejor me suena. Requiere creatividad, curiosidad, disposición, compasión y paciencia. Es alcanzable. No hay una fórmula específica, homogénea.
Es plantar semillas de lo que pueda venir después: puede que no germinen, ¿pero realmente me veo haciendo otra cosa?
@ -46,8 +46,8 @@ Por el momento usamos internet, después ya veremos. Si los cables seguirán pla
---
Te invito a respirar de nuevo. A moverte con cómo te sientes ahora.
Te invito a respirar de nuevo. A moverte con cómo te sientes ahora.
Te invito a acompañarnos en esta búsqueda.
Te invito a acompañarnos en esta búsqueda.
Está bien si todavía no es el momento. Ya sabes dónde me encuentro.

View File

@ -1,15 +0,0 @@
# dominio público
lang=es en->{public domain}
dedicamos este trabajo al dominio público.
=> https://creativecommons.org/publicdomain/zero/1.0/deed.es CC0 1.0
compartimos con gratitud;
toma lo que te guste (o lo que no), úsalo, impleméntalo, dale vueltas (o no);
todo esto es remezcla así que a (re)seguirla;
nodos aquí y allá, flujos incontables, ¿cómo podría llamar algo así, mío?
lo instigamos, claro, nos llama
pero no nos ata ni l'atamos,
que vuele, nade, se arrastre y reconecte, así en confianza, vamos!

View File

@ -1,5 +1,5 @@
# ed
lang=es
pequeño editor de texto
# tips

View File

@ -1,7 +0,0 @@
# escenaconsejo
performing and media arts company. 2013-2020
this page is a stub.
=> https://vimeo.com/escenaconsejo Escenaconsejo in vimeo

View File

@ -1,15 +0,0 @@
# esglua
our static site generator written in lua
# about
esglua generates this {wiki} in both html and {gemini} formats.
it was written when learning about the lua programming language.
# source code
the source code of both the generator and the {wiki} can be found in tildegit:
=> https://tildegit.org/sejo/compudanzas compudanzas - tildegit

76
src/estilo.css Normal file
View File

@ -0,0 +1,76 @@
/* links externos */
a[rel^=external]:after{ content: "↗"; }
/* gemtext-like format */
/* h1:before{ content: "# "; }
h2:before{ content: "## "; }
h3:before{ content: "### "; }*/
a.arrow:before{ content: "⇒ "; }
body{
max-width:36em;
margin:0 auto;
font-size:18px;
padding: 1em;
font-family:sans-serif;
}
footer{
font-size: x-small;
padding-top:2em;
}
footer img{
margin:0;
}
pre{
background-color: #fee;
padding:1em;
overflow-x: auto;
}
blockquote{
font-style: italic;
}
main h1{
margin-top: 1.5em;
font-size: xx-large;
}
main h2{
font-size: x-large;
margin-left:0.3em;
}
main h3{
font-size: larger;
margin-left:1em;
}
gallery{
display:flex;
flex-direction:row;
flex-wrap:wrap;
justify-content:space-evenly;
align-content:center;
}
img{
margin:10px;
border-radius:5px;
max-width: 320px;
}
nav{ font-size:smaller; }
nav li{ padding:0.2em; }
main li{ padding:0.5em; }
th,td{
border-style:ridge;
padding:5px;
}
/* desktop */
@media screen and (min-width: 600px) {
nav li{
display:inline;
}
img{ max-width: 100%; }
}

View File

@ -1,5 +1,5 @@
# apuntes de ffmpeg
lang=es
notas de usos comunes que le doy a ffmpeg
# "trim" / cortar
@ -89,7 +89,7 @@ ffmpeg -i out.ogv -filter:v "crop=1280:720:0:0" -codec:v libx264 -codec:a libmp3
# video a partir de una imagen
```
# video de una imagen,
# video de una imagen,
# 10 segundos, 30 frames por segundo
ffmpeg -loop 1 \
-i imagen_verde.png \

View File

@ -1,6 +1,6 @@
# fluidics
the use of a fluid to perform analog or digital operations similar to those performed with electronics.
the use of a fluid to perform analog or digital operations similar to those performed with electronics.
=> https://www.gwern.net/docs/cs/1964-gluskin.pdf FLODAC - a pure fluid digital computer
=> https://www.nature.com/articles/s41598-021-90485-z Microfluidic-based processors and circuits design

View File

@ -6,63 +6,41 @@ it uses the {postfix} notation.
# reading
## books
this book has a great pace and nice illustrations
=> https://www.forth.com/starting-forth starting forth book
## tutorials
=> http://www.softsynth.com/pforth/pf_tut.php pForth - portable Forth in 'C'
=> http://www.murphywong.net/hello/simple.htm Simple Forth
## articles
=> https://patorjk.com/programming/articles/forththoughts.htm Introduction to Thoughtful Programming and the Forth Philosophy By Michael Misamore
# trying out
=> https://txt.eli.li/pb/forth/ forth editor lifted from easy forth - by eli_oat
# some words
## running
## running
these are some words for doing arithmetic with paces (min/km) and velocities (km/hr) relevant to running.
these are some words for doing arithmetic with paces (min/km) and velocities (km/hr) relevant to {running}
``` forth words
( running.forth )
: minseg>seg swap 60 * + ; ( min segs -- segs )
: seg>minseg 60 /mod swap ; ( segs -- min segs )
: horminseg>seg minseg>seg swap 3600 * + ; ( hr min segs -- segs )
: minseg/m>seg/1km >r minseg>seg 1000 swap r> */ ; ( min segs metros -- segs1km )
: seg/1km>vel 3600 swap / ; ( segs1km -- vel )
: paso>vel minseg>seg seg/1km>vel ; ( min segs -- vel )
: vel>seg/1km 3600 swap / ; ( vel -- segs1km )
: minseg- minseg>seg >r minseg>seg r> - seg>minseg ; ( min segs min segs -- min seg )
( print )
: ms>s swap 60 * + ; ( min segs -- segs )
: hms>s ms>s swap 3600 * + ; ( hr min segs -- segs )
: msd>s1k >r ms>s 1000 swap r> */ ; ( min segs metros -- segs1km )
: s1k>vel 3600 swap / ; ( segs1km -- vel )
: paso>vel ms>s s1k>vel ; ( min segs -- vel )
: vel>s1k 3600 swap / ; ( vel -- segs1km )
: ms- ms>s >r ms>s r> - ; ( min segs min segs -- segs )
: .min 0 <# [CHAR] ' HOLD #S #> TYPE ; ( min -- )
: .segpad 0 <# [CHAR] " HOLD # # #> TYPE ; ( segs -- )
: .seg 0 <# [CHAR] " HOLD #S #> TYPE ; ( segs -- )
: .minseg 60 /mod dup 0> IF .min .segpad ELSE drop .seg THEN ; ( segs -- )
: .ms 60 /mod dup 0> IF .min .segpad ELSE drop .seg THEN ; ( segs -- )
: .vel . ." km/hr " ;
: lista-velocidades cr 21 10 do i dup .vel vel>s1k .ms cr loop ;
```
### usage
in order to load them, you'd do:
```
include running.forth
```
for example, to convert a velocity to a pace, and print it:
``` input: 18, output: 3'20"
18 vel>seg/1k .minseg
18 vel>s1k .ms
output:
3'20" ok
@ -71,17 +49,17 @@ output:
to do the opposite operation:
``` input: 3 20, output: 18 km/hr
3 20 paso>vel .vel
3 20 ms>s s1k>vel .vel
output:
18 km/hr ok
```
```
to get the pace of a given segment, using minutes, seconds and distance in meters:
``` input: 1 03 300, output: 3'30"
( 1'03" in 300m )
1 03 300 minseg/m>seg/1k .minseg
1 03 300 msd>s1k .ms
output:
3'30" ok
@ -91,7 +69,7 @@ to get the difference between two times in minutes, seconds:
``` input: 3 20 3 15, output: 0'05"
( 3'20" - 3'15" )
3 20 3 15 minseg- minseg>seg .minseg
3 20 3 15 ms- .ms
output:
5" ok

View File

@ -1,6 +1,6 @@
# gemini
lang=es
protocolo del "small internet" para documentos de hipertexto:
protocolo del "small internet" para documentos de hipertexto:
* minimalista en su especificación
* una conexión por documento
@ -10,27 +10,18 @@ protocolo del "small internet" para documentos de hipertexto:
se les llama "cápsulas" a lo que en la web llamaríamos "sitios".
# software
este sitio está servido desde un programa de "cosecha propia", chamorrx:
=> https://tildegit.org/sejo/chamorrx/ código fuente de chamorrx
además hemos creado varias herramientas basadas en gemtext utilizando {awk}.
el generador que utilizamos para manejar el sitio se llama {esglua}.
# enlaces
## sobre gemini
=> //geminiprotocol.net project gemini
=> https://gemini.circumlunar.space/ project gemini (web)
=> gemini://gemini.circumlunar.space/ project gemini (gemini)
## caracolito
compudanzas está hospedada en la comunidad caracolito: comunidad naciente en torno al "internet lento y pequeño", el protocolo gemini en español, e ideales pachapunk.
=> //caracolito.mooo.com/ caracolito
=> gemini://caracolito.mooo.com/ caracolito (gemini)
en caracolito hay un agregador de cápsulas con contenido en castellano:
@ -54,24 +45,17 @@ usamos y recomendamos:
### y más
=> //geminiprotocol.net/software/ gemini software
=> https://gemini.circumlunar.space/software/ gemini software (web)
=> gemini://gemini.circumlunar.space/software/ gemini software (gemini)
# notas
## raw request
usando openssl se puede hacer una request de la siguiente forma:
```
echo "gemini://compudanzas.net/" | openssl s_client -connect compudanzas.net:1965 -servername "compudanzas.net" -quiet -crlf -no_ssl3 -no_tls1 -no_tls1_1
```
## fingerprint
para confirmar fingerprint como cliente:
```
openssl s_client -showcerts -servername compudanzas.net -connect compudanzas.net:1965 </dev/null | openssl x509 -fingerprint
openssl s_client -showcerts -servername compudanzas.net -connect compudanzas.net:1965 </dev/null | openssl x509 -fingerprint
```
actualmente el resultado de la fingerprint debe ser:

View File

@ -25,7 +25,7 @@ este es el archivo paquetes.scm que utilizamos:
``` paquetes.scm
; paquetes.scm
(specifications->manifest
(list
(list
; multimedia
"evince" ; pdf viewer
"vlc"
@ -157,7 +157,7 @@ guix install glibc-utf8-locales font-dejavu
agregar lo siguiente a .xsessionrc
```
if [ -f ~/.profile ]; then
if [ -f ~/.profile ]; then
. ~/.profile
fi
```

View File

@ -1,41 +0,0 @@
# hamiltonian cards
the hamiltonian cards are generative coloring puzzles where you follow the instructions to reveal their messages.
=> ./img/fotos_hamiltonian.gif sequence of photos showing a hamiltonian card being colored
# description
description from the ITP winter show 2016:
=> https://itp.nyu.edu/shows/winter2016/hamiltonian-cards/ Hamiltonian Cards - ITP Winter Show 2016
> They consist in a grid of cells -squares with arrows- pointing to each other in a type of sequence called Hamiltonian Path. A Hamiltonian Path in a grid is a path that visits each and every cell exactly once. Therefore, following the path of arrows and coloring each cell that you encounter you will color the whole grid. The magic occurs because there are two types of arrow: the triangular arrow indicates that you have to fill the next cell with the same color of the current cell, and the circular arrow indicates that you have to fill the next cell with the alternate color. Filling the cells and changing the fill color according to the instructions, will allow you to reveal the hidden images.
> Under the hood, the Hamiltonian Cards are created by a software that processes a monochromatic and low pixel image using a generated Hamiltonian path. The path is used to traverse the image to define the orientation of the cells in the card and their corresponding arrow shape; somewhat executing the inverse process of what you do when solving the puzzle. Multiple paths can be used to process a single image, and multiple images can be processed with the same path. Thus many unique designs can be obtained with this same software.
> This project was originated in the Visual Language class with Katherine Dillon. My idea was to create unique graphic designs that require a playful and puzzling interaction to reveal a hidden design. The best approach for me was to create generative software in p5.js and Processing that would process and encode a message in an almost never ending set of outcomes following the same basic rules.
=> https://en.wikipedia.org/wiki/Hamiltonian_path Hamiltonian path
# instructions
* choose two contrasting colors
* fill the first cell with your first color
* follow the arrows' rules to fill the next cells: Triangular: fill the NEXT cell with the SAME color. Circular: Fill the NEXT cell with the OTHER color.
* continue to follow the arrows until the page is done
=> ./img/foto_hamiltonian_cards.jpg hamiltonian cards in the process of being colored
# downloads
=> https://ipfs.io/ipfs/QmadXtQQC9Jwc7jdwt2dvXfj4oWCtfZUoGhWLYLfjqCePE ITP Winter Show 2016 Edition, 33 different Hamiltonian Cards ready to be printed (7.3MB)
=> ./img/foto_hamiltonian_cards_2.jpg a couple of people's hands interacting with the hamiltonian cards in the ITP winter show
# media
sejo briefly talking about them in the coding train
=> https://www.youtube.com/watch?v=Snv_TNrKnIU&t=608s ITP Winter Show 2016 (youtube)
# credits
* creative direction and production: {escenaconsejo}
* hamiltonian path algorithm programming: José Alberto Jurado

View File

@ -2,20 +2,10 @@
numeral system in base 16: it uses 16 digits, from 0 to 9 and from 'a' to 'f'.
there's a direct mapping between each possible combination of 4 bits (bin), and an hexadecimal (hex) digit.
a group of 4 bits is called a nibble.
sistema numérico en base 16: utiliza 16 dígitos, del 0 al 9 y de la 'a' a la 'f'.
hay un mapeo directo entre cada posible combinación de 4 bits (bin) y un dígito hexadecimal (hex).
a un grupo de 4 bits se le llama nibble.
# conversion
there's a direct mapping between each possible combination of 4 bits (nibble), and an hexadecimal (hex) digit:
+ <table>
+ <tr><th>bin</th><th>hex</th><th>dec</th></tr>
+ <tr><th>binary</th><th>hex</th><th>dec</th></tr>
+ <tr><td>0000</td><td>0</td><td>0</td></tr>
+ <tr><td>0001</td><td>1</td><td>1</td></tr>
+ <tr><td>0010</td><td>2</td><td>2</td></tr>
@ -33,6 +23,7 @@ a un grupo de 4 bits se le llama nibble.
+ <tr><td>1110</td><td>e</td><td>14</td></tr>
+ <tr><td>1111</td><td>f</td><td>15</td></tr>
+ </table>
& * 0000 is 0
& * 0001 is 1
& * 0010 is 2
@ -58,10 +49,3 @@ a un grupo de 4 bits se le llama nibble.
* 4 {base64} digits
* 6 hexadecimal digits
* 8 {octal} digits
24 bits corresponden a:
* 3 bytes
* 4 dígitos {base64}
* 6 dígitos hexadecimales
* 8 dígitos en {octal}

View File

@ -6,7 +6,7 @@
* created the jardínBit website for my teaching notes and {tutorials}
* cooked almost every day, and kept preparing soy milk and brewing kombucha.
* managed to follow through the year using a paper-based calendar / organizer.
* regarding running: i trained 200 days, i ran my first marathon and my second official half marathon, and also broke my personal records for 1km and 2km.
* regarding {running}: i trained 200 days, i ran my first marathon and my second official half marathon, and also broke my personal records for 1km and 2km.
* with laboratorio de escena en red: danced, did some livecoding, and some generative 3d modelling. also taught a couple of workshops on networked performance.
* had my first flight in almost 5 years.
* learned about uxn and wrote the {uxn tutorial}.
@ -20,4 +20,4 @@
and in general, i realized the importance of family and community; noticed that i really enjoy running, dancing and programming; and had a great time and a lot of inspiration being part of the merveilles community.
my {theme of the year}, "simpleza" (related to simplicity, light-heartedness and laughter) was present all along at different levels. maybe not as much as i would have liked, but it gives me a nice baseline for the following years :)
my word of the year, "simpleza" (related to simplicity, light-heartedness and laughter) was present all along at different levels. maybe not as much as i would have liked, but it gives me a nice baseline for the following years :)

View File

@ -1,19 +0,0 @@
# highlights of 12022
my {theme of the year} 12022 was patience.
what mostly defined the year was the start of my phd program and our big move from mexico city to madrid.
the following is basically a summary of our {log}; we couldn't do "as much" (?) but we kept iterating and maintaining the project, patiently:
* we practiced and showcased the {qiudanz technique} in a couple of live-coding {performances}: {alive computing dance} and {qiudanz tag}.
* we published and maintained our ebooks: {introduction to uxn programming book} and {introducción a programación uxn}.
* learned lua; used it for developing {jarotsim}, a playground for the discovery, exploration and livecoding of turing machines, and also {esglua}, our static site generator. participated in advent of code with it.
* created {norpet}, a digital pet and a study of hand-powered logic.
* started using manyverse / ssb, and created {la sala}, an experimental room for a slow and online-but-offline-first community.
in the upcoming year our intention is to iterate and advance the project, especially focusing in workshops and activities around the {qiudanz technique}. there's still a lot to explore there!
we are very grateful for all the support we have received during the year. thank you!
previously: {highlights of 12021}.

View File

@ -1,15 +0,0 @@
# highlights of 12023
this year, my {theme of the year} was {oleaje} (waves). the idea was to observe the cycles regarding interests, patterns of thought, initiatives, self-perception, and more, that I tend to move in. it was very enlightening!
looking at the {log}: we presented {jarotsim at hlci}, started a section on {thoughts}, and changed our {identidad visual}. it seems my {academic life} took a toll on our online activity!
however, going IRL, it's worth noting that our friend @vladomiro translated {norpet mascota digital} and used it several times in (computer) science dissemination events in UNAM, CDMX! it's great seeing projects getting a life of their own!
additionally, and very importantly, this year we met in person several people that we only knew from the online world, mainly from the merveilles community but also from the fedi(verse) in general! it was delightful to put bodies and faces to handles and avatars, and by extension to embrace their complexity. it's interesting how their/our richness as humans is not always reflected in online activity. looking forward to meeting them again, and to getting to know more people!
finally, regarding paper (?), I journaled way more than in previous years. I got a little notebook and the habit of writing down my thoughts there. thanks to doing that I have been able to process the {oleaje} better. in general, I preferred to write there instead of "shouting at the (online) void". also, this is the first time I manage to log the {books} I read during a year. I'm excited to continue with both activities!
the {theme of the year} for the upcoming year is commitment, and in that sense I'll commit to advance and develop compudanzas further. the objective is to log at least one activity per month. we're starting already!
previously: {highlights of 12022}.

View File

@ -1,28 +1,23 @@
# compudanzas
lang=en es->{inicio}
explorations of joyful and human-scale computing.
developing computers that are dances, rituals, games.
explorations of computing at a human scale: what happens when computers are dances, rituals, games?
find out what we are up to {now}, visit our activity {log}, read {about} our work, or {contact} us!
explorando computación a escala humana: ¿qué pasa cuando las computadoras son danzas, rituales, juegos?
=> ./now.gmi {now}
=> ./img/foto_laconsagracion_playa.jpg photo of the rite of computing: there is a wiggly row of shapes in the floor, each of them composed of small blocks of wood. a person is crouching, building one of these shapes. other two people are watching, sitting in the floor. there are some cardboard shapes with symbols, also in the floor.
# proyectos
## selected projects
=> ./qiudanz_technique.gmi {qiudanz technique}
=> ./img/foto_qiudanz.png photo of a smiling person who seems to be dancing, with extended arms in front of them. they are pointing towards the left, where there's an overlay of some kind of code written with addition and subtraction signs, periods, and square brackets.
=> ./jarotsim.gmi {jarotsim}
=> ./img/screenshot_jarotsim_banner.png four rows of tiles, each one with a different pattern of tiles and with a bird with a hat in a different pose and position
=> ./talks_and_workshops.gmi {talks and workshops}
=> ./uxn_tutorial.gmi {uxn tutorial}
=> ./las_danzas.gmi {las danzas}
=> ./coloring_computers.gmi {coloring computers}
=> ./img/foto_coloring-computers_cover-lee.png photo of the cover of the zine, colored
=> ./img/foto_coloring-computers_7seg-lee.png photo of a pair of colored pages of the zine, with a 7 segment display showing the digits 2 and 3
=> ./img/foto_coloring-computers_pcd2019.png photo of a pair of colored pages of the zine, showing a digital circuit answering if two colors are the same
=> ./beans_computing.gmi {beans computing}
=> ./img/foto_norpet_01.png photo of the norpet paper board accompanied with soy and black beans, and a hand starting to solve it
=> ./img/foto_norpet_02.png closeup photo of the norpet board completely solved in one of its states: the grid is full of either soy or black beans.
# acerca
=> ./introduction_to_uxn_programming_book.gmi {introduction to uxn programming book}
=> ./img/screenshot_uxn-pong-paddles-and-ball.png screenshot showing the stage of the pong game: a couple of paddles at the sides, and a ball at the center
=> ./about.gmi {about}
=> ./acerca.gmi {acerca}
=> ./log.gmi {log}
=> ./references.gmi {references}
=> ./contact.gmi {contact}
=> ./support.gmi {support}

View File

@ -1,19 +0,0 @@
# identidad visual
lang=es
nos llaman la atención los colores ocres, desérticos, otoñales, de tierra.
# notas
=> ./img/iconocompudanzas_64.png icono de compudanzas
interés en la arena, el silicio, cristales, las máquinas que de ahí surgen, así como el desierto del origen y eventual futuro terrestre.
otoño como decaimiento y posibilidad de renovación, aunque se requiera algo de tiempo de espera.
el color de la piel que nos vemos, no blanca, cercana al suelo. arcilla, adobe (¿y adobo?), ladrillos, juego de bloques para construir.
épocas en las que siento más orgánico celebrar y compartir así.
# web
el sitio web responde a las preferencias del tema de color preferido; hay un tema "dark" y otro "light".

View File

@ -1,5 +1,5 @@
# apuntes de imagemagick
lang=es
# redimensiona imagen
```
@ -61,7 +61,7 @@ convert imagen.png -quality 100 -units PixelsPerInch -density 300x300 imagen.pdf
para el caso opuesto:
```
convert -quality 100 -units PixelsPerInch -density 300x300 imagen.pdf imagen.png
convert -quality 100 -units PixelsPerInch -density 300x300 imagen.pdf imagen.png
```
# reduce la cantidad de colores
@ -92,7 +92,7 @@ convert -size 100x100 xc:'rgb(0,255,0)' imagen_verde.png
con ruido:
```
convert -size 100x100 xc: +noise Random imagen_ruido.png
convert -size 100x100 xc: +noise Random imagen_ruido.png
```
# compone/encima imágenes
@ -100,7 +100,7 @@ convert -size 100x100 xc: +noise Random imagen_ruido.png
para componer una imagen con fondo transparente sobre otra que se convertirá en su fondo
```
composite -gravity center imagen_con_alpha.png fondo.png resultado.png
composite -gravity center imagen_con_alpha.png fondo.png resultado.png
```
# extiende imagen

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 992 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="83" height="30"><rect id="back" fill="#f6c915" x="1" y=".5" width="82" height="29" rx="4"/><svg viewBox="0 0 80 80" height="16" width="16" x="7" y="7"><g transform="translate(-78.37-208.06)" fill="#1a171b"><path d="m104.28 271.1c-3.571 0-6.373-.466-8.41-1.396-2.037-.93-3.495-2.199-4.375-3.809-.88-1.609-1.308-3.457-1.282-5.544.025-2.086.313-4.311.868-6.675l9.579-40.05 11.69-1.81-10.484 43.44c-.202.905-.314 1.735-.339 2.489-.026.754.113 1.421.415 1.999.302.579.817 1.044 1.546 1.395.729.353 1.747.579 3.055.679l-2.263 9.278"/><path d="m146.52 246.14c0 3.671-.604 7.03-1.811 10.07-1.207 3.043-2.879 5.669-5.01 7.881-2.138 2.213-4.702 3.935-7.693 5.167-2.992 1.231-6.248 1.848-9.767 1.848-1.71 0-3.42-.151-5.129-.453l-3.394 13.651h-11.162l12.52-52.19c2.01-.603 4.311-1.143 6.901-1.622 2.589-.477 5.393-.716 8.41-.716 2.815 0 5.242.428 7.278 1.282 2.037.855 3.708 2.024 5.02 3.507 1.307 1.484 2.274 3.219 2.904 5.205.627 1.987.942 4.11.942 6.373m-27.378 15.461c.854.202 1.91.302 3.167.302 1.961 0 3.746-.364 5.355-1.094 1.609-.728 2.979-1.747 4.111-3.055 1.131-1.307 2.01-2.877 2.64-4.714.628-1.835.943-3.858.943-6.071 0-2.161-.479-3.998-1.433-5.506-.956-1.508-2.615-2.263-4.978-2.263-1.61 0-3.118.151-4.525.453l-5.28 21.948"/></g></svg><text fill="#1a171b" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif"
font-weight="700" font-size="14" x="50" y="20">Donate</text></svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 626 KiB

Some files were not shown because too many files have changed in this diff Show More