Not there yet…

J.Kb. posted about the case regarding Mexico suing a number of American firearm manufacturers for reasons. Oral arguments were heard in the 1st Cir. on the 24th. I’ve created one of my automatic transcriptions. I have not finished listening nor reading.

That is part of the plan for today.

The short version seems to be that the District Court tossed the case because it was in direct violation of PLCAA.

The problem, for me, is that much of this is not a 2A case but a bunch of other things.

I need to understand the legal concept of extraterritorial, what the lawyer is talking about when he claims that only some things are precluded by PLCAA. If a US court must hear the case because of a violation of Mexico’s laws. There is a section on “cumulative damage”, “jurisdictional stripping”, references to multiple cases, are all issues mentioned. They are also considering if they should allow the case to proceed, regardless of PLCAA because if Mexico were to do this in Mexican courts, they would have no way of enforcing on the American companies.

There is a bunch of stuff regarding “aiding and abetting liability”. And “proximate cause”, whatever that means.

Meanwhile, I’m attempting to get some client work done. Including GFZ. Have a good one!

Geek Rant — Linode/ReadWriteMany – Ceph

High availability is a concept that says you will have zero downtime.

Consider an old world situation. You have a server that is serving exactly one website. On that server you are running an Operating System, a database engine, a web server (Apache/Nginx), an interpreter, and a bunch of code and HTML.

In your browser (client) you type “http://www.awa-example.com”. This causes your computer to send a request to a DNS server to translate “www.awa-example.com” into an IP address. Dozens of computers working in a distributed way work to get that answer. Your browser then opens a TCP/IP connection to the address it was told to use.

When that connection finishes traveling across multiple different servers (routers) it arrives at my server. My server examines the packet and determines that it is addressed to the web server. The web server looks at the request and sees that the request is for www.awa-example.com. It looks through its configuration files and decides on which interpreter to use. It transfers the request to that interpreter.

The interpreter loads configuration files and loads the code to execute/interpret. That code runs and opens a connection to the database engine. The code makes a query to the database, the database returns a result, the code formats it and sends back a message to your browser, which displays it.

If any part of that long set of computers/servers and software fails, your browser doesn’t get an answer to display.

We have a “demark” that marks the point of responsibility. Anything outside the demark is “their” problem. Anything inside the demark, including the demark, is our issue.

What that means is that in a high availability system, there has to be at least two of everything. On the outside, we must have two “theirs” and two demarks. Linode provides us those multiple “theirs” and demarks. If one link into their data center dies, the others take up the load and everything continues as if nothing was at issue.

If we are worried about the data center, they offer data centers all around the world. We are happy with just one data center.

At their demark they send traffic to one of two “node balancers” we have purchased. These are in different racks. Each is capable of handling all traffic into our cluster. If they need to update the node balancer, they can update one, wait until it is up and running, then update the other. This is either software or hardware. They can physically turn off one rack, and we won’t even notice.

We use a cluster to support our clients. There are 6 nodes (servers) in our cluster. 4 are ours, two are theirs. Their nodes are used for the “control-plane”. This is what controls our cluster. When we tell our cluster to do something, it is the control-plane which orchestrates the other nodes.

We run two ingress pods. The node balancers send traffic to these pods directly to our nodes in a round-robin. If we need to upgrade our ingress, the cluster will create a new ingress pod, make sure it is up and running, then terminate one of the old ingress pods. It then launches another ingress pod, when that is up and running, it terminates the last old one.

There is NO downtime as this happens.

The ingress sends handles external SSL and internal traffic to services. The cluster receives traffic at the service and forwards that traffic to which ever pod is providing the service. If we run at least two pods, we will not have downtime. We set things up so that pods run on different nodes, if possible, so a node failure doesn’t take down all the pods.

Which brings us to the tail end of all of this. Our pod.

Our pod, in this case, is running WordPress. If the pods can mount a file system in ReadWriteMany then multiple pods can access the same files at the same time. WordPress has a directory of content. These are files that we upload, images, PDFs, videos, themes, and a boatload of other things. We want to have that directory accessible by all our WordPress pods.

We don’t have to worry about the database, that runs in its cluster. If one of the database engines dies, the others take over with no loss of function. We run a hot spare style of replication. We could use a multi-master version, it isn’t worth it at this time.

And this brings us to The Issue. Linode provides us with persistent volumes. This works perfectly for many situations. Unfortunately, those persistent volumes are ReadWriteOnly. This means that only one pod can access the files at a time.

Since there is only one pod, there is no redundancy. If that pod fails, the site goes down. If the node that the pod is running on fails, the pod fails, the site goes down.

On good days, when a pod fails, it is restarted and the replacement is up and running shortly thereafter. Downtime is low, but not zero.

Linode isn’t going to offer a ReadWriteMany anytime soon.

Which brings me to Ceph!

Ceph is a distributed block storage system with the ability to run a distributed file system on top of that block storage.

All I should need to do is deploy it to my cluster. Sure, if I want to buy 3 more nodes/servers and a bunch of disk space for them. Think $1000s of dollars per month.

But there is a version for Kubernetes called “rook”. It can even use persistent volumes. After a few days of fighting this on my local Kubernetes cluster, I finally got it working. All that was required was to deploy it to Linode.

12 hours of fighting and I finally got it mostly functional. Until I went to allocate block storage for Ceph. Linode doesn’t allow block persistent volumes! ARGH! I’m stopped.

Then around 2300 Monday I got it. I used the same volumes that Linode’s persistent volumes used and attached them directly to my nodes as block storage. Amazing! It works.

Today I got it all configured and running. I will be upgrading GFZ to be a HA site in the upcoming weeks.

The world is better.

Tuesday Tunes

There are many tropes in story telling. One of them is “Don’t judge a book by its cover”.

People misjudge others all the time. I recently watched a video of a “prank” gone sideways. A “prankster” filled a gas can with water, went into a parking lot, found somebody sitting in their vehicle, poured the water on the vehicle and then pulled a lighter.

The “joke” is to see the fear in the people’s faces when they believe they and their vehicle are about to go up in flames.

The sideways was when the “prankster” went up to a pickup with an older man inside. As he started to pour the water, the driver got out with a pistol in his hand. The “prankster” then was recorded with fear on his face. Running for his life, screaming that it was just water.

The “prankster” had misjudged his target.

Another trope is the mentor telling the younger newbie, “Listen to that old fart, he’s old in a profession where you die young.” Old doesn’t mean stupid. Old doesn’t mean without means. Old, fat and slow can still be deadly fast.

I said I never had much use for one. Never said I didn’t know how to use it. — Matthew Quigley, demonstrating his skill with Colonel Colt’s revolver”.

Hanson v. D.C. (ammunition feeding device ban) – Updated

B.L.U.F. Another District Judge gets it wrong because they are another rogue judge.

Somehow, I managed to analyze this case twice. The first was back in April. The quoting is better, the references/citations are better. The snark is about the same. I believe it suggests that I’m getting a little better at this.

The first thing we notice is that judge Rudolph Contreras uses the Ocean State Tactical v. Rhode Island to get his definitions. When a multiple-round device like an LCM is attached, a handgun becomes a ‘semiautomatic’ weapon, meaning that it is capable of rapidly firing several bullets, one right after another.[xCite item=”Q7FCDJKN” p=”2-3″ pos=0] quoting the judge in Ocean State Tactical.

He also plays the language game. The law talks about “ammunition feeding devices”. He switches to “magazine” and once there talks about them as simple boxes. This is precisely the issue that the recent briefing to the Supreme Court addressed. By using the term “ammunition feeding device” throughout their brief, they make a solid case for why it is an arm and not just a box.

The good news is that the plaintiffs (good guys) did establish standing. All the plaintiffs have licenses to carry in D.C. All of them declared that but for the regulation, they would carry ammunition feed devices capable of holding more than 10 rounds. And some of them attempted to register firearms and were denied because the feed devices were “too big”.

Here we start to see the thumb on the scale On December 1, 2022, the Court permitted three nonprofit organizations, Brady, Gifford Law Center to Prevent Gun Violence, and March for our Lives to jointly submit an amicus brief in support of the District.[xCite item=”Q7FCDJKN” p=4 pos=1]. I have yet to find a 2A case where these groups don’t have their grubby fingers in there, pounding the table and attempting emotional blackmail.

Playing Stupid

Read More

Is it a sign of a problem?

I normally write my daily postings the night before. The article about pulling bullets was written Friday night for Saturday morning. After I wrote the article, around 2322, I decided it was time for bed. And got distracted on the way there.

The reloading press was right there. I had warmed up the scale before starting the article. So I sat down and reloaded the bullets I had just pulled.

Per the Hornady manual, 14.5gr of Alliant 2400 under a 156gr HDY GTX. Success!

Today I did a test firing. The .357 Mag was an afterthought.

That corner of the room which holds some of the cans and crates

I couldn’t find any 30-30, I knew I needed to load some. That required I find the 30-30 brass and prep it, locating the powder, then setting up the reloading bench for 30-30. The first crate I checked was labeled “brass”. Yes, it was full of brass, none of the brass was 30-30. The next two crates were labeled bullets, not worth checking.

This required more digging. I cannot find the crate or ammo can that should be full of powder, nor can I find the can or crate full of 30-30 brass.

I do find the 30cal can labeled “30-30”, I open it, hoping to find cases. Nope! Instead, I found the mother load. Two boxes of bullets. Old bullets. A couple of plastic ziplock bags labeled for 30-30. A bag with a single case ready to reload.

The bottom half of the can was full of loaded, ready to use 30-30.

Using the instructions I got from the owner of boxes for ammo, I started backing them in nice white boxes. 6 boxes, 20 rounds each of 30-30. I don’t need to reload any 30-30 today!

I took the Marlin 30-30 with scope out to try to zero it. Not a lot of joy there. I need to do it again. Since I was taking the 30-30 out, I took the Ruger GP100 with .357 Mag loaded up. Fired off the cylinder. Perfection. All the cases ejected as they should. No sighs of over pressure on the primers, and I’m below max load.

The 30–30 Marlin punched my shoulder harder than I expected. It didn’t zero. I’m not sure what is going on there. My Winchesters, firing the same loads, do an outstanding job of ringing steel and punching holes in paper, exactly where I want. Iron sights and all.

Sunday I need to finish digging through the reloading room. I know there is a couple of cans of powder in there. I just need to find them.

Pulling Bullets

When you make a mistake, own up, do the right thing.

I didn’t do the right thing. The right thing was to pull all the bullets for the hot loads I made. I didn’t want to because it is a bit of work, and I’m lazy. It should be safe to unload them through the R92.

Lazy, safe, reloading do not work. You have to be careful, you have to do the right thing, every time.

I have two or three powder throws. I do not use them. The consistency I was getting with them wasn’t good enough.

The two presses I have are both Lee presses. One is an OLD single stage. I like it. I don’t use it. At this point, my main complaint, using it to deprime, is no longer an issue as I use a different method. The press I do use is a Lee Turret press.

When I started using it, I used it as a turret press. Everything was all setup and I could crank out the rounds quickly and easily. First I would deprime, then clean the cases in a wet tumbler. From there, it was time to run it through the turret press.

Put the case in shell holder. Handle down to resize the case. While the handle is down, place primer in the primer cup. Handle up to insert the primer and rotate the plate to the next station. Handle down to flare the mouth, throw the powder charge. The Lee charger is semi-automatic. As the case presses into the die, it causes the charger to throw one charge. Handle up, place bullet in the case. Handle down to seat the bullet. Handle up to move to the next station. Handle down to crimp the case. Remove the cartridge, put the case in the shell holder, repeat.

Today, I use the turret press as a quick change plate. There is a universal depriming die, sizing die, mouth flare, bullet seating+crimping die. I rotate the plate to the die I want, then use it like a single stage press.

Which brings us to how I do it now. I have an automatic powder measure. You input the weight you want, press the “drop” button. The machine twists a trickle tube until the scale reads exactly the weight you wanted.

It takes just a few moments to throw the charge accurately. I have a standalone powder charger stand. I have just the base in it. This gives me a big enough target that I don’t need a funnel. I hold the case mouth against the bottom surface, pour the pan into the top and the case is charged.

The pan gets placed back on the scale for the auto-throw. Once it stabilizes, it will start throwing the next charge. While that charge is being thrown, I’m putting the case in the press, putting a bullet on and seating it along with the crimp.

Not as fast as a progressive, by far. Not as fast as just using the turret press. But it is the way I do it today.

So back to pulling bullets. I have a collet puller which hasn’t worked for me. Instead, I use an inertia puller. Put a round in the puller. Hit it on a hard surface a few times, the bullet pops out. It works, it just takes more of an effort than I like, as a lazy person.

Now that all the bullets are pulled, I can reuse the bullets and put the correct charge in place.

Thank you to everybody who told me I was being a dumb ass. I was. Your gently chiding was enough to make it clear I needed to do the right thing.

This is what I was thinking of:

Since the video, they did discover that the SLAP rounds that he was firing were not military surplus. That they were way too hot and the cause of the exploding 50 BMG rifle.

Friday Feedback

Things are getting better. I have a few rounds to be pulled. All the “hot” rounds have been put in a safe place, and I’ll pull them tomorrow.

There have been a couple of horrific opinions issued by the courts in the last few weeks. I’m going to be looking at more of them.

There have been a few wins. The 11th Circuit has vacated the opinion of the 3 judge panel and is currently planning on hearing the 18-20 yo aren’t a part of The People en banc.

The 2nd Circuit is still dragging their heels. The 7th Circuit hard testimony and is not going into wait it out mode. The 4th circuit still hasn’t made up their mind if they are going to follow Bruen and declare Kolbe bad law.

I’m still looking for dana950 and OldNFO to contact me via email.

Have a fantastic weekend!

The comments are open to everybody.

Rhode v. Becerra (Bonta) S.D. Cal. short update

Judge Benitez is hearing this case. I believe there are a few other cases he is hearing as well. Earlier this month there was a hearing. He has now set the schedule for the trial on the merits.

This is the point at which he will hear all the evidence, decide which are “facts” and from there he will issue his opinion.

On June 30, 2023, judge Benitez set a hearing date of July 17, 2023, at 1400. He issued the following order:

Pursuant to F.R.C.P. 65(a)(2), the Court intends to consolidate the hearing on the motion for preliminary injunction with a trial on the merits. At or prior to the hearing, the parties should be prepared to address, among other things:

  1. The Plaintiffs’ continuing Article III standing;
  2. Whether Plaintiffs’ conduct is covered by the text of the Second Amendment;
  3. Relevant historical analogues;
  4. Applicability of footnote 9 in New York State Rifle and Pistol Association v. Bruen, 142 S. Ct. 2111 (2022);

  5. The Dormant Commerce Clause (First Claim for Relief);
  6. Preemption by 18 U.S.C. § 926A (Ninth Claim for Relief);
  7. Whether judicial deference is owed to laws produced by ballot measure Proposition 63;

Whether additional discovery is necessary, and if so, the specific discovery needed.
[xCite item=”G44RYFDB” pos=0]

The state responded with:

First, Defendant intends to request at the hearing an opportunity to engage in discovery, which has not yet occurred in this case. See Dkt. No. 81 at 9. Defendant will request an opportunity to depose Plaintiffs and declarants, particularly with respect to Article III standing. Defendant will also propose that the parties be afforded an opportunity to engage in expert discovery concerning relevant history to inform the Court’s evaluation of Plaintiffs’ Second Amendment claim under New York State Rifle & Pistol Ass’n v. Bruen, 142 S. Ct. 2111 (2022).

Second, Defendant may submit additional documentary evidence at the hearing in support of his arguments that the challenged Ammunition Laws, enacted by Proposition 63, as amended by Senate Bill 1235, are constitutional. Defendant intends to mark and introduce any such exhibits at the hearing.
[xCite item=”3T9Z99GB” pos=1]

The state isn’t willing to tell the court, in writing, before the hearing what their arguments and evidence are. They are reserving that for the day of the hearing.
Read More

But it is supposed to be more reliable!

Kubernetes (k8s) is a tool for running containers on a cluster with a high level of redundancy.

Consider the case where you have a website that must be up all the time. You containerize the website. This adds a gigantic level of security but still gives you great flexibility.

The site is running just like it is supposed to, and you decide it is time to upgrade. You “rollout” the next version of the software. The new software is deployed, it starts running and is fully functional. The K8S cluster then changes some internal routing, and all traffic that used to go to the old container now goes to the new container.

When all traffic to the old container is done, the old container is terminated. Total downtime, zero.

Now it does work this way, MOST of the time. There are a few complexities to this which can cause issues. Your website consists of three parts, the “assets”, the “software”, and the “database”.

Since the database is running in a different container, there is no issue on the rollout of the website.

The software is part of the container. No issues there.

The assets, though… Those live on disk. The new website container must have access to those assets.

K8S resolves this through a Storage Method. A storage method is just away for you to describe storage that exists outside the container and which persists even if the container goes away.

The reality is that the data exists on the “node” and the container must access the node storage. Some types of storage are all network and K8S has the tools to use it straight out of the box. Other storage methods are just ways of exposing the node’s file system to the container.

Consider these three methods, SAMBA, MS Shares, and NFS. All three of these methods are pure network based. You have some sort of server that serves the files over the network. K8S attaches the file systems directly to the container. Since the actual data exists back on the file server, it is possible to have multiple nodes access that data at the same time.

Now consider an iSCSI target. There is a file server that is serving that target. That target is exported as a block device. Think “hard drive”. When you attach it to a node, it is as if you had plugged a new hard drive into that node.

Once that block device is plugged in, you can do other work with it. Not as it is. You first have to format it format c: for Windows users or mkfs /dev/sda for Linux people.

This is fine. Multiple nodes can attach the same block device. If one node formats the block device, the other nodes see it as a formatted drive that can be mounted.

Unfortunately, this will lead to data corruption. Most file systems are not designed to be modified from multiple hosts at the same time. There are only a very few file systems that are capable of running across multiple nodes at the same time.

This is the issue we are currently having with Linode. We request an iSCSI block device from Linode. This is provided for use as a “persistent volume”. When a container needs access to a particular volume, it uses a persistent volume claim.

To access that volume, K8S tells the node to mount the device. The node then allows the container to mount that part of the file system. Because the file system is single use only, the PV can only be mounted on one node at a time.

To access that PV on a different node, the current node must detach the PV. The container must move to the other node, the other node must mount the PV and only then can the container access the data again.

On Monday, a node attached the PV and then died. It did not detach the PV. K8S instantly discovered that GFZ was down and started a new container on a different node. The new node asked to attach the PV. The old node was dead, so didn’t say a damn thing. For 6 hours it sat like that until we destroyed both the new and old node and got a new new node, at which point everything started working again.

This happened because Linode forced an upgrade of our K8S, and it did not go cleanly.

On Tuesday, we upgraded K8S again. This time the new nodes all came up. Unfortunately, the node which GFZ was attempting to run on refused to attach the PV. Once Linode had looked at the issue, we kicked that node hard and it all started working again.

We need to have something that provides reliable, robust, multihost access. The answer is something called “ceph”. That was my fun for the day. Learning enough about ceph to allow us to migrate to using it for our persistent volumes.

O.F.F. v. Brown, Judges Opinion Pt. 2

B.L.U.F.More of analysis of the horrid opinion offered by Judge Karin Immergut out in Oregon.

I’ve since learned that she spent most of her career, before becoming a district judge, working as a prosecutor for the government. She was actually a prosecutor for the ATF. OF course, she found a gun infringement constitutional.


It is pretty clear that the judge was picking and choosing experts, facts, and testimony to get the conclusion she wanted. This is clear from the following:

Plaintiffs offered the chart as an industry report through the testimony of Salam Fatohi, who serves as the Director of Research at the National Shooting Sports Foundation (“NSSF”). Tr. 6/6/2023 356:4–5. Although this Court received the chart in evidence, see Ex. 33 at 7, in assessing the weight and credibility to give Mr. Fatohi’s testimony, this Court notes that the NSSF is a plaintiff in this case and has been a plaintiff in several Second Amendment challenges to firearms regulations. The NSSF is a firearm and industry trade association which advocates for the firearm and ammunition industry. NSSF members have a significant financial interest in the outcome of this case.
[xCite item=”FHMK3ZW8″ n=18 pos=0]

The EVIL gun lobby wants this, we can’t accept their testimony. How about the fact that Everytown, Brady, and a dozen other groups all pile on when there is a Second Amendment Case? Should their testimony be discounted because they have been a plaintiff in several Second Amendment challenges? Maybe the judge should disallow Paul Clement from representing Second Amendment plaintiffs because he’s been involved with several Second Amendment challenges?

Does she really think that all these anti-gun people don’t make money from litigating? I’ve looked at some of the tax filings for some of these groups, they seem to spend significant amounts of money on the administrative and executive salaries.

Nevertheless, based on the parties’ pretrial stipulation, this Court finds that millions of Americans today own LCMs. But this Court also finds that the number of LCMs possessed by Americans is influenced to some degree by whether a firearms manufacturer sells a particular model of firearm standard with an LCM, and whether that firearm is sold standard with more than one LCM. Tr. 6/5/2023 44:16–19; 67:6–17.
[xCite item=”FHMK3ZW8″ p=25 pos=1]

What is she talking about? That most people don’t buy extra magazines for their firearms? Technically, I guess that is true. My M1 Garand came with zero enblocs. I think I have over 50 of them now. All but a few loaded. My PC-9 came with one magazine. I’ve never even loaded it. I purchased 6 Glock magazines to feed it, and then purchased a Glock with a couple of magazines.

My first AR-15 came with two magazines. One was 5 rounds and the other 10. None of the other AR-15s came with magazines. I don’t know how many magazines I currently have. I still have one 5 round mag, and one 10 round magazine. I do have a few 20 round mags, but most of my magazines are 30 rounds.

It does not matter why The People decide to purchase extra magazines or if they just use the magazine(s) that come with their guns. They have decided that ammunition feeding devices with more than 1, 5, 7, 9, 10, or 15 rounds is what they want, those purchases are protected under the Second Amendment.

Plaintiffs offered only limited anecdotal evidence of LCMs actually being used in self-defense. Mr. Ayoob described an incident in which a law enforcement officer fired thirty-three rounds in pursuit of an armed bank robber. Tr. 5/30/2023 39:24–40:16. On cross-examination, Mr. Ayoob also testified about an incident in which two individuals fired nine and three rounds, respectively, at an armed intruder. Tr. 5/30/2023 56:16–57:14. On re-direct, Mr. Ayoob testified to two other incidents with civilians firing more than ten rounds in self-defense: two brothers who owned a jewelry store and fired between thirty and forty rounds to stop an attempted robbery, and one gun shop owner who used an M16-rifle and a sub-machine gun to stop an attempted robbery. Tr. 5/30/2023 95:15–96:13.
[xCite item=”FHMK3ZW8″ p=26 pos=2]

The judge is incorrect in how she categorizes these anecdotal incidents. They are examples of people using their arms to actively defend themselves. They were using those arms for lawful purposes, such as self-defense, by possessing them. They prove The People chose these arms in common use today for lawful purposes.

Conclusion

I’m now behind the curve, here are a couple of YouTube videos that go into just how bad this opinion is.

I might come back to this, but with multiple issues with the k8s cluster resulting in a full day of ClusterFuck and then another 30 minutes of minor CF today. I have not had time to do any more wading through this swamp.