fredrikholm

Joined 6 years ago

Karma
1,433
Submissions
369
Member since
Oct 8
Blog: https://www.fredrikholmqvist.com/

Email:

I do not own any hosting service. If you're wanting to contact me for this reason, I'm not the Fredrik Holmqvist you're looking for.

[email protected]

View on Hacker News

Recent submissions

Comment · 5 days ago
> I picked it out of a lineup of discounted games in a mall and it hasn't left my psyche ever since.

This is how I found most of my favorite PC games as well, including this one.

Often there were these vertical mesh cylinders with a very low effort sign stuck in them that just read the price and that was it. You had to dig through layers upon layers of arbitrary games and surprisingly often found real gems.

It was an eye-opener for tween me to realize that some of the best games made in that era were about as popular as some of the worst games from the same era.

Thank you for the article, a really fascinating read! Good start to my morning.

Comment · 1 month ago
I found Grim Fandango in a pile of discounted games as a tween in the 2000s. There was a cool skeleton in a suit on the front cover, so I bought it based on that.

Even though I didn't understand most references and sarcasm, few games have grabbed my attention as Grim Fandango did. The art work, the music, the writing. The whole game oozes of style that I've never seen replicated.

Even some 20+ years later I can almost recite most of Act I from heart. If you haven't played this game and like adventure games, this is one of the best.

Thank you for linking OP, this made my morning.

Comment · 2 months ago
This is a recent degradation; they've been writing blog entries for years.

As a non native English speaker I can also attest to this trade being extremely demanding of English fluency:

> public static void DoTheThing(Configuration config)

Isn't something you can not understand and still function as a software engineer. Yes, some schools and universities teach in other languages, but the entire ecosystem from code to documentation to articles is nearly almost always in English.

Comment · 2 months ago
> And if we really want to be nitpicky, and concentrating on the "reverse"-part of your statement, then even Balkan countries shine, as they literally managed to reverse the trend.

That same bump is now reversing and the general trend of depopulation continues to accelerate. IIRC Bosnia has the lowest birth rates in all of Europe.

I appreciate the push back; I was overly confident in that statement. I do think however that it's correct to state that the slow trend across all developed countries could be summarized as "aggressively downwards".

Israel is literally the one exception.

Comment · 2 months ago
> Everybody is asking why birth rates plummet. It’s simple. Having a family costs a fuckton of money.

It's a factor, it's not the only factor.

Decrease in teenage pregnancies, decrease in alcohol consumption, contraception and day after pills, higher levels of education, less socialized culture, less generational housing etc.

Having a child is more than often a deliberate, calculated decision that is made by adults whereas in the old world pregnancies happened left and right with little to say about it. Support systems existed because the problem was pervasive. Now the problem is generally gone, and the support systems thereafter.

No country has managed to reverse the trend of declining birth rates. The better quality of life people have, the fewer children people tend to have.

It's not just about who does and who doesn't have children, it's also how many children per family. 1-2 children is the new normal. My grandpa was #7.

Comment · 4 months ago
Continuations predate transducers by some ~40 years and are mostly used as a means of control flow, but yes they are very similar.

Transducers are specialized to data transformation pipelines, continuations are a form of control flow from which you can derive a lot of cool things (exceptions, time travel debugging etc).

Comment · 5 months ago
Once allocators in general click, memory management in C becomes a total breeze.

Combined with typed fat pointers (slices and strings), typed hashmaps and stack-trace-assertions, C in general becomes quite nice. The rest is compiler flags.

Go solves this by being a better language out of the box, but with the Wirthian aspects removed they feel very similar. Perhaps not so surprising.

Comment · 5 months ago
Comment · 5 months ago
It's important to factor in lifestyle factors here.

By the time you hit 40, you've accumulated ~20 years of adult-life habits. For a lot of people, that lifestyle is very sedentary, missing most dietary recommendations (insufficient fiber intake, oversufficient saturated fat intake), poor sleep, frequent emotional stress etc.

As a young adult, you've spent most of your life being very active, sleeping ~10 hours a night (as a child), having plenty of downtime and playtime etc. It's why you can party hard, study hard and sleep a little; you're starting fresh.

The good news is that some of these habits are massive levers; biological age can drift decades (worst-to-best).

Comment · 5 months ago
> very abstract things

A C macro with literals that lacks referential transparency:

  #define MULTIPLY(x, y) x * y
  int result = MULTIPLY(2 + 3, 4); // 14
Not knowing what something means does not make it bad, which is what I'm assuming you meant given how you phrased your sentence.

Having a shared language of patterns and problems that occur in programming is a good thing. Ridiculing such terminology on the basis of "that group of programmers sure are weird" is pointless and counter productive.

Comment · 5 months ago
Agreed, I even find it surprisingly ergonomic. Thinking of data as offsets into memory is unusual coming from almost every other language, but once you grokk it it's actually quite nice.

I love C more than I should.

Comment · 5 months ago
I love that book so much, it helped me grokk the more lambda calculus aspect of FP more than anything.

A few chapters in I belly laughed when it dawned on me that it's going to be recursion until the cows come home. The authors insistence on working through the steps is endearing and comical. Great book to come back to every once in a while.

Comment · 6 months ago
Having to debug the build system to your build system is something else.
Comment · 6 months ago
> When I observe normies they don't seem to care. They'll force and abuse things all the time. I did wonder if it was part of my predisposition towards engineering.

Caring implies doing the right thing, which you can't afford lest you now be bogged down with the burden of doing it correctly, which requires effort.

Some people use dull knives because the thought of maintaining and sharpening them is worse than almost losing a finger every time they need to cut a tomato in half.

I suspect that a lot of people find proactive and sustained effort to be so draining that they'd rather continually have second rate experiences and find peace in that. Then there's people who just generally don't care.

I'm hoping (for my own sanity) that this is a bias on the observer as it's easy to look at someone from the outside and not see the areas where they do care and do the right more times than not. I know I've been unable to live up to my own standards plenty of times throughout the years for factors outside of caring.

Comment · 7 months ago
> You don't need a repl for this workflow and it can be easily implemented in any language. `ls *.MY_LANG | entr -c run.sh` You get feedback whenever you save the file.

As in restarting the entire program and re-running every subsequent query/state changing mechanism that got you there in the first place, being careful not to accidentally run other parts of the program, setting it up to be just so, having to then rewrite parts if you then want to try something somewhere else?

Perhaps I'm misunderstanding you, because that sounds horrible unless you're scripting something small with one path.

The whole point of the REPL is that you evaluate whatever functions you need to get into your desired state and work from there. The ad hoc nature of it is what makes you able to just dig into a part of the code base and get going, even if that project is massive.

> Personally, I find waiting more than 200ms unacceptable and really < 50ms is ideal.

Calling a function on a running program takes microseconds; you're not restarting anything.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton