u/ShimbaBumba

▲ 10 r/pebble

Spring 2026 contest - is it just me, or is the late-entry window kinda rough?

Totally my fault for misreading the rules, but I only realized today that hearts have been stacking up since day one. Submitted my face on April 19th, which leaves me ~1 day to compete against apps that had a full week.

Is that really how it works, or am I missing something? Not salty, had a blast building mine either way. Just curious - anyone else in the same boat? How are you feeling about the format?

reddit.com
u/ShimbaBumba — 1 day ago
🔥 Hot ▲ 89 r/pebble

I rewrote my Garmin watch face in pure C for Pebble Time 2 - meet Simple Pixels

Hey pebble community! Really excited to share this one. I've been working on this watch face for ages and finally rewrote it from scratch in C for Pebble. The original lived on Garmin devices for years, and porting it over to Pebble has been a wild ride.

What it does

It's a minimalist pixel-style face, but I didn't want just another "time + steps" face. I tried to make every aspect configurable - all the metrics Pebble exposes, tons of settings to tweak it your way, weather, a second timezone, and even a compass (which I sadly couldn't test - more on that below). There's also a small animation on time and seconds change that I'm really proud of.

Heads-up: Pebble Time 2 only (for now)

I know this will be a bummer for some of you, but I can't support the older black-and-white devices. The screen is just too small, icons and fonts end up looking rough, and I can't bring myself to ship it in a state I'm not happy with. Round watches are coming as soon as the SDK builds cleanly for them.

Good news: the source and all assets will be open. I'd love help adapting it to other devices - the code itself is genuinely simple to work with, but the icons and fonts are what eat all my time and energy. Any help there would mean a lot.

About me and how this got made

I figured some of you care about this kind of thing, so: I'm a software engineer with 10+ years of product experience across a bunch of languages. I love micro-optimizations and squeezing the most out of every solution. I started this the day Eric announced the new watches and preordered on day one - but like many of you, I'm still waiting for mine to arrive. So everything was tested in the emulator, and there will probably be bugs I couldn't catch.

Normally I test my projects on real hardware across a few charge cycles to see how they behave in real conditions. Couldn't do that here. The compass in particular had me really excited - dynamic icon + text updates - but I couldn't hook the emulator up to my phone to pipe real compass data through, so… fingers crossed. I also tried hard to optimize the 14×14 icons, but icon-to-font conversion quirks plus the lack of antialiasing on fonts kills the smooth edges on rounded shapes. My wife even jumped in to help, but there's only so much we could do before the contest deadline. All of this is on my list to polish.

The nerdy bit: I wrote my own layout library

This is probably the part I'm most proud of. Coming from Canvas, Garmin, and gamedev, I really didn't want to hand-align every element pixel by pixel. From day one I looked for something Flexbox-like - closer to how you lay things out in Figma. I found Clay, which ticked almost every box, but the binary alone ate half the available memory before I'd even placed a single element.

So I studied it and built my own alternative: Clite. Declarative layout, calculates positions for you, weighs under 1KB in memory with no layout loaded, and is fast. Here's what it looks like in practice:

c

CLITE(CLITE_ID("RightPanel"), {
  .sizing = {
    .width = halfWidth - DEVICE_CONFIG.infoBarWidth / 2,
    .heightRelative = 1
  },
  .layoutDirection = CLITE_TOP_TO_BOTTOM,
  .childGap = DEVICE_CONFIG.rightPanelGap,
  .childAlignment = {
    .x = CLITE_ALIGN_START,
    .y = CLITE_ALIGN_CENTER,
  },
}) {
  sensorView_render(/* ... */);

  CLITE(CLITE_ID("MinutesGroup"), {
    .sizing = { /* ... */ },
    .layoutDirection = CLITE_LEFT_TO_RIGHT,
    /* ... */
  }) {
    minutesView_render();
    /* nested children */
  }
}

I'll open-source Clite separately once I get a moment - I think it could be genuinely useful for anyone building Pebble UIs.

On AI usage

Since I know this matters to people: the core architecture and all optimizations are mine. But to hit the contest deadline in a shape I was happy with, I used AI the way serious big-tech teams use it - to generate boilerplate based on my own patterns, with me carefully reviewing every line for leaks and bugs. No regrets. It's the only way I made it to the deadline.

Happy to answer any questions! Would love your feedback, bug reports, and especially testing on real hardware once your watches arrive. 🙌

Link: https://apps.repebble.com/da0c714b6e2d434d92aa3ced

u/ShimbaBumba — 2 days ago