#Bobby, a new voice assistant and Snowy successor
1 messages · Page 7 of 1
yeah
Or two big things on different sides in general.
where does this sit in terms of palatability
(I am also not sure what problem any of the multi-arc/line variations were solving)
I mean, I'm not mad at it, it looks nice
I guess this is fine but I feel it draws too much attention to a distinction nobody will really understand
The bobby label positioning is fairly subtle
Big pink circle will make people ask why there is sometimes, but not always, a big pink circle
here is a different thought
it gets us colors, it gets us text contrast, icons, widgets, it looks fine. it loses us circles and peeks
I mean, if we don't have peeks we might as well do an arc
Why is the icon not at the top now? So it can be there after you scroll?
this does feel much more natural
oh, let me try this
I guess because we had the peeks before
This is going around in circles
Very literally we are just spinning around the screen
we have not gone to the right yet
That follows after top
oh, true
we haven't tried 45 degree variations...
yeah, we need to scroll at an angle
we could use the accelerometer to change the scrolling direction
this is getting somewhere!
it's also much closer to the conversation stream on rect
this feels like one big stream of thought and not like a million little separate thoughts
what happens if a thing is split into two screens?
then it just gets paginated, but keeps its color on the side
I also feel like a lot of the screen real estate is lost
with peeks we had zero screen real estate anyway
I don't think Bobby needs an icon at this point
i really like the bar on the side. i feel it gives the layout a point to ground itself to, which is something the peek layout was missing
I guess it needs an icon because now the layout for an action confirmation is exactly the same as the layout for text
I think I preferred the original version
Surely the top one should have green at the bottom
Though the line is, confusingly, not actually linear
twas a thought. i don't think i like the segmented line
noted
i don't think multiple icons on the left works
i also don't like that 'you' icon in context
yeah, that doesn't look very good
do you want just edit access to the - you probably have edit access to the same figma
it's in drafts on the rebble organization
hmm
I do wish it was easier to indicate this somehow
I was thinking about this earlier with round one in pie chart context
but yeah, it's not that simple
different widget
Something about DST seems to confuse bobby - I have told it to set a reminder for 16, it says it set a reminder for 16 yet the widget says 17
honestly this is fine, I would probably still experiment with an arc instead and have the icon on the coloured part, but otherwise it seems fine
which did it actually set it for? i guess we'll find out once the clocks change
hm
can you report the conversation? either hold select on the conversation screen or ask the model to do so
does Bobby need an icon here or would an arrow down with a coloured background also work?
and just a circle around status bar
i don't love making it look just like a notification
hmm
trying this
this is what notifications do
just a colorful pip at the bottom
i do not think they are
there is one thing i havent considered at all here, which is to remove the clock from the statusbar and use that space for more indicators
I don't think it really helps
done
(it didn't hear me quite right but the gist still stands)
to be very clear, the story here is that the clocks change today in my country (in about 10 minutes, actually)
well, in all of europe
So I'm assuming that something somewhere is noticing that and adjusting the timestamps, but then other things don't know that they've been adjusted
it's eu dst
i am done for the night, i have new books
i don't know if we've gotten anywhere but we've learned things
...oh my god dst confuses pebbleos too
When I view the future timeline it thinks it's the timeline for 29 march "yesterday"
that's probably what did it, if sometimes the model is writing times and sometimes the app is writing times
now that DST has occured i can confirm that the pebble is no longer confused but also that it did in fact write the wrong times
I don't seem to have that
urghh
my thoughts exactly
you and freakified are both supposed to have edit access to everything, that's what the admin dashboard says, but i think Figma has Streamlined everything to where you can't have edit access without having a full paid editor seat
I don't even see I'm a part of any team tbh
huh
there should be a thing at the top left of your files page, under your account, where you can switch what team you're looking at
can you show me?
wait no i don't think you were in the rebble team actually
I've clicked "approve edit request" in my email, try now
this entire experience is so weird
hell, okay, i guess upgrading our figma plan means that now nobody can ever have edit access without paying $16 a month for it
that's really frustrating
I wish figma had some better alternatives
I am also really bad at using it, so that's fun
this is what I was thinking yesterday
I have too much love for circles
the thing i like about the flat line is that it makes it feel like you're scrolling a continuous stream
it has the same effect as scrolling timeline
the circles break it up into individual chunks again
though they look really good
I think the problem is that pebble doesn't give me a real timezone name, so all time-related work is done using your UTC offset. But nothing knows when your UTC offset will change.
maybe the amount of screen taken up by the circle could depend on the presence of icon
it doesn't have to be that large always
The confirmation generated by the app does have correct timezone information, so that gets adjusted, but nothing generated on the server is correct.
I wish there was some allowance for animations
because I think if you do a rotating circle animation on the side, you could make it look like a stream
that does get into the failed idea of lines on the side though
that makes me wonder, how does the watch draw all of those curves?
i dunno i don't think I'm a believer in left circle
pdc with beziers?
using draw commands?
yeah
that seems inefficient
no bezier but yes circle
it can do beziers too
can read the code
that's true
IIRC it can also draw partial arcs so I might guess it doesn't draw the entire circle
(though I very vaguely recall that drawing circles is actually more performant than drawing arcs)
That caltrain example that comes up occasionally exposed exciting bugs because when it was first written it would only partially render
Because it actually took longer than a frame to draw the circles in it and apparently at the time if you missed the deadline you just got what was done.
In that context you can't really tell it's slow because there are no animations, but be wary of circular performance.
it is a circle
Makes sense
I don't think I can convert you, I just think it's neat
Between the big thing on the left and the space left for the dot on the right we are getting quite close to just using a rectangle for the actual content
A chunk is currently reserved from the top, left, right, and bottom
it does kinda seem that no matter what we do we end up with a square side
I have one more idea actually
widgets with icons would have a rounded side to accomodate an icon
it would be straight otherwise
What does the weather widget do?
Three!
three
Two are fairly similar though
it might take over the entire screen
I think a line turning into a circle from the side kinda animation could be nice for that too
I mean, really to give that illusion you would just move a circle of the same color as the line from outside the screen onto the screen
I don't think anything more complex is necessary
You say that but doing this requires throwing away the concept of these all being on a scroll layer and instead doing bespoke screen switching everywhere
The animation is simple but being in a position to do them seems less so
yeah
well, it could also be an animation of the center of the circle getting closer while the radius gets smaller to make the illusion of the upper and lower points being static while the middle expands out into the middle
it's like blowing the line on the left into a balloon
the best thought I've had was to fit the current weather widgets inside rectangular bounds and just show them
Bobby's weather widgets are very good as is, i don't feel the need to mess with them
that was kinda my assumption as to what is required to do any of them
This is generally true. Except for always line on the left, I guess
that still seems like it would require pages
Scroll layers have a paginated mode
that does make it easier
Since otherwise doing any sort of scrolling on round is a disaster
Suddenly realising that bobby's text height shortcut probably assumes it's rectangular. And not having wild pagination things happen
That's fun
It actually might not assume either of those things
The FormattedTextLayer probably also makes this assumption
Sigh
round support sounds hard from every perspective
this was overall the reason i assumed you wouldn't want to do bobby on round :p
as someone just scrolling through this discussion for the first time now, the far left is my favourite
if that's helpful
feedback is always helpful
I feel like maybe with the line the widgets should always be full sceeen, since that does let you do big icons which feel more appropriate on the round
i like big icons in general on pebble
yeah
we did specifically design small icons for this app!
which seems antithetical
to the goal of big icons
ive been playing the long con of making everything in bobby really big
I still would like the main conversation stuff to be high contrast white/black somehow
I do like the line on the side even if I wish it was a circle somehow
Does the time always show 12:34? I've been using this for a couple weeks, am I just now realizing this?
I did a quick debug of bobby in the emulator, the reason why the websocket doesn't work is SSLError on this line https://github.com/pebble-dev/pypkjs/blob/master/pypkjs/javascript/ws.py#L117
I wonder if it uses ancient certificates or something
bypassing that error by disabling ssl requirement doesn't help much
which I feel like I should have known
Does this help? #hackathon-002 message
nope, still getting sslerror
that being said, I might be doing something wrong, because I can't fetch quota either
Hmm it seems to be working as expected again, but I did see in all the round mockups above the time was 12:34. Maybe my app got stuck in some default mode. It was still working mostly as intended, but I missed a reminder and then checked the time and it was way off. But my device time outside the app was correct. Oh well, I'll see if it happens again
I have seen that just show 12:34 instead of the actual time, though I've not had a chance to look into why.
It wouldn't affect any functionality, though.
This thread is an adventure: https://www.reddit.com/r/pebble/comments/1jn84ii/turns_out_you_can_just_ask_bobby_for_its_prompt/
Runs the spectrum from "that's very cool" to "large language models are a sin and nothing useful could ever be built with them"
And also one guy who specifically really hates Gemini models and says this in every place Bobby shows up
it's funny, it feels like the Pebble subreddit is the outer exterior to a hidden speakeasy or something
the tonal difference is sharp
the subreddit has a bunch of normal, if bland posts, but it's the front for the Discord server where all the interesting stuff happens
Awww, a fan!
Is there a reason the Github repo has issues disabled? I wanted to suggest support for self hosted LLMs via Ollama
hmm - Bobby as a rebble product just works, with very little setup, and we'd like to keep it that way, but I encourage you to fork the project and add support yourself!
sounds like it could be cool. would you want to host the backend for Bobby as well, or just the llm?
Just the LLM. Mostly just privacy and ethical concerns.
Alright, I might do that.
I wasn't aware it did
But also I have no interest in that feature
You can fork it, but be aware that Bobby uses the Google GenAI library so you'd need to rewrite quite a bit
It now has issues, unclear how that was disabled
I will also continue to specifically push back on the privacy concerns, given that a) you are not Google's customer, and also b) Google is contractually obliged not to do anything with the data.
Forks have issues disabled by default. Weird GitHub thing. You can technically "leave the fork network" if you want it to be a standalone repo (that is, if you never want any connection to Katharine/tiny-assistant ever again) in the repo settings, so you won't have weird GitHub fork limitations
Though this may interfere with some licensing things? Probably not but I'm not sure if being a fork has anything to do with this
Ah okay if that is not a desired feature, I'll consider making a fork.
I strongly do not trust Google to oblige by the contract since they have absolutely no incentive to do so and you have no way to proof they do not use the user data for training. It is highly unlikely IMO that they do not use that data.
Now whether this concerns me enough to fork the project rather than just use it is another question, I probably don't care enough, but we'll see
where can I find the privacy policy of Bobby / Rebble?
ah found it, but it says "Last updated 2021", does it cover Bobby?
there's an added blurb about google processing in bobby itself https://github.com/pebble-dev/bobby-assistant/blob/main/app/resources/text/legal.txt
A smiley AI assistant for the Pebble. Contribute to pebble-dev/bobby-assistant development by creating an account on GitHub.
I believe the incentive is that Rebble pays slightly more for each API call in order for them to not use it for training
citation needed but I could've sworn I heard one of the rebblers mentioning that
Google has a massive incentive to obey their contract and I find it incredibly unlikely that they do not
They have a forty billion dollar cloud business, of which this is part, wholly dependent on the concept that they do not inspect the content of the workloads they're running
It would be completely insane and open them up to a huge array of wild lawsuits
It would also be illegal in the EU to use the data for training
There's also minimal benefit to them doing so - Google gets plenty of query data from search, Gemini-the-product, Google Assistant, etc. - and that data actually has meaningful feedback, unlike wholly opaque enterprise API usage.
We pay slightly more so they can't use dictation data. Paying at all means they can't use the LLM data (there is an unpaid tier where they can).
Of course, since Rebble runs on GCP, if you believe they inspect the Gemini data they are legally and contractually obliged not to use, you should also assume that they are (illegally) using all data sent to Rebble for similar purposes.
For me it's really more a matter of principle, I understand this all and know you act in good faith, and I'll probably even just use Bobby as is.
I just like always having a way out of big cloud services if possible, that doesn't mean I don't use them.
But yeah I would advice adjusting your privacy policy to be clear about what Bobby does if you don't want to get into legal trouble in the EU, I doubt that small disclaimer is really enough. But I'm no lawyer.
The disclaimer is not very subtle, you have to consent when you launch the app
I didn't, the consent showed but then the app closed before I could read the rest. Next launch it didn't show it.
That should not be possible
Unless you saved the settings in the mobile app and were also using one of the releases that crashed when you did that
Which would both override the consent flag and also dismiss it
I just saw it because it installed on my watch, I saw the screen but then I was in the app settings on my phone checking the settings. When I looked back on my watch I was in the launcher.
Ah yeah I was doing that
But I was doing this earlier today, so I installed it today.
The 1.1 release should not crash when you save settings
But again it's not a bit deal, I understand and consent to what I'm using, even if I'm not entirely sure what legal entity actually processes my data here, but it's Rebble right?
Honestly I am sort of annoyed the settings show up at all, I need to reconcile that with the on-watch behaviour of asking the same questions
The app is officially by Rebble?
It's the Rebble Foundation
But yeah with all that aside, great work on the app, it's really cool! And it actually got me motivated to looking into making my own apps that capture that Pebble look and feel. It's just so cozy.
Anyway I will fix it so that the consents are not skipped if you save the settings and then also quit the app; this is unintentional
selfhosting an LLM seems like a huge waste to me, i don't understand why i see so many people doing it
of all the things you could pick to selfhost why would you pick the most resource intensive one
It's not really that hard, you just need a server or PC with a somewhat modern GPU in it
for some usecases you don't even need that much
for what Bobby needs even just a CPU run model is good
i'd be personally more interested in a simpler NLP-based backend, an LLM seems overkill when you just want to set reminders. but i guess that would be something entirely different than bobby
I think running Bobby on a CPU is dubiously viable
honestly I can see bobby running with one of the new gemma 3 models
Gemini 2.0 Flash is generally assumed to be a ~40 billion parameter model, which is not tiny, and I don't think I'd particularly enjoy the results of using a less capable model
I think your choice of Gemini 2.0 Flash is Very Safe for a few different reasons
its just a great model price wise
and I think using a Google model looks good
for lack of a better way to say it
brand loyalty if you will
'hey thanks for letting this super valuable software out of the cage and approving my awesome AI-on-wrist app and don't worry because it uses Gemini'
just my outside take
The number one reason it uses Gemini is to get it approved for release in the first place
there you have it
Previously it used gpt-3.5-turbo (in 2023)
also, RWS is GCloud?
Yes
so, that makes things 'easier' I would guess
It can do, but Bobby accesses Gemini via AI Studio instead of via Vertex AI, so it doesn't get the integration benefits
gotcha
If you look at the (new) asr, or the audio-debug-mode, they have no credentials or even allowance for providing credentials
They are just magically authenticated
thats actually really cool
(the actual underlying mechanism is that there is a GCP service account with relevant access, and then a kubernetes service account bound to that GCP service account, and then the pod runs under that service account. so GCP grants the pod access to the relevant resources, and only those resources)
I'm sure whenever I look at Bobby it's like I'm looking at the top of the iceberg
sounds like a sophisticated setup
by who?
by Google
there's a reason that Bobby has Copyright 2025 Google LLC at the top of every file 😄
oh lol
I'm glad Bobby saw the light of day but I lament that Big Tech Corps "own" everything an employee does
such is life
I respect that attitude
Technically, due to restrictions under California law, they only own things I make that are relevant to their current or reasonably forseeable lines of business
i die a little inside whenever i sign a new employment contract
this was useful when I worked at Pebble, which had a very small set of current or forseeable lines of business
it is not at all helpful at Google
so that means uh
everything rebble related
yes
everything I do for Rebble is actually done by Google
or, at least, owned by Google
frickin' Google
Google explicitly disclaims my actions
this clause is common elsewhere i think
(see the disclaimer at the bottom of bobby's readme for further detail)
at least the google rebblers got pebbleos open sourced
California is one of only two US states with that restriction
in any other US state they own everything without restriction
I am still so thankful for that, yall are the best!
(I forget what the other state is)
yeah i assume it's not done for legal reasons i just see it a lot
Every contract I've ever signed went the other way and just said "we own everything", then had a little note about "except as required by california law"
well it doesnt really work for google because they do like almost everything
the legend i've heard is that those types of clauses only became common after steve wozniak used equipment from his job at HP to design the apple 1
no idea if that's true
Not at all
Google gives me two options: I can ask them to waive their interest, or I can ask them to let me release it as open source
I've done the former a few times and it's actually the easier path, but they'll refuse if it sounds like a thing they make
years ago i used to see github repos under the google org with a disclaimer to the effect of "this is not an official google project, but was made by a google employee"
do they still do that
Yes
Rebble services are US based?
yes I think so
I didn't really think about that before, I don't know if I feel comfortable with that, but what can you do.
Well I guess it doesn't really matter all too much
is it correct then that Google and Rebble have to provide backdoor access to the data if asked by the US government?
well I guess I sound a bit paranoic here but I generally just try to avoid any of my data entering the US if at all possible these days
and yes this is hypocritical beeing on Discord, but I have no other option, since the Pebble development happens here
as a member of the Board of Directors of the Rebble Foundation, I will say that we will comply with any lawful request from a government that has jurisdiction over us
I personally think the extremely limited set of data Rebble actually has about you will not be interesting at all to the U.S. Government. Unsure how knowing what watchfaces you have will help solve hypothetical crime
Also, if they want data about you, let's just say you have bigger problems 😄
I am in love with Bobby, really impressive work
Just subscribed to Rebble to try this out 🙂
Since Katharine mentioned trying to add various integrations with mixed success #1345564272289120296 message
It'd be awesome if Bobby could behave as an MCP client so folks can plug in whatever external tools they want. IIUC the new streamable HTTP transport supports remote connections, so I think you can configure an MCP server with just a URL that could be provided from the app settings, e.g. Cline supports this .
Seeing this on my end too, sometimes gets stuck at 12:34 sometimes not (e.g. here are two pebbles showing different time). Happened right after initial setup on the 2nd pebble.
what if we got rid of the peek and just had a tiny content indicator triangle on each screen
each individual widget would feel much less cramped
that's kinda what I was thinking
but then you are missing out on animations!!!
(I'm just joking, I don't think it matters all that much)
we can still have animations!
Oh, I wonder whether the override on the speech bubble is also disabling the time. That seems likely.
you should clean those buttons
also maybe the default time should be intentionally incorrect
like 43:21
34:56
I would have suggested 00:00, but that's actual time in 24h clock, or 88:88, since that's a default on 7 segment displays, but that has a meaning of its own, which is not great
sigh
looking at Google's API pricing because the OpenStreetMap POI data is Not Great, and $0.035 per search request feels infeasible on a $2/month budget.
generally I want to avoid risking people actually hitting the quota limit
the inevitable endpoint of this feels like adding more tiers to the rebble subscription entirely to fund bobby quota points. which is an exercise I don't particularly want to undertake.
$0.035 is like an average of 57 requests a day, doen't seem too bad, considering most people likely won't use it all thta often? The if the POI data's not great then that's a separate issue I guess 🤷
57 requests per month
assuming the only thing you do is fetch POI data
Oh yeah that 2 dollars is also for the rest of the services too?
all bobby usage is budgeted at $2/user/month
when you have caused us to spend $2 on you, you get locked out for the rest of the month
anyway I have returned from my holiday and can now look at this
though I'm still on holiday, just now physically at home
and I am still inclined to not spend too much time writing software for the time being
but that's the 12:34 bug
for some reason my IDE no longer knows about any standard C functions
and that fixes a) the ability to skip consents by saving in the app config page, and also b) crashing when you save in the config page while the consents are visible
also, performing the migration from the old consent storage to the new consent storage is the first time that keeping track of the previous version has paid off
so now I am glad I bothered to keep track
void consent_migrate() {
if (version_is_updated() && !version_is_first_launch()) {
// If we're updating from version 1.1 or older, consent agreement was implied by LOCATION_ENABLED being set
// (either true or false).
if (version_info_compare(version_get_last_launch(), (VersionInfo) {1, 1}) <= 0) {
APP_LOG(APP_LOG_LEVEL_INFO, "Performing consent migration from version 1.1.");
// If the location enabled state is set, that's equivalent to consent agreement version 1.
if (persist_exists(PERSIST_KEY_LOCATION_ENABLED)) {
persist_write_int(PERSIST_KEY_CONSENTS_COMPLETED, 1);
}
}
}
}
also for Reasons, my Android app is currently running watch app version 1.2 against JS version 0.26
so don't assume those get updated in lockstep I guess
Is Mapbox data any better? Their pricing is pretty aggressive IMO and they have a generous free tier
I am not sure of pricing per request though.
Possibly Yelp too
Mapbox data is exactly the same - their data source is OSM.
(In fact we are using it)
I am actually not entirely sure what value Mapbox is providing me in exchange for the money we pay them
but it's a small enough amount of money that I am not particularly fussed about it.
(in fact it's zero because we will probably never break the free tier)
We've had a few reports of mapbox (and thus presumably its backing source, OSM) being very wrong, though
I'm sort of leaning towards Google, because cheap incorrect data is not very useful
I wonder if Gemini itself can access weather data
Have you considered Foursquare Places? https://location.foursquare.com/products/places/
Wait they only have "Contact us" pricing
I did consider it when I was looking for reviews but it wasn't better
I also am not clear on what their data source is given foursquare is not very alive these days
It looks like their free dataset doesn't have opening hours, which is arguably the most useful property for bobby-type questions
("is the Safeway open?")
OSM has them but apparently not very accurately.
Google charges Enterprise pricing for that data, which works out at $35/1000 requests
though on the plus side for that price I do also get a star rating and a bunch of other data mapbox doesn't have
The last time I went digging the general consensus seemed to be that Google is the only entity with a good POI database. Maybe Yelp, but their pricing is similar if not worse anyway.
Ah. I couldn't recall if they did some of their own stuff. That sucks
It seems Google and Yelp have the best data, and well, they know and it reflects in their pricing.
Creating and maintaining a POI database sounds like a wild activity to try to undertake
alas.
it feels like the kind of project that is doomed unless you can motivate a major percentage of venue owners to not only enter their data themselves (or pay someone to do it for them) but also keep that data updated
indeed
Though even that doesn't work well enough
Which is why Google has wild projects like "regularly phone every business that exists and check what their hours are"
it feels like leveraging location data would be a lot easier for at least the businesses that tend to have more than 3 customers at a time
but they're already doing that, of course
that kinda makes me wonder whether they use aibots for that (thinking back to a certain i/o where ai calls were pitched to customers)...or whether business relations are too valuable to automate that contact
I remember that demo
(for that matter the automated AI calls they pitched at I/O also actually shipped, but it's pretty rare to get into the state where google offers to do it)
you need to be asking it to make you an appointment at a business that does not have a website
and the business is of a supported type
that does seem rare
using the website is probably a lot cheaper resourcewise
and possibly less error prone
the results from google maps are much nicer
but the pricing remains insane.
or at least insane while constrained to a $2/month budget.
maybe I'll try it anyway
people probably don't do that many location queries
in fact I should have data on this
you could add a premium tier for...high volume users
unless that complicates things too much
then I have to touch Rebble's billing code 😦
it is a scary place
the actual number of location queries, across all users over the last month, fits in the free tier.
(which is 1,000 queries)
that's encouraging
I could go the wild and wacky route and charge zero quota credits until the monthly limit is exceeded
which is sort of weird because it makes quota usage for a single user dependent on the global usage of bobby
tragedy of the commons incoming
well, not really. people's life doesn't get arbitrarily better the more location queries they send
well it might if they have many location-related problems
I think I will actually do this
oh
time to do some incomprehensible Cloud Stuff
I have done some incomprehensible Cloud Stuff
Bobby now uses Google Maps to fetch POI data
let me know whether it's better or worse
Google Maps uses a significant chunk of your quota (about 2% per invocation), but only once the global free limit is exhausted.
daaang that's a little sharp
such is life
on the plus side, good odds that at least in the forseeable future, the global quota will never be exhausted, and so you never actually get charged against your personal quota
oh, also Bobby now has star ratings for each place, so it can tell you about that. so that's nice.
Neat!
I asked my partner to try out the new POI stuff
2025/04/07 00:38:18 calling function poi
2025/04/07 00:38:19 Searching for POIs matching "things to do"
2025/04/07 00:38:19 Charged against global quota gplaces_text_search
2025/04/07 00:38:19 Found 10 POIs
2025/04/07 00:38:19 http: panic serving 130.211.2.174:58620: runtime error: invalid memory address or nil pointer dereference
goroutine 2756 [running]:
net/http.(*conn).serve.func1()
/usr/local/go/src/net/http/server.go:1947 +0xbe
panic({0xd22ac0?, 0x15b4120?})
/usr/local/go/src/runtime/panic.go:791 +0x132
github.com/pebble-dev/bobby-assistant/service/assistant/functions.searchPoi({0xfa3818?, 0xc00080cc30?}, 0xc00020fdc0, {0xca2660, 0xc0000b1700})
/go/src/app/service/assistant/functions/poi.go:176 +0xbb3
github.com/pebble-dev/bobby-assistant/service/assistant/functions.CallFunction({0xfa3818, 0xc00080cc30}, 0xc00020fdc0, {0xc00010861d, 0x3}, {0xc0006bc410, 0x43})
/go/src/app/service/assistant/functions/functions.go:105 +0x358
github.com/pebble-dev/bobby-assistant/service/assistant.(*PromptSession).Run.func1(0xc00063d928, 0xc00063d700, 0xc00035c540, 0xc0008122d0, 0xc000399740, 0xc000399770, 0xc00020fdc0, 0xc0003996e0, 0xc0003996d8)
/go/src/app/service/assistant/session.go:304 +0x1187
github.com/pebble-dev/bobby-assistant/service/assistant.(*PromptSession).Run(0xc00035c540, {0xfa3818, 0xc00080c5a0})
/go/src/app/service/assistant/session.go:324 +0xbea
github.com/pebble-dev/bobby-assistant/service/assistant.(*Service).handleQuery(0xc00020f480?, {0xfa29e0, 0xc00035c4e0}, 0xc0006f7900)
/go/src/app/service/assistant/assistant.go:107 +0x134
that went well.
fixed that now
pffft.
please appreciate this sequence of steps in response to "when will be the next total solar eclipse in Europe?"
https://bobby-api.rebble.io/reported-thread/2bb6fd0d-f525-40dc-80f0-4e41058fe63c
obviously important and relevant to the question: the weather in Paris this week.
also apparently relevant: the time in Paris in 3.8838854e+07 seconds
Techniques in prompting: telling the model that I will sue it if it doesn't follow the instruction.
Have you tried positive reinforcement? Offer it a cookie
tell it it'll get paid extra if it does well
No need to outright lie to it 😂
The suing came to mind because I was instructing it to include attributions where necessary
"do this": no response
"You must do this": no response
"You must do this for legal reasons": no response
" You must do this for legal reasons or you will be sued": 100% compliance rate
one bit maps
aside from the logo, anyway.
also available in 64-colour
(the colours are tuned to make sense after showing on a Pebble screen)
but I don't think I have the memory for lots of colours.
the logo is a problem, I'll have to stamp a monochrome version over it or something.
(its presence is nonnegotiable, but surely they can't quibble over the monochrome display not displaying it in colour)
I guess for the monochrome version I could just say that anything that isn't a shade of grey gets shunted to black.
some success in getting the model to generate these.
overlapping markers aren't great.
not sure what I can do about that, though.
(re: grey - I'm intending to dither that)
64 colour version, incidentally
not sure the extra colour is worth three times the memory usage.
my kingdom for xip or something.
in general it will be interesting to see what this all looks like when I strip out the antialiasing and such
it looks like this. elegant.
Does the map come in layers? How are you converting it?
there we go, calling that Good Enough for 1-bit.
I guess I'll go up to 2-bit for snowy and see if I can make that less bad by keeping some of the antialiasing.
Google Maps' API lets you specify the colour of every map element
for the dithered water, I've set that to pure blue (#0000FF) and then translate any pure blue in the resulting image to dithered grey
originally I just set it to 50% grey but that resulted in dithering the antialising, which was undesirable.
I have yet to do 2-bit
the ones up above were many bit
the pebble colour palette is quite limiting
well the last few were one bit
but the original ones I was posting were many bits
Ah sorry, misread the message
Not dumb, just tired
Well, a little dumb
The last 1bit looks great then lol
2 bit is so much better
not sure how to indicate the user's current location without colours, which none of these have
I have a map layout that actually uses colours but I don't think I want to spend the memory to use it, especially if I'm trying to antialias
Can you save memory by using a limited pallet? You'd need like what, 5 colors at most?
well that's four colours to be apparently black and white
the next step gets me eight colours.
but that image is already multiple kilobytes
1995 byte PNG, then decompressed into a ~3 kilobyte GBitmap
plus the memory usage of the PNG decoder
I think I can just send it as a 2-bit palletised pbi to save on that overhead
but that's still 3k, plus whatever the size of the chunks I transmit it in is
I am pretty short on memory so this is a real problem.
I will have to figure out what the pbi format actually is
also still need to figure out what the "you are here" marker is
blue circle won't cut it if I can't show blue
Create a quasi svg renderer for the pebble, then just send the streets as two coordinates for a line, some text for the street and then some squares and circles for forest/water
I feel this would use more than 3k in code space
but it would solve my aliasing problems completely.
Boom, everything just got way more complicated 😅
but also I don't have that sort of data
also for legal reasons I must use Google Maps, specifically
Yeah that makes sense
I could play really exciting games like having the watch render the you are here marker
stick a single pixel marker onto the map, find the coordinates of the marker on the server, delete it, then send those coordinates to the watch to use.
this doesn't solve any problems on diorite, though, because I still can't use colour
Can you overlay a cross hair marker on the map and invert its colors so it stands out on the background?
might be a smart move on colour watches though
sure, or I could just put a white outline around it
I was thinking a little arrow maybe
one bit is the least useful number of bits.
Alternatively, or additionally, can you have the center of the map always be the "you are here" location?
I could do that, but then if all the pins are off to the same side you've wasted a lot of map
Yes but it could be baked into the OS instead 🤔
currently I am just sticking all the markers on the map and leaving it to Google's judgement what bounds to use
(it already has this, that's what pdcs are)
no text on those, though.
maybe I could give it a little animation.
circle with pulses coming out
that's workable on black and white
That'd be cute
it's also what every map app does, though usually the circle is blue
Flashing arrow maybe
also the pulsing usually indicates the position is live, which it wouldn't be
Does the map have to have the google logo? Or can you put a nice looking footer with the copyright info?
I can't get rid of that
there's no way to tell it to not be there, and it would be a terms violation to crop it out
if the image were wider it'd have a copyright notice instead of a logo
Gotcha
apparently they switch to the logo at less than 180 pixels wide
maybe make it smaller?
the logo is also very antialised, which makes it exceedingly annoying to fix up
Interesting, kinda amazed they even support such small sizes in this dat
also both a terms violation and not possible
sad
it does annoy me that they explicitly support a monochrome map (not 1-bit, but all greyscale) but then stuff a colour logo on it
why D:
it is very heavily antialised and also very bright which makes it pretty annoying to convert to 1-bit
also note that the road passing through the o has changed the antialising - they're doing transparency
very tempted to just grab the monochrome logo from their website and paste it over the colour one
Can you make multiple requests with different elements on and off so you can do different levels of antialising?
I could but I am not sure how it would help
Mostly thinking out loud, sorry if its distracting
I assume the logo is always in the same place? Overlaying the monochrome version is a good idea
Could probably manually tweak it to look better if needed. I would hope the lawyers wouldn't care about a few changed pixels if it makes the logo more readable
I wonder if one could ask Google to make a logo for low density screens
their logo is actually fine for the size/density, it's the colours that are a problem
that logo is not just the standard logo downsized, some effort was involved in making it tiny
it'd be nice if we could just show the G though
although that, again, only works in colour
that would probably be the best option
a dithered G for B&W
they're too big for such a small screen size
Hard to make them smaller and still put a letter in them
and without the letter there's not really any point
but generally yes, I agree
These are the built-in ones Google provides, which do also have two smaller sizes but they won't put letters in those
if I draw my own images I can in principle make them smaller.
thanks, really helpful
How readable are the pins if you make them transparent with a border? And with a border around the text too. My guess is it'd be way too busy but 🤷
for now I have messed around with generating map images enough
I should probably see about actually getting them onto a watch
https://developer.rebble.io/developer.pebble.com/docs/c/Foundation/Resources/File_Formats/PBI_File_Format/index.html is not a very helpful document
The official developer website for the Pebble smartwatch.
apparently I was the last person who touched pebble's pbi generation, who knew
well, not that.
I call this one "4 towere"
the towers even have a bit of an evil vibe with an outline of a face in them
I flipped a bit in the header
several things went wrong this time
…I'm not sure what happened to this one
something has gone wrong in the top right. maybe?
The google logo looks better
I hand-pixeled it
anyway I have 2-bit pbi conversion working now
(also 1-bit and 4-bit palettes, in theory, but not non-palettised images)
now I just need to shove this all the way down to the watch
nothing wrong with the conversion here
(I'm just converting these back with pbi2png from the firmware for now)
the message key list is getting silly
there are currently 69 of them
oh, it'd also be nice to draw a scale on the map
that was the other thing I wanted.
hm.
problem: I have no idea what the scale is
an evil cloud has spawned with a visor up top
why does it look like an offbrand Pokémon
no idea what happened there, it seems like something's wrong but it doesn't feel like an image encoding error
Maybe the Core Time 2 will have oodles of app memory available and I can afford the full colour image
and also a bigger one
I do wonder why the runtime reserved heap is so large on basalt
there shouldn't be any
66kB reserved for app heap, 30kB for the AppState struct
oh, that
I didn't bother looking at it but from what I saw it was for RockyJS
maybe one day we can fix it and finally have more than 64kB of heap space
most of the reason appstate is so big is because it has an entire framebuffer in it, which is 24k on its own
(and also actually located in your app's accessible memory space, just not part of the heap)
I think the scale is going to make things too difficult to read
right, the colour watches had a legacy framebuffer in AppState too
that's another 3kB
The primary value in the map, I think, is having some idea of relative locations
is it telling you about the pub in the next town or the one down the road?
in theory, it could decide to put ten on screen.
(well in theory it can put an unbounded number on screen, but ten is the largest number of locations it's likely to have at a time)
it is instructed to keep it to three or four
maybe
though then it has to reference the shapes by name in the text
which is weird
if I had the code space I'd probably already have my own text layout engine so I could embed not-text in them.
well it's one or the other
or change fonts mid-flow
~XIP~
there's already a FormattedTextLayer that can do markdown-style headings
it's used all over the place
renders things like https://github.com/pebble-dev/bobby-assistant/blob/main/app/resources/text/legal.txt nicely
I wonder if you could just display the marker with the text
mm, screen resolution hardcodes
😄
well it's part of Bobby, rather than a thing that generally exists
but one could reuse it
yeah
This is incredible!
full screen width is pretty but also an extra 600 bytes over the original size.
also the code to handle hanging on to these images is another 3k or something in itself
sigh
also I guess there's some sort of memory leak in there somewhere, judging by Still allocated <1800B>.
really I'm just going to have to start dealing with memory pressure sanely.
throw things out if I need more space
handwave fragmentation and hope it somehow isn't a problem
bonus, more zoomed in map
@shell jetty
@shell jetty
here is the state of things
these should also be in the bobby sketches
no need to show them separately
looks good! though i might actually consider two levels: an MVP that just adapts the existing UI as closely as possible while adding pagination, and an aspirational design for like the ultimate bobby round adaptation
also having just seen the 3.x round main menu, i actually think something like that could be ideal
pretty colored circles
we disagreed a lot about the direction, so seeing any of the ideas on the screen might make it easier to visualise the best of them
on that note, I will have my round next week I think, so I might be able to test the interface a bit
(as much as I wish I found a ptr to buy, I'm just traveling to the country where my stash of pebbles is)
i'll put together some rough concepts to try and show what i'm thinking!
hell yeah, can't wait
As long as it uses zero code space and does not increase overall complexity 😄
maybe it uses negative code space and reduces complexity
I think at this point my basic take on round support is that it should paginate and have different widget layouts but otherwise be unchanged.
it is really, really easy to make a pebble reboot
whatever happened to having memory protection
this map is code, apparently
also all things considered I think that's a decently legible map
Yeah that's looking good!
still need to get the "your position" marker in there
also maybe render the pins on the watch so I can do them in colour
(but, again, code space, my eternal enemy)
Could the Bobby backend not add the pins?
No, the problem is the size of the image.
That is a 2-bit image, and I've used all the bits to get antialiasing to work
To add more colour would make it a 4-bit image, which would double its memory usage
I don't have that much memory to spare
Oh I see
Which is why it's in greyscale on a colour watch
Yeah makes sense, but you could render a colour layer on top of the image
I could
as I suggeted above!
but again: code space
I'm already planning to render the "you are here" marker on the watch, I think, because it'd be nice to make that blue or something.
Yeah sorry that was me agreeing with you, not suggesting your idea back to you 😁
I may also end up making the map not be full width
every pixel counts
actually this isn't true, every fourth pixel counts
the other three would be padding anyway
I might also see how much code space saving I can get by simplifying the image manager so it can only hold one image at a time
it's not like I have the memory for lots of images anyway
(I can handle two, if the conversation is otherwise short)
a different concept
this is so precarious that the 'report conversation' screen now crashes the app.
although once it sort of worked but the loading animation failed to load
bah
maybe this is infeasible with the amount of memory I have
honestly any new Bobby features are probably infeasible with the amount of memory I have
well I've pushed a branch for posterity
but I'm not sure this is worth pursuing.
maybe the Core Time 2 will have a giant pile of memory
time to rewrite with pebble.js to not need to have any additional watch-side code
hm.
(she says, and then runs off to build an overcomplicated solution to the problem)
can't wait for the results of that
Is that the sound of a 2am bedtime approaching
Sleep is overrated
have another map
aand reset the watch again
the frequency with which I crash the entire OS is annoyingly high.
indeed, 'y u no know why rebooted?'
that is a quite good looking map, and arguably better than my car manages to render on its 24bpp instrument cluster
[21:17:05] malloc.c:16> Out of memory! Need to allocate 389 bytes; 436 bytes free.
[21:17:05] pressure.c:57> Memory emergency! Trying to free memory.
[21:17:05] pressure.c:70> Calling memory pressure callback 0x2001e695 with priority 0
[21:17:05] image_manager.c:253> Memory pressure! Destroying the oldest image.
[21:17:05] pressure.c:72> Freed some memory!
[21:17:05] malloc.c:27> Freed 3708 bytes, heap size is now 4144. Retrying allocation of 389 bytes.
I seem to be losing several thousand bytes somewhere, though
should probably figure out where they're going
possibly related: errors about PNG decoding when no PNG decoding should be taking place at all
living on the edge
well now (almost) all of the allocations go through this system
so if an alarm goes off when the map is onscreen, it unloads the map to show the alarm instead of crashing
this is still not a great place to be though
[22:25:43] gpath.c:543> Unable to allocate memory for GPath call
[22:25:43] gpath.c:543> Unable to allocate memory for GPath call
[22:25:43] gpath.c:543> Unable to allocate memory for GPath call
[22:25:43] gpath.c:543> Unable to allocate memory for GPath call
[22:25:43] gpath.c:543> Unable to allocate memory for GPath call
[22:25:43] gpath.c:543> Unable to allocate memory for GPath call
well, all the ones I can control, anyway.
I think my other take is that all bobby development is canceled because it's just not possible to fit anything into the available space.
this is pretty much exactly what i'm trying to do -- my goal is to use as light of a touch as possible
it would also be nice if any of the development tooling worked at all
apparently I can save 7k by deleting all my logging
that's a decent chunk.
of course now I have no logging.
I just installed Bobby on my Pebble time steel. I set a reminder but I don't get a notification when the reminder is due. Is there something I need to do to get the notification?
and there goes the entire system again for some reason.
Reminders are set as timeline pins, with an attached notification. Aside from waiting long enough for it to sync (which it will warn you about), and not having notifications disabled or anything, reminders shouldn't need anything extra.
i vaguely remember encountering this issue with TimeStyle too -- maybe it could be worth controlling whether or not logging is enabled with a preprocessor directive? 🤔
none of it matters if everything I do is going to cause random system resets with no predictability
this functionally kills the project.
ah shit
Is it worth removing support for POI if it allows development to continue? Maybe limit that feature to watches with the memory to use it?
the crashing all the time is independent of the POIs. ish. who knows.
between a) being out of memory, and therefore unable to add any more code to the app, and also b) everything just crashing all the time because Pebble, ongoing work is discouraging.
Yeah that's fair. Well I just ordered a pebble time steel I found on eBay. I've done a bit of Dev on esp32s, though nothing with a screen. Any recommendations on where I could be useful for Dev?
wow, colour.
This is all bonkers in the best way possible.
It's really impressive to me how Bobby has achieved the-thing-that-Siri-And-Alexa-Were-Marketed-As while none of the major players offer anything like it
i just asked several follow up questions about this week's weather and it got them all
I don't understand Google Maps' marker layering logic, if indeed there is any logic
I have discovered that the flaw in my 'stick a pixel in to figure out where the user is located' plan is that, if a marker happens to render above that, the user location pixel is no longer visible
apparently this is b/35819311, which has been open for over fifteen years.
ugh
one gets the general impression that static maps are basically unmaintained.
I also wonder what horrifying thing happened to the text here
oh I seeee
ugh
everything has consequences
okay, fixed wild text rendering problems
once again, it was caused by antialiasing
incidentally, for comparison, this is an image directly from Google
and this is what it looks like on the pebble
that is really well done
I suppose in principle I could stamp the google logo back in on the watch side and thus have it in colour
though that would cost more memory, and still be an awkward approximation, so pass.
also involved in this: the world's most half-arsed pbi encoder
okay, on iOS I'm being getting invalid token errors
that's exciting
what are these tokens the iOS app is giving me that aren't real
it appears to just be making them up, they don't exist anywhere
ughhhhhhh
it is, it's just making the token up
there's no way this can work
what are you doing, ios
the answer to what it's doing is: if you ever install it from the appstore, it gets a real timeline token. if you then sideload it, it removes the locker entry (and incidentally invalidates the associated timeline token), but continues to use that cached timeline token forever
fucking pebble apps.
screenshot on a real black and white device
I guess I should make the 'you are here' dot black, it doesn't stand out at all in the current grey
sure, that'll do.
hm, I was going to use the running pony as a loading animation, but I don't think I have the memory for it in this context
guess I'll just have the pulsing dots
"but I don't have the memory for it" is an annoyingly common sentiment.
in most contexts these images don't cost me all that much memory because I just throw them away if I need the space
but I can't do that for the loading animation for the image itself
and I crashed my watch again
why is the watch crashing
completely impossible to debug, I will never know
now you get a nice icon when we throw an image out due to low memory.
fragmentation appears
[03:46:55] malloc.c:32> Out of memory! Need to allocate 3616 bytes; 3936 bytes free.
[03:46:55] pressure.c:70> Memory emergency! Trying to free memory.
[03:46:55] malloc.c:37> Failed to allocate memory: couldn't free enough heap.
[03:46:55] ault_handling.c:97> App fault! {1d272bb4-cf00-4e3e-a7f3-7394309e0341} PC: 0x80074c0 LR: 0x80a5b15
Program Counter (PC) : 0x80074c0 ???
Link Register (LR) : 0x80a5b15 ???
maybe I should just statically allocate one image worth of space so I never have to worry about being able to allocate 3600 bytes in one go
of course, this means that you are always paying this cost.
I wonder how much memory you could squeeze out by doing stuff like packed structs
Possibly a negative amount, because packed struts generally require additional code to access their values
There are kilobytes disappearing somewhere I can't immediately identify, so evidently there is room for improvement
But I'm no longer motivated to chase it
Things act very weird in the low memory state
Like the dictation UI gets stuck on a full progress bar
I guess I could still pull it off if I make it suck
Shrink from full width, 1 bit only
That's still 1500 bytes for a map
But that's better than 3600
meh
😦
I'd rather have Bobby and no map than no Bobby and no map. Maybe take a break from this feature and work on other aspects of the code?
I guess what I'm suggesting is do what you need to so you don't burn out
Well I wasn't particularly working on anything else anyway
Unless people have interesting suggestions it's basically a finished product
fair enough, just checking
The maps did look pretty good n watches aside from the part where the app crashed. Or the watch crashed.
I am sad I can't ship them; I think they make the POI features much more useful
in vector_layer.c, your vector_layer_destroy method doesn't look like it's freeing the VectorLayerData.GDrawCommandImage pointer, is it taken care of somewhere else?
Yes, whatever created the image still owns it
train schedules would be super neat, though i realize you already made the caltrain app for that
Train schedules would be cool
Better transit information in general would be nice
I tried this once but I was never able to get it to behave well
That's all server-side work so it's a plausible thing to dig into.
IIRC the problem is transit data is either you have to pay for it or deal with every transit agency's weird individual APIs
Bobby pays for many things; as long as the pricing is reasonable it's fine.
And ideally pay as you go
does google maps expose train schedules programmatically?
I don't think so.
alas
I used Here before, which does expose information
Original Bobby had features that post-Google Bobby still lacks:
- transit information and routing
- stock prices and information
- smart home controls
- pebble health support
Removed variously because they were terrible or impossible
The Hue stuff I'm sad about, that worked well but a security change broke it
alas it seems HERE doesn't support japanese train schedules (admittedly they are probably one of the most complex ones to deal with)
oh those seem neat
yeah too bad about the smart home stuff, that's such a killer app for voice assistants
Variously:
- the transit information was never presented usefully
- there is no legitimate source for stock market data
- Hue broke my thing, and Home Assistant is just not the experience I want to offer
- health info was underbaked and not worth the cost of including the support
makes sense, most health queries would probably be something like "how many steps did i take today", which doesn't seem particularly useful
Particularly not when it's one buttonpress away from the watchface anyway
One feature I personally would appreciate - synchronising reminders to the Google Tasks calendar; or, alternatively, a separate "task" reminder that explicitly does this
Setting reminders requires that you know that at a given future time, you will be wearing your watch and be conscious to acknowledge it (or, have notifications set to never timeout, and be consistently diligent about checking through them)
I find that tricky to keep up consistently. With tasks/reminders I set via Google Assistant, I can rely on the notification staying in my phone's drawer and/or in my calendar until dismissed, snoozed, or marked complete, but reminders set via Bobby are quite ephemeral 😅
Having tried to interact with G's reminders (before it became Tasks) programmatically in the past I know it's painful. I can only hope that Tasks is better; but one obvious roadblock is that the Pebble app does not see the Google Tasks "calendar" as a calendar that could be synchronised...
That's fair. I don't know how interested I am in digging into it, though - at the moment Bobby has no possible way to do any of this because it's just JavaScript on your phone, so it's a big lift.
But timeline reminders are pretty meh, I feel.
They are the Pebble Thing
Mmm. One thing I had considered was extending Timeline via a third-party "also copy any custom pins to a calendar" task, but the (publicly visible, at least) API does not allow pulling, just pushing.
I reckon just that alone would alleviate my user story
Technically the pulling API is just as public as the pushing one if you can get a bearer token
Just a case of getting the token and capturing the API call, right
pypkjs has an implementation (that polls every ten seconds or something; please don't do that)
It is quite simple: https://github.com/pebble/pypkjs/blob/master/pypkjs/timeline/websync.py
I realise this is quicky getting out of scope of this thread; but you're the right person to ask, so:
Can I create a JS-only app that could make these (authenticated) API calls via the phone app on some cadence/trigger?
I'm also perfectly happy with a "just for me and anyone who cares enough to capture their auth token" solution, but releasing it on the store would be pretty sick
There's no good way to run periodically
Nothing stops you other than that, I think.
(you can set wake-up timers, but they actually launch the app on the watch and so are disruptive)
Unfortunate 😊
The phone JS context otherwise has access to the user's token?
Not the correct one; they'd have to extract it and you'd need to make it configurable
I misread your message again, I think
Oh well
Hueh; either way I think that puts us firmly in the realm of "off-store solution dressed up as well as it can be" if I want to have it shareable. Thanks for saving me some RnD time 😛
personal opinion: daytrading stocks is like gambling for the vast majority of people, who have neither the experience nor the knowledge to do it profitably. so easy, non-expert onroads to frequently buying/selling stocks (like keeping track of price fluctuations) are a trap. it's an anti-feature....not that people realize that before they lose most of the money they put in...
on the topic of tasks, I'd prefer a solution that hooks into android's task system, rather than the google backend. there are people who keep tasks in other backends (caldav/nextcloud/outlook/whatever), that are usually left out when solutions focus on google services
😦
I think the biggest thing would be having Bobby talk back to you on the new Core watches but obviously that'd have to wait until they come out and the implementation for the speakers is known
i'd be more than happy with the watch not talking to me
do u actually want that, or is it just a thing voice assistants are supposed to do?
I would love to see l10n and text size settings applying to bobby, which I don't think it does right now?
I would also love more integrations with things like home assistant, but that seems impossible
I kind of want it, it can be convenient when I'm on the move
Obviously it should have a toggle in Bobby settings if it does materialize
but like if I'm driving or bicycling, stopping to read about Gavrilo Princip is unsafe, you know?
better to hear it be spoken aloud
how do you operate bobby if you are driving or cycling
that seems concerning enough for either
quick launch
you still need to click a button
Pressing physical buttons is pretty feasible
I'm pretty excited to make it talk, but only if i don't have to pay the memory cost for the audio
Hopefully I can just send it some audio from PebbleKit JS.
I don't day trade stocks, but I do get paid in them, and so have a significant interest. Also I enjoy pointing and laughing when Tesla goes down (which sadly it does not do very much).
poi map that no longer exists should display the compass direction in your current position
I found a reason for compass in bobby
I have come to the conclusion that I could put the maps back in, but it would be the last feature
In general there is space for about one more feature
I don't think it's the correct last feature
After that all new features will be Core Time 2 exclusive
(because 128k of memory is much more generous)
(or maybe someone will get XIP working and it'll stop mattering)
Localisation is probably a good idea
you mean l10n?
I'll write whole words if I want to
It's actually easier when using swipe typing
Internationalisation is, too
l10n and i17n are the least readable shortcuts
you lost a letter there
god damn it
kubernetes isn't even that long, I'm not sure why k8s is neccesary
k8s is just stupid
ok, I hate that more
saving 3 sylabbles is not worth kates
Also it's easier to explain than the pronunciation of Kubernetes
(ku-ber-net-ease? ku-ber-neets?)
(it's the former)
I have heard so many pronunciations
The real question is how you pronounce kubectl
ku ber nay tees is my fave because it's just mad
https://www.youtube.com/watch?v=0w6kXdHXxAA let SUSE do it
Kubernetes - Parody of Barracuda by Heart
Parody Lyrics by Jeff Price
(Lyrics support team Rick Ashford, Tony Oros, Roger Moore and Russ Dastrup)
Vocals - Lisa Giacoletto
Drums - Jeff Price (SUSE)
Guitar - Roger Moore (SUSE)
Bass Guitar - Sean Rickerd (SUSE)
(Tony Oros stand in in the video)
Studio - Man Versus Music in Salt Lake City, Uta...
(koob cuttle? cube kuttle? koob control? cube control?)
cube c-t-l is how i'd pronounce it
(there is no consensus)
cube see tea el
There is consensus that it's not that
lmao
that's disappointing
i pronounce it "kuh-beck-tull"
Alas
this isn't a joke btw i've had coworkers get mad at me for this
As they should
Actually I have heard that but generally as a deliberately contrarian option
Sequel vs S-Q-L, cube control vs koob cuttle
The IT version of "potato, po-tah-to"
But it's been over five years now since I worked on Kubernetes so maybe everyone changed their mind
In retrospect a career mistake, they were giving me multiple trophies a year
https://www.cncf.io/announcements/2019/11/20/cloud-native-computing-foundation-announces-2019-community-awards-winners/ IIRC the embed for this has a really terrible photo of me in it
Yup
(weirdly, it's not in the actual article)
none of the people in the picture look happy to be there
I think it's because we were all just presented a log
is that what that is
They told us we were getting this award in advance and comped our tickets
Then dragged us on stage and gave us a log in a bucket
Chop wood, carry water
I can't believe y'all were not eternally thankful to cncf for the log and bucket
severance tier award
That's odd
I have many feelings on the CNCF and by extension the Linux Foundation
They aren't positive
Also they drilled a hole in bottom of the bucket so they could bolt the wood to it
Which feels like a message of some sort
Not carrying much water with that bucket
chop wood, carry water...?
chop no wood, carry no water
Google's prizes were better.
It would also be slightly difficult to chop that wood
my dad got awarded a chunk of coal encased in a resin cube once
for his work at the refinery he works at
You can pull the cube apart, it's in a few pieces
that is a cool cube
The G runs straight through vertically and the rest stack on top
Makes great sounds while you do it too
That's cool
Absurd degree of resonance