[-] swordsmanluke@programming.dev 72 points 7 months ago

Have you ever been in an old house? Not old, like, on the Historic Register, well-preserved, rich bastard "old house". Just a house that has been around awhile. A place that has seen a lot of living.

You'll find light switches that don't connect to anything; artwork hiding holes in the walls; sometimes walls have been added or removed and the floors no longer match.

Any construction that gets used, must change as needs change. Be it a house or a city or a program, these evolutions of need inevitably introduce complexity and flaws that are large enough to annoy, but small enough to ignore. Over time those issues accumulate until they reach a crisis point. Houses get remodeled or torn down, cities build or remove highways, and programs get refactored or replaced.

You can and should design for change, within reason, because all successful programs will need to change in ways you cannot predict. But the fact that a system eventually becomes complex and flawed is not due to engineering failures - it is inherent in the nature of changing systems.

[-] swordsmanluke@programming.dev 36 points 7 months ago

Oh, for sure. I focused on ML in college. My first job was actually coding self-driving vehicles for open-pit copper mining operations! (I taught gigantic earth tillers to execute 3-point turns.)

I'm not in that space anymore, but I do get how LLMs work. Philosophically, I'm inclined to believe that the statistical model encoded in an LLM does model a sort of intelligence. Certainly not consciousness - LLMs don't have any mechanism I'd accept as agency or any sort of internal "mind" state. But I also think that the common description of "supercharged autocorrect" is overreductive. Useful as rhetorical counter to the hype cycle, but just as misleading in its own way.

I've been playing with chatbots of varying complexity since the 1990s. LLMs are frankly a quantum leap forward. Even GPT-2 was pretty much useless compared to modern models.

All that said... All these models are trained on the best - but mostly worst - data the world has to offer... And if you average a handful of textbooks with an internet-full of self-confident blowhards (like me) - it's not too surprising that today's LLMs are all... kinda mid compared to an actual human.

But if you compare the performance of an LLM to the state of the art in natural language comprehension and response... It's not even close. Going from a suite of single-focus programs, each using keyword recognition and word stem-based parsing to guess what the user wants (Try asking Alexa to "Play 'Records' by Weezer" sometime - it can't because of the keyword collision), to a single program that can respond intelligibly to pretty much any statement, with a limited - but nonzero - chance of getting things right...

This tech is raw and not really production ready, but I'm using a few LLMs in different contexts as assistants... And they work great.

Even though LLMs are not a good replacement for actual human skill - they're fucking awesome. 😅

[-] swordsmanluke@programming.dev 178 points 7 months ago

What I think is amazing about LLMs is that they are smart enough to be tricked. You can't talk your way around a password prompt. You either know the password or you don't.

But LLMs have enough of something intelligence-like that a moderately clever human can talk them into doing pretty much anything.

That's a wild advancement in artificial intelligence. Something that a human can trick, with nothing more than natural language!

Now... Whether you ought to hand control of your platform over to a mathematical average of internet dialog... That's another question.

[-] swordsmanluke@programming.dev 35 points 7 months ago

I DM for my kids. Our first dungeon ended with an ogre-mage sending undead after the party.

The heroes made quick work of most of the zombies and skeletons - and critted the ogre-mage so fast that the dungeon was cleared in record time...

And then the party's necromancer (My oldest) decided to raise the ogre-mage. And made them his undead lich-thrall, with instructions to rule the dungeon until the necromancer's return to the region...

Huh.

[-] swordsmanluke@programming.dev 37 points 9 months ago

Compilers are a specialized topic - and syntax design is fiddly - but it really is no harder than any other sort of program. A lot of the hard theoretical work was done back in the sixties and seventies. You don't have to start from scratch. These days it's "only" a matter of implementing the features you want and making sure your syntax doesn't leave itself open to multiple interpretations. (just as arithmetic, e.g. '5 × 4 - 1' requires some rules to make sure there's only one correct interpretation, so do language syntaxes need to be unambiguous to parse. )

Don't get me wrong - writing a language is a lot of work and it's super cool that OP has done this! I just want to stress that language development is 100% doable with an undergrad degree. If you understand recursion and how to parse a string you already have all the theory you need to get started.

[-] swordsmanluke@programming.dev 46 points 9 months ago

Growing up deep in the dusty heart of the American West, I lived far from the conveniences and attractions of city life. But once in a blue moon, my parents would take my siblings and I to enjoy the rides at the park in The City.

Despite being the region's commercial hub, The City was small - barely 50,000 souls - yet it contained a park with mechanical rides. It was less a theme park and more a clamorous set of decrepit carnival rides that had been once erected and never removed. Naturally, the rides at the park were a favorite birthday treat.

The years passed and I traded the wide open spaces for a major metropolis, but I never forgot that little park and its rides.

...And so it was not until my thirty-third year that I realized the many signs upon our nation's freeways were advertising commuter parking lots - and not a local "Park and Ride".

[-] swordsmanluke@programming.dev 36 points 9 months ago

I never felt my hand break.

The tip of my opponent's long sword snapped into the back of my right hand, just behind the pinkie. There was no flash of incandescent pain, no stars in my sight - my mind was too focused on the swordfight. My opponent had scored a hit - and it had hurt, even through my glove - but adrenaline, as they say, is a hell of a drug.

After the tournament, it became clear that something was wrong. My hand began to swell and deform, my right pinkie levering itself inward across my palm until it was sitting at nearly 30° off true. Its nail sat jauntily behind the second knuckle of my middle finger. Making a fist was impossible.

Unfortunately, I was nineteen and had neither cash nor insurance for a doctor. So I did the next best thing - ignored it and told people it was probably just a bad sprain. When people suggested I see a doctor i responded, "What's a doctor gonna do? Tell me it's broken and take it easy? I'll save the money."

After a few weeks the swelling had gone down enough that I could finally feel the bones in my hand. Where there had once been a single line from wrist to knuckle, I could now feel an 'x'. An 'x' which had clearly spent the last few weeks knitting together at a now permanent bad angle.

It occurred to me then what a doctor would do - set it properly. But now they'd need to re-break the bone.

Unfortunately I still had neither insurance nor cash.

What I did have was a freezer full of popsicles and a small toolbox. I ate a popsicle. And then put the stick between my teeth as I braced my right hand on the table and raised a hammer in my left.

WHAM ... WHAM!

I hauled on my pinkie to pull the now-separated bones out straight then massaged them into position until things felt roughly aligned properly.

... Many years later I had health insurance and told my doctor this story and asked if he could x-ray it for me. A week later I received a letter in the mail. Inside was a printout of my hand x-ray with the healed break circled in pen. Besides the circle was a note: "Good job with the hammer".

All things considered I did a pretty good job, but it's not quite perfect. My pinkie still leans inward - just a hair. Just enough to remind me.

42

I've interviewed for and been interviewed by companies large and small. We all know software engineer job interviews suck. But it's hard on the other side of the table too.

One of the better places I worked for had a lightweight process of one phone screen and a four hour on-site. The company also prepared offers before the on-site interview round.

When you finished interviewing, you got a same-day yes or no answer, and if it was yes, you had the offer in your inbox within an hour.

What interview practices have you found effective?

... And by what metric?

[-] swordsmanluke@programming.dev 46 points 1 year ago

Welcome to Bartovia. Our little burg on the edge of nowhere. It would be completely unknown but for one fact: Bartovia is home to the largest, unexplored ruin known to exist. Every year, dozens of would-be heroes try their luck and every year the lucky ones go home empty-handed, but a little wiser maybe.

Once a decade - or less - someone escapes with real treasure. A time-hopping artifact crafted by a half-mad wizard with an unspeakable name. A sword that speaks the date and hour of your death when drawn.

And that always starts another frenzy among the desperate, stupid, or both, who flock here to die in those cursed halls.

Of course, in their haze of greed and increasing desperation, more than one dumb bastard has tried their hand at robbing the inhabitants of our humble home. The young fools never stop to wonder - who would stay here? But for the ruins there's no industry. Too cold to grow most crops; No precious ores to mine; Nowhere near any of the good trade routes.

They don't realize - we are them. The same fools and try-hards of years past. We're the ones who pushed too hard; exhausted our funds; got injured; or just never learned to let go. We couldn't leave. But couldn't go on, either. We sold what we could part with...and then the rest. We got jobs. Opened taverns, inns, and supply stores to fleece the next round of idiots. Nevertheless, we are an entire city - if a small one - of adventurers.

Certainly, some of us are a bit long in the tooth - but woe betide the next poor bastard who thinks to pick a pocket in Bartovia.

[-] swordsmanluke@programming.dev 100 points 1 year ago

I'm a sword guy. I spent over a decade training in historical swordsmanship (mostly European longsword - a mix of Fiore and Lichtenaur; but also a little kenjutsu).

There are so many bad takes about swords out there, but I think my personal "favorites" are about the folded steel technique used to forge katana.

See, to make a good sword, you need good steel which is iron + carbon. More carbon = harder steel. Harder steel is better for holding an edge, but also less flexible and more likely to shatter. All swords, European, Japanese or otherwise had to balance those concerns.

Anyway, in Japan, their katana forging technique used steel with slightly differing carbon amounts wrapped in layers in the blade. This layering had a couple of important metallurgical effects:

  1. It gave the core steel a more consistent quality. Since the method they had of producing steel contained varying levels of carbon, the repeated layering, folding, heating and hammering evened it out.

  2. The layering also increased the strength of the steel. By adding layers of high and low carbon steel, the sword smiths could control the flexibility vs strength of the core.

Ok, so without getting too deep in the weeds, that's (basically speaking) why katana were made of folded steel.

But I have been "informed" by so many people that folded steel:

  • Creates an edge like a thousand razor blades!
  • Makes katana stronger than modern steel!
  • Makes katana stronger than European swords! (steel-wise, it's a wash, though later blade geometry techniques like fullers arguably give European swords the - ha - edge in durability.)

In summary: katana are great - but not magic! The folded steel technique enabled forging swords of high-quality, consistent steel at a time when that was really hard to do. But that's it.

/self looks at rant

Uh... Thank you for coming to my TED Talk.

81

[-] swordsmanluke@programming.dev 40 points 1 year ago* (last edited 1 year ago)

Rogue: deviant from the norm.

Rouge: a shade of red.

If your pee is rouge when you stand, you need to see your doctor.

[-] swordsmanluke@programming.dev 73 points 1 year ago

It is virtually impossible to remove yourself from advertiser's rolls.

Thanks to the new CPRA regulation, you can ask companies to delete everything they know about you. Great!

Except that the way the law is written, that often includes deleting the fact that you asked to have your data removed. So the next time they get your data from a broker, (or the next time a broker gets your data), you're right back at square one.

In theory, if you managed to send simultaneous requests to every company that's holding your data, you could wipe the slate clean...until the next time you used a website.

There are so many data sets out there that we are all a part of. And if your data is in just a single one that didn't get wiped, everyone will end up with it again as a matter of course.

1

I want to make my programming language! ...for fun.

I've been reading LLVM's own tutorial, which is really good. I'm curious though, for those of you who have written your own languages before... What do you wish you had known before you set out?

In terms of previous experience, I have written a really basic lexer and parser for a non-executable markup language I designed. Now I'm curious about the next level. I have some ideas for a language design I'd like to try out. The language features themselves are nothing new - I'm sure some other language out there has done these things and done it better. That's fine! I just want to better understand how all this stuff hangs together.

[-] swordsmanluke@programming.dev 38 points 1 year ago

May I introduce you to the Gemini project?

It's a new(ish) protocol for sharing interlinked text documents. It's intended to sit between Gopher and HTML in terms of complexity and is deliberately, aggressively simple (some might even say crippled) with the intention that it will be nearly impossible to extend the protocol for surveillance capitalism. It's not trying to replace ye olde WWW, but to provide a human-focused place for text-first, 90's-style sites to live. ...just without the blink tags.

40

I've been dual-booting since the early-oughts, but I'm only just now preparing to delete my Windows partition for good.

What with all the repartitioning in my future, I figure it's a good time to just make a clean start - reinstall from scratch. ...but I have about a decade's worth of tools and dotfile tweaks accumulated, including things like updates to xorg.conf to support my old (but awesome) mouse.

So... What's your favored toolset to get your machine back to the way you like it?

I've done this all manually many a time, backing up my home dir, writing scripts to install software, copy important config files into place, etc.

How do you like to go about reinstalling your programs, restoring .dotfiles and config?

view more: next ›

swordsmanluke

joined 1 year ago