• 5 Posts
  • 62 Comments
Joined 1Y ago
cake
Cake day: Jun 13, 2023

help-circle
rss

I feel this is a bit of a moot point from the White House. Memory-safe languages have been around for decades. I feel like the amount of C/C++ out there isn’t so much that people think having dangerous stuff around is good, but more that nobody really wants to pay to change it.



I honestly find it worrying that someone would think it’s some sort of deeply ingrained human trait when it’s clearly not culturally universal (eg. small hunter-gatherer tribes wouldn’t exist otherwise) and not present through all of history.

I think “growth” is a strong signal for people to put faith and trust into something. And that these emotions have influenced our behaviour for a long time.

Why did the Roman empire keep expanding? What made them want more? I’m not a historian nor an anthropologist (far from either!). But this feels like “line go up” behaviour. What would it mean for those in power to communicate that some part of the empire was receding? Even if, overall, the empire was objectivetly huge relative to other organised groups?

One thing I think about is there could be eroding confidence and trust of those in power by colleagues and the general population. If people lose faith, the powerful lose power; they lose ability to influence behaviour. Growth is obsessed over because it’s a means to capture influence over the means of production (and capture profit).

The line has to go up because the current economic system demands it has to go up

What about outside of economics? Even metrics on https://fedidb.org: shrinking numbers are coloured red. Growing numbers green. Green = good, red = bad.

Another thought. The other day I was at a cricket match. Grand final. Because the home team was losing, the stadium started to empty. It wasn’t about enjoying the individual balls/plays. Supporters were not satisfied with coming second (an amazing achievement, much “profit”!), it needed to be more.

To stretch this shitty metaphor further, when the supporters (investors?) lost confidence in their ability to deliver more, they just abandoned the entire match (enterprise?) altogether!

Again: I’m not stating anything here as fact. I’m just absolutely dumbfounded as to why “line go up” is, as you say, such an obsession. I hear you when you say that it’s a consequence of how the modern economy works. That makes sense. I guess I wonder what would happen if we snapped our fingers and we could start again. I wonder what the economy system would look like. Would we still be obsessed with growth?


Growth might be impossible, but a steady and “boring” amount of profit should still be possible selling plain-ole-dishwashers. Yet … for some reason, we don’t see that.

God yes this bothers and fascinates me.

Instead companies throw everything into growth and we get the retarded bluetooth enabled dishwasher problem everywhere, and I’d like toknow more about why.

I think it’s alluded to in the article:

They found a way to make consumers spend more money on dishwashing. The line goes up, for one more year. But it’s not enough. It has to go up every year.

Digging deeper: why must the line go up? Pesonally I see it as a deeply emotional, human thing.

When you read those annual financial reports from big companies, they will do anything to make sure things look rosy. Bullshit terms like “negative growth” are used because “loss” or “shrink” sound bad. So what if it sounds bad?

Confidence. Trust. It’s emotional. These are deep in our psyche. It’s how governments get elected, contracts are won, and investments are made. It’s what makes us human. If that line goes down… will it go back up? What’s going to happen? Alarm bells! Uncertaintly. Anxiety. People abandon you. Money, power, influence fades. You could find yourself replaced by the up-and-coming who “show promise”.

Our social emotional species has hundreds of thousands of years (millions?) of years of this stuff hardwired into us. Trust let us cooperate beyond our own individual or family interests. Would we be human otherwise? (I found the article Behavioural Modernity interesting).


Not sure it’s capitalism per se. Perhaps rampant waste. Criticism of capitalism could include monopoly formation; massive tech companies buy small ones (obtain more capital = more control over production = more profit).

There’s despair over everyone, big & small, resolving the same recreated problems. Kelley doesn’t talk about breaking Microsoft up (i.e. redistributing their capital). He implies he’d be ok for Microsoft to maintain its market position if it just fixed some damn bugs.



Here’s the article’s source: https://www3.weforum.org/docs/WEF_Future_of_Jobs_2023.pdf

That report’s data is a survey they sent out to companies. Quantising “so… what do you think is gonna happen?” seems… shonky?


Even with (more) UX engineers, it was incredibly difficult to get any development done. When I was in this space, management and contractors were incredibly entrenched playing political games to grow teams even bigger to get more funding. There was nobody with any authority using the thing end-to-end saying “this sucks”.


I worked for a German car company for a little bit, in a team responsible for a similar system: https://www.srcbeat.com/2023/08/sbt/


Unfortunately for those who have those values, not all paid positions involve acting on those values.

Random brain dump incoming…

Most businesses pay money to solve problems so they can make more money. You can solve their problems - but not in the way that you may be thinking.

This is a generalisation that is not strictly true, but I say it to illustrate a different way of thinking: Businesses do not undertake penetration testing because they want more secure software. They do pentesting so they can stay in business in the face of compliance and bad actors.

To find a job, you want to start learning what people pay for. People pay contractors to come in and fix things, then leave again (politically easier, sometimes cheaper). People pay sotfware developers to develop features (to sell more stuff).

Start looking up job titles and see which ones interest you (DevOps, frontend dev, backend dev, embedded…). Don’t get too stuck on the titles themselves. It’s just to narrow down what kinds of business problems you find interesting.

Other random questions:

  • What specific projects are you interested in?
  • What types of problems do you like solving?
  • Do you like digging in and finding those tricky bugs that have been bothering people for years?
  • Do you like trying out new frameworks which let you think about the system differently?
  • Would you rather implement a database or GUI toolbox?

Once you’re deep in the belly of the beast, you’ll find ways to exercise those values. It’s hard to know in advance what this will look like.


Ah yes! That is a great trick that kept me going doing software dev professionally.

Instead of trying to get the system I was working with to interact correctly with some shit enterprise system, I would find common protocols (or related protocols) and implement that well. Then I would discover more specifically where the shit enterprise system was behaving badly, and point to something politically neutral (like an IETF RFC) to help get us out of a rut.

It made debugging so much easier. Those specifications and open-source implementations have had much more engineering talent put in them than what I was usually dealing with.


Oh there is absolutely zero disappointment.

Years ago I wanted to learn how OpenBSD worked. Some people said to me “ah you want to get into programming at OS level? I was a bit disappointed with Go. But don’t learn C, learn Rust; Rust is the future there”. So as a total novice I looked at all 3 on the page. My impressions were: Go looks easy, C looks a bit harder, Rust looks… way too advanced for a beginner like me.

Later when I heard of Zig I started reading and it looked a bit more like what I expected a “future C” to look like.

I wish I had more time and skills to do work in C, Rust and Zig. I’m a Go programmer by trade.



Zig is what I thought Rust would be like when I first heard of Rust. I’d love to try Zig for some hobby things but can’t get it running on OpenBSD (yet!).


I am consistently surprised by what companies are willing to pay to not worry about capacity. Incredible DataDog bills, for example, because they didn’t want to think about how many application metrics to store; “just keep it all!”. And boy do they happily pay for it!


Ok I’m starting to understand where you’re coming from now! It sounds like the leaders are happy for humans to do the work of increasing capacity on-demand rather than tackle the engineering challenges in handling workload spikes. The priority is to appease customers who are from well-known, “impressive”, well-paying (maybe not?) companies. Does that sound sorta right?


Inform and throttle. Think about how your own computer works. If storage reaches its max capacity, you get a signal back saying “filesystem full” (or whatever), not “internal storage error”. If the CPU gets busy, it doesn’t crash; things start slowing down, queued up, prioritised (and many other complicated mechanisms I’m not across!).

You could borrow those ideas, come up with a way to implement the behaviour in your systems, then present them to whoever could allocate the time & money.

Another approach is try to get a small, resource-constrained version of the system running and hammer it by loading heaps of data like those customers do. How does it behave? What are the fatal errors and what can we deal with later?


Agreed. I didn’t know about these features - I’ve never written any Perl before - and I do find them kinda interesting and cool. But not really surprising.

A less clickbaity title might be “Exploring Raku’s built-in shortcuts for CLIs” or something. Still 6 words. And I still would have clicked and enjoyed the article! Really appreciated its positive tone and clear examples!


Devil’s advocate: what about the posts and comments I’ve made via Lemmy? They could be presented as files (like email). I could read, write and remove them. I could edit my comments with Microsoft Word or ed. I could run some machine learning processing on all my comments in a Docker container using just a bind mount like you mentioned. I could back them up to Backblaze B2 or a USB drive with the same tools.

But I can’t. They’re in a PostgreSQL database (which I can’t query), accessible via a HTTP API. I’ve actually written a Lemmy API client, then used that to make a read-only file system interface to Lemmy (https://pkg.go.dev/olowe.co/lemmy). Using that file system I’ve written an app to access Lemmy from a weird text editing environment I use (developed at least 30 years before Lemmy was even written!): https://lemmy.sdf.org/post/1035382

More ideas if you’re interested at https://upspin.io


They even have a term for this — local-first software — and point to apps like Obsidian as proof that it can work.

This touches on something that I’ve been struggling to put into words. I feel like some of the ideas that led to the separation of files and applications to manipulate them have been forgotten.

There’s also a common misunderstanding that files only exist in blocks on physical devices. But files are more of an interface to data than an actual “thing”. I want to present my files - wherever they may be - to all sorts of different applications which let me interact with them in different ways.

Only some self-hosted software grants us this portability.



This sounds similar in spirit to me, but I did make a career out of it. If you don’t mind me asking, what is your career? You can also email me; see “Contact” at http://www.olowe.co


Getting old, “broken” computers running Linux was the first thing when I was about 11 or 12 years old. Then:

  1. needing a way to keep them running
  2. wanting ways to make running them easier
  3. wanting those ways to be easier/simpler

Often this involved programming. Eventually I found out that companies pay money for this kind of thing.

But now I’m finding it difficult to find work which aligns with those original values. Getting paid means delivering what people will pay for, not necessarily solving problems. What got me into programming is probably what will get me out of it (profesionally, anyway).


Now I do convoluted shit by hand and not knowing I’m gonna fuck it up ;)


[…] and this is a huge project.

This makes me skeptical too. I’d be interested to hear about smaller projects to replace some creaky system relying on the output of some long-gone contractor’s overengineered software being faxed around.

Those projects have no cool name and are probably really hard to get funding for. But sometimes I can’t help but feel that might be more effective than these “big bang” projects.


Simple Made Easy - Rich Hickey (2011)
One of my favourite talks on programming. Just wanted to share for others who haven't seen this before.
fedilink

One of my most productive days was throwing away 1000 lines of code.

– Ken Thompson


Isn’t the Slack/Electron resource utilisation screenshot enough to prove an important point?

For most people: no.

They work around it. They buy new hardware and they’re not sure why. There’s massive business in selling people new computers (I’m including smartphones here).

For most in the tech industry: no.

Their job depends on them not understanding and/or not caring about this stuff. If they did care and acted on it, they risk losing a job to the next person who is happy to go “yes, sir”, write more shit, and add it to the pile.


Definitely depends, yeah. bash is a huge piece of software that - for me - feels a bit out of place in other systems closer to original unix. Interesting ones are rc and even plain old /bin/sh provided by something like busybox.


We can’t go back to the old way of doing things but we can’t keep maintaining these fundamentally flawed systems either.

That’s a great way of putting it, thanks. I’m actually only 30 years old (lol). Sometimes I feel there’s so few people who’ve ever used or written software at this level in the part of the industry I find myself in. It seems more common to throw money at Amazon, Microsoft, and more staff.

I’ve replaced big Java systems with small Go programs and rescued stalled projects trying to adopt Kubernetes. My fave was a failed attempt to adopt k8s for fault tolerance when all that was going on was an inability to code around TCP resets (concurrent programming helped here). That team wasn’t “unskilled”; they were just normal people being crushed by complexity. I could help because they just weren’t familiar with the kind of problem solving I was, nor what tooling is available without installing extra stuff and dependencies.

Thanks for your understanding :)


You just said that this software was much more complex than Unix tools

Probably need to keep in mind incidental versus essential complexity here.

So with all those configuration options, why is the standalone binary expected to have defaults that may sound same on one system but insane in a different one?

Because this is how much of what we use already is implemented. Significant effort goes in to portability, interoperability and balancing compromises. When I’m doing software development e.g. writing HTTP APIs (of which I apparently know nothing about ;) ) - I feel like I’ve got a responsibility to carefully balance what I expose as some user-configurable thing versus something managed internally by the application. Sometimes, thankfully, the application doesn’t even have to think about it al all - like what TCP flags to set when I dial some service.

You bring up containers which is a great example of some cool features provided by the Linux kernel to solve interesting problems. If you’re interested, have a look at FreeBSD’s Jails, Plan 9 and LXC. Compare the interface to all these systems, both at the library level and userspace, and compare the applications developed using those systems. How easy is it to get going? How much do I need to keep in my head when using these features? Docker, Kubernetes, and the rest all have made different tradeoffs and compromises.

Another one I think about is SQLite. Some seriously clever smarts. Huge numbers of people don’t know anything about for-loops, C, or B-Trees but can read & write SQL. That’s technology at its best.

Consider how difficult it could be to, say, start a car in all the different operating conditions it is expected to be used in. But we never think about it.

We as tech people pride ourselves on familiarity with esoteric detail, but it doesn’t need to be like this. Nor does memorising it all have anything to do with “skill”.

What I’m struggling with are thoughts of significant vested commercial interest in exposing this kind of detail, fuelling multi-billion dollar service industries. Feelings of being an outsider despite understanding how it all fits together.

It is a pluggable service that connects to one or more TSDBs, performs periodic queries, and notifies another service when certain thresholds are exceeded.

Have you ever written this kind of software before?

It sounds like you are comfortable with the status quo of this part of the software industry, and I’m truly jealous! If you’ve got any tips on dealing with this kind of stuff you can find my email at https://www.olowe.co/about.html Thanks :)


This is more along the lines I was thinking.

I think the parent comment went ad hominem rather than trying to understand some of the difficulties I brought up. I’m not sure whether engaging with them would be productive.


I’m now 30 years old and I wonder what I’ll feel like after another 30 years :(



This was the provider I went with after self-hosting my mail for 7+ years on an OpenBSD VPS. I feel like Migadu is an honest and good-value service.


Yeah I’ve always found that AllowedIPs name a little bit misleading. It is mentioned in the manpage:

A comma-separated list of IP (v4 or v6) addresses with CIDR masks from which incoming traffic for this peer is allowed and to which outgoing traffic for this peer is directed.

But I think it’s a little funny how setting AllowedIPs also configures how packets are routed. I dunno.


You could start troubleshooting by manually executing DNS queries from mainDesktop.lan, and watching the DNS server logs. Not sure what OS the desktop is running, but assuming Windows you could run:

nslookup -type=A pihole.example.duckdns.org.

On macOS/Linux/etc.:

dig -t A pihole.example.duckdns.org.

This could rule out behaviour from the proxy or applications.


Maybe a silly question: how did you find it on GitHub? Did the project appear as some kind of “recommended” thing?


I wonder whether that many people actually do this. From my quick look, I saw jobs flooded with offers for well below the minimum wage of my country (Australia).

Keen to hear anyone’s experience!


Changing that much was probably a bad thing,

I’m a generalist and this gets me too.

For many jobs the ones doing the hiring are thinking of their domain, so more experience in the domain means a better worker. But a software developer who has developed CRUD apps 50 times on-budget and on-time over 20 years is almost certainly going to be a fantastic candidate alongside the dev who specialised in the health insurance (or whatever) domain for the entirety of their 5-year career.

Now I’m aiming for more software-focused companies and consultancies since I think I’m more likely to meet people who appreciate that broader experience.


Fair enough. Hopefully you can keep using those scripts even if nobody else uses them.


Yes I’ve personally argued against automation, too. Particularly when something is clearer to just be written down in a checklist-like format, to be followed by someone with domain expertise.


Rejected automation?
Let’s share stories where your automation efforts have been rejected and you can’t quite understand why! Here’s mine.
fedilink

research!rsc: Storing Data in Control Flow
Go project tech lead Russ Cox talks about a technique to make programs clearer using concurrency.
fedilink

Advice for Operating a Public-Facing API
An OpenBSD developer and the one-man-band behind [Pushover] gives some advice after 10 years of running a public HTTP API. It's interesting as big companies are happy to publish articles about all the fancy stuff they developed to run some API, but you don't always hear from a sole developer running a service for such a long time. [Pushover]: https://pushover.net
fedilink