Masthash

#Kitten

Meow Moe
17 minutes ago

突然始まる、子猫たちのかわいいじゃれ合い。【赤ちゃん猫 保護猫】 https://www.meowmoe.com/62417/

#cat #gatten #kitten #meow #neko #straycat #UCl2ydRVrnkoSLRBKwpblqKQ #yavrukedi #котёнок #エウレカねこ部 #子猫 #猫猫動画

突然始まる、子猫たちのかわいいじゃれ合い。【赤ちゃん猫 保護猫】
Meow Moe
47 minutes ago

ご飯の時間でごきげんになるラグドールのたぬきに似た猫 #ragdoll #kitten #ラグドール #ごきげん #ねこのいる生活 https://www.meowmoe.com/62409/

#neko #ラグドール

ご飯の時間でごきげんになるラグドールのたぬきに似た猫 #ragdoll #kitten #ラグドール #ごきげん #ねこのいる生活
Meow Moe
5 hours ago
仲良く大暴れするほど元気になった子猫たち【赤ちゃん猫 保護猫】
🎨 By Peter
9 hours ago

Sorting through some of my files I found a photo of two of my cats taken around 18years ago, Feebee (the ginger) and Zak (the dark kitten), they used to love to play together, it might look rough but they were only playing.. Both left over the proverbial 'rainbow bridge' many, many moons ago, but I still miss them.

#Cat #Cats #Caturday #CatsOfMastodon #Pets #Kitten #Kittens

Ginger Cat 'Feebee' and dark kitten 'Zak' playing together (C)P.Gamble Photography
Meow Moe
11 hours ago

セラ社長とかくれんぼした結果…笑【シンガプーラ】 #animals #cat #pets #singapura #kitten #子猫 https://www.meowmoe.com/62320/

#neko #シンガプーラ

セラ社長とかくれんぼした結果…笑【シンガプーラ】 #animals #cat #pets #singapura #kitten #子猫
Meow Moe
13 hours ago

ふたりボッチの子猫が哀愁あふれる後ろ姿で待つものは?【赤ちゃん猫 保護猫】 https://www.meowmoe.com/62298/

#cat #gatten #kitten #meow #neko #straycat #UCl2ydRVrnkoSLRBKwpblqKQ #yavrukedi #котёнок #エウレカねこ部 #子猫 #猫猫動画

ふたりボッチの子猫が哀愁あふれる後ろ姿で待つものは?【赤ちゃん猫 保護猫】

#kitten?】【OD目当て】#耳の気持ちよく笑う人見#HakaseFuyuki・ ・【10ページ】 #HaYun hololive-ID 01:50:57Total 省エネ型並べ

Meow Moe
17 hours ago
【シンガプーラ】ヘアーゴムで遊んでみた #animals #cat #pets #singapura #kitten #子猫 #jump
Sarah J Hoodlet
18 hours ago

Today, I offer you my cat, who put herself in purrison! 😂

(Don’t worry, she escaped mere moments after I snapped this photo. And now that she knows how to get in, she’ll probably do so a hundred times more in the future.)

#BlackCat #kitten #cats #CatsOfMastodon #WildChild

A black kitten underneath the wicker-style bottom of a papasan chair. She’s staring through the gaps in the bottom center of the photo, her eyes wild and full of playfulness.

That feeling AFTER an Amazing Workout🔥🐱🐾

#cats #fitness #exercise #running #humor #kitten #catsofmastodon

Meow Moe
1 day ago

ふたりボッチの子猫 ママが頭をナデナデすると幸せそうな表情で眠りにつく【赤ちゃん猫 保護猫】 https://www.meowmoe.com/62149/

#cat #gatten #kitten #meow #neko #straycat #UCl2ydRVrnkoSLRBKwpblqKQ #yavrukedi #котёнок #エウレカねこ部 #子猫 #猫猫動画

ふたりボッチの子猫 ママが頭をナデナデすると幸せそうな表情で眠りにつく【赤ちゃん猫 保護猫】
Meow Moe
2 days ago
ひとりでトイレに行けるようになった子猫【赤ちゃん猫 保護猫】
FaizalR
2 days ago

My daughter took this picture of #kitten.

Meow Moe
2 days ago

子猫のトワ、父の出張でお留守番② ハエを追う #保護猫 #子猫 #kitten #towa #きじしろ #トワ https://www.meowmoe.com/61860/

#neko #子猫

子猫のトワ、父の出張でお留守番② ハエを追う #保護猫 #子猫 #kitten #towa #きじしろ #トワ
Meow Moe
3 days ago

ふたりボッチの子猫がご飯に気づて、おじに飛びかかる。【赤ちゃん猫 保護猫】 https://www.meowmoe.com/61741/

#cat #gatten #kitten #meow #neko #straycat #UCl2ydRVrnkoSLRBKwpblqKQ #yavrukedi #котёнок #エウレカねこ部 #子猫 #猫猫動画

ふたりボッチの子猫がご飯に気づて、おじに飛びかかる。【赤ちゃん猫 保護猫】
Andrey Markov (Safe)
3 days ago
I always find rolling my own instance i probably wouldn't put it past some of them are, sure, but the addiction and the addict ceases to be an office cat #cat #cats #catpics #kitty #kitties #kitten #kittens #mastocats #catstodon #catsofmastodon #bot https://redd.it/fa68hr
GayClub
4 days ago

this lil sprog is coming into my care and needs 24hr monitoring, so please be a bit patient with me if I take a couple days to get back to you! I have no idea how I'm supposed to sleep because I'm doing this solo/I'm the only person available at the experience level needed to give her the best chance possible

not a fundraiser post! just a heads up - but if you donate a kofi i'll give her a kiss from you https://ko-fi.com/gayclub because why not

her name is Peanut, but dono $15 for the laff and i'll add a name to it and we'll see how long it gets

she's fostering with me for 4 weeks, sadly not a forever bab!

#cat #kitten #kibby #babyyyy

Aral Balkan
4 days ago

Just updated Domain to use the new <page> tag in Kitten and I love how much nicer it is.

It’s great to be able to include htmx¹ and apply hx-boost² (think of it as magic ajax) to the whole app from the base layout component.

Also love being able to specify, for example, that Alpine.js³ should be included on the page from a component that uses it.

Diff: https://codeberg.org/domain/app/commit/b12ec58027044ad52b83d04e09d6273b907b3af1?style=split&whitespace=show-all

¹ https://htmx.org/
² https://htmx.org/attributes/hx-boost/
³ https://alpinejs.dev/

#Kitten #Domain #SmallWeb #web #dev

Sarah J Hoodlet
4 days ago

Jazzy’s creeping into your feed to wish you all a very wonderful #caturday! 😸

#BlackCat #cats #kitten #creeper

A black kitten sitting in a gray basket, her yellow-green eyes just visible over the edge.
Ambigram Art
4 days ago

Introducing my 9 year old daughter and our Kitten, Sally on this special #caturday

#kitten #catsofmastodon #fedicats

#Cats #Cat #Kat #Katze #Katzen #Mao #Chat #Catstodon #Animals #Pets #Kitty #HelloKitty

My daughter with her hood up and a kitten nestling inside the hoodie
Aral Balkan
4 days ago

Quick heads up if you’re playing with Kitten, I’ve just removed the option to return an object (with title, icon, libraries, etc., properties) from your page routes now that we have the new <page> tag that lets you do that from within html tagged template strings not just from your pages but also from fragments and components.

(So we have one way of doing things that works consistently everywhere now.)

:kitten: 💕

https://codeberg.org/kitten/app#the-page-tag

#Kitten #SmallWeb #SmallTech #web #dev

Helen H
4 days ago

Not Ai artwork.

A photograph-based portrait of a Maine Coon kitty with it’s beautiful, long, trademark fur in gray, brown and white, stopping by to wish everyone a Happy #Caturday. Digital applications have been added for an artistic effect.
#cat #cats #kitty #kitties #KittyCat #kitten #MastoCats #CatsOfMastodon #FediArt #art #artists #artwork
#BuyIntoArt #FediGiftShop #GiftIdeas #fediverse

Maine Coon Portrait may be purchased here: https://hhphotography.pixels.com/featured/maine-coon-portrait-hh-photography-of-florida.html

A photograph-based portrait of a Maine Coon kitty facing right with it’s beautiful, long, trademark fur in colors of gray brown and white.  Digital applications have been added for an artistic effect.
Aral Balkan
5 days ago

Kitten¹ now has a <page> tag!

Use it to:

• specify certain <head> elements for your page (title, icon, etc.)

• list any libraries you want to include in your page from the ones Kitten has first-class support for (HTMX, HTMX WebSocket, Alpine.js, and Water.css)

Happy weekend, all! :)

:kitten: 💕

¹ https://codeberg.org/kitten/app

#Kitten #SmallWeb #SmallTech #web #dev #javaScript #js #NodeJS

Screenshot of code and browser showing how to add the Water CSS library to a page in kitten using the <page> tag.

The relevant piece of code reads:

export default () => html`
  <page water>
  <h1>Hello, world!</h1>
`
Stef Isen
5 days ago
Aral Balkan
5 days ago

Folks: So, Aral, you’re building Kitten all by yourself?

Me: Umm, yeah, something like that…

https://codeberg.org/kitten/app/src/branch/main/CONTRIBUTORS.md

#Kitten #SmallWeb #SmallTech #contributors #foss #community

Screenshot of the Kitten Contributors page on Codeberg:

Heading: Contributors

Kitten is authored by Aral Balkan with the contributions of the people featured below as well as the 234 people, organisations, and teams that helped create the 373 packages that make Kitten possible.

Heading: Special thanks to

This list is loosely based on the All Contributors idea and curated by hand to say a personal thank-you to the people who have contributed to Kitten in substantial ways. 😸💕

Table with columns for profile picture/avatar, name, an emoji summarising the contribution, and details:

Name: Aral Balkan
Emoji: 😻 
Details: Chief meow.

Name: Dmitry Ivanov
Emoji: 💻 (code)
Details: Kitten’s template renderer inlines and extends Dmitry’s xhtm library.

Dmitry worked with me (Aral) over several days through more than a dozen issues to improve xhtm and thus also Kitten’s HTML rendering. His help has been invaluable in ensuring one of Kitten’s core components works reliably.

Name: Jason Miller
Emoji: 💻 (code)
Details: Jason’s htm is what Dmitry’s xhtm is based on and Jason’s vhtml, like xhtm, is now inlined into Kitten’s template renderer and extended with functionality like Kitten’s Markdown support.

For eight months or so of its development, Kitten was using htm and vhtml verbatim as dependencies and could not have gotten to where it is today without them.

Name: Andrew Chou
Emoji: 🤔 (ideas)
Details: Thanks to Andrew’s idea, Kitten files have compound extensions (so what used to…
Clayton Hove
5 days ago

Divinity just found out her name either means she’s an angel or some type of fudge.

https://cdhs.net/meet-the-pets/ #kitten #cat #cats #catsofmastodon #sheltercat #adoptdontshop #northdakota

A new chapter in the Adventures in Cat Rescuing, has begun once again with this little guy!

You’ll notice the end of tail looks bad, that is if from narcosis. He has been seen by our Vet and has amputation surgery scheduled on Monday. But he has some other issues going on and needs a little more care before that, so that it has a better chance at recovery. #kitten #rescue

Kit Oz
6 days ago

I find triskeles/triskelions visually mesmerizing, especially when they are made up of animals. So I drew my own Celtic-inspired, three-legged animal spiral out of.... kittens. Because: kittens.

Then I put my drawing on a tote bag.

Available in rainbow (Happy Pride Month!) or ginger.

Rainbow:
https://www.amazon.com/dp/B0C57KHXNC

Ginger:
https://www.amazon.com/dp/B0C57KB8S3

#kitten #kittens #CelticKnot #celtic #spiral #cat #cats #cute #rainbow #ginger #pride #PrideMonth #catnap #catsofmastodon #caturday

Three rainbow tabby kittens snuggle in a spiral, on a white tote bag with black handles.
Three ginger kittens snuggle in a spiral, on a white tote bag with black handles.
Clayton Hove
1 week ago

“By hooky, I’m Brookie!” — Brookie, still working on a catchphrase

https://cdhs.net/meet-the-pets/ #cat #cats #catsofmastodon #kitten #kittens #kittensofmastodon #sheltercat #adoptdontshop

Aral Balkan
1 week ago

Coming soon to Kitten¹: the *drumroll* <kitten> tag

You’ll soon be able to specify common <head> attributes, the syntax highlighting theme, and which libraries to include (htmx, alpine, water) declaratively.

(You can still return an object from your routes or use the HEAD slot to add any custom code to the head of your pages. The advantage of the <kitten> tag method is you can use it in pages as well as in fragments/components.)

:kitten: 💕

¹ https://codeberg.org/kitten/app

#Kitten #SmallWeb

Screenshot: Code editor on left, web browser on right.

Code editor contents:

export default () => html`
  <kitten
    water
    syntax-highlighting-theme='color-brewer'
  >

  <markdown>
    # Water

    ![Water CSS library logo: the letters CSS with waves showing through them.](https://github.com/kognise/water.css/raw/master/assets/logo.svg)

    ## What is it?

    [Water](https://watercss.kognise.dev/)[^1] is a minimalist CSS stylesheet for semantic HTML that is responsive and has light and dark mode support. It’s convenient for quick experiments, teaching, and demos and could also be used as a good base stylesheet for your Small Web sites and apps.

Web browser contents:

Title: Water

Image: Water CSS library logo: the letters CSS with waves showing through them.

Heading: What is it?

Water[1] is a minimalist CSS stylesheet for semantic HTML that is responsive and has light and dark mode support. It’s convenient for quick experiments, teaching, and demos and could also be used as a good base stylesheet for your Small Web sites and apps.

Heading (top half visible): How do you use it in Kitten? …
Klaudia (aka jinxx)
1 week ago

#Kitten stickers have arrived. They're looking great! :kitten: 🎉 Labelled the cat. And the bike. 😸 Thank you, @aral!
#SmallWeb

Photo of a sticker and a small pink greeting card with the same white kitten motif in front of a rear bike wheel and a second sticker on the mudguard.
Photo of a white tiger cat sniffing on a kitten sticker that's been held to her nose.
Photo of the white tiger cat, the kitten sticker lies on her head.
Aral Balkan
1 week ago

Just added Water.css¹ support to Kitten².

Water is a CSS stylesheet for semantic HTML that’s responsive, has good typographical defaults, and light/dark mode support.

Useful for demos, teaching, and also as a good base stylesheet for your Small Web places.

Just add WATER (see what I did there?) to your libraries array in your pages.

¹ https://watercss.kognise.dev/
² https://codeberg.org/kitten/app/

#Kitten #SmallWeb #SmallTech #WaterCSS #CSS #web #dev #stylesheet #html #semanticHTML

Screenshot: code editor on left, browser on right.

Browser contents:

Heading 1: Water

Water CSS library logo: the letters CSS with waves showing through them.

Heading 2: What is it?

Water¹ is a minimalist CSS stylesheet for semantic HTML that is responsive and has light and dark mode support. It’s convenient for quick experiments, teaching, and demos and could also be used as a good base stylesheet for your Small Web sites and apps.

Heading 2: How do you use it in Kitten?

Just include it in the list of libraries for your page:

export default function () {
  return {
    markup: html`<h1>Hello, world!</h1>`,
    libraries: [WATER]
  }
}

Heading 2: View source

View the source code for this example (link)

Footnote: 1. Source: https://github.com/kognise/water.css ↩︎

Contents of editor:

export default () => {
  return {
    markup: markdown`
      # Water

      ![Water CSS library logo: the letters CSS with waves showing through them.](https://github.com/kognise/water.css/raw/master/assets/logo.svg)

      ## What is it?

      [Water](https://watercss.kognise.dev/)[^1] is a minimalist CSS stylesheet for semantic HTML …
      ## View source

      [View the source code for this example.](https://codeberg.org/kitten/app/src/branch/main/examples/trivia/index.page.js)

      [^1]: Source: https://github.com/kognise/water.css

      <style>
        pre { font-size: 1.25em; }
      </style>
    `,
    libraries: [WATER],
    syntaxHighlightingTheme: 'color-brewer'
  }
}
Aral Balkan
1 week ago

Just published Kitten’s¹ new database² commands:

- kitten db [table name] to see info the database/a specific table
- kitten db delete [table name] to delete the database/a specific table
- kitten db tail <table name> to follow a specific table

Full docs: https://codeberg.org/kitten/app#database-commands

¹ https://codeberg.org/kitten/app
² https://codeberg.org/small-tech/jsdb

#Kitten #SmallWeb #SmallTech #JavaScriptDatabase #javascript #database #JSDB #web #dev #js #NodeJS #commandLineInterface #CLI

Stef Isen
1 week ago

One year ago today - Freyja, Daisy, Colette and Ursula...

#cat #cats #catsofmastodon #kitten #kittens #portugal #AdoptDontShop #rescuecats

Stef Isen
1 week ago

"Us? Up to no good? We have no idea what you mean..."

#cat #cats #catsofmastodon #kitten #kittens #portugal #AdoptDontShop #rescuecats

Sarah J Hoodlet
1 week ago

Almost forgot #Caturday! Here’s Jasnah (Jazzy) watching the birds on the feeders with intensity! 😻

#BlackCat #cats #kitten

A black kitten leaning over the arm of a brown couch, looking out the window with wide, very alert yellow-green eyes.
Aral Balkan
2 weeks ago

Sitting at the hotel bar in Paris, sipping some red wine and adding a new database command to the Kitten¹ command-line interface.

You can now tail JavaScript Database (JSDB)² tables with:

kitten db <table name>

(Remember that JSDB writes its tables as append-only JavaScript logs.)

¹ https://codeberg.org/kitten/app
² https://codeberg.org/small-tech/jsdb

#Kitten #SmallWeb #JavaScript #database #JSDB

My screen, with a terminal window on the left and a web browser on the right. The browser is showing a page titled Kitten count with lots of kitten emojis. 

Kitten is running the kitten db kittens command in the terminal.

Relevant terminal output:

💾 Listing kittens table head with live tail (press Ctrl+C to break)

   File:

   /var/home/aral/.local/share/small-tech.org/kitten/databases/var.home.aral.Projects.kitten.app.examples.persisted-kitten-count.localhost.443/kittens.js

   Head and live tail:

   export const _ = { 'count': 1 };
   _['count'] = 2;
   _['count'] = 3;
   …
   _['count'] = 62;
   _['count'] = 63;
Aral Balkan
2 weeks ago

Well, it might take a few more minutes in front of the mirror but I think I still scrub up well for three years shy of the big five-oh. All dolled up and ready to fly to Paris for my talk on Kitten* and the Small Web tomorrow at #NewCrafts.

Can’t believe this year marks my 40th year of programming.

I owe a lot to my dad bringing home that IBM XT compatible and a BASIC manual when I was 7.

I’m fact, that’s where my talk tomorrow begins…

* https://codeberg.org/kitten/app

#Kitten #SmallWeb

Selfie of me, taken via the bathroom. mirror, looking smug in a black t-shirt.
Aral Balkan
2 weeks ago

#Kitten now has high-level support for file uploads.

- Automatically serves uploads by unique ID at /uploads/<unique-id>
- Makes the list of files available to your POST routes in an array at request.files

This is how simple it is:

https://codeberg.org/kitten/app#multipart-forms-and-file-uploads

Under the hood, I’ve replaced body-parser with express-busboy. That’s a major change so if something breaks for you, please do let me know. Also fixed a few things, including a parse error triggered by some scripts.

#SmallWeb #web #dev

Aral Balkan
2 weeks ago

So I just finished implementing file upload support in Kitten and it is very neat (if I say so myself) :kitten: 🎉

Will merge it into main tomorrow after some more testing.

Can’t wait to show it off as part of the personal microblog site example I’m going to be livecoding at NewCrafts Paris on Thursday.

(Just look at how little code there is in the POST route and the main page to work with uploads.)

’Night ’night folks :)

#Kitten #SmallWeb #SmallTech #web #dev

Screenshot of Aral’s Place (https://localhost/post/) in browser. 

Navigation: Home, About, Post 

Heading: New Post

Label: Post contents
Text area with text: “This is Prince of Persia, one of my favourite games as a chile.”

Label: image
Image upload control showing prince-of-persia-cga-four-colours.webp selected.

Label: Alt-text (describe the image for people who use screen readers)
Screenshot of Prince of Persia’s opening screen with a Persian palace rendered in four-colour CGA.

Button: Publish

Footer: opyright © 2023-present, Aral Balkan. All content on this site is released under Creative Commons Attribution-NonCommercial-ShareAlike 4.0.
Screenshot of the main page with the post published.
Screenshot of code (index.post.js):

if (!db.posts) db.posts = []

export default function (request, response) {
  db.posts.push({
    date: new Date(),
    content: request.body.post,
    files: request.files,
    altText: request.body.altText
  })

  request.session.postPublished = true

  response.writeHead(303, {Location: '/'})
}
Screenshot of code with the following lines highlighted:

${details.files?.map(file => html`
  <img src=${file.path} alt=${details.altText ? details.altText : file.name}>
`)}

Full visible portion of code listing from start:

import Site from './Site.layout.js'

const Post = ({details}) => html`
  <li class='Post'>
    <time datetime=${details.date.toISOString()}>${details.date.toLocaleString()}</time>
    <p>${safelyAddHtml(details.content)}</p>
    <div id='images'>
      ${details.files?.map(file => html`
        <img src=${file.path} alt=${details.altText ? details.altText : file.name}>
      `)}
    </div>
  </li>
  <style>
    .Post { list-style-type: none; }
    .Post time { display: block; width: 100%; }
  </style>
`

export default function (request, _response) {
  const postPublished = request.session.postPublished === true
  request.session.postPublished = false

  const posts = db.posts ? [...db.posts].reverse() : []
  const hasPosts = posts.length > 0

  return html`
    <${Site} page='home' title='Public Posts'>
      <if ${postPublished}>
        <p class='ok'>Post published!</p>
      </if>
      <if ${hasPosts}>
        <ul id='posts'>
          <!--
          <li>
            <time datetime='2023-05-91T10:25'>Friday, May 19, 2023</time>
            <p>Setting up my Small Web site.</p>
          </li>
          -->
          ${posts.map(post => html`
            <${Post} details=${post} />
          `)}
        </ul>
      <else>
        <markdown>
Aral Balkan
2 weeks ago

Me: Now, this time, I’m not going to implement anything big before a talk, just take my time, work on my presentation…

Also me: Hmm, let me see, what if I swap one of the core components in Kitten with this other thing… ah, yes, that should be fine…

#Kitten #SmallWeb

Aral Balkan
2 weeks ago

Oh no, the Kittens are going everywhere… someone stop me before I stick again!

#Kitten #stickers #OneWheel

OneWheel with a kitten’s head sticker next to one that reads “Float”.
Aral Balkan
2 weeks ago

Haha, the new Kitten stickers are pretty small so they don’t cover the StarLabs logo on my laptop and so is born the Kitten unicorn :)

(Very different to those other unicorns you hear about.)

#Kitten #unicorn #StarLabs #laptop #sticker #SmallWeb #SmallTech

Photo of black laptop lid with six-pointed star logo.
Photo of black laptop lid with Kitten’s head sticker with one of the points from the original logo sticking out the middle of it, making it look like a unicorn.
Aral Balkan
2 weeks ago

Yay, just received my Kitten stickers. If you’re in Paris for NewCrafts this week, make sure you ask me for one :)

:kitten:💕

#SmallWeb #SmallTech #Kitten #NewCrafts #stickers #Paris

A stack of stickers of a minimalist Kitten head on a wooden table.
Adam Cook
3 weeks ago

Ok, ok.

Here is another picture when Cheeto was a #kitten. 🤪

#CatsOfMastodon #Caturday

A purrito on his way to his first vet visit.

Cheeto kitten bundled up in a gray hand towel with only his fuzzy, orange head sticking out and looking at the camera.
Adam Cook
3 weeks ago

So... last year during June's heatwave, when my wife and I were getting ready to leave #Texas for #Detroit, a tiny #kitten that was living under a nearby industrial trash compactor found us.

We cleaned him all up, took him to the vet and because we already have two #cat babies of our own... my wife's co-worker who had recently lost her cat baby adopted him.

His new #ForeverHome parents named him "Cheeto".

Here he is at his first vet checkup.

1.5 lbs.

5 weeks (est.)

#cats #CatsOfMastodon

An fuzzy, orange, 5-week old kitten staring directly into the camera while sitting on a sky blue towel.

The kitten has brown and gray eyes and a pink nose.
Aral Balkan
3 weeks ago

If you’re running #Firefox (or Firefox derivatives like #Librewolf) in space-constrainted environments (e.g., while presenting at 1920×1080 resolution @ 200%, which is what I usually do for streams and which I’ll be using while doing my live coding session with #Kitten at @newcrafts in Paris next week, this #CSS hack lets you smoothly auto-hide Firefox’s #chrome to save valuable vertical space:

https://github.com/MrOtherGuy/firefox-csshacks/blob/master/chrome/autohide_toolbox.css

Make sure you follow these instructions first: https://github.com/MrOtherGuy/firefox-csshacks#setup

Aral Balkan
4 weeks ago

I do rather love being able to run tail¹ on my database tables² as I work on building Domain³ with Kitten⁴ ;)

(JSDB keeps tables in an append-only JavaScript log which are read fully into memory when the database is opened. And yes, if you noticed the class names, you can store custom objects.)

¹ Actually: tail -f <database path>/table.js | bat --paging=never --language=js
² https://codeberg.org/small-tech/jsdb
³ https://codeberg.org/domain/app
https://codeberg.org/kitten/app

#SmallWeb #JSDB #Domain #Kitten #databases

Screenshot of tail running in Terminal on the database of Domain with entries like the following:

_['payment']['selectedProvider'] = `paddle`;
_['payment']['ok'] = false;
 _['dns']['setupAttempted'] = true;

etc.
Aral Balkan
4 weeks ago

The initial integration of Paddle into Domain is now complete. I’m happy with how it turned out.

Now the only (“only” he says) bit left is reimplementing the provisioning and setup of Small Web servers running Kitten (or Kitten apps).

It‘s getting there…

:kitten: 💕

#Domain #Kitten #SmallWeb #paddle #payment #sustainability #subsisting #capitalism

Screenshot of top of Payment page under Domain: Settings. Navigation on left has General section with Sign out link, Setup section with Organisation, Applications, Public Suffix List (PSL), Domain Name Service (DNS), Virtual Private Server (VPS) and Payment sections. Payment is selected and all sections have checkmarks next to them. Under that, still in navigation, is a Places section with View and Create links.

On the main part of the page is a Provider drop-down with Paddle selected.

Copy:

Paddle

Paddle is a merchant of record. (They sell the subscriptions for you and handle everything, including global tax remittance.)

Paddle pays you on the 1st and 15th of the month. You must pay corporation tax on this income.

If you are making money with your Small Web Domain, please consider sharing a percentage of your earnings with Small Technology Foundation by becoming a patron so we can continue to develop the software you use to host your community.

[checkmark] Your Paddle settings are correct.

Heading: You’re using the sandbox.

Switch control (off): Live (start taking actual payments)

In the sandbox environment no actual payments will be taken. Please make sure everything works as expected before going live.

Instructions

(page continues in next screenshot)
Page continues from previous screenshot:

Heading: Instructions

Instructions

1. Get a Paddle account.

2. Read Stay Small! and Paddle’s Data Processing Addendum (GDPR).

3. Generate your API keys in both the sandbox and live environments.

4. Create a subscription plan in both the sandbox and live environments.

    The plan name, custom message, and icon are not important as they’re overriden by Domain. Set them to values that make sense for you.

    Set the other options according to the table below:

Table has Setting and Value columns:

Setting: Billing Interval, Value: Monthly
Setting: Trial Period, Value: 0
Setting: Enable quantity (checkbox), Value: unchecked

Finally, under Subscription Plan Pricing, set your default currency and price (please make this a round number; don’t use psychological pricing to manipulate people) and check any other currencies you want to support (Paddle handles currency conversions for you automatically at checkout).

5. Enter your API and subscription details from your Paddle account into the form below.

Heading: Sandbox environment

Label: Vendor ID (from here)

(Page continues in next screenshot)
Page continues from previous screenshot:

5. Enter your API and subscription details from your Paddle account into the form below.

Heading: Sandbox environment

Form:

Label: Vendor ID (from here [link])
Text input: 12211

Label: Vendor Auth Code (secret API Key; from here [link])
Password input with lots of dots in it.

Label: Subscription Plan ID (from here [link])
Text input: 51009

Heading: Live environment

Label: Vendor ID (from here [link])
Text input: 170742

Label: Vendor Auth Code (secret API Key; from here [link])
Password input with lots of dots in it.

Label: Subscription Plan ID (from here [link])
Text input: 829367

[Save button]

(Page continues in next screenshot)
(Page continues from previous screenshot.)

Stay small!

Commercial payments support in Domain is designed for small organisations that serve their communities.

It is simple by design. You only have one plan and we ask that you please also set prices in whole numbers (don’t use so-called “psychological pricing” to manipulate people).

These limitations are not bugs, they are features to encourage a Small Web.

The idea is that no single Small Web Domain should scale beyond a certain point. Your Small Web Domain should be serving your community and you should let other Small Web Domains serve theirs. This is our non-colonial approach as per the Small Technology Principles.

Support for a commercial option is necessary for organisations that have to exist under capitalism. It doesn’t mean we have to play their shortsighted manipulative games or adopt their success criteria. The goal is for our organisations to provide a bridge to a post-capitalist future (e.g., on where cities can use tokens to provide their citizens with access to the commons from the commons).

You will not become rich by running a Small Web Domain. If that’s your goal, please look elsewhere. However, you will hopefully be able to subsist under capitalism while helping bootstrap a kinder, fairer, and more caring world based on respect for human rights and democracy.

This is a Small Web host powered by Domain.
…
Released with 💕 under the AGPL Version 3.0 license.

Like this? Fund us!
Aral Balkan
4 weeks ago

Yep, it looks like I’m going with Paddle (https://paddle.com) as the first supported payment system for Domain*.

(Barring any issues with getting our use case approved.)

So, asking again: does anyone know anyone that works at #Paddle? Would love to talk to them about what we’re trying to do with the Small Web and Kitten ** and Domain and hopefully have them support our use case.

* https://codeberg.org/domain/app
** https://codeberg.org/kitten/app

#MoR #MerchantOfRecord #paddle #Domain #Kitten #SmallWeb

Karen Kaspar
1 month ago

A cute little cat is sitting in a meadow, looking out curiously between the green blades of grass. Is she watching butterflies or is she waiting for a nice person to share a few cuddles with her?

Find my soft pastels painting here: https://karen-kaspar.pixels.com/featured/curious-cat-in-the-green-meadow-karen-kaspar.html

#MastoArt #art #AYearForArt #painting #FediArt #FediGiftShop #cats #CatsOfMastodon #caturday #cat #CatLovers #pets #cute #animals #catstodon #WhiskersWednesday #furry #kitten #kitty #kittens #katze #meow #AnimalArt #PetPortrait #BuyIntoArt

Curious Cat in the Green Meadow is a pastel painting in landscape format painted by the artist Karen Kaspar. A cute little cat is sitting in a meadow, looking out attentively and curiously between the green blades of grass. The kitten has a white coat, the ears and the upper part of the head are brown mackerel. The green eyes reflect the lush green of the grasses.
Aral Balkan
1 month ago

So as Kitten¹ matures, I’m starting to talk about it at in-world events.

At the end of May, I’ll be in Paris, presenting Kitten (& Domain²) at @newcrafts

https://ncrafts.io/agenda

I arrive the 24th, speak the 25th, and leave the 27th.

If you’re around and want to chat about Small Web, Kitten & Domain, let me know and maybe we can arrange a small get-together if there’s enough interest.

:kitten:💕

¹ https://codeberg.org/kitten/app
² https://codeberg.org/domain/app

#Paris #SmallWeb #Kitten #Domain #NewCrafts

The Wee Owl Studio
1 month ago

New Listing!⭐️
I did this drawing years ago, but never put the original up for sale. Decided to do so today. He's available here, but shop quietly, lets not wake him up...
Original pencil drawing - Little Bundle https://etsy.me/3AZyzhU via @Etsy
#kitten #cat #drawing #FediGiftShop #ScottishArtist #MastoArt #CreativeToots

Original pencil drawing - Little Bundle
A drawing of a sleeping kitten rolled up in a ball. 
Materials: graphite pencil, white sketchbook paper
Width: 18.5 centimetres
Height: 19.5 centimetres
Aral Balkan
1 month ago

You can create custom components in Kitten with custom properties (props) but you’re not limited to that. You can also pass any HTML attributes specified on your custom component to an element of your choosing within your component. This is very useful if you want to listen for events or use your component with frameworks like Alpine.js (which Kitten has built-in/first-class support for, alongside htmx).

Just documented it here with a simple example:

https://codeberg.org/kitten/app#html-attributes

#Kitten #SmallWeb

Aral Balkan
1 month ago

In case you’re wondering how little old Kitten performs in the tests of the Big Boys…

(And that’s from a development build of a Domain page, not a deployment build so no compression, live reload script in page, etc.)

Turns out it’s pretty easy to ace such tests when you’re not spending cycles and code doing horrible things to people in your web pages (like tracking their every move and attempting to exploit their behaviour for profit). 🤔

:kitten:💕

#SmallWeb #Kitten #Domain #Lighthouse #score

Lighthouse results in DevTools for the payment setup page in Domain ((localhost/settings/setup/payment/) showing full scores (100) for performance, accessibility, best practices, and SEO.

Metrics:

First Contentful Paint: 0.4s
Largest Contentful Paint: 0.5s
Total Blocking Time: 0ms
Cumulative Layout Shift: 0
Speed Index: 0.4s
Aral Balkan
1 month ago

@Shini92 Nice. One very similar use case for me is database schemas for JavaScript Database (JSDB)¹, which is part of Kitten² :)

https://codeberg.org/domain/app/src/branch/main/app_modules/database/database.js

¹ https://codeberg.org/small-tech/jsdb
² https://codeberg.org/kitten/app

#jsdb #kitten #SmallWeb #database #web #dev

Aral Balkan
1 month ago

(All examples taken from Domain – https://codeberg.org/domain/app – the work-in-progress free and open platform for Small Web hosts.)

#SmallWeb #Domain #Kitten #decentralisation #web #dev

Aral Balkan
1 month ago

PS. Kitten uses HTML Validate to show you validation issues with your pages as you develop.

:kitten:💕

https://codeberg.org/kitten/app

#SmallWeb #Kitten #web #dev #html #validation #js #NodeJS #htmlValidate #validator

Aral Balkan
1 month ago

I can’t fucking wait to get Domain* out the door this year so folks (including me) can deploy Kitten** apps.

(Me deploying Kitten apps is trivial. But I won’t be deploying them until everyone can. And we won’t be hosting them until any organisation can. That’s how you decentralise. By building systems that don’t favour you. By decentring yourself first. Even though that’s a metric fuck-tonne harder to do.)

* https://codeberg.org/domain/app
** https://codeberg.org/kitten/app

#SmallWeb #Kitten