I recently made a small pure JS package at my company. It just fucking worked, can you believe it? No setting up compilation and CI/CD for build + release. Just put it in the repo and publish manually, and it just worked, it’s ridiculous
Where can you point to other developers evidence that the code in git matches the code you deployed? Deploying locally built packages to prod is an automatically fireable offense because its not auditable
WTF are you talking about? All I’m saying is that if you write code (that in the context of this discussion passes arguments to a method you didn’t write, that may not be the type the author of the method expected someone to pass, but really, that’s completely beside the point), you should, oh, I don’t know, maybe test that it actually works, and maybe even (gasp) write some automated tests so that if anything changes that breaks the expected behavior, the team immediately knows about it and can make appropriate changes to fix it. You don’t need a strongly typed language to do any of that. You just need to do your job.
Consumer just needs to write 4x as many unit tests to make up for lack static typing. Hopefully the library author has done the same or you probably shouldn't use that library.
CI/CD is useful regardless of which language you’re using. Sooner or later some customer is going to yell at you because you didn’t discover the fatal error before deploying.
@magic_lobster_party@alphacyberranger@unsaid0415 CI/CD won't prevent that. I wonder what it is for. Not using the CPU on my laptop for tests? And why would I want to commit before knowing the tests pass?
CICD isn’t an alternative to testing your own work locally. You should always validate your work before committing. But then once you do, the CICD pipeline runs to run the tests on the automation server and kicks off deployments to your dev environment. This shows everyone else that the change is good without everyone having to pull down your changes and validate it themselves. The CICD pipeline also provides operational readiness since a properly set up pipeline can be pointed to a new environment to recreate everything without manual setup. This is essential for timely disaster recovery.
If you’re just working on little projects by yourself, it’s usually not worth the time. But if you’re working in anything approaching enterprise grade software, CICD is a must.
@Stumblinbear I only worked on small projects so far, that's probably why I don't understand it. But a merge commit is like any other commit and the person pushing this commit has to make sure it works.
When working in teams, merging in two pull requests with seemingly unrelated changes is common practice. If I had to rebase and re-run tests every time another PR got merged in while mine was awaiting reviews, I’d spend most of my time running tests
I thought it was clear: they’re implying JS is simpler/faster to write and deploy because transpilation is necessary when using TS (unless you use a modern runtime).
People seems to be riled up by this, but turbo is mostly used with ruby on rails, right? I’m not familiar with ruby on rails, does it actually support some form of static typing it type hints? From the blog post, the dev (which is also the ruby on rails creator) doesn’t seem to be a fan of bolting static typing into dynamic typing language.
In Ruby, the convention is usually that things are duck-typed (the actual types of your inputs don't matter as long as they implement whatever you're expecting of them, if not, we throw an exception). Type hinting could be possible, but it basically runs contrary to the idea.
Now, Ruby on Rails developers are expecting some kind of magic conversion happening at the interfaces. For example, ActiveRecord maps the database datatypes to Ruby classes and will perform automated conversions on, say, date/time values. But from the developer perspective it doesn't generally matter how this conversion actually happens, as long as there's something between the layers to do the thing.
RoR is very… specific. Some love it because it comes with magic. Many hate it for the same reason.
You either knows the magic and love it, or you hate it with a passion. You never really know when (not if) your change will break the system because it’s supposed to name in a very specific way that work by, again, magic.
Ah yes the classic dangerous command made safe by a modifier key. Put the gun to your head and pull the trigger, just make sure you’re holding down the shift key and it’s all good!
This is how my secure crt is set up when im accessing switches. If i use ctrl+c it cancels what im doing and drops back to priv mode and its so frustrating.
Yes! You know what it is, don’t you boy? Shall I tell you? It’s the least I can do. Steel isn’t strong, boy, flesh is stronger! Look around you. There, on the rocks; a beautiful girl. Come to me, my child.
Is strange… In the video I linked, he said it apparently broke some repos. He also said that they could have at the very least added in jsdoc comments to keep types without requiring extra tooling.
Found him when learning vim and watched a few of his twitch streams. Quite enjoy his takes on things. Not the biggest fan of this new reaction content but do occasionally watch ones related to the tech I use for the day job
Huh… now that you mention it, I guess that’s what people like Bob Martin and mpj (along many others of course) might classify as. Would any guru fall under this category?
Yeah I love this feature. I love it so much that I’ll also tell everyone who cares to listen how you can use it. Edit your ~/.config/kitty/kitty.conf file to include map ctrl+c copy_and_clear_or_interrupt and you are good to go. Only issue I have that it doesn’t seem to work in the vscode terminal.
Oh what a great way to further entrench a bad habbit! Hang on I need to remedy some refactored code with rm -rf * which Kitty made safe if I’m in a directory with my project files 🙄
I recently had an issue that happens on one out of between ten thousand and a hundred thousand interactions between two embedded processors. Thank god for logging!
Even logging can sometimes be enough to hide the heisgenbug.
Logging to a file descriptor can sometimes be avoided by logging to memory (which for crash-safety includes the possibility of an mmap’ed file, since the kernel will just take care of them as long as the whole system doesn’t go down). But logging from every thread to a single section of memory can also be problematic (even without mutexes, atomics can be expensive and certainly have side-effects) - sometimes you need a separate per-thread log, and combine in the log-reader tool.
But use whatever is easiest. People trying to micromanage how others use computers are the worst. And on the most popular languages by job count, your debuggers isn’t all that more powerful than a well-constructed log anyway. (Hell, the people insisting that others adopt better tools should start with the language.)
Idk… I had problems in the past with weird bugs where the breakpoints do not match the right line although using sourcemaps and all that so sometimes you end up doing stuff like this. Or if you want to know how many times something executes without well having to “continue” on each breakpoint or similar.
I understand. I’m not using sway and urxvt as someone more skilled would do. I’ve Made this config some years ago to try but nowadays I’m not doing computer things anymore but I’ve kept this config because it’s light, fast and it’s simply working. So basically, today I’m just copying my passwords from pass in urxvt to my webmail in Firefox with my mouse for checking mail …
I never realized that was why people used the primaey clipboard on Linux…
But I’ll be frank : fuck that. I’d rather disable it entirely and stop having to deal with random text pasting in bad places when I’m using the touchpad
This will generate lots of fun moments when developers use Bun and the runtime environment is stuck at Node for some reason. For instance, because of AWS Lambda.
programmer_humor
Newest
This magazine is from a federated server and may be incomplete. Browse more on the original instance.