frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

I hacked my clock to control my focus

https://www.paepper.com/blog/posts/how-i-hacked-my-clock-to-control-my-focus.md/
125•rcarmo•7mo ago

Comments

gnarlouse•7mo ago
This is neat. Low cost, built from stolen parts. 10/10 engineering.
sheepscreek•7mo ago
Indeed! Using dconf to achieve this is very impressive. Is there a KDE plasma equivalent to this?
baby_souffle•7mo ago
Came here to ask this.

Most plasma widgets use a config file so this should be possible.

winrid•7mo ago
I like to set timers. I use the taskbar timer in xfce to set it to say 30mins, and then I work on getting something done in that time. It works really well. Not sure if this has a common name.

This was really helpful when I redid the FastComments admin area, as that was a big slog of UI work that I quickly got tired of. This was before Claude :)

hug•7mo ago
Sounds a lot like the Pomodoro Technique.
winrid•7mo ago
I don't take breaks per se, which is a core part of that technique iirc.
dexwiz•7mo ago
I think the break can be a reflection and note taking period. Unfocus a bit, but not too far.
winrid•7mo ago
Interesting. I use the timer thing just for long running tasks I want to make progress on every day. Then I go work on other stuff.
inatreecrown2•7mo ago
is there something similar for macOS?
ajdude•7mo ago
This isn't quite the same thing, but I have my Mac set up to announce the time every 15 minutes. You can customize the voice, and the voice I'm using causes the computer to sing the time.

All of this is built into the OS, I think the settings are in the control center

hackermanve•7mo ago
I used this for something similar, and is very customisable

https://github.com/matryer/xbar

fitsumbelay•7mo ago
for MacOS bash, do:

` #!/bin/bash

# Set focus text from command line argument or prompt user if [ -z "$1" ]; then echo "What's your current focus?" read FOCUS else FOCUS="$1" fi

if [ -z "$FOCUS" ]; then echo -n "\033]0;$(date +'%b %d %H:%M')\007" else echo -n "\033]0;$(date +'%b %d %H:%M') Focus: $FOCUS\007" fi

echo "Focus set to: $FOCUS" `

for MaxOS zsh, uncomment `DISABLE_AUTO_TITLE="true"` in .zshrc and do:

` #!/bin/zsh

# Set focus text from command line argument or prompt user if [ -z "$1" ]; then echo "What's your current focus?" read FOCUS else FOCUS="$1" fi

if [ -z "$FOCUS" ]; then echo -n "\033]0;$(date +'%b %d %H:%M')\007" else echo -n "\033]0;$(date +'%b %d %H:%M') Focus: $FOCUS\007" fi

echo "Focus set to: $FOCUS" `

chthonicdaemon•7mo ago
macOS and iOS have a whole feature called Focus modes which allows you to choose a focus and do things based on this focus. Your current focus is shown in the menu bar.
inatreecrown2•7mo ago
Yeah but that is just a small icon, no text.
beala•7mo ago
A sticky note stuck to your monitor?
inatreecrown2•6mo ago
you are right, that would work as well!
brianpan•7mo ago
If the something you are asking about is scripting/modifying, that something might be Shortcuts (or the older Automator).

If the something you are asking about is a pre-built tool, I would think the menubar is the MacOS place to put a reminder and it looks like someone has built that: https://lifehacker.com/tech/one-thing-app-turns-your-macs-me...

inatreecrown2•6mo ago
"one-thing" app looks perfect. Thanks!
hallgrim•7mo ago
Check out swiftbar (see my other comment) https://github.com/swiftbar/SwiftBar
fitsumbelay•7mo ago
Very cool
Brajeshwar•7mo ago
A timer is one of the most underrated ways to stay focused.[1]

We have all been there where you are supposed to work on that boring but critical bug for the project, where a few other team members are waiting, but you end up booking a domain, building a landing page, and launching a waiting list. By dinner, as you are talking to potential alpha users in your community and start spreading the word, you realize you have not touched that bug.

Anyway, I like timers; the only complication in my Watch is a timer.[2] At my desk, I use a physical hourglass regularly. The physical hourglass helps me not be constrained by the Pomodoro-ish restrictions and work past the finish line.

For distractions (that seem important and sometimes are) while I'm on a specific task, I usually have my handy notebook, and I write them down quickly with a pen so I can return to them later. That helps me prevent launching ideas into landing pages.

Once you are good with a process/pattern, whatever tool you build/buy/use, as a timer in this case, helps your focus on your current situation.

1. https://brajeshwar.com/2023/timer/

2. https://brajeshwar.com/2024/watch-tiny-handy-computer/

RandomWorker•7mo ago
I love the idea of hourglass! Thanks for sharing I’ve ordered mine on Amazon today. It’s about a foot tall. This is also a great way to signal to other people in the office that I’m busy.
InfiniteLoup•6mo ago
>It’s about a foot tall. This is also a great way to signal to other people in the office that I’m busy.

Why do I now imagine a queue of colleagues standing restlessly at your desk, waiting for the hourglass to run out?

Brajeshwar•6mo ago
Yes, mine too is about a foot long. https://www.instagram.com/p/CkXmQWUpfKq/
xrhobo•6mo ago
I never thought of an actual hourglass but I do love the idea too.

Something almost ritualistic about it. I have to get one myself.

TimByte•7mo ago
There's something about a physical timer that creates a sense of presence digital ones just can't replicate
bound008•7mo ago
I built a simple SwiftUI/Swift Data app to do the same thing across my Apple Watch, iPhone, iPad and Desktop.

With the heavy lifting of SwiftUI/Swift Data, and iCloud providing automatic and private syncing, this is the cloc output for my project, (including widgets and all of the code and projects needed to target all of these platforms.)

-------------------------------------------------------------------------------

Language files blank comment code

-------------------------------------------------------------------------------

XML 13 0 0 579

Swift 19 131 142 548

JSON 4 0 0 115

YAML 1 7 0 43

-------------------------------------------------------------------------------

SUM: 37 138 142 1285

-------------------------------------------------------------------------------

If you live in the apple ecosystem and want to make a simple tool for yourself, you really should go ahead and do that.

It started as a desire to have a "focus" on my Apple Watch at all times, and in less than 10 hours, I have widgets, shortcuts (and Siri) integrations, and syncing across every apple platform (although I haven't yet tried it on tvOS).

I've thought about productizing it, and I might one day, but that would add orders of magnitude to the time of making this something that people should be asked to pay for.

And I'm not going to open source it, because it is ~500 loc, with no libraries plus a bunch of Xcode generated stuff.

rcarmo•7mo ago
You could post a gist of it, though. I’d love to do the same thing.
bound008•7mo ago
I might do that at some point... this is the main part of it, just a swift data model and one file of views. Plus a bunch of example code for making widgets work.

``` import Foundation import SwiftData

@Model final class FocusItem { let created: Date = Date() var completed: Date? var theFocus: String = "New Focus" var details: String?

    init(completed: Date? = nil, theFocus: String, details: String? = nil) {
        self.completed = completed
        self.theFocus = theFocus
        self.details = details
    }
}

struct FocusItemDescriptors { static let currentFocusPredicate = #Predicate<FocusItem> { $0.completed == nil }

    static let sortDescriptor = SortDescriptor(\FocusItem.created, order: .reverse)

    static let currentFocusFetchDescriptor = FetchDescriptor(
        predicate: currentFocusPredicate, sortBy: [sortDescriptor])
} ```

``` import SwiftData import SwiftUI import WidgetKit

struct ContentView: View { @Query( filter: FocusItemDescriptors.currentFocusPredicate, sort: [FocusItemDescriptors.sortDescriptor]) private var items: [FocusItem] @Environment(\.modelContext) private var modelContext

  @State private var isAddingNewItem = false
  @State private var newFocusText = ""

  var body: some View {
    NavigationStack {
      List {
        ForEach(items) { item in
          NavigationLink {
            FocusItemDetailView(item: item)
          } label: {
            Text(item.theFocus)
          }
        }
        .onDelete(perform: deleteItems)
      }
      .navigationTitle("Focus")
      .toolbar {
        #if os(iOS)
          ToolbarItem(placement: .navigationBarTrailing) {
            EditButton()
          }
        #endif
        ToolbarItem {
          Button(action: addItem) {
            Label("Add Item", systemImage: "plus")
          }
        }
      }
    }
    .sheet(isPresented: $isAddingNewItem) {
      AddFocusItemView(isPresented: $isAddingNewItem, addItem: addNewItemWithFocus)
    }
  }

  private func addItem() {
    isAddingNewItem = true
  }

  private func addNewItemWithFocus(_ focus: String) {
    withAnimation {
      let newItem = FocusItem(theFocus: focus)
      modelContext.insert(newItem)
      DataManager.shared.reloadWidgets()
    }
  }

  private func deleteItems(offsets: IndexSet) {
    withAnimation {
      for index in offsets {
        modelContext.delete(items[index])
      }
      DataManager.shared.reloadWidgets()
    }
  }
}

struct FocusItemDetailView: View { @Environment(\.dismiss) private var dismiss let item: FocusItem

  var body: some View {
    VStack {
      Text(item.theFocus)
      if let details = item.details {
        Text(details)
      }
      Text(
        "\(item.created, format: Date.FormatStyle(date: .numeric, time: .standard))"
      )
      Button {
        item.completed = Date()
        DataManager.shared.reloadWidgets()
        dismiss()
      } label: {
        Text("Mark as Complete")
      }
    }
  }
} struct AddFocusItemView: View { @Binding var isPresented: Bool let addItem: (String) -> Void @State private var newFocusText = ""

  var body: some View {
    NavigationView {
      Form {
        TextField("What is your focus?", text: $newFocusText, axis: .vertical)
          .lineLimit(3...10)
      }
      .navigationTitle("New Focus")
      .toolbar {
        ToolbarItem(placement: .cancellationAction) {
          Button("Cancel") {
            isPresented = false
          }
        }
        ToolbarItem(placement: .confirmationAction) {
          Button("Add") {
            addItem(newFocusText)
            isPresented = false
          }
          .disabled(newFocusText.isEmpty)
        }
      }
    }
  }
```
rcarmo•6mo ago
Thanks!
kazinator•7mo ago
Someone working mainly in a terminal could hack this into Basta.

https://www.kylheku.com/cgit/basta/about/

The stock Basta puts a clock (date + time) into a scroll-protected status line, host name and current working dir.

Basta works fine on MacOS, but you need to get a more recent build of Bash from somewhere (Homebrew ...). I should attempt a Zsh port one of these days; the name wouldn't change, though. :)

ThrowawayTestr•7mo ago
This kind of stuff makes me understand why people like Linux.
globular-toast•6mo ago
Free software in general. Doesn't have to be Linux. But yeah, this is one of the reasons I use it. Even in free software some of it is more amenable to hacking than others, for example example Emacs vs LibreOffice. But software that is actively hostile and prevents you from hacking? No way.
teekert•6mo ago
For me it's more the "No TPM chip, no updates" and the "Here's some ads in your start menu". Both not valid for Apple obviously, but there it's the high price and I lost an otherwise perfectly fine MacBook Pro to a GPU issue (after de-soldering one component it worked for a ~day on the iGPU, but an update wrecked it after all, all 2 months after upgrading the ram, putting in an SSD and a new battery). Still a bit sour about that... but hey, at least thy won't let me do that anymore ;)

I buy second hand business models (~300 eur), I have 2 (Dell and HP), both never failed despite being 10 and 6 y/o, both looked unused as advertised. Both are more powerful than I or my family need.

bflesch•7mo ago
Good idea, thanks for sharing. Happy to see fellow linux users modifying their system to improve productivity.
KeybInterrupt•7mo ago
I've added an hourly chime to my work computer's clock, similar to a Casio wristwatch. It's a subtle reminder of the passing time, prompting me to pause, reflect, and reassess my actions to stay on track and avoid procrastination.

I like this constant on screen reminder though and might give it a try myself :)

teddyh•7mo ago

  The gods confound the man who first found out
  how to distinguish hours! Confound him, too,
  who in this place set up a sundial,
  to cut and hack my days so wretchedly
  into small portions! When I was a boy,
  my belly was my sundial — one surer,
  truer, and more exact than any of them.
  This dial told me when ’twas proper time
  to go to dinner, when I had aught to eat;
  But nowadays, why even when I have,
  I can’t fall-to unless the sun gives leave.
  The town’s so full of these confounded dials
  the greatest part of the inhabitants,
  shrunk up with hunger, crawl along the street.
— Plautus (c.254-184 BC)

(Originally posted 11 years ago: <https://news.ycombinator.com/item?id=7007731#7008338>)

Y_Y•7mo ago
(Originally posted 2225 years ago: https://la.wikisource.org/wiki/Comoediae_(Plautus)_-_Boeotia )
InfiniteLoup•7mo ago
I did something similar with a Telegram bot in order to remind myself to look away from the screen, get up and stretch for a bit. However I started to ignore it in favor of "more pressing" tasks and now the chime has become just a faint signal somewhere on the outer edge of my awareness, too easily forgotten about. You need to condition yourself to not ignore it or it will lose its effectiveness.
bmacho•6mo ago
It probably depends on what your goal is. To get up and stretch every n minutes, a more forceful approach could work better.

But a just an hourly subtle sound can *just remind you that time passes.

hispanus•7mo ago
If anyone is searching for a way to do this in macOS, the dato[1] app implements this rather nicely

[1]: https://sindresorhus.com/dato

swah•6mo ago
When there is a meeting too starting at the hour, its a bit too much :)
TimByte•7mo ago
Pairing that with the on-screen focus prompt could create a nice feedback loop.
stryan•6mo ago
I have a similar thing in my WFH office where Home Assistant will play a chime during at canonical hour[0], plus it plays the Westminster Quarters[1] at 5pm to remind me when the normal work day is ending. I find the chunks of time match up well to work/eat periods[2] versus the granularity of each hour.

[0] https://en.wikipedia.org/wiki/Canonical_hours#Western_rites ; for the work day the main chimes are at 7am, 10am, 12pm, 2pm, 7pm

[1] https://en.wikipedia.org/wiki/Westminster_Quarters

[2] I originally stole the idea from the game Pentiment, which uses the canonical hours as it's in game time system since you're working in a 16th monastery. A web app version of the clock is at https://pentiment-clock.vercel.app/

hallgrim•7mo ago
On macOS there is xBar (haven't tried it) and SwiftBar [1]

Its really cool because it lets you use any shell-executable file, including bash scripts, python scripts (with shebangs and made executable), as a menu bar tool. The standard output is expected to follow a very simple structure and will be used to create the menu bar tool's text/icon. You can have your scripts simply output emoji as well!

Not just that, but any output after a `---` will be treated as drop down options, and depending on format, those can contain info, or be exectuable actions.

Verrrry useful for all sorts of things.

1. https://github.com/swiftbar/SwiftBar

TimByte•7mo ago
I like how it doesn't try to reinvent the wheel with some clunky productivity tool, just quietly enhances something you already glance at a hundred times a day
nairboon•7mo ago
Has anyone created a similar solution for KDE plasma?

There's a focus-plasmoid (pomodoro timer), but that one doesn't display text.

globular-toast•7mo ago
I spend all my time in Emacs so I implemented a similar thing there. Been using it for, hmm.. a decade now?

Org-mode includes clock in/out features and can display this in either the modeline or frame title (or both). I did the frame title because it's basically unused space otherwise.

I used to use this in conjunction with the Pomodoro method. I don't need to use that these days, though.

I can easily add a task to any project, or the currently active one, without breaking my flow at any time. I recently added an "immediate" task that will instantly clock me in for those things that randomly come up during the day.

The nice thing is I get a complete breakdown of how all my time was spent during the week. I need to report on this for current job so it's a win/win.

This is also a good example of why I use Emacs. I hacked this together in a few minutes and been using and building on it for years.

girishso•7mo ago
There’s similar app for Mac OS, Focus Bar https://apps.apple.com/us/app/focusbar/id443439127?mt=12
wtkd•6mo ago
i bought a 30min hourglass. i wanted to do something like this but i can't be adding more buzzing, pinging, alerting things to my digital life.
rpdillon•6mo ago
The post is essentially the digital equivalent of sticking a sticky note on your clock. I think the entire point is that there is no alert or interruption associated with it.
cwmoore•6mo ago
I use sticky notes at each end of an hourglass.
guerrilla•6mo ago
Thank you. This is perfection.
physicles•6mo ago
Super cool hack.

For something slightly less hacky, check out the Argos gnome shell extension. It creates a folder where any script dropped there will get executed every N seconds, and the output placed on the title bar.

It’s been life-changing.

n3t•6mo ago
What scripts do you keep there? What are your use cases?
physicles•6mo ago
A few:

- Current time in a few different time zones (work is scattered around the world, and log files are always in UTC, so it's handy to have those there at a glance)

- Wifi network name. Our office has multiple wifi access points with the same SSID, so the script uses the AP's MAC address to figure out which one I'm actually connected to

- Current latency to google.com via VPN (I live in China so if internet isn't working, the VPN is always the first thing to troubleshoot)

Ones that I've thought about adding but haven't gotten around to it:

- Status of our cloud monitoring (i.e. a green square if things are OK, red square if not)

jappwilson•6mo ago
I actually just use conky widget with clock that overlays on top of my windows.
horsellama•6mo ago
talking about focus hacks…when at uni I had odd studying hours, often mixing day and night without any clear distinction.

What kept me grounded were scented candles. IKEA used to sell those with an expected burning time. My favs were the 40hrs ones [0]. My exam preparation was 1 candle for revising notes, 1 candle to go through relevant books and 1-2 candles to do exercises (exp for calculus and similar courses). Add 1 more for the final revision. I was constantly lighting on and off those.

[0] https://www.ikea.com/gb/en/p/jaemlik-scented-candle-in-glass...

tailspin2019•6mo ago
Can you elaborate more on this? I couldn’t quite understand whether you used these candles to “anchor” yourself to different times of day, or if you were just using them as kind of cumulative timers?
horsellama•6mo ago
I used them to keep track of time in a broad sense. Once the candle was on, my mind wouldn’t care about the time and could focus on the course work. I was offloading the time tracking to the candle (if that makes any sense).

It was also handy to know when preparation was done. Once depleted the candles any doubt about my preparation would be relegated into “impostor syndrome” symptom.

tailspin2019•6mo ago
Very interesting, thanks for elaborating!
FireBeyond•6mo ago
Doesn't that add up to like 200 hours per course for study? Two or three courses and you're at 600 hours study per 13-week term? 46 hours a week on top of your actual class load?
horsellama•6mo ago
sounds about right, I was pulling all nighters and had no weekends, holidays, etc

However, some courses were “easier” and didn’t require such effort.

flobosg•6mo ago
On dwm:

    xsetroot -name "$(date +'%b %d %H:%M') Focus: $FOCUS"
sandspar•6mo ago
I suppose you could do this in Tasker on Android with a Scene at Y=0.

I'm curious whether it works though. When I try these kinds of things, my eyes ignore it after a day or two. All productivity hacks have lifespans but I find that reminder/annoyance-based ones fade very quickly.

GuB-42•6mo ago
Clever.

It doesn't have to be about focus, any "constant reminder" could go there. For example "give back that pen", "unload the washing machine", "call mom" or whatever needs be done as soon as possible without requiring your immediate attention.

xgkickt•6mo ago
I use a chess clock, hitting the rocker whenever I get up from my desk, or otherwise interrupted. It’s been useful for quantifying how much time is lost during the day and allow me to “bank” time should I need to step away for a bit.

[0]https://www.leaptimer.com/26.html

GitHub Actions Has a Package Manager, and It Might Be the Worst

https://nesbitt.io/2025/12/06/github-actions-package-manager.html
32•robin_reala•1h ago•4 comments

Turtletoy

https://turtletoy.net/
175•ustad•4d ago•27 comments

Emacs is my new window manager

https://www.howardism.org/Technical/Emacs/new-window-manager.html
73•gpi•2d ago•21 comments

The f*** off contact page

https://www.nicchan.me/blog/the-f-off-contact-page/
6•OuterVale•24m ago•0 comments

Damn Small Linux

https://www.damnsmalllinux.org/
88•grubbs•7h ago•21 comments

I failed to recreate the 1996 Space Jam website with Claude

https://j0nah.com/i-failed-to-recreate-the-1996-space-jam-website-with-claude/
433•thecr0w•16h ago•361 comments

Applets Are Officially Gone, but Java in the Browser Is Better

https://frequal.com/java/AppletsGoneButJavaInTheBrowserBetterThanEver.html
36•pjmlp•1h ago•44 comments

Bag of words, have mercy on us

https://www.experimental-history.com/p/bag-of-words-have-mercy-on-us
179•ntnbr•10h ago•178 comments

Show HN: ReadyKit – Superfast SaaS Starter with Multi-Tenant Workspaces

https://readykit.dev/
37•level09•1w ago•7 comments

Show HN: Lockenv – Simple encrypted secrets storage for Git

https://github.com/illarion/lockenv
7•shoemann•1h ago•1 comments

Truemetrics (YC S23) Is Hiring

https://www.ycombinator.com/companies/truemetrics/jobs/1EHTSyT-python-software-engineer-analystic...
1•Jan-Truemetrics•2h ago

Dollar-stores overcharge customers while promising low prices

https://www.theguardian.com/us-news/2025/dec/03/customers-pay-more-rising-dollar-store-costs
381•bookofjoe•18h ago•517 comments

Mechanical power generation using Earth's ambient radiation

https://www.science.org/doi/10.1126/sciadv.adw6833
120•defrost•11h ago•35 comments

The C++ standard for the F-35 Fighter Jet [video]

https://www.youtube.com/watch?v=Gv4sDL9Ljww
264•AareyBaba•15h ago•280 comments

Google Titans architecture, helping AI have long-term memory

https://research.google/blog/titans-miras-helping-ai-have-long-term-memory/
493•Alifatisk•20h ago•162 comments

Uninitialized garbage on ia64 can be deadly (2004)

https://devblogs.microsoft.com/oldnewthing/20040119-00/?p=41003
68•HeliumHydride•3d ago•40 comments

An Interactive Guide to the Fourier Transform

https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/
201•pykello•6d ago•33 comments

Jujutsu Worktrees Are Convenient

https://shaddy.dev/notes/jj-worktrees/
4•nvader•4d ago•0 comments

I wasted years of my life in crypto

https://twitter.com/kenchangh/status/1994854381267947640
214•Anon84•20h ago•312 comments

Solving Rush Hour, the Puzzle (2018)

https://www.michaelfogleman.com/rush/
20•xeonmc•1w ago•2 comments

The Anatomy of a macOS App

https://eclecticlight.co/2025/12/04/the-anatomy-of-a-macos-app/
234•elashri•20h ago•70 comments

Scala 3 slowed us down?

https://kmaliszewski9.github.io/scala/2025/12/07/scala3-slowdown.html
223•kmaliszewski•18h ago•130 comments

How I block all online ads

https://troubled.engineer/posts/no-ads/
194•StrLght•11h ago•164 comments

CATL expects oceanic electric ships in 3 years

https://cleantechnica.com/2025/12/05/catl-expects-oceanic-electric-ships-in-3-years/
114•thelastgallon•1d ago•133 comments

Palantir Could Be the Most Overvalued Company That Ever Existed

https://247wallst.com/investing/2025/11/25/palantir-could-be-the-most-overvalued-company-that-eve...
78•Anon84•4h ago•38 comments

Work disincentives hit the near-poor hardest (2022)

https://www.niskanencenter.org/work-disincentives-hit-the-near-poor-hardest-why-and-what-to-do-ab...
85•folump•5d ago•62 comments

Nested Learning: A new ML paradigm for continual learning

https://research.google/blog/introducing-nested-learning-a-new-ml-paradigm-for-continual-learning/
118•themgt•18h ago•2 comments

Show HN: PVAC FHE over hypergraphs with LPN security

https://github.com/octra-labs/pvac_hfhe_cpp
3•0x0ffh_local•6d ago•0 comments

Show HN: Cdecl-dump - represent C declarations visually

https://github.com/bbu/cdecl-dump
23•bluetomcat•8h ago•9 comments

Build a DIY magnetometer with a couple of seasoning bottles

https://spectrum.ieee.org/listen-to-protons-diy-magnetometer
89•nullbyte808•1w ago•17 comments