#Kiesel

João Pazjoaojpaz
2025-05-11

For those of you enjoying a calm Saturday night (on this part of the world) here's a vid from the amazing and incredibly gifted and musical Josh Meader - play one of his arragements/transcriptions: Debussy, this time.
Enjoy!

youtube.com/watch?v=XWTLy2ZxAXE

Dogynatordogynator
2025-03-29

Ordered my second today. Looking forward to use it our band Divided by Zero in 8-12 weeks.

#doyoureadme #writteninstone #font #decipherme #tobelikewater #pebble #moki #lettersaremyfriends #kiesel
to be like water that has no form ~ to be able to adapt smoothly to all circumstances

📷 2&5 A

Steine / Stones / Pierres
November 2018
archive.org/details/072216_201
Der Stein ist stärker als das Messer. Das Messer ist stärker als das Papier. Das Papier ist stärker als der Stein.
Klabund - Bracke
Steine Kiesel -> goehde.com/fotos/index.php?/ca

#pierres #Steine #Kiesel #natur #nature #stones #video #foto #fotografie #photo #photography #slide #slideshow

linus @ GPN (5687/LNUS) :linuspet:linus@donotsta.re
2024-04-18

Another ECMAScript proposal implemented by Carter! :ablobcatbongo:

It appears JS is getting more capable than other languages using IEEE 754 floats now? :blobcat3c:

https://codeberg.org/kiesel-js/kiesel/pulls/17

#kiesel #js #javascript

Demo of the Math.sumPrecise() function in a Kiesel REPL. The full code is as follows (screenreader unfriendly):

> 0.1 + 0.2 + 0.3
0.6000000000000001
> Math.sumPrecise([0.1, 0.2, 0.3])
0.6
> 
> 1e308 + 1e308 - 1e308
Infinity
> Math.sumPrecise([1e308, 1e308, -1e308]) === 1e308
true
>
linus @ GPN (5687/LNUS) :linuspet:linus@donotsta.re
2024-04-08

Another day, another ECMAScript proposal implemented: Promise.try()!

#kiesel #js #javascript

Demo of Promise.try() in a Kiesel REPL. The full code is as follows (screenreader unfriendly):

> function foo(arg) { return arg; }
undefined
> function bar() { throw "error!" }
undefined
> Promise.try(foo)
Promise(state: <fulfilled>, result: undefined)
> Promise.try(foo, 42)
Promise(state: <fulfilled>, result: 42)
> Promise.try(bar)
A promise was rejected without any handlers: Promise(state: <rejected>, result: "error!")
Promise(state: <rejected>, result: "error!")
>
linus @ GPN (5687/LNUS) :linuspet:linus@donotsta.re
2024-04-07

Carter implemented another proposal in #kiesel: Float16Array and friends!

https://codeberg.org/kiesel-js/kiesel/pulls/13

Demo of float16 rounding and DataView methods in a Kiesel REPL. The full code is as follows (screenreader unfriendly):

> Math.f16round(65519)
65504
> Math.f16round(65520)
Infinity
> 
> buffer = new ArrayBuffer(2)
ArrayBuffer(byteLength: 2, data: 00 00)
> 
> new DataView(buffer).setFloat16(0, 123, true)
undefined
> new DataView(buffer).getFloat16(0, true)
123
> buffer
ArrayBuffer(byteLength: 2, data: b0 57)
> 
> new DataView(buffer).setFloat16(0, 65520, true)
undefined
> new DataView(buffer).getFloat16(0, true)
Infinity
> buffer
ArrayBuffer(byteLength: 2, data: 00 7c)
> // See: https://float.exposed/0x7c00
undefined
> 
> array = new Float16Array(buffer)
Float16Array(length: 1, data: [ Infinity ])
>
linus @ GPN (5687/LNUS) :linuspet:linus@donotsta.re
2024-04-06

Thanks to sno2 for implementing the Set methods stage 3 proposal in #kiesel! I haven’t even written a CONTRIBUTING.md yet but this went extremely well for a 600 line PR coming out of nowhere :apartyblobcat:

https://codeberg.org/kiesel-js/kiesel/pulls/10

Demo of Set methods in a Kiesel REPL. The full code is as follows (screenreader unfriendly):

> set = new Set([123, "foo", true])
Set(123, "foo", true)
> other = new Set([null, 123, true, Symbol.for("bar")])
Set(null, 123, true, Symbol("bar"))
> 
> set.intersection(other)
Set(123, true)
> 
> set.union(other)
Set(123, "foo", true, null, Symbol("bar"))
> 
> set.difference(other)
Set("foo")
> 
> set.symmetricDifference(other)
Set("foo", null, Symbol("bar"))
> 
> set.isSubsetOf(other)
false
> set.isSubsetOf(new Set([123, 456, "foo", true]))
true
> 
> set.isSupersetOf(other)
false
> set.isSupersetOf(new Set(["foo"]))
true
> 
> set.isDisjointFrom(other)
false
> set.isDisjointFrom(new Set([false, null, "bar"]))
true
>
2024-03-30

Placed an order for a new #electricguitar! I've long wanted to go back to headless guitars, and after playing #kiesel for a few years I decided to stay with them and get a Neck-Through 7-String Vader.

Configurator doesn't allow HSH pickups with neck through, but this is what I got on my order over phone. Partly because of the Easter discount, but also because I enjoyed single pickups on the Ibanez Ichi.

Build times for Kiesel are currently 14-18 weeks, will report when it is completed!

Front view of a headless guitarRear view of the headless guitar
linus @ GPN (5687/LNUS) :linuspet:linus@donotsta.re
2024-03-24

Spent some time fleshing out generators - I think the only thing missing now is actually supporting yield statements and pausing/resuming function evaluation (80/20 rule applies :neocat_laugh_sweat:)

#kiesel #js #javascript

$ ./zig-out/bin/kiesel
Kiesel 0.1.0 [Zig 0.12.0-dev.3429+13a9d94a8] on linux
Use Ctrl+D to exit.
> function* foo() { return 42; }
undefined
> gen = foo()
Generator()
> gen.next()
{ "value": 42, "done": true }
> gen.return(":^)")
{ "value": ":^)", "done": true }
> gen.throw(":^(")
Uncaught exception: ":^("
> 
> async function* foo() { return 42; }
undefined
> gen = foo()
AsyncGenerator()
> gen.next()
Promise(state: <fulfilled>, result: { "value": 42, "done": true })
> gen.return(":^)")
Promise(state: <fulfilled>, result: { "value": ":^)", "done": true })
> gen.throw(":^(")
A promise was rejected without any handlers: Promise(state: <rejected>, result: ":^(")
Promise(state: <rejected>, result: ":^(")
>
linus @ GPN (5687/LNUS) :linuspet:linus@donotsta.re
2024-03-19

The web-compatible runtime for Kiesel now supports procrastination queueMicrotask() :neocat_wink:

#kiesel #js #javascript #wintercg

Kiesel 0.1.0 [Zig 0.12.0-dev.3366+8e7d9afda] on linux
Use Ctrl+D to exit.
> queueMicrotask()
Uncaught exception: TypeError: undefined is not callable
> queueMicrotask(123)
Uncaught exception: TypeError: 123 is not callable
> queueMicrotask(() => Kiesel.print("World")); Kiesel.print("Hello")
Hello
World
undefined
> queueMicrotask(() => { throw new Error("This incident will be reported."); })
Uncaught exception: Error: This incident will be reported.
undefined
>
linus @ GPN (5687/LNUS) :linuspet:linus@donotsta.re
2024-03-13

I started working on a web compatible runtime for Kiesel - the goal is to roughly aim for the list of APIs in scope by WinterCG! Only navigator.userAgent right now but it’s a start :^)

This is standalone and not shipped as part of the core library but included by default in the kiesel CLI.

https://codeberg.org/kiesel-js/runtime

#kiesel #js #javascript #wintercg

Kiesel 0.1.0 [Zig 0.12.0-dev.3245+4f782d1e8] on linux
Use Ctrl+D to exit.
> navigator.userAgent
"Kiesel/0.1.0"
>
linus @ GPN (5687/LNUS) :linuspet:linus@donotsta.re
2024-03-12

After @andrewrk revamped the Zig autodoc system I figured I’d give it a try again for #kiesel API docs, with good results! Now I need to write proper docstrings for all public APIs :neocat_laugh_sweat:

Some examples:

linus @ GPN (5687/LNUS) :linuspet:linus@donotsta.re
2024-03-10
A few hundred lines of plumbing later, modules can now actually export values! Still no static imports but making progress step by step :neocat_happy:

#kiesel #js #javascript
Demo of named and default module exports in the Kiesel JS REPL. The full code is as follows (screenreader unfriendly):

$ cat module.js
export var foo = 42;
export default "😺";
$ kiesel git:(main) ✗ ./zig-out/bin/kiesel
Kiesel 0.1.0 [Zig 0.12.0-dev.3182+f3227598e] on linux
Use Ctrl+D to exit.
> import("module.js").then(module => { globalThis.module = module; })
Promise(state: <fulfilled>, result: undefined)
> module
{ [Symbol("Symbol.toStringTag")]: "Module" }
> module.foo
42
> module.default
"😺"
>
2024-02-19
my first #kiesel 🤘 , bought in 2018 from their custom shop.
Model is v220 (with a bunch of customization).
Currently tuned in dropC, I use it in my second band Sweet Fiend .
#guitar #guitarGear #megadeth #metal
a white kiesel v220 guitar with maple fingerboard on a grat couch. pickups are black, hardware black
2024-02-08

Playing some #Megadeth with my old mates. Like riding a bike. 🤘 😈

#guitar #metal #music #guitar #kiesel #drums

Gutarist playing in a rehearsal studio. The guy (me) is wearing a cap backwards and a black megadeth tshirt. The guitar is blue and white. there is a drummer on the background barely visible
2024-02-05

my first #kiesel 🤘 , bought in 2018 from their custom shop.
Model is v220 (with a bunch of customization).
Currently tuned in dropC, I use it in my second band Sweet Fiend .
#guitar #guitarGear #megadeth #metal

a white kiesel v220 guitar with maple fingerboard on a grat couch. pickups are black, hardware black
linus @ GPN (5687/LNUS) :linuspet:linus@donotsta.re
2024-01-29
It's been exactly three months since the last devlog, and while I wish I could say that was planned timing, I'm just really good at procrastinating. Lots of cool stuff though!

https://linus.dev/posts/kiesel-devlog-6/

#kiesel #js #javascript

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst