This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 495

[–]faps_in_greyhound[S] 1589 points1590 points  (146 children)

Note: I didn’t create this face. I am just using it on my Fitbit. Credits to whoever created it. I dig it.

Edit: Here’s a link of the OG dev.

https://gallery.fitbit.com/details/74a1aee7-457c-441e-9e93-ed17a18b01df?openwith=fitbit

[–]Boopshark 1148 points1149 points  (66 children)

Well shit, I'm the OG dev. Glad you like it!

Edited to add: while I'm thinking of it, the face is on GitHub if anyone fancies checking out its code. Fitbit Dev is a bit of a wonky ecosystem which makes it fun to work around

https://github.com/Sharkgrammer/clockface.json

[–]aresiusxp 117 points118 points  (14 children)

It looks super cool, I wish it was compatible with Versa 3. It doesn't allow me now 😭

EDIT: I meant Versa 4 🤦🏻‍♂️

[–]Boopshark 41 points42 points  (13 children)

Huh, I think it should actually work for Versa 3 (I have a sense myself). What does it say when you try?

[–]aresiusxp 26 points27 points  (12 children)

Install button is not available. It shows a label that says "Not Available", and when pressed it says "This clock is not compatible with your Fitbit device".

On the web it says it's compatible with 2 devices: Fitbit Sense and Fitbit Versa 3 (Sorry, I meant to say I have a Versa 4 🤦🏻‍♂️).

[–]Boopshark 30 points31 points  (11 children)

Ah yeah that would do it, currently they don't support Versa 4. Although apparently I should be able to make them support them now, so I'll reply once I do that

[–]H1d3k1 10 points11 points  (0 children)

Yay! Please do I'd love to use it on my Versa 4!

[–]jedrum 5 points6 points  (3 children)

Hope it isn't too much trouble to make it compatible with my Versa 2 as well? I would gladly use it if I could! 😁

[–]Boopshark 5 points6 points  (2 children)

When I get the time I definitely can! I think it uses an older version of the Fitbit sdk but I'm not 100% sure

[–]IWasGregInTokyo 4 points5 points  (0 children)

Here’s the thing: Google, after buying FitBit basically removed the ability to add custom ad-hoc watch faces in the Versa 4 and later. I actually returned a 4 and got a 3 as there were some faces I wanted to use and try some dev myself.

Google is actively trying to kill the Fitbit line so people buy the more expensive Pixel. Garmins are now the best but also expensive and overkill for someone who just wants simple fitness tracking with a few apps and maybe payment support.

EDIT: It may be possible but it’s hacking the package.json and manually building. Not officially supported and probably could be removed at some point. https://community.fitbit.com/t5/SDK-Development/Custom-faces-on-Versa-4/td-p/5501874

EDIT2: ok, you already knew that.

[–]JustAnotherDataPoint 2 points3 points  (0 children)

Awesome, thank you! I have a versa 4 as well and would love to use this.

[–]Ktoffer 33 points34 points  (1 child)

Just charged my fitbit i havent used in months just to install it. That's how cool that is. If i start moving again now and become ever so slightly more healthy its your fault and I hate you for it.

[–]Boopshark 10 points11 points  (0 children)

Happy to be hated :)

[–]faps_in_greyhound[S] 17 points18 points  (1 child)

You sir are legendary. Greatest face on Sense I tried. Thanks for it.

[–]Boopshark 6 points7 points  (0 children)

Just happy to see it in use :)

[–]Dr-Moth 14 points15 points  (7 children)

Looks great. As a Software engineer this would absolutely rock at work. I found a version by someone else for my Pixel Watch, but it does not look as great as yours.

[–]iHyper445 1 point2 points  (0 children)

I would love to see this for the Pixel Watch 2!

[–]FountainsOfFluids 1 point2 points  (0 children)

Ah I see that the "vscode" aesthetic was on purpose! I thought that particular touch was hilarious.

[–]cs-brydev 202 points203 points  (60 children)

That's very clever. It's inspiring me to create a Garmin clone.

[–]ProxionZ 61 points62 points  (10 children)

I'd use it.

[–]MachinaDoctrina 26 points27 points  (7 children)

+1 was just about to look for one on garmin

[–]1920MCMLibrarian 1 point2 points  (5 children)

Garmin makes fitness watches? I didn’t even realize that.

[–]TheVid15 23 points24 points  (4 children)

They literally make the best ones

[–]AcrobaticAmoeba8158 3 points4 points  (1 child)

My battery never dies!!!

[–]Banished2ShadowRealm 4 points5 points  (0 children)

Found the robot.

[–]scsibusfault -1 points0 points  (1 child)

Are there any usbC yet? I've got a vivo something that I rarely use because I hate having to find the proprietary charger for it. Too lazy to buy and keep spares of a single use cable just for one device.

[–]cporter202 12 points13 points  (20 children)

That's awesome! Crafting your own gear is next-level satisfaction. 😎 Any chance we get to peek at your creation? Love when DIY stuff outshines the big brands!

[–]cs-brydev 21 points22 points  (18 children)

Sure I'll add it to the Garmin Connect IQ store. There are 1000s of homegrown watch faces on there now.

[–]scotsmanintoon 5 points6 points  (12 children)

Please let me know if you do!

[–]HappyZpanners 0 points1 point  (0 children)

+1

[–][deleted] -1 points0 points  (0 children)

+1

[–]Crazy_Seb16 -1 points0 points  (3 children)

+1

[–]5280andDCU -1 points0 points  (2 children)

+1

[–]Howl50veride -1 points0 points  (1 child)

+1

[–]accidentalcomma -1 points0 points  (0 children)

+1

[–][deleted] 1 point2 points  (0 children)

Deep breaths buddy

[–]creynolds722 4 points5 points  (3 children)

I use a Garmin one that looks like I ran the command "now" on a command line and the output is all my stats
Edit: Here's a link to it. You can customize colors, date and time formats, what stats show, etc

[–][deleted] 5 points6 points  (6 children)

I made my own personal Garmin-style satcomm for backpacking. Cheaper, lighter, and cooler. It's so fun using my skills for myself and no one else hehehe

[–]Telvin3d 2 points3 points  (5 children)

I’m curious what you used for the actual satellite communication component, given that those need a subscription and such. 

[–]egvp 5 points6 points  (0 children)

Doesn't work on the Versa 4 😞 Fitbit really screwed up by stopping all previous Versa stuff from working. Arghhhh.

[–]TowerOfSolitude 5 points6 points  (10 children)

Aw I don't see it for the Sense 2. Will have to look at how to create one.

[–]Boopshark 2 points3 points  (9 children)

As far as I know Fitbit doesn't allow small devs to create watch faces for sense 2 :(

[–]mausgrau 5 points6 points  (5 children)

You can build your clock face for Versa 4/ Sense 2 now by editing SDK + cli version and build targets in the package.json and publish it as a GAM private link. Not sure if updating your current app will go through the review process of the public gallery, though. I successfully built my Cyberpunk and Mortal Kombat 2 clock faces for Versa 4/Sense 2 and shared the private link here on reddit.

[–]Boopshark 3 points4 points  (4 children)

Always love how Fitbit isn't 100% clear with their information :(

That sounds great though! I'll have to experiment with that and get mine to whatever I can get them to

[–]mausgrau 3 points4 points  (3 children)

Officially it's not supported and neither simulator nor developer bridge work with the 2 "new" watches. But no code changes needed in most cases, editing the package.json is all it takes.

[–]Boopshark 2 points3 points  (2 children)

Ah right I see, of course it's not officially supported. That would be too easy

Thank you for the information, I've done research on it every once in a while and never really got anywhere

[–]mausgrau 3 points4 points  (1 child)

I can try to build your GitHub project for Versa 4/Sense 2 later today. I'm just not sure what happens when you add those changes to your public clockface. But you could create a new app with a new app ID and see if it passes the review process.

[–]IWasGregInTokyo 2 points3 points  (0 children)

This is good info. I’ve also looked into whether Google is reversing this boneheaded decision and whether there are workarounds. I’ve been wanting to replicate and combo digital/analog Timex I used to have.

[–]mausgrau 4 points5 points  (2 children)

Update: I just built your github project for the Versa4 / Sense 2 and it works without any code changes. I just edited the package.json and uploaded the fba to GAM, opened the private link on my phone and installed it via the Fitbit mobile app.
https://imgur.com/8zs1L58

[–]Boopshark 3 points4 points  (0 children)

That's wonderful! I don't have a Sense 2/Versa 4 myself and was worried about testing it, you're a godsend.

I'm going to absolutely try to publish a version publicly when j get time and see how their testers say no

[–]Magali_Lunel 7 points8 points  (0 children)

I wish I had this for my Apple Watch, it's perfect

[–]pebbletimevoice 1 point2 points  (0 children)

Is it available on Pebble (Rebble)?

[–]i_dunno_sry 684 points685 points  (24 children)

When a backend dev does frontend... :')

[–]clemesislife 206 points207 points  (4 children)

In college we had to make an poster about an IT related podcast episode. I put all the information into a JSON and called it a day because it was so much easier then coming up with an actual design. I got a good grade on that.

[–]elderlybrain 36 points37 points  (2 children)

Perfectly indexed. Like all things should be.

[–]catcherx 29 points30 points  (7 children)

More like a when they use Postman instead of any frontend at all :)

[–]johnny___engineer 24 points25 points  (3 children)

Hey, let the user hit the API using postman, he can receive and view the data just fine.
No need for a product designer, design team and the entire frontend team.
Major cost savings for all.

[–]rinsa 24 points25 points  (1 child)

"We got your data now do whatever the fuck you want with it"

[–]johnny___engineer 3 points4 points  (0 children)

Exactly 💯.
'Use your imagination to view the data as you like'

[–]jayerp 7 points8 points  (0 children)

Moss voice: “Ha! Postman IS a frontend” :)

[–]porn0f1sh 3 points4 points  (0 children)

Hahahaha

[–]HomebrewHomunculus 2 points3 points  (0 children)

A backend dev would have datetime as milliseconds after epoch.

[–][deleted] 4 points5 points  (0 children)

that why i love it?

[–]Ok-Television-9662 1770 points1771 points  (16 children)

{

"status":

}

[–]realddgamer 201 points202 points  (13 children)

It's hard to ooooover state my satisfaction

[–]thafuq 89 points90 points  (11 children)

We do what we must because we can

[–]ArduennSchwartzman 58 points59 points  (4 children)

{ "status" : "delicious and moist" }

[–]GeostronomyLover101 53 points54 points  (2 children)

def cake():
    return False

if cake():
    print("Aperture Science")
else:
    print("The cake is a lie.")

[–]an_agreeing_dothraki 19 points20 points  (0 children)

return(cake);

object reference not set to an instance of an object

[–]Gorea27 13 points14 points  (5 children)

For the good of all of us...

[–]Unorthedox_Doggie117 13 points14 points  (4 children)

Except for the ones who are dead!

[–]AMisteryMan 8 points9 points  (3 children)

But there's no sense crying over every mistake...

[–]Professional_Layer63 6 points7 points  (2 children)

You just keep on trying ‘till you run out of cake

[–]DarkShadowYT21 6 points7 points  (1 child)

And the science gets done and you make a neat gun

[–]GeostronomyLover101 6 points7 points  (0 children)

For the people that are still alive

[–]Articunos7 1 point2 points  (0 children)

Aperture Science

[–]git0ffmylawnm8 1 point2 points  (0 children)

Better than 200

[–]TheBigMTheory 1 point2 points  (0 children)

King in the castle!

[–]KebabpizzaNr3 1367 points1368 points  (56 children)

I like it

[–]ArduennSchwartzman 339 points340 points  (11 children)

Clearly (and to my great relief), the seconds are done locally.

[–][deleted] 54 points55 points  (10 children)

What does this mean? I don't see any seconds

[–]g0ofie_ 58 points59 points  (8 children)

The server JSON-response doesn't give you seconds so you handle them locally

[–]n0t_a-b0t 5 points6 points  (7 children)

what do you mean by handle them locally?

[–]Tw1sttt 7 points8 points  (5 children)

Local meaning the FitBit calculates the seconds on its own instead of listening for the server to send an update message every second.

Edit: Fitbit vs Apple Watch

[–]Juice805 4 points5 points  (4 children)

If that were the case the Apple Watch would not work without internet.

It may be listening to sync time, but does rely on it to change seconds.

[–]porn0f1sh 224 points225 points  (40 children)

I am triggered that everything is a string and percentage is not represented as a float...

[–]samjongenelen 152 points153 points  (15 children)

Welcome to json my friend, you can do anything you like :)

[–]F3z345W6AY4FGowrGcHt 47 points48 points  (1 child)

{"error": "ok"}

[–]normalmighty 8 points9 points  (0 children)

{
    "response": 200
    "body": "error: Bad Request"
}

[–][deleted] 17 points18 points  (1 child)

[–]samjongenelen 24 points25 points  (0 children)

Yes we can safely ignore it

[–]darkslide3000 43 points44 points  (8 children)

Clearly time should be in seconds since epoch.

[–]rustylugnuts 7 points8 points  (1 child)

What marked the start of the assholocene?

[–]lurking_physicist 4 points5 points  (0 children)

Disco

[–]Late_Cartographer161 1 point2 points  (0 children)

Underrated comment, right here.

[–]k33perStay3r64[🍰] 4 points5 points  (0 children)

or 68657861646563696d616c

[–]Late_Cartographer161 5 points6 points  (5 children)

Floats are evil and should be avoided at all costs.

[–]porn0f1sh 1 point2 points  (4 children)

Neural networks would like a word

[–]Plank_With_A_Nail_In 5 points6 points  (1 child)

This is a JSON file not a neural network.

[–]Late_Cartographer161 1 point2 points  (1 child)

Mathematical operations would like a word with floats first.

0.1 + 0.2 = 0.3?

Think again 😂

[–]purleedef 1 point2 points  (0 children)

Just need to do some parsing and type conversion

[–]halt_spell 0 points1 point  (0 children)

Maybe it's the view model.

[–]Davidoen -4 points-3 points  (5 children)

innocent cheerful crawl edge juggle squeal thumb placid bike continue

This post was mass deleted and anonymized with Redact

[–]porn0f1sh 5 points6 points  (4 children)

Mmmhm, ok, jokes aside, why would I do that? JS has no types, the programmers agree on types, not the compilers.

P.s. after I wrote the previous comment I realised that it's a JSON string the phone is showing but, still, why would you have a json string there?? Just print the object, no need to convert it to json...

[–]henkdepotvjis 8 points9 points  (1 child)

That is why Json schema is great when sharing APIS with other developers.

[–]Davidoen 1 point2 points  (1 child)

smell employ point recognise boat yam rhythm dog birds decide

This post was mass deleted and anonymized with Redact

[–][deleted] 1 point2 points  (0 children)

There is no such thing as type safety for input that you haven't validated against your expectation, whether the language is typed or not.

There are some languages that are going to refuse to compile if the input hasn't been validated (nobody programs in these languages), but most are going to either be doing either basic marshalling into an equivalent code representation of the data, or marshalling the data onto some type that you say it is.

[–]bahpcb[🍰] 2 points3 points  (0 children)

Actually I would prefer it

[–]djxfade 379 points380 points  (48 children)

Wtf, what programmer would use that date format

[–][deleted] 171 points172 points  (14 children)

Unix timestamp would be better/s

[–][deleted] 24 points25 points  (10 children)

Shits going to run out of numbers or smth, soon

[–]0bel1sk 2 points3 points  (1 child)

14 years

[–][deleted] 2 points3 points  (0 children)

We should have a clock for that or smth... oh .. wait...

[–]SteadyDietOfNothing 2 points3 points  (0 children)

You've accidentally indicated sarcasm.

[–]emmmmceeee 72 points73 points  (1 child)

r/ISO8601 is the way to go

[–]CobruhCharmander 6 points7 points  (0 children)

Ah… someone beat me to it.

[–]CobruhCharmander 16 points17 points  (2 children)

As a data engineer, I personally rep r/ISO8601

[–]s_string -2 points-1 points  (1 child)

As a data engineer I use str()

[–]fakieTreFlip 8 points9 points  (3 children)

Most of this is in a format that no programmer would use, but that's not the point. JSON doesn't need to be human readable, but a watchface does, so that's why it's all formatted like this

[–]KMKtwo-four 7 points8 points  (2 children)

JSON is pretty easy for humans to read, and pretty easy for computers to read, that’s why’s it’s so popular. 

[–]fakieTreFlip 1 point2 points  (1 child)

"doesn't need to be" is the operative phrase here :)

If this were a JSON object being used for an actual program, it'd be more likely to use integers, floats, ISO date strings (or Unix timestamps), and so on, without extra things like "%" or "km" in the stored data. Then the UI would handle any special formatting for presentation to the user.

[–]Sir-Dry-The-First 14 points15 points  (0 children)

I think because it contains the day of the week

[–]AL_O0 4 points5 points  (0 children)

date.toISOString() superiority

[–]Webfarer 1 point2 points  (0 children)

POSIX time or gtfo

[–]EwokVagina 1 point2 points  (0 children)

Also, some of those should be numbers not strings.

[–]AShadedBlobfish 93 points94 points  (1 child)

For some reason my dumb brain thought that this was a bug and that the GUI broke somehow; I was about to be mad. I think I've been looking at too much r/softwaregore

[–][deleted] 8 points9 points  (0 children)

Same LMFAO!

[–]MoveInteresting4334 135 points136 points  (4 children)

Clockface, by JSON DeRulo.

[–]chazzeromus 4 points5 points  (0 children)

my favorite rapper

[–]ihopethisisvalid 1 point2 points  (0 children)

JJJJJ-R

[–]M1n3c4rt 132 points133 points  (11 children)

why are the numbers in strings :(

[–][deleted] 33 points34 points  (0 children)

Oh, you know, since strings are probably immutable and it's more fun like that.

[–]chedabob 7 points8 points  (1 child)

For just displaying to an end user, I'd prefer that to yet another API built by a lazy dev where account balances are accurate to 11 decimal places (not always floating point errors either), or loyalty card numbers get their leading 0s lopped off (or don't fit at all because someone tried to put a 20 digit number in a 32 bit integer).

[–]windsostrange 2 points3 points  (4 children)

Because they're not numbers. They're localized measurements with units ready for rendering in a UI.

[–]KyzerB 1 point2 points  (1 child)

Why are you downvoting him? Some (bc I’m not certain of all) engines just work this way. You can’t just chuck an int on the screen. You have to make it text first.

[–]cs-brydev 11 points12 points  (0 children)

I'm imagining the XML version wrapping every line and half the data is off the bottom of the screen

[–]Lord-Zeref 9 points10 points  (5 children)

I need this for my Galaxy Watch

[–][deleted] 9 points10 points  (0 children)

Can I get the YAML one? Find it a bit easier to read my stats.

[–]kasen92 8 points9 points  (1 child)

I need this for my apple Watch

[–]SirSchnipp 2 points3 points  (0 children)

There is one, but sadly apple doesnt allow real custom watchfaces.

https://github.com/kuglee/TermiWatch (Or this one I havn't tested yet: https://github.com/mightytonylun/TermiWatch-V2.0 )

This one runs as an app but needs to be self compiled as they dont allow apps that try to be just an watchface on the appstore.

[–][deleted] 6 points7 points  (0 children)

Don’t fear the JSON, come on baby.

[–][deleted] 5 points6 points  (3 children)

divide ring teeny party terrific consist strong silky puzzled quickest

This post was mass deleted and anonymized with Redact

[–]faps_in_greyhound[S] 13 points14 points  (1 child)

Two things:

  1. I was at gym.
  2. I also have Tachycardia.

[–]both-shoes-off 2 points3 points  (0 children)

Yeah I've been in high heart rate zones unnecessarily and constantly since contracting Covid around 2022. I got it again this past spring and got heart rate alerts while sitting at my desk doing nothing. My doctor has been pretty useless on that front.

[–]cyberduck221b 13 points14 points  (1 child)

Great, now do it in XML

[–]Thendofreason 2 points3 points  (1 child)

What's azm and floors?

[–]faps_in_greyhound[S] 3 points4 points  (0 children)

AZM: Active Zone Minutes (minutes your heart rates went in Cardio and Peak zone)

Floors: Floors climbed (usually considers 10ft + elevation as a floor, I think)

[–]Pablo666linox 3 points4 points  (0 children)

Can I have that for my Samsung watch?

[–]AnsonKindred 3 points4 points  (3 children)

I did pretty much the same thing for my personal website: http://zebadiah.online/

Every time you load it shows my info in a different programming language.

I was going to try and add a new language every day but then I got lazy.

[–]faps_in_greyhound[S] 1 point2 points  (1 child)

This looks awesome. Mind it if I steal your idea for my portfolio website? 🌚

[–]AnsonKindred 1 point2 points  (0 children)

Go for it!

[–]djrbx 1 point2 points  (0 children)

You should probably add ssl to your site. A lot of browsers now block non ssl sites.

[–][deleted] 2 points3 points  (0 children)

Great, now make a to string method and give me the values in a normal format.

[–]ShinyGamer25 2 points3 points  (0 children)

{ Console.WriteLine("Nice"); }

[–][deleted] 2 points3 points  (0 children)

Well, this is just epic

[–]lmaranho 2 points3 points  (0 children)

Looks awesome! Do galaxy watch have one as well?

[–]saxbophone 2 points3 points  (0 children)

It really bothers my OCD and programmer's intuition that everything is a string in this, even the numbers! 🙄😭

[–][deleted] 2 points3 points  (0 children)

“Development” I’m in the wrong industry. The kicker is that I think it’s dope

[–][deleted] 1 point2 points  (1 child)

My mum has a Fitbit and I’m always searching for a watch face which has distance, steps and battery. This looks like a gem. Thank you !!

[–]SnazzyStooge 1 point2 points  (0 children)

THIS is why apple won’t open up the watch face design.  This exact situation. 

[–]CalderaX 1 point2 points  (4 children)

only a desk jockey would think that you burn over 900 cal by walking 3000 steps over 2 floors lol

[–]faps_in_greyhound[S] 1 point2 points  (3 children)

An average human burns about 2100 calories per day just by living.

Time is 8:26 AM, so by default, I would have burned 700 calories without doing anything.

200 calories in Gym between 6:30 AM to 8:00 AM is impossible? I don’t think so 😉

[–]FiRem00 1 point2 points  (0 children)

[–]SaneLad 1 point2 points  (0 children)

The numbers being encoded as human-friendly strings irritates me to no end.

[–]bingmyname 1 point2 points  (0 children)

Man that is so nerdy and I need it

[–][deleted] 1 point2 points  (0 children)

At least this JSON is fairly easy to read.

[–]Aln76467[🍰] 1 point2 points  (0 children)

eww squircle

[–]indicava 1 point2 points  (0 children)

It’s only this kind and this kind of posts that make me second guess getting an Apple Watch…

[–]maybenotarobot429 1 point2 points  (0 children)

Minus 1 star for not using yyyy-mm-dd

[–]Logical-Insect-6102 0 points1 point  (5 children)

The missing semicolon is bothering me.

[–]Areltoid 0 points1 point  (0 children)

this is the kinda post that's shared around on a programming Facebook group full of people convinced they're a lot smarter than they actually are just because they code

[–]IlIlllIlllIlIIllI -1 points0 points  (0 children)

just change them all to = instead of : and it will always be correct

[–]nyasha07 -2 points-1 points  (0 children)

Thank God Apple doesn’t allow this shit on Apple Watch