HN user

emadda

339 karma

https://enzom.dev

Posts30
Comments157
View on HN
list55.enzom.dev 16d ago

list55.com: Simple transcription: Microsoft's MAI 1.5 model as a web app

emadda
2pts1
list55.enzom.dev 17d ago

Show HN: list55: PWA to transcribe into a plain text list

emadda
3pts0
kg.enzom.dev 4mo ago

Show HN: kg Food Log: Don't Track Calories; Track Molecules

emadda
2pts0
kg.enzom.dev 4mo ago

Show HN: kg Food Log: Reveal the molecules in your foods

emadda
3pts0
kg.enzom.dev 4mo ago

Show HN: kg Food Log (Google Gemini powered nutrition tracker)

emadda
2pts0
enzom.dev 7mo ago

Things I learnt about passkeys when building passkeybot

emadda
173pts146
github.com 7mo ago

Show HN: Passkeybot.com – add passkey auth with a few server side HTTP handlers

emadda
3pts0
github.com 7mo ago

Show HN: passkeybot.com - add passkey auth with a few server side HTTP handlers

emadda
4pts0
hotmatcha.dev 1y ago

Show HN: Hot Notes – Fuzzy Search for Apple Notes (macOS)

emadda
9pts7
hotmatcha.dev 1y ago

Show HN: Hot Notes. Fast fuzzy search for opening Apple Notes

emadda
1pts0
www.youtube.com 1y ago

Show HN: Pocket Log, macOS app, transcribe your audio log into visual a timeline [video]

emadda
1pts0
www.youtube.com 1y ago

Show HN: Pocket Log – macOS app to transcribe many short audio notes [video]

emadda
1pts0
robata.app 1y ago

Show HN: Robata, macOS window selector: put it on the grill

emadda
69pts51
robata.app 1y ago

Show HN: Robata, macOS window switcher

emadda
2pts0
cssprinciples.com 2y ago

Show HN: Interactive CSS Grid Guide

emadda
8pts0
cssprinciples.com 2y ago

Grid: Dabble in Precision: Fundamental Principles

emadda
3pts0
github.com 2y ago

Show HN: Transform-x - Convert between JSON, SQLite and Excel formats.

emadda
3pts0
github.com 2y ago

Show HN: lilo, A CLI to download GCP logs to a SQLite db

emadda
4pts0
bigwav.app 3y ago

Show HN: bigwav.app – Transcription and Annotation using just a web browser

emadda
29pts4
tabserve.dev 3y ago

Show HN: Tabserve.dev. HTTPS proxy using Web Workers and a Cloudflare Worker

emadda
117pts21
tabserve.dev 3y ago

Show HN: Tabserve.dev – A HTTPS url for localhost using only the browser

emadda
5pts3
durafetch.com 3y ago

Show HN: Durafetch – CLI to Download Cloudflare Durable Objects to a SQLite db

emadda
1pts0
bigwav.app 3y ago

Show HN: bigWav.app – web based transcription powered by Whipser and WASM

emadda
2pts0
stay100.app 3y ago

Show HN: stay100.app – AirBnB search engine optimized for large screens

emadda
2pts1
tree-merge.com 3y ago

Show HN: Tree-merge.com. Merge e-commerce categories with a web UI

emadda
3pts1
github.com 4y ago

Show HN: tdog – Download Stripe to SQLite

emadda
1pts0
github.com 4y ago

Show HN: Stripe Sigma alternative: tdog | SQLite | Datasette

emadda
8pts0
table.dog 4y ago

Show HN: Table Dog – CLI to download your Stripe account to a SQL database

emadda
7pts3
github.com 6y ago

Show HN: Piconav for JavaScript SPA Navigation

emadda
1pts0
sqlitempi.com 6y ago

Show HN: SQLite Message Passing Interface for React Native

emadda
2pts0

I like the technical design of WASM, but I feel that better OS sandboxes for regular native code will be the common approach to running untrusted code.

As soon as you compile to WASM you no longer have the C FFI and the ability to call the OS systems interfaces for files, network and others.

It is extra work to move something to WASM vs just compiling it and running it in a sandbox.

I think this comes down to higher competition and practice in Europe.

A football is the default “toy” given to young lads, and you can play anywhere with anyone.

So much so there are custom “no ball games” signs in many neighbourhoods due to noise averse residents getting annoyed.

There are also many supporting elders who try to improve and guide skill development.

Thanks.

It is using Gemini Flash 3 at the moment.

There is a lot to learn in nutrition. The glycemic load metric is quite revealing for pizza vs pasta (slow digesting carbs are supposed to be better). Al-dente cooked pasta is also slower digesting than well cooked pasta.

Another interesting thing is how each plant food has unique molecules that can be health promoting in humans. That was one aspect I wanted to reveal/compare for the foods I ate.

Dr Weil / Perfect Health Diet / Marks Daily Apple are three sources I like to check for information on nutrition.

Vite 8.0 Is Out 4 months ago

esbuild has been very stable for my projects too.

I think it is the only tool in the JS ecosystem that has not broken after a few years.

PKCE protects the auth token from interception by making it so that only your code that started the flow can redeem it by proving they have the secret code_verifier on the redeem_token() call.

The code_challenge == sha256(code_verifier). You will share the code_challenge at the start of the flow.

Yes, that is true, I was assuming that any LLM code was going to be checked by the developer. Step 7 in the guide is "review your code and ensure the important logic commented in the example server is still present".

The LLM is only for converting the JS based example code into your language X and HTTP framework Y (instead of giving example code for every combination of X and Y).

The standard implementation is in a single file `http_server.ts`, which is around 200 lines of well commented code, with important logic commented (around 5 lines). The example code can be run locally with a few commands.

The repo also contains a sequence diagram [1], a description of the HTTP handlers needed [2], and a live demo [3] where you can see the request/responses.

Thanks for your feedback I have made this clearer in the readme.

- [1] https://github.com/emadda/passkeybot/tree/master?tab=readme-...

- [2] https://github.com/emadda/passkeybot/tree/master?tab=readme-...

- [3] https://demo.enzom.dev/

Libghostty is coming 10 months ago

I built a macOS app [1] (to fuzzy search Apple Notes) using Ghostty as a base so that I could use its fast rendering for large lists.

I think there is space for an Electron-like framework but for standalone terminal apps. Looking forward to using Ghostty as a library.

[1] https://enzom.dev/hot-notes/

Instead you should focus on creating notes that you are likely to revisit or likely to share.

One interesting thing I have discovered: the interface matters just as much as the content.

The faster you can recall notes, the more useful you find them, which makes it more likely you will write more notes.

I also put answers in the titles of my notes which allows me to scan a list of previously solved issues. The combination of a vague yyyy-mm-dd.md title and just a file system UI makes recall harder.

I have a fuzzy search app for Apple Notes that has been working well for me:

https://github.com/emadda/hot-notes

I think the speed at which you can open previous notes matters.

If it takes you 1 minute of scrambling in a GUI to find a previous note, you are less likely to read previous notes.

And also less likely to write new ones as you know you’ll never visit it again.

I have an app built on the fzy CLI and Ghostty terminal for Apple Notes. It is working well for me:

https://github.com/emadda/hot-notes

The thing macOS really painfully lacks is not ergonomic ways to run Linux VMs, but actual, native containers-- macOS containers

Linux container processes run on the host kernel with extra sandboxing. The container image is an easily sharable and runnable bundle.

macOS .app bundles are kind of like container images.

You can sign them to ensure they are not modified, and put them into the “registry” (App Store).

The Swift ABI ensures it will likely run against future macOS versions, like the Linux system APIs.

There is a sandbox system to restrict file and network access. Any started processes inherit the sandbox, like containers.

One thing missing is fine grained network rules though - I think the sandbox can just define “allow outbound/inbound”.

Obviously “.app”s are not exactly like container images , but they do cover many of the same features.

Something I have experimented with for a few sites is using Bun JS with HTML in JS strings.

Bun has a —hot flag that regenerates static html on change.

IntelliJ IDE can detect a // language=html comment above strings which formats the html inside and does highlighting etc.

Just using vanilla JS functions instead of a template language lets you write any logic yourself instead of looking up the template languages way of doing it.

Sometimes using mmap for SQL queries can speed them up (if you want to avoid adding too many indexes or cannot modify the db).

Set this on the connection:

PRAGMA mmap_size=…

https://www.sqlite.org/mmap.html

I think this works as it removes data copying between the os and your process.

Your process reads data from the os to execute the query.

With mmap the data reads have less overhead, so a full table scan may be fast enough.

It is strange. That was how I created the original prototype (from the terminal).

But in order to get the "global keyboard shortcut brings the search window forward from any space" behavior, it needs to be its own app. Otherwise, it would interact strangely with your current terminal windows, as they all have the same bundle ID.

I also want it to be easily installable without any dependencies, and usable for all skill levels.

explain bundling an entire terminal emulator for something this simple.

- The app takes 40MB disk space, and around 80MB RAM. So quite light.

- Ghostty is fast, and is needed to render the search result list quickly. It is much lighter than a whole browser engine (Electron apps).

- I wanted a single "drag and drop" install method for all skill levels.

- The app needs its own windows and bundle ID so that the global keyboard shortcut can focus the Hot Notes window without interacting with your other terminal windows.

Not sure that bundling their licenses in a file within Contents/Resources/ is sufficient

You can also view the MIT and other licenses in the About menu.

That's a nice mental model for promises.

But it is not always true that one promise instance can be awaited in multiple places.

In Swift you cannot get the ref to the Promise instance, so you cannot store it or await it at multiple places.

Once you start an async fn the compiler forces you to await it where it was started (you can use `await task.value`, but that is a getter fn that creates a new hidden promise ref on every call).

I did guess it might be harder to do than vanilla SQLite, as vanilla SQLite just has the WAL and main db on the same hard drive, so it has more space to grow the WAL and it is not an issue when the machine/instance reboots (as it just starts where it left off, even if the WAL is large and has not been check-pointed back to the main db).

To be honest this is an edge case. But I often start a read transaction on a SQLite connection just so I know multiple queries are reading from the same state (and to ensure state has not been changed between queries).