HNHacker News
TopNewBestAskShowJobs

isbjorn16

554 karma · joined December 31, 2018

submissionscomments
isbjorn16··on Linda Yaccarino is the new CEO of Twitter
With respect, you don't think it's substantive to point out that the new CEO has a rather tall job in order, using colloquial language?

I think we'll have to agree to disagree on this one.

isbjorn16··on Linda Yaccarino is the new CEO of Twitter
> She knows all the advertisers and can placate them.

I hope she has an infinite supply of lipstick because this pig will need it :|

isbjorn16··on Sam Altman says era of remote work is over
It sure is great that this industry doesn't have a larger than normal population of neurodivergent folks, or this might be a real problem for a lot of us!
isbjorn16··on Primitive Technology: Iron Bacteria Cement [video]
or, conversely, turn them off before it starts and try to figure out what he's doing and why. then when it's done, turn the captions on and watch it again!

our living room turns into bedlam when we do this. everyone shouting what is about to happen or why it's happening and we're almost always wrong. it's great!

isbjorn16··on Mercedes-Benz previews its operating system MB.OS
I had a 2001 Audi and it was by far the best vehicle I've ever owned. I bought a 2016 Audi trying to replicate that and I was dumbfounded by how little it had changed in 15 years, but what _had_ changed seemed to be distinctly for the worse. I won't be buying another one :(
isbjorn16··on Mercedes-Benz previews its operating system MB.OS
someone should let toyota know, because their software sucks 5 kinds of taint on my 2020 taco
isbjorn16··on GitHub to lay off 10% and close all offices
You can have a channel, of sorts. You add people to a giant group message and change the title.

Voila. Channel. You need to know someone in the channel to add you to the channel, but suddenly you can avoid that threaded bullshit.

God I hate using teams

isbjorn16··on MycroftAI – Update from the CEO Part 1
If you figure out how to make use of the hardware, please let us know. Getting a unit I couldn't even install another skill on made it functionally useless to me. I don't need a robot to tell me what time it is, I need someone to add carrots to the fucking shopping list or turn lutron caseta lights on when I'm rummaging around with my hands full.

Even if it's tearing it apart and repurposing the guts for a frisbee, I'm looking for ideas.

isbjorn16··on Ask HN: How can I find a German family by their crest?
well, you should have, and that's on you.
isbjorn16··on Tell HN: Vim users, `:x` is like `:wq` but writes only when changes are made
Me either, but that's because I type `:wq!` every single time instead. I'm not one of those who is afraid of typing more than a single character so I don't care if it's actually 3 I'm hitting. I am someone whose entire brain comes to an absolute crash if I type "wq" and it's asking me if I want to save over a RO file. It's like having a belt loop or pocket catch on a door handle and I despise it.

So, `:wq!`, or as I call it "write the fucking file and quit, _with feeling_"

isbjorn16··on Tell HN: Vim users, `:x` is like `:wq` but writes only when changes are made
I think their point is sometimes their left pinky is a bit lazy and won't get off the fucking shift key
isbjorn16··on Amazon Is Running Out of Warehouse Workers. Cue the Robots
Accept the job, never show up. It's petty, but when the system is rigged sometimes petty is the only viable "fuck you" left
isbjorn16··on Alpha. Bravo. Cyrillic
https://en.wikipedia.org/wiki/Andrew_Mellon

He's been dead for almost a century, so I don't think he's vetting much of anything at the moment

isbjorn16··on Why America’s Railroads Refuse to Give Their Workers Paid Leave
Oh, no, I guess they'll just have to do everything as slowly and by the book as possible. Darn.
isbjorn16··on Woodworking through the mind of an engineer
my other pithy statement that I stand behind is my poorly routed sign that says "Glasses and Mask, Jackass" and sits right in front of the door entry to my workshop.

haste makes waste, but even worse, it can make for blind people with breathing problems

isbjorn16··on Woodworking through the mind of an engineer
Woodworking has probably been one of the most important things to add during my career. I went from being and feeling like I knew how to do most everything to being forced into confronting the fact that just because I'm experienced, I don't know everything. I make so many fucking mistakes when I'm woodworking that, when people ask about what I make in my woodshop, I just respond "sawdust and mistakes, mostly".

I'm not comfortable not knowing what to do; I've been building on a really stellar foundation for so long that when I need to do something outside of that universe - not situated over that foundation - I tend to flounder, get frustrated, and feel like the dumbest man alive.

Woodworking made me confront the fact that while I may be really good at building scalable systems and high quality code, that doesn't mean I'm the master at everything, and I'm *going* to find things I need to stretch to learn. It's made me get comfortable with making mistakes again (well, as comfortable as I can be, I reckon). It's also made me comfortable with realizing when I'm hitting my patience limit and walking away instead of banging my head against the wall for hours. A bit of distance, let my subconscious chew on it for a while, and revisit it later, rather than just trying to put my head down and shove my way through.

Long story short, you should all pick up woodworking, or metal working, or throw some pottery or paint or something. Get comfortable with being a rank amateur fuckup and revel in the process of learning instead of fabricating without a hitch. I know that I, for one, really needed it.

isbjorn16··on What to do if a nuclear disaster is imminent [pdf]
I think you mean the delivery food
isbjorn16··on Stripe laying off around 14% of workforce
bit like seeing someone jump into an active volcano, really
isbjorn16··on Quitting Twitter? What People Say About Life After Social Media
> The US has had a president who largely communicated with his constituents through Twitter (one-way as that communication may have been)...

I know what you're trying to say here, but I just want to note for the record that all presidents communicate primarily with their constituents in a one way fashion.

In other words, that president was unique primarily in platform, not mode.

isbjorn16··on Twitter CEO fires two top executives, freezes hiring
it's kind of insane to me that this is seen as insane, if I'm honest
isbjorn16··on OpenBSD Router Guide (2020)
What were the compelling reasons for you to switch? Was it something Opnsense did better, or did Netgate just piss you off?

I'm running pfsense now because I'm nothing if not lazy, but if opnsense makes things nicer in some way, I'd like to hear it!

isbjorn16··on Ask HN: Favorite purchases of last two years?
Three things specifically (though one is a two-parter)

1. Nanch micro screwdriver / bit kit. I had one previous and I rather liked it but I gifted it to my brother who was just starting out with DIY maker stuff, so I replaced my old magnetic kit with one that has the bits lock into place with a collar. I love the quality on it and I'm glad I'll probably never need to buy another one again.

2. Lutron Caseta switches for my house. I haven't replaced the lot, but I've replaced the most commonly used ones and it's so nice being able to stagger to bed after a movie and just tell siri to turn all the lights off in the house.

3. The last is a two parter; dewalt makes a little cordless screwdriver (not really a drill). That has a ton of utility, but what I like best is that I can combine it with a cordless drill "cleaning attachment" kit that you can get off amazon (or probably other places). Put the two together and you can save so much time and effort scouring things - you still have to manually do some nooks and crannies, but you can get the vast bulk of it out of the way and let technology work for you. A regular drill would work, but it goes too fast and flings shit everywhere, while the screwdriver has a much lower RPM. This combo is just my favorite.

isbjorn16··on Cycling is more important than electric cars for reaching net-zero cities
> > - You have facilities to shower and dress at work

> I commuted by bike for years in hot, humid climate without showering at work. Consider all of the remarkable achievements of humanity. You could figure out something that could work for your situation.

It's called a shower. I weigh 300lbs. Trust me, I am going to be sweating like I was sprayed by the grossest stink hose of all time. Sure, I'd love to believe I'd be closer to 200lbs than 300lbs after a year or two of riding, but that's a year or two smelling like a rank asshole. On behalf of myself and everyone around me, hard pass.

isbjorn16··on SolarWinds hackers were able to access Microsoft source code
MSFT employee here: I don't know of an internal service that I use that doesn't have MFA.

I am not going to make a broad statement saying they don't exist, I'm just saying I haven't found one yet. It's really annoying because I rarely have my phone on me when I'm at home so I have to go track it down. I'd be so happy if they let me use a yubikey :(

isbjorn16··on In CPython, types implemented in C are part of the type tree
I don't off hand, but I didn't want to leave you hanging too long without saying anything either.

The main two things that get me all bent out of shape is having a purposefully disjoint types passed in as the same variable with a bunch of logic around handling either of them, often in very different ways, and never, ever checking types of values or ranges.

If you start throwing in type hinting and make use of mypy, it keeps your own code pretty coherent. If you do need to have disjoint types coming in, spend a lot of time thinking about how you want it to work. It may be reasonably cheap to force everything into a single type from the many possible types coming in, which should simplify things a lot. If that won't work, consider wrapping any of these types in a composite object that unifies the _how_ of accessing the data inside the type into a single low-cost abstraction. Whatever you do, don't let the logic about how to operate over your abstract data input bleed into the logic of how you're building off of it.

This is one of those things that Python makes hard, not because it purposefully stops you, but because it makes it _so very easy_ to spew implementation details through every single function call. It's easy, and programming is hard, and people have deadlines and it's something you can easily convince yourself you don't need to do, and suddenly you're writing bad code and nothing and nobody is there to stop you from it.

I'm a big fan of keeping my type hints in my code and not using typeshed; I WANT people to see what types I'm agreeing to support. You don't have to agonize over documentation or look 14 levels deep in my code to see what I'm handling. The goal here should be for someone to read my function signature and go "oh, okay, I know exactly what I need to provide for use".

Another vexing thing that comes about ALL the time in dsci/ml code is single letter identifiers. A lot of this is because the paper says this variable is `p` or maybe even `epsilon` so... that's what the variables get named. I've even seen `f()`, `g()`, and `h()` in the wild, and of course there wasn't a lick of documentation around it.

Unless your audience is only ever the people who wrote the paper itself, or those who studied it vigorously (more so than just reading it), these are terrible choices.

This advice is not python specific - it's language agnostic, but I notice it most in Python solely because I run into it the most dealing with non-devs taking a stab at writing their first libraries (or, rather, a bit of polish on their initial prototype). But in general, write your code not so that it's easy to write, but so that it's easy to read, easy to reason about, and doesn't require a chain of whitepapers to understand. The goal is so that someone reading this later doesn't have to literally be you, at this exact moment in time, to understand what is going on. You want your code to live long past your current attention on it, so write it in a way that is easy for another maintainer to pick up and run with.

In the end, other languages make some of this table stakes - not the naming, obviously, but the types? Range checking? Handling error conditions explicitly? Python gives you all the rope in the world necessary to bind yourself into a knot with, so it's all up to the developer to do the right thing. When I lament python, it's not because it's inherently bad, but because allowing people to play fast and loose with the rules means you're going to find a lot of people who just don't give a shit.

isbjorn16··on In CPython, types implemented in C are part of the type tree
Some languages force you into better practices. The extra overhead that you may not want to deal with - and that learning curve - are the exact sorts of things you want to do if you want to write code that is of less questionable quality.

Good Python looks a lot like what you would get from a compiled language, and every researcher I work with looks at it and goes "holy shit this is so much extra work I don't wanna do it"

And like I said, that's fair. The code is not the point, it's just a tool to get the data - that's the point.

I equate it to the one time use jigs woodworkers use. Some can get pretty fancy and be awesome, but most are just slapped together and will probably get chucked in the bin. I don't mean to shame anyone - there's a reason for it, and it serves it's purpose.

It's when someone hands you that shitty-ass jig, from a language that lets you do some pretty heinous things by design, the frustration builds like crazy! I've seen some pretty gnarly Java and C# in my day too, and all I know is the worst Java still is an order of magnitude easier to handle than the worst Python I see on the regular, it's wild.

isbjorn16··on In CPython, types implemented in C are part of the type tree
I always love coming into these Python threads. It's extremely cathartic to know there are enough people who hate the language as much as I do, even if we are stuck with it for any number of good reasons.

All of the reasons we're stuck with it related to datascience and scientific computing are the exact reasons why we hate it. It's exceptionally fast to write code that does a very specific task without sparing a single solitary thought for any sort of software development best practices. It's incredibly approachable, which means it can be used by any keen scientific or mathematical minds who spend more time reading and writing whitepapers than they do writing code. The code, as an entity in and of itself, clearly shows that. But the _output_ of that code also shows that, which is why it isn't going to go away or be swapped out for anything else.

This is like the ideal breeding ground for further scientific or academic pursuits, and since everyone is standing on the shoulders of numpy/scipy/sklearn/pytorch-esquian giants, you're stuck in the scenario of having to replicate all of these libraries in any other language. I can't honestly say it's worth the effort to replace the entire stack, and it's also not going to help when these same researchers continue to use python going forward and start using some other library that you didn't port yet.

And so, they will continue pumping out new papers and prototypes-masquerading-as-quality-libraries, and we'll continue roping them in and duct taping fix after fix after fix on this kaleidoscope of horrors and we'll continue self medicating to dull the daily frustration of python while also accepting that it's the price we're going to need to pay if we want to work with these brilliant minds with all their neat new ideas pushing forth such a breadth of new understanding from the data _we already have_. Or at least that's what we say when we try to ignore the growing bald spot and bursts of incandescent rage every time we get a "quick script that needs a little polish" that clocks in at 2000 loc and literally doesn't have a single function definition in it and variable names that identify up to 14 different types depending on some global state and...

You know, I'm going to stop typing this. It's christmas eve and I wasn't planning on being this angry today

Edit: Some people weren't liking this, it may be because they think I'm being sarcastic when I talk about these brilliant people. I want to just clarify - I am not being sarcastic. They ARE brilliant. They're far more intelligent than I, and they're really pushing the boundaries of human understanding in mathematics and sciences. I acknowledge they're bring a whole hell more good to the table than they are bad, and there's a damn good reason why I am going to be doing this thing I'm doing in perpetuity, or until I can't handle it anymore.

But that doesn't mean their coding practices aren't often _abysmal_, and I won't apologize for my frustrations in this and the language that just _lets_ them do it.

isbjorn16··on Visa and MasterCard Are Trying to Dictate What You Can Watch on Pornhub
That's okay, you spurred me to donate.
isbjorn16··on Error Handling Is Hard
I don't know that I agree that you're doing an apples to apples comparison though. There's nothing to stop you from doing:

  let x = doRiskyThing();
  match x {
    Ok(x) => x.doThing(),
    Err(e) => ...
  }
  x.get().doThing();
That would be more comparable to the try catch from above, and a comparable try catch that actually is semantically approximate would be:

  try {
    MyType x = doRiskyThing();
    x.doThing();
  } catch(CheckedException e) { ... }
Putting these two together, it makes the Result type seem worse than a try catch, right? But that isn't fair to result, because I'm using it like a jackass.

In other words, you can be a jackass using either of them, but you can also use them correctly, and when you use them correctly I don't see how they're any different. I also don't feel like the likelihood of using a Result correctly (edit: originally this said _incorrectly_) is substantially higher than a try/catch, but it probably boils down to developer experience and comfort with a particular varietal and not the capabilities inherent in either. Probably. And if not, I'm looking forward to being shown why! :)

isbjorn16··on Error Handling Is Hard
Is that not identical to an empty catch block? I fail to see how this is materially different
Page 1 of 5Next →