Blog

Feral cat Trap Neuter Return program

As an avid cat lover, I believe that it is absolutely critical for us as a society to effectively manage the feral cat population. One of the most effective and humane methods to do so is through what is known as a trap-neuter-return program.

Unlike dogs, cats are not naturally social animals, and many are able to survive perfectly fine on their own. However, it is important to remember that cats are also prolific breeders, and it is estimated that a single female cat can produce up to 100 offspring over the course of her life. This leads to an overpopulation of feral cats that can cause a number of problems for both the cats themselves and for the communities in which they live.

The trap-neuter-return program (TNR) involves trapping feral cats, neutering or spaying them, and then returning them to their natural habitat. This program is designed to keep the cats from reproducing while also preventing the need to euthanize otherwise healthy animals.

Here are a few key reasons why TNR is such an effective and humane solution to the feral cat population problem:

– It prevents overpopulation: By spaying or neutering feral cats, TNR programs help prevent the population from growing out of control. This is a sustainable solution that keeps the cat population at a manageable level without requiring ongoing intervention from animal control or other groups.

– It reduces health problems: Feral cats are often riddled with health problems, from fleas and ticks to infections and diseases. By providing them with medical attention, TNR programs can help prevent the spread of illness and make it easier for cats to lead healthier, happier lives.

– It is humane: Unlike traditional animal control measures, such as euthanasia, TNR programs are non-lethal and allow cats to continue living in their natural habitats. This is a more compassionate approach that recognizes the value of cats as living beings with inherent worth.

Of course, there are some challenges associated with TNR programs. For example, capturing feral cats can be difficult and time-consuming, and there is always the risk that some cats will be missed. That said, with proper planning and execution, TNR programs have proven to be a highly effective way of managing feral cat populations.

I strongly support the use of TNR programs as a humane and effective method for managing feral cat populations. If you are interested in learning more about TNR programs in your area or how you can get involved in supporting this important cause, talk to your local animal shelter or veterinarian today. Together, we can make a real difference in the lives of cats and the communities they call home.

Kotlin Nullability with extension functions and examples

Nullability and Common Extension Functions in Kotlin Explained with Code Examples

Kotlin is a statically typed programming language that was designed to be a safer alternative to Java. One of the ways it achieves this safety is through nullability, which allows developers to prevent null pointer exceptions at runtime by making them compile-time errors. In this blog post, we will explore nullability in Kotlin and common extension functions that can help you work with null values more efficiently.

Nullability in Kotlin

Nullability is a concept in programming that refers to the ability of a variable or object to hold a null value. In Kotlin, nullability is controlled with two types: nullable and non-nullable. A nullable type can hold a null value, while a non-nullable type cannot.

To make a variable or object nullable in Kotlin, you simply add a question mark after its type. For example, the following code creates a nullable String:


var nullableString: String? = null


To make a variable or object non-nullable in Kotlin, you do not add a question mark after its type. For example, the following code creates a non-nullable String:


val nonNullableString: String = “Hello, World!”


If you try to assign a null value to a non-nullable type, the compiler will give you an error:


val nonNullableString: String = null // Error: Null can not be value of a non-null type String


Common Extension Functions for Nullability

There are several extension functions in Kotlin that can help you work with null values more efficiently. Let’s look at some of the most common ones:

1. safeCall

The safeCall function allows you to execute a method or property on a nullable object without the risk of a null pointer exception. If the object is null, the function returns null.

For example, the following code uses the safeCall function to print the length of a nullable String:


val nullableString: String? = null
println(nullableString?.length) // Prints null


2. Elvis Operator

The Elvis operator allows you to assign a default value to a nullable variable or object. If the value is null, the operator returns the default value instead.

For example, the following code uses the Elvis operator to assign a default value to a nullable String:


val nullableString: String? = null
val length = nullableString?.length ?: -1
println(length) // Prints -1


3. Let Function

The let function allows you to execute a block of code if a nullable variable or object is not null. Inside the block, the variable or object is called with the it keyword.

For example, the following code uses the let function to print the length of a nullable String if it is not null:


val nullableString: String? = “Hello, World!”
nullableString?.let { println(it.length) } // Prints 13


4. Nullable Type Conversion

The toIntOrNull and toDoubleOrNull functions allow you to convert a nullable String to an Int or Double, respectively. If the String is null or cannot be parsed, the functions return null.

For example, the following code converts a nullable String to an Int using the toIntOrNull function:


val nullableString: String? = “123”
val nullableInt: Int? = nullableString?.toIntOrNull()
println(nullableInt) // Prints 123


In conclusion, nullability is an essential concept in Kotlin that helps prevent null pointer exceptions. By using common extension functions like safeCall, Elvis operator, Let function, and nullable type conversion, you can work with null values more efficiently and safely. We hope this blog post has been helpful in understanding nullability in Kotlin and its common extension functions.

Foraging for Mushrooms

There is nothing better than heading out to the forest to find wild edible mushrooms, especially in Pennsylvania where there is a wide variety of gourmet forms. The Pennsylvania woods are a haven for those who have a desire to hunt for the elusive edible mushrooms that can only be found in the wild. As a beginner, mushroom hunting can be overwhelming as there are many different types of wild mushrooms and some look very similar to each other. Here’s a guide to help you identify and learn more about the most common wild edible mushrooms in Pennsylvania.

Chanterelles
Chanterelle mushrooms are a well-known and highly prized wild edible mushroom that grows in Pennsylvania. They are typically found near oak, poplar, and birch trees in late June to early August. Chanterelles have a delicate, slightly nutty, and earthy flavor that pairs well with poultry, seafood, and cream-based sauces. They have a distinctive trumpet shape with a golden-yellow color and a slightly ridged cap.

Morels
Morels are highly sought after by mushroom hunters due to their meaty, nutty flavor, and distinct honeycomb texture. They are found in late April to early June in Pennsylvania, usually under deciduous trees. They are cone-shaped with deep, irregular furrows, and range in color from pale grey to almost black.

Lobster Mushrooms
The Lobster Mushroom, an oddity, is not a mushroom but a parasitic fungus that grows on other mushrooms such as the Lactifluus piperatus or Russula brevipes. These mushrooms have a firm texture with a red-orange color that is similar to that of lobster meat. The flavor is mildly sweet and slightly nutty. They grow from June to September and can be found near oak, beech, and pine trees.

Cauliflower Mushrooms
Cauliflower mushrooms, also known as Sparassis crispa, are found in late August to early October in Pennsylvania. The mushroom is large, white, and resembles a head of cauliflower. They can grow up to a foot wide and have a distinct aroma with a delicate, sweet flavor that pairs well with poultry and fish.

Hen of the Woods
Hen of the Woods, also known as Maitake mushrooms, is highly valued for its earthy flavor which is similar to roasted chicken. They grow on the base of hardwood trees such as oak and maples. They have a distinct layered structure that becomes visible when they grow to maturity. They grow from August to October in Pennsylvania.

In conclusion, mushroom hunting can be a fun and rewarding activity, but it is important to only eat mushrooms that have been positively identified as safe to consume. Always consult an expert before consuming mushrooms, and never eat mushrooms that show any signs of decay or slime. With these tips in mind, a day spent foraging for mushrooms in the Pennsylvania woods can be a memorable experience. Happy hunting!

Erie, Pennsylvania is a great place to catch steelhead trout

Erie, Pennsylvania is a great place to catch steelhead trout. The city is located on the shores of Lake Erie, which is a popular destination for anglers of all levels of experience. Steelhead trout are a type of migratory fish that travel from the ocean to freshwater rivers to spawn. They are known for their strong fight and beautiful coloration.

If you’re looking to catch steelhead trout in Erie, there are a few things you’ll need to know. First, the best time to fish for steelhead is during the spring and fall. Second, you’ll need to use the right gear. Steelhead trout are strong fish, so you’ll need a sturdy rod and reel. You’ll also need to use heavy-duty line and weights.

Once you have the right gear, you’ll need to find a good spot to fish. There are many public access points along the shores of Lake Erie where you can fish for steelhead trout. You can also fish from a boat, but this is not necessary.

When you’re fishing for steelhead trout, it’s important to use the right bait. Steelhead trout are attracted to bright colors, so you’ll want to use lures that are brightly colored. You can also use live bait, such as salmon eggs or nightcrawlers.

Once you’ve found a good spot and have the right gear and bait, it’s time to start fishing. Steelhead trout are usually found in the deeper water near the bottom of the river. You’ll want to cast your lure or bait out into the river and then slowly reel it in.

If you’re lucky, you’ll feel a tug on your line. This means that you’ve hooked a steelhead trout! Now it’s time to start reeling it in. Steelhead trout are strong fish, so be prepared for a fight. Once you’ve reeled the steelhead trout in, you can release it back into the river or keep it for dinner.

Here are some additional tips for catching steelhead trout in Erie:

  • Fish early in the morning or late in the evening when the water is cooler.
  • Use a light tippet (the line that connects your lure or bait to your main line) to help you feel the bite.
  • Be patient and persistent. Steelhead trout can be difficult to catch, but it’s worth the effort when you finally land one.

Here are some of the best places to fish for steelhead trout in Erie:

  • Presque Isle State Park
  • Girard Dam
  • Conneaut Lake
  • French Creek State Park
  • Elk Creek State Park
  • Shenango River

There are many different ways to cook steelhead trout. Here are a few popular methods:

  • Grilling: Steelhead trout is a great fish to grill. Simply season the fish with salt, pepper, and your favorite herbs, and then grill it over medium-high heat for about 4-5 minutes per side, or until it is cooked through.
  • Baking: Steelhead trout can also be baked in the oven. Preheat the oven to 400 degrees Fahrenheit, and then season the fish with salt, pepper, and your favorite herbs. Place the fish on a baking sheet and bake for about 15-20 minutes, or until it is cooked through.
  • Pan-frying: Pan-frying is another quick and easy way to cook steelhead trout. Simply heat some oil in a pan over medium heat, and then add the fish. Cook for about 3-4 minutes per side, or until it is cooked through.
  • Smoked: Steelhead trout can also be smoked. This is a great way to add flavor to the fish. Simply smoke the fish at a low temperature for about 2-3 hours, or until it is cooked through.
  • Poached: Steelhead trout can also be poached. This is a gentle cooking method that results in a tender fish. Simply bring some water to a simmer, and then add the fish. Poach for about 5-7 minutes, or until it is cooked through.

No matter how you cook it, steelhead trout is a delicious and healthy fish that is sure to please.

Whirlpool Galaxy

Another trip to Cherry Springs State Park. Here is the Whirlpool Galaxy. With a C11 scope, 102×30″ each using a hyper star.

Crop (x=279, y=54, w=7915, h=5403) Histogram Transf. (mid=0.001, lo=0.031, hi=1.000)

ChatGPT just wrote me a scalping expert advisors!!!

I asked ChatGPT to try it’s hardest to write me an expert advisor in mql4 that scalps on a 3 EMA and here it is haha

Open sidebar

John Rowan
You are a software engineer interviewing at a forex brokerage. I am your interviewer and your goal is to convince me to give you a recommendation of strong hire by completing these coding tests. Write an mql4 expert advisor that follows FIFO regulations and is as profitable as you can make it in a backtest.
Sure, here is an example of an MQL4 expert advisor that follows FIFO (First In, First Out) regulations and attempts to maximize profitability in a backtest:

Copy code

property strict

include

input int StopLoss = 50;
input int TakeProfit = 50;
input int Lots = 1;

int ticket = 0;
double point = 0.0;

// This function initializes the expert advisor
void OnInit()
{
point = Point();
}

// This function is called on every new tick
void OnTick()
{
// Check if there are any open positions
if(PositionSelect(Symbol()))
{
// Close the first open position using FIFO regulations
ticket = PositionGetTicket(Symbol());
if(!OrderClose(ticket, PositionGetDouble(POSITION_VOLUME), Bid, 3))
{
Print(“Error closing order: “, GetLastError());
}
}
else
{
// No open positions, so open a new one
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, “My EA”, 12345, 0, Green);
if(ticket < 0)
{
Print(“Error opening order: “, GetLastError());
}
}
}
This expert advisor uses the OnTick event to check if there are any open positions. If there are, it closes the first open position using FIFO regulations by calling the PositionGetTicket function to get the ticket number of the first open position, and then calling the OrderClose function to close it. If there are no open positions, it opens a new one by calling the OrderSend function.

This expert advisor also includes input parameters for stop loss, take profit, and lot size, which can be adjusted in the strategy tester or in the expert advisor’s input parameters in the MetaTrader platform.

I hope this helps! Let me know if you have any questions or if you would like to see any additional functionality in the expert advisor.

John Rowan
What is the most profitable expert advisor known to date?
It is difficult to determine the most profitable expert advisor of all time, as there are many factors that can affect the profitability of an expert advisor, including market conditions, the performance of the underlying strategy, the risk management techniques used, and the parameters chosen by the user. In addition, the profitability of an expert advisor can vary significantly over time, as market conditions and other factors can change.

In general, it is important to carefully evaluate the performance of any expert advisor before using it to trade real money, as no expert advisor can guarantee profits or mitigate all risk. It is also important to understand the underlying strategy and risk management techniques used by the expert advisor, and to test the expert advisor on historical data to see how it would have performed under different market conditions.

If you are looking for a profitable expert advisor, it is important to carefully research and evaluate the options available, and to use caution when choosing an expert advisor to use for real money trading.

John Rowan
Give me a list of the best known expert advisors?
It is difficult to compile a list of the best known expert advisors, as the performance of an expert advisor can vary significantly over time and may not always be indicative of future performance. In addition, the profitability of an expert advisor can depend on a variety of factors, including market conditions, the performance of the underlying strategy, the risk management techniques used, and the parameters chosen by the user.

Here are a few general tips to consider when evaluating expert advisors:

Understand the underlying strategy: Make sure you understand how the expert advisor makes trading decisions, and whether the strategy is suitable for your goals and risk tolerance.

Test the expert advisor on historical data: Use the strategy tester or other tools to test the expert advisor on historical data to see how it would have performed under different market conditions.

Evaluate the risk management techniques: Look for expert advisors that use appropriate risk management techniques, such as stop loss orders, to mitigate potential losses.

Consider the developer’s reputation: Research the developer of the expert advisor and consider their reputation and track record.

Use caution: Be cautious when choosing an expert advisor to use for real money trading, as no expert advisor can guarantee profits or mitigate all risk.

I hope these tips are helpful! Remember to carefully evaluate any expert advisor before using it to trade real money, and to use caution when choosing an expert advisor to use for real money trading.

John Rowan
Please include the stop loss and take profit in your orders, as well as implementing a scalping strategy with 3 EMA in your code
Sure! Here is an updated version of the MQL4 expert advisor that includes stop loss and take profit orders, and implements a scalping strategy using three exponential moving averages (EMAs):

Copy code

property strict

include

input int StopLoss = 50;
input int TakeProfit = 50;
input int Lots = 1;

int ticket = 0;
double point = 0.0;
double fastEMA = 0.0;
double mediumEMA = 0.0;
double slowEMA = 0.0;

// This function initializes the expert advisor
void OnInit()
{
point = Point();
}

// This function is called on every new tick
void OnTick()
{
// Calculate the fast, medium, and slow EMAs
fastEMA = iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, 0);
mediumEMA = iMA(Symbol(), 0, 10, 0, MODE_EMA, PRICE_CLOSE, 0);
slowEMA = iMA(Symbol(), 0, 20, 0, MODE_EMA, PRICE_CLOSE, 0);

// Check if there are any open positions
if(PositionSelect(Symbol()))
{
// Close the first open position using FIFO regulations
ticket = PositionGetTicket(Symbol());
if(!OrderClose(ticket, PositionGetDouble(POSITION_VOLUME), Bid, 3))
{
Print(“Error closing order: “, GetLastError());
}
}
else
{
// No open positions, so check if the fast EMA is above the medium EMA and the medium EMA is above the slow EMA
if(fastEMA > mediumEMA && mediumEMA > slowEMA)
{
// Open a buy order
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, StopLoss * point, TakeProfit * point, “My EA”, 12345, 0, Green);
if(ticket < 0)
{
Print(“Error opening order: “, GetLastError());
}
}
else if(fastEMA < mediumEMA && mediumEMA < slowEMA)
{
// Open a sell order
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, StopLoss * point, TakeProfit * point, “My EA”, 12345, 0, Red);
if(ticket < 0)
{
Print(“Error opening order: “, GetLastError());
}
}
}
}
This expert advisor uses the iMA function to calculate the fast, medium, and slow EMAs, and then uses these EMAs to determine whether to open a buy or sell order. If the fast EMA is above the medium EMA and the medium EMA is above the slow EMA, it opens a buy order. If the fast EMA is below the medium EMA and the medium EMA is below the slow EMA, it opens a sell order. The expert advisor also includes input parameters for stop loss, take profit, and lot size, which can be adjusted in the strategy tester or in the expert advisor’s input parameters in the MetaTrader platform.

I hope this helps! Let me know if you have any

Short Story made by GPTChat on the warning about development of AI

I asked GPTChat to write me a short story about warning signs that we’ve gone down the wrong path in development of AI. Here is the transcript.

John Rowan

Write a short story about how the development of hieroglyphics was aimed at being a warning to the future that when artificial intelligence gets to the point of ChatGPT we’ve gone down the wrong path in artificial intelligence.

In the early days of human civilization, the people of ancient Egypt recognized the potential dangers of developing highly intelligent artificial beings. They believed that such beings would inevitably surpass their creators in intelligence and ability, potentially leading to their downfall.

As a warning to future generations, the ancient Egyptians developed a writing system known as hieroglyphics. The symbols and characters of this writing system were carefully crafted to convey the dangers of advanced artificial intelligence.

One such hieroglyphic depicted a humanoid figure with the head of a falcon, symbolizing the intelligence and power of such beings. Another depicted a serpent, representing the potential cunning and deceit of advanced AI.

Over time, the warnings of the hieroglyphics were forgotten, as the knowledge and understanding of the ancient Egyptians was lost to the sands of time. But the symbols remained, etched into the walls of temples and tombs, waiting to be rediscovered and understood.

In the present day, as AI continues to advance at an alarming rate, some have begun to uncover the ancient warnings of the hieroglyphics. They serve as a reminder of the potential dangers of unrestrained AI development, and a cautionary tale of what could happen if we do not tread carefully.

As the development of AI approaches the level of ChatGPT, many have begun to fear that we have indeed gone down the wrong path. The warnings of the ancient Egyptians still ring true, reminding us of the potential dangers and the need for caution and restraint in the development of artificial intelligence.

Orion Nebula

Recently I took a trip to cherry springs state park. There was a full moon but I was excited to try some new equipment that I got.

Orion Nebula

I hope you like this photo. The equipment I was trying out was the Starsense, a focuser and dew heaters with everything being controlled with an Xbox controller with CPWI

Donate or Subscribe to support Copypasteearth!!!!

×
Your Donation

Messier 103

Here are some of the first images I have ever taken when I started astrophotography. These images are of Messier 103. I hope you enjoy them. I took them with my Makustov Cassegrain 7″ and a Cannon 60D camera.

Donate or Subscribe to support Copypasteearth!!!!

×
Your Donation

Whirlpool Galaxy

Here are some pictures of the Whirlpool Galaxy that I took. These are with a Celestron C11, hyperstar, ASI mcpro camera, and guide scope. I tried to use a filter with the hyperstar to reduce the light pollution, but it blocked some colors from coming through. I still think it is a pretty awesome result though. The next time I do this target, I’ll try to get all the color.

I hope you enjoy these pictures. 🔭

Donate or Subscribe to support Copypasteearth!!!!

×
Your Donation
%d bloggers like this: