#live-broadcast-chat

1 messages ยท Page 39 of 1

sand lotus
#

can't you just use current position?

#

from = current position

dry shore
#

yeah

#

you could even extend the key class for chips

#

you must collect 10 chip "keys" to unlock the socket "lock"

sand lotus
#

ahh yeah so you can have player facing the right direction. definitely different vs octopus or asteroids where player always has the same facing direction.

dry shore
#

yeah, all collectable items
keys, boots, chips

#

4 key colors
4 boots
1 chip

#

1 class vs 9 classes

#

when you load the map, count how many chips you make?

#

yeah

sand lotus
#

if you know exactly how many keys the player should have at any point in the game you can use a +1 counter easily. collectables are optional. kind of like power up bonuses.

dry shore
#

oh, wait, counting wont do

#

you must collect 4 chips to pass this level

#

the 4 on the right are decoys and useless

#

this level has walls and floors hidden under these special walls

#

and only appear when you bump into them

sand lotus
#

interesting

dry shore
#

its level 6

sand lotus
#

like a doom secret door?

dry shore
#

yeah, but its a special color, so you know to check it

sand lotus
#

well that's not so secret then lol

dry shore
#

4:07 into the vid, for examples

#

invisible could kinda act like locks

#

an invisible floor acts like lock thats always unlocked, and turns into a floor

#

an invisible wall turns into a wall when you bump into it

#

oh, right, and this map has 3 types, not 2

#

level 2

#

each button does a different thing

#

yeah, entity spawner, triggered by a button

#

level 5

#

the red button triggers the entity spawner

#

the purple ball bounces, hitting the button repeatedly

#

also level 5, the green button toggles if every green block is passable

dry shore
#

you can see it disapear better on a later level, nice day, cant remember the level#

#

i also discovered, there is a free chips challenge in steam
but the default theme is "wrong"
the and the GUI is jank as heck

#

ive only seen the portal animated in the steam port

sand lotus
#

if they animated them like the game Portal that would have made Chip the first known test subject.

#

and they could fold him in to the Portal universe ๐Ÿ˜›

dry shore
sand lotus
#

and all the chips you're collecting are for upgrading GladOS's capabilities for better testing.

#

i mean, that would be funny.

dry shore
#

exit is animated in this version, and you can see the portals in action

sand lotus
#

maybe chip is the one that went around writing messages between the walls like the cake is a lie.

dry shore
#

i used OBS to capture the steam version

#

also, if you right click the above video, copy link, then paste into firefox, you can fullscreen it better

sand lotus
#

something like this you can only go into the portal from the left. which could be a good way to setup locks you have to remove before getting into the portal.

dry shore
#

with tiled, how would i set properties on a specific tile of the map, rather then the tile in the tile-sheet, or the whole layer

#

in level 7, you have 4 portals
and which one you go to, is complicated

#

and i wouldnt want to make 4 layers, one per portal

#

yeah, i was thinking more along the lines of a 100% accurate port

#

yep

#

but which one you come out, changes based on direction you enter from

#

and if you push a dirt block thru the portal, it can block you

sand lotus
#

the from direction would be pretty important then.

dry shore
#

i think i took every direction possible

#

no idea if this steam version is accurate to the win3.11 version

sand lotus
#

oh wow

#

really neat game feature

dry shore
#

also, if you right click the above video, copy link, then paste into firefox, you can fullscreen it better

sand lotus
#

that makes sense because you can't enter one diagonally.

sand lotus
#

could also flip them in different levels so it's not the same behavior every level.

dry shore
#

i can copy the link as well, this one

#

yeah, discord's UI is jank at times

sand lotus
#

it'[s because it's a video uploaded directly to discord, not an external video source.

dry shore
#

when i right click, i get this

smoky island
dry shore
#

it might be a dev thing i turned on

sand lotus
#

maybe chrome? i have it in FF.

dry shore
sand lotus
#

or that yes

dry shore
#

i have the native discord client

#

and my "old man yelling" is how much chrome barfs at times

#

if i click a link in the wrong program, chrome doesnt notice its already running, so it spawns a second session

#

and then it trashes its own state, so you cant restore tabs

sand lotus
#

you're allowed to rant. PT has some pretty great ones sometimes.

#

to the point he needs his own section called Phil's Rant's.

dry shore
# smoky island

oh, interesting, download is missing in my chrome browser and the web discord

#

i think the problem is that your running discord in a browser, not native

sand lotus
#

the things he complains about are really valid like people submitting BBB complaints because they can't buy more than 1 raspberry pi, or calling up adafruit and calling employees obscene names.

dry shore
#

implementing an official map also works, here level 1

sand lotus
#

I have plenty of GUI related rants to make about Google, Apple, and Microsoft. Their GUI's drive me nuts sometimes. menu's within menu's especially tick me off.

dry shore
#

a map is 32x32 tiles

#

yeah

#

yep, 15x14

#

let me push my maps to git, so you can just browse em

sand lotus
#

What used to take 2 mouse clicks in Windows 7 now takes 5 clicks in Windows 10... slowly becoming less efficient for a product that used to herald it's productivity simplicity. Things that used to be efficient and after a change are no longer as efficient, with GUI's... set my brain on fire. I don't know why, I like good GUI design.

#

Discord is quite wonderful though, not too many complaints about how they stuff everything together.

dry shore
#

tiled just let me use my tilesets when i make new maps

#

are you editing a project?

#

try cloning the repo i linked, and open the chips challenge.tiled-project project in tiled

#

ah yep, there is the problem

#

you dont have a project

#

because i made a project, i have all levels, and tile-sets, listed on the left

sand lotus
#

that makes sense

#

so all of your assets are also stored in a project. and i imagine you would save the project which has everything as some other file type.

dry shore
#

nope

#

tiled-project is the project

#

tmx is a map

#

try cloning the repo i linked above, and open that project

#

and youll see how it behaves differently

sand lotus
#

file>new project, then import your tmx files?

hasty loom
dry shore
#
[clever@amd-nixos:~/apps/rpi/lk-overlay/app/chips-challenge/maps]$ cat chips\ challenge.tiled-project 
{
    "automappingRulesFile": "",
    "commands": [
    ],
    "extensionsPath": "extensions",
    "folders": [
        "."
    ],
    "propertyTypes": [
    ]
}

dry shore
sand lotus
#

I'm not saying it's a bad thing. PT's rants are always awesome and on point. They have a different perspective from a much higher place and it's interesting and sad to hear about some of the issues they have to deal with.

hasty loom
#

Amen brother.

dry shore
#

@smoky island if you clone the repo i linked, and open it in tiled, you dont need to reference the image in discord

dry shore
#

the shape fill tool in the toolbar also helps massively

#

yeah, i still get layers mixed up constantly

#

yep, looks perfect

#

i dont have xml or json libs on my platform, so i'm thinking a custom binary format

sand lotus
#

hope you're using an S3 because that's not going to work on an M0. Possible you could offload the files to an SD card with an M0 and then buffer it in? I guess for pybadge and pygamer you'll want to ensure they can be played on the lower power devices.

#

that leaves out the pygamer and pybadger :/ i have plenty of S3's now so I'm not complaining but most handheld gaming devices are still using the lower power SAMD21 or SAMD51 chips. it's not just the ram but the onboard flash to store all the map tilesets too.

#

with a SAMD21 you might be able to store only 1 map (or very few) on the device... which is why i mentioned an external SD card as a possible solution.

#

the pygamer has an SD card slot, the pybadge does not.

#

an S3 pygamer would be great

#

i'm all about the S3 lately, it's great especially the 16MB flash 8MB ram versions. they're sooo good.

dry shore
#

xml parsing in nodejs is surprisingly difficult

sand lotus
#

I love the iMX speed but it's got a serious lack of ram compared to an S3.

dry shore
#

fast-xml-parser doesnt include the attributes (layer names)
parse-xml relies on features only a browser has

#

its probably using wasm to run an emulator right on your pc

sand lotus
#

and if you're doing anything graphical, you want that additional ram.

#

oh wow yeah, AdafruitGamerIO? yes please that would be cool.

dry shore
#

let me try tiled from CLI instead...

#

you would have to trigger on the first collision

#

rather then on every tick

dry shore
#
[nix-shell:~/apps/rpi/lk-overlay/app/chips-challenge/maps]$ make level-1.json
tiled --export-map level-1.tmx level-1.json

[nix-shell:~/apps/rpi/lk-overlay/app/chips-challenge/maps]$ make level-2.json
tiled --export-map level-2.tmx level-2.json

[nix-shell:~/apps/rpi/lk-overlay/app/chips-challenge/maps]$ make level-3.json
tiled --export-map level-3.tmx level-3.json

[nix-shell:~/apps/rpi/lk-overlay/app/chips-challenge/maps]$ cat Makefile 
level%.json: level%.tmx
        tiled --export-map $< $@
#

and with a makefile, i can now update the json's

sand lotus
#

i still do else if all the time. i've only ever used elif in circuit python.

dry shore
#

how often does your tick function run?

sand lotus
#

else if in engrained for me from PHP

dry shore
#

you probably want to slow down the tick function more

#

server side, i started with perl and php

sand lotus
#

the smallest lamp stack I used was DSL (d*mn small linux) really neat barebones distro for lamp.

unreal bay
#

like all of it ๐Ÿ˜‰

sand lotus
#

oh yeah PHP can be swiss cheese if you don't sanitize variables

dry shore
#

perl has tainted variables, which help to enforce sanitization

unreal bay
#

only really remember playing with lime_Survey was an old customisable form/survey thing, and loads of form mailer / cgi replacement stuff, oh and wordpress ๐Ÿคฆโ€โ™€๏ธ

dry shore
#

could have different animation and movement ticks

#

yeah

#

i once found a sql injection exploit in a software stack i ran

#

it basically just ran select * from user where password = "${password}" and userid = ${id}

sand lotus
#

once? then you're not looking hard enough ๐Ÿ˜›

dry shore
#

what id id = "1 or true";

#

select * from user where password = "anything" and userid = 1 or true ;

sand lotus
#

want an almost guaranteed way to get sliced and diced... run wordpress... for anything.

dry shore
#

the or true at the end, disables all authentication, lol

sand lotus
#

thank you for the stream. really great game jam. the tileset stuff is really neat.

unreal bay
#

Desirable bugs? Exciting talk, thanks for the stream

sand lotus
#

i changed sql language to accept only a specific set of latin characters... which immediately throws an error when someone tries typing in cryllic or chinese. ๐Ÿ˜‰

#

because yes got tired of the hammering... and they do be hammering 24/7 365.

unreal bay
#

most sanitising is really hard. if you want to be inclusive and support all possibilities like too short / many / few names, and titles, and email should just be .*?@.*

dry shore
#

so without using the escape-hatch, its impossible to run exploitable sql

unreal bay
#

parameterised arguments for the win

sand lotus
#

yup had to use perl more than a few times to get some customizations done.

dry shore
#

there is a dedicated function to escape special characters, that will strip the taint flag

dry shore
#

but i was poking around in postgresql a while back, and realized, i dont think it actually supports parameterised arguments!

#

it just interpolates the arguments client side

dry shore
#

yo

dry shore
#

another surprise livestream today

#

i should put some more work into my clone...

sand lotus
#

nice. I was actually going to ask for a stream today because Sunday's are kinda a down day. More chips game jam nice.

dry shore
#

the dirt block can push thru teleporters, but also block you from exiting in that direction

#

and bugs cant walk on mud (dirt in water becomes mud)

#

but if a player steps on mud, it becomes a normal floor, which is bug passable

#

i think the bugs follow a wall?

#

~5 different types of enemies, each with its own sprite and AI

sand lotus
#

Can a bug prevent you from picking up an item if it's next to it? Like an RF bug. ๐Ÿ˜›

dry shore
#

your still missing a project file

sand lotus
#

yeah the way clever had it with the project file with all the tmx's in it seems like it would be easier to work with.

dry shore
#

it might help if you read the tmx in a text editor, to see what the GUI is hiding

sand lotus
#

oh no that sounds more like a slicer and gcode

#

neat that you can read a tmx in a text editor.

dry shore
#

yeah, a project contains multiple maps and tilesets

sand lotus
#

XML

#

I've been living in a JSON world for far too long.

dry shore
#

if you open your own level0 tmx in a text editor, does it list 2 tilesets? what is the initial gid on each?

#

ah yeah, thats your problem then

#

oh, look at the last tab!

#

you have lvl_0.tmx#cc_16px_v1 open!

#

that is the embedded tileset, within the map!

#

i can see embedded tilesets being a nightmare, because every map has its own copy

#

you likely need to delete one of the tilesets from the tmx by hand

#
level%.json: level%.tmx
        tiled --export-map $< $@

.PHONY: map_data.bin
map_data.bin: level-1.json level-2.json level-3.json level-4.json level-5.json level-6.json level-7.json level-8.json level-9.json level-10.json level-11.json
        node process_level.js
#

ive been using CLI more, to automate things

#

avoids human error

#

converting the json to binary, since i havent ported a json library

#

there are chips&fire hidden under dirt blocks

#

ok, ive now parsed my map json
ive handled my first few maps not being 32x32, and converted it all to a flat 32x32
now to turn it into binary...

#
[nix-shell:~/apps/rpi/lk-overlay/app/chips-challenge/maps]$ hexdump -C map_data.bin
00000000  51 51 51 51 51 51 51 51  51 51 51 51 51 51 51 51  |QQQQQQQQQQQQQQQQ|
00000010  51 51 51 51 51 51 51 51  51 51 51 51 51 51 00 00  |QQQQQQQQQQQQQQ..|
00000020  51 51 51 51 51 51 51 51  51 51 51 51 51 51 51 51  |QQQQQQQQQQQQQQQQ|
00000030  51 51 51 51 51 51 51 51  51 51 51 51 51 51 00 00  |QQQQQQQQQQQQQQ..|
#

and now i have the first map as a binary!

#

-rw-r--r-- 1 clever users 11K Aug 20 19:06 map_data.bin

#

and thats all 11 levels!

#

now, to actually load and display that...

#
.section .rodata
map_start:
.incbin "app/chips-challenge/maps/map_data.bin"
map_end:

.align 4
.global map_data
map_data:
  .int map_start
.global level_count
level_count:
  .int (map_end - map_start) / 1024
#

and with this, i have all of the map data in my .rodata section, so i can just extern it

#

11 levels at 0xc4059137

#

and it can read that data, so i just have to translate it to my tile_set_sprite() call...

#

console.log(map_data[(0 * 32) + i);

#

oops, i wrote javascript in a c file, lol

#
  for (int i=0; i<9; i++) {
    for (int j=0; j<9; j++) {
      uint8_t tile = map_data[(level * 1024) + (j * 32) + i];
      printf("%d\n", tile);
      tile_set_sprite(&tiles[i][j], (tile-1) % 8, (tile-1)/8);
    }
  }
#

each level is 1024 bytes, 32x32

#

yep

#

baremetal on the VPU, entirely arm-less

#

the arm core isnt turned on

#

so, now i need to add an x/y offset, to center on the player...

#

the biggest improvement here, is that the map is no longer hard-coded

#

so i can edit in tiled, run 2 commands, and its instantly working

#
  6.675320 [game:game_entry:89]: loading map
  6.679444 [game:game_entry:96]: map loaded
#

0.004124 seconds to re-draw the map!

sand lotus
#

it's about this time i might consider asking chatgpt to write chips challenge in circuit python. i've never used it before but i'd be willing to try. game movement is more complicated that i thought.

#

i wouldn't really do it, just saying things get complicated for movement and entity collision detection.

dry shore
#
static int cmd_move(int argc, const console_cmd_args *argv) {
  if (strcmp(argv[0].str, "down") == 0) {
    camera_y++;
  }
  mutex_acquire(&channels[channel].lock);
  redraw_map();
  hvs_update_dlist(channel);
  mutex_release(&channels[channel].lock);
  return 0;
}

STATIC_COMMAND_START
STATIC_COMMAND("up", "", cmd_move)
STATIC_COMMAND("down", "", cmd_move)
STATIC_COMMAND("left", "", cmd_move)
STATIC_COMMAND("right", "", cmd_move)
STATIC_COMMAND_END(game);
#

and with this, i can now manually pan the camera

#

(but only in one direction, have to fill in the other 3)

sand lotus
#

ok so can't use that word.

dry shore
#

yep, later

sand lotus
#

chip is infinitely dying now.

#

thank you for the stream ๐Ÿ™‚

open girder
#

WE ARE LIVE! Desk of Ladyada - TFT displays in cool shapes, and a captouch revival ๐Ÿ–ฅ๏ธ ๐Ÿ”„ ๐Ÿ› ๏ธ https://youtu.be/O9H6Xs1CIdc

Ladyada discusses newly arrived 3.5" TFT capacitive touch screens & their ease of testing via EYESPI. She explores unique RGB TFT samples & an ESP32-S3 board's complexities. Additionally, she delves into DIP chip clips, handy tools for component probing, sparking a hunt on DigiKey.

โ–ถ Play video
viral sail
#

Good evening.

sand lotus
#

It's hacker O'clock.

cinder wind
#

did someone say cool displays?

open girder
#

๐Ÿ†’

sand lotus
#

Great now I have to upgrade my fingernails.

viral sail
#

What more can we know about "The Big Move" or it still "Top Secret"?

lilac tusk
#

Adafruit moving out of the historic building. Crazy

sand lotus
#

Those are all the displays that were likely meant for the 3.5" TFT Featherwing. I LOVE my hx8357 tft featherwings.

open girder
#

long ways away, but we'll share more once we have some final news, and it'a all good news ๐Ÿ™‚

lilac tusk
#

The secret is, Disney is buying the building ๐Ÿ˜› (not true I hope)

open girder
#

it's a GREAT time to get a lot of space in NYC, no one is renting giant spaces

verbal river
#

Adafruit is buying the Disney building.

open girder
#

most of the spaces are empty in nyc or at least a lot are empty since folks have not returned to office and many never will

lilac tusk
#

Adafruit acquiring Star Wars from Disney to make the electronics more realistic

#

Light sabers that extend infinitely

#

Doors that only work when youโ€™re not in a hurry

open girder
#

open-source the death star plans

viral sail
#

Adafruit buys the Crysler Building ๐Ÿ™‚

open girder
gray obsidian
#

So we can finally fix that cooling security hole.

lilac tusk
#

Realistic touch screen in the Death Star

gray obsidian
#

Wait no, should we?

lilac tusk
#

All upgraded to capacitive touch

open girder
cinder wind
lilac tusk
#

Time to make my own junky tablet to sell at Walmart

lilac tusk
nova totem
#

Love the round displays. I still have a few sitting about. Great to make googly eyes

main flame
#

I wonder if the large round displays were designed for a car

gray obsidian
#

This is for the TotallySpies Compowder!

lilac tusk
sand lotus
#

Displayapalooza! Beautiful selections.

lilac tusk
#

I remember totally spies

#

I need more displays

#

Iโ€™m calling the Xeets now

#

And reposts are ReXeets

sand lotus
#

Looks like it'll fit right up on an MCP23017 expander.

cinder wind
#

oh I had some of those larger DIP clips in the 90s. The only ones I have that are even similar are the 8-pin ones for ATtiny85 SOICs

sand lotus
#

an SOIC clip? didn't know those existed.

cinder wind
sand lotus
#

that is so cool

cinder wind
#

they are really painful to use because the springs are so strong and the tops are so pointy

sand lotus
#

aww man they're too expensive to use them as actual doritos chip clips, darn it.

verbal river
#

For that price, I hope they work on doritos bags too

rich wing
#

In Search Of...

Any advice on a chip to use for playing analog video? Need to play a file off an SD card or flash chip out to analog or VGA (i.e. old projectors) . Hoping to find something like the VS1000 you use for the sfx boards that I'm so in love with.. โค๏ธ๐Ÿ˜‰

Finding plenty of toy media players for HDMI, but would like to integrate it into some of my existing projects.

open girder
#

that will be challenging, you'll probably want to go with an HDMI to VGA converter

rich wing
open girder
viral sail
#

Thanks and good night. ๐ŸŒ’

sand lotus
#

Thank you for another great episode. Good luck with all the displays!

gray obsidian
#

Oh that looks like a Kinesis FreeStyle keyboardโ€ฆ

lilac tusk
#

Thereโ€™s so many Adafruit boards, it would take like 10 years to post them all at one a day ๐Ÿ™‚

gray obsidian
#

Still can't get used to mine, I have to push the left part constantlyโ€ฆ

sand lotus
#

Non-stop open sourcing choo choo! ๐Ÿš†

lilac tusk
#

Thanks AdaFam!

rich wing
verbal river
#

Bye

gray obsidian
#

oh yes n8!

open girder
rich wing
#

I actually use it for some other stuff, just trying to avoid having to support a Linux install if it becomes a permanent installation somewhere. Still trying to find my RasPis that went into storage when I moved. ๐Ÿ˜ญ

#

All good, I've got other fish to fry before I get to this part of the project. ๐Ÿ˜„

robust horizon
#
# Use a SingletonGenerator to do it without allocating on the heap
def sleep_ms(t, sgen=SingletonGenerator()):
    """Sleep for *t* milliseconds.

    This is a coroutine, and a MicroPython extension.
    """
    
    assert sgen.state is None, "Check for a missing `await` in your code"
    sgen.state = ticks_add(ticks(), max(0, t))
    return sgen
```This weird incantation is deep inside Adafruit_CircuitPython_asyncio. You don't have to understand it all but notice how it sets the `sgen.state` to a deadline that's computed from the sleep duration and the current time in ticks.  So to get a deadline-based sleep in ticks, you'd make a function similar to this one, but set `sgen.state` based on adding to the previous deadline, not the current time.

This is totally not Python-compatible and I'm not sure how much/little we guarantee we won't break it in a future release if it's useful. (for instance, we might decide to rename the `SingletonGenerator` class with an underscore, because it IS intended to be an implementation detail...)
cinder wind
waxen bough
#

I can't believe I missed Circuit Python Day Friday. ๐Ÿ˜ข (Work got busy).
No JP today?

dry shore
#

?showtimes

arctic abyssBOT
#

Desk of Ladyada - Sunday Evening
JP's Product Pick of the Week - 4pm ET Tuesdays
3D Hangouts - 11am ET Wednesdays
Show & Tell - 7:30pm ET Wednesdays
Ask an Engineer - 8pm ET Wednesdays
John Park's Workshop - 4pm ET Thursdays
Deep Dive w/ Foamyguy - 5pm ET Fridays
FoamyGuy's CircuitPython Stream - 11am ET Saturdays

clear matrix
#

Hey folks. JP's Product Pick of the Week, and John Park's Workshop are not streaming this week. They should be back next week!

echo canopy
viral sail
#

Good evening.

dry shore
#

oooo, surprise livestream!

dry shore
#

sounds like the lcd controller chip is more generic, and doesnt have the timing params pre-configured

sand lotus
#

the image quality is amazing even on the huge round one

#

goofy and classy, you two are a match made in heaven.

#

can't wait to see what people do with the huge round displays

dry shore
#

checking pinout stuff in #general-tech , for driving those from rpi's

sand lotus
#

i think this is why the csi/dsi and eye spi breakouts came out recently, some of this was top secret sauce until last week.

dry shore
#

yeah, a dsi->dpi adapter frees up a lot of pins, and eliminates the issues i was just describing

#

but then you have to deal with dsi bringup, which i havent solved yet

sand lotus
#

if something doesn't exist for it yet i'm sure it will by the time these hit the store... which could be months or a year from now.

#

first time they showed off the rp2040 dev kit to the time it hit the store as a feather was more than a year. it's cool to see stuff that's in the works behind the scenes though.

dry shore
#

yeah

light stump
#

Wow, I definitely didnโ€™t see that outro coming.

unreal bay
#

?showtimes-gmt

arctic abyssBOT
#

Desk of Ladyada - Random hacker times
JP's Product Pick of the Week - 20:00 Tuesdays
3D Hangouts - 16:00 Wednesdays
Show & Tell - 00:30 Thursdays
Ask an Engineer - 01:00 Thursdays
John Park's Workshop - 21:00 Thursdays
Deep Dive w/Foamyguy - 22:00 Fridays
FoamyGuy's CircuitPython Stream - 16:00 Saturdays

drowsy inlet
#

hello all

#

is there a video from the livestream last night?

austere pollen
#

on youtube you now have to click on the "live" tab on the channel to see videos from previous livestreams

unreal bay
#

yeah that looks like it

drowsy inlet
#

cool thanks. i went to videos tab and that just looked like snippets

unreal bay
#

I actually missed it, not sure if there was a longer one, but that was last night

austere pollen
#

almost all livestreams are at completely impossible times for me ๐Ÿ˜ญ

unreal bay
austere pollen
#

Germany

#

UTC+2

unreal bay
#

ah similar, the late night ones are brutal ๐Ÿ˜‰

#

@rocky reef @hard hollow ๐Ÿ‘‹ Is it 3D time?
It is: https://www.youtube.com/watch?v=NSF1EeV9loc

This week @adafruit weโ€™re upgrading an Ahoska toy lightsaber with RP2040 PropMaker Feather. For the prototyping segment, we have a working, talking D20. A quick look at last weekโ€™s project: an overhead camera rig using 2020 extrusion. Catching up on community makes, thereโ€™s lots of lightsabers! The timelapse this week is a goth inspired crown de...

โ–ถ Play video
drowsy inlet
#

CDT (UTC-6)

rocky reef
#

good morning folks!

upbeat coral
#

hey y'll

unreal bay
#

Oh I love that "excellent", and the "interesting" / "uh-oh" wav samples

lavish patrol
#

Hello, all

rocky reef
#

Today's coupon code โ€œahsokaโ€ gets you 10% off your order!

#
past nova
#

hey

hard hollow
unreal bay
#

Hey Guys, have you seen any good systems for hanging lots of breakout sensors, like a hanging tree or something? I build a Clothes Hanger tpu design for the sensors and it's alright, but not quite ready for primetime yet, and wondered if any existing solutions (I've seen the aluminium peg board - nice)

rocky reef
unreal bay
rocky reef
unreal bay
#

Even in low quality the tpu stalks work well enough. The breakouts can be pushed tight against the hanger or left with a small (1-2mm) gap between hanger and board (potentially better for air sensors)

#

Glad someone answered that question for us... What about an enthusiastic rolling session on rocks/concrete?

#

Oh that's a great idea. Do you use certain temps or just quick and wild?

rocky reef
dry shore
lavish patrol
#

You can always rely on technology to let you down...

rocky reef
#

Today's coupon code โ€œahsokaโ€ gets you 10% off your order!

unreal bay
#

Thanks all

upbeat coral
#

Thank you for taking time for us.

past nova
#

thanks, awesome show

lavish patrol
#

Thanks, @hard hollow and @rocky reef ๐Ÿ‘

drowsy inlet
#

thanks!

hard hollow
#

Thanks folks!

rocky reef
#

thanks so much for hanging out folks!

open girder
upbeat coral
#

hey y'll

nova totem
#

evening everyone

blissful apex
#

hello

nova totem
#

PhilB inspires so many projects or ideas based on his original projects. It's crazy. Good work Liz!

open surge
#

good evening

austere pollen
#

๐Ÿ˜†

split gazelle
#

amazing project @steep mica

nova totem
#

That looks amazing

feral mortar
#

can you share your guy out in Oregon

steep mica
teal loom
#

Where can I get one!

steep mica
feral mortar
open girder
nova totem
#

If I learned anything from playing with TFT eyes is that they look incredible. For everyone but you. You just see the back of a TFT

lilac tusk
#

Just need transparent oled ๐Ÿ™‚

sand lotus
#

I completely missed show and tell ๐Ÿ˜ฆ will watch later tonight.

#

was out taking a walk with my mom, time well spent.

dim knot
#
lilac tusk
#

On dual core MCU, you could probably run both Arduino and circuitpython lol

nova totem
#

When are the eyes getting animated? ๐Ÿ™‚ ๐Ÿ‘๏ธ

lilac tusk
#

Iโ€™ve been lucky buying displays from Aliexpress

sand lotus
#

Oh I'm sure PhilB's probably working on something and if not I'll definitely do something for halloween with them and a bigger halloween mask (if they come out by halloween).

nova totem
#

I hadn't seen them running on the ESP32-S3 (yet). After doing it on the 2040 it shouldn't be too hard (famous last words)

sand lotus
#

Yeah there's going to be some dsi to hdmi stuff, maybe even pico dvi. I'm sure there will be a way with the S3 I think it can handle it.

#

maybe even a scorpio?

rich wing
dim knot
lilac tusk
sand lotus
#

Eyes aren't a problem. It's the size of the huge round displays that will require a more powerful MCU.

lilac tusk
#

Animating the eyes can be tough regardless of size

#

I was just a surprised TFT_eSPI even had it working so soon

nova totem
#

The key on the 2040 (and atmel51 of Phil B's original) was DMA so you can render and draw at the same time

lilac tusk
#

Yeah

sand lotus
#

Yeah PhilB's pre-compiled implementation is honestly the most realistic looking.

lilac tusk
#

TFT_eSPI I think avoided DMA but still looked pretty decent thanks to the large amount of RAM and speed of the rp2040

nova totem
lilac tusk
#

Either way, cool stuff all around

#

Super impressed by your work on DMA Mark ๐Ÿ™‚

sand lotus
#

The panel with Jepler, Dan, and Kattni was extremely informative. I thoroughly enjoyed their panel.

dim knot
nova totem
lilac tusk
#

Iโ€™d love to rewrite my fpga loader script to run under C and have a cute python wrapper. Though IcePython is already really simple.

sand lotus
#

Yes the breaking of 9 is going to be major and there's already some cracks getting started in 8.2.2. Things about to get messy so just be prepared for bugs, lots of bugs. Patience will be very important going into the 9.0 release

lilac tusk
#

9 will be great

sand lotus
#

Yes I'm thoroughly excited for all the new features coming in 9.

lilac tusk
#

A little sad no Matter support but I know why weโ€™re not seeing it yet

ivory flax
#

How about this for a poster

lilac tusk
#

Matter is just so.. convoluted

#

But a recent ESP-IDF feature might make it easier for at least ESP32 devices

sand lotus
lilac tusk
#

Matter is fine, it is just very nuanced in how we will need to use/implement it.

sand lotus
#

600 OSHW ๐ŸŽ‰ that's awesome and kinda mind blowing.

nova totem
#

599 more for me to catch up!

lilac tusk
#

600 for me to catch up

nova totem
lilac tusk
#

๐Ÿ˜…

paper agate
#

Adafruit rocks!

dim knot
sand lotus
#

I have a suggestion for OSHW 666. Use something with a built in ILI display and call it the Dev-ILI.

open girder
#

๐Ÿ™‚

sand lotus
#

It's like Teddy Ruxpin & Figment had a baby. Part Teddy, Part Figment. โค๏ธ

lilac tusk
#

Or a respin of the Hallowing with an RP2040

#

๐Ÿ™‚

cinder wind
#

mmm danger frosting

lilac tusk
nova totem
#

Finally! I heard thunder and my lightning detector recorded a strike! Since I showed it off on show and tell a month or so ago no storms. But finally! ๐Ÿ™‚

unreal bay
#

Took years to properly remember CDS, it was always an LDR light dependent resistor in school

cinder wind
#

wait there's a "PT-1000" now?

open girder
#

LOOKIN FOR SARAH CONNA'

cinder wind
#

aahahah

sand lotus
#

more math takes more time. makes sense.

gray obsidian
#

Aw, I was so busy digging the rabbit hole of programming 68HC705 uCs I missed it all

sand lotus
#

having a sensor that can output spi, i2c, or voltage is pretty neat.

#

๐Ÿ†•

dim knot
lilac tusk
#

Just 14 left

sand lotus
#

I snagged one

nova totem
#

You can play a large animated gif on that no problem with that much RAM

cinder wind
#

still not calling it the BOOP button

lilac tusk
#

BOOP buttons for prompt nose resets

gray obsidian
#

"bootloader button" โ€ฆ Much simpler than applying VTST=2*VDD then VPP=14V to /IRQ like on 68HC705 ๐Ÿ˜…

sand lotus
#

N16R8 is the perfect amount for any adafruit_request project I can throw at it. It's better to have more ram than not enough when you're pulling MB's of JSON from an API.

#

the built in SD card is very handy to have for any project too.

lilac tusk
#

Q: will you discount cowbells for a โ€œMooooovingโ€ sale? ๐Ÿฅธ

rich wing
sand lotus
#

like tears in the rain

cinder wind
open girder
#

they got my good side, nice

sand lotus
#

lol

lilac tusk
#

Serious question: will the new space be much larger than what youโ€™re in now? Will it possibly include conference space for maybe OSHW/OSS meetups?

#

AdaCon maybe?

gray obsidian
#

Actually, I'm wondering how I'll control these VTST / VPP / 0 levels on /IRQ from an Arduinoโ€ฆ thinking about some stacked zeners + some analog mux like NJU211 with some shottky diodesโ€ฆ

echo canopy
#

Questionโ€ฆ any updates on a past ESP32 board with a camera? Just curious if itโ€™s still a future product .. Thanks

cinder wind
#

those big round displays are perfect for those big 6 ft skeletons people have

sand lotus
#

ahh an actual pyportal sounds cool

cinder wind
#

PyPortHole

echo canopy
#

Questionโ€ฆ youโ€™ve done lots of work on displaysโ€ฆ just curious what would it take to drive a โ€œlaptop display โ€œ even if itโ€™s lower resolution. Is it possible to do it with a chip like an ESP32-S3 Thanks

gray obsidian
#

and you'll show a bowl with pictures of sweets at the bottom ๐Ÿ˜„

upbeat coral
#

Gotta run, thank you for taking time for us.

gusty wedge
#

Very late hi from Costa Rica.

cinder wind
#

Thanks Limor, thanks pt!

verbal river
#

Bye

gray obsidian
#

it's good yeah, thanks!

lilac tusk
#

Darn, question was missed

gray obsidian
#

annnd it's 3am. off to bed!

lilac tusk
#

Oh well

sand lotus
#

Have a lovely week everyone, mind the gap.

gray obsidian
#

@lilac tusk or maybe it's tactically avoided, for some surprise, who knows

open girder
#

ok @lilac tusk did not see it, will answer it next week!

#

yes and maybe!

#

short answer!

lilac tusk
gray obsidian
#

Oh wait actually, that bowl with the round screen at the bottom, since it has touch detectionโ€ฆ it could detect when a kid tries to grab the sweets, and pop some ugly face ๐ŸงŒ When is halloween already? cc @haughty quiver

sand lotus
gray obsidian
#

OMG LOL yeah

noble rampart
#

Adabox

rapid hornet
#

<t:1692997200:R>

sand lotus
#

?showtimes

arctic abyssBOT
#

Desk of Ladyada - Sunday Evening
JP's Product Pick of the Week - 4pm ET Tuesdays
3D Hangouts - 11am ET Wednesdays
Show & Tell - 7:30pm ET Wednesdays
Ask an Engineer - 8pm ET Wednesdays
John Park's Workshop - 4pm ET Thursdays
Deep Dive w/ Foamyguy - 5pm ET Fridays
FoamyGuy's CircuitPython Stream - 11am ET Saturdays

sand lotus
#

Is it time to change out Deep Dive w/Foamyguy in the Friday schedule?

rapid hornet
#

We could remove the person. Foamyguy is going to do next week

brazen grove
#

yes

dry shore
#

waves

timid plover
#

take your time ๐Ÿ™‚

nova totem
#

๐Ÿ‘‹

dry shore
#

could do both, a green-screen on a pull-down curtain like a projector screen

wind spoke
#

Do you need to duplicate computer, or will you remote connect, or totally not work when at home?

dry shore
#

no more cat cam then?

wind spoke
#

Why did you recently invest into a new cat cam then???

nova totem
#

Be careful with attic spaces and insultation above rooms. Found out more then I ever wanted to about that topic

dry shore
timid plover
#

I"m here for the technical content

wind spoke
#

There is that "Tiny Code Reader from Useful Sensors" that read QR code and can be talked to in I2C...

dry shore
#

echo 'WIFI:S:name;T:WPA;P:password;;' | qrencode -o wifi-test.png

brazen grove
#

I think circuitpython has a qrcode library already

dry shore
#

if you scan this, your phone will offer to connect to name with password

brazen grove
#

so you just need to connect the camera

dry shore
wind spoke
# dry shore in theory, this sensor could scan the same QRcode, and then connect

The part that might be difficult is to write into the toml file, once you have read that QR code, so that you don't have to present it each time. But having an easy way to setup Wifi is great if you want a "product like" experience.
The alternative to start as an AP, let the user connect, then from there set the config...

#

If it is not present on 8.2.4 then is it a problem?

dry shore
#

oh, and there is also the WPS process

#

just push a button on the router

#

my rough understanding, is that WPS just sends the password over wifi, with a bit of crypto, so only one user gets it

sand lotus
#

ack i'm late. good afternoon everyone โ˜•

wind spoke
#

I mean, test on the stable release first? ๐Ÿ™‚

sand lotus
#

i picked up a metro esp32-s3 n16r8. i like that it has a built in sdcard and gobs of ram. yum yum moar ram.

#

no i've never used watchdog timer, i did see the reported issue on it. have nothing to add on the subject.

#

i only ran into the SSL handshake bug and still plenty of hard faults on the matrixportal s3 which are 2 separate bugs.

#

the SSL handshake bug is fixed in 9.0 alpha though i only tested it on 2 boards, an S2 and S3.

#

last known good version that has no backported bugs i could find is 8.2.1, things started breaking in 8.2.2

wind spoke
#

And the IDF upgrade too?

timid plover
#

there are a few warnings during the build process - does your CI process force warning clean commits ?

sand lotus
#

i'm genuinely excited for 9.0 but it's going to get messy on the way there.

#

i vividly remember going from 7.3.3 to 8.0 alpha's and betas and it was similar. everything started getting smoothed out by 8.1

timid plover
#

does tio have other configuration / hardware settings - when was the last time tio showed something?

#

can you take your solder projects to the outdoors to make minor changes ?

wind spoke
#

Is that the board with a switch to change the mapping or RX/TX?

sand lotus
#

i think that's the rp2040 metro

dry shore
#

cant you also change the build config, to remap debug onto the main uart?

sand lotus
#

yeah that's the one with the rx/tx switch

wind spoke
#

This is not the RX/TX pins you are looking for. <= Jedi trick

#

But do you have kattni code on it yet?

sand lotus
#

noticed on the Metro ESP32-S3 it advertises octal flash. is that a hardware builtin thing or do we have to initialize it in a specific way to use it vs qspi?

dry shore
#

run objdump -d foo.elf on the most recent build
and lookup that saved PC

#

ctrl+f also helps

#

does circuitpython do any JIT?

#

then PC should always remain within .text, and any violation of that would be a bug

timid plover
#

did you indicate you don't have objump ? ( part of gcc ) - maybe I didn't hear correctly

#

I love objdump -S

brazen grove
dry shore
#

ah yeah

timid plover
#

can you disable the watchdog and observe 'correct' behavior ?

cinder wind
#

no catcams now it's just watchdogs

timid plover
#

catcam is BIG ! ๐Ÿ™‚

brazen grove
#

the size reflects the importance

sand lotus
#

why is it called watchdog and not watchcat? is dog an acronym?

#

i mean watchcat would make some sense for linux.

timid plover
#

were there other WDTs active - or just the one 1 second WDT?

dry shore
#

i think the PC you saw would give most of the same info jtag would

#

just check the objdump

#

do you have an MMU or MPU?

#

an MMU can be configured for no-exec, so if you leave .text, it instantly has a fault

#

then PC can never be in the weeds

#

4037a3a7

#

got a memory map? where is ram/rom/xip?

#

ah, so it was valid, and i was trying to guide you thru doing it without that python script

#

ah yeah, thats a memory map, so your executing code from iram

timid plover
#

you loaded code into the iram

dry shore
#

i find objdump -t easier to read/search

#

map files are a mess

#

that 405, might be a bug in the backtrace code, it cant unwind the stack

#

whatever called __retarget_lock_aqu... messed up the stack

#

it could be the psram is corrupting data, yeah

#

try turning it off?

#

yeah, search the makefiles for that, and then see what triggers it

#

i notice your inside a #if block

#

what is the condition that sets needs tuning?

#

they may have fixed the code, to use the correct tuning params

#

yeah, i'm thinking the same thing

#

you would want to rebase your branch ontop of it

#

dynamic frequency scaling?

#

i'm thinking, changing freq based on cpu load

timid plover
#

can you turn off the timing tuning in the menuconfig ?

#

I thought they removed the warning - different version?

dry shore
#

1 core mode?
that could cause coherency problems between the 2 cores

#

and if you dont properly flush and mutex things, corruption will ensue

#

ctrl+r will let you search bash history

#

ctrl+r is part of readline, and will work in a wide range of programs

timid plover
#

what did "deactivate" do ? ( esp idf ? )

left pier
#

๐Ÿ‘‹

timid plover
#

thank - virtual environments -

#

screen froze ?

dry shore
#

do you need BLE? maybe just turn BT off?

timid plover
#

my error

sand lotus
#

have you found using multiple cores compiles incorrectly in the past? i've used up to 4 but was hesitant to throw more at it.

timid plover
#

is there a text file that menuconfig uses - that is easier to search ?

sand lotus
#

makes me feel better that i'm not the only one starting to find learn guide examples breaking from recent changes.

#

nice bug find Kattni

timid plover
#

since the question of locks came up before - is there a lock logic errors?

left pier
#

I missed the beginning, can someone post the link to the GH issue (just curious), ty !

rapid hornet
sand lotus
#

thank you for the bug hunt on a deep dive level. seeing how debugging is done is highly informative.

left pier
#

Thanks for the stream !

timid plover
#

thank you

rapid hornet
#

thanks @timid plover for notes

sand lotus
#

good luck with move!

cinder wind
#

thanks Scott!

left pier
#

Let me know if we want to turn the notes GH actions back on @hot riverd @rapid hornet

timid plover
dry shore
#

stream and mic are working!

smoky island
dry shore
#

a webgame i played years ago, once switched to https://captchas.net/
the idea being, you put <img src=https://captchas.net/foo?user=clever&token=123> into your page

that site then looks up the secret, and hashes secret123, then uses the bytes of the hash as the number in the image

your supposed to store the token in a session cookie, and use that with your own copy of the secret to validate the users answer

this webgame did <input type=hidden value=123> and let the user change the token.....

#

so essentially, it was vulnerable to a replay attack

#

it is generating a real captcha

#

it wasnt a secret, but it was a string that was meant to be constant for a session

#

and by allowing the user to change it, the user could reuse a previous captcha answer

#

and by changing the hidden input, the game just accepts it

#

yep

#

the text in the captcha, is a hash of the token and secret, so its prng

#

yeah, value

#

yep

#

one trick, have a register page, but store the name/pw in cookies or local storage

#

and then validate against that

#

then the user thinks its working normally

proper prawn
#

Hi Tim and all present.

dry shore
#

that could also be a flag

#

the user goes into local storage, and changes the admin flag

#

ah, yeah

#

oh, the admin console for one of the services i ran years ago, it had a sql injection exploit in the username

#

just a user of 1 or 2 would disable password checking, lol

#

the original admin knew that php zend had sql parameter escaping
he wrongly assumed that it was 100% automatic

#

the injection, turned the login query into:
select * from user where user = 1 or 2 and password = "hunter2"

#

the or effectively made the 2nd half of the WHERE clause useless

#

yep, phpmyadmin has exactly such a wizard

#

phpmyadmin refuses to operate normally, until you delete the wizard.php

#

so you cant run the wizard a second time

#

yeah

#

there is a text file with i_agree=0 basically

#

and you have to change it to 1

inner spade
#

Joining the stream a bit late โ€” was obsessed with my first synthio project this morning. Steep learning curve, but getting the sounds I wanted to hear. Synthio is amazing.

dry shore
#

relative image paths, so the client is adding that /login/ yeah

#

the python server may not decode it

#

inconsistent (un)escaping is one cause of exploits

#

when in doubt, wireshark!

unreal bay
#

Thought someone did form passing and URL encoding (not feature complete maybe)

dry shore
#

oh, i just remembered an ISP story i heard
to protect against sql injections, they silently stripped all special characters from all fields

#

including password

#

so the more special characters you have, the simpler your password becomes, lol

#

i'm checking an idea locally....

#

that too! lol

dry shore
#

oh, you just gave me an idea for a new flag

#

if that {username} stuff is evaluating python....

#

and the user can upload custom files....

#

booo, .replace wont have exploits, lol

#
> escape("<script>alert('foo');</script>")
'%3Cscript%3Ealert%28%27foo%27%29%3B%3C/script%3E'

/profile/%3Cscript%3Ealert%28%27foo%27%29%3B%3C/script%3E

#

did you just make an html injection exploit?

#

ah, but if the string is not in the json, it will reject

#

only if you comment out the check for valid users

#

you didnt url encode the /'s

#

you copied the non-encoded form

#

the bottom text box, not the top one

#

ah, because your webserver doesnt unescape things

#

the browser will un-escape for display

#

i believe thats because the webserver cant undo url encoding

#

as before, wireshark cant lie, and will reveal the truth

#

yep

#

ive used burp before to mitm https from my android phone
paypal sent the name/pw "cleartext" with only https to protect it

my local bank did something more complex

#

yeah, when i was testing the enctype="application/json" earlier, i was going to wireshark to confirm encoding
but letsencrypt http's everything on my server

#

had to switch to another server that lacked LE

#

oh, i also know of 2 security issues with the rpi hardware

#

for the bcm2835 bootrom, they generate the expected signature, and use memcmp() to compare it to the provided signature

#

the more correct bytes you have, the longer it takes to validate

#

thinking about it, i can see you potentially having the same problem

#

if i try to login as adfff, affff, or admif
how long does the string compare and lookup in the json take?

#

does affff fail faster?

#

but the decryption will be constant time

#

while the string compare is variable time, based on how much i guessed right

#

the longer it takes, the more characters i guessed right

#

the same may apply to your password

#

but /profile/adm will fail slower then /profile/a

#

which acts as a hint, and speeds up your brute force

#

if username not in db_obj['users'].keys():

so the question then, is how does circuitpython implement username not in ["biglist"]

#

everything else can be ignored

#

lexer.c: "not",
ok, so i can start here

#
// must have the same order as enum in lexer.h
// must be sorted according to strcmp
STATIC const char *const tok_kw[] = {
    "not",
#

MP_TOKEN_KW_NOT

#

which shows up nowhere else in the codebase

#

yeah

#

the c that makes circuitpython work

#

aha, i know your bug

#

its that escaping pr you showed earlier!

#

its pre-escaping all form fields, to protect you when you display them

#

except, your not trying to display them, so its making things worse

#

oh, maybe you need to decode the bytestring as ascii first?

#

to make it into a string

#
            if (kind == PN_comp_op_not_in) {
                EMIT_ARG(binary_op, MP_BINARY_OP_NOT_IN);

ah found it, that is how username not in ["biglist"] gets compiled

#

i just noticed, there is JIT support in circuitpython...

#

there are 2 different types of redirects via http codes

#

plus you can use JS or <meta> to redir

#

py/emitnthumb.c is in circuitpython
it looks to generate arm thumb assembly

#

there are variants for x86, arm, and xtensa

#

oh, and that doc mentioned POST

#
processing login
<script>
window.location = "/profile/sally/";
</script>
#

a simple/dumb JS redirect

#

plus some text for the user to stare at

#

the http status codes doc

#

so, dont use 307 or 308

#

301 and 302 dont mention that

#

discord chat is also missing from the stream

#

the user agent is the browser

#

so the browser must not change the method, with 307/308

#

yeah, that might work

unreal bay
#

thought it was 301/302, not seen 307/308 before

#

looks like 307/308 are newer to stop Method changing mid-flight

#

hi all btw, and thanks for the stream blinkacomputer

dry shore
#

yeah, you can commit all you want without a remote

#

a remote is only needed for push/pull/fetch

#

there is a copy of the branches locally and remote

#

you want to make your initial commit locally, and push

#

dont create an initial commit in github

#

delete the main branch, and just push master to github

unreal bay
#

you could cherry pick from master

#

then delete it

dry shore
#

you can rename it locally before you push

#
git checkout -b main
git branch -D master
#

that will rename to main, and delete

unreal bay
#

think i even used git branch -m main
instantly renamed, and then you just push

proper prawn
#

Thank you Tim, have a nice rest of this weekend!

dry shore
#

@smoky island after digging thru a lot of c, and some help from #circuitpython-dev
i found that db_obj['users'].keys() is using a hashmap to store the keys, and isnt vulnerable to the timing exploit i had theorized

smoky island
dry shore
sand lotus
#

Just woke up after a long night. Missed your stream. ๐Ÿ˜ฆ

smoky island
#

I'm hacking together a solution that allows {"Set-Cookie": ["something=1;", "else=2;"]} and then knows how to parse that out and send multiple lines.

sand lotus
dry shore
#

yeah, that sounds good

#

i did also discover, the original question i had is far more complex

#

a dict can be ordered or un-ordered

#

the keys in a dict can be strings or qstrings

smoky island
dry shore
#

if the keys in the dict are all qstr's, then its effectly using ints as keys, and performs far faster

#

but the json parser doesnt use qstr's

#

if the dict is ordered, then mp_map_lookup() uses a linear search, which could leak other data

#

but the json parser creates an unordered dict, i think the keys are in whatever order they appear in within the json

smoky island
#

Interesting, I had no idea there were different types "under the hood" or any that worked with qstrs.

dry shore
#

and you can then narrow down your search from there

#

a dict has a special flag on it, all_keys_are_qstrs

#

it starts as true, and goes false if you use a non-qstr as a key

#

and will never recover (go back to true)

sand lotus
#

ahh that's what you were talking about earlier, now i understand it. the search parameters are alphabetical, very neat find.

dry shore
#

i did also stumble upon something i was told didnt exist

#

there is JIT support code in circuitpython

#

so in theory, it could be enabled, and give more performance, at the cost of ram

#

something to play with, on a device with more ram

smoky island
#

whoa! that would be interesting to tinker with sometime. I've never seen it come up before

sand lotus
#

wasn't that a question asked on deep dive?

sand lotus
#

or was that a question in help with circuit python? i remember you asking that one.

dry shore
#

there is a seperate emit file, for each supported arch

#

here is a function that generates a single 32bit thumb opcode

sand lotus
#

awww man i missed a good episode about keys and encryption ๐Ÿฅน

dry shore
#
#define ASM_MOV_REG_IMM(as, reg_dest, imm) asm_thumb_mov_reg_i32_optimised((as), (reg_dest), (imm))
#define ASM_MOV_REG_IMM_FIX_WORD(as, reg_dest, imm) asm_thumb_mov_reg_i32((as), (reg_dest), (imm))
#

a header file then gives it a more generic name

#

py/emitnative.c then uses that, to generate asm

#

dynruntime.h:#define mp_load_method(base, attr, dest) (mp_fun_table.load_method((base), (attr), (dest)))

#

ahhh, and thats what this is then doing

smoky island
#

Didn't quite make it into any encryption, but I did work on (one of) the login mechanism(s).

dry shore
#

so, if we wanted to enable JIT, we would need to get emitnative.c into the build....

#

ah, and thats the problem, none of the makefiles reference it!

#

i assume the entire py/* came from another python engine?

#

and some parts are just unused dead code

sand lotus
#

If you're interested in a token scheme here's the one Fitbit uses to an extent. It can be highly randomized if you comment out the default scheme and uncomment the randomizer I wrote as another layer. I unnecessarily over engineered it beyond what Fitbit does and ended up archiving it. https://github.com/DJDevon3/Fitbit_CircuitPython_Token_Crypt

#

I ended up going with a much simplier nvm token storage scheme instead. Archived it in case someone else might find it handy someday for API token creation. ๐Ÿ˜‰

smoky island
#

Nice! Thank you. I'll take a look.

#

I looked into JWT tokens a little, but I'm undecided if I want to include that in this CTF. I have lots of ideas I think are interesting, but do want to get the most basic one done enough that it could be fun for people to play. I may eventually expand the repo into a series of increasing difficulty ones.

brisk bone
#

Hi, I watched yesterdays stream today, already working on fixes and improvements you mentioned

unreal bay
#

Seems like actually is base64 for Bearer, like Basic authorization header https://datatracker.ietf.org/doc/html/rfc6750#section-2.1

IETF Datatracker

This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosur...

#

hey dont worry about individual server implementations, that's a whole other set of problems ๐Ÿ˜‰

#

wonder how it translates, if \u0004 or whatever would work instead

#

wicked

#

Thanks for the stream, interesting, been a web dev for years but never done CTF

smoky island
#

Ah, I just realized I never went back and put the DB decryption into the actual project ๐Ÿ˜ณ . I did it in the PoC script only.

open girder
#

WE ARE LIVE! The Desk of Ladyada - ESP32-S3 RGB TFT Experimentation ๐Ÿ–ฅ๏ธ๐Ÿ’ก๐Ÿ”‹ https://youtu.be/-CgLnAP-sO4

We are testing ESP32-S3 TFT board prototypes. Used ESP32-S3 RGB TFT Eval with Arduino library. Trying out the OpenAI code interpreter. Using a new board with native GPIO & FPC connector. Redesigning for PSRAM's octal mode, current board displays MJPEGs! "The Great Search" Searching for replacement capacitors for old boards, especially tantalum, ...

โ–ถ Play video
viral sail
#

Good evening.

open girder
sand lotus
#

this is starting to make a lot of sense with what i'm running into on the matrix portal s3.

nova totem
#

It sounds like basically the same idea of animated gifs. just with jpegs

sand lotus
#

wonder what the file size difference would be for an animated gif vs an equivilent mjpeg?

gray obsidian
#

Make it spin!!!

#

I'm the general, I want it to spin!

nova totem
sand lotus
#

trying to write an init for a new display is a bunch of datasheet scrolling, bit flipping, and prayer.

#

PT Rant โค๏ธ +1

verbal river
#

pt rants is the only segment that doesn't have a video intro & theme song.

open girder
#

i get one per show as part of my contract

sand lotus
#

that was a good one, and on point as always. chatgpt is just using our code is 100% accurate. and if it's not specifically by adafruit it's going to pull something from someone's library or example in the community.

nova totem
#

I hate having to translate format A to format B. Anything that makes that easier wins in my book

gray obsidian
#

sed and awk commands are more cryptic but shorter ๐Ÿ˜„

sand lotus
#

Would love to use it someday to take an Adafruit library for Arduino and automatically convert it to Circuit Python. That would make adafruit programmers lives so much easier.

#

There are a couple examples I've found in Arduino that do not exist in Circuit Python yet. Ran across one today for the CPE with the proximity sensor.

open girder
#

yah, we might try that

sand lotus
#

wow, that would have taken me like 5 minutes to add commas at the end of every line. seeing how to use chatgpt is very informative.

open girder
#

some ai tools allow you to point at the api docs to "learn" too

nova totem
#

I saw an example of someone training ChatGPT for midjourney commands that was pretty cool to help you generate better prompts

verbal river
#

I have also forgotten how to use awk & sed. ๐Ÿ™

nova totem
#

Does anyone ever remember how to use awk & sed or just look it up when they use it ha

open girder
#

couple charts openai made with the json file from oshwa api, this is preview from my article that goes live on monday

gray obsidian
#

I still use sed from time to time

sand lotus
#

I'm not polite at all to my Alexa devices. If the future robot overloards ever get into reprisal i'll be the first on their hit list for being mean to them. ๐Ÿ˜›

gray obsidian
#

but the syntax is not easy to remember for complex things

open girder
#

for certification dates, the most popular day of the week of the certification is friday. the most popular month is may.

how long until adafruit gets to 1,000 certifications? openai said that based on the linear regression model and the current trend, we'll reach 1,000 certifications on july 30, 2026.

openai warned me this is a "simple prediction based on current trends, and real-world outcomes may vary due to multiple factors."

and last up, out of all the 2,407 certifications, the most popular software license is the mit license, with 1,348 certifications using it.

#

fun to upload data and just ask it questions

sand lotus
#

I can see this being very useful for init sequences if you can feed it the display datasheet?

nova totem
#

I was at a talk that said one of the best ChatGPT uses is for summarizing data of all sorts. Writing meeting minutes and such

open girder
#

most datasheets dont have the init sequence in them! they are in a separate text file usually

#

yerp

gray obsidian
#

Hmm I think I'll run out of GPIOs on this Arduino UNO trying to program a 68HC705E5โ€ฆ should probably go straight to a Megaโ€ฆ (need 5V)

sand lotus
#

You could teach them to read the datasheets though, somehow?

open girder
#

yah, some do PDFs, totally possible

gray obsidian
#

I recall seeing some online tool to process datasheets to collect pinouts for KiCADโ€ฆ

#

not AI but still useful

sand lotus
#

Oh I had to use a datasheet providing the hex register values. I had to copy/paste them individually and in the exact order.

open girder
#

you could OCR it into a text file to upload - not sure if chatgpt can handle pdfs

nova totem
#

My coworker now uses ChatGPT to give estimates/answer questions that he considers useless but someone won't leave him alone on. Much to my amusement

gray obsidian
#

The problem with PDF is there are more than 1 order for the content, and it's not always the layout one you want.

sand lotus
#

ChatGPT is the new "let me google that for you"

gray obsidian
#

Apple ][ Forever ๐ŸŽถ

#

unless too much current insideโ€ฆ

#

some PSUs have fuse-resistors meant to blow upโ€ฆ

#

There are indeed whole websites dedicated to recaping old machines ๐Ÿ™‚

#

exponent

#

ugh

#

Oh and that brown thing on the photo wasn't leak, but some glue, and sometimes this glue can soak moisture and cause problem

sand lotus
#

through hole caps have indents on the top in case it does leak or blow it's most likely going through the top.

#

does a surface mount capacitor have the same kind of thing? what if it's blows out from the bottom? only way to tell is to probe it?

gray obsidian
#

most of the time yeah

open girder
#

@sand lotus good question - not sure how they vent!

gray obsidian
#

SMD caps act like popcorn when you use hot air for removalโ€ฆ

#

๐Ÿฟ

sand lotus
#

This entire episode could be fully AI... is that air you're breathing? You don't know.

gray obsidian
#

There is no spoon.

#

๐Ÿฅ„

sand lotus
#

no memes :/

gray obsidian
#

And there's a transistor right alongside, so heat as well

sand lotus
#

tantalum is one of the most expensive metals

#

the tantalum capacitor on that apple board is beefy, probably not a cheap part.

gray obsidian
#

Fun fact: the Mac LC-III has the -5V cap (C22) backwards from factory.

sand lotus
#

this is a very very informative episode. i just learned how to source and replace a surface mount capacitor. really great.

viral sail
#

Thanks @open girder and good night. ๐ŸŒ”

gray obsidian
#

n8

verbal river
#

Bye

robust horizon
#

I missed it! I had my own cap-replacing experience back in April of this year. https://octodon.social/@stylus/110967936598634331

Attached: 1 image

@adafruit@mastodon.cloud Darn, I missed this one!

I don't have much experience replacing capacitors but I had to do it for my old Xerox 820. Unfortunately the cap blew apart violently enough that its capacitance value was not readable.

I was lucky enough to find someone who had a photograph of the same board. It turned out t...

gray obsidian
#

Good old RIFA ๐Ÿ™‚

echo canopy
#

@open girder cc: @haughty quiver

Just a heads up the fine details on YouTube still have the Product pick and link from 8/15 (as of 1:50pm)

Thanks and see you soon!!! adafruit

unreal bay
haughty quiver
echo canopy
#

Awesome, glad to see you back JP!

shell mason
#

some could say it need lars2C

haughty quiver
#

hi there!

ivory flax
#

Hey JP we missed ya. Hope you are doing ok

open surge
#

welcome back JP

clever summit
#

๐Ÿ‡ธ๐Ÿ‡ช ๐Ÿ‘‹

viral sail
#

Good afternoon.

little onyx
#

just made

#

i

inner spade
#

Disturbing image of unknown relatives. A solid reason to avoid submitting your sequence to a DNA database.

cinder wind
#

Those are the Johns Parks

inner spade
#

And welcome back @haughty quiver !

little onyx
#

This is my brother Daryl and my other brother Daryl

winter zinc
#

๐Ÿ‘‹

cinder wind
#

"Where's the BFF?"

shell mason
#

Glados AudioBFF

cinder wind
#

except for QTPy M0. not for that one

hard hollow
#

โ˜•๏ธโšก๏ธ๐Ÿ‘‹๐Ÿฝ

split gazelle
#

need more coffee

hard hollow
#

This week @adafruit weโ€™re talking RP2040 PropMaker Feather with special co-host Liz Clark. Also, a first look at prototyping a synth guitar with SynthIO in CircuitPython. Checking out community makes and Croc Toes designed by HBRDL for this week's Timelapse.

Learn Guides

Talking Adabot
https://learn.adafruit.com/prop-maker-feather-talkin...

โ–ถ Play video
open surge
#

good morning

viral sail
#

Good morning.

lavish patrol
#

Hello, all ๐Ÿ‘‹

upbeat coral
#

Hey Y'll

split gazelle
#
#

Today's coupon code โ€œtalktalkโ€ gets you 10% off your order!

lavish patrol
#

Not a free commercial for TalkTalk... ๐Ÿ˜‰

hard hollow
lavish patrol
#

How accurate is the RTC?

unreal bay
#

Hey wonderful 3d folks, there was a user mentioning their timezone (Perth) was experiencing issues with sunrise (the star sunrise/sunset project), while sunset worked fine. Was a bit of a mystery, I'll test it at some point (UK here).
Can you make things more timezone friendly in future please blinka_cooking (the code does "appear" to be timezone aware or at least the API is)
UTC for the win...?

lavish patrol
#

@hard hollow @split gazelle Thanks. ๐Ÿ˜€

hard hollow
shell mason
#

andy think someone make puppet lars

lavish patrol
#

๐Ÿ˜ธ

shell mason
#

as some of the puppeteer controlrigs use computer so it could be fancy to move lars

lavish patrol
#

Lol

shell mason
#

that D20 look fancy now

dry shore
#

that requirement of freefall reminds me of an old iphone app
you had to throw your iphone into the air, it would measure the height with the accelerometer, and then keep high-scores of users

#

apple deleted it from the app-store, for obvious reasons

split gazelle
lavish patrol
#

I saw some claws just then...

split gazelle
upbeat coral
#

Different attachments for Microscope Stand and insert stand.

split gazelle
gusty wedge
#

talking heads.

viral sail
#

Thanks @split gazelle & @hard hollow . See you all tonight.

vagrant flax
#

Thanks for the show Noe and Liz!

lavish patrol
#

Thanks, @hard hollow and @split gazelle - great show. ๐Ÿ‘

upbeat coral
#

Thank you for taking time for us.

opaque hearth
#

Bye Thanks!

hard hollow
#

Thanks folsk! cya tonight!

split gazelle
#

thanks everyone!

split gazelle
viral sail
#

Good evening everyone.

inner spade
#

๐Ÿ‘‹

upbeat coral
#

Hey Y'll

nova totem
#

Hello everyone

open surge
#

good evening

lethal lagoon
#

hi yall!

#

oh virtual vending machine super fun idea

nova totem
#

Round displays are so fun

robust horizon
nova totem
#

I love how that clear case looks

lethal lagoon
#

ahh yes the crystal pepsi era

robust horizon
#

if you really want a "balanced" die you could ignore which face is "up", and pick a true random number with os.urandom ...

low fractal
verbal river
nova totem
#

purposely off weight so one side is always up and put a screen on it?

robust horizon
#

@nova totem or put 20 screens on it

#

good to see you @brazen grove ! i've been enjoying your PCB design posts on mastodon

nova totem
#

Really neat to see a whole game in circuitpython with a board built for it

dry marten
#

Cool critter @brazen grove

brazen grove
verbal river
#

like a pegboard but it looks much cooler

sand lotus
#

holy 3d printed walls batman. that's a lot of 3d printing. nice design and pretty.

robust horizon
#

cool project gary!

#

wanders off to find dinner, don't do anything too cool while I'm away

signal spade
#

tyvm

#

Awesome DJ

upbeat coral
#

Sophy!

nova totem
#

@sand lotus Good to know I have 4 panels now and plan to do something with them "soon"

sand lotus
#

gorgeous little tape recorder. nice to see Sophy again too.

nova totem
#

The quality of that tape recorder is great for the age of it. I do love that it requires two different types of batteries too

gray obsidian
#

Oh, jelora has designed replacement spools for these bands btw, and adapters to store them in larger boxes: https://mastodon.gargantia.fr/@jelora/110951469384755993

Attachรฉโ€ฏ: 4 images

Jโ€™ai continuรฉ mon projet de bobines en impression 3D pour bande magnรฉtique 1/4" avec les cales pour faire tenir des bobines de 12,7cm (5"), 10cm et 7,6cm (3") dans un boitier carton pour bobine de 18cm (7")
#tape #bandeMagnetique #impression3D

#
Jelora.fr

Lorsque je me suis fabriquรฉ des bobines de bande vidรฉo 1/2" (article ร  venir) et que je les ai chargรฉs en bande, il mโ€™a fallu un outil pour coller plusieurs bandes les unes ร  la suite des autres car une seule ne suffisait pas pour remplir une bobine entiรจre. Il existe des outils dans le commerce [...]

nova totem
#

I can see how two of the batteries are reverse polarity from the others now too

sand lotus
#

what a neat tape recorder design.

gray obsidian
#

Oh, odd, different battery sizes

#

funky

#

At least it seems quite lighter than all others I know

lethal lagoon
gray obsidian
#

you cam has a hard time focussing @nova totem ๐Ÿ™‚

sand lotus
#

I think this is the Make Magazine youtube channel. For tomorrow's live stream with Sophy and other makers. https://www.youtube.com/@MAKE

marsh hull
# lethal lagoon ahh yes the crystal pepsi era

after going down a rabbit hole I learned that the Crystal Pepsi Era spans the years from "Baby Got Back" to "Whoomp! (There It Is)" and I am having either a midlife crisis or a nostalgia attack

lethal lagoon
sand lotus
#

Congrats on the lightning detector! โšก

open girder
#

@sand lotus yep, that's it, i started that channel when we started MAKE

gray obsidian
robust horizon
#

@lethal lagoon I didn't know I needed a deep dive into reel to reel recorders but I thank you for sharing that

lethal lagoon
robust horizon
#

goodnight all! โค๏ธ

nova totem
cinder wind
#

night! thanks Liz!

lethal lagoon
#

Thanks for a great show Liz and everyone!

onyx arrow
#

Thanks Liz and all

upbeat coral
#

Thanks to all for taking time for us

gray obsidian
#

thanks

split gazelle
#

thanks folks!

sand lotus
#

Thank you for hosting @split gazelle

dry marten
#

Thanks for the show @split gazelle

lethal lagoon
gray obsidian
#

Wait until you discover wire recording ๐Ÿ˜„

robust horizon
#

I was just LOOKING at those batteries thinking "WHAT" and then you explained it perfectly

onyx arrow
#

Very cool sophy. Those retro finished pieces seem timeless and your project is so clean and neat