Is it relevant? This is not a post about AI coding, and Plandex is not a startup that "went from X to AI-powered X". It also has very little to do with adding AI features to a product... it's a general purpose coding agent, not a tool for building AI features specifically.
I mean, I discuss AI a lot on HN. Do I need to include a disclaimer on every comment?
I think perhaps more important is wether or not you've accepted funding from venture capital, as this would substantially reduce the moral argument made by claiming you're making something open source (as OSS essentially the playbook for developing initial growth in VC land).
I've raised a small amount of funding yes. The project wouldn't exist otherwise. I have a family to feed.
But the open source project is free, full-featured, MIT licensed, and will stay that way.
It also has paying customers via cloud-hosting options, and the economics are working out well so far, fwiw. Lots of work to do, but it's on track to be both a sustainable open source project and a sustainable business.
I'm sorry if that still doesn't meet your lofty moral standards—all I can really say is I'm trying my best to get the balance right.
Fair enough, I am fairly cynical on this subject in particular so my biases got the best of me. Thanks for open sourcing your project (MIT in particular).
If the goal of testing on obscure compilers is to enhance such compilers then I'm all for it.
But I don't see much value in having to dance around implementation details to support a compiler which isn't standards compliant. Ideally standards conforming code should just work, that's the point of conforming to a standard.
Depends if you want people to be able to use your library with those compilers or not. If it's free software, fine. Don't fire well-paying customers though.
Apparently the static_assert trick doesn't work with GCC, it just compiles it with a warning if it's not a constant expression:
warning: expression in static assertion is not an integer constant expression [-Wpedantic]
Instead you can use the sizeof + compound literal with array type, use the comma operator to preserve the type of the expression and cast the result of sizeof to void to suppress the warning:
incidentally, the block allocator implementation fails to properly account for alignment requirements:
since the underlying storage is std::array<char, ...>, it's alignment may be less that the required alignment of the requested type and that of the pointers being stored in the free list.
I'd agree that zig's comptime encompasses many of C++'s features, and I appreciate the approach they took to new features by way of builtins (like @typeInfo + @Type for reflection), but this is not a good example.
Furthermore, why is type traits among the list of features that you claim is subsumed by comptime? not only is that not the case, but type traits are not so much a feature of C++ as they are of its standard library, implemented using templates (a feature of the language).
If you allow `capitalized` to be it's own instance then there's no reason to mutate the comptime parameter in the first place, and it can be replicated in C++17.
I'd normally agree with you, but in this case this function is meant to be used for vectorizable input so it doesn't really matter since it's using a random-access iterator, otherwise you should go with the usual std::count_if().
Static binaries generated by Go are indeed large, even if the source code here is under 30 lines with support to some additional minor features (US and Finnish day names, command line help, optional week headings, day counts and parameter handling).
Here are some more scripts to generate calendar.txt date format:
on the topic of alignment, the library (libpool) fails to align chunk_sz to allow storing a pointer when in the free_chunk list.
This issue is sidestepped in TFA by using a union, which ensures appropiate alignment for all it's members, but in the library there's nothing which prevents me from asking for a chunk size of, say, 9 bytes, which would store pointers at misaligned addresses when creating the free-list.