HNHacker News
TopNewBestAskShowJobs

continuational

1,365 karma · joined August 3, 2015

Hi there!

I'm a husband and a father of two. I've been working in Scala for over a decade, and I'm part of the founding team at Paqle.

I work on a full stack programming language called Firefly and I organize a functional programming meetup in Copenhagen:

https://www.meetup.com/moedegruppefunktionellekoebenhavnere/

It's once a month - swing by if you'd like to meet up!

meet.hn/city/55.6867243,12.5700724/Copenhagen

submissionscomments
continuational··on Don't Be Afraid of Types
Did you forget to include `middle-name`?

There's no way to tell.

continuational··on RubyLLM: A delightful Ruby way to work with AI
Certainly a taste for global state, it seems.
continuational··on RubyLLM: A delightful Ruby way to work with AI
Why is it using a global variable for this?
continuational··on Ask HN: What are you working on? (February 2025)
Thank you!
continuational··on Ask HN: What are you working on? (February 2025)
Thank you!
continuational··on Ask HN: What are you working on? (February 2025)
Firefly is a typed full stack programming language:

- object capabilities

- implicit async/await

- immutable collections

https://www.firefly-lang.org/

It's small and (hopefully) fun, and quite usable already. If you try it out, please share your thoughts!

continuational··on If you believe in "Artificial Intelligence", take five minutes to ask it
As the article mentions, LLM is often wrong, particularly on niche topics. But if you have some other way of verifying the answer, it's still useful.
continuational··on Working with Files Is Hard (2019)
> Pillai et al., OSDI’14 looked at a bunch of software that writes to files, including things we'd hope write to files safely, like databases and version control systems: Leveldb, LMDB, GDBM, HSQLDB, Sqlite, PostgreSQL, Git, Mercurial, HDFS, Zookeeper. They then wrote a static analysis tool that can find incorrect usage of the file API, things like incorrectly assuming that operations that aren't atomic are actually atomic, incorrectly assuming that operations that can be re-ordered will execute in program order, etc.

> When they did this, they found that every single piece of software they tested except for SQLite in one particular mode had at least one bug. This isn't a knock on the developers of this software or the software -- the programmers who work on things like Leveldb, LBDM, etc., know more about filesystems than the vast majority programmers and the software has more rigorous tests than most software. But they still can't use files safely every time! A natural follow-up to this is the question: why the file API so hard to use that even experts make mistakes?

continuational··on Do any languages specify package requirements in import / include statements?
Yes! Small scripts should live in a single, self contained file.

In Firefly, you can specify dependencies at the top of the file:

https://www.firefly-lang.org/

When your project grows, you can move the dependencies to a single shared project file.

continuational··on Great things about Rust that aren't just performance
Null pointer panics rarely happen where the null is introduced.

Instead the null propagates somewhere else where you assume non-null, and you get the panic there.

That's bad error reporting, and it only happens because Go lacks a proper nullable/option type.

continuational··on Some programming language ideas
Only capability type can have fields containing other (concrete) capability types.

If Canvas contains NodeSystem, then Canvas must be a capability type itself.

continuational··on Some programming language ideas
Thanks!

Yes, you can store the system value (or indeed any other object capability) in a list.

If a function takes in a List[NodeSystem] parameter, then the function can perform side effects through the methods on NodeSystem.

However, if a function takes in a List[T] where T is a type parameter, then that is not enough to perform side effects, even if that function is later called with a List[NodeSystem] argument. There is no way for the function to access the methods of the concrete type of T.

Hence, you can tell whether or not a function may have side effects from the function signature alone.

continuational··on Some programming language ideas
Interesting points!

We're working on a language with some of these ideas:

https://www.firefly-lang.org/

Object capabilities, async calls as easy as sync calls, modular monoliths, and (eventually) unified logging.

None of the relational language features though.

Feedback appreciated!

continuational··on Ruby 3.4.0
Experienced teams love magic?
continuational··on Ask HN: Programmers who don't use autocomplete/LSP, how do you do it?
Good riddance?

Why spend your life doing something a computer could do for you?

The goal of programming is not to write code (however much I enjoy that part), it is to solve problems.

I don't think copilot et al is anywhere close yet though. They are occasionally useful when working with popular APIs you use very rarely, or when you need to write some very repetitive code. Other than that, I feel like it's mostly a monkey typing plausible but incorrect code on my screen everywhere I go.

continuational··on Two never-before-seen tools, from same group, infect air-gapped devices
You can't just present the user with something that amounts to a "Press OK to continue" dialog, and call them stupid when they press OK, and call them whiney when they think it's annoying.

That's lazy design, and it doesn't work.

continuational··on Everything you need to know about Python 3.13 – JIT and GIL went up the hill
Python isn't "thread safe", not even its lists are. What are you getting at?
continuational··on Gnome Files: A detailed UI examination
> The same people often complain that terminals break with "standard shortcuts" because they can't copy with ctrl-C...

It does break with standard shortcuts. And worse, there's absolutely no consistency between terminal applications on which shortcuts to use. It's a mess, and complaints are warrented.

continuational··on Is AI eating all the energy?
That's apples to oranges.

No human ingests that many tokens of speech; individually we learn from far fewer tokens.

continuational··on The Vala Language (2017)
Agreed - languages that keep on changing result in a lot of churn in the ecosystem, as older libraries quickly feel dated when they do things "the old way".

New features often interact poorly with some of the existing features, as those features weren't designed with the new feature in mind.

continuational··on Defense of Lisp macros: The automotive field as a case in point
Macros allow you to bring highly tailored DSLs into your code base. You can practice language oriented programming.

It's seductive, but there's a steep cost. You bring in a bunch of new notation, which you have to learn and teach and remember. You have to consider all the interactions that happen when you mix notations. You have to implement all the tooling.

Usually what happens is you don't quite remember what things mean after a while, and you have to study it again. You didn't consider all the interactions, so it isn't that well behaved. And you never got around to implement quality tooling - and there's no obvious place to plug that tooling in, either. And then it turns out that the notation wasn't quite right for implementing the changing requirements of the business.

continuational··on We Love Writing Software So Much, We're Willing to Do It for Free
Do you really feel justified in shaming someone who gives you a gift?
continuational··on Ant Design – the second most popular React UI framework
Just a quick bug report on iOS Safari, if any contributors come across this: The top carousel is more than a screen high when loading, and the "Hot" badge seems to be in the wrong place.
continuational··on Facebook just updated its relationship status with Web Components
Thank you for your answer. It makes sense in a historical context.

But then, all languages since Objective-C seem to agree that namespacing is a good idea. There's no debate there. Even JavaScript has modules now. So I can't help but wonder what makes web components unique in this regard.

continuational··on Facebook just updated its relationship status with Web Components
> Web components get imported and registered at the global level. This also means if two different libraries have a component called my-button, you can’t use both of them.

In my opinion, fundamental problems like these really ought to be addressed before things become part of the web platform.

continuational··on IBM Granite: A Family of Open Foundation Models for Code Intelligence
Is there an online demo of this somewhere?
continuational··on A mostly complete guide to React rendering behavior (2020)
The problem with using the DOM or similar UI frameworks is that you have to code the delta from any state to any state by hand.

This is exceedingly complex, error prone (because you might miss parts of the state that should change) and often slow (because you tend to overcorrect).

continuational··on Functional semantics in imperative clothing
There doesn't seem to be much about the limitations of this approach, e.g. will this work?

    list.map (lambda f => readFile! f)
continuational··on Ask HN: What are your go to shell one-liners?

    win
continuational··on Neon Serverless Postgres is generally available
Branching the whole database (data included) seems really great. Congrats!

It does seem a bit pricey though. For $69/month (Scale), I could rent a dedicated server with 8 dedicated CPUs, twice the RAM and 20x the storage (and that's physically attached NVMe in raid 1), and have money to spare: https://www.hetzner.com/dedicated-rootserver/matrix-ax/

← PreviousPage 3 of 17Next →