?>
class Akismet_REST_API {
/**
* Register the REST API routes.
*/
public static function init() {
if ( ! function_exists( 'register_rest_route' ) ) {
// The REST API wasn't integrated into core until 4.4, and we support 4.0+ (for now).
return false;
}
register_rest_route( 'akismet/v1', '/key', array(
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_key' ),
), array(
'methods' => WP_REST_Server::EDITABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'set_key' ),
'args' => array(
'key' => array(
'required' => true,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ),
'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ),
),
),
), array(
'methods' => WP_REST_Server::DELETABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'delete_key' ),
)
) );
register_rest_route( 'akismet/v1', '/settings/', array(
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_settings' ),
),
array(
'methods' => WP_REST_Server::EDITABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'set_boolean_settings' ),
'args' => array(
'akismet_strictness' => array(
'required' => false,
'type' => 'boolean',
'description' => __( 'If true, Akismet will automatically discard the worst spam automatically rather than putting it in the spam folder.', 'akismet' ),
),
'akismet_show_user_comments_approved' => array(
'required' => false,
'type' => 'boolean',
'description' => __( 'If true, show the number of approved comments beside each comment author in the comments list page.', 'akismet' ),
),
),
)
) );
register_rest_route( 'akismet/v1', '/stats', array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_stats' ),
'args' => array(
'interval' => array(
'required' => false,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_interval' ),
'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ),
'default' => 'all',
),
),
) );
register_rest_route( 'akismet/v1', '/stats/(?P[\w+])', array(
'args' => array(
'interval' => array(
'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ),
'type' => 'string',
),
),
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_stats' ),
)
) );
register_rest_route( 'akismet/v1', '/alert', array(
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_alert' ),
'args' => array(
'key' => array(
'required' => false,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ),
'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ),
),
),
),
array(
'methods' => WP_REST_Server::EDITABLE,
'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'set_alert' ),
'args' => array(
'key' => array(
'required' => false,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ),
'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ),
),
),
),
array(
'methods' => WP_REST_Server::DELETABLE,
'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'delete_alert' ),
'args' => array(
'key' => array(
'required' => false,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ),
'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ),
),
),
)
) );
}
/**
* Get the current Akismet API key.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function get_key( $request = null ) {
return rest_ensure_response( Akismet::get_api_key() );
}
/**
* Set the API key, if possible.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function set_key( $request ) {
if ( defined( 'WPCOM_API_KEY' ) ) {
return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be changed via the API.', 'akismet' ), array( 'status'=> 409 ) ) );
}
$new_api_key = $request->get_param( 'key' );
if ( ! self::key_is_valid( $new_api_key ) ) {
return rest_ensure_response( new WP_Error( 'invalid_key', __( 'The value provided is not a valid and registered API key.', 'akismet' ), array( 'status' => 400 ) ) );
}
update_option( 'wordpress_api_key', $new_api_key );
return self::get_key();
}
/**
* Unset the API key, if possible.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function delete_key( $request ) {
if ( defined( 'WPCOM_API_KEY' ) ) {
return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be deleted.', 'akismet' ), array( 'status'=> 409 ) ) );
}
delete_option( 'wordpress_api_key' );
return rest_ensure_response( true );
}
/**
* Get the Akismet settings.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function get_settings( $request = null ) {
return rest_ensure_response( array(
'akismet_strictness' => ( get_option( 'akismet_strictness', '1' ) === '1' ),
'akismet_show_user_comments_approved' => ( get_option( 'akismet_show_user_comments_approved', '1' ) === '1' ),
) );
}
/**
* Update the Akismet settings.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function set_boolean_settings( $request ) {
foreach ( array(
'akismet_strictness',
'akismet_show_user_comments_approved',
) as $setting_key ) {
$setting_value = $request->get_param( $setting_key );
if ( is_null( $setting_value ) ) {
// This setting was not specified.
continue;
}
// From 4.7+, WP core will ensure that these are always boolean
// values because they are registered with 'type' => 'boolean',
// but we need to do this ourselves for prior versions.
$setting_value = Akismet_REST_API::parse_boolean( $setting_value );
update_option( $setting_key, $setting_value ? '1' : '0' );
}
return self::get_settings();
}
/**
* Parse a numeric or string boolean value into a boolean.
*
* @param mixed $value The value to convert into a boolean.
* @return bool The converted value.
*/
public static function parse_boolean( $value ) {
switch ( $value ) {
case true:
case 'true':
case '1':
case 1:
return true;
case false:
case 'false':
case '0':
case 0:
return false;
default:
return (bool) $value;
}
}
/**
* Get the Akismet stats for a given time period.
*
* Possible `interval` values:
* - all
* - 60-days
* - 6-months
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function get_stats( $request ) {
$api_key = Akismet::get_api_key();
$interval = $request->get_param( 'interval' );
$stat_totals = array();
$response = Akismet::http_post( Akismet::build_query( array( 'blog' => get_option( 'home' ), 'key' => $api_key, 'from' => $interval ) ), 'get-stats' );
if ( ! empty( $response[1] ) ) {
$stat_totals[$interval] = json_decode( $response[1] );
}
return rest_ensure_response( $stat_totals );
}
/**
* Get the current alert code and message. Alert codes are used to notify the site owner
* if there's a problem, like a connection issue between their site and the Akismet API,
* invalid requests being sent, etc.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function get_alert( $request ) {
return rest_ensure_response( array(
'code' => get_option( 'akismet_alert_code' ),
'message' => get_option( 'akismet_alert_msg' ),
) );
}
/**
* Update the current alert code and message by triggering a call to the Akismet server.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function set_alert( $request ) {
delete_option( 'akismet_alert_code' );
delete_option( 'akismet_alert_msg' );
// Make a request so the most recent alert code and message are retrieved.
Akismet::verify_key( Akismet::get_api_key() );
return self::get_alert( $request );
}
/**
* Clear the current alert code and message.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function delete_alert( $request ) {
delete_option( 'akismet_alert_code' );
delete_option( 'akismet_alert_msg' );
return self::get_alert( $request );
}
private static function key_is_valid( $key ) {
$response = Akismet::http_post(
Akismet::build_query(
array(
'key' => $key,
'blog' => get_option( 'home' )
)
),
'verify-key'
);
if ( $response[1] == 'valid' ) {
return true;
}
return false;
}
public static function privileged_permission_callback() {
return current_user_can( 'manage_options' );
}
/**
* For calls that Akismet.com makes to the site to clear outdated alert codes, use the API key for authorization.
*/
public static function remote_call_permission_callback( $request ) {
$local_key = Akismet::get_api_key();
return $local_key && ( strtolower( $request->get_param( 'key' ) ) === strtolower( $local_key ) );
}
public static function sanitize_interval( $interval, $request, $param ) {
$interval = trim( $interval );
$valid_intervals = array( '60-days', '6-months', 'all', );
if ( ! in_array( $interval, $valid_intervals ) ) {
$interval = 'all';
}
return $interval;
}
public static function sanitize_key( $key, $request, $param ) {
return trim( $key );
}
}
/**
* Twenty Twenty-Five functions and definitions.
*
* @link https://developer.wordpress.org/themes/basics/theme-functions/
*
* @package WordPress
* @subpackage Twenty_Twenty_Five
* @since Twenty Twenty-Five 1.0
*/
if ( ! function_exists( 'twentytwentyfive_post_format_setup' ) ) :
/**
* Adds theme support for post formats.
*
* @since Twenty Twenty-Five 1.0
*
* @return void
*/
function twentytwentyfive_post_format_setup() {
add_theme_support( 'post-formats', array( 'aside', 'audio', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video' ) );
}
endif;
add_action( 'after_setup_theme', 'twentytwentyfive_post_format_setup' );
if ( ! function_exists( 'twentytwentyfive_editor_style' ) ) :
/**
* Enqueues editor-style.css in the editors.
*
* @since Twenty Twenty-Five 1.0
*
* @return void
*/
function twentytwentyfive_editor_style() {
add_editor_style( 'assets/css/editor-style.css' );
}
endif;
add_action( 'after_setup_theme', 'twentytwentyfive_editor_style' );
if ( ! function_exists( 'twentytwentyfive_enqueue_styles' ) ) :
/**
* Enqueues the theme stylesheet on the front.
*
* @since Twenty Twenty-Five 1.0
*
* @return void
*/
function twentytwentyfive_enqueue_styles() {
$suffix = SCRIPT_DEBUG ? '' : '.min';
$src = 'style' . $suffix . '.css';
wp_enqueue_style(
'twentytwentyfive-style',
get_parent_theme_file_uri( $src ),
array(),
wp_get_theme()->get( 'Version' )
);
wp_style_add_data(
'twentytwentyfive-style',
'path',
get_parent_theme_file_path( $src )
);
}
endif;
add_action( 'wp_enqueue_scripts', 'twentytwentyfive_enqueue_styles' );
if ( ! function_exists( 'twentytwentyfive_block_styles' ) ) :
/**
* Registers custom block styles.
*
* @since Twenty Twenty-Five 1.0
*
* @return void
*/
function twentytwentyfive_block_styles() {
register_block_style(
'core/list',
array(
'name' => 'checkmark-list',
'label' => __( 'Checkmark', 'twentytwentyfive' ),
'inline_style' => '
ul.is-style-checkmark-list {
list-style-type: "\2713";
}
ul.is-style-checkmark-list li {
padding-inline-start: 1ch;
}',
)
);
}
endif;
add_action( 'init', 'twentytwentyfive_block_styles' );
if ( ! function_exists( 'twentytwentyfive_pattern_categories' ) ) :
/**
* Registers pattern categories.
*
* @since Twenty Twenty-Five 1.0
*
* @return void
*/
function twentytwentyfive_pattern_categories() {
register_block_pattern_category(
'twentytwentyfive_page',
array(
'label' => __( 'Pages', 'twentytwentyfive' ),
'description' => __( 'A collection of full page layouts.', 'twentytwentyfive' ),
)
);
register_block_pattern_category(
'twentytwentyfive_post-format',
array(
'label' => __( 'Post formats', 'twentytwentyfive' ),
'description' => __( 'A collection of post format patterns.', 'twentytwentyfive' ),
)
);
}
endif;
add_action( 'init', 'twentytwentyfive_pattern_categories' );
if ( ! function_exists( 'twentytwentyfive_register_block_bindings' ) ) :
/**
* Registers the post format block binding source.
*
* @since Twenty Twenty-Five 1.0
*
* @return void
*/
function twentytwentyfive_register_block_bindings() {
register_block_bindings_source(
'twentytwentyfive/format',
array(
'label' => _x( 'Post format name', 'Label for the block binding placeholder in the editor', 'twentytwentyfive' ),
'get_value_callback' => 'twentytwentyfive_format_binding',
)
);
}
endif;
add_action( 'init', 'twentytwentyfive_register_block_bindings' );
if ( ! function_exists( 'twentytwentyfive_format_binding' ) ) :
/**
* Callback function for the post format name block binding source.
*
* @since Twenty Twenty-Five 1.0
*
* @return string|void Post format name, or nothing if the format is 'standard'.
*/
function twentytwentyfive_format_binding() {
$post_format_slug = get_post_format();
if ( $post_format_slug && 'standard' !== $post_format_slug ) {
return get_post_format_string( $post_format_slug );
}
}
endif;
Finance – Five F's of Life
https://fivefoflife.com
Faith, Fitness, Family, Friends, FinanceTue, 11 Aug 2026 11:22:38 +0000en-US
hourly
1 https://wordpress.org/?v=7.1What have I learned in 2020 ….
https://fivefoflife.com/?p=338&utm_source=rss&utm_medium=rss&utm_campaign=what-have-i-learned-in-2020
Thu, 21 Jan 2021 05:55:09 +0000http://fivefoflife.com/?p=338It’s been 3 years since I have blogged. I know I am long over due for one. I will say I am surprised that people have still made comments since I launched the book 10 years ago and people have shared similar thoughts. I do appreciate everyone that has come and visited the site. Anyways, I never imagine by 2020 there would a global pandemic. I am sure everyone will remember where they were when the shutdown happened for their location. For me, it was the day after my birthday in March when the shutdown all began. At first, everyone was extremely scared, but over time society has developed pandemic fatigue. We can see in the numbers that are being published that cases are climbing for the second wave at time of this blog post. Of course, there is a lot of sadness that has occurred with the deaths of over 1 Million+ globally1.
A lot of people have tried to guess when we will get back to normal. If you look back at the Spanish Flu2, it took 2 years from 1918-1920. That would be my best guess for normalcy because history tends to repeat itself. We anticipate we will have vaccines for COVID-19 by December, but it won’t reach the population until the middle of 2021 at the earliest due to the requirements of the vaccine. That’s why it’s important to keep your Fitness up (health) because if you get sick there might not be a full-proof way to treat you.
Where do we go from here?
There is only one place we can go…. forward. It’s going to be hard for many people if they have lost a loved one, but I am sure their loved ones would want them to move forward. I wish I can say things will be ok, but I really don’t know and that’s where Faith comes in. Faith that things will get better even though there is hurt, pain, and suffering from this pandemic. But you have to keep going. We have to remember our ancestor’s survival The Black Plague, Spanish Flu, and many other things throughout history. We will too survive!
Remember to hug your Family and Friends
Remember to hug your family and friends if even virtually.
What I realized I missed the most during 2020 was simply getting a chance to really spend quality time with my Family and Friends. We really don’t know when it will be our last time seeing them or spending time. If you are able to safely, remember to give them a hug. I think there are many benefits from hugging ranging from distressing to regenerating muscles3.
Thoughts on finances for 2020
During the past year, it’s been a struggle for many families since they could not work because of the restrictions. I have put together some links for us here:
But you can do a quick google search to see if there are locate programs available in your area. Don’t be shy asking for help financially. The worst that can happen is that people will say no. But remember you got to put food on the table for yourself and family and people out there will help!
Last Thoughts to close out 2020
Again I know 2020 was not easy for many and myself, but we must keep on going. I will try to write more post as time permits.
]]>
Having problems keeping your 2013 Resolutions?
https://fivefoflife.com/?p=260&utm_source=rss&utm_medium=rss&utm_campaign=having-problems-keeping-your-2013-resolutions
https://fivefoflife.com/?p=260#respondWed, 02 Jan 2013 07:06:00 +0000http://fivefoflife.com/?p=2603 Things I am happy about:
Amazon – I get to buy gifts and send them directly and track it for presents
Friends to celebrate the New Years with =)
Heating inside my house; AC during summer time of course!
A lot of people including myself have challenges with keeping their NYE resolutions. We have the best intent, but are horrible at the execution. The easy answer is try harder, but the truth is we must convince ourselves that our goals are doable and let ourselves fail in order to get back up. I know my readers out there needs some steps….
Best of Luck to Everyone for 2013 and their resolutions!
]]>https://fivefoflife.com/?feed=rss2&p=2600Heading to 2013 New Years after Xmas!
https://fivefoflife.com/?p=255&utm_source=rss&utm_medium=rss&utm_campaign=heading-to-2013-new-years-after-xmas
https://fivefoflife.com/?p=255#respondSat, 29 Dec 2012 06:01:15 +0000http://fivefoflife.com/?p=2553 Things I am happy about:
Watching Xmas movies with Family
Warm Weather
Dinner with Family & Friends
Every year I go visit my family and friends for the holidays in South Florida. I have notice every year that the focus tends to be more on gifts than recognizing why we celebrate Christmas. Of course, I had to look up the history of Christmas (Xmas for short).
Here is some info on Xmas:
http://en.wikipedia.org/wiki/Christmas
Regardless of what you believe in, the holidays are the best time to catch up with family and friends over dinner or activities. For example, I will be taking my sister go-kart racing. It’s always a blast to speed on a race track.
On my last note for this entry. Check out this TED video on having less stuff that will make you happier.
As always, it is the people you meet, the books you read, and resources you spend your time on that will tell you where you are heading in life.
]]>https://fivefoflife.com/?feed=rss2&p=2550Fiscal Cliff and Giving during the Holidays
https://fivefoflife.com/?p=232&utm_source=rss&utm_medium=rss&utm_campaign=fiscal-cliff-and-giving-during-the-holidays
https://fivefoflife.com/?p=232#respondThu, 06 Dec 2012 04:00:32 +0000http://fivefoflife.com/?p=2323 Things I am happy about:
The ability to setup e-commerce in minutes not days
Giving Gift bags to the homeless
Inspiring others to help others
There is a lot of talk and anger about the “Fiscal Cliff” that could happen very soon. I would encourage you not to keep your faith in people. People have been in this predicament before and will again. The important priorities should be your family and friends and not other distractions.
Challenge for today:Watch the video and then ask yourself what have you done this is meaningful this week?
]]>https://fivefoflife.com/?feed=rss2&p=2320Worry & Future
https://fivefoflife.com/?p=208&utm_source=rss&utm_medium=rss&utm_campaign=worry-future
https://fivefoflife.com/?p=208#commentsTue, 13 Nov 2012 00:16:05 +0000http://fivefoflife.com/?p=2083 Things I am happy about:
Opportunity to meet Warren Buffet
Ability to sleep in an amazing bed
Thanksgiving dinner
I do not know why, but I feel next year will be a great year of change. I will be graduating and I am not completely sure what will happen in the next six months, but it’s going to be great. I found my passion. My passion is to solve problem and help people. It’s very broad and understand it does not fit the typical answer. I realize I have to focus and lay down a plan of action. At the same time, I need to have the faith that God will provide and guide me to his path for me. I am perplex as to why all these wonderful things are happen at one time. All I can say is that I truly appreciate God’s Will for my life.
I went to church this week. Pastor Pete from Crosspoint discussed about worrying. We only worry when we don’t trust God’s will for us. But how can we not worry? I am very content, but I know I can lose everything at any given instance. I am especially reminded of that when I see people in NYC and Jersey.
]]>https://fivefoflife.com/?feed=rss2&p=2081Hardship with Money
https://fivefoflife.com/?p=135&utm_source=rss&utm_medium=rss&utm_campaign=hardship-with-money
https://fivefoflife.com/?p=135#respondFri, 02 Mar 2012 05:24:30 +0000http://fivefoflife.com/?p=1353 Things I am happy about:
Amazing Weather for a walk
Coffee to keep you awake
Teriyaki sauce to make Tofo taste yummy
Had another tough conversation with my family concerning balancing budgets. Although the “Great Recession”is technically over, there are still many people including my family that are still struggling with their income or lack of income. I know you can get retrain, but when someone is close to the retirement age, does it make sense? I think through this ordeal I have learned to be closer with my family and force them to manage money even better. It’s a very hard lesson, but it’s one that must be learnt early.
]]>https://fivefoflife.com/?feed=rss2&p=1350Preparation
https://fivefoflife.com/?p=122&utm_source=rss&utm_medium=rss&utm_campaign=preparation
https://fivefoflife.com/?p=122#respondThu, 23 Feb 2012 03:44:34 +0000http://fivefoflife.com/?p=1223 Things I am happy about:
I am happy that I want to continue learning and growing
Finally replacing my old work laptop
Having lunch with my old boss
In life, we say always we want to make it big, but how often do we actually work on the little things that will allow for the big things to happen? Most of us are lucky if we can make it through the week with one thing small that we accomplished. So I have been doing great not drinking soda. Now my goal is to start running again in preparation for the half marathon. Also, I am determine to start my own gig on the side because it’s important for me to do it.
]]>https://fivefoflife.com/?feed=rss2&p=1220Money and Happiness
https://fivefoflife.com/?p=65&utm_source=rss&utm_medium=rss&utm_campaign=money-and-happiness
https://fivefoflife.com/?p=65#respondSun, 05 Feb 2012 06:28:33 +0000http://fivefoflife.com/?p=65I was in my Managerial Finance class today and had a discussion about Money and Happiness
There is data that indicates we do get some level of happiness with money; however, if you carefully close on the graph you will notice Denmark is happier than the US, but with less GDP per capital. Hmmm…
Money does not bring or create happiness. You need to be joyful inside without the desire to seek money only.
]]>https://fivefoflife.com/?feed=rss2&p=650Happy Holidays 2010
https://fivefoflife.com/?p=17&utm_source=rss&utm_medium=rss&utm_campaign=happy-holidays-2010
https://fivefoflife.com/?p=17#respondWed, 29 Dec 2010 01:53:40 +0000http://fivefoflife.com/?p=17Holidays are best time to catch up with family and friends. It’s one part of the year that brings out the very best of people and the very worst. For example, while shopping in a typical mall, people are always fighting for a closer parking spot. Do you really need to be that much closer? Couldn’t we all used a little more exercise to help us loose in America?Then again, we live in a world that we place value on buying gifts above all else in order to show we care for people we love. But is that what really matters?
It’s great that people give during the holidays, but that excuses from not giving throughout the year? I hope not, because there are many many people out there who needs our help beyond the simple gift giving we embark once a year. Could we not create a fund or teach people a new skill?
I feel challenge every year with this epidemic ‘giving’ of materials goods. However, if it brings you closer to your friends and family why not? I think at the end of the day the most important thing is that you do make time even with all the traffic and craziness that is out there.
I feel really thankful for the upcoming New Year because there is hope for a better year. I have friends that will be getting married, having babies, and who knows what else? Time is short… go spend time with your family/friends, but remember it’s not always about a present, but perhaps the action is just as valuable as a gift.
Some ideas…
-Enjoy coffee with your friends
-Take your family out for dinner
-Buy gifts that your family needs….I bought my mom a new dresser
-Look for the best deals, but don’t buy to just buy