HN user

melvinroest

858 karma

Hello fellow HN'er! Let's have a chat at

melvinroest <the fancy a> <Google's email brand> <the most popular TLD in the world>

Some hints are gmail, @ and .com ;-)

---

Random HN'ers are always welcome to join, feel free to email me!

——-

Product engineer and marketing (data) analyst.

Posts31
Comments335
View on HN
raghunathnair1-rgb.github.io 15d ago

Raghu // dark-factory – press any key or click to power on

melvinroest
4pts0
news.ycombinator.com 16d ago

Ask HN: Are there good security benchmarks for LLMs?

melvinroest
7pts1
arxiv.org 1mo ago

Memo: Memory as a Model

melvinroest
2pts0
alexkondov.com 5mo ago

Common Sense Refactoring of a Messy React Component

melvinroest
1pts0
explore.ghost.org 7mo ago

Ghost Explore

melvinroest
1pts1
github.com 8mo ago

AI Agents from Scratch

melvinroest
3pts0
www.thelittlelearner.com 1y ago

The Little Learner A straight line to deep learning

melvinroest
2pts0
news.ycombinator.com 1y ago

Ask HN: From software engineering to product management (EU)?

melvinroest
3pts2
en.wikipedia.org 2y ago

Pyrrhic Victory

melvinroest
9pts1
lannonbr.com 2y ago

Array.shift Optimizations in Firefox's JavaScript Engine (2020)

melvinroest
54pts42
news.ycombinator.com 2y ago

Ask HN: Does anyone know anything about tummo meditation? (raising body temp.)

melvinroest
3pts0
blog.gaborkozar.me 2y ago

Rust oddness: integer literal references?

melvinroest
4pts1
mathsgear.co.uk 3y ago

Hyperbola Clock

melvinroest
2pts1
github.com 4y ago

Pharo Chip Designer (note: the whole programming env + tools are shipped also)

melvinroest
11pts0
github.com 4y ago

Machine Learning in Pharo

melvinroest
2pts0
www.youtube.com 4y ago

How Quantum Computers Work (YouTube Video, 20 min.)

melvinroest
1pts0
news.ycombinator.com 5y ago

Ask HN: How many instructions do high-end consumer CPUs perform per cycle?

melvinroest
2pts0
news.ycombinator.com 5y ago

Ask HN: Would it be educational to map error messages to common mistakes?

melvinroest
32pts22
github.com 5y ago

Show HN: More HN

melvinroest
17pts16
nanopub.org 6y ago

Nanopublications: Fair data containers for scientific results

melvinroest
15pts6
news.ycombinator.com 6y ago

Ask HN: Twice): How to do proper front-end testing? Is it useful enough to do?

melvinroest
1pts1
www.economist.com 6y ago

The next Olympics should include Fortnite

melvinroest
34pts83
www.economist.com 6y ago

Locusts have hit east Africa hard

melvinroest
4pts0
iximiuz.com 6y ago

Node.js Writable Streams Distilled

melvinroest
2pts0
www.youtube.com 6y ago

The bizarre physics of fire ants: it acts like a solid and a fluid

melvinroest
1pts0
news.ycombinator.com 6y ago

Ask HN: I just started my first real workday, any tips?

melvinroest
41pts56
news.ycombinator.com 6y ago

Paramotor and Powered Paragliding

melvinroest
1pts0
doodledocs.com 6y ago

Show HN: Doodledocs.com Draw Together with a Stylus

melvinroest
1pts1
news.ycombinator.com 6y ago

Ask HN: Is there someone willing to coach me and other HN'ers in math?

melvinroest
1pts0
doodledocs.com 6y ago

Show HN: Doodledocs – draw on a blank canvas or annotate websites together

melvinroest
18pts1

I am curious to check them out! I hadn’t heard of them. Marketing stuff takes time as I have noticed with aliceindataland.com [1]. Maybe I should do a show HN. I will think about it.

To be fair, vibecoding this memo app in Swift didn’t take too long. There were some tricks to it, using xcodegen helped a lot so that I don’t need to use the Xcode project.

It’s fun to see Swift code. I used to do some Objective-C back in the day.

[1] another thing I made. It’s a sequel to the Alice in Wonderland stories. It’s also a SQL course. I vibe engineered it, meaning I looked at the code and used AI-assisted development.

Except for the story though that’s almost all fully me. LLMs aren’t great storytellers. The same is true for the lesson scaffolding, that’s almost only me.

A voice memo app, quite like the actual voice memo app from Apple. The thing is: now I can put my voice memo's on iCloud put Claude Code on it and make my transcripts into structured notes that my app then also displays.

So basically a way to just go on an hour long walk with myself, spit everything from the top of my dome stream of consciousness style, and then have Claude structure whatever I said.

It's nice to have something that structures my thoughts by just thinking out loud.

I vibecoded it (it's approaching 20K lines including tests). It works quite well but there are some bugs, so will have to do some actual engineering. But the UX is working quite well.

What should we do when code is cheap?

Make usable software. Cheap code means that you can create a lot more prototypes to then perform usability tests by finding a user and sitting next to them. I mostly worked on internal apps lately, so perhaps it's much easier for me to do than it is for some others.

Edit: yep, I really do type this much. I'm a bit of a "thinking out loud" person.

Cognitive Debt, Like Technical Debt, Must Be Repaid

In quite a few circumstances, cognitive debt doesn't entirely need to be repaid. I personally found with multiple projects that certain directions aren't the one I want to go in. But I only found it out after fully fleshing it out with Claude Code and then by using my own app realizing that certain things that I thought would work, they don't.

For example, I created library.aliceindataland.com (a narrative driven SQL course). After a while, I noticed that the grading scheme was off and it needed to be rewritten. The same goes for how I wanted to implement the cheatsheet, or lessons not following the standard format. Of course, I need to understand the new code but I don't need to understand the old code.

With other small forms of code, I just don't really need to know how things work because it's that simple. For example, every 5 minutes I track to which wifi network I'm connected with. It's mostly useful to simply know whether I went to the office that day or not. A python script retrieves the data and when I look at it, I can recognize that it's correct. But doing it this way is sure a lot faster than active recall.

At work, I've had similar things. At my previous job I created SEO and SEA tools for marketing experts. So I remember creating this whole app that gave experts insights into SEO things that Ahrefs and similar sites don't, as it was tailored to the data of the company I worked at. The feedback I basically got was: the data is great, the insights are necessary, but the way the app works is unusuable for us. I was a bit perplexed as I personally didn't find it that complicated. But I also know that I'm not the one using it. Then I created a second version and that was way more usable. The second version assumed a completely different front-end app and front-end app architecture though. All the cognitive debt of V1? No payback needed.

The reason that this is the case, as it seems to me, fall under a few categories:

1. Experimenting with technologies. If you have certain assumptions about how a technology works but it turns out you're wrong, or you learn through the process that an adjacent technology works way better, then you need to redo it. Back when coding by hand was such a thing, I had this with a collaborative drawing project called Doodledocs (2019). I didn't know if browsers supported pressure sensitivity and to what extent it was easy to implement. It required a few programming experiments.

2. It's a small and simple script, not much more to it.

3. Experimenting with usability. A lot of the time, we don't know how usable our app is. In my experience, this seems to be either because (1) it's a hobby project or (2) the UX people have been fired years ago. In these cases, more often than not, UX becomes an afterthought. But with LLMs, delivering a 95% fully working version is usually done within a week for a greenfield project. This 95% fully working version is an amazing high fidelity interaction prototype (95% no less). Once you do that for a few iterations, you then understand what you really need. Once you understand what you really need, then you can start repaying the cognitive debt.

I've found it's usually category 3, sometimes 2 and rarely 1.

library.aliceindataland.com

I'm having fun writing a sequel on the books that Lewis Carroll wrote and mixing it with a SQL course. My hope is that SQL will be more fun to learn that way. And it's fun to write a few pages that will hopefully evoke some narrative transportation and immersion vibes.

I'm still very much at the beginning though.

In the story Alice enters an Infinite Library. You (yes you!) are STAR: a magical sentient typewriter that can only write in SQL queries. When Alice finds you, you'll slowly both find out why this library exists and the secrets that it holds.

Course-wise: I'm trying to have tight lesson scaffolding, which is a fun challenge.

TL;DR: you don't need to do any treasure hunt on your notes by just typing stuff into the search bar. Having your own graphRAG system + LLM on your notes is basically a "Google" but then on your own notes. Any question you have: if you have a note for it, it will bubble up. The annoying thing is that false positives will also bubble up.

----

Full reaction:

Yes but perhaps not in a way you might expect. Qwen's reasoning ability isn't exactly groundbreaking. But it's good enough to weave a story, provided it has some solid facts or notes. GraphRAG is definitely a good way to get some good facts, provided your notes are valuable to you and/or contain some good facts.

So the added value is that you now have a super charged information retrieval system on your notes with an LLM that can stitch loose facts reasonably well together, like a librarian would. It's also very easy to see hallucinations, if you recognize your own writing well, which I do.

The second thing is that I have a hard time rereading all my notes. I write a lot of notes, and don't have the time to reread any of them. So oftentimes I forget my own advice. Now that I have a super charged information retrieval system on my notes, whenever I ask a question: the graphRAG + LLM search for the most relevant notes related to my question. I've found that 20% of what I wrote is incredibly useful and is stuff that I forgot.

And there are nuggets of wisdom in there that are quite nuanced. For me specifically, I've seen insights in how I relate to work that I should do more with. I'll probably forget most things again but I can reuse my system and at some point I'll remember what I actually need to remember. For example, one thing I read was that work doesn't feel like work for me if I get to dive in, zoom out, dive in, zoom out. Because in the way I work as a person: that means I'm always resting and always have energy for the task that I'm doing. Another thing that it got me to do was to reboot a small meditation practice by using implementation intentions (e.g. "if I wake up then I meditate for at least a brief amount of time").

What also helps is to have a bit of a back and forth with your notes and then copy/paste the whole conversation in Claude to see if Claude has anything in its training data that might give some extra insight. It could also be that it just helps with firing off 10 search queries and finds a blog post that is useful to the conversation that you've had with your local LLM.

I have journaled digitally for the last 5 years with this expectation.

Recently I built a graphRAG app with Qwen 3.5 4b for small tasks like classifying what type of question I am asking or the entity extraction process itself, as graphRAG depends on extracted triplets (entity1, relationship_to, entity2). I used Qwen 3.5 27b for actually answering my questions.

It works pretty well. I have to be a bit patient but that’s it. So in that particular use case, I would agree.

I used MLX and my M1 64GB device. I found that MLX definitely works faster when it comes to extracting entities and triplets in batches.

In my agent file I explain that I have a static analyzer which generates a callgraph. On starting the agent runs ~/.agent/tools/__callgraph__/generate_callgraph.py

It then gets to see callgraph.current.md and upon subsequent sessions callgraph.diff.md.

Here is an example of some output that I currently have in callgraph.current.md

  ## src/components/Header.tsx

  - **export Header({ ... }: Props)** (start 9, end 54) → `useAuth`

  ## src/components/HelpTooltip.tsx

  - **export HelpTooltip({ ... }: Props)** (start 15, end 42) → (none)

  ## src/components/ResultsTable.tsx

  - **getHeaderLabel(col: { id: string; columnDef: { header?: unknown } }): string** (start 45, end 51) → (none)
  - **getCellValue(colId: string, original: KeywordResult): string** (start 53, end 74) → (none)
  - **export ResultsTable({ ... }: Props)** (start 76, end 406) → `getCellValue`

  ## src/components/SettingsDrawer.tsx

  - **export SettingsDrawer({ ... }: Props)** (start 158, end 336) → (none)
For example:

ResultsTable calls getCellValue.

In these cases it's just one function but you also have stuff like

  **export Dashboard()** (start 36, end 635) → `getTopKeywords`, `normalizeText`, `searchKeywords`, `searchKeywordsMulti`, `searchSemantic`, `searchSemanticMulti`
For the Python version it also gives the parameters and types along with it. I think the next thing I'd need to do is give self-defined type definitions. Doing things this way allows an LLM to not read all that much but to be able to reason relatively well over what the code does. The caveat is that you abstracted your code well. If you didn't, the LLM doesn't know your implementation.

I probably should also add return types.

I've been doing something less formal. I stumbled upon Riaan Zoetmulder's free course on deep learning and medical image analysis [1] and found his article on spec-driven development [2]. He adapts the V-Model by specifying three things upfront: requirements, system design and architecture. The rest gets generated. He mentioned a study where they show that LLM assistance slowed down experienced open source devs on large codebases. The model doesn't know the implicit context. And to me that's the thing! An LLM should have an index of some sort.

So I vibe coded my own static analysis program where I just track my own function calls. It outputs a call graph of all my self-defined functions and shows the name (and Python type hints) of what it is calling (excluding standard library function, also only self-defined stuff). Running that program and sending the diff from time to time seems to have helped a lot already.

[1] https://www.riaanzoetmulder.com/courses/deep-learning-medica...

[2] https://www.riaanzoetmulder.com/articles/ai-assisted-program...

Fix your tools 5 months ago

I haven’t tried n8n and similar tools but I always had the suspicion that they wouldn’t be that good. Would you say there are scenarios where tools like n8n would be better to use than Python and calling some APIs?

A free interactive SQL tutorial that will get to the level of being a data analyst. It's Alice in Wonderland themed.

I used to be a coding bootcamp instructor, TA and guest lecturer. I've noticed more and more people need to learn SQL for various different reasons. I'm mostly concerned about lesson scaffolding since most SQL courses don't do it that well. I'm hyped about AI but they're not great with lesson scaffolding.

I'm 33% to 50% done. I've already noticed the way I scaffold the lessons is unconventional. For example, for the first 50%, I don't want students to know what tables are. It's too much all at once, everything should be small bites before the big concepts get introduced.

If anyone is interested in testing the beta version, let me know. It will be up within the next 2 weeks probably. My email is in my profile.

I think if I'd go down memory lane I would come up with quite a lot. But one sticks out immediately.

I was in Thailand on a bus, with only Thai people, it was a really local bus. The bus would stop around every 30 miles/50 kilometers. I didn't know that. I needed to get off at a particular stop as it was close to the meditation retreat I was going to (Phitsanulok). I miss the stop. I figure it'd be fine. I didn't realize the 30 miles thing. So after half an hour of driving I ask the bus driver when it's going to stop. He said he'll stop in another 15 minutes.

It was about to get dark. I asked him if he could please stop now. I was 25 miles away, it'd be rough but 8 hours of walking is doable. He stopped, now I was on the side of the road. It had gotten dark.

I noticed houses next to the side of the highway. It was a strange sight to walk next to a highway and see houses next to it. In one case, I saw a father, mother and 2 children outside ready to go inside.

I asked them for help. They didn't speak English but listened. With our hands and feet and a bit of Google Translate, I got to tell them my story. The father looks at me with understanding eyes and gestures for me to get on the back of the moped. I get on the back. He brings me to a police station. He says they'd take me to Phitsanulok.

In the police station, no one was there. There was one light on and blinking. The room itself looked grey-ish white. I felt like I was in the beginning scene of a horror film. Before the father left, I asked him why there was no one here. He told me that the policemen were having dinner and they'd probably be done in an hour. I sat there for an hour.

The policemen came out, they looked at me surprised. They spoke English, I told them my situation. They said "alright, get back in the car". And they just gave me a whole ride of 25 miles to where I exactly needed to be.

To say that I was grateful would be an understatement. I offered them money, because while I know that they are just working, I reckon that this type of stuff is not in the job description of a policeman. I was purely offering it out of gratitude. They said no. I offered 2 more times, they still said no. I did my best to show I was incredibly grateful and I think they got the message, haha.

Thanks to those Thai policemen, and other acts of kindness I've experienced over the course of my life, I will pay it forward. Not because I feel I have to, mostly because I see how wonderful that attitude actually is.

it never seemed really practical.

IMO this is partially true but that's mostly because not enough people are working on it. If Pharo would have as much people working on it as Python, it'd be practical really quickly.

Maybe what I was missing the most was static/explicit typing

I actually have a talk where you can hack typing in. To be fair, it will be checked during execution, so it's not a compile time thing. It's somewhere around here (I did like 3 mini talks in one mini talks, it was pure chaos, haha [1]). It's about 5 min., the whole talk.

Personally, I'm a fan of type hints, but ultimately engineering culture and standardization is more important. Or at least, in a professional context, in a personal code context I like dynamic typing and when it gets too big, I refactor it to explicit typing.

[1] https://www.youtube.com/watch?v=FeFrt-kdvms&t=2270s

This is just my 2 cents.

This is why I programmed in Pharo (a Smalltalk descendant) professionally for a while to get that experience [1].

I feel like that using iPython is good enough of an experience to be honest. Could it be better? Sure.

But the fact that this is my iPython session:

ipython Python 3.12.9 | packaged by conda-forge | (main, Mar 4 2025, 22:44:42) [Clang 18.1.8 ] Type 'copyright', 'credits' or 'license' for more information IPython 8.32.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: def foo(): ...: return 'bar' ...:

In [2]: foo() Out[2]: 'bar'

In [3]: def foo(): ...: return 'baz' ...:

In [4]: foo() Out[4]: 'baz'

says a whole lot I think :)

The cool thing with Pharo and Lisp of course is the whole "treating code as data", where Lisp is arguably even more intense at it than Pharo - since the syntax is basically an abstract syntax tree. It really allows for automated reasoning (e.g. "give me all functions of xyz type with abc parameters, constrained to only pqr classes and only showcase the lines where they were being called, skip the definitions). So that's awesome. I haven't tested Python on this a whole lot yet and I don't know enough about Lisp to say anything useful about it, but with Pharo I vaguely remember doing some insane things since you can also access the AST and have reflection on that as well.

Pharo of course has the whole debugger inside a debugger inside a debugger experience. But that has had quite some limited use because a new process is spawned for that new debugger, so you won't have access to the exact same context that you need. I vaguely remember that some class based variables didn't have the state I needed when I went debugger inside a debugger mode. I think it was WADynamicVariable of the Seaside framework and it was because it was a singleton like thing (IIRC) and in order to have a certain behavior it could only do that by triggering exceptions (I really don't remember it well). The point is, it needed such obscure behavior to behave in the way it needed to that the debugger inside a debugger wasn't expected to copy that exception flow context, as it wasn't really intended to be used like that.

[1] I would've worked there for longer but the company got Americanized. Our company - that was profitable - got subsumed by a venture capitalist firm that had 2 companies like it that were unprofitable. We became a subsidiary/sub-company basically. Suddenly tech layoffs came, 2 rounds at least, because the company as a whole was unprofitable (as in: the other 2 subsidiaries were unprofitable and we had to pay the price). I'd have stayed there for much longer if that didn't happen. I will go on record and say that: it is my personal opinion that they destroyed a good company with good people. I won't name the company, but given that I'm posting under my real name, it's not too hard to figure out.

Reminds me a bit of the Seaside framework in Pharo. A lot of the things I programmed in Pharo at my previous employer was a lot of back and forth between front-end and back-end, because the back-end was managing the front-end state. For B2B apps that don't have a lot of latency requirements, etc., I'd say it's better. For high scalable B2C apps though? No.

You can argue both sides right? It makes business sense for oil money to do that.

However, there's also a trend that giant corporations are kind of like giant oil tankers (no pun intended). It takes a humongous amount of energy to change a company's fundamental core business. Oil companies are in the business of oil. Even if they expand to becoming an energy company, it takes a long time for them to change their "oil DNA". Based on that, I can imagine that certain oil companies - though not all oil companies - elect to maintain the status quo.

I don't think this is unique to big oil. It's unique to big {pharma, tech, oil, *}. What I find harder to find out is what the "weights" are for both sides and how they are influenced.

This post reminds me of something.

During my first Introduction to Programming course at university, I was taught Java. One thing that I found very troubling is that it wasn't easy, or possible in many cases, to change the programming language. Sure, you can write new functions or methods or classes, but I can't change the keyword for an if-statement. I also remember the TA saying "why would you want that?" I caught myself thinking "if we can program a computer, then why can't we program a language?"

15 years later, I still have this issue a bit, except I made my peace with it. It is what it is. There are some exceptions though! Such as: Lisp, Smalltalk and similar languages. It's in part why I have worked for a company that professionally programmed in Pharo (a Smalltalk descendant [2]). I remember hacking a very crude way for runtime type checking in Pharo [1], just for fun.

I'm not a Ruby programmer, all I know is that Ruby has some things that are identical to Smalltalk. But my question to the author would be: if you long for things like keyword arguments, type hints and namespaces why don't you program it in the Ruby language yourself?

Or is that really hard, like most other languages?

[1] https://youtu.be/FeFrt-kdvms?si=vlFPIkGuVceztVuW&t=2678

[2] Fun fact, I learned about Lisp, Smalltalk and Pharo through HN! So I know most of you know but I suspect some don't.

Q: how do I brush my teeth?

AD:

BLURB TOOTHPASTE IS THE BEST PASTE FOR YOUR TEETH!!!

Open the blurb, ask it the meaning of life and get your tooth paste in 42 seconds!!

"Blurb toothpaste changed my life, no like literally. I thought I'd just always work in a dead end office job but it made me realize I should be an Instagram influencer and it's totally the vibe I was looking for. I handle my bills now by just not looking at them! Why did I never think of that? Haha"

"Blurb toothpaste really helped me with some hard to deal relationship problems when my husband didn't approve of me using and confiding in Blurb. I know it's odd to brush with a sentient toothpaste, but it's just _so good_ at cleaning your teeth! And the conversations are always nice too. Ever since my husband uses the Blurb paste too, he understands."

BLURB TOOTHPASTE, GET ON THE BLURB TRAIN BLURBADEEERRRPP!!

Buy now for only $1337.42 per tube!

Blurb Toothpaste Inc. is not liable for damage to your emotional or physical health. Read the label description for more info. Blurb toothpaste is for entertainment use only and not a professional dental product.

Gemini answer: with a toothbrush.

---

Damn...

You're right!

AI is everywhere.

(To be fair though, this whole text was my own whimsicalness, haha. It's probably spottable by some turns of phrases that Dutchies use and English native speaking people definitely don't)