Laravel ERD generator

https://opengraph.githubassets.com/d5fcf2928c5bfc84c7e461d6ca2b9ba567fc369f37486ee3f043952f6437531f/recca0120/laravel-erd

Latest Version on Packagist
GitHub Tests Action Status
Total Downloads

Laravel ERD automatically generates Entity-Relationship Diagrams from your Laravel models and displays them
using erd-editor.

Here’s a sample of what you can expect, generated from migrations
and models:

View Live Demo

erd-editor

Lang Version
PHP 7.4, 8.0, 8.1, 8.2, 8.3
Laravel 8, 9, 10, 11

Install the package via Composer:

composer require recca0120/laravel-erd:^0.1 --dev

Run the following command:

Step 2: View the ERD

Open the following URL in your browser:

http://localhost/laravel-erd

Exclude Tables and Save to a Different Filename

Run the command:

php artisan erd:generate --file=exclude-users.sql --exclude=users

Open the URL:

http://localhost/laravel-erd/exclude-users

Install erd-go
and graphviz-dot.js using:

Generate the SVG file:

php artisan generate --file=laravel-erd.svg

View the SVG version:

http://localhost/laravel-erd/laravel-erd.svg

svg

The SVG file can be found at storage/framework/cache/laravel-erd.

Feel free to ask if you have any questions or need further assistance!

Laravel News Links

Backup Tables

https://repository-images.githubusercontent.com/844615628/cd7a488d-4e57-454c-9694-f994c1962fc7

Package cover

Latest Version on Packagist
Total Downloads
GitHub Code Style Action Status
GitHub Tests For Laravel Versions Action Status
GitHub Tests For Databases Action Status

Backup single or multiple database tables with ease.

Note: if you want a full database backup with many features go for Spatie Laravel Backup.

You can install the package via Composer:

composer require watheqalshowaiter/backup-tables

Use the BackupTables::generateBackup($tableToBackup) Facade anywhere in your application and it will
generate $tableToBackup_backup_2024_08_22_17_40_01 table in the database with all the data and structure. Note that
the datetime 2024_08_22_17_40_01 will be varied based on your datetime.

use WatheqAlshowaiter\BackupTables\BackupTables; // import the facade

class ChangeSomeData
{
    public function handle()
    {
        BackupTables::generateBackup('users'); // will result: users_backup_2024_08_22_17_40_01
       
        // change some data.. 
    }
}

And More Customizations

  • You can use an array to backup more than one table
BackupTables::generateBackup(['users', 'posts']); 
// users_backup_2024_08_22_17_40_01
// posts_backup_2024_08_22_17_40_01 
  • Or add Classes as parameters, It will backup their tables
BackupTables::generateBackup(User::class); // users_backup_2024_08_22_17_40_01
// or
BackupTables::generateBackup([User::class, Post::class]); // users_backup_2024_08_22_17_40_01, posts_backup_2024_08_22_17_40_01 
 
  • You can customize the $dataTime format to whatever you want
BackupTables::generateBackup('users', 'Y_d_m_H_i'); // users_backup_2024_22_08_17_40

*Note: be aware if you customize the datetime to wide datetime the package will check the backup datetime file and
will be skipped
the exact same datetime, so most of the time the default will be fine
For example: if you use this Y_d_m_H you can not generate the same backup in the same hour

BackupTables::generateBackup('users', 'Y_d_m_H'); // can not generate the same backup in the same hour
BackupTables::generateBackup('users', 'Y_d_m'); // can not generate the same backup in the same day

Sometimes you want to backup some database tables before changing data for whatever reason, this package serves this
need. I used it personally before adding foreign keys for tables that required the removal of unlinked fields for parent tables.
You may find some situation where you play with table data or you’re afraid of missing data so you backup these tables
beforehand.

✅ Supports Laravel versions: 11, 10, 9, 8, 7, and 6.

✅ Supports PHP versions: 8.2, 8.1, 8.0, and 7.4.

✅ Supports SQL databases: SQLite, MySQL/MariaDB, PostgreSQL, and SQL Server.

✅ Fully automated tested with PHPUnit.

✅ Full GitHub Action CI pipeline to format code and test against all Laravel and PHP versions.

Please see CHANGELOG for more information on what has changed recently.

If you have any ideas or suggestions to improve it or fix bugs, your contribution is welcome. I encourage you to look at todos which are the most important features that need to be added. If you have something different, submit an issue first to discuss or report a bug, then do a pull request.

If you find any security vulnerabilities don’t hesitate to contact me at watheqalshowaiter[at]gmail[dot]com to fix
them.

And a special thanks to The King Creative for the logo ✨

The MIT License (MIT). Please see License File for more information.

Laravel News Links

Pinkary is now fully open source

https://picperf.io/https://laravelnews.s3.amazonaws.com/featured-images/pinkary-featured.png

Pinkary is now fully open source

Pest creator and Laravel core team member Nuno Maduro announced recently that Pinkary is now fully open source, and you can also find us on it at @laravelnews.

Built with Laravel, Livewire, Tailwind, and more, Pinkary is an excellent example of a full Laravel application you can learn from and contribute to:

Pinkary is already a thriving project, with over 400+ submitted pull requests, and is encouraging open-source contributions and giving you the installation instructions you need to go from project setup to pull request. Pinkary is already using Pest 3, and as the creator of Pest, the code has plenty of examples you can learn from to level up your testing skills.

On the user side of this project, Pinkary is a landing page for all your links and a place where you can connect with like-minded people without the noise of other social media applications. It went from a new project to over a thousand users very quickly and is known for using a SQLite database for application data, sessions, queues, cache, etc.

Start learning from the Pinkary source code today! Visit pinkary-project/pinkary.com on GitHub and join this exciting open-source project.


The post Pinkary is now fully open source appeared first on Laravel News.

Join the Laravel Newsletter to get all the latest
Laravel articles like this directly in your inbox.

Laravel News

Mastering MySQL: Key Performance Metrics Every Developer Should Monitor

https://static.tildacdn.net/tild3936-3139-4235-b730-636439336162/MySQL_variables_Temp.png

The RED method is traditionally used for monitoring the performance of web applications and services but can also be applied to MySQL performance monitoring. Releem has found the framework to be equally valuable in monitoring MySQL performance metrics because the challenges faced by databases, in terms of performance and reliability, mirror those encountered by web applications.

When applied to MySQL databases, the RED method breaks down into three critical areas of concern, each providing insights into your database’s operational health:

  • Query Rate (Rate) – This assesses the volume of queries or commands executed per second, offering a direct measure of the server’s workload. It’s instrumental in evaluating the database’s ability to handle concurrent operations and its responsiveness to user demands.
  • Error Rate (Errors) – Tracking the frequency of errors in queries sheds light on potential reliability issues within the database. A high error rate may indicate underlying problems with query syntax, database schema, or system constraints that are affecting the overall database integrity. The primary MySQL metric for monitoring rate is Aborted_clients.
  • Query Execution Duration (Duration) – The duration metric is a measure of the time it takes for queries to complete, from initiation to execution. This performance indicator assesses the efficiency of data retrieval and processing operations which have direct impacts on the user experience and system throughput.

The health of these metrics gives you a solid understanding of how your database is performing and in turn, the experience your users are having. The RED method makes it easy to gauge what is wrong with your database and what needs to be fixed. For instance, should you find that queries are sluggishly executing, it might signal the need for tweaking indexes or optimizing the affected queries to boost efficiency.

Laravel News Links

How I Use a Free App to Build My Personal News Feed

https://static1.makeuseofimages.com/wordpress/wp-content/uploads/2024/08/what_is_rss_and_what_can_you_do_with_it.jpg

Key Takeaways

  • Inoreader is a free RSS feed reader app that consolidates articles from multiple sources for easy access.
  • Customize your feed with up to 150 sources and monitor it through a customizable dashboard.
  • Pro users gain access to advanced features such as rules, filters, article translation, and monitoring feeds, which enhance control.

If you want to read up on your favorite online news site or any other source of information, you can either take the time to look up what you want on a specific website or go through the newsletters that clog your inbox. A more efficient way is to use an RSS (Really Simple Syndication) feed reader.

RSS readers collect articles from multiple sources into one app, making it extremely easy to find what you need without fighting search algorithms and the general mess that the internet is. And the best part? You don’t need to pay for this feature—Inoreader lets you create a personalized news feed for free.

What Is Inoreader?

Inoreader is one of the best and most well-reviewed RSS feed-reading apps you can find online. If you don’t know what RSS is and what you can do with it, we’ve got you covered, but in a nutshell, RSS is a simple format that allows websites to share updates directly with you. RSS is a great alternative to newsletters and social media, as it puts you in control of what appears in your feed, free from the influence of algorithms.

There are a lot of ways you can find popular content on the internet, but RSS readers like Inoreader allow you to build your own feeds. It’s a little bit of work setting it up, but once you’re done, you’ll have all your news sources coming up in one feed and in one app, exactly how you prefer.

Inoreader’s free version is rather limited in terms of the features you get, but you can still get your news feed and a personalized dashboard up and running in no time. However, more advanced features like filters, automation, and translation are reserved for paying users.

1. Setting Up a Feed

The first thing you’ll see when you log into Inoreader is your dashboard with three options to get you started. You can search for your preferred sources like news websites, explore Inoreader’s featured feed collections, or import feeds from another RSS reader.

Inoreader’s featured collections are a good starting point for beginners, but to create a truly personalized feed, it’s best to search for the websites and sources you frequently read. This approach helps you avoid clutter and focus on what matters most to you.

Inoreader offers extensive control over what you can add to your feed. You can follow websites, Facebook pages, Twitter accounts, Google News, Reddit, Telegram channels, and even other Inoreader users. You can also track keywords, brands, names, subreddits, or specific phrases.

While Facebook Pages are restricted to Pro users, all other sources are accessible on the free tier.

The free version of Inoreader lets you select up to 150 feeds (or sources), so you can look up all your sources and add them to Inoreader. As you add sources, Inoreader will suggest similar ones to expand your feed further.

2. Monitoring Your Feed

Once you’ve added your desired feeds, you’ll likely return to the app frequently to stay updated. This is where Inoreader’s dashboard comes in handy.

When you first load the reader, it defaults to a basic yet functional dashboard. However, if you want more control, you can create a totally custom dashboard. Just click the Create custom dashboard in the top bar, select the widgets you want, and you’re off to the races.

These dashboard widgets show everything from the latest articles coming in across your feeds to the total number of unread articles you have, article reading statistics, trending articles on Inoreader, and even recommended sources.

There’s not a lot you can customize here, though. It would’ve been nice if Inoreader had let me resize the widgets so I could truly make the dashboard look how I wanted it, but the fact that I can deck it out with the information I want to see is valuable.

Once you’ve set up everything to your liking, chances are you’ll find what you need on the dashboard itself, without having to scroll through your sources. And if you do need to take a deeper look, you can create folders to group similar feeds together for another layer of organization.

Another powerful feature is Monitoring Feeds. This feature allows you to search for a specific term and create a feed for it. As articles containing the search terms appear, they’ll populate this monitoring feed, ensuring you catch what you’re looking for as soon as it arrives. Unfortunately, this feature is behind a paywall and is only accessible to Pro subscribers.

Another feature you can use to spot words and phrases in articles quickly is Highlighters. Add your term, select a color, and you’ll see the word or phrase highlighted in that color as you read articles in your feed. This is by far one of the best features I’ve come across in an RSS feed app, and it makes it incredibly easy to find what you’re looking for without reading entire articles.

3. Using Filters and Automation

Two of the coolest Inoreader features, Rules and Filters, are only available to Pro users, which is a bit of a bummer. As the name suggests, rules allow you to act based on article properties. For example, you can send push notifications if an article from a specific site, author, or keyword gets published.

Filters enable you to exclude articles from your feed or connected apps based on keywords in their title or body. Since filtered feeds only cover the last 30 days, filters help ensure you see only the content that interests you, while irrelevant content is filtered out.

4. Translating Articles

Inoreader also offers translation features for those reading articles in different languages. This feature, available only to Pro subscribers, eliminates the need to rely on browser-based or third-party translation tools, saving you time and effort when accessing foreign-language content.

While Inoreader’s Pro version offers many additional features, the free version is sufficient for building a simple, clutter-free news feed that delivers what you want, when you want it.

MakeUseOf

How to Separate First and Last Names to Columns in Excel

https://static1.makeuseofimages.com/wordpress/wp-content/uploads/2024/08/a-laptop-with-an-excel-spreadsheet-displaying-a-list-of-names-separated-into-first-names-and-last-names.jpg

Separating first and last names in an Excel spreadsheet is a common task that can be time-consuming if done manually. Thankfully, Excel offers several efficient methods to automate this process, saving you valuable time and effort.

Use Delimiters in Excel

One of the most straightforward ways to separate first and last names is by using delimiters in Excel. A delimiter is a character that separates different parts of text data. In the case of names, the space between the first and last names often serves as the delimiter.

To separate first and last names using delimiters:

  1. Select the column in your Excel spreadsheet containing the full names you want to split.
  2. Go to the Data tab and click Text to Columns in the Data Tools group.
  3. Select Delimited and click Next.
  4. Tick the Space checkbox. If a different delimiter, such as a comma or hyphen, separates the first and last names, select the appropriate option. Then, click Next.
  5. Excel will overwrite the original data in the same column by default. To keep the original data intact, specify a different column in the Destination field.
  6. Click Finish to confirm.

Excel will split the first and last names into two columns. You can also use this to separate first, middle, and last names.

Use the TEXTSPLIT Formula

Another easy way to separate first and last names is using the TEXTSPLIT Excel function. This formula allows you to split text into multiple columns or rows based on a specified delimiter. Here’s how to use it.

  1. In the column that contains the full names you want to split, note down the cell address of the full name. Let’s say it’s in cell A3.
  2. Go to the cell where you want the first name to appear.
  3. Type =TEXTSPLIT(A3, " ") and press Enter.
  4. This formula will split the text in cell A3 wherever there is a space, placing the first name in the selected cell and the last name in the adjacent cell.
  5. To apply the formula to the entire column, drag the fill handle (the small square at the bottom-right corner of the selected cell) down to cover all the needed rows.

Use a Keyboard Shortcut

If you’re not keen on using Excel functions or formulas to separate first and last names, there’s a quicker way to get the job done. Excel’s Flash Fill feature, triggered with the Ctrl + E keyboard shortcut, can also help you separate first and last names into columns.

Flash Fill is a powerful tool that automatically fills in data when it detects a pattern in your input, making it perfect for separating names. Here’s how to use it:

  1. Ensure that your data is in a single column with full names.
  2. In the cell where you want to extract the first name, manually type the first name from the first full name in column A. If A3 contains John Doe, type John in B3.
  3. Select the cell where you entered the first name and press Ctrl + E.
  4. Excel will automatically detect the pattern and fill down the first names for the entire column.
  5. Similarly, in the next column, type the last name corresponding to the first full name in column A. If A3 is John Doe, you would type Doe in C3.
  6. With C3 selected, press Ctrl + E again.

Excel will automatically populate the last names for all the rows based on the detected pattern. Knowing how to separate first and last names in Excel can help you better organize your spreadsheet. With methods such as Text to Columns, Flash Fill, and Excel formulas, you can select the approach that best suits your needs.

MakeUseOf

We can now watch Grace Hopper’s famed 1982 lecture on YouTube

https://cdn.arstechnica.net/wp-content/uploads/2024/08/hopper1-760×380.jpg

Rear Admiral Grace Hopper on Future Possibilities: Data, Hardware, Software, and People (Part One, 1982).

The late Rear Admiral Grace Hopper was a gifted mathematician and undisputed pioneer in computer programming, honored posthumously in 2016 with the Presidential Medal of Freedom. She was also very much in demand as a speaker in her later career. Hopper’s famous 1982 lecture on "Future Possibilities: Data, Hardware, Software, and People," has long been publicly unavailable because of the obsolete media on which it was recorded. The National Archives and Records Administration (NARA) finally managed to retrieve the footage for the National Security Agency (NSA), which posted the lecture in two parts on YouTube (Part One embedded above, Part Two embedded below).

Hopper earned undergraduate degrees in math and physics from Vassar College and a PhD in math from Yale in 1930. She returned to Vassar as a professor, but when World War II broke out, she sought to enlist in the US Naval Reserve. She was initially denied on the basis of her age (34) and low weight-to-height ratio, and also because her expertise made her particularly valuable to the war effort. Hopper got an exemption, and after graduating first in her class, she joined the Bureau of Ships Computation Project at Harvard University, where she served on the Mark I computer programming staff under Howard H. Aiken.

She stayed with the lab until 1949 and was next hired as a senior mathematician by Eckert-Mauchly Computer Corporation to develop the Universal Automatic Computer, or UNIVAC, the first computer. Hopper championed the development of a new programming language based on English words. "It’s much easier for most people to write an English statement than it is to use symbols," she reasoned. "So I decided data processors ought to be able to write their programs in English and the computers would translate them into machine code."

Her superiors were skeptical, but Hopper persisted, publishing papers on what became known as compilers. When Remington Rand took over the company, she created her first A-0 compiler. This early achievement would one day lead to the development of COBOL for data processors, which is still the major programming language used today.

“Grandma COBOL”

In November 1952, the UNIVAC was introduced to America by CBS news anchor Walter Cronkite as the presidential election results rolled in. Hopper and the rest of her team had worked tirelessly to input voting statistics from earlier elections and write the code that would allow the calculator to extrapolate the election results based on previous races. National pollsters predicted Adlai Stevenson II would win, while the UNIVAC group predicted a landslide for Dwight D. Eisenhower. UNIVAC’s prediction proved to be correct: Eisenhower won over 55 percent of the popular vote with an electoral margin of 442 to 89.  

Hopper retired at age 60 from the Naval Reserve in 1966 with the rank of commander but was subsequently recalled to active duty for many more years, thanks to congressional special approval allowing her to remain beyond the mandatory retirement age. She was promoted to commodore in 1983, a rank that was renamed "rear admiral" two years later, and Rear Admiral Grace Hopper finally retired permanently in 1986. But she didn’t stop working: she became a senior consultant to Digital Equipment Corporation and "goodwill ambassador," giving public lectures at various computer-related events.

One of Hopper’s best-known lectures was delivered to NSA employees in August 1982. According to an NSA press release, the footage had been preserved in a defunct media format—specifically, two 1-inch AMPEX tapes. The agency asked NARA to retrieve that footage and digitize it for public release, and NARA did so. The NSA described it as "one of the more unique public proactive transparency record releases… to date."

Hopper was a very popular speaker not just because of her pioneering contributions to computing, but because she was a natural raconteur, telling entertaining and often irreverent war stories from her early days. And she spoke plainly, as evidenced in the 1982 lecture when she drew an analogy between using pairs of oxen to move large logs in the days before large tractors, and pairing computers to get more computer power rather than just getting a bigger computer—"which of course is what common sense would have told us to begin with." For those who love the history of computers and computation, the full lecture is very much worth the time.

Grace Hopper on Future Possibilities: Data, Hardware, Software, and People (Part Two, 1982).

Listing image by Lynn Gilbert/CC BY-SA 4.0

Ars Technica – All content

Bizarre Product Design: These Snowflake-Shaped Charging Port Cleaning Tools

https://s3files.core77.com/blog/images/1568509_81_133459_MHgzGlF9n.jpg

This strange-looking object, by a company whose name has four consonants in a row, is a tool for cleaning out charging ports on smartphones and tablets.

It features a variety of picks, brushes and scrapers, as well as a kind of scrubber port that you load with (included) "detergent" to clean the male connector. It can also be used to clean wireless earbuds and their cases.

The tool has the same challenge as countless EDC multi-bit tools, but rather than going with a cylindrical form factor, they’ve opted for a snowflake shape. I can’t fathom why. The only other tool I’ve seen that uses this shape is a spark plug gap gauge, but it was coin-sized; this thing here is 3.5" across.

They also offer this more organic-looking variant.

I don’t deny that there’s a need for this tool, particularly if you do a lot of outdoor stuff. (I actually have to keep a little plug in my phone’s charging port, otherwise it becomes so clogged I can’t charge it.) I’m just taken aback at the form, and the tool’s overall popularity; it’s got 2,000 reviews and 4.5 stars on Amazon.

These run $20.

Core77

Federal Judge Rules Machineguns are Protected Under the Second Amendment

https://www.ammoland.com/wp-content/uploads/2021/12/Daniel-Defense-HERO-01-500×333.jpg

Federal Judge Rules Machineguns are Protected Under the Second Amendment. img. Jim Grant
Federal Judge Rules Machineguns are Protected Under the Second Amendment. img. Jim Grant

A United States Federal District Court Judge for the District of Kansas dismissed a case against a man accused of having two machine guns, claiming that these firearms are protected as bearable arms under the Second Amendment.

Prosecutors claim that on Oct. 17, 2022, Tamori Morgan possessed two machine guns. The first firearm was an Anderson Manufacturing AM-15 chambered in .300 blk that the man converted from semi-automatic to fully automatic. The second machine gun was a Glock 33 equipped with a Glock switch. A Glock switch converts a semi-automatic handgun to a machine gun. These switches are readily available on Chinese websites, and their numbers in the country have risen over the past few years.

In April 2023, a grand jury in the U.S. District Court in Wichita, Kansas, indicted Morgan for possession of the two machine guns. Mr. Morgan would be assigned federal public defender David Freund. Public defenders get a bad rap, but these are some of the most experienced trial lawyers in the country. Mr. Freund filed for a motion to dismiss in November of 2023, claiming that machine guns were protected arms under the Second Amendment.

Under the Bruen test, a law on guns is only constitutional if it is consistent with the text, tradition, and history of the Second Amendment. The first step is the original text of the Second Amendment. There is nothing in the Second Amendment that gives the government the right to ban machine guns. Once it is determined that a law isn’t consistent with the text, the burden falls to the government to provide historical analogues to show that the law is consistent with the history and tradition of the Second Amendment from the founding era.

“When the Second Amendment’s plain text covers an individual’s conduct, the Constitution presumptively protects that conduct,” Associate Justice Clarence Thomas wrote in Bruen. “The government must then justify its regulation by demonstrating that it is consistent with the Nation’s historical tradition of firearm regulation. Only then may a court conclude that the individual’s conduct falls outside the Second Amendment’s unqualified command.”

The government tried to argue that the Second Amendment only applies to arms that were around during the ratification of the Second Amendment. U.S. District Judge John Broomes rejected Assistant U.S. Attorney Aaron Smith’s arguments. The prosecutor also tried to use English common law. Prosecution also mentioned a case from North Carolina in 1829 that recognized an offense to arm oneself “with dangerous and unusual weapons, in such a manner as will naturally cause a terror to the people.” The judge dismissed both laws because they were not similar to the charges against Morgan. The Supreme Court’s Rahimi opinion said that an analogue doesn’t have to be a “historical twin.” SCOTUS went on to say it does have to resemble the law being defended.

The judge also called out the prosecutor for trying to use dicta from the Heller decision. Mr. Smith attempted to say that Heller allowed for banning machine guns because they are “dangerous and unusual.” The judge was quick to reject the argument because the Heller case had nothing to do with machine guns. He also pointed out that not all machine guns are illegal; only ones produced after May 1986 are forbidden for public transfer. Judge Broomes highlighted that there are 740,000 transferable machine guns in public circulation.

“Machineguns have been in existence for well over a century,” the judge wrote. “While the federal government has regulated transfer and possession of such weapons since passage of the National Firearms Act in 1934, it did not outright prohibit possession of machineguns until passage of the Firearms Owners Protection Act in 1986. Even then, the law did not prohibit the possession of all machineguns; rather, § 922(o) merely prohibits possession of machineguns that were not lawfully possessed as of the date that prohibition went into effect in 1986. § 922(o)(2)(B). Thus, even today, it is perfectly legal for a person who has not been divested of his firearm rights under some other provision of law to acquire and possess a machinegun, so long as it was lawfully possessed by someone before the relevant date in 1986, and so long as he complies with the National Firearms Act’s requirements to obtain and possess the weapon. In that sense, machineguns are not unusual.”

The government then tried to say the law was justified because machine guns were “military weapons.” To counter this point, the judge used United States v. Miller. In the 1939 Miller case, the Supreme Court rejected the idea that sawed-off shotguns were protected arms and couldn’t be regulated. The Supreme Court reasoned that sawed-off shotguns were not used on the battlefield and, therefore, not protected. The Supreme Court believed that the Second Amendment applied to military arms. The judge also highlighted laws from the founding era that required civilians to keep personal military arms in case the need arose for a militia to be formed.

The judge dismissed the case, but the prosecutor can appeal the judge’s decision. Most legal experts expect this appeal. The decision doesn’t knock down the National Firearms Act of 1934 (NFA) and doesn’t apply to anyone outside the case. Post-1986 machine guns remain illegal to own for private citizens. Mr. Morgan faced ten years in prison and a $250,000 fine for each offense if convicted.


About John Crump

Mr. Crump is an NRA instructor and a constitutional activist. John has written about firearms, interviewed people from all walks of life, and on the Constitution. John lives in Northern Virginia with his wife and sons, follow him on X at @crumpyss, or at www.crumpy.com.

John Crump

AmmoLand Shooting Sports News