HN user

Dobiasd

303 karma
Posts29
Comments50
View on HN
github.com 7mo ago

LLM Agents Demystified

Dobiasd
2pts0
github.com 1y ago

Simple collaborative filtering in pure PostgreSQL

Dobiasd
1pts0
github.com 1y ago

Feeling deceived when receiving (non-labeled) LLM-generated messages

Dobiasd
2pts0
github.com 2y ago

Internals of the async/await pattern from first principles

Dobiasd
57pts15
github.com 3y ago

Treebomination: Convert a scikit-learn decision tree into a Keras model

Dobiasd
79pts6
github.com 4y ago

Fixing under-engineered code vs. fixing over-engineered code

Dobiasd
20pts44
github.com 5y ago

Covariance and contravariance explained without code

Dobiasd
3pts0
github.com 5y ago

Why a generic implementation can be the easier-to-understand solution

Dobiasd
3pts0
github.com 6y ago

Threads can infect each other with their low priority

Dobiasd
68pts35
github.com 6y ago

From Spaghetti to Ravioli – A Refactoring Example (Using Kotlin)

Dobiasd
1pts0
github.com 6y ago

When does a when expression in Kotlin need to be exhaustive, and when not

Dobiasd
1pts0
github.com 6y ago

Implementation inheritance is bad – the fragile base class problem

Dobiasd
1pts0
github.com 6y ago

What Kotlin could learn from C++'s keyword const

Dobiasd
1pts0
github.com 7y ago

Another personal, generic, things-I-learned-as-a-software-developer list

Dobiasd
2pts0
github.com 7y ago

Undictify: A Python library providing type-checked function calls at runtime

Dobiasd
2pts0
github.com 7y ago

Undictify (python lib): Type-safe dictionary unpacking / JSON deserialization

Dobiasd
1pts0
github.com 8y ago

Frugally-deep – A header-only library for using Keras models in C++

Dobiasd
1pts1
github.com 9y ago

Creating a replacement for the switch statement in C++ also working for strings

Dobiasd
2pts0
github.com 9y ago

FunctionalPlus now supports function composition with improved type deduction

Dobiasd
1pts0
github.com 9y ago

Functional programming in C++ with FunctionalPlus; HR challange Gemstones

Dobiasd
2pts0
github.com 10y ago

FunctionalPlus – helps you write concise and readable C++ code

Dobiasd
57pts32
github.com 10y ago

A too naive approach to video compression using artificial neural networks

Dobiasd
6pts0
github.com 10y ago

A too naive approach to video compression using artificial neural networks

Dobiasd
2pts0
www.github.com 11y ago

Switching from imperative to functional programming with games in Elm

Dobiasd
67pts2
github.com 11y ago

Img2xls – Convert images to colored cells in an Excel spreadsheet

Dobiasd
35pts18
www.editgym.com 11y ago

EditGym.com – Practice to rearrange text with keyboard shortcuts efficiently

Dobiasd
1pts0
github.com 11y ago

How touch typing can improve the quality of the software you create

Dobiasd
1pts0
github.com 11y ago

Programming language subreddits and their choice of words

Dobiasd
19pts2
github.com 12y ago

Switching from imperative to functional programming with games in Elm

Dobiasd
13pts1

While I did not succeed in making the matmul code from https://github.com/Mozilla-Ocho/llamafile/blob/main/llamafil... work in isolation, I compared eigen, openblas, and mkl: https://gist.github.com/Dobiasd/e664c681c4a7933ef5d2df7caa87...

In this (very primitive!) benchmark, MKL was a bit better than eigen (~10%) on my machine (i5-6600).

Since the article https://justine.lol/matmul/ compared the new kernels with MLK, we can (by transitivity) compare the new kernels with Eigen this way, at least very roughly for this one use-case.

Are there any benchmarks on the performance of these new matrix multiplication kernels compared to the Eigen library (ideally for float32)?

Emacs 29.1 3 years ago

I spent some time over those 30 years looking at new IDEs, trying them out, configuring them, and each and every time this was time wasted, because the IDE was discontinued, abandoned, or otherwise became useless.

"wasted" sounds a bit too hard to me. If you learn and use some tool productively for some years, even if this stops, the years were not wasted. Ephemeral things can also have value.

Yeah, this one does something much less insane, i.e., it converts the paths to the tree outputs into their corresponding DNS (disjunctive normal form) and represents each term as a node (side by side in the same layer) in the NN, as described by Arunava Banerjee in "Initializing Neural Networks using Decision" [1]. The resulting NN architecture is much more reasonable than the one that treebomination produces.

[1] https://www.cise.ufl.edu/~arunava/papers/clnl94.pdf

EditGym - text editing training: https://www.editgym.com/text-editing-training/

It's a website for practicing manipulating text (start -> target, like a diff) quickly (timed) and efficiently (few keystrokes). The allowed keyboard shortcuts are only the "common" ones, that you can use in most "normal" (not Vim, not Emacs) text editors or IDEs.

I made this page not only because I was interested in building it, but also because I actually wanted to have such a training tool. Turned out, I really like using it, but almost nobody else does. :D (There are ads, but the revenue is basically zero.)

This article feels like it was written by someone half-way through [...]

You might be right. I'm not a principal engineer. :)

The first solution in the wild we came up with back then when confronted with this problem, actually was to use a lock-free queue. Only later we figured out, that we did not need the prioritizing after all, and our software worked just fine with all threads having the default priority.

I would like to understand why priority inversion is not a solved problem.

Maybe I just was not careful enough in choosing this phrasing when writing the article.

Do you think it would make sense if I change "but it's far from being solved once and for all." to "each of them with different upsides and downsides."?

Initially I started to built this library solely as a learning experience. But then I needed to deploy Keras models in a specific C++ application and thus added the Keras import. Along the way I learned a lot about the the Keras model format, the details of implementing the different layer types and the computational graph. I would be happy to hear your feedback and to answer questions. :-)

8 hours of standing still (even with good posture) is not the healthiest thing. Movement, using the range of motion of ones joints, changing the posture and alternating load and deload is healthy. This does not happen automatically with a desk job, and even expensive equitment might not be the solution. But there are many different positions one can alternate between (floor: standing, sitting, kneeling, lunging, squatting; chair: sitting upright, leaning forward with some weight on the elbows, reclining with feet elevated, indian style sitting). Additionally one can do some squats and alike regularly, e.g. every time one visits the toilet (aka. "pee, squat, drink"). Making movement an effortless habit ensures that for example the spinal discs get their nutrients pumped in etc.

I really like your remark about the performance of

    if (Contains("I", SplitWords(team)))
so I added it to the README.

If you don't want the 15 in the odds, just to this:

    auto goodOdds = without(15, keep_if(is_odd, numbers));
The fact, that `keep_if` does return a copy can easily obtained by looking at the function signature or the type of `odds`. Both things should not be complicated with a modern IDE.

I agree with you in general. The library is not made for performance-critical stuff.

But the "raw loops etc. are easier to understand by outsiders" seems like an argument agains using any libraries at all.

I write performance critical software for a living (industrial image recognition) and I often try to squeeze the last few percent out of an algorithm. But even in my case the by far largest part of code I write is not performance relevant at all. And there I prefer terseness and readability over performance. Yes, there can be some cases where I have to switch to a more efficient version later, because profiling shows a bottleneck where I did not expect one to be. But in my experience this has never been too big of a problem to sacrifice readability from the beginning in all places.

While working on my last projects I accumulated a collection of pure functions I needed now and then. So I thought, why not write a short pitch as a README and make it public? So here it is. It would be very nice of you if you could tell me what you think, so I can learn and improve.