Show newer

source code 

from math import sin, cos

lines = True
radius = WIDTH * 0.45
center = WIDTH * 0.5
theta_count = 5
k = 1


def draw():
global lines, radius, center, theta_count, k
if FRAME > 300:
k += 1

td = (300 / (FRAME % 300 + 1)) - 1

if lines:
start = False
for i in range(360 * theta_count):
theta = i / theta_count
# fill(sin(theta) + 1, 1, 0.4)
stroke(sin(theta) + 1, 1, 0.4)
t_r = 1
tr = t_r / k
t_total = t_r + tr + td
t_scale = radius / t_total
rr = t_r * t_scale
r = tr * t_scale
d = td * t_scale
x = (center + (rr+r)*cos(theta) - (d*cos(((rr+r)/r)*theta)))
y = (center + (rr+r)*sin(theta) - (d*sin(((rr+r)/r)*theta)))
if lines:
if not start:
moveto(x, y)
start = True
lineto(x, y)
rect(x, y, 1, 1)
if lines:

Show thread

- Daily 6 -

Fell behind a couple of days because of work, so let's begin catching up

This is my first take at porting @aqua 's beautiful epitrochoids demo to Shoebot. Original at

The only goal for now was getting anything on the screen; it's still pretty glitchy, I'll probably keep playing with this more as I try to understand what's going on

source code 

margin = 60
spacing = 40
swidth = 20
colors = ["fec5bb","fcd5ce","fae1dd","f8edeb","e8e8e4",


def draw():
for n in range(2,12):
arc(margin, HEIGHT-margin, n*spacing, -90, 0,
strokedash=[50, 25, 100, 25], dashoffset=n*20+FRAME*1.5)

for n in range(1,12):
arc(WIDTH-margin, margin, n*spacing, 90, 180,
stroke=list(reversed(colors))[n%len(colors)], blendmode='multiply',
strokedash=[50, 25, 100, 25], dashoffset=-n*20-FRAME*1.5)

Show thread

- Daily 3 -

Started as an experiment with moirés, but got distracted with stroke dashes again

Arf, I posted an earlier version which actually demonstrated a glitch with the stroke miters (see how they snap right after the shape starts drawing), now this is the right one.



def draw():
for n in range(10):
angle1 = FRAME/2
if angle1 % 360 == 0:
print(f"Reached loop frame: {FRAME}")
angle2 = FRAME*5 % 360
arc(WIDTH/2, HEIGHT/2, n*25, angle1, angle2)

Show thread

This was also an attempt at figuring out how to make a decently-looped animation.

1. determine at which point you want the video to stop -- in this case, when the slower moving arc extreme reaches zero degrees
2. add an if-condition that, when met, prints the value of FRAME; and now you have the number of frames to output
3. "sbot-export-video --framenumber <frames> arcs.mp4" and you're done

Show thread

- Daily 2 -

I used to find this "chord arc" a pretty dull shape because I was only looking at single static examples. When combined or animated, they get interesting really quick.

(didn't feel an urge to explore color -- it's gray on gray and i call it a day)

@rlafuente oh and if you want a nice collection afterwards, consider using a relatively unique hashtag as mastodon creates pages like these:

Note to properly size the next one: video previews on Mastodon have a width of 548px

Show thread

So in June I'm trying my first thing-a-day-for-a-month project.

I'll be posting experiments made with , a tool that i've been making with friends for the last 13 years, to draw with vector graphics in a simple drawing syntax.

First off, an output of some recent fun animating stroke dashes -- increasing their offset results in a pleasing smooth motion. This one is made out of 3 100-sided stars with varying dashed strokes.

@lgm #Hackers, "enjoy your weirdness"!
The User Interfaces of Free Software as an alternative concept to the monoculture of interface designs from #Cupertino, that are aiming on efficiency for #capitalism purposes, reinforcing the hegemony of white men and symbolizing suppression of #diversity. Still I'm processing the deeper meanings of this eye opening lecture.

Thank you so much Brendan Howell!

If vector graphics, python, creative coding and/or pen plotters ring a bell, my LGM short talk presenting the new release will probably be of interest to you! In around 30 minutes:

Hi Fediverse, do you have a clue about controlling a GSM modem with Python?

What we're looking for:
- make automated phone calls and play some audio
- keep it free and private, so no Twilio or other SDKs
- a dongle or USB modem would be nicer than Arduino/RPi with modules, but those are ok if there's no alternative

Wondering if there's prior art around here?

Templates for paper mechanisms: a precious resource and a gorgeous layout by Kelli Anderson

( @xuv you probably saw this already? )

#Signal turning into a crypto-ponzi currency scheme?


That Signal:
- isn't really free/libre software (as Moxie denied freedom to redistribute modified version)
- would *never* federate (political choice of centralization)
- updated server software wasn't published
- invaded people's phonebooks
- runs on Amazon+NSA's infrastructure
- is virtually impossible to use out of Google's infrastructure -
- etc.

...didn't seem to be enough to alarm Signal users.

was just making a practical visual test to ensure that the new arcs in Shoebot work properly, and hey i like this

Show older

Welcome to, an instance for discussions around cultural freedom, experimental, new media art, net and computational culture, and things like that.

<svg xmlns="" id="hometownlogo" x="0px" y="0px" viewBox="25 40 50 20" width="100%" height="100%"><g><path d="M55.9,53.9H35.3c-0.7,0-1.3,0.6-1.3,1.3s0.6,1.3,1.3,1.3h20.6c0.7,0,1.3-0.6,1.3-1.3S56.6,53.9,55.9,53.9z"/><path d="M55.9,58.2H35.3c-0.7,0-1.3,0.6-1.3,1.3s0.6,1.3,1.3,1.3h20.6c0.7,0,1.3-0.6,1.3-1.3S56.6,58.2,55.9,58.2z"/><path d="M55.9,62.6H35.3c-0.7,0-1.3,0.6-1.3,1.3s0.6,1.3,1.3,1.3h20.6c0.7,0,1.3-0.6,1.3-1.3S56.6,62.6,55.9,62.6z"/><path d="M64.8,53.9c-0.7,0-1.3,0.6-1.3,1.3v8.8c0,0.7,0.6,1.3,1.3,1.3s1.3-0.6,1.3-1.3v-8.8C66,54.4,65.4,53.9,64.8,53.9z"/><path d="M60.4,53.9c-0.7,0-1.3,0.6-1.3,1.3v8.8c0,0.7,0.6,1.3,1.3,1.3s1.3-0.6,1.3-1.3v-8.8C61.6,54.4,61.1,53.9,60.4,53.9z"/><path d="M63.7,48.3c1.3-0.7,2-2.5,2-5.6c0-3.6-0.9-7.8-3.3-7.8s-3.3,4.2-3.3,7.8c0,3.1,0.7,4.9,2,5.6v2.4c0,0.7,0.6,1.3,1.3,1.3 s1.3-0.6,1.3-1.3V48.3z M62.4,37.8c0.4,0.8,0.8,2.5,0.8,4.9c0,2.5-0.5,3.4-0.8,3.4s-0.8-0.9-0.8-3.4C61.7,40.3,62.1,38.6,62.4,37.8 z"/><path d="M57,42.7c0-0.1-0.1-0.1-0.1-0.2l-3.2-4.1c-0.2-0.3-0.6-0.5-1-0.5h-1.6v-1.9c0-0.7-0.6-1.3-1.3-1.3s-1.3,0.6-1.3,1.3V38 h-3.9h-1.1h-5.2c-0.4,0-0.7,0.2-1,0.5l-3.2,4.1c0,0.1-0.1,0.1-0.1,0.2c0,0-0.1,0.1-0.1,0.1C34,43,34,43.2,34,43.3v7.4 c0,0.7,0.6,1.3,1.3,1.3h5.2h7.4h8c0.7,0,1.3-0.6,1.3-1.3v-7.4c0-0.2,0-0.3-0.1-0.4C57,42.8,57,42.8,57,42.7z M41.7,49.5h-5.2v-4.9 h10.2v4.9H41.7z M48.5,42.1l-1.2-1.6h4.8l1.2,1.6H48.5z M44.1,40.5l1.2,1.6h-7.5l1.2-1.6H44.1z M49.2,44.6h5.5v4.9h-5.5V44.6z"/></g></svg>