#Bobby, a new voice assistant and Snowy successor

1 messages · Page 3 of 1

wooden wedge
#

oh well, idk, I'm sure one of these work

covert ingot
#

It does look a bit busy

wooden wedge
#

that's true

#

the bookshelf is the biggest issue I think

edgy flame
#

it's cute, I like it

wooden wedge
karmic lion
#

Works for me. I do sort of miss the friendly round font.

#

Which is, granted, not a particularly accurate representation of any text the app ever shows.

wooden wedge
#

that's fair

edgy flame
#

can we pick a cooler screenshot? like of a command with pretty boxes that pop up on screen?

wooden wedge
edgy flame
#

that's my only critique

karmic lion
#

It does sort of amuse me that after a week of redesigning everything the screenshot is of something that is entirely untouched.

#

Except for being bold now

wooden wedge
#

indeed

karmic lion
#

The current text explains the book being read

#

If it was e.g. a timer being set then the picture doesn't make sense any more

#

We just need to make one of those fancy GIFs of bobby doing lots of things as the first screenshot

wooden wedge
#

I wish banners could be gifs

karmic lion
#

Presumably our control of the app store means they could be if we cheated

covert ingot
#

You can add multiple banners and it'll cycle through them

wooden wedge
#

oh

covert ingot
#

It's like a gif, just 3spf

karmic lion
#

(But GIFs are terrible and that would probably be too big)

wooden wedge
#

second frame per

#

second per frame?

karmic lion
#

Banner of bobby reading a book

covert ingot
karmic lion
#

Banner of bobby in the kitchen setting a timer

#

Banner of bobby with an umbrella checking the weather

#

Don't ask how bobby holds the umbrella

wooden wedge
#

yeah, I agree

#

bobby needs a chef's hat

karmic lion
#

I am also very curious what the actual question being answered in that screenshot is

#

Not that it matters

wooden wedge
#

can you recommend me a beginner c programming book

#

it keeps recommending that book no matter the level of expertise

karmic lion
#

Maybe a little dated

#

I didn't know bobby was such a fan of K&R

wooden wedge
#

c78 is the only c that matters

finite night
finite night
wooden wedge
covert ingot
wooden wedge
#

those are per platform too?

covert ingot
#

They can be yep

karmic lion
#

Gotta show the right watch

wooden wedge
#

I need to get graphics for all the platforms now

covert ingot
wooden wedge
#

I have seen it mentioned

karmic lion
#

Fortunately bobby only actually supports two platforms

wooden wedge
#

it could support 3 if circles are ever possible

#

the lack of microphone is a difficulty for the remainder

#

oh actually, emery is a possibility too

#

there's so much screen area on emery

harsh brook
#

It's a nice looking screen

karmic lion
wooden wedge
#

t9 wasn't actually 9 keys

karmic lion
#

I know

#

Though I don't know where the 9 did come from

#

The successor to T8?

#

Apparently it stands for "9 keys"

#

I guess if you discount the punctuation it was true

#

I am now curious which key specifically was the ninth

karmic lion
edgy flame
#

my first watchface or two had emery support and then I decided i don't care

static jackal
#

Out of curiosity - what did you use to make the drawing/animations for bobby?

#

The times up animation is sooo cute!

karmic lion
#

I think it's all inkscape

wooden wedge
karmic lion
#

Bobby wants dinner and is just going to stare at the hourglass until it's ready.

edgy flame
#

these are really cute

wooden wedge
#

I forgot to add a pot on that hob

#

I would add unwashed dishes too, but there's not enough space

#

bobby can pretend to have taken care of that

whole wraith
#

This app is amaizing! Thank you!

When Bobby is lauched with a button press & hold, it immediately goes into listening mode. This is awesome. However, is there a way to cancel the listening and move into the "watchface mode" with the menu?

karmic lion
#

There isn't

#

I might add a setting for how quick launch behaves

whole wraith
#

Great, thanks! Perhaps a double-tap with the center button could act as a "become a watchface now" button?

karmic lion
#

What's your use case?

whole wraith
#

This way I could e.g. set a reminder with quick launch and check the remaining time with a quick launch. Plus the menu gets a bit cluttered with so many great apps you wonderful people are making lately.

karmic lion
#

Hm

#

(you can also verbally ask it for the time remaining but I grant that's perhaps not so convenient)

whole wraith
#

Thanks!

karmic lion
#

This does also remind me that I was considering changing the timer set confirmations to instead be cards that actually count down the time.

wooden wedge
karmic lion
#

Bobby is prepared for the sun with a parasol

#

Those all look good to me

wooden wedge
#

the idea is that bobby is prepared for when it actually rains according to the screenshot that's not there yet

karmic lion
#

Makes sense

nimble moss
#

Everyday the ponny seems to get stronger. I worry about when Bobby hits over 9000 power

nimble moss
# karmic lion T3 text input

One thing I always wanted to get onto pebble, and with an OSS PebbleOS I migth someday is the totally inane idea of morse text entry

wooden wedge
wooden wedge
#

I wonder if I should subtitle it with Rebble assistant rather than Pebble assistant

#

do one of those R with differently coloured right leg

edgy flame
#

I think that would be good

#

Getting some kinda Rebble branding into the banner is good

#

since this is A Rebble Thing

karmic lion
#

The word immediately above the banner is "Rebble"

sick apex
#

interesting choice

edgy flame
#

yeah, but that's also only on the app store page- once you have it in your locker the author reads as Katharine Berry

karmic lion
#

You also can't see the banner there!

#

I should probably change the author there if it's being a Rebble Thing.

karmic lion
#

But if it's changed to Rebble I probably wouldn't do anything with the stroke on the R

#

I think a prefer Pebble because a Rebble isn't a thing

#

But I also don't have any strong feelings on it.

wooden wedge
#

any particular requests for the banner screenshots?

karmic lion
#

Well I guess you'll have to get the weather to be raining somehow

wooden wedge
#

I will just ask for the weather in england

karmic lion
#

I enjoy the thematic reminder on the timer one but I wonder whether it should actually just be a timer instead.

wooden wedge
#

yeah, probably

#

I said "remind me", but realistically for short periods of time it should be a timer rather than reminder

#

because a reminder wouldn't work anyway for that short of a period

karmic lion
#

Indeed

#

I assume if you scrolled down on that screen it pointed that out

#

It seems to do that reliably

wooden wedge
#

yes it did

#

huh

#

umm

karmic lion
#

It claimed to set a reminder but actually set a timer. Thus, lie detector.

wooden wedge
#

I asked it for a timer

#

it did what I wanted really

karmic lion
#

I wonder whether the extra context it looks like you provided inspired it to say "remind"

wooden wedge
#

yeah, that's likely

karmic lion
#

Maybe I should accept timers as reminders

#

(the actual way the lie detector works is it classifies the message as zero or more of a timer, an alarm, or a reminder, and then I throw in a complaint if the classification doesn't match the function calls)

wooden wedge
karmic lion
#

Really, if it sets anything it probably doesn't need the lie detector

#

The verifier is just there as a nudge that something might be wrong if no box appears

#

If a box does appear, the user can read it themselves

barren raptor
#

I really wish that Bobby could cancel a reminder it set - it keeps on misunderstanding the time I say for a reminder and then I have to wait until the wrong reminders sync on the timeline and manually delete them

For some reason, the voice recognition kept picking up "fourteen ten" as "04:10", and asking bobby to "set another reminder for fourteen ten" caused it to put a 04:10 reminder on the next day instead...

#

...and now it's picking it up perfectly every time

#

damn you inconsistent voice recognition!

tight breach
#

@karmic lion - I just wanted to chime in to say that reminders have been working great on the latest build. Thanks for your help!

finite night
# wooden wedge

Bobby and I both enjoy our sushi after it's been lightly sauteed

#

The banners are amazing LCP 😄

karmic lion
#

I have invoked @azure goblet's forbidden magic.

fervent steppe
#

this right here is what the open sourcing of PebbleOS was meant to unleash

karmic lion
#

also, dynamically sized speech bubble

#

very productive things to do with my time.

#

the problem with dynamic speech bubble is that it leaves the rest of the space looking bizarre.

finite night
#

Ahhh, I love it!

#

I think I might keep the top of the bubble where it was - better imo to have the extra space next to bobby, rather than the emptiness just under the time

#

if that makes sense

karmic lion
#

that makes for a very long tail

finite night
#

he is a horse, after all

#

/joke

#

i think i would keep the tail anchored a bit higher, like just above their nose?

#

feel like in a lot of cartoons the tail doesn't necessarily stretch all the way to the speaker's mouth, since (to your point) that can be awkward looking and/or get in the way, so I'd honestly opt for a tail that feels like a good length to you and just make sure it's pointing in the right direction 🙂

#

rough photoshop example - don't mind the pixels

#

i guess i'd probably shift it (the tail) slightly to the right so it's not directly over the snoot - and that way if the text did break to a third line the tail could just shift directly down (if that's how it's coded, and perhaps it isn't) (i shifted it to the left in my mockup, to be clear)

karmic lion
#

I have decided I have spent far too much time on this.

finite night
#

i get that a lot, haha

wooden wedge
#

that is incredible

azure goblet
#

I am glad this is open-source. Future changes to Pebble OS may break this and this way, the firmware engineers have a way to see how and why. You wouldn't believe how many hacks I pulled for my productions in the past for which I had to pay the price when writing Gossan. Without source code it's multiple times harder to work around those… And also: People can learn from it!

wooden wedge
#

would it be possible to remove the dot indicating that you can click the middle button to speak while the button can't be pressed?

#

ie while it's loading a response

karmic lion
#

Yes, that sounds quite reasonable

#

Does it actually enforce not pressing it? I don't recall.

wooden wedge
#

oh I can't press it because I took a screenshot so now bobby won't work until indeterminate time in the future

#

it will just endlessly try to load up a response

karmic lion
#

what

wooden wedge
#

I see three pulsing dots and that's about all that happens

#

well, and my question

#

and the dot on the side

karmic lion
#

Bizarre

wooden wedge
#

the middle button does nothing in this state

karmic lion
#

If screenshots break it I might assume that the cobble pebble protocol implementation also needs work

wooden wedge
#

I am curious how that happens really

karmic lion
#

It might be interesting to see app logs from that state though

wooden wedge
#

yeah, I might have a look later

karmic lion
#

Anyway if I'm somehow disabling the button I can probably hide the dot when I do

wooden wedge
#

dictation works without a hitch in this state too, making it all the more fascinating

karmic lion
#

The one weird thing I recall screenshots do on the watch is lock the framebuffer while the screenshot is sent, but that doesn't seem likely to be related.

wooden wedge
#

progress, now I'm getting an error and not endless dots

karmic lion
#

I think I am going to put in that cobble warning after all

wooden wedge
#

I don't know how many people have that much reason to take a screenshot

karmic lion
#

Nonetheless

#

Does cobble implement Pebble.showSimpleNotificationOnPebble or will I have to actually put effort in?

karmic lion
#

Bah

#

Oh well, I needed to put something in to warn about not having a subscription

#

It can share a mechanism

wooden wedge
#

at this point, idk why this doesn't work

#

I restarted the watch, the phone, redid the setup of the app

karmic lion
#

It's possible cobble is unrelated and bobby is just broken

wooden wedge
#

the last thing to do is to look at logs

#

oh, wait

#

I was just trying with too long queries apparently?

#

it works just fine with short queries

karmic lion
#

Hmmmm

#

Maybe bobby actually is broken given sufficiently long queries?

wooden wedge
#

I did do longer queries yesterday and haven't really updated the app

#

since cobble doesn't do updates

karmic lion
#

How long is long?

wooden wedge
#

more than 5 or 6 words apparently

karmic lion
#

Hm.

wooden wedge
#

though I asked "What's the weather" and it just didn't answer either

karmic lion
#

That's not very long.

wooden wedge
#

it did answer to "Brussels" with a weather widget tho

karmic lion
#

I've not seen this happen since I fixed a typo that was causing it but it's a thing that could happen

wooden wedge
#

hmm

#

oh, worth noting: cobble can't get location yet I'm fairly sure

#

(or maybe I was gaslit by ai)

karmic lion
#

That shouldn't cause a problem though I don't know if I handle failing to retrieve a location properly

#

I handle specifically disabling it

#

I do recall crc saying location didn't work for mysterious reasons

wooden wedge
#

it seems like a weather specific issue tbh

karmic lion
#

I should probably actually handle the case of unknown location for weather widgets, currently I tell the model it can do them for the user's current location unconditionally

wooden wedge
#

ok, so: asking for weather in london is broken, but asking for weather in Brussels isn't

karmic lion
#

That makes very little sense

wooden wedge
#

what

#

I know

#

ok, no, it just can't do brussels either sometimes

#

I don't think I got london once though, I'm so confused

#

well, something is wrong with the weather and idk what

karmic lion
#

Weird

#

But it's too 2am for me to be inclined to investigate

wooden wedge
#

yeah it's not worth it

karmic lion
#

There's plausibly something there with the lack of working location support

#

Which I should handle

#

But also this further motivates me to put in that cobble warning

#

If I'm lucky it'll even show up

wooden wedge
#

bobby is a mexican immigrant to san diego, that's why celcius

covert ingot
#

Bobby has an umbrella, but it's sunny and there's a second umbrella in the umbrella holder

#

Bobby's first umbrella is clearly built in like some inspector gadget device

wooden wedge
#

well, it's clearly going to be raining according to the card

#

also the second umbrella really fits the tagline at the top

azure goblet
#

Isn't the idea that some of the preparedness rubs off? What does it bring for Bobby to be prepared?

#

So: The umbrella, I guess, is for the user – tagline doesn't make that clear?

wooden wedge
#

that's true

wooden wedge
wooden wedge
#

hm, I need this in a different colour, green doesn't work very well with pink

wooden wedge
#

the blue one is difficult to replicate, therefore I'm not gonna bother for now

#

I lied

#

I think I gimped enough for today

#

now this is what I call cursed!

#

I do like the pt shaped reflection

tired pike
#

ah yes, the secret colour never-released Pebble 2

wooden wedge
#

I could use somebody with a P2 to take some screenshots to be able to create those banners

#

my p2 is not with me right now and won't be anytime soon

rugged merlin
#

For some reason it won't load on my Pebble 2, but it still looks fantastic! Kudos!

edgy flame
wooden wedge
#

I don't know actually

edgy flame
#

I think you gotta use the cli

wooden wedge
#

I just use cobble

#

cli is an option though for sure

edgy flame
#

cobble doesn't work with p2 right now otherwise I totally would

wooden wedge
#

oh yeah, that's true

#

I forgot

karmic lion
#

Judging by that screenshot I am guessing cobble also does not apply the colour correction the pebble tool does

wooden wedge
#

nope

stiff fern
#

One quick feature request, it would be great to have a “fit to screen” mode for answer length.

#

Basically telling the model to keep its answers under a certain character length.

karmic lion
coarse cedar
#

bobby has breached containment, I repeat, bobby has breached containment

finite night
#

horse on the run

edgy flame
#

urghhh i deleted my reddit for a reason, i deleted my reddit for a reason,

#

Super cool seeing all the energy behind it though! people love bobby!

#

making it just A Rebble Thing that works with your subscription was a brilliant choice

karmic lion
#

It's almost like when I had a job I didn't hate! nrfbutitskatharineasahorse

tight breach
#

Not that I’ve ever reached even 1% of Bobby’s quota, will there be a tiered rebble price range for higher quotas?

karmic lion
#

I hope we don't end up needing to worry about that

#

Extensive use of Bobby is by far the most expensive per-user service Rebble has ever offered, which is why we put explicit quotas on it.

#

But I want to try to design to avoid needing to sell more expensive subscriptions, rather than sell more expensive subscriptions.

coarse cedar
#

If I calculated correctly, the quota is $2 correct?

karmic lion
#

yes

#

users who actually exhaust their quota and also have a monthly subscription (a substantial chunk of which goes to processing fees) may still be losing us money.

#

but so are all the users who don't pay anything, so

#

as long as it all balances out

static jackal
#

I just subscribed so I could use bobby haha

coarse cedar
#

I think the most usage of Bobby will happen when people are trying it out for the first time

Then it's probably just going to be reminders and stuff

It'll be fine

weary ether
#

It's a loss leader for sure

karmic lion
#

unfortunately, Bobby development will now abruptly pause due to my lack of anywhere to sit while I do it

edgy flame
#

what all do we need diorite screenshots of? i am wearing a diorite now

#

let's see how hard it is to install pebble sdk in currentyear

karmic lion
#

I am very tempted to write a Go program that just takes screenshots

#

so I can statically compile it and run it without it being a Gigantic Pain

#

oh, someone on reddit asked about music control.

#

and specifically spotify

#

I think we can actually do Spotify because of their wild setup

#

(where, for some reason, an API can control any of your music players)

#

might be a fun diversion

edgy flame
#

there was an old app called Pebblify that was a fully featured spotify api remote

coarse cedar
#

I was planning on building that into my fork tomorrow (and upstreaming it if it was good enough)

edgy flame
#

sounds like we need a tiny music icon

coarse cedar
#

The only thing I haven't quite thought of yet is auth

karmic lion
#

in the meantime, pondering keeping track of a user's reminders so that bobby can look at and delete them

#

The biggest problem with this is that, if they are deleted from the timeline by the user, I can't tell

edgy flame
karmic lion
#

ooh, screenshots

#

I think the weather has to be raining for the image to make sense

#

(or rather, the question has to be "how will the weather be today?" or similar and the answer has to be "rainy")

edgy flame
#

like, this is a real icon and not a generic "weather"?

#

ahh, right

karmic lion
#

what

#

several degrees of confusion have transpired for that to happen

edgy flame
#

i told it the tongue twister

karmic lion
#

wikipedia(article_name="Woodshuck", wiki="Wikipedia") is something it can do. But just spitting it at the user isn't going to achieve anything.

edgy flame
#

pdhfhfhah it says "yup, that's a tongue twister, wikipedia does not have info on how much wood they would chuck but it does say theyre important for soil health"

karmic lion
#

in any case I am currently tired of bobby so I'm going to go play a video game or something

#

somewhere with a chair that works

coarse cedar
#

couch

karmic lion
#

in retrospect it was a strategic error to have only one desk chair

edgy flame
#

what were you using to stitch screenshots together?

karmic lion
#

pixelmator and copy/paste.

#

very advanced technology

#

(it was quite tedious)

edgy flame
#

i asked it "check the weather somewhere that it's raining rn" and the LLM checked

  • my city
  • london
    and - seattle
    in that order, until it found that seattle had had a bit of rain in the past hour. it did not actually show a weather info card for any of them
karmic lion
#

you could probably have followed up with "show the widget" and it would've done so

#

It doesn't unconditionally show it, it only shows it if the model is so inclined

edgy flame
#

haha okay

#

right, yeah

#

ghosts

karmic lion
#

I do like that though

#

"london is famously rainy. nope"

#

"seattle is also famously rainy. aha!"

edgy flame
#

i think it's funny that those are the cities i asked about as well

weary ether
#

This morning I asked it for Friday's weather in another location and it followed through with a great forecast icons and all

karmic lion
#

technically it can actually also put the widget in the middle of a response, or at the end, but I have told it to not do that please.

edgy flame
#

it's sheepish about the fact that it can't make up a widget with rain on it

#

good pony

karmic lion
#

it's true, it can't actually control the widgets

#

it can only say "show the user a widget with the weather in a location"

#
<!WEATHER-CURRENT location=[here|place name]! units=[metric|imperial|uk hybrid]!>: embeds a weather widget showing the weather right now in the given location
<!WEATHER-SINGLE-DAY location=[here|place name] units=[metric|imperial|uk hybrid] day=[the name of a weekday, like Tuesday]!>: embeds a weather widget summarising the weather in the given location for a single day within the coming week
<!WEATHER-MULTI-DAY location=[here|place name] units=[metric|imperial|uk hybrid]!>: embeds a weather widget summarising the weather in the given location for the next three days
edgy flame
#

success!

karmic lion
#

wait there's an exclamation mark after the location

edgy flame
#

it asked if i wanted the next three days of weather, i said "sure, and if one of them is rain, show the widget for that day"

karmic lion
#

that explains why it keeps putting exclamation marks there

edgy flame
#

im continually surprised by how actually really good bobby is

karmic lion
#

amazing

edgy flame
#

and fast!

coarse cedar
#

Code magic

weary ether
#

Yeah really fast

edgy flame
#

like i'd accepted that gemini on my phone struggles with all the same tasks that google assistant on my phone struggles with (vis a vis picking the right track on youtube music, or the right location on a map) and cannot be trusted to tell me correct facts

#

but bobby is just really good actually

karmic lion
#

and only slightly burning down forests to achieve these things! nrfbutitskatharineasahorse

edgy flame
#

maybe because i don't ask it to do those specific things

karmic lion
#

That probably helps

weary ether
#

Does Bobby have instructions not to use the general knowledge base in Gemini?

#

Like its scope is limited to the Wikipedia entries?

karmic lion
#

It doesn't, and in fact has instructions to use its general knowledge when wikipedia fails it.

#

It completely disregards these instructions.

weary ether
#

Ah haha

#

That explains the abrupt ending to some of my conversations lol

#

"sorry I don't have any information about that"

karmic lion
#

I have an idea for a wording that might work better by bypassing wikipedia in the first place

#

I should give that a shot sometime

weary ether
#

Need a chair first though!

karmic lion
#

also, separately, by giving it better wikipedia search

#

a chair would be good!

#

sadly it will take a month

#

I will have to find an interim solution

#

it might be using my Vision Pro on the sofa.

weary ether
#

Not a bad solution at all

coarse cedar
#

i would actually use my quest 3 for multiple monitors all the time if meta remote desktop worked on linux

edgy flame
#

@wooden wedge diorite screenshots - tried to recreate a few that you had banners for

karmic lion
#

I do not think the Quest 3's resolution is remotely good enough for that use case, to be honest

#

The Vision Pro is barely passable

#

Barely.

coarse cedar
#

it was pretty good when I still used windows imho

edgy flame
#

on the upside rebbletool was really easy to install

#

havent tried doing sdk things but it takes a mean screenshot

coarse cedar
#

use it for all my pebble development now!

coarse cedar
#

since the spotify api calls require a specific users authorization, I am thinking of this flow

add login to spotify button to bobby config
bobby service gets auth token through redirect_uri
bobby service requests access token
service stores access token response and links it to the users timeline token

then on api requests:
service checks if the access token is still valid
if not: refresh
use token for api request

any thoughts? I dont know if I am thinking this through correctly

edgy flame
#

if a pkjs-next happens, cobble should really give some consideration to making it easier/better to log in to services through the config webview

#

a lot of services really don't like that - see google login being broken on kde desktop for a couple big names

#

tiny music

karmic lion
coarse cedar
#

gotcha!

karmic lion
#

I think I'd rather store the tokens on the user's phone if possible.

edgy flame
coarse cedar
#

oh yeah, we can just query the api through pkjs

karmic lion
#

Indeed

#

Though then you need to do the auth flow where that's safe.

coarse cedar
#

gotcha!

#

i'll take a crack at implementing this :)

karmic lion
#

It is also possible the Spotify will not permit authentication through a pebble webview

edgy flame
karmic lion
#

(Google doesn't, for instance)

#

The bobby service doesn't really have long-term storage at the moment and so I am reluctant to add it.

#

Quota usage is stored in redis and this works but I don't love it for indefinite storage

coarse cedar
#

can confirm through the pebblify app that spotify can indeed be logged in from through a pebble webview

coarse cedar
#

great, I need to either find a implementation for sha256 or write one

rough cliff
#

Whether or not it's secure is debatable

coarse cedar
rough cliff
#

I do somewhere but it's not exactly earth shattering

#

It's a bog-standard PKCE flow.

coarse cedar
#

mostly wondering how you did sha256

rough cliff
#

Technically Authorization Code with PKCE but who's counting

coarse cedar
#

like thats the only thing I want to know loll

rough cliff
coarse cedar
#

thanks! appreciate it

rough cliff
#

Uno momento por favor

#

It's not exactly pretty (thought only I would use it ha) but generic enough. You should be able to modify for your needs

#

I tried to go through and add some simple comments on the important stuff

#

Also this will only work in a config page for obvious reasons

#

also it looks some functions are marked async, probably as relics from old revisions 🙃
It does work but you might want to, uh, fix that

#

I basically have not touched this in 4.5 months 🙂

coarse cedar
#

Oh wait you can use window.crypto.subtle.digest in the config?

rough cliff
#

"works on my machine" ¯_(ツ)_/¯

#

It is just a webview

#

YMMV. You should test it.

#

I don't exactly know the limitations of the config pages, especially on iOS. I just kind of try stuff and if it breaks, it breaks

#

😄

coarse cedar
#

Yeah definitely, I got caught off guard by some thing on the MDN

rough cliff
#

You could do like a window.includes crypto or something and gracefully fail

#

this is also off topic about bobby

coarse cedar
#

I mean it kinda is on topic since it's about implementing Spotify for Bobby

rough cliff
#

also sessions might be more secure than localStorage, blah blah library computer or something but whatever

rough cliff
#

Or something worth doing

coarse cedar
#

I'm gonna try until I hit a brick wall :)

rough cliff
#

It may be easier to just link your spotify account to your Rebble account and some magic backend service uses that instead of using config pages

#

Also, since Bobby already does everything in the cloud, having this on your phone is pointless as it won't be at all useful

#

Maybe if you intercept tool calls? Not sure. Sounds interesting 😄

#

LMK how it goes!

coarse cedar
#

Will do!

karmic lion
#

Bobby does not do everything in the cloud

#

Otherwise you couldn't set alarms on your watch.

#

More specifically, a bobby tool can opt into being given a pair of go channels, which it can use to send messages to and from the phone.

#

This is the mechanism by which alarms, timers, and timeline work.

rough cliff
#

Oh interesting

#

I was under the impression that everything was in the cloud and the app just kind of listened. I'll do some more digging into it when I have time™️

karmic lion
#
func alarmImpl(ctx context.Context, quotaTracker *quota.Tracker, args interface{}, requests chan<- map[string]interface{}, responses <-chan map[string]interface{}) interface{} {
    ctx, span := beeline.StartSpan(ctx, "set_alarm")
    defer span.Send()
    if !query.SupportsAction(ctx, "set_alarm") {
        return Error{Error: "You need to update the app on your watch to set alarms or timers."}
    }
    input := args.(*AlarmInput)
    log.Println("Asking watch to set an alarm...")
    requests <- map[string]interface{}{
        "time":     input.Time,
        "duration": input.Duration,
        "isTimer":  input.IsTimer,
        "action":   "set_alarm",
        "cancel":   input.Cancel,
    }
    log.Println("Waiting for confirmation...")
    resp := <-responses
    return resp
}
#

That's the server side implementation of alarms

rough cliff
#

Very interesting

#

I will be sure to take a look. I do want to selfhost it to use my local llama thing (and of course add some fun hacks because why not)

karmic lion
#

Bobby implements a lot of very generic things that it then uses exactly once

#

The theory being that I'll come back and use them more.

#

And for that matter previously used more before I stripped out features like Hue light control

karmic lion
#

Reading through the rules for Spotify integration sure is an endeavour.

#

This part seems particularly hard to comply with:

Do not create a voice-enabled SDA that enables a user to control Spotify with their voice, or any kind of voice assistant that provides voice-control functionality.

#

So I think that's out the window

#

Disappointing, I had cool plans.

#

(Spotify also does human review before granting proper multi-user API access, so we couldn't just pretend to have not read the rules even if we wanted to)

wooden wedge
#

home assistant can do some music control if you have chromecast around

#

that has some prerequisites though, namely having that set up

karmic lion
#

That is approximately seventeen more steps than I want to put people through

#

The thing I can actually imagine is having an optional Bobby Companion App that does some phone control on Android. That or Cobble expanding PKJS to support a lot more things, but if the Eric App is to be the primary pebble app I'm not sure that'll help

#

(though if they share a PKJS implementation maybe it's fine)

#

Bobby Companion App is also easier to ship in the short term.

wooden wedge
#

yeah

weary ether
coarse cedar
#

bobby with agentic capabilities loll

crude patrol
#

Is it possible to do this with Youtube Music as well?

wooden wedge
#

I don't think any specific service is happening

#

not to mention, youtube music doesn't track playback of other devices like spotify does

#

as annoying as it is, that's a pretty unique feature that every other service should but doesn't have

karmic lion
#

Time to add Sonos control to bobby.

#

Somewhat pointlessly because Sonos has its own pretty good voice assistant that controls music and has no other features

rough cliff
#

Oh interesting! This comes after I have found a Play:1 for $35 on Marketplace. I've only heard good things about them - maybe I'll pick one up 😄

karmic lion
#

Worth noting the Play:1 does not have the voice assistant because it does not have a microphone

rough cliff
#

I am more interested in bobby voice control 🙂

karmic lion
#

😄

#

I may have been joking. But it should be possible and I don't think they rules prevent it

karmic lion
#

It occurs to me that Bobby Companion App for music probably doesn't make sense because it can't change what's playing, and just having verbal start/stop/skip seems not super useful

pseudo pumice
#

I think the most common music uses would be (play/pause/skip and play <given song>). I'm not sure about this, but wouldn't a lot of music players have intents for these functions? You could eventually also let the user specify specific endpoints for each of those, which they could eventually link to IFTTT of Tasker, and maybe from there they can control music in a specific way?

karmic lion
#

The first three are standardised

#

The last one is not.

#

And if you just wanted to play/pause/skip you’d probably find it easier to just use the system music app

#

It’s harder than “play <given song>”, too, because you need to then know what to play next. So really you want “play <album>”, “play <playlist>”, “play songs by <artist>”

#

I’m not a huge fan of hooks for IFTTT or similar because a) that’s a lot of hoop jumping, and also b) those platforms are so flexible that it becomes hard to express when they should be invoked.

#

Generally I want Bobby to be a thing that Just Works, not a thing that requires tinkering

#

I concede that maybe this is the wrong thing for the Pebble audience (or at least the part of the Pebble audience that is on a Discord for Pebbles), but it’s generally most in line with my philosophy

pseudo pumice
#

Yeah that makes sense to me

#

I assume theres no way to just forward those play commands to Google Assistant haha?

karmic lion
#

Alas, no

#

Though if there were I don’t know why I’d bother building Bobby in the first place 😄

pseudo pumice
#

Because I don't want to take my phone out my pocket!!

karmic lion
#

But if I could forward commands to Google Assistant I’d just forward them all to Google Assistant and the result would probably be better

#

And easier

pseudo pumice
#

True

karmic lion
#

A Bobby Companion App could enable the return of Hue control

#

I had to remove it because Hue has removed the ability to make non-HTTPS connections, but serves an invalid certificate, so I can’t connect to the hub from PKJS any more

karmic lion
#

(Or will remove that ability. They also removed the CORS headers from their discovery endpoint, which was the immediate problem I had, but the HTTPS thing is still pending too so it’d break eventually.)

covert ingot
#

Home assistant has been very focused on voice for the last year, and as such has a nice 'coversation API' you just throw a sentence at. But I don't know how you'd integrate that with Bobby, other than the horrible "ask Home Assistant ..."

karmic lion
#

I actually already built this

#

I just told it to pass the request to home assistant if it sounded like a home assistant type problem

#

This worked okay but at the time (2023) the home assistant voice stuff was worthless anyway

covert ingot
#

Ha, I guess that works too

karmic lion
#

Also the home assistant config turned into 50% of the config page

wooden wedge
#

it might be more useful if bobby could know ahead of time what the layout of devices in home assistant is

karmic lion
#

It’d be sort of expensive to provide that as context to every request

wooden wedge
#

since that makes it a bit clearer what it can pass forward

#

yeah, that's fair

karmic lion
#

I have 269 devices with 1,602 entities, apparently

wooden wedge
#

impressive

#

I do have 4 devices called entry at this point, I feel like I might be bad at naming things

karmic lion
#

Apparently individual solar panels on my roof are each a device

#

As are ten different Rivian Phone Keys

#

Which is impressive given I do not own a Rivian or have any Rivian apps installed

#

What is Home Assistnat doing

wooden wedge
#

hmmm

karmic lion
#

Three robotic vacuum cleaners

#

Which is more than I own

#

I think a primary problem with home assistant is that it is impossible to maintain a coherent universe.

wooden wedge
#

yeah, too many things are classified the same way

#

physical and theoretical is the same class of object in there

karmic lion
#

Anyway this is basically why I’m not sold on putting Home Assistant back: because Home Assistant is so complicated that a) I’m not convinced I can construct a worthwhile integration with the amount of effort I’m willing to spend, and also b) I don’t think Home Assistant really lives in my “just works” paradigm

covert ingot
#

That's why I was thinking conversation API, you'd just need an endpoint & api key

#

But I get what you're saying

karmic lion
#

But then it still probably doesn’t work because Home Assistant broadly doesn’t work

covert ingot
#

Yes, that

#

And judging by the subreddit, it would most likely end up being forwarded to another LLM..

karmic lion
#

Gemini please ask other Gemini to turn the light on

finite night
#

Like two parents speaking through their child at the dinner table

weary ether
#

Bobby just gave me a really good answer for information about the lunar eclipse

#

Told me about both lunar eclipses this year and gave me the time both in UTC and my local time

wooden wedge
#

I like it has to be pointed out when bobby is actually helpful

wooden wedge
#

oh that's bizarre, bobby straight up crashes whenever I asked it "when is it going to rain in charleston"

edgy flame
#

huuuh- thats basically what I asked it to get that screenshot

#

(pkjs works in cobble but it seems like location does not)

wooden wedge
#

it's so weird

edgy flame
lilac plaza
#

Is it possible to use our own API key to bypass the Gemini monthly limit if we have Gemini advanced in a future release? This is awesome, thank everyone who built and tested this.

wooden wedge
karmic lion
#

The weather in Charleston is violence

edgy flame
#

one of the goals for this being a polished product is that you do not need to copy and paste api keys around

edgy flame
barren raptor
edgy flame
#

water damage to the backlight film. Kickstarter Times are not sealed properly and some steam got under the glass. you can't see it unless the backlight is on, but it's a snowy, so the backlight is gonna be on

karmic lion
#

I can't reproduce this crash

#

so I guess I will not be fixing it.

#

the text says sunday is actually thunderstorms, but there is no thunderstorm icon

#

meanwhile I spent an excessive amount of effort on one line of log output for no reason.

#

hooray valuable choices of how to spend time

#
[15:56:26] assistant.c:43> Bobby 0.18 (v0.18-7-g13460a1-dirty)
upbeat garden
#

grabbing git refs always an annoying thing that should be built into build systems but basically never is

karmic lion
#

grabbing the git ref was trivial, it was getting the header to be generated that was annoying.

#

primarily because waf.

#

I eventually figured it was helpfully generating the header after the build process was complete.

upbeat garden
#

pfft

#

i had to do a similar thing the other day with xcode

#

annoying

karmic lion
#

specifically on the parenthetical. the version number just gets read out of the pebble metadata struct.

#

I don't even really have a use case for the tag. oh well.

barren raptor
#

I wonder if there'd be some way to get the model to recognize phonetics for place names or something

#

Because there's absolutely no way that the voice recognition will recognize almost any of the city names in my country

#

(it's almost certainly not worth it I'm just curious how feasible it would be

edgy flame
#

that'd be on the Google cloud speech end, not the model end

#

dictation all goes through the server first, all the pebble gets is the resulting text

karmic lion
#

I think the suggestion was that the model should be able to understand the mangled place names

wooden wedge
#

just say "hey, what's the major city north from here known for fishing", and then ask the question when it figures it out

#

toki pona taught me how to work with speech recognition and ais >:D

barren raptor
karmic lion
#

have you tried it?

barren raptor
#

...I have not, let's see

wooden wedge
#

I have spellt things to it before and it did get it

barren raptor
#

oh my god that actually worked

#

Although I'm wondering where the heck it got the Cyrillic name to show in the widget

karmic lion
#

The name in the widget is produced by reverse geocoding the actual location

#

so OpenStreetMap I guess

barren raptor
#

osm always provides local language names

coarse cedar
karmic lion
#

I should probably ask it to produce place names in the same language as the user is using

whole bone
#

How do you do screenshots on Rebble-Tools? I know it's not related to Bobby, but it's been mentioned several times in this thread.

karmic lion
#

the usual command is pebble screenshot, so presumably rebble screenshot or whatever it's called.

karmic lion
#

still tempted to write a screenshot program that does not involve a python.

wooden wedge
#

cobble

karmic lion
#

pass.

wooden wedge
#

it involves a lot of kotlin instead

#

I don't know how well you are able to upload the new banners, does the dev portal support uploading more than 1?

covert ingot
#

Yes, you can upload up to 3 per platform

wooden wedge
#

ah, I never had to upload a banner, it seemed like only one is supported

covert ingot
#

You can only upload 1 that gets used for all platforms during app submission, but up to 3 platform-specific after you've uploaded the app.

The weird behaviour during inital upload is because that's how the old command line tool we used for ~8 months worked.

#

I can correct that now that I have a local rws running again

wooden wedge
#

cool

covert ingot
#

This is what you get when you edit a listing

wooden wedge
#

ah yes

covert ingot
#

As fas as I'm aware, 3 is also an arbitrary limit which could be increased

magic drift
#

Putting a pin in this for later

#

Downloading this as my first app once the RePebble (which they better call the Rebble) releases!

wooden wedge
#

Rebble would be a bit of a conflicting name considering there's no practical association between rebble alliance and core devices (beyond being associated with pebble watches in one way or another)

karmic lion
#

I guess the release announcements are broken but I shipped a very boring update.

#

but the up button on the home screen does something now, so there's that.

barren raptor
#

that's hilarious

wooden wedge
#

that's amazing

#

love the look of the new banner on the store page too

barren raptor
#

feature request: when a timer runs out, it tells you how long the timer was

karmic lion
#

A tricky one, given it would a) need somewhere to show that, but perhaps more problematically b) would actually need to know

#

(Timers are just alarms that show a slightly different UI)

barren raptor
#

ahh, yeah that's understandable

#

in terms of a place to show it I was thinking it could show up in a smaller font under the "time is up" text, but it might not be worth adding the functionality to store the time for such a niche situation tbh

humble owl
#

i think if you have multiple timers set, the time could be useful for distinguishing between which timer went off

#

but i don't know how often people are doing that in practice

#

probably not very

barren raptor
#

i had a 45 minute and a 1hr15min timer, and i wanted to set a new 30 minute timer but then i realized I'd have no way of knowing which timer went off since I didn't know how much time was left before all of them

humble owl
#

if multiple timers are going to be supported, i think the time should be displayed

#

because without it, supporting multiple timers ends up being a confusing feature

#

granted, that doesn't help if someone sets eg. 2 30min timers though

#

named timers? i have no idea how feasible that is to do

karmic lion
#

It's not particularly confusing in most contexts where you're going to do this, where you already know which timer will expire first

karmic lion
#

(and by "I told" I really mean "I engaged in a several hour long conversation", which I'm not sure was easier than coding it and I'm fairly sure was more tiring.)

#

oh and the code it generated will not run on iOS. must remember to fix that.

#

there, told it to fix that.

#

although granted I spent a bunch of that time having it build a feature to have a delete button on the timeline, largely finished it, only to abandon it when I realised that it won't work because the timeline updates too slowly.

#

for the same reason I am not sure I want to ship this, since a) you can remove things from the timeline and the app will still think they're there, and b) if you remove things from the app they will not immediately be removed from the timeline

karmic lion
#

Anyone have thoughts on having reminders not be write-only? Is it worth all the ways it can fail?

barren raptor
#

And a wrong reminder in general, where you then will have to wait for timeline to sync

covert ingot
edgy flame
#

@wooden wedge do you want to drop your 18px tiny icons from Bobby in the iconography repo? i will for mine

wooden wedge
#

oh, sure

karmic lion
#

I think my conclusion here is basically that the timeline is deeply flawed and attempting to use it is a mistake.

#

At this point the bobby menu probably needs its own icons

edgy flame
#

we can add custom action buttons to a timeline pin, can't we?

#

am i understanding correctly that the problem is users can remove the reminder pin from the timeline without the app knowing it was removed? so if you delete a reminder from the timeline the app will still think it exists?

karmic lion
#

Yes, but then it'll a) duplicate the "remove" button that's already there, and also b) apparently do nothing due to timeline sync delays

#

I built that, realised it was terrible, and removed it again

edgy flame
#

i wonder if it would read properly to have "cancel reminder" alongside the system "remove"

#

alright, fair enough

karmic lion
#

The duplication is okay

#

The fact that it does not actually remove the reminder when pressed is unacceptable

coarse cedar
#

timeline sync every 30 seconds

edgy flame
#

ahh. the app can't remove a pin locally, it has to go through the server and remove at the next sync up-to-15 minutes later

karmic lion
#

Yup

edgy flame
#

yeah thatll do it

karmic lion
#

Same when bobby removes one that is already in your timeline, incidentally

edgy flame
#

did pebble, inc have a solution to this? did they just cloud-push timeline and hope that it was fast enough?

karmic lion
#

It'll stick around for a while, possibly including it firing

#

Partially: timeline sync was faster. But also not very reliable, so not really.

#

As indicated by the "remove" button, mostly having your own remove buttons wasn't done

#

The calendar and alarm pins are a special case that use a totally different mechanism

edgy flame
#

huuuuh. okay

karmic lion
#

(in fact they also use mechanisms that are different from each other)

#

The alarm pins are set by the watch directly onto itself

#

That calendar pins are set by the phone

#

Neither goes to a server

#

So they can be fast and know the actual state

#

But no API exists to do that as a third party app

karmic lion
#

If I'm going to have a list I also need to figure out how to render long reminders in it

acoustic wolf
edgy flame
#

the whole-platform approach that would make sense to me is to have the watch provide a callback to whatever app or service set a pin to timeline

#

like, the system "Remove" button is always there, but now you can attach an HTTP push to it like you can for your own actions. Remove, And Then

#

you get the instant feedback on the user's watch, and your backend still gets to handle it

#

however, this isn't helpful for making an app right now against the old pebble phone app, also rebble's own app doesn't fully implement any of this stuff yet anyway

acoustic wolf
#

maybe i'll experiment with it

karmic lion
#

Though the alternative is to launch the app when the pin is removed, which is also no good.

weary ether
#

Bobby watch face when?

karmic lion
#

@covert ingot keeps making them

covert ingot
#

I have made so many

#

The generator should be live stoon then I can actually release one

karmic lion
#

maybe I should make a bobby watchface that has quotes and animations. not that I have a clue what what the quotes and animations would be

#

would give some value to the effort I put into that completely pointless speech bubble layout

#

(this is not a thing I'm likely to actually do)

weary ether
#

What I was thinking was a companion face

#

like, either stuff Bobby does or other relevant information

#

so, reminders

#

just have a little 'next reminder' comlication

#

or timer

edgy flame
#

siri-watchface-but-pebble is the dream yeah

karmic lion
#

Unfortunately this isn't actually doable because pebble apps can't communicate

#

So there's no way that the watchface could read what the app knows

#

(unless, of course, I pushed everything to a server)

wooden wedge
#

it would be kinda funny if you could ask bobby to pin something to the watchface

karmic lion
#

that'd be handy

#

persistent reminder

#

my smartglasses have this function - I can hold a button and tell them something and then they just show whatever I said persistently whenever I look up

#

reminders.

wooden wedge
#

nice!

karmic lion
#

(this screen was actually entirely generated by AI, I just nudged the text up three pixels. and fixed its date calculations. and now I'm going to fix the time rendering.)

wooden wedge
#

oh, I thought you meant image generation, I was going to be so impressed by that

karmic lion
#

pff

#

but now I will try that.

wooden wedge
#

I can't wait for Stunday and Sutuday

#

seom day is my favourite!

#

Trum 8:8:T8am

karmic lion
#

Gonna Them on Garay at 46:6(l) PM

wooden wedge
#

14t!

humble owl
#

i enjoy "reminders minder"

wooden wedge
#

mind your remind

karmic lion
#

I am once again mad that strftime has no way to emit standard US time formatting

#

though it has no trouble with everywhere-else-on-the-planet formatting

#

(in the US, the hours should have no leading zero. strftime puts a leading zero there anyway.)

#

Pebble has a function to do the right thing for everyone, clock_copy_time_string.

#

But of course the exposed version can only do the current time.

weary ether
karmic lion
#

It would mean I'd have to actually send all these things to the server, where currently they aren't.

weary ether
#

I see

karmic lion
#

I guess I can ship that

#

hopefully people can figure out what their reminders are from the first couple of words and a time

weary ether
#

looks great

karmic lion
#

you can also ask it

#

also ask it to remove them

#

I feel like the bobby main menu needs icons now

weary ether
#

i guess you could just leave bobby open as if it were a watchface

wooden wedge
#

what icons

#

what do you need

karmic lion
#

I think a lot of them already exist

#

alarms, timers, reminders, quota, legal, about

#

alarms, timers, reminders are all system icons that presumably exist in 25x25 already

#

about can just be the app icon again

edgy flame
#

i have an 'about' 25px but it's a little lackluster

karmic lion
#

actually thinking about it I guess "deleted reminders" should have an action box confirmation thingy

#

time to remember how those work

#

I think it makes sense for about to be a horse

#

also they would all ideally be bitmaps and not pdcs because bitmaps are what a SimpleMenuLayer supports

#

and using a ComplicatedMenuLayer is more effort

edgy flame
#

i wish pdcs worked

karmic lion
#

there we go

wooden wedge
#

somebody should draw a horse being neuralyzed

karmic lion
#

I was going to try it on iOS to see whether that still worked, but in standard Pebble fashion, everything refuses to pair

#

there we go. had to factory reset the pebble, of course.

#

of course, now the watch is wholly unusable because firmware updates don't work.

#

this is the reason I gave up on using Pebbles before the company even collapsed

#

they just don't work.

#

update almost complete!

karmic lion
#

I have published a bobby update.

#

(once again, the releases bot has ignored it.)

#

but now these reminder features exist

covert ingot
#

Why does release bot hate you

#

What did you write in the textbox? I'll try it locally

#

Discord is very picky

karmic lion
#

neither of the last two worked.

#

but every one before that did

#

I might guess it's related to the changes that you deployed between the last time it worked and the first time it didn't. Though don't ask me why.

covert ingot
#

Which is upsetting pbw.py when getting the app UUID to check if it's a generated watchface

karmic lion
#

Manifests are per-platform

#

bobby correctly has two manifest.jsons

covert ingot
#

So they are. It just happened the first test .pbw I downloaded also had manifest.json in the root for some reason

karmic lion
#

That's 2.x aplite

#

2.x is the root, 3.x is in subdirectories

covert ingot
#
Traceback (most recent call last):
  File "/home/will/.local/lib/python3.10/site-packages/flask/app.py", line 1473, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/will/.local/lib/python3.10/site-packages/flask/app.py", line 882, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/will/.local/lib/python3.10/site-packages/flask/app.py", line 880, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/will/.local/lib/python3.10/site-packages/flask/app.py", line 865, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
  File "/home/will/Documents/rebble/appstore-api/appstore/developer_portal_api.py", line 188, in submit_new_app
    announce_new_app(app_obj, pbw.is_generated())
  File "/home/will/Documents/rebble/appstore-api/appstore/pbw.py", line 126, in is_generated
    return str(self.get_app_metadata()["uuid"]).startswith(GENERATED_ID_PREFIX)
  File "/home/will/Documents/rebble/appstore-api/appstore/pbw.py", line 98, in get_app_metadata
    app_manifest = self.get_manifest()['application']
  File "/home/will/Documents/rebble/appstore-api/appstore/pbw.py", line 89, in get_manifest
    raise FileNotFoundError("Could not find {}; are you sure this is a PebbleBundle?".format(self.MANIFEST_FILENAME))
FileNotFoundError: Could not find manifest.json; are you sure this is a PebbleBundle?
karmic lion
#

PBW takes a platform argument and does nothing useful without it.

#

What platform is it assuming?

covert ingot
#

aplite

#

We have now arrived at the "Hmm, how did this ever work" stage

edgy flame
#

ohhhhh

karmic lion
#

If it never tried to actually read any metadata, nothing would've noticed that it's assuming aplite support

covert ingot
#

Yep, I'm all caught up now

#

The rest of the validation process is only looking at appinfo.json

#

Fixed. Time for bed.

karmic lion
#

I'm going to add timer and alarm naming, re earlier conversation

karmic lion
#

Me: Delete my banana alarm
[Reminder deleted]
Bobby: My mistake, I can only delete reminders, not alarms. I can delete the alarm called Banana, would you like me to do that?
[Alarm canceled]
Bobby: OK, I've deleted the alarm called Banana

#

the AI experience

#

featuring:

  1. Doing the wrong thing
  2. Apologising and saying it cannot do the thing I asked it to do, then saying it can do the thing I asked it to do and asking whether I want it to do that
  3. Immediately completing the original request without waiting for a response to the question
#

I think alarms and reminders having different deletion mechanisms has confused it; need to fix that.

karmic lion
#

Trying to figure out how to fit timer and alarm names into the relevant menus.

#

timers are easy

#

I guess for alarms maybe I swap it and put the title as the title and the entire alarm time as the subtitle

karmic lion
#

"cancel all my alarms"

#

elegant

#

anyway, alarm and timer naming is done

south edgeBOT
karmic lion
south edgeBOT
karmic lion
#

I am just stringing random words together at this point

karmic lion
#

and in the confirmations, too.

#

that was an exciting day of timers.

south edgeBOT
fervent steppe
karmic lion
#

I suppose replacing the confirmation with the widget means the model could technically lie about setting a timer

#

Since the model can freely produce that widget as well

#

But if it does that the lie detector will still fire, and I've not seen it happen

wooden wedge
#

something bothers me about it

edgy flame
#

more margins is always the answer

#

get rid of that pesky info density

#

more seriously, 2px above the icon and 4px below the running time might help some? i feel the bother but I can't put my finger on it either

karmic lion
#

Earlier iterations were both of those things and I liked that less

upper wind
#

(Bit off topic sorry, but seeing all the screenshots in this thread reminded me why I liked building Pebble apps but in the day. The interface is just clean and great)

karmic lion
#

been trying some adventures in numeric answers

#

not sure how I feel about it

edgy flame
#

it's strange but it's conceptually good

finite night
#

maybe a dumb question - is it helpful in these cases to receive the answer in both formats? i like the conversational aspect of bobby replying, but it feels like you just get the answer twice

edgy flame
#

is that like, the output of the lua thing, or is it picking the most likely relevant number from the llm's output

karmic lion
#

only one of those involved a lua!

edgy flame
#

the big thing for me with the card ui specifically is that i know i can trust what is inside a card

karmic lion
#

the LLM is just telling it what to put there

edgy flame
#

so i am not big on the idea of cards the llm can populate itself

karmic lion
#

The countdown cards from above are also populated by the LLM, mind.

#

The weather cards are technically trustworthy but that is mostly an implementation choice because I don't trust the LLM to correctly fill in all that data.

edgy flame
#

but like a countdown card is not going to appear just because the LLM thinks there should be a countdown card

#

it appears because something happens outside of the fallable llm world

karmic lion
#

I originally didn't have the lines but that looked weirder.

#

no, the countdown card appears whenever the LLM wants there to be one

#

the only things it doesn't control are the ones with a stripe down the left

finite night
#

it feels like the most helpful time for there to be additional info beyond an answer in a card is the conversational response providing additional information (particularly if it's calling out an error or something, like a timer not actually being set)

karmic lion
#

It'd also be nice to get the "Bobby" heading above the number, but that is easier said than done.

edgy flame
finite night
#

but that otherwise you're just getting the height of a mountain two different ways, for example

karmic lion
#

one of which generally requires less reading

finite night
#

yeah

#

i like both approaches, to be clear, and the cards/graphics are awesome

karmic lion
#

sometimes it goes particularly useless and decides to put the big number widget at the end

edgy flame
#

well i think it's great conceptually

#

big text walls kind of suck on pebble, so the more that we can do as not a wall of text, the better

finite night
#

yeah, i'd agree with that

karmic lion
#

what if I tell it to just not provide the conversational text where it's redundant?

finite night
#

misses out on the conversational feeling with bobby, but it does feel like the correct tradeoff in cases where a card makes sense

karmic lion
#

oh no, something went very wrong

finite night
#

what?

karmic lion
wooden wedge
#

theUnited

finite night
#

oh

wooden wedge
#

what even are those characters

finite night
#

bobby's poppin off

karmic lion
wooden wedge
#

I'm at 8% I think I don't use bobby enough

#

my watch is currently out of charge though so not that I really can use it

karmic lion
#

that's a fun one

#

huh, apparently if it doesn't generate any text I'm not allowed to continue the thread.

karmic lion
#

well I'm not sure I want to ship this number widget

#

I still think the idea is decent

finite night
#

i like it!

karmic lion
#

like I feel this is nicer than reading a textual answer

finite night
#

i feel like if a card like this could be paired with an icon of bobby's face (or honestly if you just put the "Bobby" header above it) that would imply bobby is serving you the answer in a similar way to the more text-heavy answers. maybe that would be worth exploring?

#

rather than the card completely in a vacuum, i mean

karmic lion
#

moving the bobby header is much more difficult than it sounds because it's part of the text response and not separate.

#

though it probably is the right thing to do

finite night
#

oh, i make no claims that any of that would be easy 😆 i always assume programming will be hard

karmic lion
#

(I can put a bobby header above the card but then it will be duplicated if it also adds a textual response)

finite night
#

could/should the bobby header be abstracted out so that it always displays above the response to a query as a whole? meaning like, if the response is going to be a card/graphic and also a more drawn out answer, the bobby header goes once above all of that?

wooden wedge
#

could those number responses have an icon of some kind I wonder

#

like a thermometer next to temperature

#

I am making this complicated aren't I

karmic lion
#

I don't think I want to go down the path of letting it pick an icon to go with its number

karmic lion
finite night
#

that makes sense. so maybe the bobby header gets repeated if enough of a pause happens between messages?

#

but if they're fast enough back to back then it wouldn't

#

maybe

karmic lion
#

I do not think a time-based solution is the answer

finite night
#

that's fair

#

it feels sort of elegant to me - kinda like how our discord messages work. if i send them back to back they're grouped, but if enough time has passed they don't, even if no one has replied

#

or maybe i just hallucinated that

karmic lion
#

Time is not really the defining feature here, though.

#

Either way the followup response is probably going to happen less than a second later

finite night
#

so then why would it not make sense to not repeat the header? i'm not following

#

why is repeating the header important there, to remove the double negative ^

karmic lion
#

Because conversationally it finishes a response and then starts a new response

#

The header is a handy way to distinguish those

finite night
#

but again, it's the "same person horse talking" - like a discord DM. if you're not the one inputting text then the only one "speaking" would be bobby, logically

#

i'd defer to you though. i'm probably not thinking of an important example where it would look/be weird

#

to me it feels like you'd "just" put a little extra padding between subsequent responses. but that could totally look weird/bad or just be confusing

karmic lion
#

frankly the content there is completely irrelevant, it's figuring out where to put it when

#

whether the word "Bobby" is there is wholly inconsequential.

#

anyway I'm just going to ship this as-is.

#

speech recognition strikes again

#

extremely big numbers are a problem

fervent steppe
#

I think the number probably needs a 'bobby' header at least

#

since the 'bobby' header indicates 'LLM generated', not 'ground truth from the system'

karmic lion
#

I regret this entire affair.

karmic lion
#

okay, I have done that.

#

it applies to all the widgets, not just this one

#

conversely, setting things:

fervent steppe
#

hooray!

#

that looks quite good

karmic lion
#

I do prefer it

#

the "bobby" text is now a horrible hack and is completely unrelated to the "you" text

#

oh well

south edgeBOT
karmic lion
#

time to push another update

#

it is done. though unsurprisingly ignored by the releases bot.

#

Anyway, as always, let me know what you think

karmic lion
#

I guess bobby is approaching a shipping state

#

Still nice to have:

  • a warning when you don't have a subscription
  • a warning when you're using cobble
  • a feedback mechanism
  • icons in its main menu
  • maybe announcing release notes in the app?
  • a dedicated little website?
#

Bonus fact: the running horse animation now also appears when loading the reminders menu

wooden wedge
#

the running horse is getting some milage

#

or you are getting mileage out of it

karmic lion
#

It is my general purpose loading animation

harsh brook
#

Small website for a small horse?

wooden wedge
#

time to switch out spinning ball with a horse on your computer too

#

there's never enough horse after all

harsh brook
#

What stuff does bobby put on its homepage

#

Eg what would the website contain 🤔

wooden wedge
#

rotating 3d text and a lot of glitter

harsh brook
#

Doable

edgy flame
#

"check out the bobby assistant from rebble! it does these things: download on your pebble today! requires rbl sub to cover voice and gemini costs"

karmic lion
#

Basically

#

Release notes with pictures

upbeat garden
#

wordart

south edgeBOT
karmic lion
#

new "feature", now when you have Bobby feedback you can pick 'Feedback' from the menu and it will be delivered to me (along with some debug information)

errant python
#

Anybody have a video of Bobby in action? Curious about the speed of the responses

edgy flame
#

it's pretty damn fast actually. the dictation takes longer than the llm response

vale tangle
#

Question about Bobby. How do I get it to vibrate when the timeline activates? It shows up but if I'm not looking, I'll miss the reminder.

harsh brook
#

Bobby seems very excited about being able to use reminders over timers nrfbutitskatharineasahorse

karmic lion
#

Hm.

finite night
karmic lion
#

I wonder how much harder I can yell at it over this one

south edgeBOT
karmic lion
#

it looks like Bobby is also suffering from the Rebble issues

coarse cedar
#

is there such a big demand for rebble services rn?

karmic lion
coarse cedar
#

oh shit

karmic lion
#

@harsh brook @finite night I have deployed a change that hopefully fixes this, let me know how it goes

#

I have traced our fundamental issue back to an extremely sad postgres server that now has twice as much memory

harsh brook
sick apex
karmic lion
#

I mean you can see the diff

#

it is entirely in English

#

and consists of yelling at it slightly more.

karmic lion
#

that's fun

#

(if you set a reminder for less than an hour away, the response it gets back from the watch emphatically screams at it that it must include the warning.)

karmic lion
covert ingot
#

Unless you set a reminder at the same time as the pin, I don't believe you get notified when it becomes active

karmic lion
#

I set a notification!

covert ingot
#

Never mind then! 😊

finite night
karmic lion
#

🎉

#

I was going to say it's ready to ship soon but I think Eric's news may have drowned any announcements of anything I may try to make.

#

I think I still need menu icons

#

Alarms, Timers, Reminders, Quota, Feedback, Legal, About

sick apex
#

are you going to add voice feedback to Bobby for the new Core Devices when they come?

karmic lion
#

unclear!

#

I have no idea how I'd get audio to the watch

#

but in principle, yes, if it were doable

sick apex
#

I think that would be cool, to have Bobby speaking back to you, Siri style

karmic lion
#

There is world where I rejig it all to use multimodal gemini and do straight audio in/out with no text

hollow rivet
#

Just send a PCM wave stream to the watch, easy 🙃

karmic lion
#

(and then do some ASR to get the text transcript on screen)

#

it is.

#

I could do it now if I jumped through enough hoops

#

well, audio in, text out

sick apex
#

eh maybe waiting to see how the audio stuff is implemented in the SDK makes more sense

edgy flame
#

have core devices said anything about putting the speaker in the SDK and/or what it will even do on the watch

karmic lion
#

they have not

edgy flame
#

have they said anything about the sdk at all

karmic lion
#

"it will use the existing one"

#

but a speaker that does nothing is pretty pointless so I assume there is an intent to have a plan

edgy flame
#

should ask in the ama if they plan to maintain [the sdk] or if it's left as an exercise for the rebbler

karmic lion
#

(then again the Pebble Steel LED does almost nothing, and the Pebble Time gyroscope does absolutely nothing)

sick apex
#

wdym there's like a few games that use it

#

like Mr. Runner or Doodle Jump

karmic lion
#

there are definitely no games that use it

edgy flame
#

that's the accelerometer

sick apex
#

oh

#

nevermind

wooden wedge
#

I can do that tomorrow unless somebody else manages to do it earlier

#

tomorrow is in 8-9 hours

karmic lion
#

alarms, timers, reminders are presumably just 25x25 versions of the alarm/timer/reminder icons

#

(though I couldn't actually find a 25x25 hourglass)

#

no idea what quota/feedback/legal are

#

I think about is a horse

#

possibly the app icon horse

wooden wedge
#

yeah, that might make sense

#

I think hourglass only existed in 80x80 in pebble icons

karmic lion
#

also maybe a bigger horse to go at the bottom of the about screen. I don't even know what it'll have other than an app version, a link to a website I haven't made, and a horse.