HNHacker News
TopNewBestAskShowJobs

metafunctor

4,835 karma · joined July 21, 2009

I’m a software entrepreneur.
submissionscomments
metafunctor··on Be Careful Using Tmux and Environment Variables
This is something to watch out for especially if you're switching from screen to tmux.

When you start a screen session, it will always copy the environment from your shell. When you start a second screen session, it will inherit a possibly different environment.

But tmux, on the other hand, spawns a tmux server when you first start a session. It'll copy the environment from your shell. However, from that point onwards, new sessions will use the environment from the server and will not copy the environment from your shell.

I like screen's behavior more. A frequent use case is to start a long-running command as a sort of ad-hoc background job. That's really easy with screen (just run screen and run your command, it will always use the parent shell's environment) but relatively easy to screw up with the environment when done with tmux. It kind of works only if you don't have a tmux server already running.

metafunctor··on Git branches are named sequences of commits
I'd argue git is confusing for many people because they don't understand the data model. The solution is to learn the basic data model instead of pretending that "a branch is a ref" is not true. Because it is true.
metafunctor··on ChatGPT and the Enshittening of Knowledge
The same happens with any user agent.
metafunctor··on Why does my SSH private key still work after changing some bytes? (2016)
This has nothing to do with binary versus text.
metafunctor··on Ask HN: What's your proudest hack?
In the early 1990s, I was part of a group of high school students who wanted to enter the Finnish demo scene. I was responsible for coding most of our demos in 386 assembler. One of the things I wrote was a player for MOD, ST3, and S3M music files, which were similar to MIDI but included WAV samples. The player ran in the background on a hardware interrupt, while other code ran on the foreground to display something on the screen. For most sound cards, the player had to mix the samples in real-time and output a byte to an I/O port at a rate of 22 kHz, for example.

To enter a demo competition, one of the criteria was support for Sound Blaster sound cards. The problem was that we didn't have one and didn't want to buy one because we had already spent all our money on Gravis Ultrasound cards. Fortunately, a member of our group was able to borrow a Sound Blaster for a day. We had to figure out how to add support for it, but we had no documentation and there was no internet to speak of yet.

I figured that it must be possible to add support by sending I/O to the card. We put the card in my computer and started a third-party MOD player that had Sound Blaster support. I traced the execution in a debugger, instruction by instruction, while my friend took notes on all the I/O instructions. After some thought, it became clear that the program was scanning for a Sound Blaster and, if I recall correctly, configuring the card to DMA a particular byte in memory as the sound card output.

I added some hardcoded "OUT" instructions to my player and it worked instantly; my real-time mixer output was played through the Sound Blaster! There was a lot of cleaning up the code to be done, but we were able to add support for the Sound Blaster in just one day.

metafunctor··on Is Dark Mode Good for Your Eyes? (2020)
It's a well-known concept here in northern Europe, and I must have seen the acronym before, but I did not recognize it.
metafunctor··on Ask HN: Should HN ban ChatGPT/generated responses?
Wouldn't this be treated like parking fines by the very rich—just a tiny price to keep broadcasting whatever drivel they feel like?
metafunctor··on Twenty five thousand dollars of funny money
Yes, good point. This in fact what I've done previously in an application that was dealing with monetary values. They were basically fixnums with a unit piggybacked on, plus some money-specific operations.

The money type should be compatible with generic interfaces so existing sorting and aggregation functions, for example, can directly on them.

metafunctor··on Twenty five thousand dollars of funny money
You should define separate types for “cents” and “dollars”. And, probably operations to convert between the types.
metafunctor··on Gaslighting is Word of the Year 2022
I have teenage children, and I had to explain to them what gaslighting really means.

It used to refer to subtle psychological manipulation over a long time to achieve a brainwashing effect.

For the TikTok generation, “gaslighting” is just a synonym for “misleading”.

metafunctor··on Git Notes
I had no idea this even existed, and I've run into this problem with notes myself! This seems like something that should be a default.
metafunctor··on KATT (Klarna API Testing Tool) Is an HTTP-Based API Testing Tool for Erlang
The code is released under the Apache-2.0 license. Doesn't seem complicated to me at all.
metafunctor··on Universal Paperclips
That's how I ascended in NetHack the first time — reading the source code. There were quite a few things there that I don't think I would've ever discovered otherwise.
metafunctor··on macOS Ventura is now available
Yeah, the items could load more snappily. On my M1 there's a delay (0.2 – 0.5 seconds?) between clicking an item and it showing up — enough to make it feel annoyingly laggy.

I haven't used Gnome in decades. To me it looks just like the iPad Settings app, or iPhone's in horizontal mode.

metafunctor··on macOS Ventura is now available
In recent years I've been using the search bar a lot anyway, since the modal nature of the old System Preferences app wasn't great for quickly checking through several settings screens. And I often forget where some settings are — the taxonomy is not always so clear.

The new Settings app seems like an improvement to me. The vertical list of settings categories is easier to quickly scan, and it remains visible all the time. That alone is a great improvement, and makes it quite a bit easier to navigate the (huge) list of available settings.

metafunctor··on Gamification affects software developers: Cautionary evidence from GitHub
Gamifying non stop daily “contributions” does not seem healthy to me.

I work 5 days per week. I may not commit every day. Typically I will, except when I'm ill, or my close family is seriously ill, or there's a funeral, wedding, holiday, etc. So, life gets in the way, I guess.

If you're compelled to work all the time, every day, for months on end, good for you I guess. But I wouldn't skip my life to satisfy any KPI.

I will, however, persevere. I work hard. I do not give up easily. I learn something new all the time. I try to get better every day. I do my best to contribute to my family, my company, my society, and humanity at large.

However, life, I've realized, is long. My priorities have shifted over time. In the past, the value I've created in my work has not always ended up where I'd like.

If you have all this figured out 100%, then yes, go for it! Don't stop! The rest of us are still figuring it out.

Oh, also, I don't work with GitHub at all. Imagine that.

metafunctor··on What does the ??!??! operator do in C?
My Second Edition K&R (purchased in the mid-90s) is only 272 pages, including the index.
metafunctor··on Looped Square Or ⌘
At least the recent Finnish/Swedish keyboards do have both ⌘ and “command” written on the key.

Likewise with ⌥ (option) and ^ (control).

metafunctor··on Art Garfunkel's Library
Wow, that's a lot of books!

Assuming 10% of those books are, in some way, in your opinion, better than the other 90%, what would you say were the best couple of dozen books you've listened to? How much would you say the performer affects your perception of the book?

metafunctor··on Use TouchID to Authenticate Sudo on macOS
The Magic Keyboard for Apple Silicon macs has a Touch ID button. Works great.
metafunctor··on Why do arrays start at 0?
Not sure if you were around 20 years ago, but you sure couldn't expect everyone in tech to understand machine instructions as well as the layers above, all the way up to corporate politics.

But some people, yeah, they could do it.

That has not changed.

metafunctor··on It wasn't for nothing
Wow. These reasons match exactly why I've built open source software in the past (now running on your iPhone).

Fun. Rewarding. Feels important. Pure.

Maybe didn't save my life, but given a different start, definitely plausible.

metafunctor··on Fintech is making credit cards weirder
Sellers obviously want certain settlement for all purchases regardless of amount.

If bitcoin needs a similarly hierarchical trust-based settlement systems as banks, how is that different from traditional banking?

metafunctor··on Old jokes
This tangent caught my eye, too, but for the opposite reason. I never really understood why someone might enjoy watching people falling off of skateboards, or things breaking, pets making a mess, etc. Apparently stuff like that is very funny to a lot of people, because shows like America's Funniest Home Videos contain nothing but.
metafunctor··on What One-person SaaS Healthchecks.io uses for hosting, hardware and software
They do provide private networks now, but AFAIK they didn't in 2017. Today, one could use “vSwitch” or “Cloud Network”, or both, to set up private networking. But, if you want to easily encrypt all traffic, Wireguard might still be a good idea.
metafunctor··on Finland will seek NATO membership immediately
So many things to comment on this, but I'll just address two points.

One. Finland has not been phoning it in. There's a reason Russia has not invaded Finland after they we pushed the fuckers back during WW II. This is not remotely a case of the USA taking care of Finland's defense against russia. I invite you to participate in some of our joint military exercises to find out how things work over here.

Two. Russia cannot win. It has become painfully clear that their outdated mob-run cleptocracy of untrained looters cannot possibly win any type of war. Even with Russia's military doctrine where “send more men” is the main strategy, they cannot win. The math is clear. Russia simply does not have the power to win in any meaningful way.

metafunctor··on Sentry.io outage
Not just PII, but access tokens to 3rd party systems in case of integrations and whatnot.

A Sentry data leak could include valid access tokens to, say, all data on a customer's Docusign account. We try to make sure data like that is scrubbed before sending to Sentry… but mistakes can happen. This is simply not a risk we are willing to take.

Thus, we self-host Sentry in our own secure infrastructure (we are a SaaS provider ourselves), and accept all the maintenance burden that it entails.

metafunctor··on Sentry.io outage
I've being running their self-hosted version, and it's kind of OK.

Nowhere near as nice as, say, GitLab's Ubuntu packages which you can simply apt-get install, unattended automatic (security) updates are available and work well, and it's been mostly a set-up-and-forget type of thing. For GitLab, backups and most ops procedures are well documented.

Sentry, on the other hand, requires you to run a script to upgrade with their docker-compose thingies. You must remember to upgrade.

Self-hosted Sentry runs on docker, which on Ubuntu is a bit of a security shitshow what with docker side-stepping UFW and all that.

Recently Sentry tripled (seems like) the number of containers they spin up, and it seems much heavier than a couple of years ago. You can still get away with 8G RAM, so it's not really that bad, to be honest.

Backing up Sentry was simple enough. However, a lot of questions are answered in the style "if you want to know more, buy the enterprise version". But, I've backed up and restored a Sentry system and it worked out OK, so I guess we're fine. Unless they change something, and then we're hosed without realizing it.

So, Sentry's self-hosted version is OK, but clearly not their number one priority. I have no idea what Sentry would look like with a self-hosted distributed/HA setup. Our data protection policies would absolutely prohibit us from using their cloud services, so maybe I'll have find out, but I'm not looking forward to that.

metafunctor··on Ask HN: Who is hiring? (May 2022)
Zefort | Software developers | Remote | Finland | Full-time

Zefort (https://zefort.com/) is a bootstrapped SaaS focused on contract management and eSignatures. Our SaaS product helps companies archive, find, sign, and manage their contractual documents with the help of unique AI-assisted capabilities.

We are looking for software developers to join our small and experienced team. We ship solid software that we can be pround of.

No particular technology experience is required, beyond a solid grasp of fundamentals and relevant experience building SaaS products. Point us to your public code, or tell us something interesting you’ve done.

Our tech stack includes Django/PostgreSQL/ElasticSearch on the backend, React on the frontend, and various tools for machine learning and document processing.

We are remote first, and there's an office in Kaarina, Finland and a coworking space in Helsinki.

Contact ville@zefort.com.

metafunctor··on Neubrutalism is taking over the web?
Sorry for being populist. Design is created for a purpose. If your goal is to ”take over the web”, a design that appeals only to a small minority means your design failed.

Also, Figma's website looks pretty normal. It's barely registering in the scale of “neobrutalim”, whatever the hell that's even supposed to mean for a digital media.

← PreviousPage 3 of 25Next →