Wednesday, April 26, 2023

A great Catholic Classical high school option in Kansas City

We have had a great experience this past year St Catherines Academy in Kansas City.  It's really been an amazing educational year for our oldest daughter.  It is just like sending your child to college except that they live at your house.  They have to learn all the responsibility of a tough workload because the format is just like if you scheduled all your lectures to be on Tuesdays and Thursdays in college.  Additionally, as a practicing catholic, I love that the curriculum is classical, uses as many primary sources as possible, and limits the use of technology to a minimum.  We have liked it so much that we intend to enroll our oldest son in the brother school, St Athanasius Academy, next year!

If you have questions or want to know more about our experience, don't hesitate to ask.

-Keith

Monday, November 14, 2022

Digital Hall Passes can make Assistant Principals more effective

I've been working on edTech for nearly 15 years now and myHomework over the last 5+ years has introduced a product that is extremely helpful to the buildings who have adopted the system with fidelity.

The benefits of implementing the hall pass system to the school are:

  • A better understanding of which students use the halls
  • Figuring out which teachers may be too lenient with hallway use
  • Limiting the amount of congregating among problematic student groupings and thereby reducing fighting, vaping, vandalism, PDA, etc...
  • Increasing the amount of time spent in class improves outcomes
  • And more
If you know a school site that may benefit from a solution like ours, please recommend them to visit https://schools.myhomeworkapp.com/digital-hall-passes

Thank you everyone!

Friday, December 13, 2019

Pre-1917 Fasting in the USA

I stumbled on this blog post and to help me find it again thought I would share. https://www.liturgicalartsjournal.com/2019/12/the-traditional-pre-1917-advent-fast-in.html

In short:

To sum up, before the changes of 1917, the Fridays in Advent were kept as days of abstinence and fast—there was only one full meal allowed, and no meat could be eaten at all during the whole day. 

And:

  • Only one full meal allowed, to be taken at noon or later
  • An additional collation of 8 ounces is also allowed: in the evening if the full meal is at noon, or at noon if the main meal is in the evening
  • General custom allows 2 ounces of bread (without butter) in the morning,  with a cup of warm liquid (coffee or tea).

Wednesday, October 16, 2019

Run Bitnami Wordpress Behind Load Balancer


This is mostly a note for myself after finally figuring out how to do this. The rest of the internet looks like they'd rather terminate the SSL on their own instances.









define('WP_SITEURL', 'https://xyz.com/');
define('WP_HOME', 'https://xyz.com/');
if($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'){

$_SERVER['HTTPS'] = 'on';
$_SERVER['SERVER_PORT'] = 443;
}




Then wordpress and the plugins and forcing everybody to use https all works like it's supposed to.


Tuesday, January 29, 2019

Figure Out which EC2 Instance failed ELB Health Check on AWS


I have been using AWS for years and finally got around to wanting the ability to figure out exactly which EC2 instance failed the health check when the Alarm I had setup on the Load Balancer went off. The interwebs were lacking in a clear and easy to follow example on how to make this happen so I thought I might take a few minutes to explain how to set this up.




My preferred setup is to get emailed with the information about which instance(s) were unhealthy right away so I can troubleshoot the issue as soon as possible.  Kudos to this StackOverflow article for pointing me in the right direction.




Step 1: Create a new Topic to get triggered Alarm on your Load Balancer that triggers off Health Checks





Go to the monitoring tab on the ELB that you want to troubleshoot. There's an option to "Create Alarm" on the right hand side. Select that, create a topic if you don't have one already that gets notified anytime the Unhealth Hosts threshold is greater than zero.






ELB create Alarm and Topic









Step 2: Create a IAM role with the Permissions





The lamda function is going to need permissions to read the state of the ELB instances and send an email using SES. The only part of this which is a little bit tricky is that adding the second type of permissions requires finding the additional link.




















Step 3: Create the Lambda













Step 4: Add the Code & Test







import boto3
 import json
 import datetime
 from time import mktime
 class MyEncoder(json.JSONEncoder):
     def default(self, obj):
         if isinstance(obj, datetime.datetime):
             return int(mktime(obj.timetuple()))
         return json.JSONEncoder.default(self, obj)
 def lambda_handler(event, context):
     elb = boto3.client('elb')
     client = boto3.client('ses') 
     response = elb.describe_instance_health(LoadBalancerName='') 
     client.send_email(     Source='fromemail',     
           Destination={'ToAddresses': [         'samplemeail',      ] }, 
           Message={     'Subject': {         
                            'Data': 'AWS Notify MeEvent'},
                          'Body': { 'Text': { 'Data': json.dumps(response, cls = MyEncoder)}}} ) 
     return json.dumps(response, cls = MyEncoder)

Monday, September 3, 2018

Seagate Second Mac Read Only

It took me way too long to find this and you do not need to reformat the drive.  If you're already using the Seagate drive on one mac but can read but not write from another, then the mac that can't write is just missing a driver.

Here's where to download the driver:

https://www.seagate.com/support/software/paragon/

Saturday, July 21, 2018

Tent Camping Reviews

My family has really started to love getting the tent out and camping together.  So much so that I thought a nice post to remind me of what we've liked and didn't like.  I have a family with 5 small kids, oldest is only born in 2008, so we're more into quiet wooded sights, beginner level hiking, and good sites to see etc...

Unfortunately, the majority of campers or camping these days refers to people that want electric sites for their RV or we've even seen people with window unit air conditioners for their tent!  That's not us; when we go camping, we like the old-fashioned non-electric site and a tent.  We even sleep on the ground!   The camp chef grill is the one major luxury that we take along every time.

Missouri Tent Camping



  • Knob Knoster State Park *****  Stayed there 2 nights in summer 2016.  They have nice wooded sites, pretty good hiking trails, and a nature center with nightly shows that the kids really liked.  We really enjoyed this one and would go back.

  • Lewis & Clark State Park **  Stayed there for 2 nights in summer 2017.  We were really disappointed by the campgrounds here which weren't really "out in nature" much.  One side was right behind residential fencing between people's backyards.  The pros were that there was a nice playground, a pretty good beginner hiking trail within walking distance, and the lake is right there.

  • Graham Cave State Park *** Stayed 1 night in summer 2018.  They had a large no electric area and very few campers so privacy was great.  It was wooded.  The cave itself was disappointing because it had been fenced up but the hikes were great for boys 5, 7 and 9 years old.  Other con was that you could hear the interstate traffic at night.


Iowa Tent Camping



  • Palisades-Kepler State Park *****  Stayed there one night summer of 2018 and we wished we could have stayed longer.  The drop-in process was easy, the campsites were wooded with quite a few non-electric off to themselves.  An easy hike led to a great spot on the river nearby.


Illinois Tent Camping



  • Pere Marquette State Park *****  Went through St. Charles MO and took the Grafton Ferry in summer of 2018.  We really liked this park.  It has an older separate section away from all the RVs for the tent camping and the Lodge is within walking distance.

  • Illini State Park **** This was a nice park with a nice variety of sites.  We stayed there in summer of 2018 in a really wooded site instead of staying by the river or a little more out in the open.


Wisconsin Tent Camping



  • Pike Lake State Park **** We stayed here in summer of 2018.  We really liked the nearby lake for it's nice swimming area.  The one piece we didn't like was the check-in process or vehicle fees that go with the Wisconsin state parks.

  • Apostle Islands Area Campground **** We stayed here two nights in summer of 2018.  The best part of this campground is the location.  It's proximity to the Apostle Islands and Bayfield were perfect.  The tent sites were off and away from the RVs which we also like.  The restrooms and showers should be in a little better shape but all-in-all, this was a good place for us.

Thursday, July 19, 2018

Only Half USA Children Raised by Biological Parents

I was reading: https://www.catholicnewsagency.com/news/only-half-of-us-children-are-being-raised-by-their-married-parents-25600

 

Since I've spent the last 7 years of my life dedicated to helping improve outcomes for students placed in a school setting with devices, I've become more acutely aware of the larger societal shifts which are making it difficult for children to overcome the hurdles being thrown in their way by the culture in the USA.

There's plenty of evidence backing up the concept that the environment most likely to help a child grow into a successful adult overwhelmingly points to a household with a married biological mother & father.  That doesn't mean other household environments can't raise good children, it just means the odds are best in this setting.

As an overall culture, it should be a major disappointment to us then to find out that half of all children in our country are in a less than optimal home setting by the time they graduate high school.  With an all-time low in married adults, it appears that we're heading towards even lower percentages of children growing up in a home with their parents.

What are the implications of this going to be down the road?  Will other home settings, schools and/or other community organizations be able to adapt and fill in whatever it is that's missing from the home?

Tuesday, February 6, 2018

imovie not exporting video to file (error 10004)

I was running into this issue and most of the help I found on the internet was either too time consuming or didn't work. In this case, I eventually found the answer on an apple forum. In the past I've had bad luck finding such information later on so I figure'd I'd save it off on my small corner of the web.

Here are the symptoms I was experiencing:
- I had recorded a video with a different piece of software and imported to iMovie
- I added voice over & edited the video and all seemed well
- Went to export to a file and immediately it throws the error 10004 before the pie starts to fill up at all



Thanks to Bruno's review I was able to easily resolve the issue. If only that were the first advice that I'd seen....

Anyhow, just delete the first second of the video clip and add a freeze frame if necessary to make up for it.

Then exporting works fine for me. Hooray!

Saturday, December 9, 2017

4 Ted Videos to Inspire Small Business Leaders

I love the Ted series of videos but I don't always like having to sift through the speeches to find the ones I find valuable.  I've helped found and continue to run what's become a small business for 7 years now and gone through all sorts of ups and downs, successes and failures, etc...

These four videos inspire me in different ways that are helpful but more insightful than practical in their application.  If you're a small business owner and have an hour to get rejuvenated, these videos are perfect.

Work-Life Balance from a Titan of TV


With the runaway success of shows like Scandal and Grey’s Anatomy, Shonda Rhimes has become one of Hollywood’s most powerful icons.  She goes through how she loves work too much at times and how saying yes to playing with her children is her particular outlet for getting her peak drive and motivation levels back when she hits a lull.
Takeaway It's natural to go through peaks and valleys. Am I taking that right amount time to recreate?





Built for 100 Years


Martin Reeves, a biologist by trade and now a consultant, shares six principles from living organisms to build resilient businesses that flourish in the face of change. I'm not trying to build a flash in the pan or a get rich quick company that I flip for millions or billions. I want to create a lasting impact and spend my time working on something meaningful.
Takeaway Of the 6 principles, Prudence may just be the most important trait of a small business that helps it create lasting impact.


Exploration vs. Exploitation


Knut Haanaes makes a compelling case to think more explicitly about which mode or mindset a company is spending it's time and effort within. Too much of either leads to failure while the right balance can result in wonderful growth.
TakeawayIt's critical to spend the company's time & money on the right balance of activities. Don't get complacent or too greedy with something that's working.


Frugal Innovation


Navi Radjou looks at examples of innovation in emerging markets with particular emphasis on interesting inventions from Africa and Asia that have helped millions of people by taking advantage of what resources are plentiful instead of waiting on the western world. Many of these entrepreneurs have no funding, little to no education, and yet they create remarkable solutions to real world issues in their region.
TakeawayDon't fall into the trap that more employees, more funding, more something is all I need to get over the next hurdle.


Hopefully this post about TED videos for small business leaders has guided you to some of the better TED videos from the past few years and provided a valuable time of reflection. Now, go back and keep at it.

Sunday, August 20, 2017

Troubling Post about Parents and Kids Having Phones

If you are thinking about whether or not to get your child a phone and let them spend time on facebook, snapchat, twitter, etc...  You really need to read this article:  https://www.theatlantic.com/magazine/archive/2017/09/has-the-smartphone-destroyed-a-generation/534198/

Have Smartphones Destroyed a Generation?


Below are a few quotes that really jumped out at me.
The results could not be clearer: Teens who spend more time than average on screen activities are more likely to be unhappy, and those who spend more time than average on nonscreen activities are more likely to be happy.


There’s not a single exception. All screen activities are linked to less happiness, and all nonscreen activities are linked to more happiness.


The more time teens spend looking at screens, the more likely they are to report symptoms of depression. Eighth-graders who are heavy users of social media increase their risk of depression by 27 percent, while those who play sports, go to religious services, or even do homework more than the average teen cut their risk significantly.

 
Teens who spend three hours a day or more on electronic devices are 35 percent more likely to have a risk factor for suicide, such as making a suicide plan.

 
Children who use a media device right before bed are more likely to sleep less than they should, more likely to sleep poorly, and more than twice as likely to be sleepy during the day.

And What to Do


The article suggests that the executives in silicon valley that bring us the devices and social media services that are behind all of this are unlikely to allow the amount of use that's associated with the troublesome increases in unhappiness, loneliness, depression and suicidal thoughts.
Even Steve Jobs limited his kids’ use of the devices he brought into the world.

 

Saturday, August 5, 2017

Debugging Dependencies of Django Project in Eclipse

This is another one of those posts to help myself in the future.  I've got some legacy python projects whose directions only get you a django app running in a virtualenv within eclipse but the dependencies themselves are not debuggable.

It was straightforward once I found the right advice.

If you're like me and have a build that creates a virtualenv with everything installed already by pip and a requirements.txt file.  Here's how to get the environment and eclipse changed so that you can debug any dependency.

#Step 1.  Remove the dependencies files from the virtualenv


This works for mac and uninstalls files that might have spaces in them too
python setup.py install --record files.txt
# inspect files.txt to make sure it looks ok. Then:
tr
'\n' '\0' < files.txt | xargs -0 sudo rm -f --

I figured that out after a few different attempts and the best way to do it came from StackOverflow here:  https://stackoverflow.com/a/25209129

 

#Step 2. Add the source folder as an external build dependency on the Python Interpreter Path


Add source folder to eclipse for debugging dependency

 

 

 

 

 

Credit for this step goes to a small sentence buried here:  https://lukeplant.me.uk/blog/posts/eclipse-pydev-and-virtualenv/

 

That's it.  Restart your django server and set a breakpoint inside that internal dependency.

This will save you a ton of time vs. all those import pdb; pdb.set_trace() statements

Drawbacks


This will break the virtualenv from the command line so for things like python manage.py commands.  For those items, I went ahead and set up a second virtualenv.

Thursday, March 2, 2017

django manage.py show stacktrace

This is a quick one more to save me time than anything else.

If you're looking for how to get the stacktrace when a django manage.py command crashes, the --traceback option is what you're looking for.

Use it like this:
python manage.py <methodname> --traceback

Wednesday, August 17, 2016

DIY: Fall off the bone BBQ Ribs in 2 hours

My grandpa made ribs this way and as a kid I would watch and even help.  My mom continued on the tradition and now this is one of my favorite meals to serve for friends and family.  I mentioned at lunch today at a great BBQ place that I don't order ribs because I always wish I was eating my own!

Here's what you need:

  • Heavy duty aluminum foil.  As good and strong as you can find.  I buy mine at costco.

  • Soy Sauce

  • Liquid Smoke ( Your favorite flavor)

  • St. Louis Style Pork Spare Ribs - This cut of ribs is just the right thickness to get meaty, delicious, fall-off-the-bone ribs in 2 hours

  • A large tray for carrying the ribs around and working on them during cooking.

  • BBQ sauce -  Know your audience.  More on this later.

  • Spices ( Optional if you buy pre-rubbed ribs ).


Here's what you do:

  • Open up the ribs, apply your rub and stick the ribs in the fridge for a couple hours.  Sometimes I buy a couple slabs that have already been rubbed and skip this step.

  • Take everything down by your grill and fire the grill up hot enough to sear.  I usually go to 500 degrees.

  • Sear each side of the slab 6-8 minutes with a quarter turn halfway through so you get real good grill marks and seal the juices in.

  • After searing, quickly place the ribs into the heavy duty aluminum foil.  Put a light line of liquid smoke down the ribs.  Similarly sprinkle the ribs with Soy sauce.  Put on your bbq sauce.  A couple of notes about this step.  The soy sauce seems to soften up the meat a little bit more than normal.  For the BBQ sauce, if everyone likes the same kind of sauce, put a bunch of that on.  If your group all likes different, some sweet, some hot, etc...  then just put a little bit of a traditional sauce and they can pick their own sauce later.

  • Foil them up real good.  With the heavy duty foil and some good tongs, you shouldn't puncture the foil.  If you're worried that you might, go ahead and wrap in foil a second time.  We want to keep those juices in there.

  • Place the foiled ribs back on the grill on indirect heat at about 300 degrees for 90-120 minutes depending on the thickness of the ribs.  If your grill isn't big enough to get truly indirect heat, do the best you can and rotate the ribs every 15 or 20 minutes turning a burner or two back on to get the grill back up to temperature.

  • Final step, cut them with kitchen scissors!  Using a knife can pull the meat off the bone.


Now I know a lot of BBQ smoker experts don't like their ribs this way, but nearly everyone else I've ever met thinks these are the most delicious ribs they've ever tasted.

If I've forwarded this recipe and you've got questions, let me know.

Happy grilling!

-Keith

 

Tuesday, June 14, 2016

Download Latest iTunes Reviews with a Quick Python Script

Ever wanted to be able to download the latest itunes reviews for your app to display on your website, understand & analyze user requests better, or just have a copy for yourself?

I was trying to do just that and was happy to find that itunes support RSS feeds for every app in iTunes using the app id.

It's super simple once you know the format to start fetching your reviews and doing whatever you want with them programmatically.

How to Download Latest iTunes Reviews


1.  Find your app's id by looking at the url to your app on itunes.

2.  Construct the url to your RSS feed by replacing the <id> with your id (just the number part).
https://itunes.apple.com/rss/customerreviews/id=<app-id-goes-here>/json

3.  Start writing code to do whatever you want with reviews

A Quick Python Demo


This sample is pretty simple but quickly shows what is possible by printing out the rating and review for the most recent reviews of the app.
import json
import requests

resp = requests.get('https://itunes.apple.com/rss/customerreviews/id=<app-id-goes-here>/json')
itunesrssjson = json.loads( resp.content)

for entry in itunesrssjson['feed']['entry']:
print "{1}".format( entry.get("im:rating").get("label"), \
entry.get('content').get('label'))

Let's say you only want to look at 5 star reviews.  Just add a quick little if statement in there.
for entry in itunesrssjson['feed']['entry']:
if entry.get('content') and entry.get("im:rating").get("label") in ["5"]:
print "{1}".format( entry.get("im:rating").get("label"), \
entry.get('content').get('label'))

 

That's it!  Use or learn some python skills to sort, filter, fetch additional reviews and more.  Or you can always use whatever language you're best at.

Have fun getting your reviews the quick and easy way.