home.social

#kiki — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #kiki, aggregated by home.social.

fetched live
  1. @maz yikes. that would certainly explain why it can't find the rss file to write to!

    v1.1.9 shipped with these options in settings.php:

    // sets the filename used for the generated rss feed
    $rss_file = "rss.xml";

    // rss directory
    // by default, uses the site's root folder
    $rss_dir = "./";

    // error and layout pages
    $rss_document = $rss_dir . $rss_file;

    if any of those aren't set properly, it's definitely going to have problems writing to $rss_document :)

    this kind of situation usually happens when you've got an older version of kiki installed, and then upgrade to a newer version and forget to upgrade settings.php as well. (e.g. upgrading from v1.1.5 to v1.1.9). i sometimes have to add new variables to settings.php, so new features can be added

    #kiki

  2. @maz yikes. that would certainly explain why it can't find the rss file to write to!

    v1.1.9 shipped with these options in settings.php:

    // sets the filename used for the generated rss feed
    $rss_file = "rss.xml";

    // rss directory
    // by default, uses the site's root folder
    $rss_dir = "./";

    // error and layout pages
    $rss_document = $rss_dir . $rss_file;

    if any of those aren't set properly, it's definitely going to have problems writing to $rss_document :)

    this kind of situation usually happens when you've got an older version of kiki installed, and then upgrade to a newer version and forget to upgrade settings.php as well. (e.g. upgrading from v1.1.5 to v1.1.9). i sometimes have to add new variables to settings.php, so new features can be added

    #kiki

  3. @maz masto is definitely the best place for bug reports - you're doing it all right! :) having them posted publicly gives everyone into #kiki a chance to chime in and stay in the loop with features/problems.

    that's an interesting problem! it appears to be a file permissions issue with rss.xml.

    things to check:
    - php needs to have write permission for that file - can you confirm the file's RWX permissions on the server? according to nearlyfreespeech's faq, the web server is running on freebsd - so the command should be:
    ls -al rss.xml

    - if the permissions are OK, it's possible there is a problem with the file's path or filename. we can see which filepath it's trying to write by adding this line to library/rss.php after line 132 (before it tries to fopen):
    echo("I'm trying to access the rss file here: " . $rss_document);

    this will print the filepath to the browser when you load a page. if the filepath doesn't look right to you (e.g. it doesn't match the actual location of rss.xml on the server), then you can make adjustments in settings.php to $rss_dir and $rss_file if necessary.

  4. @maz masto is definitely the best place for bug reports - you're doing it all right! :) having them posted publicly gives everyone into #kiki a chance to chime in and stay in the loop with features/problems.

    that's an interesting problem! it appears to be a file permissions issue with rss.xml.

    things to check:
    - php needs to have write permission for that file - can you confirm the file's RWX permissions on the server? according to nearlyfreespeech's faq, the web server is running on freebsd - so the command should be:
    ls -al rss.xml

    - if the permissions are OK, it's possible there is a problem with the file's path or filename. we can see which filepath it's trying to write by adding this line to library/rss.php after line 132 (before it tries to fopen):
    echo("I'm trying to access the rss file here: " . $rss_document);

    this will print the filepath to the browser when you load a page. if the filepath doesn't look right to you (e.g. it doesn't match the actual location of rss.xml on the server), then you can make adjustments in settings.php to $rss_dir and $rss_file if necessary.

  5. 𝓦𝓪𝓲𝓽𝓲𝓷𝓰 𝓯𝓸𝓻 𝓪 𝓼𝓽𝓪𝓻 𝓽𝓸 𝓯𝓪𝓵𝓵...

    Hund Kiki umgeben von goldenen Sternen ⭐️

    #dogsofmastodon #fedidogs #mastodogs #fedirudel #dog #photography #Fotografie #hund #kiki #stars #sterne

  6. 𝓦𝓪𝓲𝓽𝓲𝓷𝓰 𝓯𝓸𝓻 𝓪 𝓼𝓽𝓪𝓻 𝓽𝓸 𝓯𝓪𝓵𝓵...

    Hund Kiki umgeben von goldenen Sternen ⭐️

    #dogsofmastodon #fedidogs #mastodogs #fedirudel #dog #photography #Fotografie #hund #kiki #stars #sterne

  7. @maz thank you for being so patient. debugging this without access to the machine this is on is challenging 😅

    if you've still got the energy to keep picking at this, i've added some extra null checks. this one might work better for you.

    try replacing compare_pages_by_date() with this code instead:

    // utility function to compare two pages, and return the newer one
    function compare_pages_by_date($pageA, $pageB)
    {
    // page A
    $pageA_source = file($pageA);
    $page_dataA = extract_header_and_content($pageA_source);
    if ($page_dataA !== null && array_key_exists("header", $page_dataA))
    $page_dateA = get_header_key($page_dataA['header'], "date");

    // page B
    $pageB_source = file($pageB);
    $page_dataB = extract_header_and_content($pageB_source);

    if ($page_dataB !== null && array_key_exists("header", $page_dataB))
    $page_dateB = get_header_key($page_dataB['header'], "date");

    // make sure that the page dates exist before comparing, and return comparison
    // this is really ugly because usort no longer supports returning bools
    if ($page_dateA !== null && $page_dateB !== null)
    {
    if ($page_dateA == $page_dateB)
    return 0;
    elseif ($page_dateA < $page_dateB)
    return -1;
    else
    return 1;
    }
    // sorry, we have no page dates to compare
    else
    return 0;
    }

    #kiki

  8. @maz thank you for being so patient. debugging this without access to the machine this is on is challenging 😅

    if you've still got the energy to keep picking at this, i've added some extra null checks. this one might work better for you.

    try replacing compare_pages_by_date() with this code instead:

    // utility function to compare two pages, and return the newer one
    function compare_pages_by_date($pageA, $pageB)
    {
    // page A
    $pageA_source = file($pageA);
    $page_dataA = extract_header_and_content($pageA_source);
    if ($page_dataA !== null && array_key_exists("header", $page_dataA))
    $page_dateA = get_header_key($page_dataA['header'], "date");

    // page B
    $pageB_source = file($pageB);
    $page_dataB = extract_header_and_content($pageB_source);

    if ($page_dataB !== null && array_key_exists("header", $page_dataB))
    $page_dateB = get_header_key($page_dataB['header'], "date");

    // make sure that the page dates exist before comparing, and return comparison
    // this is really ugly because usort no longer supports returning bools
    if ($page_dateA !== null && $page_dateB !== null)
    {
    if ($page_dateA == $page_dateB)
    return 0;
    elseif ($page_dateA < $page_dateB)
    return -1;
    else
    return 1;
    }
    // sorry, we have no page dates to compare
    else
    return 0;
    }

    #kiki

  9. @maz since i can't really replicate the bug on my end, maybe improving the function that's giving you fits would be a better solution. can you try replacing the entire function compare_pages_by_date() in page.php (it starts at line 522) with this code:

    // utility function to compare two pages, and return the newer one
    function compare_pages_by_date($pageA, $pageB)
    {
    // page A
    $pageA_source = file($pageA);
    $page_dataA = extract_header_and_content($pageA_source);
    if (array_key_exists("header", $page_dataA))
    $page_dateA = get_header_key($page_dataA['header'], "date");

    // page B
    $pageB_source = file($pageB);
    $page_dataB = extract_header_and_content($pageB_source);

    if (array_key_exists("header", $page_dataB))
    $page_dateB = get_header_key($page_dataB['header'], "date");

    // make sure that the page dates exist before comparing, and return comparison
    // this is really ugly because usort no longer supports returning bools
    if ($page_dateA !== null && $page_dateB !== null)
    {
    if ($page_dateA == $page_dateB)
    return 0;
    elseif ($page_dateA < $page_dateB)
    return -1;
    else
    return 1;
    }
    // sorry, we have no page dates to compare
    else
    return 0;
    }

    #kiki

  10. @maz since i can't really replicate the bug on my end, maybe improving the function that's giving you fits would be a better solution. can you try replacing the entire function compare_pages_by_date() in page.php (it starts at line 522) with this code:

    // utility function to compare two pages, and return the newer one
    function compare_pages_by_date($pageA, $pageB)
    {
    // page A
    $pageA_source = file($pageA);
    $page_dataA = extract_header_and_content($pageA_source);
    if (array_key_exists("header", $page_dataA))
    $page_dateA = get_header_key($page_dataA['header'], "date");

    // page B
    $pageB_source = file($pageB);
    $page_dataB = extract_header_and_content($pageB_source);

    if (array_key_exists("header", $page_dataB))
    $page_dateB = get_header_key($page_dataB['header'], "date");

    // make sure that the page dates exist before comparing, and return comparison
    // this is really ugly because usort no longer supports returning bools
    if ($page_dateA !== null && $page_dateB !== null)
    {
    if ($page_dateA == $page_dateB)
    return 0;
    elseif ($page_dateA < $page_dateB)
    return -1;
    else
    return 1;
    }
    // sorry, we have no page dates to compare
    else
    return 0;
    }

    #kiki

  11. @maz wooo welcome new kiki sysop! :D

    hmmmm i just tried using that style of link in several places, including on a page and in a menu, and both worked without errors on my end.

    e.g. in bug format:
    [&tag=post&sort=newest]{My Posts Sorted from Newest To Oldest}

    or as an url:
    index.php?&tag=post&sort=newest

    can you tell me more about how/where you're trying to use that link (as well as the exact bug syntax or url you're using for the link) so i can replicate the error?

    #kiki

  12. @maz wooo welcome new kiki sysop! :D

    hmmmm i just tried using that style of link in several places, including on a page and in a menu, and both worked without errors on my end.

    e.g. in bug format:
    [&tag=post&sort=newest]{My Posts Sorted from Newest To Oldest}

    or as an url:
    index.php?&tag=post&sort=newest

    can you tell me more about how/where you're trying to use that link (as well as the exact bug syntax or url you're using for the link) so i can replicate the error?

    #kiki

  13. hooray! i finally posted v1.2.0 of the kiki homepage construction set. this includes a new feature that allows for Podcasting RSS feed support, which you can see in action at cd-rom.ca

    tomotama.itch.io/kiki

    thank you kiki sysops for keeping this tiny web alive with your experiments and feats. i haven't had to touch wordpress in two years and counting thanks to you 🙏

    #kiki #smallweb #indieWeb #php

  14. hooray! i finally posted v1.2.0 of the kiki homepage construction set. this includes a new feature that allows for Podcasting RSS feed support, which you can see in action at cd-rom.ca

    tomotama.itch.io/kiki

    thank you kiki sysops for keeping this tiny web alive with your experiments and feats. i haven't had to touch wordpress in two years and counting thanks to you 🙏

    #kiki #smallweb #indieWeb #php

  15. RT @gustavocaetano: Soeben veröffentlicht: HermesOffice — eine Open-Source-Bürosuite (Word, Sheets, Slides, PDF), bei der die KI ein echtes Agent-System ist, das zu 100 % auf deiner Maschine läuft. Kein Cloud-Konto. Kein Drittanbieter-Proxy. Der Assistent, der deine Dokumente bearbeitet, ist derselbe Agent, der deine Dateien, dein Gedächtnis und deine Tools kennt. Gebaut auf der hervorragenden GenOffice-Engine (Apache-2.0), geforkt und neu positioniert. → github.com/criptogus/HermesO… @Teknium @NousResearch Link GitHub - criptogus/HermesOffice: HermesOffice — KI-native Bürosuite, geforkt von GenOffice... HermesOffice — KI-native Bürosuite, geforkt von GenOffice (Apache-2.0), mit nativem Hermes-Agent-KI - criptogus/HermesOffice github.com

    mehr auf Arint.info

    #Apache20 #Bürosuite #GenOffice #HermesOffice #KIKI #OpenSource #arint_info

    https://x.com/gustavocaetano/status/2084701947869704299#m

  16. @ehushagen oh that looks fantastic :D great choice of colour palette and css mods! 👏

    my pleasure. it sure warms my heart seeing a new #kiki instance

  17. @ehushagen oh that looks fantastic :D great choice of colour palette and css mods! 👏

    my pleasure. it sure warms my heart seeing a new #kiki instance

  18. @vga256 eric.iseasyto.ca/

    Thanks again for #kiki, this is exactly what I was looking for :)

  19. @vga256 eric.iseasyto.ca/

    Thanks again for #kiki, this is exactly what I was looking for :)

  20. @ehushagen edit: that is most definitely NOT covered on the help page 😩 looks like i had a bunch of edits made to the help page that weren't included in the last update.

    the keyword you're looking for is:
    sort:newest
    or
    sort:oldest

    !{show pages with tags:post sort:newest}

    #kiki

  21. @ehushagen edit: that is most definitely NOT covered on the help page 😩 looks like i had a bunch of edits made to the help page that weren't included in the last update.

    the keyword you're looking for is:
    sort:newest
    or
    sort:oldest

    !{show pages with tags:post sort:newest}

    #kiki

  22. @vga256 Hi! Sorry, I have another question.

    The !{show pages with tags:post} works perfectly - thank you for that! Is there a way, though, to have those posts sorted with the most recent first? They are currently being displayed oldest first.

    I've tried poking around with &sort=newest but not had any luck.

    #kiki

  23. @vga256 Hi! Sorry, I have another question.

    The !{show pages with tags:post} works perfectly - thank you for that! Is there a way, though, to have those posts sorted with the most recent first? They are currently being displayed oldest first.

    I've tried poking around with &sort=newest but not had any luck.

    #kiki

  24. I've been playing around with #kiki (tomotama.com/kiki) and I adore it. This is everything I'm looking for to replace a chonky Wordpress installation.

    Small snag, though, and I hope someone has insight: how do I create a page of posts like a traditional blog?

  25. I've been playing around with #kiki (tomotama.com/kiki) and I adore it. This is everything I'm looking for to replace a chonky Wordpress installation.

    Small snag, though, and I hope someone has insight: how do I create a page of posts like a traditional blog?

  26. Garorock Festival 2026 🎶
    📅 26.–28.06.2026
    📍 Marmande, France
    🎸 EDM / Rap / Pop · from €165.00

    🔊 KI/KI, Bigflo & Oli, Major Lazer, Timmy Trumpet & many more
    🎧 Full playlist + 🎟 tickets: festivalplaylist.com

    #GarorockFestival2026 #Marmande #France #EDM #Rap #Pop #KIKI #BigfloOli #MajorLazer #TimmyTrumpet #KAYTRANADA #GIMS #Garorock2026 #festival2026 #festival #livemusic #lineup #musicfestival

  27. Garorock Festival 2026 🎶
    📅 26.–28.06.2026
    📍 Marmande, France
    🎸 EDM / Rap / Pop · from €165.00

    🔊 KI/KI, Bigflo & Oli, Major Lazer, Timmy Trumpet & many more
    🎧 Full playlist + 🎟 tickets: festivalplaylist.com

    #GarorockFestival2026 #Marmande #France #EDM #Rap #Pop #KIKI #BigfloOli #MajorLazer #TimmyTrumpet #KAYTRANADA #GIMS #Garorock2026 #festival2026 #festival #livemusic #lineup #musicfestival

  28. @kickingk wow! afaik you might be the first person to run #kiki in production mode on a rasbpi! that's so awesome.

  29. @kickingk wow! afaik you might be the first person to run #kiki in production mode on a rasbpi! that's so awesome.

  30. I’ve also moved the website from being hosted on my #Synology NAS to a Raspberry Pi running #Yunohost.

    Yunohost itself is an absolute dream. It makes setting up subdomains an absolute doddle. The apps that can be installed on it vary in quality though.

    Some are perfect. Others basically unusable. Most require a degree of technical knowledge that undermines yunohost's purpose of making self-hosting something anyone can do. If the solution to anything involves SSH voodoo then it is not user friendly.

    #kiki runs like a dream on it.

  31. I’ve also moved the website from being hosted on my #Synology NAS to a Raspberry Pi running #Yunohost.

    Yunohost itself is an absolute dream. It makes setting up subdomains an absolute doddle. The apps that can be installed on it vary in quality though.

    Some are perfect. Others basically unusable. Most require a degree of technical knowledge that undermines yunohost's purpose of making self-hosting something anyone can do. If the solution to anything involves SSH voodoo then it is not user friendly.

    #kiki runs like a dream on it.

  32. @vga256 I'm experimenting with #kiki but I'm struggling to get going since I usually develop using ddev, and that requires port numbers on the url.

    eg. a link in bug: [help/start]{help index} will be presented by kiki in html as "kiki.ddev.site/help/start", when I need it to be either just "/help/start" or "kiki.ddev.site:8843/help/start".

    I found that editing /library/utils on line 209 to add
    ```
    . ":" . $_SERVER['HTTP_X_FORWARDED_PORT']
    ```
    after the $_SERVER['SERVER_NAME'] works, but I will have to disable that come deployment time. Is there a better way, or should I make it more robust and include a port number in settings and then send you a PR?

  33. @vga256 I'm experimenting with #kiki but I'm struggling to get going since I usually develop using ddev, and that requires port numbers on the url.

    eg. a link in bug: [help/start]{help index} will be presented by kiki in html as "kiki.ddev.site/help/start", when I need it to be either just "/help/start" or "kiki.ddev.site:8843/help/start".

    I found that editing /library/utils on line 209 to add
    ```
    . ":" . $_SERVER['HTTP_X_FORWARDED_PORT']
    ```
    after the $_SERVER['SERVER_NAME'] works, but I will have to disable that come deployment time. Is there a better way, or should I make it more robust and include a port number in settings and then send you a PR?

  34. Skriv under på denne kampanjen for å regulere «KI»!

    underskrift.kikinorge.no/

    Som kunstner er dette noe som påvirker meg direkte.

    Jeg har valgt å ikke lengre dele kunsten min på nettet så det ikke kan brukes til å gjengis i disse generatorene uten anerkjennelse eller kompensasjon.

    #NorskTut #allheimen #KI #norge #norway #kiki

  35. Skriv under på denne kampanjen for å regulere «KI»!

    underskrift.kikinorge.no/

    Som kunstner er dette noe som påvirker meg direkte.

    Jeg har valgt å ikke lengre dele kunsten min på nettet så det ikke kan brukes til å gjengis i disse generatorene uten anerkjennelse eller kompensasjon.

    #NorskTut #allheimen #KI #norge #norway #kiki

  36. To get to a new level for my drawings, I decided to draw from artists I like.

    And who could be the best to start with? David Revoy, an artist who translated the open-source principle to art and comics. Maybe you know his Pepper & Carrot comic series.

    And because I work with Krita I picked the Kiki interpretation of @davidrevoy to re-draw freely.
    Thanks, David, for your inspiring art.

    And just to let you know, I won't stop Procedural Art and Sculpting.

    #waved #noai #kiki #krita #davidrevoy #kritaartists #art #mastoart #fediart #noai #code #artwork #minimalism #creativecoding #random #arts #artistsonmastodon #foss #opensource #linux #schools #colors #dream #comic #girl #hair #artwork

  37. waking up to kiki on the front page of hacker news was equal parts surprising and intimidating.

    news.ycombinator.com/item?id=4

    while i can't say the threads contained much enlightening discussion, i'm relieved that the nastiness that constituted earlier years of HN posting culture was minimal

    #indieWeb #worldwideweb #kiki

  38. waking up to kiki on the front page of hacker news was equal parts surprising and intimidating.

    news.ycombinator.com/item?id=4

    while i can't say the threads contained much enlightening discussion, i'm relieved that the nastiness that constituted earlier years of HN posting culture was minimal

    #indieWeb #worldwideweb #kiki

  39. after months of behind the scenes coding, i'm happy to announce the re-launch of my podcast: CD-ROM Safari!

    if you're new to the show, it's a friendly and welcoming look at multimedia software of the 1990s.

    i've rebuilt the entire site to use kiki, my php-based homepage construction kit. it now generates podcast RSS feeds on the fly, along with nice cover art and episode metadata :D

    prior episodes (from 2018 to early 2026) have been archived into season 1.

    the new episode, posted 5 minutes ago, is the first episode of season 2. it's a relaunch of the show, along with a whole new website to facilitate software preservation for educational games, edutainment and multimedia.

    the website: cd-rom.ca/podcast

    podcast rss 2.0: cd-rom.ca/podcast.xml

    apple podcasts: podcasts.apple.com/us/podcast/

    enjoy the show :D

    #multimedia #cdrom #retroComputing #retroGaming #dosGaming #msdos #macintosh #vintageApple #kiki #softwarepreservation #podcast