HN user

whartung

5,004 karma

willhartung@gmail.com

If anyone knows anything about the internals of an object based drawing (think Visio, not PhotoShop), I'd love to talk about how composite objects are managed.

Posts1
Comments1,333
View on HN

I have Jim Ladds book, autographed. My friend went to a book signing and got it for me. It’s signed “They say it’s your birthday — Jim Ladd”.

I also saw him when he toured with Roger Waters for “Radio KAOS”. “Good night Jim.” “Good night, Billy.”

I really enjoyed him when he was at KMPC/KEDG with JJ Jackson. That station struggled to find its way, starting early on with Pat “Paraquat” Kelly and Cynthia Fox, along with Guy Kemp at night (kind of a comedy/zoo shtick — I found his show really funny). I remember calling in once when Joe Satriani was just getting airplay, and the guy who answered was yelling “Are you hearing this? Are you HEARING THIS!?”.

Live radio.

It was nice with Ladd because he had his freedom, but a wider playlist.

MARS-FM, KROQ, KNAC, Pirate Radio, 91X (from Mexico, when you can get it, but they had some power).

But, a notable memory was 1989. Tiananmen Square.

Geno Michelini, KLOS, Five o’clock funnies fame, announced the breaking news of what was happening in China, and followed it up with Rush’s “Red Sector A” from “Grace Under Pressure”. I still get a little choked up thinking about.

Live radio.

Two of my favorite Z80 anecdotes.

First, my Father wanted to try to add some peripherals to the original TRS-80 Model 1. So, what he was interested in doing was asserting the BUSREQ pin to tell the Z80 to get ready so that he could have the bus, ideally waiting for the BUSACK signal to know when it was his.

Unfortunately, on the Model 1, when you assert the BUSREQ pin, it is tied directly to the tri-state buffers that handle the address and data bus. So, as soon as you make the request, the Z80 loses all access to its memory and data -- mid cycle. Which, you know, can be Bad. Radio Shack labels this pin TEST and uses it for internal testing. But it was definitely a bit of a disappointment to my Fathers efforts.

The second one is when I learned that the Game Boy Advance has a Z80 built into its chip. The designers drag and dropped a Z80 core (tweaked for GB) just so they could run legacy GB games on it. It just kind of bends your view of the computing world when something as significant as a Z80 can just be shoved into the corner of a die for "just in case" functionality.

Just shows how far we had come at the time.

That's pretty neat!

God help me if I fell down a hole like that.

I must say, however, that e.g. code like (compile-compound) is something only an AI can love!

I find a procedural style of programming so much easier to reason about, both when writing and reading.

Then do that.

There's nothing stopping you from using pretty much any style of programming that you like. Or mix and match. Or evolve over time.

Loops, lists, arrays, structures. Simple iteration: dotimes, dolist, loop. If those are your bread and butter, then feast! CL will happily do that. That's what I do. I just don't think "functionally" when I do CL code, I'm just not there yet, so its unnatural for me, and not what comes spewing out of my fingers when I write code.

And it's "OK".

You don't have to use the other features of the language, but they're there if you want to dip your toe into it.

With CL, also, I tend to be really wordy on variable and function names. I'm really fond of kabob-case-for-identifers.

How are (can) datacenters be taxed?

Mind, I don't know, but normally you put in a business, or factory, etc. the state can tax the economic output of the factory.

The factory builds things, sells things, they tax the sales of those things. Local employees get salaries that can be taxed, etc. Of course, property taxes on the land and improvements.

But how does that work with a datacenter?

If I pay $5 for an EC2 instance that happens to be hosted in, say, Virginia, is that a "sale" from the "Virginia Data Center", or is that sale realized somewhere else?

Of course I don't know how that works with, say, a Ford assembly line in Tennessee, with the car sold in California. Does Tennessee get a piece of that Bronco when it leaves the factory, or is it all just internal, corporate money shifting?

As I understand it, the people -> systems ratio is really low. Large datacenter managed by, perhaps, a 1 or 2 dozen people. Most of the "work" is remote, but there needs some hands on to dust the hardware off once a week. But, it's not your typical ratio of people per sq ft of space as other industries.

Just seeing that if you have this datacenter thats "bringing in" lots and lots of dollars, how does the state and local community get their take of that economic activity?

I never realized that when chatting with the bot, the entirety of the session was sent each time. I guess I just figured there was some state maintained Out There, rather than simply resubmitted each time.

What’s interesting to me is how today, something like Avatar 3 has seemingly no traction or notable impact.

Perhaps it’s generational. It clearly did well in the box office, so somebody went out and saw it. But nobody I know directly, indirectly, or remotely has seen it.

It got zero chatter in any of the places that I frequent, and that includes some SF themed communities.

Big picture. Lots of tech, very expensive, Cameron, the whole kit. But whatever impact it had, clearly I was out of its blast radius.

I appreciate the potential power of AOP, but I'm grateful I never had to use it directly.

Rather, I got to rely on the special handling within, notably at the time, the Java JEE ecosystem. It was not "generic" AOP by any means, it was specialized. But I can say that what they did support was more than enough for my applications. I never felt I could use a more flexible framework.

I know some folks that did, the embraced it whole hog, and really got some power out of it. AOP could be used to make some very powerful constructs, especially adding dynamic behaviors to existing systems.

But that was simply never something I really needed in my Java work.

Favorite story I heard about voting was an anecdote relating to the flight computers on one of the Boing 7xx jets (probably the 757, but I don't know).

The story was that they were planning to fly with 3 computers, and that they would "vote" on important decisions.

The real trick was that they intended to build those computer with 3 separate teams, using clean room implementation (no coordinating with the other teams), and that they were going to use 3 separate CPU architectures, and even 3 different implementation languages.

As I understand it, they conceded on the language choice, they were all going to use the same language, but I don't know about the rest.

The goal was to avoid some catastrophic "unknown unknown" that might have crept into the implementation if they simply rolled out 3 copies of the same system.

Boy, I can hardly wait for this to open.

I got to visit the Shuttle just before they closed it down to make this change, and it's a wonder to behold. They had it on display, about 10 feet off the ground (I forget how it was supported).

But it was an amazing piece of machinery to be in the presence of, to be so close.

They have the last boosters and last external fuel tank for this exhibit, parts I believe were originally used for testing. Seeing it upright will be amazing.

If you look at one of the photos on the site, you'll notice workmen below one of the SRB nozzles. As I understand it, that's how the entire this will be displayed -- being able to be beneath one of the nozzles. I have to assume there will be walkways to get closer to the shuttle itself.

I have some construction photos of them getting the SRBs in place. Like everything else, they're...big.

Anyway, looking forward to this exhibit reopening. Gonna be a one of kind exhibit.

I essentially did this in college for my freshman comp english class.

It wasn't groff, or even Unix, or even a screen editor.

It was some RUNOFF clone running on NOS, using the XEDIT line editor.

But once you added the few commands you need (page size, margins, double space), it was just blank lines demarcate paragraphs and you're off to the races.

The advantage here is that one of the things that actual Wordstar brings to the table is formatting. Few of the other just "editors" offer that. (Notably, things like double space). I would not like to have to maintain double space text in a random text editor.

Since the text formatter dealt with word wrap and pages and everything else, I was just able to dump in raw text, not worry about formatting (at all), and just go. It's "OK" to have a line with just a single word on it, so using a line editor really isn't an issue. (Joining lines in XEDIT is kind of a pain in the neck.)

The teacher was kind enough to accept my papers from dot matrix printers on reversed green bar paper (cut to width, of course).

But, fundamentally, using simple groff is very capable for basic manuscripts without having to fall down a deep dark rabbit hole.

They’re not printing the metal parts. They’re printing the frame (as in “polymer framed handgun”).

The frame is the part that gets the serial number and is considered the controlled part of the gun. Rather than the trigger, the springs, the barrel, etc.

Other than the frame, which requires an FFL for transfer, especially across state lines, the rest of the parts can be ordered and shipped from anywhere and are not controlled.

Mind, that’s changing, again notably in CA, as they now talk about “gun pre-cursor” parts.

The 3D printed frames are similar to the “80% lowers” which are aluminum blocks that are “80%” complete AR-15 lowers (the lower receiver, again, the controlled part of an AR-15).

With straight forward machining and some jigs, those chunks of metal can be finished into an operational lower receiver, and the rest of the rifle can be assembled from disparate parts ordered from anywhere.

The original “ghost gun” before 3D printers enabled folks to assemble Glocks in their garage.

I can't think of any, but I can share some examples.

When shredding things like log files, or raw data file, being able to do things like:

  :g/bad line/d
To delete all of the "bad lines". When manually paring down some files, you can use `ma` to do "Mark A" (vs `mb`, which is Mark B). So, I can be scrolling through the file, do the mark when I get to the top of a garbage section, and page or scroll or search to the next "keep" section, and then do `d'a` which means "delete to A", and so it removes all of the stuff I've skipped through.

Doing simple things like:

   !Gformat (! to shell out, G for "the entire buffer", format is the program)
Which runs the entire buffer through the `format` command to wrap paragraphs. I don't necessarily need that feature in my editor, I have a utility that I can use instead.

Of course, you can use `!'a` to a mark. or `!/thing` to run current line to the next "thing" (use `?` for previous).

Banging to utilities is a nice way to develop a pipeline, you basically get to see stuff step by step. So instead of:

    grep thing file | cut -f 1 | sort 
You can vi the file, `!Ggrep thing`, "Yup!", `!G cut -f 1`, "Ok!", `!G sort` and easily see the intermediate steps. (Not recommended on enormous files, since the entire region is replaced.)

The `.` is great for `/word` to find a "word", `cwnew-word`, and apply it selectively. `n` to "search next", and it you like it, `.` to do the `cw` again. Otherwise, keep using `n` until you find the one you like.

And I have no problem running a chunk through a bang command to see what's what, only to just `u`ndo it. (With modern `vim`, you can undo that all the way back to the start if you're doing that pipeline thing.)

And, I would routinely do something like:

  ma$%:'aw/tmp/x.x!vi other.txt then /wherever, :r /tmp/x.x
Mark A, `$` to EOL, `%` to closing brace (imagine a C function header), write from mark A to current line to /tmp/x.x, `!` to shell out to a new `vi` session, then read in the snippet.

Old school, single session, copy and paste. My /tmp is scattered with x.x, x.y, x.1, etc. files.

Along with regex replaces, this is 95% of how I use `vi`. I'm sure there's a bunch of other features, especially in `vim`, but these few bits are flexible and powerful enough to cover my needs. Since I haven't really been found "wanting", I'm not really "looking".

And it started because `vi` was a singular common denominator across all of the disparate UNIX minis I used to work on, so I just managed to work with what was available wherever I went.

I learned vi back in the day and have never really graduated to vim.

My favorite features are the ranges on the commands (like substitute or delete), piping the buffer into the bottomless utility of the classic UNIX command line, and the . do again command.

About the only vim feature I use today is being able to navigate while entering text, but even after all this time, that is not automatic to me.

I have used syntax coloring a couple of times, I find it particularly useful for XML, especially XML with chunks of XML commented out.

Al (most?) of the other RTS games are very resource constrained. So, you have to focus on tight unit mixes, concentrate on individual battles, doing micro, and running about.

TA is more a game of raw tonnage, not of finesse and subtlety.

As the same time, original TA is notorious for not being finely tuned or balanced. And I'm sure that's much more important in PvP.

But in PvE flinging two industrial powerhouses against each other, where subtlety is replaced by 100, throwaway, Flash tanks, it's just a different play experience.

TA is the only game I consciously went out to buy a faster machine to play. Upgrading from my 133MHz to a 400MHz so I could run more units in TA.

I rarely played TA vs other people. It was always either the PvE scenarios, or skirmishes.

Against multiple AIs I would strive to take out several of them, leaving one time to build up. Then the game would quickly devolve into "hose on hose" combat where my automatic production with bottomless resources would push out toward the oncoming bot army fueled by their infinite resources.

You could see on the large map how well you were doing based on how close the hose front of clashing machines was to whose base. But that was necessary to open up space to create special armies and other techniques to get around the hose, and flank the base.

All while being blasted to splinters by bots and Berthas and Brawlers and everything else.

But get a good Goliath drop into the rear, and it's just glorious spectacle.

The whole thing, in the end, was spectacle. The sounds, the shrapnel, the rocking of the maps when some wandering commander would wander into the wrong area. Like getting winged by a far off Bertha and giving chase to enact revenge upon it.

And a special Flea scenario is hilarious fun.

Loved that game.

He was a singular talent as a storyteller to be sure.

I used to be a regular listener to his show, but I haven't heard it in over 30 years. I can't even say that he'd make sense to me now today.

I really, really want to cite Joe Franks "The Dictator" here, notably the scene where he's eating the vegetables that have grown on himself (if I'm remembering correctly), but...I really doubt anyone will get the reference.

Telescope Ranchers 1 month ago

I'm putting one of the modern "Smart Scopes" on my Christmas list this year.

I had a friend with a 10" Meade with which not much happened. Just a bear to lug around and set up and mess with, not even including trying bumble through getting astrophotography started.

But the new-ish Smart Scopes looks fun and accessible, so gonna see if I can get one of those to play with.

Will the inevitable M5 releases from Apple change this equation in any meaningful way?

I'm waiting to swap out my last gen Intel iMac with a new M5 mini of some kind, with the eye to hopefully be able to run some models locally. I envision a mini (heh) arms race to simply swapping out an M(X-1) for an M(X) annually as this field shakes out.

They're nice, but they're not the same thing.

The threading macros are (as I understand it) pure sugar.

Turning (-> (gather my-list) uppercase-list sort) into (sort (uppercase-list (gather my-list))).

In contrast to, say, Java (I can't speak to the code above):

        List<Things> things = thingIds.stream()
                .map(model::findThing)
                .filter(Objects::nonNull)
                .toList();
These are streamed. This is pretty much a pipe structure, whereas the threading macros will create a lot of temporary copies of the data (I don't know if that's a universal truth). That is, if you're processing a 1000 items, say `gather` returns a 1000 items, that 1000 item list is passed to `uppercase-list` which return a new 1000 item list to feed to `sort` which returns another 1000 item list (assuming none of these are destructive).

I wish CL had something like the Java streams (maybe it does).

Today, the thing that makes the HP48 series much less useful is simply that they lack a backlight.

I find them simply difficult to read and use today because of that.

So, I just use a HP48 app on my phone. It's not as good, lacking the tactile response of the keyboard. But it's close.

I used to program the 48's. You think laptops are convenient, wait until you try coding in bed on a 48. Very comfortable, if you can stay awake :).

I'd much rather be on a freeway at 60+ MPH surrounded by 2.5 ton vehicles with poor visibility than riding an urban street. New riders are rightly intimidated by the freeways (they're fast, they're big), but they're far, far safer than the street with all of the starting, stopping, hard corners, folks turning onto the street, and, of course, the king of bike slayers, the "I didn't see them" left turn.

Not to mention all the junk on the streets: the oil, anti-freeze, gravel, wet painted turn arrows.

When freeways become unsafe is when the loose nut behind the handlebars decides to wick it up and just "go around all of these big slow things". But that's not the freeways fault.

First year/10,000 miles is the hardest. But the foundational rules apply: Wear the gear, slow down, don't ride impaired (drunk, high, tired...).

Lightning strikes, it sucks. But, anecdotally, my worst motor vehicle injury was while a passenger in a modern car when my friend drove into a left turning vehicle. "Fender bender", "no biggie". Chronic, notable, back pain ever since. Worst than anything I've ever suffered on a motorcycle.