Bold of you to assume that humanity will even exist at that point. In fact, it'd be pretty bold to assume we'll exist in 2757; forget those last two digits.
Javascript will subsume all other languages by then. Humanity won’t even know that others existed, or even what it is. It’ll just be called Script, the way you tell computers what to do when the AI doesn’t understand your prompts correctly.
Don’t call it a monad, call it a structured data type or something, that’s what it is! Calling it a monad is like saying that you’re using a curve of constant normal intersection point. Why not just say it’s a wheel?
Yes, it’s mathematically true that you’re having a smooth ride precisely because the normals have a constant intersection point, but it’s also true to say that it’s a wheel and it goes round and isn’t bumpy and doesn’t scrape, and people can get a handle on that.
So yeah, use a Result or Option or Maybe structured data type because it keeps explicit track of whether there’s a value or not, and yeah, you can change or combine them and preserve the tracking, but there’s no point calling it a monad unless you’re trying to make people believe that avoiding the $1bn mistake of allowing/using null requires category theory. It doesn’t, it’s just a structured data type. It’s simpler than an array! Stop calling it a monad.
True. But the word Monad has done more harm to the accessibility, popularity and reputation of pure functional programming than pretty much anything else.
Yeah, I could have said circle rather than curve of constant normal intersection points, but that word is very commonly understood, so it’s not that same as unnecessarily calling something a Monad. Maybe it’s the equivalent of calling it a 2-manifold instead of a wheel.
Perhaps just ditch the generalisation, then, and just call them Result or Maybe. After all, circle is a short word, but we just call them wheels.
Yeah, for this reason null shouldn’t be part of any production code. If there’s the possibility of having a null value, you need to check every variable or returned value to be safe.
These monads tell the consumer of your functions to do something (a check for emptiness or wait for it to be ready, or iterate it) to access the value inside. In a safe language, if the value is not wrapped by a monad, then you should expect to access it without issues.
I kind of get why people don’t want to call them monads, since it sounds like a heavy term and more things to learn that are not strictly “necessary”, but the earlier you learn about their importance, the earlier you can use any of their benefits in your codebase.
“There was an emergency and power was temporarily cut to the card reader terminals, and now none of them work. We need to get to the server room to reboot the access control server, but it’s behind a card-only door.”
“How much do we want to get in?”
“Very much.”
“Stand back.”
And that’s how I ended up busting down the server room’s door.
This reminds me of when we were the first ISP in France (we had a thing that was basically Compuserve with Internet bolted on — now some people will know what that was :-/).
We were at some kind of expo, I was the tech guy, I was with the cute sales girl. For historical reasons, we started with mostly Apple clients, then opened to everything else (this was the early 90s in Europe).
Anyway I was playing on my Linux machine (yay, early adopter) and she had a hairy guy that came in that was enthralled with the whole thing. So she spent a full forty minutes with him, explaining the whole local forum things, the Internet, the Usenet, the email, the whole shebang, the guy loves it.
So he really wants to sign on, but when he’s filling in the papers, he’s stuck. “Is it ok if I leave that blank?”
“That” was the phone number. The guy didn’t have a phone line. At the time all accesses were through a modem. No phone line, no online access. The wonders of the online world were forever beyond his reach.
It took another ten minutes to get this through to him.
As a high school student, I had a job like this for about a week. On my last day, I received this call just like yours and I said “You are quite possibly the stupidest person I’ve ever interacted with” because they were yelling this type of nonsense and screaming over me.
I do not regret my exit to the call center work life. You people have a special type of patience and deserve to be paid far more.
I mean, nowadays you can get wireless internet – via LTE/5G. For technologically illiterate users, I’d put the blame on whoever sold them a WiFi router.
likely won’t help you actually fix the issue because miraculously you didn’t log the three variables you actually need but it’ll make you feel better in the meantime
Fully agree, but they’re usually kind of annoying to track regardless. On the opposite side, sometimes even getting it to trigger on purpose to be able to add a regression test can be pretty tricky, depending on the cause. Timing or time/date based stuff is a common culprit…
Don’t tell me about time and date, I am still recovering from some moron that used datetime.now() for some unit test data setup and sometimes two records (which needed to have the same time) had very slightly varying time which caused all sorts of intermittent test failures that were very tricky to nail down. Database triggers were failing causing failures in all sorts of tests in a random fashion
Stack Overflow barely answers my questions most of the time unless they have a very specific problem that word for word matches mine. Me, I turn to Discord, since it’s just a lot faster.
Yeah don’t let this stop you! If you do the side project for fun and/or learning, just go ahead and build stuff. Don’t look at other projects too soon so you give space to your own creativity. But perhaps compare stuff in a later stage.
This is key. One will inevitably make many different design and UX decisions vs whatever preexisting projects are out there, making one’s project more suited to at least a few contexts than anything preexisting.
In addition to being plain demotivating, looking at other stuff too early basically encourages one to just make the same decisions as others, becoming much more like just a second implementation of what already exists.
Accurate. LaTeX is great, it makes you feel like you have superpowers compared to “office suite”-style software. But every once in a while you just run into some bullshit that feels like it’s stuck in 1985 and it completely breaks your flow. I remember wanting to make a longtable where text in the “date” column would be rotated by 90 degrees to leave more horizontal room for the other columns. It took me two rotateboxes, a phantom, a vspace, a hspace and 40 minutes of my life to get the alignment right. Would probably have taken a duckduckgo search and three clicks in Libreoffice.
Never heard of it before, but might give it a try at some point. From the website, it seems like something halfway in between LaTeX and Markdown? Sounds exactly like what I need at times, tbh.
My two cents, after years of Markdown (and md to PDF solutions) and LaTeX and a full two years of trying to commit to bashing my head against Word for work purposes, I’m really enjoying Typst. It didn’t take long to convert my themes, having docs I can import which are basically just variables to share across documents in a folder has been really helpful. Haven’t gone too deep into it but I’m excited to give it a deeper test run over the next little bit.
I still have no idea how to exit the build process. It tells I need to type H or end but it also just lies. I find the easiest way is to invoke Ctrl-Z and then kill the background process, and the younglings children
Yeah, what the hell is up with that? I always just echo | pdflatex to make it shut up and exit on error. Maybe one day I’ll learn how to actually use that interactive compilation thing, but not today lol.
So there are many different commands that compile LaTeX, right? pdflatex, pdftex, latexmk, etc. But they all do that thing where they ask for your input as soon as they encounter an error, right? Well, if you just pipe an empty echo command to them, it notices that stdin has reached end-of-file, and gives up trying to ask the user for input, and just exits on first error. So instead of pdflatex mydocument.tex, you can do echo | pdflatex mydocument.tex and it won’t ask you for input if it sees an error, it’ll just exit. There’s probably a “proper” way to achieve the same behaviour, but I can’t be arsed to read the docs.
Speaking of stupid TeX hacks, at one point I had a script called latex_compile_and_install_packages_until_it_works.sh. It’s essentially a loop that repeatedly tries to compile a document, searches the output of the compiler for anything that looks like a missing package error, and pipes it to sudo tlmgr install. The “fuck it” of package management, arbitrary code execution exploit included!
Haha that’s brilliant! I have a similar script for Conda, where it tries to install R packages by first looking in bioconductor and then trying the rejects through conda-forge, and then the rejects from that are compiled from source or just outright rejected.
I would have thought you would have needed a (while :; do echo; done) | pdflatex or a yes “end” | pdflatex, i.e. something that repeatedly generates output. It’s actually quite elegant that pdflatex checks if stdin is already EOF
tries to install R packages by first looking in bioconductor and then trying the rejects through conda-forge, and then the rejects from that are compiled from source
Funnily enough I had a similar problem but I wanted text instead of a date. In the end I used a solution similar to yours and adjusted each cell entry manually for hours. Feels like there should be a lot simpler solution for this problem in LaTeX. Glad I don’t need to use it anymore…
u/[email protected] suggested Typst as an alternative to TeX. I gave it a try, and I’m loving it so far. It even has built-in support for the rotated text thing typst.app/docs/reference/model/table . I’ve only used it for notes/homework so far, but I’m looking forward to seeing how it fares for more serious typesetting tasks.
Imagine being in a corporate environment trying to implement an OSS into your platform and having to tell your 50 yo teammate: “Oh yeah, just pop in this Discord server real quick to see any relevant info”. Instant credibility loss
The loss of credibility is not because it’s discord,. specifically.
It’s because the project thinks a chat platform is an appropriate way to document a project. I would feel the same way if someone told me to get on IRC for docs, or Slack.
Wikis always seem to produce second rate documentation, except maybe the ones that are designed specifically around software projects. There are any number of tools out there that produce better documentation and it can be stored alongside the source code in a git repository to avoid drift between the code and the associated documentation.
Actually the first should be the latter, not in the sense that there shouldn’t be a list of switches, a list of options somewhere, or no terse sum-up docs for all those little things, but that those sum-up docs should be the header to a guide.
I may be getting old but I think earlier UNIX had that, and we kinda lost it: Back when programs had few switches the man page would have a header explaining the command tersely – “foo grobnitzes flobboxes” or such, two or three options described equally terse, then you’d get into usage and examples. Nowadays, where GNU less lists its options as
, note the fucking alphabet in the beginning, it’s pages upon pages of terse technical definitions in the rest of the manpage. (Yeah I know less probably doesn’t need extensive usage docs it’s pretty self-evident but my point stands).
We have hypertext now. This can contain a gazillion links to this. And please no no gnuinfo I still don’t know how to navigate that thing, I barely know how to exit it. Lynx and w3m prove that it’s possible to do intuitive design with links in the terminal, do better. Me wanting to quickly look stuff up is not the right time to insist I learn your awkward pet documentation interface, Richard.
Reassignment isn’t the same as mutation. But mutation depends on the type of value. If gender was a string like “female” it wouldn’t be mutable cuz strings are immutable in JS.
var isn’t global unless it’s not inside a function. var is just function scoped, with declaration auto hoisted to the beginning of the function. let is a little more intuitive since you can’t refer to it before it’s been declared and has block scope rather than function scope.
Kind of. With hoisting, the compiler/interpreter will find variable declarations and execute them before executing the rest of the code. Hoisting leaves the variables as undefined until the code assigning the value to the variable is executed. Hoisting does not initialize the variables.
For example:
console.log(foo); var foo; //Expected output: console logs ‘null’
console.log(foo === undefined); var foo; //Expected output: console logs ‘true’
This means you can essentially write your code with variable declarations at the end, but it will still be executed as though the declarations were at the beginning. Your initializations and value assignments will still be executed as normal.
This is a feature that you should probably avoid because I honestly cannot think of any good use case for it that won’t end up causing confusion, but it is important to understand that every variable within your scope will be declared at the beginning of execution regardless of where it is written within your code.
On pretty much every computer I've seen since ATX became a thing, pressing and holding power for I think 6 seconds (but could be another specific time) has force powered off the whole thing. Hibernation should kick in on a single press if you have it configured that way and trigger on the release of the button.
The one with Sandra Bullock? Concept-wise it was quite realistic. But the hacking itself, man that was some unbelievable stuff. I don’t think they got any fact or term right. Almost as if the OG Clippy helped: “It looks like you want to make a hacker-related movie…”
When I saw that film I remember thinking how outlandish it was for her to order pizza on the internet. Even if somehow that were possible, how could you just give a stranger your credit card details!? So, what, you pay a stranger and just hope your pizza arrives? Completely unbelievable.
I mean, when you give them a number on the phone, the guy at the other end is just going to be putting the number in the same place the website does.
When you pay in-store with a credit card, probably same thing.
EDIT: Well, unless, for the last case, one’s using a cryptographic-signature-based mechanism, like the smartcard chip or wireless authentication. But if it’s a magstrip or someone punching numbers in…
I have yet to try the last two. I really enjoy duckduckgo on my phone, but I know there was some controversy. I guess I’m lazy but I love the fire button that burns away all your open tabs and history in one click. Started using Brave recently and I kind of enjoy how it reports how much stuff its blocked and the breakdown of what it all is. I have had no noticeable issues with either one.
I guess you’re talking about iOS, so yeah they had no choice, everything is Safari based there (for now). But on android, as I mentioned at my comment above, it’s chromium based.
programmerhumor
Top
This magazine is from a federated server and may be incomplete. Browse more on the original instance.