Skills

Coordinate Systems

When I started writing, regularly, for Miguel, I took it upon myself to cover legal cases. Since that time, I’ve learned more than I really wanted to about our justice system.

As my mentor used to say, “The justice system is just a system.” As a systems’ person, that allowed me to look at cases through the lens of my experience analyzing large systems.

One of the first things I noticed was that most people reporting on cases didn’t provide enough information for us to look up what was actually written or said.

CourtListener.com has come to my rescue for most legal filings in the federal system. If you know the court and the docket number you can find that case on CourtListener.

Once you have the docket located, you can start reading the filings. These are stored as PDFs. Most of my PDF tools allow me to copy and paste directly from the PDF.

What isn’t available on CourtListener is Supreme Court dockets. I’ve talked to Mike and others, the issue seems to be something about scrapping the Supreme Court website as well as other stuff. I’m not sure exactly what.

I want to be able to keep up on all the current cases in the Supreme Court, what their status currently is, what has been filed. They entirety of the case. I’m not concerned about most of the cases, but often it is easier to get all than a selected portion.

To this end, I have code that uses patterns to pull cases from the Supreme Court docket without have a listing of cases.

This tool will have search capabilities and other tools shortly, for now, it works well enough.

I am using the PySide6, which is a python implementation of the Qt framework. For the most part, I’m happy with this framework. There are parts I don’t like, which I work around.

My most recent success was figuring out how to allow me to click on hyperlinks in text to bring up my PDF viewer. This was not as simple as I wanted it to be, but it is working.

The other night, I wanted to write about a current case. I had the case docket in my tool. I pulled up the docket, clicked on the link, and John Roberts’ order popped up in my viewer, exactly as it should.

I started writing. Went to pull the quote and nothing.

Copy and paste does not seem to be functional in my tool.

Which takes me to the rant, which @#$)*&@$) coordinate system should I be using to get the right text!

Qt is built around widgets. Every widget has its coordinate system. In addition, there is the global coordinate system.

Each widget also has a paintEvent() which is when it paints itself.

To start the process, I capture mousePress, mouseMove, and mouseRelease events. While the mouse button is down, I draw a rectangle from the place clicked to the current location of the mouse.

I attempt to draw the rectangle and nothing shows up on the screen.

Through debugging code, I finally figured out that I am not updating the right widget.

The QPdfView widget properly renders the PDF document in a scrollable window. I have made a subclass of QPdfView so I am catching all paint events. But even though I’m telling the system that I have to redraw (update) my widget, there are no paint events being sent to my widget.

Turns out that my widget only cares about update signals that require the framing content be redrawn. I.e. if the scroll bar changes, then I get a paint event. Once I figured this out, I was able to tell the viewport that it should update and things started working.

So now I can draw a frame on the screen. But what I want is to get the text from within that frame.

I asked the QPdfDocument for a new selection from point_start to point_end. It tells me nothing is selected.

Where do I currently sit? I have my frame in my PDFViewer coordinate system. I have the PDF document in a different coordinate system. The PDF coordinate system is modified by the scroll bars or viewport. The scroll bars and scroll area modify the actual coordinate system of the viewport contents.

Somehow, I need to figure out which of these coordinate systems is the right coordinate system to use to get the text highlighted by my mouse.

I’m tired of this fight.

Prepping – Garden Beds

Planning out your garden beds is important, because where you put your plants matters. Some plants can’t go near one another. Others love to be close together and help one another. It’s a complex dance, and you need to learn a lot to do a good job at growing enough food to at least supplement your stores.

Luckily, garden beds can be made out of anything. As I mentioned last week, I have beds made out of planks (sort of the standard, and one I actually would no longer suggest), buckets, bins, and tires. Some folks will tell you that tires leach chemicals that can get into your veg, but I have not seen any real evidence of that. Most of the leachable chemicals in the rubber are gone long before tires end up in landfill (which is where you can usually find them, often for free). All items used to grow stuff in should get a good wash before use, and anything small enough to allow it should get at least a rinse every year. I find using Dr. Bronner’s soaps (peppermint or tea tree) work best because they’re biodegradable, won’t harm your plants, and are concentrated so you don’t need a lot.

My garden, circa 2015.

In-Ground Garden

If you have a very large, square (or rectangular) sized patch, you may want to just till it up and use it as-is. It would be a miniature farm field, basically. With no sides, it takes longer to warm up in the spring, but it allows you to rearrange your garden each year (which is good, as you don’t want to plant the same thing in the same space, year after year). When making a very large garden of this sort, you will need to put down rocks, stones, or planks of wood to walk along between rows. While you can just leave the ground as it is, you will find that weeds come up very quickly and will threaten to overtake the whole garden. Also, walking on the dirt compresses it in ways that can negatively affect your plants. Walking on boards or beams, or on a brick path, will keep the garden from being compressed so much, while also keeping weeds down.

Generally, you want to make an in-ground garden into rows and/or blocks, depending on what you’re growing. Vegetables like peas, beans, and tomatoes are best planted in rows. Potatoes, squash, and corn do better in blocks. You can plan out the garden to keep companion plants together, and keep your veggie foes apart.

Requirements for an in-ground garden are a large, regular shaped space with enough sun, and the ability to till the soil in some way. While tilling can be done by hand, it’s not easy. You can rent or purchase a rototiller at most hardware stores these days, and there are expensive ones and cheap ones.

Read More

The Weekly Feast – Pork and Apples, Viking Style

This past weekend, I had the pleasure of attending, vending at, and cooking at the Northfolk Nightmarket in Phillipston, MA. This was its first year, and wow, it was amazing. I did pretty well, and I had a blast. Since this event is Viking themed (though “fantasy” Viking more than historical, they delved into the mythology of Beowulf in a day-long roving play), I decided to both dress as and cook as a Viking woman would. That meant coming up with meals that could have been served in Grylla’s mead hall. I decided to make a pork roast with apples, and a green soup. The soup was delicious, but the pork… It was divine. The following was food for about four or five people (but we were hungry from being out in the cold all day).

Ingredients:

  • 1.5 lb pork loin, plain
  • 4 apples, rough chopped
  • 2 red onions, rough chopped
  • 24 oz beer or ale (light, NOT dark)
  • salt, pepper, oregano, marjoram, about 1/4 tsp each
  • 1 tbsp dried rosemary

Get your fire quite hot and make a good bed of coals to cook in (alternatively, set your oven to 350° F). Over a quick flame (stove burner set to medium high), heat up some olive oil and toss in the apples and onions. Saute them until they begin to soften, but before they start to crumble. Place the pork loin over the vegetables, and sprinkle with the salt, pepper, oregano, and marjoram. Add in the beer, a little at a time so it doesn’t bubble over, until the pork is almost covered (you may need to add more beer later if you don’t cover your pot). Sprinkle the rosemary liberally over the top of the roast, and pop it over the coals for 2 hours.

Check on your pork every 30 minutes or so (or every time a patron asks you what you’re cooking and why does it smell so damn good?), turning it so that every side spends time under the liquid. If the liquid boils out, add more beer or some broth. Continue to cook until the roast is ready to fall apart when poked with a fork. If you’re cooking it in the oven, cook for 2 hours at 350°, then an hour hour or so at 250° while lidded, for the best result.

Remove the pork from the liquid and slice into coins. Using a slotted spoon, pull out the apples and onions and serve them alongside the pork, with a side of rice.

Notes:

I used old apples I’d found forgotten in our crisper drawer. They looked like apples that had been sitting around since autumn, which worked well for my event. Because of that, they were a little older, a little softer, and a little sweeter than a fresh apple. I highly recommend this, because the result was incredible. This came out moist, and absolutely bursting with the flavor of the beer and rosemary. It has a little bit of a sweet immediate taste, with a lovely savory flavor that hits you after.

If you can, I really do recommend cooking this one in cast iron over a fire. It was really easy, and it was very showy for when people came walking by. But the smell of it, and the slight background taste of smoke and ash, just really came together.

I will also say, we didn’t eat it with rice when we were at the market. We ate it with our fingers, dribbling juices into the snow and ice at our feet, and giving no f*’s. LOL… It was just so good!

Historical one room school complete with dunce cap. Things have come a long way in the classroom.

Dunce of the Week

That would be me.

Everything finally came together with the new system. Then I went and messed it all up.

The motherboard has a weak Ethernet. It is a 10/100 Ethernet, which is NOT a problem for a management interface. When I upgrade the box to have full redundancy, it will get a dual port fiber card.

What it does mean is that my Wi-Fi to it via a USB dongle is faster than if I were to plug it in.

Once the box was in position, I connected via Wi-Fi and finished configuration. I tested all the connectivity, and it all just worked.

At that point, I told it to join the cluster. It did with pleasure, and brought the cluster to a stop.

Did you catch my mistake? Yeah, I left that dongle in.

At the bottom of the barrel, we have 10base-T. I have some old switches in boxes that might support that. Above that is 100base-T, which is a good management speed. We can move data for upgrades and restores, but not the fastest. Some of my switches and routers do not support 100baseT.

Above that is where we start to get into “real” speeds. Gigabit Ethernet, or GigE. I’ve now moved to the next step, which is ports supporting 10G over fiber or cable, depending on the module I use. The next step-up would be 25Gbit. I’m not ready for that leap of cost.

Wi-Fi sits at around 200Mbit/s. Faster than “fast Ethernet” also known as 100base-T, but not at “real” speeds. Additionally, Wi-Fi is shared space, which means that it doesn’t always give that much.

So what happened? The Ceph(NAS) cluster is configured over an OVN logical network on 10.1.0.0/24. All Ceph nodes live on this network. Clients that consume Ceph services will also attach to this network. No issues.

When you configure an OVN node, you tell the cluster what IP address to use for tunnels back to the new node. All well and good.

The 10G network connection goes to the primary router and from there to the rest of the ceph nodes. One of the subnets holds my work server. My work server provides 20Tb to the ceph cluster.

On that subnet are also the wireless access points.

So the new node correctly sent packets to all the ceph nodes via the 10G interface, EXCEPT for traffic to my work server. Why? Because the 10G had a 1 hop cost, while the Wi-Fi had a 0 hop cost. By routing standards, the 200Mbit Wi-Fi was the closer, faster, connection than the 1 hop 10G connections.

When I found the connection problem and recognized the issue, I unplugged the Wi-Fi dongle from the new node and all my issues cleaned up, almost instantly.

Prepping – Planning a Garden

It’s time to start thinking about gardening. This is not just a pleasant skill that yields tomatoes. It’s a post-apocalyptic skill that is absolutely necessary. Have you ever tried just hunting and gathering? If not, don’t bother; there’s a reason we cultivated plants. Learning to garden now, when we have ample food at the grocery store (because even a lightly stocked grocery store is ample, quite frankly), is imperative. This is not a skill you can learn after the fact. The learning curve is so sharp that it requires early adoption and constant practice.

There are lots of easy plants to grow in a new garden, and I’ll talk about them next week. This week, I want to talk about planning. First off, it’s the best part of this part of winter (the crappy, cold, damp, windy part). You get to huddle near the fireplace and look through seed catalogs (on or offline, your choice), and dream. Dreams are seeds of the mind, after all. Stage one of growing food is literally dreaming about it.

Make a rough map of your yard. This is important because there are several issues that you need to address:

  • Where in your yard gets full sun? partial sun? no sun at all?
  • What’s the type of soil you have (sandy, rich, damp, clay, etc)? You may have to amend your soil to grow anything, so you need to know this in advance.
  • What kind of garden do you want to try (raised beds? containers? little pots? big pots? half an acre plowed by hand?), and how can you do it to best utilize the sun you get?
  • What is your Plant Hardiness Zone? Find out on the USDA website. As an example, I’m 5b, which means something. More on that later.
  • How much time do you want to spend on your garden? Remember it’s not just planting. You also have to factor in weeding, watering, fertilizing in some cases, weeding, helping plants with frames or structures, weeding…
  • What will you eat? Don’t bother growing something you know your family won’t eat unless you have a very good reason for doing so. Plant what you’ll eat.

When you pick out your best spot (with 6+ hours of sunlight a day, if at all possible), you’ll want to sketch it out in a notebook or using a computer program. I can’t draw a straight line to save my life so I use programs online. There are several:

Read More

The Weekly Feast – Chicken and Dumplings

Chicken and dumplings are a staple in my house. They’re something in between a soup and a stew, and I usually get silly and call it Stoup. They’re incredibly easy to make, though it takes a bit of effort until you’ve learned the method. It’s filling, delicious, and you’ll get requests.

Ingredients for the stoup:

  • 6 to 8 oz of uncooked chicken per person
  • enough water to cover the chicken
  • salt, pepper, oregano, thyme, and rubbed sage to taste
  • 1 medium carrot, diced small
  • 1 small onion, diced small
  • 1 large rib of celery, diced small
  • a teaspoon or so of butter, margarine, or olive oil
  • white wine to deglaze the pan

Ingredients for the dumplings:

  • 3 cups all-purpose flour
  • 1.5 teaspoons salt
  • 1 cup milk
  • 1 egg

The chicken for this recipe can be done in two different ways. First, you can use bone-in chicken pieces and make it like “pulled chicken,” meaning you cook it, then remove it from the water and shred it up until it’s the size of bits you like. Second, you can use boneless, skinless chicken breast or thighs, in which case you’re going to cube your chicken into bite size pieces. Regardless of which method you choose to use, you should sprinkle the chicken with salt and pepper, then brown it in a cast iron pan (separate from the one you’ll be making the broth in). Make sure to brown all sides, but remember it doesn’t need to be cooked through. The full cooking happens in the water.

While you’re browning your chicken in batches, add enough water to a pot that it will cover your chicken when it’s added. It’s okay if you don’t get quite enough in the pot; you can add more after. You just want to get enough in there that you can start heating it up to a boil. As you finish browning chicken parts, put them into the water. Make sure there’s enough water to cover all the chicken completely, but not much more, and then lower it from a boil to a simmer. Add in your spices, about a teaspoon of each for now. You can add more later if needed.

As your chicken is simmering, dice up your carrot, onion, and celery. Add a bit of fat to the pan you cooked the chicken in, and saute your vegetables until the onions are soft and beginning to clarify. Add a tablespoon or so of a dry white wine to the pan, and stir and scrape well with a wooden spoon. All of the stuff you scrape off the bottom of the pan is “fond” and it’s what makes your stoup delicious. Add the veggies and fond to your chicken and broth.

Make your dumplings. Add the four and salt into a medium bowl. In a separate bowl or measuring cup, whisk together your milk and egg. Add the liquid to the flour, and mix until it forms a dough. This should be a soft and relatively smooth dough, with very elastic qualities. It may be a bit sticky or tacky, but it shouldn’t stick to the counter when you’re kneading.

Knead the dough on a lightly floured surface until it’s smooth and elastic. Keeping the counter lightly floured at each stage, you should then roll out your dough so it’s as thick as you like your dumplings to be. If you like your dumplings to be fat and fluffy, you’ll want to roll them out to about a half inch thick. If you want them more like noodles (my preference), roll them to under a quarter inch, basically as smooth and thin as you can manage without the dough sticking to the counter. Cut your dumplings into strips, squares, diamonds, or really any shape you like. you can use a dough cutter, or a knife, or even a rolling pizza cutter. Use a bread scraper to lift the noodles off the counter, dust them well with more flour, and let them rest and dry a bit while the rest of the food is readied.

When your chicken is thoroughly cooked (about an hour, or longer if you like), pull any boned parts out of the broth. Shred, if you like, and return the chicken to the broth. Bring the broth to a low but steady boil, and begin adding the dumplings to it a little at a time. I usually add about a handful of dumplings, then stir and let them begin to cook. This keeps them from sticking to one another. The flour on the outside of the dumplings will help thicken the gravy in your stoup, too. Cook the dumplings until they’re tender. This can take anywhere from five minutes to 20 minutes, depending on how thick they were rolled and how dry they were when you started. They should be solid throughout, with no doughy interior. Thin ones will taste like fresh noodles (which is essentially what they are).

If you find that your gravy isn’t thick enough, add a little water or cold broth to a tablespoon of cornstarch, stir until well combined, and then add a bit at a time to the simmering stoup. Repeat until you reach the consistency you prefer. Add in any spices you like, and if you want a fancier look, top each bowl with a sprinkle of fresh minced parsley.

Serve your chicken and dumplings over a pile of mashed potatoes, rice, or on their own in a bowl with a spoon.

Network access storage NAS, cloud computing.

Thank You for the tools…

There are a few servers that are too old. There is a need for a few more servers to get a room level redundancy. These things can be expensive.

As I’m cheap, I’ve been using older servers that accept 3.5″ disk drives. Some except 2 drives, some 6, some could accept more, but the case doesn’t.

The fix I chose was to move to some four bay NAS enclosures. This is a reasonable size that balances with the network I/O capability.

These enclosures all take the Mini-ITX motherboard.

These motherboards are nothing short of amazing. In the middle tier, they have all the things a full-size motherboard has. Some have 4 memory slots, some only 2. They come with 1, 2, 4 Ethernet ports. Some have SFP ports. Some have SATA ports. The number of SATA ports ranges from 1 to 6. Some come with PCIe slots.

Depending on what your needs are, there is a motherboard for you.

Since this was going to be a NAS, the motherboard I selected had to have 4 SATA ports, an NVMe slot, and SFP+.

Yep, this exists. They don’t exist at the price point I wanted to pay. It finally clicked with me. I can just put an SFP+ PCIe card into the machine.

Thus, I picked a motherboard with 4 SATA, 1 Ethernet, 1 USB3, 1 PCIe slot, enough memory and 2 M.2 slots.

Some NAS enclosures do not have the opening for a PCI slot, so it was important to pick a case that had the card opening.

When I got the enclosure I was impressed.

It is a sturdy, thick steel case. There is no plastic on the entire thing. There are for hot swap disk bays plus mounting space for 2 2.5″ drives. Exactly what I was looking for.

When I went to install the motherboard, I was shocked to find that the CPU cooler didn’t fit. I ordered a low profile. I’m impressed with that as well.

I get the board mounted. It looks nice. I go to close the case and the cover won’t fit on. The cover has a folded U channel that goes over the bottom rail of the case to lock the case closed.

The problem is that there isn’t enough space between the edge of the motherboard and the bottom rail for the U channel to fit.

My first real use of the right-angle die grinder. I don’t have a cut-off wheel for it, so I just ground the edge away and it worked.

Of course, I gave myself a frost burn because I was too busy to put gloves on to handle the die grinder.

Back to the worktable, the cover now goes on. I plug a wireless USB dongle into the USB 3.0 and boot. Nothing.

It took me a couple of days before I figured it out. The case came with no documentation. The front panel connector has both a USB 3 plug and a USB 3 plug. I plugged both in. You are only supposed to plug in one. Fixed.

The installation happens, I’m happy. It is fast enough, it is responsive enough. I just need to get it put in place with the fiber configured.

I take the cover off the back slot. Go to put the PCI card in.

The (many bad words) slot does not line up with the opening in the back of the case.

The open in the back is off by 0.8 inches.

I consider cutting another card opening in the back. That won’t work. The card would be half out of the side of the case.

I ordered the cutoff wheels for the die grinder, I know I’m going to need them.

I decided to cut the back opening wider. This will leave an opening that can be taped closed on the PCI side. It allows me to use the existing slot with retaining hardware. I good idea.

All I need to do is unscrew the standoffs, drill and tap four holes in the right place, and I’m done.

Except… Those standoffs are pressed into place. They don’t unscrew.

No problem. I have a set of standoffs. I’ll just cut the existing standoffs off. Drill and tap holes in the right place and use my standoffs.

Except… My standoffs are the normal length. These standoffs are a custom length. I can’t do that.

Tools to the rescue

First stop, the arbor press. It is a small 2 ton press. I have no problems pushing out the standoffs. The press also removes the bulge from removing the standoffs.

Next step, the milling machine. Using the gage pins, I found the size of the holes is 0.197-0.198. Measuring the standoffs, I get 0.208. I settled on 0.201 for the hole size. I should have gone a 64th smaller.

There is no way to clamp this thing in the vise. I do have strap clamps. The case is quickly put into position.

The first hold is located, then drilled. No issues.

Except I don’t have enough travel to reach the other three holes. I reposition the case on the table and go for it.

I go back to the arbor press to put the standoffs back in. I don’t have enough height to support the case while installing the standoffs.

Back to the mill. Square to ends of a hunk of aluminum. Punch a 3/8in hole in it. Work on the mill vise and get the standoffs put back in place.

In the middle of this, I have an alarm, fearing that I put the standoffs in the wrong place. I do a quick test fit and everything is perfect.

It takes me a good hour to put the case back together with all the case mods done. It looks good. I’m happy with how it came out.

Today is search day. I have to find the 8 meter OM-4 fiber for this NAS, and I have to find the box of screws that came with the case for the hard drives. Once I have those, this can go into production.

I know what to look for on NAS cases. I’ll be building out a few more of these boxes over the coming months. First to replace two boxes which are too old. One for the redundancy.

The world will be good, or I’ll punch it again and again until it is good.

P.S. This is filler, the article about Trump’s win in the D.C. District court was taking to long.

A question about upcoming articles.

Hey all, I’ve been considering a variety of topics for the next few weeks. With spring rapidly coming, I could talk about gardening, and explain how to start seeds indoors, and all the stuff that goes along with making a functioning garden that will provide actual food. I could write about raising chickens (and/or other livestock, though I have less experience with non-chicken livestock) and what that takes. I could go into how one makes staples, like bread, cheese, butter, and the like. I could talk about mending and making clothing, blankets, and such.

What do you all want to hear about? My gut says go with gardening, but I also want to write what is of interest and useful to y’all.

The Weekly Feast – Beef Bourguignon

I made this last week. It was rich, delicious, filling, and just the right thing after a long day of moving snow.

Ingredients:

  • 3 lbs beef, cut into 1” cubes
  • salt
  • black pepper
  • 1 tbsp oil
  • 1 pkg bacon, cut into small pieces
  • 2 large carrots, peeled, sliced on bias into large chunks
  • 1 large onion, chopped
  • 4 cloves garlic, minced
  • 2 tbsp tomato paste
  • 2 cups dry red wine
  • 2 cups beef broth
  • 2 bay leaves
  • 1 tsp dried thyme
  • 1/2 lb pearl onions
  • 8 oz mushrooms, quartered
  • cornstarch mixed with cold beef broth, for thickening

Preheat oven to 350°. Season beef with salt and pepper.

In an oven proof pot, heat a little oil over medium heat. Add the bacon and cook until it’s crispy, stirring occasionally. This will take about six minutes. Pull the bacon out of the pot with a slotted spoon and put it on a paper towel lined plate to drain.

Increase the heat to medium high, and then add in the beef chunks in a single layer. Don’t crowd the pot, as the beef needs to be able to move around freely. Do it in batches, removing properly seared beef and adding it to the pile of bacon.

Once all the beef is seared, remove all but a tablespoon or two of the bacon fat in the pot. Lower the heat to medium, and stir in the carrot and onion. Cook until the onions are wilted and the carrots begin to soften, which should take about five minutes. Stir in the garlic and tomato paste, and cook until fragrant. Add a splash of red wine to the pot and deglaze it, making sure to scrape any “stuff” off the bottom of the pot and incorporate it into the onion mixture.

Add in the beef and bacon, the rest of the wine, broth to cover the meat and veggies entirely, spices, onions, and mushrooms. Stir gently to incorporate, and then cover the pot with a tight fitting lid. Put the pot in the oven and cook until the beef is fork tender and the sauce is slightly thickened. This will take about an hour and a half to two hours.

Remove the pot from the oven, and set it on top of the stove. On a medium high heat, bring the liquid to a low boil. Slowly pour in a tablespoon or so of cornstarch mixed in with some beef broth, and stir the stew well. Continue to add a tablespoon or so of the cornstarch slurry until you reach the desired thickness.

Serve your Beef Bourguignon over mashed potatoes, and with a side of your favorite vegetable.

Notes:

I tend to buy larger cans of tomato paste. When I open a new can, I measure out two tablespoon “plops” onto parchment paper, and put it in the freezer. Once it’s frozen, I stick the plops into a baggie, which I can then pull from whenever I need tomato paste. If you’re using frozen tomato paste, let it simmer until it dissolves into the onion mixture before moving onto the next step.

You can thicken the liquid with a roux if you prefer, but the silkiness of a sauce made with cornstarch is hard to beat. Because cornstarch is entirely starch, you need half or less of the amount you’d need of flour, in order to get the same level of thickness. A roux of flour will tend to make a thick gravy that is dark and heavy, while a roux (or “slurry”) of cornstarch will be lighter both in color and texture. There are places for both, but I prefer the cornstarch in this recipe.

If your family are not big mushroom or onion fans, you can cook those separately in a pan and add them as a topping in each bowl, instead of cooking them in the stew. Again, this is a matter of preference.

Another Win: Protecting Second Amendment Rights

By the authority vested in me as President by the Constitution and the laws of the United States of America, it is hereby ordered:

Section 1. Purpose. The Second Amendment is an indispensable safeguard of security and liberty. It has preserved the right of the American people to protect ourselves, our families, and our freedoms since the founding of our great Nation. Because it is foundational to maintaining all other rights held by Americans, the right to keep and bear arms must not be infringed.

Sec. 2. Plan of Action. (a) Within 30 days of the date of this order, the Attorney General shall examine all orders, regulations, guidance, plans, international agreements, and other actions of executive departments and agencies (agencies) to assess any ongoing infringements of the Second Amendment rights of our citizens, and present a proposed plan of action to the President, through the Domestic Policy Advisor, to protect the Second Amendment rights of all Americans.
(b) In developing such proposed plan of action, the Attorney General shall review, at a minimum:
(i) All Presidential and agencies’ actions from January 2021 through January 2025 that purport to promote safety but may have impinged on the Second Amendment rights of law-abiding citizens;
(ii) Rules promulgated by the Department of Justice, including by the Bureau of Alcohol, Tobacco, Firearms, and Explosives, from January 2021 through January 2025 pertaining to firearms and/or Federal firearms licensees;
(iii) Agencies’ plans, orders, and actions regarding the so-called “enhanced regulatory enforcement policy” pertaining to firearms and/or Federal firearms licensees;
(iv) Reports and related documents issued by the White House Office of Gun Violence Prevention;
(v) The positions taken by the United States in any and all ongoing and potential litigation that affects or could affect the ability of Americans to exercise their Second Amendment rights;
(vi) Agencies’ classifications of firearms and ammunition; and
(vii) The processing of applications to make, manufacture, transfer, or export firearms.

Sec. 3. Implementation. Upon submission of the proposed plan of action described in section 2 of this order, the Attorney General shall work with the Domestic Policy Advisor to finalize the plan of action and establish a process for implementation.

Sec. 4. General Provisions. (a) Nothing in this order shall be construed to impair or otherwise affect:
(i) the authority granted by law to an executive department, agency, or the head thereof; or
(ii) the functions of the Director of the Office of Management and Budget relating to budgetary, administrative, or legislative proposals.
(b) This order shall be implemented consistent with applicable law and subject to the availability of appropriations.
(c) This order is not intended to, and does not, create any right or benefit, substantive or procedural, enforceable at law or in equity by any party against the United States, its departments, agencies, or entities, its officers, employees, or agents, or any other person.

Protecting Second Amendment Rights