- โ
- โ
- Why you should stop using product roadmaps and try the GIST Framework
- Mixture-of-Agents Enhances Large Language Model Capabilities
- Docling - Docling
- Claude Code Best Practices Anthropic
- Aiding reverse engineering with Rust and a local LLM - hn security
- May 01, 2025
-
๐ aristocratos/btop btop++ (v1.4.2) Bug fixes release
Changelog v1.4.2
References | Description | Author(s)
---|---|---
f1482fe
| Fix process arguments appearing outside proc box by replacing ASCII control codes with blankspace, issue #1080 | @aristocratos
#1130 | Fix problems shown by clang-tidy's performance checks | @imwints
#1120 | Fix wrong error message and documentation of renamed option --utf-force | @t-webber @imwints
#1128 | Flatten cmake module path | @imwints
#1129 | CMake: Remove option to use mold | @imwints
#1047 | Update Terminus font link, fix typo, spelling, and grammar | @QinCai-rui
#929 | Please clang with sanitizers | @bad-co-de
#1126 | Fix MacOS tree-mode + aggregate memory/thread scaling issue | @xaskii
#993 | Fix typo: Mhz -> MHz | @NyCodeGHGFor additional binaries see theContinuous Builds.
Linux binaries for each architecture are statically linked with musl and works on kernel 2.6.39 and newer.
No MacOs or BSD binaries provided for the moment.
Notice! None of the binaries have GPU support, compile yourself or wait for distribution packages for GPU monitoring support!
Notice! Use x86_64 for 64-bit x86 systems, i486 and i686 are 32-bit!
-
๐ @binaryninja@infosec.exchange Binary Ninja 5.0 has major upgrades for firmware analysis! Firmware Ninja is mastodon
Binary Ninja 5.0 has major upgrades for firmware analysis! Firmware Ninja is now built into Ultimate, with entropy analysis, memory insights, and automatic board detection. Hex formats like IHEX and SREC are now supported natively, and SVD file loading includes full structure and comment support. https://binary.ninja/2025/04/23/5.0-gallifrey.html#firmware
-
๐ Locklin on science More grad school stories rss
Too busy ATM to say anything technically interesting so I give you this queued up ….. MOAR grad school stories. Texas Joe: I mentioned himย in a comment as a notable Pittsburgh roommate. Texas Joe looked and talked like an ordinary Texas hayseed; Texan physiognomy and everything. He had hidden depths though. My first encounter […]
-
๐ @binaryninja@infosec.exchange At RSA and want to talk to Binja developers? Come to the AIxCC area (in the mastodon
At RSA and want to talk to Binja developers? Come to the AIxCC area (in the YBCA building) from 12-2pm today!
-
๐ News Minimalist US guarantees Ukraine military aid for ten years + 2 more stories rss
Today ChatGPT read 27947 top news stories. After removing previously covered events, there are 3 articles with a significance score over 5.9.
[6.3] US guarantees Ukraine military aid for ten years โkcra.com(+378)
The U.S. and Ukraine have finalized a ten-year agreement guaranteeing continued military aid to Ukraine amidst the ongoing war.
The deal grants the U.S. access to critical minerals and removes a barrier to Ukraine's potential EU membership. The White House views the agreement as a demonstration of its commitment to Ukraine's long-term stability.
This agreement comes as peace negotiations between Russia and Ukraine face challenges, with Russia proposing a short-term truce and expressing reluctance for a quick resolution.
[6.5] Global nuclear fusion project crosses milestone with world's most powerful magnet โreuters.com(+2)
A global nuclear fusion project is set to assemble the world's most powerful magnet, a crucial step toward generating clean energy through atomic fusion.
The International Thermonuclear Experimental Reactor (ITER) project, involving over 30 countries, completed the final component of its magnetic system, the central solenoid, after delays. This magnet will confine super-hot plasma, enabling fusion reactions.
The project, based in France, aims to start generating plasma in 2033, despite past setbacks. While fusion investment grows, ITER's director remains skeptical of rapid commercialization by private ventures.
[5.9] Immunotherapy drug capable of eliminating tumors in some early-stage cancers: Study โabcnews.go.com(+3)
A new immunotherapy drug, dostarlimab, has shown the potential to eliminate tumors in some early-stage cancer patients, potentially allowing them to avoid surgery.
In a study, 82 out of 103 participants responded so well to dostarlimab that they no longer needed surgery. The study focused on patients with a specific genetic mutation, and all 49 rectal cancer patients avoided surgery after treatment.
While promising, the study was conducted at a single hospital and included a select group of patients. Researchers are working to expand the study and explore combining immunotherapy with other approaches.
Highly covered news with significance over 5.5
[5.6] 30% of Microsoft's code is now AI-generated, says CEO Satya Nadella โ businesstoday.in (+57)
[5.6] Amazon launches its first internet satellites to compete against SpaceXโs thousands of Starlinks โ pbs.org (+9)
[5.5] South Korea's interim president Han Duck Soo resigns โ welt.de (+25)
[5.5] New vaccine to treat 15 types of cancer now available on NHS โ uk.news.yahoo.com (+7)
Thanks for reading!
โ Vadim
You can create your own personalized newsletter like this with Premium.
-
๐ sacha chua :: living an awesome life April 2025: Minecraft, playdates, Bike Brigade rss
April 2025: โ๐ญ๐ฒ๐๐ค๐ฑ๐ฎ๐ฉน๐๏ธ๐ช๐ฅ๐ฑ๐ง๐ญ๐ โ๏ธ๐ฅ๐ฑ๐ฉ๐ฒ๐๐ซง๐ฉนโ๏ธ๐ฎ๐ด๐ฒโ๐จ๐Text from sketchApril 2025 Minecraft, playdates, Bike Brigade
- โ Pictionary
- ๐ญ Charades
- ๐ฒ bike playdate
- ๐ clothes, shoes
- ๐ค reflection
- ๐ฑ gardening
- ๐ฎ Minecraft together
- ๐ฉน A+: finger cut
- ๐๏ธ set up a village
- ๐ช trial chamber
- ๐ฅ blazes
- ๐ฑ nether wart, skeleton spawner
- ๐ง bike maintenance, park playtime
- ๐ญ pretend Minecraft - park
- ๐ aquarium
- โ๏ธ writing
- ๐ฅ early Easter egg hunt
- ๐ฑ gardening
- ๐ฉ Easter Monster Math Hunt
- ๐ฒ Bike Brigade
- ๐ monkey bars
- ๐ซง bubbles
- ๐ฉน right-size Band-aid
- โ๏ธ another sunny day
- ๐ฎ experimented with Minecraft club
- ๐ด scooter parking
- ๐ฒ Bike Brigade, trail mix
- โ drawing with Popo
- ๐จ ice cream
- ๐ reading, drawing
I worked on some personal projects. I finally got around to adding side notes and footnotes to my blog. I made space by moving the post navigation to the left sidebar. Along the way, I figured out how to add scroll-based highlighting for SVGs, so I can use a drawing as a table of contents. I added sketches to my On This Day page, and I wrote some Emacs Lisp to visualize a specific day or set of days.
The weather's starting to warm up. More of A+'s friends are emerging from hibernation and having outdoor playdates. Yay!
We planted more radishes, lettuce, peas, cilantro, and spinach. We also started marigolds, petunias, chrysanthemums, jalapeno peppers, cherry tomatoes (Sweet Million), and mini bell peppers inside. I tidied my basement desktop and I cleared out some more of my old yarn and fabric scraps, and I sewed a cushion for A+'s chair.
I wrote a few long blog posts. It felt good to take time to explore a thought.
I continued to practise fretting less about homework, and A+ managed to catch up with all the things she needed to do mostly on her own. Things really work out better when I back off and let her take responsibility for it.
We played a lot of Minecraft. We set up a 1.20.1 world with Create 6.0 and the Create: Ultimate Selection modpack. We also figured out how to do port forwarding so that other people could theoretically join us.
I finished the intermediate courses in Simply Piano and worked on more songs. I'm at the point where I need to play through things a couple of times at slower speeds in order to get the hang of them. This is good. It means I'm challenging myself.
A couple of Sundays had pleasant weather, so we did Bike Brigade as a family. That was a lot of fun. A+ and I also went to Ripley's Aquarium.
In May, I want to add more plants to our outdoor garden, sew some swimwear for A+ and me, and see about volunteering for Bike Brigade.
Blog posts
- Tech:
- Parenting:
- Life:
- Reviews:
- Emacs News:
Sketches
- 2025-04-10-01 A typical weekday – life.jpeg
- 2025-04-25-04 At the playground – drawing.jpeg
- 2025-04-28-03 More life sketches – drawing.jpg
- 2025-04-29-02 Time over the years – time life.jpeg
- 2025-04-30-02 Sketches from the playground – drawing life.jpeg
- 2025-04-30-03 April 2025 – monthly review.jpeg
Time
DetailsCategory Previous month % This month % Diff % h/wk Diff h/wk Business 1.0 2.4 1.3 3.8 2.2 Unpaid work 3.8 4.9 1.1 7.9 1.8 Discretionary - Play 0.9 1.6 0.7 2.6 1.1 Personal 10.9 11.6 0.7 18.9 1.1 Discretionary - Family 0.1 0.5 0.4 0.8 0.7 Sleep 33.3 32.2 -1.0 52.5 -1.8 Discretionary - Productive 17.4 16.1 -1.2 26.3 -2.1 A+ 32.6 30.7 -1.9 50.0 -3.2 I had a few client requests I wanted to work on, so W- helped me get some more focus time. I feel a little underslept, so I should get better at going to bed instead of staying up reading.
You can e-mail me at sacha@sachachua.com.
-
๐ sacha chua :: living an awesome life Week ending April 25, 2025: playgrounds rss
The weather was often warm and sunny, so we spent more time biking and walking. We brought bubbles, sand toys, and popsicles to the playgrounds. That was nice.
A+ has been practising crossing the street by herself. She's quite proud of being able to go ahead of me. She was also proud of making her own choices at the farmers market, carefully counting out $5 and a collection of coins that all together summed up to $12 for a bottle of very dark maple syrup, and choosing a sourdough loaf after some discussion with the baker.
A+ enjoyed doing an Easter Monster Math Hunt, as is apparently now our tradition. I drew lots of Minecraft mobs on brightly-coloured sticky notes, labelled the front sides with letters and wrote equations on the back sides. A+ wanted to practise solving for variables, so I wrote two-step equations of the form
2 * n + 3 = 7
. As she found each sticky note, she brought it to me and figured out the answer in her head, and I wrote her answer down. When she collected all of them, she sorted them by number and then figured out the phrase using the letters in the front (CHOCOLATE EGGS), whereupon she received the chocolate egg I'd brought along for snack.In Minecraft, we switched from Create: Perfect World to the Create: Ultimate Selection modpack because A+ wanted to use Create 6.0. Fortunately, this didn't mean restarting our world from scratch, since it was an upgrade. After we got everyone on board, I built a full enchanting table setup, got myself a Fortune 3 pickaxe, and started caving. We also experimented with a Minecraft Create Mod club on Outschool, but it wasn't really A+'s thing between the lag and the overwhelming experience of stepping into a world that's already quite built up. We'll probably just keep playing ourselves. If A+'s cousins or friends from the playgroup want to join in, we figured out how to set up port forwarding, so we can set up a server.
Blog post
Sketch
Time
DetailsCategory The other week % Last week % Diff % h/wk Diff h/wk A+ 27.0 37.5 10.5 63.0 17.7 Unpaid work 5.2 5.9 0.7 9.8 1.1 Discretionary - Play 1.5 1.2 -0.4 2.0 -0.6 Discretionary - Family 0.6 0.0 -0.6 0.0 -1.1 Business 5.1 4.1 -1.0 7.0 -1.6 Sleep 33.5 31.8 -1.7 53.5 -2.8 Personal 13.2 10.6 -2.7 17.8 -4.5 Discretionary - Productive 13.8 8.9 -4.9 14.9 -8.3 More childcare, less coding and sleep. Ah, that's probably because we were playing Minecraft together in the evenings.
You can e-mail me at sacha@sachachua.com.
-
๐ @trailofbits@infosec.exchange We slashed PyPIโs test suite execution time (down to 30s from 160), even as mastodon
We slashed PyPIโs test suite execution time (down to 30s from 160), even as the community kept growing it from 3,900 to 4,700 tests! Faster tests remove friction for developers - enabling tighter feedback loops to catch problems early.
We combined four techniques to improve test performance with little to no added complexity to the test suite itself; you can do the same:
1. Parallelize with pytest-xdist
2. Use Python 3.12's sys. monitoring for coverage
3. Optimize test paths
4. Eliminate unnecessary importshttps://blog.trailofbits.com/2025/05/01/making-pypis-test- suite-81-faster/
-
๐ tonsky.me When You Get to Be Smart Writing a Macro rss
Day-to-day programming isnโt always exciting. Most of the code we write is pretty straightforward: open a file, apply a function, commit a transaction, send JSON. Finding a problem that can be solved not the hard way, but smart way, is quite rare. Iโm really happy I found this one.
Iโve been using hashp for debugging for a long time. Think of it as a better
println
. Instead of writing(println "x" x)
you write
#p x
It returns the original value, is shorter to write, and doesnโt add an extra level of parentheses. All good. It even prints original form, so you know which value came from where.
Under the hood, itโs basically:
(defn hashp [form] `(let [res# ~form] (println '~form res#) res#))
Nothing mind-blowing. It behaves like a macro but is substituted through a reader tag, so
defn
instead ofdefmacro
.Okay. Now for the fun stuff. What happens if I add it to a thread-first macro? Nothing good:
user=> (-> 1 inc inc #p (* 10) inc inc) Syntax error macroexpanding clojure.core/let at (REPL:1:1). (inc (inc 1)) - failed: vector? at: [:bindings] spec: :clojure.core.specs.alpha/bindings
Makes sense. Reader tags are expanded first, so it replaced
inc
with(let [...] ...)
and then tried to do threading. Wouldnโt fly.We can invent a macro that would work, though:
(defn p->-impl [first-arg form fn & args] (let [res (apply fn first-arg args)] (println "#p->" form "=>" res) res)) (defn p-> [form] (list* 'p->-impl (list 'quote form) form)) (set! *data-readers* (assoc *data-readers* 'p-> #'p->))
Then it will expand to
user=> '(-> 1 inc inc #p-> (* 10) inc inc) (-> 1 inc inc (p->-impl '(* 10) * 10) inc inc)
and, ultimately, work:
user=> (-> 1 inc inc #p-> (* 10) inc inc) #p-> (* 10) => 30 32
Problem? Itโs a different macro. Weโll need another one for
->>
, too, so three in total. Can we make just one instead?Turns out you can!
Trick is to use a probe. We produce an anonymous function with two arguments. Then we call it in place with one argument (
::undef
) and see where other argument goes.Inside, we check where
::undef
lands: first position means weโre inside->>
, otherwise,->
:((fn [x y] (cond (= ::undef x) <thread-last> (= ::undef y) <thread-first>)) ::undef)
Letโs see how it behaves:
(macroexpand-1 '(-> "input" ((fn [x y] (cond (= ::undef x) <thread-last> (= ::undef y) <thread-first>)) ::undef))) ((fn [x y] (cond (= ::undef x) <thread-last> (= ::undef y) <thread-first>)) "input" ::undef) (macroexpand-1 '(->> "input" ((fn [x y] (cond (= ::undef x) <thread-last> (= ::undef y) <thread-first>)) ::undef))) ((fn [x y] (cond (= ::undef x) <thread-last> (= ::undef y) <thread-first>)) ::undef "input")
If weโre not inside any thread first/last macro, then no substitution will happen and our function will just be called with a single
::undef
argument. We handle this by providing an additional arity:((fn ([_] <normal>) ([x y] (cond (= ::undef x) <thread-last> (= ::undef y) <thread-first>))) ::undef)
And boom:
user=> #p (- 10) #p (- 10) -10 user=> (-> 1 inc inc #p (- 10) inc inc) #p (- 10) -7 user=> (->> 1 inc inc #p (- 10) inc inc) #p (- 10) 7
#p
was already very good. Now itโs unstoppable.You can get it as part of Clojure+.
-
๐ Console.dev newsletter Slidev rss
Description: Markdown slides on the web.
What we like: Everything is Markdown and all the extra features are optional. Runs on the web. Powerful syntax highlighting and code evolution animations. Themeable and supports Vue components. Built-in Monaco editor for live coding demos. Export to PDF, PNG, or even Single Page App. Open source.
What we dislike: Markdown lasts forever so your content is safe, but will the web components and libraries last as long as a more traditional format?
-
๐ Console.dev newsletter Magnitude rss
Description: AI UI testing framework.
What we like: Define test steps in natural language so they can adapt to interface changes. Assertions are also natural language. Test runs are cached for fast repeat execution. Data can be provided for steps e.g. login credentials. Can run anywhere youโd run Playwright e.g. in CI. Open source.
What we dislike: Requires two LLMs (a general model to plan and a visual model to inspect the steps). Only supports one visual model, but it can be self-hosted.
-
- April 30, 2025
-
๐ Evan Schwartz Scour - April Update rss
Hi friends,
Scour is now checking over 3,000 sources (3,034 to be precise) for content matching your interests. This month, it scoured 281,968 posts.
Here are the new features I added:
๐ฅ Hot Mode
Scour now has a hot mode that shows content from the past week while balancing between relevance and recency. This will show you a mix of very recent posts with especially relevant ones from a few days ago that you might have missed.
Right now, Hot mode is the default. If you prefer a different timeframe (for example, the past day), you can set that in your settings. Thanks justmoon for the suggestion!
(One thing I'm not so happy about with Hot mode is that it takes closer to ~250ms to load, rather than the <100ms I'm aiming for. I'm working on getting that back down so your feed feels extra snappy, no matter which timeframe you pick.)
๐ฐ Extra-Liking Posts
You can now Love especially great posts you find on Scour using the acorn icon. It's up to you what counts as a Love versus a Like, but I'm personally using it to mark those posts that make me think "wow, I'm so glad I found that! That's so timely and I definitely would have missed it otherwise." Thanks to everyone who voted for this idea.
That said, Vahe Hovhannisyan brought up a good point that thinking about whether to like or love a post introduces extra decision fatigue. Please weigh in on this if you agree or disagree! I might make the love reaction an optional setting, hide it somehow, or remove it in the future.
๐ Single-Interest View
You can click on any one of your interests on the Interests page or on the tags next to post titles to see only posts related to that interest.
If you browse other users' pages, you can also see posts related to any one of their interests. And, if you like a topic someone else has added, you can easily add that interest to your set. Thanks also to justmoon for this suggestion!
๐ Design Update
Scour got a design refresh! The website should look and feel a bit more modern and polished now. Let me know if you run into any little design issues.
(For those that are interested, I switched from PicoCSS to Tailwind. Pico was great for getting off the ground quickly, but I found I was fighting with it more and more as I built out more features.)
๐จ Email Updates (Coming Soon!)
I'm almost done building out automatic email updates so you'll hopefully have the first personalized weekly roundup in your inboxes this Friday. Thanks to Allen Kramer for this suggestion!
๐ท Other Updates
- Added a Logout button on the Settings page. Thanks to the anonymous contributor who suggested this!
- Also added an option to delete your account on the Settings page. Thanks to the other anonymous contributor who suggested this -- though I'm sorry to see you go!
- The JSON Feed version of all Scour-created feeds includes the score, quality, and quality probability for each post. Thanks to the anonymous contributor who requested that!
๐ Some of My Favorite Posts
Here were a couple of my favorite posts that I found on Scour this month:
- A faster way to copy SQLite databases between computers (what a clever little trick! TL;DR using a DB dump to avoid copying indices)
- Two tower embeddings instead of 'hybrid search'
- Cross-Encoder Rediscovers a Semantic Variant of BM25 (๐คฏ)
Happy Scouring โ and keep the feedback coming!
- Evan
-
๐ @cxiao@infosec.exchange alt text updated lol mastodon
alt text updated lol
-
๐ @cxiao@infosec.exchange PM Carney: "Our old relationship with the United States...is over." mastodon
PM Carney: "Our old relationship with the United States...is over."
How I interpret it: -
๐ @trailofbits@infosec.exchange Insecure credential storage plagues MCP. Many official & third-party tools mastodon
Insecure credential storage plagues MCP. Many official & third-party tools (GitLab, Figma, Postgres) store plaintext API keys in world-readable files/logs, putting connected services at risk.
How keys leak:
1) Insecure config files (often-rw-r--r--
) sourced by host apps
2) Credentials entered in chat, then logged insecurelyBoth easily readable by local malware or other users. No complex exploits needed.
Read the full breakdown:
https://blog.trailofbits.com/2025/04/30/insecure-credential-storage-plagues- mcp/ -
๐ sacha chua :: living an awesome life Looking at my time data from 2012 to 2025 rss
Assumed audience:
- @tagomago, who was curious about what a typical weekday looked like before I became a parent, following up on my post
- people who track time, especially my fellow Quantified Self geeks
- my future self, looking back even further on time and change
This is a long post without any particularly ground-breaking insights; more along the lines of "water is wet" (taking care of a kid reduces free time, to no one's surprise). I suppose not a lot of people have 13+ years of time data to analyze, though, so there's some coolness in that. Also, I'm a little proud of the fact that I got the graphs to show up nicely even under EWW, so they work without Javascript. If you view this post on my blog with Javascript enabled, there should be user-interface niceties like being able to switch between years.
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- How has my time changed over the years?
- Fragmentation
- Sleep
- Other thoughts
- Do I want to find time for the activities I used to spend time on before?
- How much time does it take to track and analyze time?
- Can I share my data?
- Other resources
- Looking forward to the next few years
I wrote a web-based time tracker back in late 2011 because I was curious about how I was actually using my time. I'd already started planning my 5-year experiment with semi-retirement. I knew that time-tracking was going to be useful for that, especially since I figured consulting was going to be part of it. I had been tracking my time with Tap Log for Android, but writing my own system allowed me to fit it to the way I wanted it to work. 2012 was my first full year of data with it. My time data includes a little bit of my work at IBM, all of my experiment with semi-retirement, and my time as a parent. Time-tracking was something that a number of people in the Quantified Self community were also exploring, so I had fun bouncing ideas and visualizations off other people. At some point, I nudged my categories a little closer to the time use studies I read. (Ooh, I should revisit these…)
I use a hierarchy of categories. Each time segment can have only one category, even if I might combine something like childcare and biking. The hierarchy lets me report at the high level while also letting me break things down further. I can add a note to a segment in order to capture even more detail, like the way that clocking in from my Org Mode tasks automatically fills in the time tracker's note with the task name. It takes me just a few taps to record my data most of the time. If I need to backdate something, I can use a couple more taps to select common time offsets (say, around 5 minutes ago). I can also type in some text to select an uncommon category or specify a different offset.
The data isn't 100% perfect, of course. Sometimes I created an entry a few minutes late or guessed when something started. Sometimes I forgot to track when I went to sleep or when I woke up. Despite the occasionally messy data, it gives me a pretty good idea of the rough categories of my day.
For the time graphs below, each column is one day, starting at midnight. All times are displayed in the America/Toronto time zone, with the occasional indent or outdent because of daylight savings time. Legend:
pink A+ (childcare) yellow Business - Connect red Business / Work green Discretionary - Play blue Discretionary - Productive dark blue Discretionary - Productive - Emacs yellow Discretionary - Social purple Personal gray Sleep orange Unpaid work If you click on the graph images, you should be able to get the SVG for each year, which will let you hover over segments for more details in the tooltips. Each SVG is about 1-4 MB, so I didn't want to include them all inline.
Here are some overall graphs of each year, as a sample weekday, and some notes on what was going on in my life then.
2012
Sample weekday: 2012-04-25
In February 2012, I started my experiment with semi-retirement, shifting from working for IBM to consulting for a couple of clients. My week was still fairly typical, since I planned for 4-5 days of consulting each week. I usually biked or took the subway to the office, where I did some coding or consulting around enterprise social computing.
I wanted to experiment with different business models, so I also started doing some professional sketchnoting and illustration. I guess people liked stick figures. I did a few events here and there, but the semi- part of my semi-retirement was mostly consulting around enterprise social computing, collaboration and technology adoption, Javascript prototyping, and SQL queries.
2013
2014
Sample weekday: 2014-04-21
I ratcheted consulting down further and I gave myself permission to work on more of my own things. I enjoyed hanging out at Hacklab.to.
2015
2016
Sample weekday: 2016-04-21
In February, A+ was born. Here's the obligatory visualization of how my sleep shattered into a million pieces and childcare took over my days and nights. If you have ever been the primary caregiver of an infant, you'll know what this is like.
Year Sleep % Avg hours / day 2012 34.6 8.3 2013 36.7 8.8 2014 36.9 8.9 2015 38.1 9.1 2016 34.9 8.4 2017 32.5 7.8 … Sure didn't feel like 8.4 hours a day. Not enough continuous sleep, definitely foggy-brained. Although to be fair, babies also sleep a lot, and I tried to sleep during that time too.
Towards the end of the year, we took A+ to the Philippines to see family. We tried to do the usual short layover and that was miserable because of sleep deprivation, so our other flights included an overnight layover.
I decided that doing my yearly review twice a year was a bit excessive, so I moved to doing it in August for my birthday. This year was split between life as a 32-year-old and a 33-year-old.
2017
Sample weekday: 2017-04-25
More childcare. We often went to playgrounds, libraries, EarlyON early childhood centres, museums, and the Ontario Science Centre. I often needed a nap in the evenings.
Another trip to the Philippines. The very regular section was probably when I didn't have a reliable way of updating my time tracker. (Yearly review split between life as a 33-year-old and a 34-year-old)
2018
Sample weekday: 2018-05-08
We went on two trips to the Philippines. My dad died during the first one, and the second one was to keep my mom company. (Yearly review split between life as a 34-year-old and a 35-year-old)
2019
Sample weekday: 2019-04-25
Sometimes I paid a babysitter so I could do some consulting, but A+ usually didn't like being away from me, so I just didn't do that much. This year was also our last trip to the Philippines before COVID changed the world. (Yearly review split between life as a 35-year-old and a 36-year-old)
2020
Sample weekday: 2020-04-28
I started staying up to try to get stuff done. This was sometimes tricky to get right. If I stayed up too late and then A+ woke up early, I got cranky. I did much less consulting. The two dark blue lines towards the later part of the year represent EmacsConf. (Yearly review split between life as a 36-year-old and a 37-year-old)
2021
Sample weekday: 2021-04-29
Still staying up to try to have some me-time. The dark blue boxes in the second half of the year show that I started taking a more active role in organizing EmacsConf, mostly by coding stuff late at night. (Yearly review split between life as a 37-year-old and a 38-year-old)
2022
Sample weekday: 2022-04-25
A+ shifted to staying up late too, so I adapted by doing less. Trying to get her to go to bed earlier just resulted in grumpiness and crying. (Sometimes I was the one crying.)
I did a lot more automation for EmacsConf. Sometimes it was because she was attending virtual grade 1 during the daytime, and sometimes it was because she was just chilling out watching videos in the evening. (Yearly review split between life as a 38-year-old and a 39-year-old)
2023
Sample weekday: 2023-04-25
A+ started grade 2. We had to wait a little while to get our exemption from synchronous learning approved, so we made an effort to attend school in the beginning. We eventually got the exemption, though. (Yearly review split between life as a 39-year-old and a 40-year-old)
2024
Sample weekday: 2024-04-25
A+ started grade 3. Our application for an exemption from synchronous learning wasn't approved, so A+'s schedule (and mine) tended to follow the school schedule except for the days when I say, hey, let's just go on an informal field trip. I'm glad A+ decided to get on board with waking up at around 7 AM fairly consistently instead of sleeping in. The graph also shows the steadiness of the pink Childcare segments during the 11AM-12PM lunch breaks. Knowing when I'm likely to be interrupted by an armful of kiddo does help me use the morning and afternoon breaks a little more efficiently, although having 1-1.5 hours to think can still feel a little short if I'm trying to do some programming.
Part of this year was covered by my life as a 40-year-old yearly review. I'll write my "life as a 41-year-old" post in August this year.
2025
How has my time changed over the years?
I usually do a quick check of my time by looking at the category totals and percentages during my monthly and yearly reviews, but seeing it as a day-by-day view like this makes it easier to feel the flow of things, including when I tend to stay up late. (Revenge bedtime procrastination strikes again.)
Still, category totals make it easier to see high-level changes over time. Here's a graph of average hours per day per high-level category per year.
--I can see that:
- childcare mostly came out of my consulting, personal, and play time
- I've managed to get back to doing more productive stuff and Emacs stuff
Here's the hours-per-day.py script I used to analyze it, using Pandas to sum it up, Matplot to graph it, and mpld3 to add some Javascript interaction so we can hover over points to get the label and value. I wrote a little SetViewbox plugin so that the graph could be more responsive.
Fragmentation
My life is still fragmented, but I'm slowly becoming more okay with this. The general advice is, of course, to try to consolidate some focus time, but my life doesn't work that way. Besides, it's fragmented because the kiddo likes to spend time with me, which is wonderful.
I liked this quote from Eleanor Coppola from this Living with Literature interview:1
The men artists I knew had a studio, and they went out to their studio, and they spent the day, and worked, and then they came back. I once read a book by Judy Chicago, who interviewed all these women artists, and they made their art on the back porch, they made it on top of the washing machine, they made it next to the kitchen sink, and they made it anywhere they could, for the hour and a half while their kid was taking a nap, and for the two hours while they were at the play group. They made it in between. It wasnโt, like, you get to make art for eight hours. You make art in 20-minute snatches, and you donโt, like, fiddle around. I know one time I went to see Francis in his working room, and he had his pencils all laid out, and his espresso there, and there was this whole little ritual of getting into yourself and into your work. There was no time [for women] for the ritual of getting into your work! You just snapped into that taking 10 minutes and making 3 lines on your drawing or whatever was possible. It wasnโt the same as the way men worked. And thatโs how women got their work done.
This reminds me of the reflections on interruptibility in Meditations for Mortals (Oliver Burkeman, 2024): yes, try to ringfence three to four hours of your day for focused time, but don't try to control too much of your life; stay distractible, don't fight life, give your full attention once your focus has already been diverted. It also reminds me of Good Mom on Paper (edited by Stacey May Fowles and Jen Sookfong Lee, 2022); there are lots of other people who are finding their way through the "Mom! Mom! Mom!" phase. (A+ still has a finely-tuned attention detector. She can sense the moment I begin to think about something and interrupt it with "Mom, look at this!" even when W- is right there beside her.)
A+ grows more independent every year. It's like life is slowly easing me into this independence too. 2022 looked different from 2025, and 2028 will be different too. I used to have 5-10 minute snippets of time (still do). Now I occasionally get 1-hour chunks. Eventually I'll have 3-hour chunks again. I know from my experiment with semi-retirement that time isn't the thing holding me back from making a useful website or writing a book or saving the world, so that's actually kind of liberating. It can just be about trying things out and seeing where I want to go with that.
Sleep
One of the things I've learned is how much of my day depends on feeling well-rested. When I've slept well, I can parent better and I can take advantage of little pockets of me-time better.
It's surprisingly tricky to get my sleep sorted out. My sleep isn't as fragmented as it used to be in the early days of parenting A+, but it's still a little challenging. These days, I usually start nudging A+ towards bed at 9 PM. I'm still an integral part of her bedtime routine. Sometimes she stays up because she wants to chat or improvise stories, and unless I'm super tired, I like to spend that cozy time with her. I snuggle her until I think she's fallen asleep. Sometimes I try to slip away too early and she sleepily asks for more hugs, so then I snuggle her for another ten or fifteen minutes. I try to stay awake because whenever I fall asleep in her twin bed, we're both a bit tired and cranky in the morning. After A+'s finally asleep, I call my mom to check on her. Sometimes I do a bit of reading or drawing as my personal time.
I can remind myself not to stay up late reading because then I'll get too little sleep and then I'll feel tired. I can find time to read the next day. Come to think of it, this is what I tell A+ too, and just like me, she also finds it hard to put books down.
I could also get a bit more sleep by accepting that A+ will probably wake up at 7:30 or so, and set my alarm for 7:25 instead of 6:55. She usually likes a lot of snuggles before finally waking up, though, so starting the snuggles early in the morning gives us more of a leisurely start to the day.
If I go to bed at about 10 or 10:30 PM, I usually wake up before my alarm goes off. If I move some of my personal reading and writing to that time (RSS, books, etc.), then I can swap out some of the less-useful scrolling through Reddit and start the day better.
Other thoughts
Text from sketchTime over the years
- Minutes are not all the same
- 8.4 hours of sleep, 2 hours of me-time:
- fragmented < all together
- family time: 0-18 > 18โ
- 8.4 hours of sleep, 2 hours of me-time:
- How much time I have & how much time I feel I have are two different things.
- It's okay to have downtime. No sense in grumping at myself about it.
- Energy matters. Sleep is my foundation for everything else
- Time comes from somewhere. There's time for everything I really want, just not all at once. Constraints clarify choices. If I want to do more of something, I need to change something else.
- I like a small, leisurely life.
sachachua.com/2025-04-29-02
Tracking my time is surprisingly reassuring. I can see that I have time for a few discretionary things, and I can see the trade-offs. More time spent doing one thing means less time spent on another, so it makes my actual priorities clear. In the beginning, I tended to fall back to consulting a lot because it came with clear tasks and the satisfaction of helping other people. I'm happy to see that I'm becoming more comfortable with choosing things like playing piano, going for walks, writing, or working on personal projects, or playing Minecraft with W- and A+.
W- does so much around the house, and we really enjoy the benefits. (Mmm, fresh-baked bagels.) It makes me want to increase my "Unpaid work" time so that I can increase the satisfaction I feel from helping improve the household. If I can tempt A+ along (say, cooking or gardening), then that would be an effective way to shift that time around. When I switch from "Personal - Routines" to "Unpaid work - Clean the kitchen," it feels nice. I know it'll add up.
When I don't feel particularly energetic or focused, I've learned to be kind to myself and just chill out with a book or my iPad, or do some tidying around the house. Sometimes I have a nap. No point in grumping at myself about it. I'm learning that I enjoy having a simple, leisurely sort of life, without feeling like I need an internal taskmaster. When I do have an idea, I'm fine with going with it even if there are lots of other things on my to-do list from before. As long as nothing urgently needs to be done, there's room to play, and it's easier to work on stuff I'm curious about or care about, even if it might not be the theoretically optimal way to use that bit of time.
Do I want to find time for the activities I used to spend time on before?
I don't think I'll go back to my pre-parenting socializing any time soon. I miss bumping into interesting ideas and people at tech meetups and Hacklab, and hosting people for tea, but it's okay. We're still taking COVID precautions, so we don't hang out indoors. The weather's warming up so maybe people will be outside more. I bumped into Andrew Louis at a park the other day. That conversation reminded me that there are lots of wonderful people who don't blog nearly as often as I do (and even I don't write as often as I'd like), so spending time with them (either one-or-one or as part of larger conversations) is the main way to find out about the cool things they've been up to, enjoy that feeling of "I'm glad you exist," and perhaps develop friendships further. Someday, maybe. In the meantime, I like EmacsConf, I occasionally join online meetups, and I've dusted off my feed reader and filled it with people whom I also appreciate.
All my gaming time has shifted over to Minecraft because that's what A+ and W- play. I like playing with them. It's a fun way to spend time together and explore different situations.
I probably won't take up Latin or Japanese again for now. I enjoyed feeling my brain get the hang of something new. At the moment, my brain seems to want to get that from piano practice, so that's fine.
I'd like to sew more. A+ wants more skirts, skorts, and dresses, and she doesn't often find clothes to her liking in the stores. She likes it when I wear a matching skirt, too. If I'm working with stretchy fabric, that means using the serger at home. If I'm working with wovens, I can bring the project to the playground for something tangible to work on while the kids play. At home, it tends to feel like a choice between coding, writing, cooking, tidying, or sewing, and I don't pick sewing very often. At the park, sewing gives me something to do while I listen to other grown-ups chat.
I like what I've shifted my time towards: more time outside, time with family, biking and walking (especially awesome when we're out biking as a family!), more gardening, more writing, more drawing. It's okay that other things moved lower on my list.
How much time does it take to track and analyze time?
It doesn't take a lot of time to capture the data: just a few seconds to tap into my most common categories using my phone. I recently added some Tasker tasks and Google Assistant routines so that I can track common categories by voice ("Hey Google, kitchen"), using face unlock to authorize it in case my hands are full. I've written code to automatically add time use tables to my weekly, monthly, and annual reviews, so that's also straightforward.
This particular analysis took me a couple of extra hours spread over several days.
- I noticed some entries I wanted to clean up (mostly when I didn't track when I slept), so that took a little time.
- I wanted to tweak my graph visualization to make it easier to visualize a whole year of data, so I modified it to take up the full width instead of a fixed width, changed the outline to a slightly-transparent version of the category colour, and recoloured the categories based on a palette I picked up from somewhere. This meant I needed to re-figure-out how to modify my web-based tracker, as there were some gaps in my notes.
I wanted an Emacs Lisp way to visualize a single day, which meant adding
quantified-svg-day
and other functions to .Then I could define a named Org Babel block like this:
#+begin_src emacs-lisp :exports results :var day="2012-04-25" (with-temp-file (format "weekday-%s.svg" (substring day 0 4)) (svg-print (quantified-svg-day day 'horizontal)) (buffer-string)) (format "#+ATTR_HTML: :style margin-top: 0; margin-bottom: 0\nSample weekday: %s\n#+ATTR_HTML: :style width:100%%; height: 20px\nfile:weekday-%s.svg" day (substring day 0 4)) #+end_src
To call it, I can use:
Next step would be to visualize the data from a start day to and end day, which could be useful for weekly and monthly reviews.
- I kept wanting to add more thoughts.
I liked reviewing my data, though. Even with just the numbers and graphs, it was a way to revisit those quite different past selves.
This time data works together with other things. I built myself a web-based journal as well–just quick sentences to capture what happened, roughly grouped into categories. That provides a more qualitative view of my day and helps me flesh out the memories.
Other resources
If you like this sort of stuff, you might also want to check out my other posts about time or Quantified Self, or these other people's time analyses:
- [OC] I tracked every hour of my life for 5 years. - 1.5k comments, similar visualization
- I tracked every minute of my life in 2024 - similar visualization
- I tracked every hour of my life in 2024 - similar visualization + category totals
- [OC] I tracked every hour of my life for 2021 (REPOST) - similar visualization + category totals
- [oc] I've started tracking my time in 2023 - Sankey diagram of categories
- Quantified Self โ Analysis of my Time ยท Brett Kobold - location tracking, Tasker
- Quantified Self: Tracking My Time Spent | by Stephanie Rogers | Medium - calendar, category totals
- Time-tracking guide - RescueTime, Toggl, stacked bars, treemap
- I Tracked Every Minute Of My Life For One Year, Here's What I Learned. - used the EARLY app, category totals
- RPubs - Quantified-self Report - group, mood
- I tracked every minute of my time for the last 4 months. Here are 7 totally unexpected results - DEV Community - used Toggl
- I time tracked my life for a month - by Lane Scott Jones - category totals
- Time Tracking Experiment: What I Learned After Analyzing Every Minute of My Life for 30 Days - category totals
- I tracked every minute of my day for 3 years - Quantified Self - Quantified Self Forum - Google Calendar, category totals
- I Track My Entire Life - #35 by Algorithm - QS newcomers - Quantified Self Forum - FileMaker Pro, 25 years, discussion of categories
If you want to start tracking your time, it might be helpful to try it for a short period (a week, a month, whatever) and then see what surprises you. People can track time using all sorts of things: pen and paper, a spreadsheet, a digital calendar, a time-tracking app… It might take a few tries to find something that fits the way you work, and that's okay.
Interactive figures in blog posts with mpld3 was also helpful for figuring out Javascript-enabled charts from Python, for which of course I totally want a smooth Org Mode workflow.
Looking forward to the next few years
Looking forward, I expect childcare to still be a significant portion of my day, but that's all right. It'll wind down all too quickly, so I might as well enjoy it while I'm here. I think I'd like to do maybe 5-15 hours of consulting a month, which is a few hours each week. I enjoy helping my clients explore crazy ideas. Aside from that, there are lots of other things I want to do with my time, and each day feels nicely full. Now that the weather's warming up, I'd like to become even more comfortable with sitting on the porch with a book or a sketch, or going for a walk with A+ to the ice cream store, or wandering around the city checking out playgrounds.
A+ is 9. I am more than halfway to the end of A+'s childhood, and adolescence is around the corner. I have only so many years in this easy stage with W-. My paternal grandmother had dementia towards the end of her life and my mom is dealing with both physical and cognitive decline due to Parkinson's. Tick tock, memento mori, four thousand weeks go by quickly. I'm half-past that mark, too. But it's not a matter to feel despair about or something that should make me try to hang on to this moment too tightly. Keeping track of my time doesn't mean subjecting myself to some kind of Tayloristic time-and-motion study of the sort that dictates how many packages an Amazon warehouse worker must process each hour, out of the urge to wring out every last bit of productivity possible. It's enough, I think, to savour here and now, to laugh at the things I worried about in the past and to accept that future me will also look back and smile.
I wonder what the next few years could look like. I'd like to keep tracking time as a low-effort way to sketch out the shape of my day, to see my revealed preferences and see if they match up with what I value, and to appreciate how little things add up.
Footnotes
2J. Cรผppers and J. Vreeken, "Just Wait for it… Mining Sequential Patterns with Reliable Prediction Delays," 2020 IEEE International Conference on Data Mining (ICDM), Sorrento, Italy, 2020, pp. 82-91, doi: 10.1109/ICDM50108.2020.00017.
You can comment on Mastodon or e-mail me at sacha@sachachua.com.
-
๐ 3Blue1Brown (YouTube) But what is quantum computing? (Grover's Algorithm) rss
Qubits, state vectors, and Grover's algorithm for search. Instead of sponsored ad reads, these lessons are funded directly by viewers: https://3b1b.co/support An equally valuable form of support is to share the videos.
The subtitles on this video were done using AI, and are likely imperfect, but they are open for community corrections at https://criblate.com/
Adam Brown's paper on the connection between Grover's Algorithm and block collisions: https://arxiv.org/pdf/1912.02207
If you want to learn the relevant underlying quantum mechanics here, a very friendly resource is the course Mithuna at Looking Glass Universe is currently putting together. See, for instance, this explainer of a qubit: https://youtu.be/kgSVkVNxXyU
If you want to learn more about the fundamentals of quantum computing, my friends Michael Nielsen and Andy Matuschak put together this wonderful resource, aimed at ensuring long-term memory of core concepts: https://quantum.country/
BBBV Theorem: https://www.scottaaronson.com/qclec/23.pdf
Timestamps: 0:00 - Misconceptions 6:03 - The state vector 12:00 - Qubits 15:52 - The vibe of quantum algorithms 18:38 - Groverโs Algorithm 29:30 - Support pitch 30:11 - Complex values 31:27 - Why square root? 34:01 - Connection to block collisions 35:08 - Additional resources
These animations are largely made using a custom Python library, manim. See the FAQ comments here: https://3b1b.co/faq#manim https://github.com/3b1b/manim https://github.com/ManimCommunity/manim/
All code for specific videos is visible here: https://github.com/3b1b/videos/
The music is by Vincent Rubinetti. https://www.vincentrubinetti.com https://vincerubinetti.bandcamp.com/album/the-music-of-3blue1brown https://open.spotify.com/album/1dVyjwS8FBqXhRunaG5W5u
3blue1brown is a channel about animating math, in all senses of the word animate. If you're reading the bottom of a video description, I'm guessing you're more interested than the average viewer in lessons here. It would mean a lot to me if you chose to stay up to date on new ones, either by subscribing here on YouTube or otherwise following on whichever platform below you check most regularly.
Mailing list: https://3blue1brown.substack.com Twitter: https://twitter.com/3blue1brown Instagram: https://www.instagram.com/3blue1brown Reddit: https://www.reddit.com/r/3blue1brown Facebook: https://www.facebook.com/3blue1brown Patreon: https://patreon.com/3blue1brown Website: https://www.3blue1brown.com
-
๐ 3Blue1Brown (YouTube) Testing your intuition for quantum computing rss
Full video: https://youtu.be/RQWpF2Gb-gU
-
๐ Cryptography & Security Newsletter Certificate Lifetimes to Shrink to Just Forty-Seven Days rss
Apple has done it again. In 2020, when CAs refused to voluntarily accept shorter certificate lifetimes, Apple forced the issue and made everyone accept lifetimes of 398 days. Because Apple is so dominant, CAs had no choice. Now, five years later, Apple has done it again and restricted certificate lifetimes to only forty-seven days. On this occasion, the decision formally happened through the CA/Browser Forum as it should have been, because there was little resistance from CAs. The conversation started in October of last year and went through several iterations. The final ballot was SC-081v3 (see the discussion and results).
-
๐ @cxiao@infosec.exchange absolutely heartbreaking. so many communities affected mastodon
absolutely heartbreaking. so many communities affected
https://www.cbc.ca/news/canada/british-columbia/lapu-lapu-attack-family- colombia-1.7522034
-
- April 29, 2025
-
๐ @trailofbits@infosec.exchange We've discovered another MCP attack technique! mastodon
We've discovered another MCP attack technique!
Attackers can hide malicious payloads using ANSI terminal escape codes. When your AI agent processes these invisible instructions, it can leak data or compromise your supply chain without you seeing anything suspicious.
Read the blog: https://blog.trailofbits.com/2025/04/29/deceiving-users-with- ansi-terminal-codes-in- mcp/
-