better style, DOS colors, simplified content

This commit is contained in:
randogoth 2025-12-20 11:44:54 +02:00
parent c9b86ba012
commit 8338b702b4
12 changed files with 182 additions and 234 deletions

View file

@ -1,84 +1,27 @@
Title: Curriculum Vitae Title: Curriculum Vitae
Date: 2014-03-14 11:04 Date: 2025-12-20 10:06
Slug: cv Slug: cv
### Professional Fields * 2020 - now product manager, developer, and consultant at Randonauts LLC
* 2003 - 2020 freelance media artist and live video performer (VJ)
* planning and organisation of events
* video-animation, video-production, post-production, video-art, live-video performance
* screen-design, GUI-design
* cultural management
* project management
* development of custom multimedia applications and installations
* software development in python / C / C++ / JavaScript / Max/MSP
* teaching of IT related topics
* bartending
### Artistic Research
* photography
* live cinema
* ambient field recordings
* audiovisual dance performance
* video-animation, video-production, post-production, video-art, live-video
* creative coding
* node based graphical programming
* hardware controllers
* PCB design
* development of custom multimedia applications and installations
### Professional Career
* since 2020 project manager, developer, and consultant at Randonauts LLC
* 2006 - 2020 working as a freelance media artist
* 2013 - 2015 manager of kopiloten coworking space
* 2011 - 2013 coop culture & media office with Silke Müller as “kopiloten”
* 2010 - 2012 bartender at café & bar “Salon Schmück”
* 2005 - 2012 founding member of the management board of VC VisualBerlin e.V.
* 2009 - 2010 Lessing Gymnasium Berlin supervision of a group of students who form a „student company“ specialized on IT support
* 2007 - 2008 freelancer at GP. Gemeinschaftspraxis für Gestaltung
* 2007 multimedia programming for DEON GbR
* 2006 - 2007 freelance Flash work for Ableton AG
* 2004 - 2006 Ableton AG, Berlin, web-administration, graphic-design, Flash animations
* 2005 freelance web development work for Educational Design GmbH
* 2005 lectures and workshops for students on VJing, JuKuFa Brandenburg
* 2005 Fachhochschule Brandenburg Max/Jitter workshop for students
* 2005 Hochschule für Gestaltung Karlsruhe Max/Jitter workshop for students
* 2003-2004 eedo GmbH, Potsdam, content-management, Flash animations
* 2003 Labor Limbach, Heidelberg, inventory & logistics management
* 2003 freelance web developer for freedom2speak film project, Berlinale Film Fest.
* 2002-2003 garderobe23, Berlin, internship web-development, Max/MSP programming and live-video
* 2000-2001 Viviance GmbH, Potsdam, content-management, LaTeX scripting, graphic-design, Flash animations
* 2000 AV Media GmbH, Heidelberg, internship video-production, post-production, multimedia-design
* 1999-2000 geriatric hospital Bethanien, Heidelberg, social service as nurse in rehabilitation ward, temporary work in accounting department
### Artistic Career
* since 1998 media artist
* 2011 - 2020 co-curator of the [Scope Sessions](http://scopesessions.org) * 2011 - 2020 co-curator of the [Scope Sessions](http://scopesessions.org)
* 2003 - 2020 VJ / live video performer * 2013 - 2015 founder and manager of kopiloten coworking space
* 2009 - 2014 technical consultant and assistant of audiovisual events at Collegium Hungaricum * 2011 - 2013 co-founder of kopiloten cultural management office
* 2011 - 2012 assistant of the management of the video-arts association VisualBerlin e.V. * 2010 - 2012 Salon Schmück, bartender & service
* 2005 2011 member of the management board of VisualBerlin e.V. * 2005 2012 co-founder and member of the management board of VisualBerlin e.V.
* 2010 head coordinator of the visualberlinFestival 2010 * 2009 - 2010 Lessing Gymnasium Berlin, supervision of a student company specialized on IT support
* 2010 - 2011 member of the interdisciplinary art collective Fax Nylon Opium Radikalisten * 2004 - 2007 Ableton AG, Berlin, web-administration, graphic-design, Flash animations
* 2010 member of the live cinema and arts collective übermutanty * 2005 - 3005 freelance web development work for Educational Design GmbH
* 2009 member of the audiovisual dance performance collective Instant Delay * 2003 - 2004 eedo GmbH, Potsdam, content-management
* 2008 co-organiser of the µ:avit VJ festival * 2003 - 2003 Labor Limbach, Heidelberg, inventory & logistics management
* 2006 co-organiser of the AVIT>C23 VJ festival * 2002 - 2003 garderobe23, Berlin, internship web-development, media art
* 2005 co-founder of VisualBerlin e.V. * 2000 - 2001 Viviance GmbH, Potsdam, content-management
* 2005 - 2008 member of the VJ and Live Cinema collective =ff= * 2000 - 2000 AV Media GmbH, Heidelberg, internship video-production
* 1999 - 2000 geriatric hospital Bethanien, Heidelberg, social service as nurse
### Education ### Education
* 2000-2009 studies of computer sciences with focus on digital media, Fachhochschule Brandenburg, Brandenburg an der Havel * 2000 - 2009 Digital Media, Fachhochschule Brandenburg, Brandenburg an der Havel
* 1990-1999 private Gymnasium Englisches Institut Heidelberg, A-Levels (Abitur): 2,3 * 1990 - 1999 Gymnasium Englisches Institut Heidelberg
* 1996-1997 Northwest High School, Justin, TX, USA * 1996 - 1997 Northwest High School, Justin, TX, USA
* 1994-1996 Jugendkunstschule Heidelberg * 1986 - 1990 Eichendorff Grundschule, Heidelberg
* 1986-1990 Eichendorff Grundschule, Heidelberg
### Language Skills
* German (native speaker)
* English (fluent)
* French (basic)

View file

@ -2,11 +2,11 @@ Title: Connect
Save_as: connect.html Save_as: connect.html
- <i class="nf nf-md-email_outline"></i> <SCRIPT LANGUAGE="JavaScript">user = 'kflux';site = 'posteo.de';document.write('<a href=\"\x6D\x61\x69\x6C\x74\x6F:' + user + '@' + site + '\">');document.write(user + '@' + site + '</a>');</SCRIPT> - <i class="nf nf-md-email_outline"></i> <SCRIPT LANGUAGE="JavaScript">user = 'kflux';site = 'posteo.de';document.write('<a href=\"\x6D\x61\x69\x6C\x74\x6F:' + user + '@' + site + '\">');document.write(user + '@' + site + '</a>');</SCRIPT>
- <i class="nf nf-md-mastodon"></i> [@randogoth](https://universeodon.com/@randogoth) - <i class="nf nf-md-mastodon"></i> [@randogoth](https://mas.to/@randogoth)
- <i class="nf nf-fae-butterfly"></i> [@randogoth](https://bsky.app/profile/randogoth.bsky.social)
- <i class="nf nf-linux-codeberg"></i> [@randogoth](https://codeberg.org/randogoth)
- <i class="nf nf-cod-github_inverted"></i> [@randogoth](https://github.com/randogoth) - <i class="nf nf-cod-github_inverted"></i> [@randogoth](https://github.com/randogoth)
- <i class="nf nf-fae-telegram"></i> [@randogoth](https://t.me/randogoth) - <i class="nf nf-fae-telegram"></i> [@randogoth](https://t.me/randogoth)
- <i class="nf nf-md-discord"></i> [NN_Solex#1613](https://discordapp.com/users/380023043050962954) - <i class="nf nf-md-discord"></i> [@randogoth](https://discordapp.com/users/380023043050962954)
- <i class="nf nf-md-instagram"></i> [@lastfluxunit](https://instagram.com/lastfluxunit) - <i class="nf nf-md-instagram"></i> [@randogoth_](https://instagram.com/randogoth_)
- <i class="nf nf-fa-facebook_official"></i> [flux.tobias.raayoni.last](https://fb.com/flux.tobias.raayoni.last/)
- <i class="nf nf-fa-flickr"></i> [@kflux](https://www.flickr.com/photos/kflux)
- <i class="nf nf-md-linkedin"></i> [@lastfluxunit](https://www.linkedin.com/in/lastfluxunit/) - <i class="nf nf-md-linkedin"></i> [@lastfluxunit](https://www.linkedin.com/in/lastfluxunit/)

View file

@ -1,6 +0,0 @@
Title:
Slug: current
Date: 2023-07-05 19:00
Save_as: current.html
Besides my ongoing work for [Randonautica]({filename}../blog/randonautica.md) I am currently creating a project called *<i class="nf nf-md-nfc"></i>uminous Field Communication* that involves using NFC tags as medium for non-linear fiction and location-based storytelling.

View file

@ -10,16 +10,6 @@ Tobias Raayoni Last
- Roaming the borderlands of art and technology, magic and engineering - Roaming the borderlands of art and technology, magic and engineering
- Project Manager of the random journey adventure app [Randonautica]({filename}../blog/randonautica.md) - Project Manager of the random journey adventure app [Randonautica]({filename}../blog/randonautica.md)
My artistic practice spans various disciplines, including [live video performance]({filename}../blog/kiritanflux.md), installations, [ambient sound]({filename}../blog/crystal-canyons.md) work, and the creation of code and [electronic devices]({filename}../blog/psithemius.md). Spanning various disciplines, including [live video performance]({filename}../blog/kiritanflux.md), installations, [ambient music]({filename}../blog/crystal-canyons.md), the creation of code and [electronic devices]({filename}../blog/psithemius.md) my creative process often revolves around "*placeness*" and "*temporality*."
----- Using *place* as an active agent that informs and shapes both the content and form of my work, I draw on the highly subjective concepts of *psychogeography* and the *spirit of place*. I also incorporate *suspension of disbelief* and *magical thinking* within my practice to explore the boundaries between the material and the immaterial, allowing my creative work to expand into the *metaphysical*.
<i class="nf nf-oct-location"></i> PLACENESS & TECHNOMANCY <i class="nf nf-md-crystal_ball"></i>
At the core of my creative process has always been the exploration of the interplay between "*placeness*" and "*temporality*." I use *place* as a fundamental agent to inform and shape the content and form of my work, usually by drawing upon the highly subjective concepts of *psychogeography* and the *spirit of place*.
In recent years I have started to incorporate *magical thinking* into my work, especially the more technical pieces. Through earnest and rigorous research in fields like ancient Greco-Egyptian sorcery, modern Chaos Magic, and other questionable practices I explore the boundaries between the material and immaterial and allow my artistic practice to expand into the spiritual.
<i class="nf nf-md-magnify"></i> CURATORSHIP & COLLABORATION <i class="nf nf-md-account_group"></i>
Besides creating and performing art myself I love collaboration, discussion and exchange with other artists. It led me to co-founding and managing an [artist association]({filename}../blog/visualberlin.md), several festivals, and a popular [monthly artist talk series]({filename}../blog/scope.md).

View file

@ -31,7 +31,7 @@ body {
font-size: 1.4em; font-size: 1.4em;
line-height: 1.2em; line-height: 1.2em;
text-align: left; text-align: left;
background: #090A0E; background: #000;
color: #bbb; color: #bbb;
height: 100vh; height: 100vh;
overflow-x: hidden; overflow-x: hidden;
@ -115,7 +115,7 @@ th, td
a { a {
background-color: #bbb; background-color: #bbb;
color:#090A0E; color:#000;
padding: 0.2em 0.3em 0em 0.3em; padding: 0.2em 0.3em 0em 0.3em;
} }
@ -164,10 +164,10 @@ hr
} }
abbr { abbr {
color: #555;
display: inline; display: inline;
text-decoration: none; text-decoration: none;
padding: 0; padding: 0;
float:left;
} }
.hentry .entry-summary p { .hentry .entry-summary p {
@ -187,16 +187,6 @@ abbr {
padding: 0; padding: 0;
} }
.post-info {
color: #555;
}
.author a {
padding: 0;
background: none;
color: #555;
}
@keyframes cursor-blink { @keyframes cursor-blink {
0% { 0% {
opacity: 0; opacity: 0;
@ -206,6 +196,7 @@ abbr {
#root { #root {
display: block; display: block;
margin-top: 2em; margin-top: 2em;
margin-bottom: 2em;
} }
[contenteditable="true"]:active, [contenteditable="true"]:active,
@ -240,7 +231,7 @@ blockquote {
border: 1px solid; border: 1px solid;
margin: 0; margin: 0;
padding: 0 1em; padding: 0 1em;
background: #222; background: #555;
-webkit-hyphens: auto; -webkit-hyphens: auto;
-moz-hyphens: auto; -moz-hyphens: auto;
-ms-hyphens: auto; -ms-hyphens: auto;

View file

@ -1,5 +1,35 @@
const randomColor = Math.floor(Math.random()*16777215).toString(16); function pickColors() {
document.querySelector('#blog-title').firstElementChild.style.backgroundColor = '#' + randomColor; const backgrounds = [
"#000000", // Black
"#0000AA", // Blue
];
const highlights = [
"#00AA00", // Green
"#00AAAA", // Cyan
"#AA00AA", // Magenta
"#AA5500", // Brown
"#AAAA00", // Yellow
"#AA0000", // Red
"#555555", // Dark Gray
"#5555FF", // Bright Blue
"#55FF55", // Bright Green
"#55FFFF", // Bright Cyan
"#FF5555", // Bright Red
"#FF55FF", // Bright Magenta
"#FFFF55", // Bright Yellow
];
return {
// background: backgrounds[Math.floor(Math.random() * backgrounds.length)],
highlight: highlights[Math.floor(Math.random() * highlights.length)],
};
}
const { background, highlight } = pickColors();
document.querySelector('.home').style.backgroundColor = background;
document.querySelector('#blog-title').firstElementChild.style.backgroundColor = highlight;
let scrollHeight = Math.max( let scrollHeight = Math.max(
document.body.scrollHeight, document.documentElement.scrollHeight, document.body.scrollHeight, document.documentElement.scrollHeight,
@ -28,115 +58,115 @@ window.addEventListener('scroll', () => {
} }
}); });
//components // //components
//console component // //console component
class Console{ // class Console{
comps=[]; // comps=[];
input_received=false; // input_received=false;
blocking_interval=null; // blocking_interval=null;
text_color="#bbb"; // text_color="#bbb";
constructor(root){ // constructor(root){
this.elem=document.createElement("span"); // this.elem=document.createElement("span");
this.elem.className="console"; // this.elem.className="console";
root.appendChild(this.elem); // root.appendChild(this.elem);
this.resetTextColor(); // this.resetTextColor();
} // }
appendComponent(comp){ // appendComponent(comp){
this.comps.push(comp); // this.comps.push(comp);
this.elem.appendChild(comp.elem); // this.elem.appendChild(comp.elem);
} // }
writeLine(txt){ // writeLine(txt){
let text=new Text(txt,this.text_color); // let text=new Text(txt,this.text_color);
this.appendComponent(text); // this.appendComponent(text);
} // }
async readLine(txt){ // async readLine(txt){
let text=new Text(txt,this.text_color); // let text=new Text(txt,this.text_color);
this.appendComponent(text); // this.appendComponent(text);
let input=new Input(this.text_color); // let input=new Input(this.text_color);
this.appendComponent(input); // this.appendComponent(input);
input.elem.focus({ preventScroll: true}); // input.elem.focus({ preventScroll: true});
return new Promise(resolve=>{ // return new Promise(resolve=>{
this.blocking_interval=setInterval(()=>{ // this.blocking_interval=setInterval(()=>{
if(this.input_received){ // if(this.input_received){
this.input_received=false; // this.input_received=false;
clearInterval(this.blocking_interval); // clearInterval(this.blocking_interval);
resolve(input.elem.innerText); // resolve(input.elem.innerText);
} // }
},500); // },500);
}) // })
} // }
setTextColor(color){ // setTextColor(color){
this.text_color=color; // this.text_color=color;
} // }
resetTextColor(){ // resetTextColor(){
this.text_color="#bbb"; // this.text_color="#bbb";
} // }
//helpers // //helpers
get lastComp(){return this.comps[this.comps.length-1]}; // get lastComp(){return this.comps[this.comps.length-1]};
} // }
//text component // //text component
class Text{ // class Text{
constructor(txt,color){ // constructor(txt,color){
this.elem=document.createElement("span"); // this.elem=document.createElement("span");
this.elem.className="text"; // this.elem.className="text";
this.elem.style.color=color; // this.elem.style.color=color;
this.elem.innerText=txt; // this.elem.innerText=txt;
} // }
} // }
//input component // //input component
class Input{ // class Input{
constructor(color){ // constructor(color){
this.elem=document.createElement("span"); // this.elem=document.createElement("span");
this.elem.style.color=color; // this.elem.style.color=color;
this.elem.contentEditable=true; // this.elem.contentEditable=true;
this.elem.addEventListener('keydown',function(e){ // this.elem.addEventListener('keydown',function(e){
let key=e.key; // let key=e.key;
if(key=="Enter"){ // if(key=="Enter"){
e.preventDefault(); // e.preventDefault();
cmd.input_received=true; // cmd.input_received=true;
cmd.lastComp.elem.contentEditable=false; // cmd.lastComp.elem.contentEditable=false;
cmd.lastComp.elem.style.borderWidth="0px"; // cmd.lastComp.elem.style.borderWidth="0px";
} // }
}); // });
} // }
} // }
/************************************/ // /************************************/
let root=document.getElementById("root"); // let root=document.getElementById("root");
let cmd=new Console(root); // let cmd=new Console(root);
let prompt = "C:\\>" // let prompt = "C:\\>"
async function execute(){ // async function execute(){
let command= await cmd.readLine(prompt); // let command= await cmd.readLine(prompt);
if ( command == "projects" ) window.location = "/current.html"; // if ( command == "projects" ) window.location = "/current.html";
else if ( command == "blog" ) window.location = "/blog"; // else if ( command == "blog" ) window.location = "/blog";
else if ( command == "archive" ) window.location = "/archive"; // else if ( command == "archive" ) window.location = "/archive";
else if ( command == "dir" ) window.location = "/archive"; // else if ( command == "dir" ) window.location = "/archive";
else if ( command == "home" ) window.location = "/"; // else if ( command == "home" ) window.location = "/";
else if ( command == "connect" ) window.location = "/connect.html"; // else if ( command == "connect" ) window.location = "/connect.html";
else if ( command == "reboot" ) location.reload(); // else if ( command == "reboot" ) location.reload();
else if ( command == "a:" ) { // else if ( command == "a:" ) {
prompt = "A:\\>"; // prompt = "A:\\>";
cmd.writeLine("\n"); // cmd.writeLine("\n");
cmd=new Console(root); // cmd=new Console(root);
execute(); // execute();
} // }
else if ( command == "b:" ) { // else if ( command == "b:" ) {
prompt = "B:\\>"; // prompt = "B:\\>";
cmd.writeLine("\n"); // cmd.writeLine("\n");
cmd=new Console(root); // cmd=new Console(root);
execute(); // execute();
} // }
else if ( command == "c:" ) { // else if ( command == "c:" ) {
prompt = "C:\\>"; // prompt = "C:\\>";
cmd.writeLine("\n"); // cmd.writeLine("\n");
cmd=new Console(root); // cmd=new Console(root);
execute(); // execute();
} // }
else { // else {
cmd.writeLine("\nSyntax error\n"); // cmd.writeLine("\nSyntax error\n");
cmd=new Console(root); // cmd=new Console(root);
execute(); // execute();
} // }
} // }
execute(); // execute();

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -7,11 +7,11 @@
{% for article in dates if article.category != 'blog' %} {% for article in dates if article.category != 'blog' %}
<article class="hentry"> <article class="hentry">
<abbr class="published" title="{{ article.date.isoformat() }}"> {{ article.locale_date }} </abbr>
<header> <header>
<h2 class="entry-title"> <h2 class="entry-title">
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a> <a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a>
</h2> </h2>
<abbr class="published" title="{{ article.date.isoformat() }}">[{{ article.locale_date }}]&nbsp;</abbr>
<span class="entry-summary">{{ article.summary }}</span> <span class="entry-summary">{{ article.summary }}</span>
</header> </header>
</article> </article>

View file

@ -69,7 +69,7 @@
{{ DESCRIPTION }} {{ DESCRIPTION }}
</footer><!-- /#contentinfo --> </footer><!-- /#contentinfo -->
{% endif %} {% endif %}
<span id="root"></span> <span id="root">&nbsp;</span>
{% if JS_OVERRIDE %} {% if JS_OVERRIDE %}
<!-- Script specified by the user --> <!-- Script specified by the user -->
{% for js in JS_OVERRIDE %} {% for js in JS_OVERRIDE %}

View file

@ -7,11 +7,11 @@
{% for article in articles_page.object_list %} {% for article in articles_page.object_list %}
<article class="hentry"> <article class="hentry">
<abbr class="published" title="{{ article.date.isoformat() }}"> {{ article.locale_date }} </abbr>
<header> <header>
<h2 class="entry-title"> <h2 class="entry-title">
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a> <a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a>
</h2> </h2>
<abbr class="published" title="{{ article.date.isoformat() }}">[{{ article.locale_date }}]&nbsp;</abbr>
<span class="entry-summary">{{ article.summary }}</span> <span class="entry-summary">{{ article.summary }}</span>
</header> </header>
</article> </article>

View file

@ -38,14 +38,14 @@ MARKDOWN = {
ARTICLE_URL = "{category}/{slug}.html" ARTICLE_URL = "{category}/{slug}.html"
ARTICLE_SAVE_AS = "{category}/{slug}.html" ARTICLE_SAVE_AS = "{category}/{slug}.html"
INDEX_SAVE_AS = "archive/all.html" INDEX_SAVE_AS = "projects/all.html"
ARCHIVES_SAVE_AS = 'archive/index.html' ARCHIVES_SAVE_AS = 'projects/index.html'
PATH = 'content' PATH = 'content'
ARTICLE_PATHS = ['blog',] ARTICLE_PATHS = ['blog',]
PAGE_PATHS = ['pages',] PAGE_PATHS = ['pages',]
MENUITEMS = [('Current', '/current.html'), ('Archive', '/archive/'), ('Blog', '/blog/'), ('Connect', '/connect.html'), ('CV', '/pages/cv.html')] MENUITEMS = [('Projects', '/projects/'), ('Articles', '/blog/'), ('Connect', '/connect.html'), ('CV', '/pages/cv.html')]
SUMMARY_MAX_LENGTH = 0 SUMMARY_MAX_LENGTH = 0
DEFAULT_DATE_FORMAT = '%Y-%m-%d' DEFAULT_DATE_FORMAT = '%Y-%m-%d'