HNHacker News
TopNewBestAskShowJobs

salmo

966 karma · joined January 7, 2017

submissionscomments
salmo··on Labstack/echo: High performance, minimalist Go web framework
This has bitten me before. A security scanner reported a vulnerability from this that was blocking me from my “use X at work” request.

I ended up having to teach the vendor of the tool about go mod.

But if you are publishing a “release” I personally think it is good to tidy that up. Even just to prevent misconceptions. No reason to preserve ancient versions and especially failed library experiments.

salmo··on TruffleC: A C implementation on top of JVM (2014)
Gosling started more abstractly based on virtual machines he had built in the past for some pretty bizarre hardware. This was to be general-purpose.

Set top boxes were a very early use case. It coincided with the boom of these types of systems that were growing past the traditional “embedded” boundaries. Gosling and the team were working on that when it was still Oak and hadn’t been branded.

There’s an amazing video of him telling the story. I think it’s on YouTube.

salmo··on Is this the end of social networking?
This isn’t fundamentally different than urbanization. And this has been bemoaned as far back as we have history.

I’m older. I used PCs without modems. I didn’t have access to the internet until I was 15, and I was ahead of the curve. So I didn’t grow up with social media. But I was a heavy user. Now this an a relatively anonymous Twitter account are all I have left. Every time one evolves past me being able to have conversations, I move on.

But through all of that, nothing has really changed. I have my handful of friends. I have the restaurants where they know my order when I walk in. My kids still play with the neighbor 2 doors down.

In urban settings where people are swarmed by other people, they form little communities. The dynamic isn’t much different than a small town. There’s just irrelevant people moving around and through it.

That all said, I’m thinking about moving to “the sticks.” So maybe that’s just my family and I maintaining an old world view I’m attracted to.

Facebook? I’d rather be fishing.

salmo··on Astro 1.0 – a web framework for building fast, content-focused websites
Totally agree on this. Took me a bit to wrap my head around it vs other templating I’ve used.

Also figuring out the variable structure took me a bit, but now the docs make sense to me.

My theme is super simple. A few templates, 1 CSS file, and a tiny amount of vanilla JS. I just let Hugo + CSS do most of the lifting.

I think some folks have had bad experiences with themes that layer a JS framework on Hugo, though. That may be a better case for a completely JS ecosystem.

There’s a lot of good options. That’s a good problem to have. Just use what you like, I guess.

salmo··on Astro 1.0 – a web framework for building fast, content-focused websites
I’ve used Sphinx, mkdocs, Jekyll, and Hugo.

I don’t see a reason to switch a site from one to the other if you and any collaborators are comfortable maintaining the runtime. The same goes for JS based tooling (I imagine), I just don’t node so good.

Personally, I use Hugo for new projects because it lowers the burden for content collaboration.

Templating is weird in Go, though if you’re working on themes. I like it now, but it’s procedural vertically and LISPish horizontally, if that makes any sense.

Usually it’s just me or me and another guy messing with that, and others often unfamiliar with anything except Java contributing vanilla markdown documentation. “Clone the repo, run this binary” is helpful there.

salmo··on Ask HN: What's the next big thing that few people are talking about?
Freight trains are also electric, just with diesel generators. I'll completely speculate 2 things that stand in the way of them going fully electric:

1. Trains derail, crash, etc.

I live in a city that's a rail hub. We probably have a derailment every couple years even with annual rail/rail bed maintenance. They will fix the rail, the roads around it, and have everything back up and running in less than 2 days. You spill some diesel and it sucks to clean up. You spill Li and you walk into "environmental disaster."

2. Money. When it's cheaper, then they'll get serious.

To the last point it's similar to fleet vehicles for large fleets. You see a lot of pledges to go all-electric by 20XX. That's because replacing a fleet requires a TON of capital already, and fundamentally changing the vehicles is an order of magnitude higher.

Think about a delivery hub like the post office. They have a network already established for purchasing gasoline, delivering it, local storage, refueling process, etc. They have operations built around it.

You now likely have to have parallel infrastructure for electric, which means negotiating major power consumption with each local power company, purchase of new or adjacent land, buildout, etc. Can you refuel in the same time window to not effect operations? If not, can you shift operations without impacting customer experience?

Now, you will see companies deploying all-electric in niches, especially when it opens up new market opportunities. Those tiny urban vehicles could enable vehicles to go where they could not before, reducing time spent walking. And that might have a shorter timeline than autonomous drones that don't run old ladies over.

I think even more than cruise ships and freighters, the biggest all-electric vehicle impact would come from all-electric airplanes. They still haven't gotten off of leaded fuel (see #2). The emissions there are massive.

But I think #1 will be a barrier there too. And the bureaucracy will slow it way down just like it did with unleaded jet fuel, which exists now, but is essentially unused.

And I guess a theme I'm coming up with is that electric is cool and all, but won't impact big % points of emissions until it's adopted by cargo, not human transport.

And cases like trains and large ships that are electric, but fuel the local electric with local power generation bring up the other big point: How would we even begin to power cargo? It's orders of magnitude more massive than consumer vehicles and it's growing so fast that supply can't meet demand.

Anyway, whatever. I know enough to be dangerous but not enough to be an expert on any of this, and I'm rambling.

salmo··on StemRoller – Isolate vocals, drums, bass, and other stems from any song
I imagine studio-era Beatles in particular would be difficult.

Microphone bleed, lots of overdubs (especially vocals), and repeated re-layering tracks on tape over and over due to channel limitations. They really were doing crazy stuff with limited tech.

I think this would be hard for bands that really fill the spectrum and don’t have that clean treble, mid, bass separation. Or recordings really compressed into a frequency range.

Now this makes me want to see what happens with like My Bloody Valentine and Husker Du :).

salmo··on How Did Elevators Lose Their Music?
Everyone was happy until I stepped on the elevator and Trout Mask Replica came on.

I always think of Johnny Rotten’s story of playing it at parties to piss people off for these examples. And I do actually like it. But I will admit I listen to Safe As Milk far more often.

salmo··on Old jokes
We used to really enjoy a long elaborate joke setup with a let down as the punchline in college.

My favorite was "A patron sees a whale sitting in a booth at the bar". You go on and on about him coming back day after day seeing the wale, describing the beverage, etc. Just improv it. The key is going as long as you can while keeping the audience, but still getting that frustration and tension from them.

At the end the patron gets up the courage to talk to the whale explains to the whale that he had seen him for days, was amazed, etc. Then the whale looked at him and responded [insert best whale noise impression].

Since he passed I've seen a bunch of Norm Macdonald videos of this. He really was the best. The moth joke and others that go on for ~30 mins each on Conan are amazing.

He plays them dumb but is basing them off like Russian literature tropes that go way over the audience's head. The repeated build up, let down, and then finally just a silly punch line that could have landed in 3 sentences is incredible. And his ability to play off Conan's occasional shots...

salmo··on New Ghostscript PDF interpreter
My guess is that since the rest of the project (not in PS itself) is in C, it’s in C. And it may be borrowing from the PS interpreter codebase. I dunno.

Requiring another skillset, toolchain, etc. is onerous and has to be weighed in those decisions. Rust is cool for sure, but difficult to adopt in brownfield projects because of humans more than tech.

Also, it wasn’t written on in 2022, just made the default now. GS is a venerable codebase, and jumping on a “new” language bandwagon may have seemed dangerous at the time it was started.

All conjecture. I’m not an expert or involved.

salmo··on Ask HN: Why do companies not list your weaknesses in rejection emails?
Probably not applicable to GitLab, but may be useful to some. I think too often FAANG and startup interviews are discussed here vs. major companies that aren’t primarily tech yet have 1,000s of developers.

1st level is HR. They don’t understand the job and are just matching key words to the posting. Sometimes we can get the HR person to just give us all the applicants, but often that list is so huge it’s not worth it. They’re basically clicking an auto rejection.

Hiring managers are then not permitted to say “why.” They send the rejection to HR, who hits the button.

There is 0 win for the company to say why, and it opens up a ton of legal risk. It doesn’t even matter if it’s valid or not, legal doesn’t want to spend time/money on defending a frivolous law suit.

Now, the what to do if applying to a non-FAANG megacorp.

My company is so concerned with bias, we can’t do technical interviews and are limited to a list of canned behavioral questions. Some do ask for technical stories. We can request additional ones, but the process is too onerous. The same questions have to be asked to every candidate, although prompting for more details is allowed. Have to have multiple managers who are the only ones allowed to ask. We can have technical folks sit in and feedback into manager scoring and help prompt, but cannot ask questions or score results.

Make sure to cater your resume to the actual posting. Repeat the key words, not just related stuff obvious to technical people. You have to get through HR. It’s not common anymore, but I think it’s a good idea to say why you want THAT job. It stands out, especially for folks with little/no/different experience. We see too many spammed resumes.

To prep for these interviews, read up on “STAR” and typical behavioral questions. Have a library of situations in your mind. Multiple conflict situations. Admitting failure is fine, don’t worry about sounding perfect. Don’t focus on blame. Focus on a positive outcome. You can say you f’d up, but then how you changed your behavior. And then make sure you say how that made things better. The “results” are the most commonly ignored part and they’re the most important to the nontechnical managers scoring. Technical folks sitting in are mostly there to call BS.

Show leadership. You don’t have to “I” everything, but show your influence.

If you have no experience, talk about times you volunteered, had a random job, worked on a group project, did some extracurricular. Non-tech is fine for behavioral questions regarding conflict, etc.

Show in your skills section weird non applicable stuff you taught yourself. It shows interest beyond “I went to class.” Weird programming languages or projects always are cool to me.

salmo··on Romans may have destroyed Moray metal-working site
I think you’re reading journalists, not the actual archeologists.

They saw evidence and suggested a hypothesis, not a conclusion.

I personally have never read an archeologist state a conclusion they didn’t directly observe. Sometimes they’ll note loose threads for further study.

Scientific literature has gotten terrible about drawing conclusions from too few points and over reliance on flawed statistical analysis.

But archeology doesn’t even pretend from what I’ve seen in the past few years.

salmo··on Ask HN: What is the job market like for niche languages (Nim, Crystal)?
Weird. I don’t see a lot of pure CRUD in enterprise development. It’s almost all dumb data transformation. Take data off a queue, add/remove/change, drop it in a db, pass it along.

Maybe take “REST” requests for reads or POST instead of dropping on another queue/topic.

Legacy code is C/C++ and PL/SQL. Java since 1.6 or so. JS/TypeScript now for frontends.

And a ton of RPC being called a REST API.

Python is exploding for all the ML/analytics being introduced. But that’s really it’s own thing. Doesn’t read like Python in any other domain. Just a wrapper around math libraries.

salmo··on Spf13 is leaving Google
I think your wording was fine. I didn’t read that into it at all. Of course you worked with folks to do them. You also spent the majority of the post thanking people you worked with.

I’ve also read your code. I enjoy it and learned a lot more of go that way.

Whatever. Thanks for helping make Go so much fun for me. I look for excuses to write CLIs with Cobra/Viper. They’re of a very few set of libraries I look forward to using.

I use Hugo for much more than it was intended for.

Heck, I wrote a CLI with Cobra around Hugo and a simple theme for my personal note taking and todo management. I was annoyed with other markdown note tools and DIY was a fun waste of time :).

salmo··on DRAM thermal issues reach crisis point
It’s been a while since I was doing hardware in a DC, but even dynamic frequency changes in servers were noticeable in workloads.

We’d see serious latency spikes with high volume increases. And high volume would correlate to high I/O on shared storage exacerbating the problem. You’d get a bunch of transactional failures from the spontaneous latency hit.

Same was true with older virtualization/partitioning of hardware. You’d even see apps back up into memory and swap themselves to death.

Now, the apps were awful: inefficient and intolerant. But that’s the reality for the vast majority of business software. Churned out by devs with little understanding and tight timelines for features.

Reliability being an NFR kills me.

salmo··on CP/M is really open-source now
I inherited one of these from a friend in 2000. The ‘l’ key switch was broken. It (like most) were only booted into C64 mode and used for Batman and stuff. ‘L’ was broken because of ‘load’? I think that was the command. It’s been too long.

I passed it on, but wish I didn’t. At this point, I probably could have replaced the switch.

salmo··on Linux Kernel vs. DPDK: HTTP Performance Showdown
The worst is the fake regulation that is PCI. But I tried in a SOX audit to avoid buying new gear.

I hate auditors. Making sense doesn’t matter. Their interpretation of the control does. I do have a playbook of “how I meet X but not the way you want me to”, but lost that one. Probably spent more $ arguing than the HW cost.

salmo··on Linux Kernel vs. DPDK: HTTP Performance Showdown
Most of the controls are about auditability and data access.

But the control frameworks are silly sometimes. Then add in that they’re enforced by 3rd party auditor consultants looking for any reason to drag it out.

And yeah, I tried to get this past them for a old singleton system to avoid having to buy a bigger non-standard server.

salmo··on Tiny Core Linux 13.0 is a full Linux desktop in 22 MB
That was my experience with Solaris and Linux in the late 90s. It being foreign to me was what got me hooked. You could install pico or learn to use Unix tools.

2 days of frustration followed by Eureka! Repeat.

I still do that process now just with other stuff. (Why is my program doing X? Why the F am I getting a RST?) I think that’s what hooks people that are really into this world.

I do actually understand nano as a default on a “friendly” desktop, Raspberry Pi, etc. targeting new users. I’m just a grumpy old man.

salmo··on Tiny Core Linux 13.0 is a full Linux desktop in 22 MB
Yup. You don’t want to pass EDITOR or VISUAL through sudo so update-alternatives it is.

It’s weird. I know distros are trying to be friendly to new users. But aren’t we past “new users” now for server OSes?

I’d get it on a Raspberry Pi or whatever, where you’re going after kids.

But really, the learning curve and foreign nature of the tools is what got me hooked on Unix in 1997. That and not getting cryptic error messages from Win NT that I could actually dig all the way down and troubleshoot. >:[

salmo··on Linux Kernel vs. DPDK: HTTP Performance Showdown
For regulatory compliance, that’s still not acceptable because it opens the door to cross user data access or privilege escalation.

If someone exploited a process with a dedicated unprivileged user, had legit limited access, or got in a container on a physical, they might be able to leverage it for the forces of evil.

There’s really no such practical thing as single user Linux. If you’re running a network exposed app without dropping privileges, that’s a much bigger security risk than speculative execution.

Now, if you were skipping an OS and going full bare metal, then that could be different. But an audit for that would be a nightmare :).

salmo··on Tiny Core Linux 13.0 is a full Linux desktop in 22 MB
You kids and your new fangled nano.

Back in my day it was pine and pico. We did SMTP both ways. And we liked it!

Actually, it weirds me out that the default editor on most Linuxes now is a pico clone. Some don’t don’t even come with a vi out of box.

I started with emacs in college because I liked LISP. But once I was a sysadmin, I learned vi fast because it was the common denominator between Solaris, HP-UX, AIX, BSD, Linux, etc. and I was in a group that absorbed teams that used all of them. …OK, to be fair, our stuff was BSD :).

My first instinct on a fresh/new to me host is to vi. And even when I type nano, I can’t stop my hands from doing vi and get peeved. Fine ‘apt install vim’ or whatever.

salmo··on Design lessons from guitar pedals
I think “true bypass” is systemd. It sounds like it’s better, but isn’t always. And the kids love it in their “boutique” distros. :)
salmo··on Mimic 3 by Mycroft
Big companies want to pay and have “support.” Lawyers don’t like licenses, they want a proper contract.

But if it’s AGPL, I’ll move on. They’re too idealistic to deal with megacorp. They don’t sell through intermediaries, can’t/won’t be insured enough, etc.

Inevitably the small company sees $$$ and goes nuts trying to sell even when warned not to. Then the risk management and contract stuff kicks in, drags out, and kills it.

The small company blew a bunch of cash on nothing. Or they base sales projections on it. I’ve seen a couple go under.

Those are people’s livelihoods and I can’t do that to them.

That’s not limited to AGPL, but the license is a signal of that type of business. And they never do the smart thing with megacorp and sell through an established intermediary.

Takes a lot of good software off the table.

salmo··on What's New in Python 3.11?
Oh that’s cool. I’d tried some of these years ago, but they were painful, didn’t support Python 3.x, etc.

I’ll have to check it out.

salmo··on What's New in Python 3.11?
It’s not as much my code as reading my dependencies, troubleshooting others’ code, and the ecosystem sprawl. I keep up to date and pick and choose what I want.

A lot of these issues just aren’t there in C++, and you probably wouldn’t even try to share a codebase for something with someone who’s not another expert. …and you’re most likely working on something big.

The big thing that’s plagued Python since 3.x is the distribution problem. You can’t just hand someone a script and maybe another one to user-install some requirements. You need to BYO Python, dependencies, etc.

Things like types, library management, etc. are being handled by external tools. If I want to onboard someone to collaborate with me they really have to have my version of Python (so probably pyenv), Pipenv or Poetry, mypy or whatever, pytest or whatever, black, and have the same config for some of them.

The verbosity overhead of Go (or Nim, etc.) is worth the trade off to me for most of my uses of Python. I can just hand someone a binary and the dev just needs the language installed and maybe like goimports.

I’ve never been married to one language. I like to use them for their wheelhouse. I’ll still use Python for 1-offs or some things I can ship in a container, etc. that I’m only working by myself or with experienced Python people on.

A lot of this is that it’s really turning into more of an Analytics language. The output isn’t expected to be shared and everyone around you is a Python dev.

And I’m old. I started when Python was so pretty to my Pascal/C self compared to PERL (shudder). The documentation is still amazing for the language and standard library. (No Google, I want the actual docs.) And you could onboard almost anyone to work on it if they had any programming background because it was such a simple language.

The 2->3 shift was really only bad for complex legacy codebases and when you primarily deal with bytes vs Unicode. The latter is really painful anywhere. It didn’t bother me much. I usually just had to fix a few small things or it gave me a good excuse to kill something that should have been retired anyway.

salmo··on What's New in Python 3.11?
I love types. But as first class citizens. I started in Pascal and C. And they’re one of the reasons I’m enjoying Go for the kind of work I did with Python. Usually, if it compiles, its right.

I’d be cool with a statically typed flavor that wouldn’t allow for the type gymnastics.

But that’s gross with the None situation where you’d have to fall back to magic values vs ‘nil’ or similar concepts. None was one of my favorite things back when other languages didn’t address it.

And a lot of my opinion is probably based on the fact that I came to the language in the late 90s from a Pascal/C background. Probably just getting to old :).

salmo··on What's New in Python 3.11?
This is my problem. I’ve gotten to where the extra work to use a language that generates a binary is lower than the distribution problem with Python.

I’ve rewritten 3 CLIs because it’s too much of a pain for people to get them set up.

I still use it for myself to whip through a CSV, collate data from APIs. Sometimes a tiny API or web app (I really don’t like webdev) where I can deploy a container or pipeline deployment.

And I don’t have to use all the new bells and whistles. But so many do.

The type hinting system in particular is so much more painful to read (to me) than in a language with actual types.

salmo··on What's New in Python 3.11?
Actually my primary use is CLIs, integrations, and such. It used to be a great systems language (1.6-1.8, 2.x). But now I can’t rely on an OS having a reasonable version, or of libraries, so there’s the distribution problem.

It’s really only good for apps or things I (or other Python people) are going to run.

Part of it is that I don’t do analytics work. Now that PERL is niche, my use cases are no longer the target.

salmo··on What's New in Python 3.11?
I’ll just say. Since about 3.6/3.8 the language has been growing huge. Like C++ huge.

I liked f-strings. Asyncio has its place but is waaay overused. Typing was a cool idea, but so awkward in practice.

All of it has really turned me off, personally. It’s getting to where reading libraries is just painful. The simplicity of the language was really beautiful and when I wanted type safety, etc. I’d use something else. I can still write simple Python, but it’s more all the other code I need to grok.

I find myself going to Go more and more for stuff I used to use Python for. It’s easier to set up a dev environment for other people, easier to distribute code, and gives me type safety and concurrency as first class citizens while being a very small language.

I miss dictionary comprehensions and other shortcuts from time to time. But it actually feels more ergonomic now.

All personal opinion. I’m fine shifting languages. I still write C from time to time to bang bits. I play with various LISPs to exercise my brain. I never used Python for performance critical code. I guess ML is changing that need.

But I know others that want Java to have functional features and Python to have this stuff.

I’m not saying I’m “right”, just uncomfortable in a place I used to love to hang out in.

← PreviousPage 4 of 10Next →