Doing random things over at http://musteat.org
243 stories
·
4 followers

IRC: run it or use it, but try to avoid doing both

1 Share

There's a pretty big round of crazy going on in the free software/open source IRC sphere of late. I won't get into the specifics here - it's all over Hacker News and whatnot. (If you find this post years from now, you should check out HN's "past" feature. It'll help with context. Hint: "freenode".)

It's fortunate that I have no involvement with the goings-on of the past few weeks. My own chat situations happily do not intersect with where all of the drama has been happening.

I have only one piece of unrequested advice for anyone who thinks about running (or owning, I guess) an IRC network and/or *using* an IRC network: pick one or the other, but never both.

If you run the servers, don't hang out on channels and chat.

If you hang out in channels and chat, don't run the servers.

Otherwise, there's a good chance you will end up in some kind of squeeze, whether from other people, or inflicted by yourself (and ON yourself) in some fit of prideful stupidity.

I know this sounds bizarre, but it's been my experience that the best-run non-corporate IRC situations happened when the server and/or bot owners (depending on what the scope was at the time) were at least aloof and not "plugged in" to the day to day circumstances of the people and personalities on the channel(s). They just ran the stuff, and the "more involved" people used that stuff to do whatever they did.

Basically, the last thing you want is to have that kind of all-encompassing power, where you can pull the plug, drop the banhammer, or do other really terrible things... and then go and DO that stuff based on some pissing contest you got into with other people.

So, you know how OpenBSD pioneered W^X? A page in memory is writable or executable, but never both? Try doing that with your chat networks, if it applies to you. Run 'em or use 'em, but don't try to juggle both.

I know, I don't think anyone will be able to actually accomplish this. But, I figured I'd say it anyway, in case someone out there with a fantastic sense of restraint is out there and can benefit from it.

Take it from someone who did dumb things as a kid. Okay? Okay.

...

Side note: I said "non-corporate" because situations where you're on the company IRC server don't work this way, unless your company is somehow super-duper screwed up. There should *never* be any question about how a channel runs in that kind of world. There should not be any need for "ops" powers, aside from fixing stupid things caused by dumb programs.

The benefit of "this IRC network == only company X employees" is that there's a framework _outside_ the network for managing things. That means the network itself disappears into the background and is just like any other utility you assume will be there, like the lights, water, or air conditioning.

Of course, if your company has somehow managed to turn its IRC system (or let's face it, any other chat backend) into the kind of shit-flinging jungle that the world at large can become at times, you have much much bigger problems.

Read the whole story
smarkwell
21 days ago
reply
Share this story
Delete

Types of Scientific Paper

3 Comments and 10 Shares
Others include "We've incrementally improved the estimate of this coefficient," "Maybe all these categories are wrong," and "We found a way to make student volunteers worse at tasks."
Read the whole story
denubis
52 days ago
reply
Ok, just... need to look at my publications list:

Most recent (https://osf.io/preprints/socarxiv/sbwcq/) is "Some thoughts on how everyone else is bad at research" Then a bunch of "this task I had to do anyways" Then a "hey, this method can produce results"

I feel *so seen.* Wait, is this good?
smarkwell
52 days ago
reply
Share this story
Delete
2 public comments
shrysr
46 days ago
reply
Lmao
Vancouver
alt_text_bot
53 days ago
reply
Others include "We've incrementally improved the estimate of this coefficient," "Maybe all these categories are wrong," and "We found a way to make student volunters worse at tasks."
dlwright
52 days ago
And the all time favourite "See, I did need that grant money."
ianso
52 days ago
First of a series, I'm sure!

AI Methodology

1 Comment and 4 Shares
We've learned that weird spacing and diacritics in the methodology description are apparently the key to good research; luckily, we've developed an AI tool to help us figure out where to add them.
Read the whole story
smarkwell
64 days ago
reply
Share this story
Delete
1 public comment
alt_text_bot
64 days ago
reply
We've learned that weird spacing and diacritics in the methodology description are apparently the key to good research; luckily, we've developed an AI tool to help us figure out where to add them.

Eclipse Adoptium Welcomes You

1 Share
After months of hard work, the migration process from AdoptOpenJDK to Eclipse Adoptium has begun! Firstly we'd like to take this…
Read the whole story
smarkwell
86 days ago
reply
Share this story
Delete

An incomplete list of complaints about real code

1 Share

A couple of weeks ago, I got bored and decided to come up with a list of things that have bothered me when trying to run software to get things done. These might be reliability concerns, or development issues, or really anything else that bothered me at the time. This was actually pretty illuminating.

I would actually recommend other people try it with their own annoyances and see how things stack up. It was interesting to look at the rows to see which choices were particularly bad because they hit so many of them, and then to look at the columns to see how often they showed up regardless of the language or environment.

But, the problem is that when you key off the language name, it's going to bring the clown brigade down on you, and I mean even more than you'd typically get for a post grousing about something dumb that people use. So I decided to skip the table, ignore the rows, and focus on the columns - that is, the actual things that bug me. Instead, we'll be looking at it in written form, and you can just guess at whatever languages I'm talking about.

Hint: if you can't find something stunningly wrong with your "chosen one" language, you probably haven't been using it long enough... or you created it. Either way, try harder.

So then, on to the list.

I don't like virtual machines. I find them particularly goofy when the so-called "write once, run anywhere" programs only ever run in one place (Linux, and usually a particular distribution at that) on one architecture (x86_64) in reality. I find it even worse when the VMs have to be bundled with the code because they are so tightly coupled, and you find yourself running multiple distinct versions to cope.

I don't like meaningful whitespace. If a tab means one thing and a space means another and they both print the same way (i.e., NOTHING, a big blank space on the screen), I'm not going to be happy. Also, if the amount of whitespace somehow controls branching or blocking of code, you better believe I'm not going to be happy when it trips someone up.

I don't like interpreters. They tend to bring along their own dependency hell, particularly when they themselves keep getting revised and aren't fully compatible with the existing code. It's shades of the VM situation, only with the added benefit of being even slower!

I don't like syntax errors and other time bombs that hide until runtime. They should be ferreted out during the development phase with a compiler pass. But, if there's not something which constructs a whole parse tree ahead of time, it's quite likely it'll bite you much later. Note: this is NOT a 1:1 with interpreted languages. Some of them will quite happily notice your derpy syntax error when you start the program and will refuse to run, even if it's in a branch somewhere. Others will just barrel along until they finally arrive there some hours, days, or even weeks later. Then... BOOM.

I don't like a ton of magic characters that amount to line noise that absolutely need to be understood to completely follow the code. If you are constantly tacking on ! or ? or things like this in ordinary code, or are making little ASCII-art drawings, this suggests you went down the wrong road with your syntax somewhere.

I don't like dependency hell in terms of libraries. Some ecosystems are built around the assumption that you WILL import every single thing that you can think of from somewhere on the Internet if you can. They will add dozens of dependencies directly, and will pick up dozens or hundreds more transitively as those projects continue the pattern on down the line.

I don't like ecosystems that assume you will just talk to the Internet any time you decide to do something involving development, building, deploying, or even starting additional instances. You need to be able to do your work effectively while completely airgapped. Otherwise, you end up subject to any number of opportunities for downtime when something you don't control acts in a manner that's not helpful to you. Also, I'm just talking about the unintentional acts here. The *intentional* attacks are a thing as well, and they're even worse!

I don't like garbage-collected memory management. I've seen too many places plow stupid amounts of time and energy into trying to avoid the dreaded "stop-the-world GC" problem while still being based around it. I mean, okay, it keeps them busy, so there's job security if your boss doesn't realize what's going on, but some of us would rather call something done and walk away from it.

I don't like any environment where "monkey patching" code is done in any way, shape, or form. If your solution to running something is to reach into some other code and do something truly nasty to the way it works, you are already out in the weeds and I want nothing to do with it. If your system literally cannot run without having to do this to other parts of the system, you have a serious problem and need to reconsider your choices. I mean, it's probably Conway's Law in action, but COME ON.

I don't like systems that can't actually run code in parallel. Individual processor speeds aren't still constantly increasing like they were 20 years ago, so instead, we get more of them. If I have two threads which need to do work and two open processors in the machine, I expect the kernel to pick them up and run them! If there's something about the situation which precludes them from actually running in parallel, then obviously it's going to end up being a waste of resources. It'll also run slowly, and the "solution" will be to just run MORE of the standalone things so it can't "switch gears" mid-request. Great. And you wonder why stupid services turn into 1200-machine monsters that then require additional monstrosities (kubernetes, anyone?) to manage.

I don't like situations where the type system is useless or just sufficiently loose to where it might as well not even exist. This can lead to all kinds of crazy stuff hiding in the source until runtime, at which point it can blow up because a Foo doesn't have a bar() method, whereas a Bar does, but you can store both in x, and the code is "x.bar()", so ... BOOM.

I don't like designs which use exceptions as a matter of course. Every exception amounts to an "ON ERROR GOTO x", and it happens far away from where the action is. When something blows up, you are suddenly ejected from that spot and end up somewhere else far far away and have to deal with it. Unsurprisingly, people in these situations frequently deal with it poorly. It's "COME FROM", only for real, and it sucks.

I don't like code which plays fast and loose with pointers like it's the 80s all over again. Odds are, whatever you're doing doesn't actually need you playing around at that level of things. If you're working on some tiny little machine where the memory is measured in bytes and the clock speed is measured in kHz, then fine, sure, bum instructions out and be clever. Everyone else, knock it off. Hint: x[y] is really, really unsafe in a WHOLE BUNCH of languages. Those brackets are just waiting for you to stick your head in so they can snap closed and crush you.

There. Those are my dislikes. If they don't match yours, surprise! We are not the same. Figure out what works for you.

Read the whole story
smarkwell
114 days ago
reply
Share this story
Delete

2020 Operator Log Excerpts

1 Share

Eleven operators logged over 42 operator calls in 2020, providing information, assisting users, and sharing conversations, many quite boring but also many not boring at all. Here is a sample of logged calls, with some sensitive and many less interesting examples removed.

  • 2020-01-07 Caller asked, “which operator is this?” I replied that it didn’t matter and disconnected.
  • 2020-01-21 Caller asked if I could place a call and gave me a number, I told them how to get a dialtone. Caller asked a long confusing question, something about whether this was a government benefit and which organizations were involved. I told them I didn’t understand the question but I hoped they benefited from it. Caller talked about what they were doing, again something confusing about telecommunication abilities or maybe telepathy, I told them I was glad to hear it and said goodbye.
  • 2020-01-31 Caller asked for the number of a retirement community.
  • 2020-02-04 Talked with caller, who appreciated the chair. Isn’t it cold there right now? You f-in know it’s cold.
  • 2020-02-05 Caller asked for a residential number. I advised that I was just googling and probably couldn’t help. Caller provide a name and street in Albuquerque. I was able to recite three numbers off one of those stupid name lookup sites and advised caller about their source. Caller repeated numbers to verify, I corrected two mistakes, caller apologized and said they were writing them down in the rain in Portland.
  • 2020-03-25 Dude called to report “hello operator? I’m calling to let you know that the phone on the corner of Killingsworth and (??) has been wiped down and sanitized with bleach” I told him thank you and to stay safe out there.
  • 2020-03-30 Caller requested the number for Henry Ford Hospital, which I provided.
  • 2020-04-09 Caller asked how to celebrate their best friend’s birthday, I told them to give them a hug.
  • 2020-05-26 Caller wanted to know how to make a call. Operator explained dialing 1. Caller blessed operator and everyone involved in providing this heavenly service.
  • 2020-05-31 Caller wanted to place a call, I told them how to.
  • 2020-06-01 Caller asked for information on manufacturing PCP. I found instructions on Google, but was unable to summarize them over the phone. Caller nevertheless appreciates the service.
  • 2020-06-18 Caller was confused about what they they should say after I answered their hello, I hung up.
  • 2020-06-23 Caller wanted the number for OHSU, asked if I could forward them because they didn’t have a pen. I could not but repeated the number with them.
  • 2020-06-26 Caller wanted to know “what the fuck is a Futel?” Caller was trying to make a collect call. I suggested they try a free call instead. Caller hung up.
  • 2020-07-01 Caller asked what time it was, I told them. I forgot to tell them that there was a utility menu entry for that.
  • 2020-07-01 Caller asked me to call 911, I told them to hang up and call 911.
  • 2020-07-04 Caller and friend asked why I/Futel exist. Attempted to explain. Caller hung up mid-attempt.
  • 2020-07-13 Caller asked for the number of a Happy Valley hospital, which I provided.
  • 2020-07-20 Caller wants to make a call, Asks if the phone is working. Explained dialing 1. Caller hung up mid-explanation.
  • 2020-07-21 Caller reported static on the Clinton St. phone. Then she/they/it asked all sorts of weird, intriguing questions re: the meaning of September 5th 2020, the Willamette Valley Dream Survey, the manifesto printed on the Futel payphones, etc. We had a long-ranging and interesting discussion about the nature of reality and the meaning of the various texts on the Futel telephone.
  • 2020-07-25 Caller asked how to report a dream, I told them to use the directory. Caller asked what happens to the dream recordings, I replied that it was an external number and I didn’t know. Caller started telling me an obviously fake dream, I suggested that they report it and hung up.
  • 2020-08-07 What is this, is the dream survey available here, what other interesting choices are there, blah blah blah, just try it already.
  • 2020-08-23 Caller wanted the number to report their dreams. I told her the WVDS is in the menu system, tho i could not recall where. I offered to record the callers dream in the Futel log instead. Caller dreamed they had just killed two people — they didn’t recall who — and was running from the law. They found their child, confessed the crime, and they absconded together. I wished them a better dream tonight.
  • 2020-09-06 Caller asked how to call the Druid, I told them to use the directory.
  • 2020-09-09 Caller’s grandparents are visiting in the house upstairs. Caller also has a spider living in their window. Caller attempted to conference in the spider, but could not operate the speakerphone. Caller explained that spiders have their own telephones built into their webs. Discussed literature, comic books, etc. Then caller had to go.
  • 2020-10-07 Caller asked for the police non-emergency number, which I provided.
  • 2020-10-12 Heard a series of tones, after I announced myself sounded like the caller was using the phone keypad. Tried announcing myself again but when the tones stopped there was what sounded like hold music. Girl from Ipanema. Ended the call.
  • 2020-10-22 Caller asked the Operator if they could help them reach a named individual. Operator asked for more information about them. Caller told her Nevermind, and ended the call.
  • 2020-11-22 Caller needed to get in touch with a friend or family member but had no phone numbers. i searched for a few names for them and expect they will call back for some additional number hunting.
  • 2020-12-08 Caller wanted the number of a motel in SW Portland, which I provided.
Read the whole story
smarkwell
144 days ago
reply
Share this story
Delete
Next Page of Stories