|
title: Put the knife down and take a green herb, dude. |
descrip: One feller's views on the state of everyday computer science & its application (and now, OTHER STUFF) who isn't rich enough to shell out for www.myfreakinfirst-andlast-name.com Using 89% of the same design the blog had in 2001. |
||||||||||||||||||||||||||||
|
FOR ENTERTAINMENT PURPOSES ONLY!!!
Back-up your data and, when you bike, always wear white. As an Amazon Associate, I earn from qualifying purchases. Affiliate links in green. |
|||||||||||||||||||||||||||||
|
x
MarkUpDown is the best Markdown editor for professionals on Windows 10. It includes two-pane live preview, in-app uploads to imgur for image hosting, and MultiMarkdown table support. Features you won't find anywhere else include...
You've wasted more than $15 of your time looking for a great Markdown editor. Stop looking. MarkUpDown is the app you're looking for. Learn more or head over to the 'Store now! |
|||||||||||||||||||||||||||||
| Wednesday, January 07, 2026 | |||||||||||||||||||||||||||||
|
I mean, I already knew (if only based on the hard flattening of my own reputation graph) that StackOverlow was dead, but sheesh. Today I learned... Prompt: how to mark xunit test as do not run but still allow test to be debugged
... or, later...
That second, in my case, does, in fact, work well. Why bother with clicking into SO to search for a good answer when I can have a conversation with AI and prompt my way to perfection? I posted to Mastodon a while back that anyone who thinks we ยญaren't going to have humanoid robots sooner than later is missing the boat. Like different sized railroad gauges determining the size of the trains that use them, or that cars are roughly horse-buggy-sized, or that mobile homes are constrained by the width of our interstate lanes, or... or any other practical standard -- our world is largely human-sized! Not just that chair, but doors, tools, the things that tools work on (eg, nuts and bolts), the cabin of trucks/tractors/fire buckets, If you want to plug a multi-use device into something that can also be used by a human, you should have (among your stable) a humanish-sized model of your robot. Same for LLMs! If you want "compute" to mesh well with humans, you need to create an interface that we already use if you're aiming for quick adoption. Keyboards & mice are good examples -- human hands are insanely dexterous if the keys and devices fit them. And poof, I have an 123 key (give or take) device to create code. And so, no surprise, we quickly went from 0s and 1s to hex to assembler to coding languages that are decent compromises between written language and charted logic. But that's for minutiae in code. If we want to describe at a higher level, we talk about it! You get the point. Anyone who bet against LLMs better not use language themselves either, or they only have themselves to blame. /soapbox Labels: ai, language, llm, noteToSelf, stackoverflow, testing posted by Jalindrine at 1/07/2026 10:56:00 AM |
|||||||||||||||||||||||||||||
| Friday, December 12, 2025 | |||||||||||||||||||||||||||||
|
It's neat that you can program logic on most any computer that boots nowadays. Maybe not crazy UI libraries, but wrap properly factored middleware logic in a console interface or just write some unit tests and you can get a lot done without much compute at all. What's important in a working laptop? I used to look for stuff like replaceable batteries, but with USB-C power packs, that's not an issue if it has a USB-C port that allows power. Now my list is, give or take...
Nice to haves:
My old ThinkPad P51, a serious monster that had a high-def screen and USB-C video output, finally gave up the Windows 11 ghost. The version I'd gotten (used) was, at one point, good enough to run Windows 11, but then was taken off the list! At some point, that was actually enforced and it stopped updating, no security updates, nothing. I got a few more months out of Insider Preview, but then my keyboard and mouse died due to drivers, I spent hours debugging, and I finally gave up. So back in the market. In the meanwhile, I've been using a gaming laptop from 2021 as my dedicated workstation in the home office (and at coworking a little), a super cheap ThinkPad E490s for mobile dev (coffeehouses, trips, and coworking), and my M1 MacBook Air when I need to macOS. These museum pieces do well, and I've never regretted buying gaming laptops, as their CPUs alone give them years of headroom as development boxes. But as it's time to replace both the high-end (gaming laptop is old) and the mobile workstation (P51 is dead), I am stressing too much about processors. I usually check out PassMark scores to get an idea of how fast they are. I don't know if it's accurate or useful at all, but it seems to give a pretty good relative number. Unfortunately I keep forgetting what my current boxes' scores are for comparison. So hard right on this post's topic as we swerve into "note to self" land and record them. (I have a vague recollection I've done this before. Apologies.)
The last two are ones I'm looking at now. LOQ is for sale now for $850, and the E14 as I'd want it is $823.65. Getting back on topic, the neat part is that the E590s I got off of eBay for under $100 a while back and inserted some extra RAM into has been my mobile box for a few months. It's occasionally a little slow, but for logic work it's... just fine. If you've got $100, internet, and someplace to plug in with the ability and drive to learn to develop software, you've got a livelihood. That's kind of amazing. Labels: hardware, laptop, noteToSelf posted by ruffin at 12/12/2025 10:22:00 AM |
|||||||||||||||||||||||||||||
| Wednesday, October 08, 2025 | |||||||||||||||||||||||||||||
|
Okay, if you're Gen X or older, you grew up with watches to tell time. And not just tell time, but to keep your time. You were just as (more?) likely to hear, in the 70s and 80s, someone ask, "What time do you have?" than "What time is it?" because everyone acknowledged that, unless you had the Naval Observatory clock on the phone, that you could be a few minutes off. During a meeting, you could look at your watch not just to see the time, but to see your time. You could leave a minute or two early because "That clock over the door is slow; sorry, have to run." It was socially acceptable. In fact, those are two of the "sore thumb" cultural changes I've noticed in the last 20 years:
But now the Apple Watch, largely through the middle-class & up, near-and-truly bougie culture's emphasis on fitness and measuring EVERYTHING, is everywhere. It's cool. The watch is even always-on now. A few small glances in almost any situation is no big deal. Why is it okay for Gen Z+ers to look at their watch? Why would millennials, who grew up in the period where the time was known, not find watches offensive? They didn't learn to tolerate this distraction like old folk did. I think the answer is that my question is at least partially a false premise: Millennials don't care as much as the older generations if someone has their entire phone out in a meeting. Which is largely because X's grew up in a time when, if you weren't paying attention to the main thing, you were barely paying attention to it at all. You don't bring a newspaper to the dinner table because you would give the newspaper all of your attention. No longer! Now we don't even eat dinner together so we can watch TV and surf. Divided attention is the norm (he said uncontroversially). If anything, a watch glance is less offensive than a phone interaction, which is still okay. What's most interesting, then, is that this is one place where the Venn Diagram, X vs M, has an overlap for completely different reasons. Xers think it's okay to look because of the legacy excuse that you need to know your time and Mers think it's okay because why the heck wouldn't you? At least that's today's working theory. For me. YMMV. posted by ruffin at 10/08/2025 09:54:00 AM |
|||||||||||||||||||||||||||||
| Wednesday, September 03, 2025 | |||||||||||||||||||||||||||||
|
Was writing an email to a buddy who likes sports, and mentioned that I know someone who lives in DC. The balance of the email was about the Football Team, but then I wrote...
And then the textbox on gmail.com suggested "baseball". The Nationals are a baseball team. Nats is the nickname. Now you could convince me that it actually screwed up royally and thought the balance of the email (which I'll spare you) was actually baseball related, not NFL, but there's a non-trivial chance it got that one right. It's going to get to the point we won't be able to tell when someone's going senile based on their emails. Overall super-minor, but the ramifications are actually pretty large. It's reading my email realtime for non-grammatical context, which means it processes even the parts I take out. Is that kept in memory? How long is it stored? Did I sign up for this? posted by ruffin at 9/03/2025 04:57:00 PM |
|||||||||||||||||||||||||||||
| Tuesday, June 17, 2025 | |||||||||||||||||||||||||||||
|
Okay, was looking back through WCF earlier this week for a prospective client, and figured I'd leave some notes. Here's the stock code, give or take:
And all that's in Again, this is the stock WCF project so far. Not overly fancy. I wanted to be able to hit the stock endpoint from a WCF project in Visual Studio without using a WCF client. Getting to the WSDL file was easy: You can steal that from the page the WCF Test Client refers to if nothing else. For me, that stock page was:
Here's some of the startup page's contents:
Then the WSDL itself:
What you want to be able to do to invoke a service endpoint directly is, of course, find its URL. In my case, with a little help from SoapUI, I figured out it was the same URL that started up initially:
The first key is that you have to set up two headers to the request:
But you seem to have to send it a body in a POST -- GET gives you that stock opening page again. (Since GET and POST are REST conventions, I half-way expected the WCF service not to care, especially since we know GET can have a body now.) I am not yet going to claim I know how the WSDL tells you what your input parameters should have looked like.
Again, do this all in a Postman POST request with a body that's raw with XML as its type and you're golden. Change
I do not miss XML. Update: Ha! Wish I'd talked to myself from 13 years ago first! Labels: c#, noteToSelf, wcf posted by Jalindrine at 6/17/2025 07:27:00 PM |
|||||||||||||||||||||||||||||
| Monday, June 16, 2025 | |||||||||||||||||||||||||||||
|
Looking into updating a slew of VB.NET API to C# for a client, and figured I should brush off my VB.NET before getting too serious. And I figured that means I should make a console app, connect to a sample API URI at JsonPlaceholder, grab a collection of entities, serialize them, loop through, and access something on each individual entity instance. That's half (or more) of what any API does, right? Oh wow. Slightly larger rabbit hole than I figured. First, you can't make the top-level From stackoverflow.com:
Can confirm. The right answer is to set up an awaiter in a synchronous [sic] From stackoverflow.com:
It is somewhat amazing how few upvotes these have gotten at SO. Aka "VB.NET was never super popular, relatively speaking [to C#], was it?" Here's some working code.
and the
As I think I've mentioned before, a prof told me in college, "They're all different dialects of the same language." Or as a buddy on the ultimate team said, "It's all zeroes and ones." Nothing fancy going on here, but it does take a while to get your ears tuned to the new (ancient?) dialect. Labels: noteToSelf, VB.NET posted by Jalindrine at 6/16/2025 11:24:00 AM |
|||||||||||||||||||||||||||||
| Friday, May 30, 2025 | |||||||||||||||||||||||||||||
|
Note to self: It's pretty easy to get a Stripe CheckoutSession in .NET. I talked about writing a Chrome extension and integrating payment through Stripe a few months ago. Unfortunately the "what appears to be an amazingly well-written howto" wasn't, quite. So here's a quick bit of play with the Stripe API using .NET. This looks up information according to a "Checkout Session" id, which is what you'll get sent if you set up a "After Payment" processor URL, which is what I'm doing -- for now in an Azure Function, just to be kewl. (No, you shouldn't use hard-coded paths in your code. No, you shouldn't pass around anonymous classed entities in C#. You're right, there's one instance of insanely not-DRY-ness in this code that almost bugs me. And I hate kludging Steps:
I'd been thinking about having a $3/year [sic] subscription for an extension. After a test, I learned what the comments, above, mention: That'll cost me ($3 x .029 + 30ยข somehow equals...) 41ยข [???] per transaction. Okay, apparently there's a "Usage fee" in addition to the charge?
From togai.com:
From bossrevolution.com:
Cool cool. 13 2/3% of $3. Just below Apple's small dev 15%. Good times. Least the API is simple. More to come. From stripe.com:
good heavens. Labels: .NET, c#, example, noteToSelf, stripe posted by Jalindrine at 5/30/2025 01:26:00 PM |
|||||||||||||||||||||||||||||
| Monday, May 26, 2025 | |||||||||||||||||||||||||||||
|
Sometimes, I surprise myself:
Labels: development, noteToSelf posted by Jalindrine at 5/26/2025 03:32:00 PM |
|||||||||||||||||||||||||||||
| Monday, May 19, 2025 | |||||||||||||||||||||||||||||
|
I'd missed the whole Forced Reset Trigger debate over the last year or so, but caught an article about it in The Post Sunday and figured I'd see what it's about. Here's what I learned, executive summary style.
My second isn't quite accurate, but check below and it'll make more sense. First, some YouTube videos and then quotes from an excellent article from the National Association for Gun Rights. The first shows the trigger in action with some slow-motion demonstrating that a trigger pull is required for each round. But it also is what reminded me of bump stocks. Again, it's not. The bump stock would essentially (afaict, ymmv) push the gun back into your trigger finger so you didn't have to manually pull. It looks like this does something similar but you do have to pull the hairiest trigger possible. This one shows me two things: The eyes of the first guy shows it fires lots faster than the novice shooter can normally. The second shooter shows me it does take a knack -- easily achieved, but a knack -- to get it to work. This one, however, is probably my favorite. This fellow shows that he can empty six rounds just as quickly using a traditional trigger. Dude is fast. Now for some quotes from that article from the National Association for Gun Rights. The last one is pretty telling. They're comparing the Force Reset Trigger to a binary trigger, the second of which also increases discharge rate, but in its case by releasing a round with a pull and a release, thus the whole "binary" moniker. But we learn a decent amount about how actual shooters consider the FRT.
That last point (and the "fun range accessory" comment) seem to wrap this up for me. In the wrong hands, a FRT could enable someone shooting at a crowd to cause a lot more carnage than without. For the serious shooter or someone truly interested in eliminating a specific threat, there is no practical usage. That is, unless your adversary was coming at you in waves like an 18-century bayonet charge, it's likely a bad idea to use a FRT for security. Honestly, I'm still surprised we have a sort of bifurcated Second Amendment. District of Columbia v. Heller is described at today's Wikipedia like this:
... but there's also otherwise an argument that anything goes. I mean you can even have a fully automatic rifle (as the NAGR references) if you jump through enough hoops. Okay, I realize that's a law, so not 2nd Amendment protection, but in general it feels like "if the Army can own it, so can I" argument comes up more frequently, like with sawed-off shotguns, iirc. That is, in 1939 SCOTUS said:
But I think I saw an argument that since the Army now assigns shotguns in specific urban missions it's fair game for everyone. But even the text, above, seems counter to Heller: The bar there is "Is this weapon useful to a militia?" not Heller's "Is this something a citizen would have at home and bring to a militia?" Anyhow... And, as I think I mentioned before, years ago I went to a local gun show to see how tough it'd be to get an AR-15 fully auto. There was a bin of the piece that you'd need to replace to make an AR-15 fully auto and a $10 or so book explaining how to do so easily available. For $1500 or so, you could walk out and be an hour or so away from an fully automatic M-16 equivalent. The question of whether a FRT should be illegal comes down to how you interpret Heller. I don't know that Heller is talking gun technology. That is, a flintlock musket or rifle (two different things) are nothing, not really, like even a lever-action rifle today. If you'd had a lever-action from 2020 or 1970 in 1770, you would have been a power like no other, not just for rate of fire, speed of round (so velocity and inertia -- damage), but also accuracy. I think Heller is saying more, "What sorts of weapons do you have around the house today?" rather than "Gun technology stops at 1791". Even then, NAGR would suggest the FRT isn't one of "the sorts of lawful weapons that they possessed at home" when it says "the FRT is often seen as a fun range accessory rather than a practical tool". When it comes to hunting, they add, "When tracking moving game, accurate follow-up shots are often more critical than speed. The binary trigger provides the time and control necessary to line up subsequent shots, whereas the FRTโs rapid reset can make it more difficult to stay on target." But this does argue for the binary trigger being legal, I believe. (Strangely, binary triggers appear to be illegal in Florida and Alabama, among other states.) The weird deal the ATF made with the makers of the FRT is a weird middle ground. I assume it's just a punt. From The Post:
Once the patent or whatever is out, are we back to where we started? Regardless, this seems to support where I think I always end up on this one: If you don't like our current state, you've got to amend the Amendment. Labels: guns, Other Stuff posted by ruffin at 5/19/2025 08:41:00 AM |
|||||||||||||||||||||||||||||
| Saturday, May 17, 2025 | |||||||||||||||||||||||||||||
|
From Hacker News' Malicious npm Packages Infect 3,200+ Cursor Users With Backdoor, Steal Credentials:
None of this is amazing or rocket science, which is exactly why it's important. It's not hard to social engineer humans. It does make me wonder about the almost unthinking preference devs can have for "[I don't care if it's] NIH". Not that it started with But if you want to reduce your proverbial footprint, there are ways. Knowing open-source libraries you use well enough to have contributed is one. Not writing an in-house version of something insanely trivial is another. And, as much as Apple's getting slammed for arguing for its own nanny state right now, using IDEs from fairly reputable sources and not believing deals that are proverbially too good to be true are all probably decent ideas too. I do wonder about, say, browser extensions. I have one from the EFF on one box that I haven't looked into for a while -- is it still be updated? What do adblock extensions really do? Luckily these are all in JavaScript so, even if obfuscated, you can still sniff through most of them fairly easily. Somebody should know, eventually, if the most popular get wacky. Right? Though heaven help me if the right vim plugins for IDEs get compromised. I'm toast. (Told ya it was easy.) Labels: development, npm, security posted by ruffin at 5/17/2025 02:08:00 PM |
|||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||
|
|
All posts can be accessed here: Just the last year o' posts: |
|||||||||||||||||||||
|
||||||||||||||||||||||
|
|
|
|