tag:blogger.com,1999:blog-27360261149614417472024-02-17T21:04:59.856-08:00Entzeroth.comKeith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.comBlogger71125tag:blogger.com,1999:blog-2736026114961441747.post-91717717516493670522023-04-26T05:20:00.001-07:002023-04-26T05:20:04.041-07:00A great Catholic Classical high school option in Kansas City<p>We have had a great experience this past year <a href="https://stcatherineskc.com">St Catherines Academy</a> 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, <a href="https://stathanasiuskc.com">St Athanasius Academy</a>, next year!</p><p>If you have questions or want to know more about our experience, don't hesitate to ask.</p><p>-Keith</p>Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-11831671752956144692022-11-14T09:13:00.004-08:002022-11-14T09:13:50.842-08:00Digital Hall Passes can make Assistant Principals more effective<p>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.</p><p>The benefits of implementing the hall pass system to the school are:</p><p></p><ul style="text-align: left;"><li>A better understanding of which students use the halls</li><li>Figuring out which teachers may be too lenient with hallway use</li><li>Limiting the amount of congregating among problematic student groupings and thereby reducing fighting, vaping, vandalism, PDA, etc...</li><li>Increasing the amount of time spent in class improves outcomes</li><li>And more</li></ul><div>If you know a school site that may benefit from a solution like ours, please recommend them to visit <a href="https://schools.myhomeworkapp.com/digital-hall-passes">https://schools.myhomeworkapp.com/digital-hall-passes</a></div><div><br /></div><div>Thank you everyone!</div><div><br /></div><p></p>Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-73897513631118080772019-12-13T11:41:00.001-08:002019-12-13T11:41:22.979-08:00Pre-1917 Fasting in the USAI stumbled on this blog post and to help me find it again thought I would share. <a href="https://www.liturgicalartsjournal.com/2019/12/the-traditional-pre-1917-advent-fast-in.html">https://www.liturgicalartsjournal.com/2019/12/the-traditional-pre-1917-advent-fast-in.html</a><br />
<br />
In short:<br />
<br />
<blockquote class="tr_bq">
<span style="background-color: white; caret-color: rgb(85, 85, 85); color: #555555; font-family: Georgia, Utopia, "Palatino Linotype", Palatino, serif; font-size: 15px;">To sum up, before the changes of 1917, the Fridays in Advent were kept as days of abstinence </span><i style="caret-color: rgb(85, 85, 85); color: #555555; font-family: Georgia, Utopia, "Palatino Linotype", Palatino, serif; font-size: 15px;"><b>and fast</b></i><span style="background-color: white; caret-color: rgb(85, 85, 85); color: #555555; font-family: Georgia, Utopia, "Palatino Linotype", Palatino, serif; font-size: 15px;">—there was only one full meal allowed, and no meat could be eaten at all during the whole day. </span></blockquote>
<br />
And:<br />
<br />
<ul style="caret-color: rgb(85, 85, 85); color: #555555; font-family: Georgia, Utopia, "Palatino Linotype", Palatino, serif; font-size: 15px; line-height: 1.4; margin: 0.5em 0px; padding: 0px 2.5em;">
<li style="line-height: 1.3; margin: 0px 0px 0.25em; padding: 0px;">Only one full meal allowed, to be taken at noon or later</li>
<li style="line-height: 1.3; margin: 0px 0px 0.25em; padding: 0px;">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</li>
<li style="line-height: 1.3; margin: 0px 0px 0.25em; padding: 0px;">General custom allows 2 ounces of bread (without butter) in the morning, with a cup of warm liquid (coffee or tea).</li>
</ul>
Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-27292279429686416252019-10-16T06:02:00.000-07:002019-12-09T09:16:43.730-08:00Run Bitnami Wordpress Behind Load Balancer<!-- wp:paragraph --><br/><p>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.</p><br/><!-- /wp:paragraph --><br/><br/><!-- wp:paragraph --><br/><p></p><br/><!-- /wp:paragraph --><br/><br/><!-- wp:code --><br/><pre class="wp-block-code"><code>define('WP_SITEURL', 'https://xyz.com/');<br/>define('WP_HOME', 'https://xyz.com/');<br/>if($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'){<br/><br/> $_SERVER['HTTPS'] = 'on';<br/> $_SERVER['SERVER_PORT'] = 443;<br/>}</code></pre><br/><!-- /wp:code --><br/><br/><!-- wp:paragraph --><br/><p>Then wordpress and the plugins and forcing everybody to use https all works like it's supposed to.</p><br/><!-- /wp:paragraph -->Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-41148718510513990342019-01-29T19:35:00.000-08:002019-12-10T06:30:44.027-08:00Figure Out which EC2 Instance failed ELB Health Check on AWS<!-- wp:paragraph --><br />
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.<br />
<br />
<!-- /wp:paragraph --><br />
<br />
<!-- wp:paragraph --><br />
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 <a href="https://stackoverflow.com/questions/21453371/amazon-ec2-elb-alarm-which-instance-is-unhealthy">StackOverflow article</a> for pointing me in the right direction.<br />
<br />
<!-- /wp:paragraph --><br />
<br />
<!-- wp:heading {"level":4} --><br />
<h4>
Step 1: Create a new Topic to get triggered Alarm on your Load Balancer that triggers off Health Checks</h4>
<br />
<!-- /wp:heading --><br />
<br />
<!-- wp:paragraph --><br />
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.<br />
<br />
<!-- /wp:paragraph --><br />
<br />
<!-- wp:image {"id":467} --><br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAeTWS04ECdEP5lEflz80KLhZ5gqHIz3WkopvDem2uQL22CSaeulLps5fSxbIQOBKrSGOn68qfTDGzMa25NpyyX1un-P_L_Zo4PAXHvRd2rkOSHUoVuw-g9DHaoU1jTIpTe0s_nnRmw3c/s1600/Screen-Shot-2019-01-29-at-3.00.54-PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="562" data-original-width="1320" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAeTWS04ECdEP5lEflz80KLhZ5gqHIz3WkopvDem2uQL22CSaeulLps5fSxbIQOBKrSGOn68qfTDGzMa25NpyyX1un-P_L_Zo4PAXHvRd2rkOSHUoVuw-g9DHaoU1jTIpTe0s_nnRmw3c/s640/Screen-Shot-2019-01-29-at-3.00.54-PM.png" width="640" /></a></div>
<figure class="wp-block-image"><br /><figcaption>ELB create Alarm and Topic</figcaption></figure><br />
<!-- /wp:image --><br />
<br />
<!-- wp:paragraph --><br />
<br />
<br />
<!-- /wp:paragraph --><br />
<br />
<!-- wp:heading {"level":4} --><br />
<h4>
Step 2: Create a IAM role with the Permissions</h4>
<br />
<!-- /wp:heading --><br />
<br />
<!-- wp:paragraph --><br />
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.<br />
<br />
<!-- /wp:paragraph --><br />
<br />
<!-- wp:image {"id":468} --><br />
<br />
<figure class="wp-block-image"><img alt="" class="wp-image-468" src="https://i1.wp.com/entzeroth.com/wp-content/uploads/2019/01/Screen-Shot-2019-01-29-at-3.12.22-PM.png?fit=660%2C430" /></figure><br />
<!-- /wp:image --><br />
<br />
<!-- wp:image {"id":469} --><br />
<br />
<figure class="wp-block-image"><img alt="" class="wp-image-469" src="https://i0.wp.com/entzeroth.com/wp-content/uploads/2019/01/Screen-Shot-2019-01-29-at-3.14.20-PM.png?fit=660%2C491" /><br /><figcaption></figcaption></figure><br />
<!-- /wp:image --><br />
<br />
<!-- wp:image {"id":470} --><br />
<br />
<figure class="wp-block-image"><img alt="" class="wp-image-470" src="https://i0.wp.com/entzeroth.com/wp-content/uploads/2019/01/Screen-Shot-2019-01-29-at-3.14.53-PM.png?fit=660%2C534" /></figure><br />
<!-- /wp:image --><br />
<br />
<!-- wp:paragraph --><br />
Step 3: Create the Lambda<br />
<br />
<!-- /wp:paragraph --><br />
<br />
<!-- wp:image {"id":471} --><br />
<br />
<figure class="wp-block-image"><img alt="" class="wp-image-471" src="https://i0.wp.com/entzeroth.com/wp-content/uploads/2019/01/Screen-Shot-2019-01-29-at-3.22.28-PM.png?fit=660%2C356" /></figure><br />
<!-- /wp:image --><br />
<br />
<!-- wp:gallery {"ids":[472]} --><br />
<ul class="wp-block-gallery columns-1 is-cropped"><br />
<li class="blocks-gallery-item"><br /><figure><img alt="" class="wp-image-472" data-id="472" data-link="http://entzeroth.com/?attachment_id=472" src="https://i0.wp.com/entzeroth.com/wp-content/uploads/2019/01/Screen-Shot-2019-01-29-at-3.22.53-PM.png?fit=660%2C553" /></figure></li>
</ul>
<br />
<!-- /wp:gallery --><br />
<br />
<!-- wp:heading {"level":4} --><br />
<h4>
Step 4: Add the Code & Test</h4>
<br />
<!-- /wp:heading --><br />
<br />
<!-- wp:preformatted --><!-- /wp:preformatted --><br />
<br />
<!-- wp:preformatted --><br />
<pre class="wp-block-preformatted">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)</pre>
<br />
<!-- /wp:preformatted -->Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-51324498392866712102018-09-03T04:08:00.000-07:002019-12-09T09:16:43.565-08:00Seagate Second Mac Read OnlyIt 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.<br/><br/>Here's where to download the driver:<br/><br/>https://www.seagate.com/support/software/paragon/Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com1tag:blogger.com,1999:blog-2736026114961441747.post-60459494358946616372018-07-21T19:44:00.000-07:002019-12-09T09:16:43.485-08:00Tent Camping ReviewsMy 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...<br/><br/>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.<br/><h2><strong>Missouri Tent Camping</strong></h2><br/><ul><br/> <li><strong>Knob Knoster State Park *****</strong> 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.</li><br/> <li><strong>Lewis & Clark State Park</strong> ** 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.</li><br/> <li><strong>Graham Cave State Park</strong> *** 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.</li><br/></ul><br/><h2><strong>Iowa Tent Camping</strong></h2><br/><ul><br/> <li><b><a href="http://www.iowadnr.gov/Places-to-Go/State-Parks/Iowa-State-Parks/ParkDetails/ParkID/610113">Palisades-Kepler State Park</a> ***** </b>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.</li><br/></ul><br/><h2><strong>Illinois Tent Camping</strong></h2><br/><ul><br/> <li><strong>Pere Marquette State Park</strong> ***** 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.</li><br/> <li><strong>Illini State Park **** </strong>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.</li><br/></ul><br/><h2><strong>Wisconsin Tent Camping</strong></h2><br/><ul><br/> <li><a href="https://dnr.wi.gov/topic/parks/name/pikelake/"><strong>Pike Lake State Park</strong></a> **** 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.</li><br/> <li><a href="http://www.apostleislandsareacampground.com"><strong>Apostle Islands Area Campground</strong></a> **** 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.</li><br/></ul>Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-50162172740316170282018-07-19T19:50:00.000-07:002019-12-09T09:16:43.404-08:00Only Half USA Children Raised by Biological ParentsI was reading: https://www.catholicnewsagency.com/news/only-half-of-us-children-are-being-raised-by-their-married-parents-25600<br/><br/> <br/><br/>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.<br/><br/>There's <a href="https://www.focusonthefamily.com/socialissues/marriage/marriage/30-years-of-research">plenty of evidence</a> 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.<br/><br/>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 <a href="https://ifstudies.org/blog/the-state-of-our-unions-marriage-up-among-older-americans-down-among-the-younger">all-time low in married adults</a>, it appears that we're heading towards even lower percentages of children growing up in a home with their parents.<br/><br/>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?Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-57225169850579775772018-02-06T17:55:00.000-08:002019-12-09T09:16:43.326-08:00imovie 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 <a href="https://discussions.apple.com/thread/8097092" target="_blank" rel="noopener">apple forum</a>. 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.<br/><br/>Here are the symptoms I was experiencing:<br/>- I had recorded a video with a different piece of software and imported to iMovie<br/>- I added voice over & edited the video and all seemed well<br/>- Went to export to a file and immediately it throws the error 10004 before the pie starts to fill up at all<br/><br/><a href="http://entzeroth.com/wp-content/uploads/2018/02/Screen-Shot-2018-02-06-at-1.51.46-PM.png"><img class="aligncenter wp-image-410 size-large" src="http://entzeroth.com/wp-content/uploads/2018/02/Screen-Shot-2018-02-06-at-1.51.46-PM-1024x345.png" alt="" width="660" height="222" /></a><br/><br/>Thanks to Bruno's review I was able to easily resolve the issue. If only that were the first advice that I'd seen....<br/><br/>Anyhow, just delete the first second of the video clip and add a freeze frame if necessary to make up for it.<br/><br/>Then exporting works fine for me. Hooray!Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-80188005048622548602017-12-09T10:43:00.000-08:002019-12-09T09:16:43.247-08:004 Ted Videos to Inspire Small Business LeadersI 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...<br/><br/>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.<br/><h3>Work-Life Balance from a Titan of TV</h3><br/>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.<br/><strong>Takeaway</strong> It's natural to go through peaks and valleys. Am I taking that right amount time to recreate?<br/><div style="max-width: 854px;"><br/><div style="position: relative; height: 0; padding-bottom: 56.25%;"><iframe style="position: absolute; left: 0; top: 0; width: 100%; height: 100%;" src="https://embed.ted.com/talks/shonda_rhimes_my_year_of_saying_yes_to_everything" width="854" height="480" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen"></iframe></div><br/><div></div><br/></div><br/><br/><h3>Built for 100 Years</h3><br/>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.<br/><strong>Takeaway</strong> Of the 6 principles, Prudence may just be the most important trait of a small business that helps it create lasting impact. <br/><div style="max-width:854px"><div style="position:relative;height:0;padding-bottom:56.25%"><iframe src="https://embed.ted.com/talks/lang/en/martin_reeves_how_to_build_a_business_that_lasts_100_years" width="854" height="480" style="position:absolute;left:0;top:0;width:100%;height:100%" frameborder="0" scrolling="no" allowfullscreen></iframe></div></div><br/><br/><h3>Exploration vs. Exploitation</h3><br/>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.<br/><strong>Takeaway</strong>It'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.<br/><div style="max-width:854px"><div style="position:relative;height:0;padding-bottom:56.25%"><iframe src="https://embed.ted.com/talks/knut_haanaes_two_reasons_companies_fail_and_how_to_avoid_them" width="854" height="480" style="position:absolute;left:0;top:0;width:100%;height:100%" frameborder="0" scrolling="no" allowfullscreen></iframe></div></div><br/><br/><h3>Frugal Innovation</h3><br/>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.<br/><strong>Takeaway</strong>Don't fall into the trap that more employees, more funding, more something is all I need to get over the next hurdle.<br/><div style="max-width:854px"><div style="position:relative;height:0;padding-bottom:56.25%"><iframe src="https://embed.ted.com/talks/lang/en/navi_radjou_creative_problem_solving_in_the_face_of_extreme_limits" width="854" height="480" style="position:absolute;left:0;top:0;width:100%;height:100%" frameborder="0" scrolling="no" allowfullscreen></iframe></div></div><br/><br/>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.Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-55025247704197414442017-08-20T16:31:00.000-07:002019-12-09T09:16:43.170-08:00Troubling Post about Parents and Kids Having Phones<section>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: <a href="https://www.theatlantic.com/magazine/archive/2017/09/has-the-smartphone-destroyed-a-generation/534198/">https://www.theatlantic.com/magazine/archive/2017/09/has-the-smartphone-destroyed-a-generation/534198/</a><br/><h1>Have Smartphones Destroyed a Generation?</h1><br/>Below are a few quotes that really jumped out at me.<br/><blockquote>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.</blockquote><br/></section><section><br/><blockquote>There’s not a single exception. All screen activities are linked to less happiness, and all nonscreen activities are linked to more happiness.</blockquote><br/></section><br/><blockquote>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.</blockquote><br/> <br/><blockquote>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.</blockquote><br/> <br/><blockquote>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.</blockquote><br/><h1>And What to Do</h1><br/>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.<br/><blockquote>Even Steve Jobs limited his kids’ use of the devices he brought into the world.</blockquote><br/> Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-89934339729394268412017-08-05T15:39:00.000-07:002019-12-09T09:16:43.090-08:00Debugging Dependencies of Django Project in EclipseThis 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.<br/><br/>It was straightforward once I found the right advice.<br/><br/>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.<br/><h2>#Step 1. Remove the dependencies files from the virtualenv</h2><br/>This works for mac and uninstalls files that might have spaces in them too<br/><pre class="lang-py prettyprint prettyprinted"><code><span class="pln">python setup</span><span class="pun">.</span><span class="pln">py install </span><span class="pun">--</span><span class="pln">record files</span><span class="pun">.</span><span class="pln">txt<br/></span><span class="com"># inspect files.txt to make sure it looks ok. Then:</span><span class="pln"><br/>tr </span><span class="str">'\n'</span> <span class="str">'\0'</span> <span class="pun"><</span><span class="pln"> files</span><span class="pun">.</span><span class="pln">txt </span><span class="pun">|</span><span class="pln"> xargs </span><span class="pun">-</span><span class="lit">0</span><span class="pln"> sudo rm </span><span class="pun">-</span><span class="pln">f </span><span class="pun">--</span></code></pre><br/>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<br/><br/> <br/><h2>#Step 2. Add the source folder as an external build dependency on the Python Interpreter Path</h2><br/><a href="http://entzeroth.com/wp-content/uploads/2017/08/Screen-Shot-2017-08-05-at-11.32.37-AM.png"><img class="alignleft size-medium wp-image-385" src="http://entzeroth.com/wp-content/uploads/2017/08/Screen-Shot-2017-08-05-at-11.32.37-AM-300x197.png" alt="Add source folder to eclipse for debugging dependency" width="300" height="197" /></a><br/><br/> <br/><br/> <br/><br/> <br/><br/> <br/><br/> <br/><br/>Credit for this step goes to a small sentence buried here: <a href="https://lukeplant.me.uk/blog/posts/eclipse-pydev-and-virtualenv/">https://lukeplant.me.uk/blog/posts/eclipse-pydev-and-virtualenv/</a><br/><br/> <br/><br/>That's it. Restart your django server and set a breakpoint inside that internal dependency.<br/><br/>This will save you a ton of time vs. all those import pdb; pdb.set_trace() statements<br/><h2>Drawbacks</h2><br/>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.Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-69856246028245963642017-03-02T13:51:00.000-08:002019-12-09T09:16:43.012-08:00django manage.py show stacktraceThis is a quick one more to save me time than anything else.<br/><br/>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.<br/><br/>Use it like this:<br/><pre class="lang-py prettyprint prettyprinted"><code><span class="pun">python manage.py <methodname> --</span><span class="pln">traceback</span></code></pre>Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-1412205430515647522016-08-17T19:13:00.000-07:002019-12-09T09:16:42.933-08:00DIY: Fall off the bone BBQ Ribs in 2 hoursMy 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 <a href="https://q39kc.com/">great BBQ place</a> that I don't order ribs because I always wish I was eating my own!<br/><br/>Here's what you need:<br/><ul><br/> <li>Heavy duty aluminum foil. As good and strong as you can find. I buy mine at costco.</li><br/> <li>Soy Sauce</li><br/> <li>Liquid Smoke ( Your favorite flavor)</li><br/> <li>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</li><br/> <li>A large tray for carrying the ribs around and working on them during cooking.</li><br/> <li>BBQ sauce - Know your audience. More on this later.</li><br/> <li>Spices ( Optional if you buy pre-rubbed ribs ).</li><br/></ul><br/>Here's what you do:<br/><ul><br/> <li>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.</li><br/> <li>Take everything down by your grill and fire the grill up hot enough to sear. I usually go to 500 degrees.</li><br/> <li>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.</li><br/> <li>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.</li><br/> <li>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.</li><br/> <li>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.</li><br/> <li>Final step, cut them with kitchen scissors! Using a knife can pull the meat off the bone.</li><br/></ul><br/>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.<br/><br/>If I've forwarded this recipe and you've got questions, let me know.<br/><br/>Happy grilling!<br/><br/>-Keith<br/><br/> Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-87737432980528949872016-06-14T17:08:00.000-07:002019-12-09T09:16:42.854-08:00Download Latest iTunes Reviews with a Quick Python ScriptEver 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?<br/><br/>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.<br/><br/>It's super simple once you know the format to start fetching your reviews and doing whatever you want with them programmatically.<br/><h2>How to Download Latest iTunes Reviews</h2><br/>1. Find your app's id by looking at the url to your app on itunes.<br/><br/>2. Construct the url to your RSS feed by replacing the <id> with your id (just the number part).<br/><pre>https://itunes.apple.com/rss/customerreviews/id=<app-id-goes-here>/json</pre><br/>3. Start writing code to do whatever you want with reviews<br/><h2>A Quick Python Demo</h2><br/>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.<br/><pre>import json<br/>import requests<br/><br/>resp = requests.get('https://itunes.apple.com/rss/customerreviews/id=<app-id-goes-here>/json')<br/>itunesrssjson = json.loads( resp.content)<br/><br/>for entry in itunesrssjson['feed']['entry']:<br/> print "{1}".format( entry.get("im:rating").get("label"), \<br/> entry.get('content').get('label'))</pre><br/>Let's say you only want to look at 5 star reviews. Just add a quick little if statement in there.<br/><pre>for entry in itunesrssjson['feed']['entry']:<br/> if entry.get('content') and entry.get("im:rating").get("label") in ["5"]:<br/> print "{1}".format( entry.get("im:rating").get("label"), \<br/> entry.get('content').get('label'))</pre><br/> <br/><br/>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.<br/><br/>Have fun getting your reviews the quick and easy way.Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-12217751866262959652016-04-04T13:38:00.000-07:002019-12-09T09:16:42.697-08:00Family Friendly Internet: Free Tips for a Safer HomeThese are the basic steps I have taken to getting family friendly internet and device usage in my home. If you're concerned that your kids are seeing things they shouldn't or are tired of stumbling onto things yourself, these steps make it much less likely that anyones eyes will accidentally fall onto some of the terrible content that's online.<br/><h2>What made me put these steps for Family Friendly Internet together?</h2><br/>I was trying to purchase school pictures this morning and mistyped the url from the form by one character. You know what happens next; bam...ton's of sinful garbage I don't want to see spewed into my face during the morning coffee. It's not the first time it's happened but I was finally motivated to try and make it the last time that garbage comes up by accident.<br/><h2>My Strategy</h2><br/>I do not believe it's completely possible to block all of the filth. If an intelligent person knows what they are doing, there are many ways to trick filters and other systems into letting you find content if you would like. However, in this case, I have made it more difficult to either accidentally or intentionally find the garbage on my home network.<br/><br/>This only supplements the need for a strong policy on how and where devices can be used in the home. In a world with so many social sites full of user uploaded content, at some point, anyone who wants to find the filth is going to find it.<br/><ul style="padding-left: 30px;"><br/> <li>Block Content at the Router</li><br/> <li>Limit Device Usage to Open Rooms</li><br/></ul><br/><h2>How to Block Content at the Router</h2><br/>Implement a content filtering policy at the router level so that every device connected to your network will have it's content filtered. Software filtering is too big of a pain since it requires an installation of every device.<br/><h4>Implement Basic Content Filtering</h4><br/>I use <a href="https://www.opendns.com/setupguide/?url=familyshield" target="_blank">OpenDNS Family Shield</a> to setup my router. It's very straightforward and there are really only two steps to getting free basic family filtering on your router. Once this is setup, any device that connects to the wireless network will by default have a family friendly internet setup that can only connect to web domains that are considered appropriate for a family audience.<br/><p style="padding-left: 30px;">Point the router DNS static IP addresses to the OpenDNS family friendly filter IP Addresses:</p><br/><br/><pre style="padding-left: 60px;">208.67.222.123<br/>208.67.220.123</pre><br/><p style="padding-left: 30px;">Once the router is updated, restart your devices so that they will pick up the new DNS settings from the router.</p><br/><br/><pre style="padding-left: 30px;">Test after restarting using the link at the bottom of the <a href="https://www.opendns.com/setupguide/?url=familyshield" target="_blank">OpenDNS Family Shield</a> web page.</pre><br/><p style="padding-left: 30px;">Note that this only "suggests" to every device on the network what DNS servers to use and that an adept user can override this from each device.</p><br/><br/><h4>Limitations With Most Routers</h4><br/>Even after telling the router to use OpenDNS, safe sites like Google will still be able to find all the garbage. While only the cached content will be there, using the safe search option on each search engine should keep the filth away. In order to keep the garbage out of search engines, the average router cannot be setup to always force a Safe Search!<br/><br/>I am currently shopping for routers that can provide this level filtering. I will update this post once I've found and tested a better router. A koala router that was on kickstarter recently appears to be the best right now.<br/><h2>Restrict Device Usage</h2><br/>Finally, discourage or eliminate usage of devices behind closed doors. No matter how good the routers get, there will be ways for smart kids to get past them. Be especially careful with devices that have access to the mobile network since none of these steps will help with that problem.<br/><br/>In our home, we don't allow devices into the bedrooms or bathrooms and when the kids are old enough for their own phones, they will stay downstairs as well.<br/><br/> <br/><br/> <br/><h2></h2>Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-21979360661333770202016-03-23T21:56:00.000-07:002019-12-09T09:16:42.610-08:00No Scan Options: Scan from an HP OfficeJet to a MacI was getting "No Scan Options" when pressing the scan button on the machine. For awhile I thought the scanner was broken but I finally figured out how to scan from the HP OfficeJet to my Mac.<br/><h2>Why "No Scan Options"</h2><br/>The root of the problem is that you have to issue the command to scan from the computer and not from the scanner as with many other machines.<br/><br/>Once I tried things from the mac, it was really quite easy to get the HP OfficeJet to scan both from the document feeder and the single page glass scanner onto my mac.<br/><h2>How to scan from an HP OfficeJet to a Mac</h2><br/><span style="text-decoration: underline;">Step 1.</span> Plug in the usb cord from the printer to your mac and make sure all of the latest software is installed.<br/><br/><span style="text-decoration: underline;">Step 2.</span> Open System Preferences from Spotlight and navigate into "Printers and Scanners". If you are new to mac, to open Spotlight either use command+space or click on the magnifying glass in the top right. Then search for anything. For more on using spotlight, visit this page from apple: <a href="https://support.apple.com/en-us/HT204014">https://support.apple.com/en-us/HT204014</a>.<br/><br/><span style="text-decoration: underline;">Step 3.</span> Select the HP OfficeJet you are trying to scan from. If you don't see your printer, then go back and make sure that the printer is on, it is plugged in to your computer and the software drivers have all been installed.<br/><br/><span style="text-decoration: underline;">Step 4.</span> From the scan tab, choose to "Open Scanner..."<br/><br/><a href="http://entzeroth.com/wp-content/uploads/2016/03/Screen-Shot-2016-03-23-at-5.30.12-PM.png" rel="attachment wp-att-318"><img class="size-medium wp-image-318 alignnone" src="http://entzeroth.com/wp-content/uploads/2016/03/Screen-Shot-2016-03-23-at-5.30.12-PM-300x200.png" alt="Screen Shot 2016-03-23 at 5.30.12 PM" width="300" height="200" /></a><br/><br/> <br/><br/><span style="text-decoration: underline;">Step 5.</span> Scan away. Notice the option to use the document feeder or scan from the screen.<br/><a href="http://entzeroth.com/wp-content/uploads/2016/03/Screen-Shot-2016-03-23-at-5.30.40-PM.png" rel="attachment wp-att-319"><img class="size-medium wp-image-319 alignnone" src="http://entzeroth.com/wp-content/uploads/2016/03/Screen-Shot-2016-03-23-at-5.30.40-PM-300x177.png" alt="Screen Shot 2016-03-23 at 5.30.40 PM" width="300" height="177" /></a><br/><br/> <br/><h2>Enjoy your scanner</h2><br/>Now that I know how to scan from my HP OfficeJet, I am much more effective at my home office.Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-51155907620127122962016-01-31T02:39:00.000-08:002019-12-09T09:16:42.531-08:00DGF510SBP-D Dyna Glo 5 Burner ReviewMy old grill had the last two of its burners finally fail yesterday so I went out today and picked up the Dyna Glow DGF510SBP-D 5 Burner as a replacement.<br/><br/>I got the whole thing assembled in a little over an hour and didn't have anyone to help me out. I was also watching all my kids at the time so you can probably get it put together in less time.<br/><h2><strong>Why I chose the DGF510SBP-D from Dyna Glo?</strong></h2><br/>I was looking for an economical grill but I am also picky in the features and like the grill to last. I got my last grill which I used all the time for $160 and it made it ten years. I bought the DGF510SBP-D grill at Home Depot today for $199. I think this one will make it 5 or more years too.<br/><br/>Here are a few of the main reasons I decided to go with this grill.<br/><ul><br/> <li>There is an igniter for each of the five burners. The igniter tends to be one of the first things to stop working and having a handful of igniters instead of one makes it easy to know this common failure is unlikely why I will need to replace this grill.</li><br/> <li>The number of burners and the BTUs that they put out was a step above anything else I was looking at in the price range I was interested in under $300. It delivered. A few minutes after kicking all five burners on to high, my new Dyna Glo is glowing hot at over 700 degrees!</li><br/> <li>The size of the grilling surface is great. While it wasn't the absolute largest in terms of size that I found, it was very competitive. I cooked my first meal on it tonight and used 3 burners for a hot side with plenty of room over the 2 burners I left off for indirect cooking.</li><br/> <li>The drip pan. The entire pan is easy to remove. My last grill was impossible to remove the area where all the drippings go. Not the little cup that collects drippings so you can add some to your sauce....the whole thing. My old grill ended up failing because the drippings built up and caught fire eventually wearing out the burner. It was just too difficult to clean it so I ended up only cleaning it two times in ten years on my old grill. The drip pan on this guy just slides right out. I've got no excuse not to clean it every season.</li><br/></ul><br/><h2><strong>Issues</strong></h2><br/>Pre-purchase one of my hesitancies was that I had never heard of the company. But then on a call with Home Depot they told me Brinkman had gone out of business so I decided this meant less to me than making sure the features were right.<br/><br/>The only issue I encountered was similar to a video I had seen while researching the grill. My side burner wouldn't ignite right out of the box. I ended up just bending the ignition piece a little bit closer to where the gas comes out and it started working.<br/><br/><iframe src="https://www.youtube.com/embed/jy_QPiZCClY" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe><br/><h2><strong>So Far So Good</strong></h2><br/>After bringing home the grill, unwrapping the box, assembling, and getting great results on the first meal, I would definitely recommend this grill to anyone looking to squeeze the most out of their dollar. There are definitely better grills out there, but I think you'll have trouble finding one better in this price range.Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-79437164939586328952016-01-08T17:03:00.000-08:002019-12-09T09:16:42.452-08:00Android ISO8601: How to Convert a Date to call APIsI have needed to get a date in java converted to ISO8601 on android for awhile and struggled through a few different issues on my way to a working solution.<br/><br/>Since it's an app that I'm asking people to download, I don't like to increase the download size by even a few MBs. So even though <a href="http://joda-time.sourceforge.net/" target="_blank">Joda Time</a> is great, I need a different way. In researching, I had to piecemeal a solution from various blogs and stackoverflow posts.<br/><br/>If you've ever been wondering,<br/>- Does android have a standard way to convert to iso8601 format?<br/>- Why isn't it easier to get a UTC date that follows iso8601 so I can just call the APIs?<br/>Then hopefully I can save you some time.<br/><h2>Android ISO8601: UTC SimpleDateFormat</h2><br/>The following is a straightforward way to get a UTC ISO8601 string of a date object without using any external libraries.<br/><pre class="lang-java prettyprint prettyprinted"><code><br/>SimpleDateFormat ISO8601DATETIMEFORMAT = new SimpleDateFormat("yyyy/MM/dd 'T'HH:mmZ");<br/>TimeZone tz = TimeZone.getTimeZone("UTC");<br/>ISO8601DATETIMEFORMAT.setTimeZone(tz);<br/>String isoDate = ISO8601DATETIMEFORMAT.format( dtobject);<br/></code></pre><br/><h2>Android ISO8601: APIs Don't like Arabic Chars</h2><br/>But wait, sometimes this still sends over Arabic characters like:<br/><pre><code>\u0662\u0660\u0661\u0666-\u0660\u0662-\u0662\u0665T\u0660\u0664:\u0665\u0661Z </code></pre><br/>We don't want that. The solution turns out to be fairly simple. Make sure that the SimpleDateFormat is always converting using the English language locale.<br/><br/><code>SimpleDateFormat ISO8601DATETIMEFORMAT = new SimpleDateFormat("yyyy/MM/dd 'T'HH:mmZ",<span style="color: red;">Locale.ENGLISH</span>);</code><br/><br/>**Credit goes to this <a href="http://stackoverflow.com/a/24255995/966122" target="_blank">StackOverflow Comment Suggesting Locale.English</a><br/><h2>Android ISO8601: A Convenience Class</h2><br/>To wrap it all up, here's a convenience method. It can be dropped in without adding any major overhead to your app in terms of size or performance.<br/><pre class="lang-java prettyprint prettyprinted"><code><br/>public class AndroidISO8601Util{</code><br/><br/> static SimpleDateFormat ISO8601DATETIMEFORMAT = new SimpleDateFormat("yyyy/MM/dd 'T'HH:mmZ",Local.ENGLISH);<br/><br/> //Note: this method is not thread safe because SimpleDateFormat is not thread safe<br/> public static String getISO8601forAPI( Date dt){<br/> TimeZone tz = TimeZone.getTimeZone("UTC");<br/> ISO8601DATETIMEFORMAT.setTimeZone(tz);<br/> return ISO8601DATETIMEFORMAT.format( dtobject);<br/> }<br/>}<br/></pre>Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com1tag:blogger.com,1999:blog-2736026114961441747.post-39167141772877917082016-01-03T04:29:00.000-08:002019-12-09T09:16:42.372-08:00Export Unsigned APK with Android StudioFor years I developed with eclipse and used the Android Tools option to Export Unsigned APKs.<br/><br/>[caption id="attachment_284" align="alignleft" width="300"]<a href="http://entzeroth.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-02-at-10.48.37-PM.png" rel="attachment wp-att-284"><img class="size-medium wp-image-284" src="http://entzeroth.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-02-at-10.48.37-PM-300x140.png" alt="Eclipse Android Tools had an easy option to Export an Unsigned APK" width="300" height="140" /></a> Eclipse Android Tools had an easy option to Export an Unsigned APK[/caption]<br/><br/>I could then take the unsigned .apk file and upload it to Amazon's developer console.<br/><br/>This was one of the last items I was still using eclipse for after over a year of Android Studio development. I finally spent some time figuring out how to make the same thing happen without needing eclipse any longer. I found many of the questions and answers on stackoverflow to be confusing and inaccurate. For example, many seem to think that using the debug apk is the same as using the unsigned release apk...which is not accurate.<br/><br/>This is the comment that ended up helping me get it right: <a href="http://stackoverflow.com/a/32202274/966122">http://stackoverflow.com/a/32202274/966122</a><br/><h2>Here's How to Export Unsigned APK in Android Studio</h2><br/>1. Edit the gradle build file for the project to specify an unsigned release signing.<br/><code><br/>buildTypes {<br/>release {<br/>minifyEnabled true<br/>proguardFiles 'proguard.cfg'<br/>}</code><br/><br/>releaseUnsigned.initWith(buildTypes.release)<br/>releaseUnsigned {<br/>signingConfig null<br/>}<br/><br/>}<br/><br/>2. Generate Signed Apk using the releaseUnsigned Build Type. This is on the 3rd or 4th screen in the flow of version 1.4 of Android Studio.<br/><br/>[caption id="attachment_286" align="alignleft" width="300"]<a href="http://entzeroth.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-03-at-12.23.51-AM.png" rel="attachment wp-att-286"><img class="size-medium wp-image-286" src="http://entzeroth.com/wp-content/uploads/2016/01/Screen-Shot-2016-01-03-at-12.23.51-AM-300x189.png" alt="Release unsigned apk in android studio" width="300" height="189" /></a> Release unsigned apk in android studio[/caption]<br/><h2>Enjoy the Unsigned APK</h2><br/>Once the build finishes, there will be an unsigned apk in the location you specified. You can then upload that apk to an emulator or to Amazon to start the process of letting amazon sign the app.Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-15417886596191698532015-12-12T17:28:00.000-08:002019-12-09T09:16:42.293-08:00Fix: part of the process of setting a preferred domain is to verify
that you own errorI was trying to set naked domain as preferred domain in google webmaster tools and it showed an error “Part of the process of setting a preferred domain is to verify that you own http://example.com/. Please verify http://example.com/.”<br/><br/>If you're not familiar with the terminology, a naked domain is the domain name without anything preceding it. So no www., blog. or anything. Just plain example.com is a naked domain. I prefer this setup to the www. prefix when I can because it makes urls shorter and easier to read. There's still debate about it's impact on SEO.<br/><h2>Fix the "part of the process of setting a preferred domain is to verify that you own" warning</h2><br/>First, create both the www.example.com and example.com versions of your site in google webmaster tools. This is exactly the step I had skipped which led to the confusing error.<br/><br/>Make sure that both versions show up as verified sites in google.<br/><br/>Then, navigate into the www.example.com version of the site and change the site's preferred domain to be example.com.<br/><br/>[caption id="attachment_274" align="alignleft" width="300"]<a href="http://entzeroth.com/wp-content/uploads/2015/12/Screen-Shot-2015-12-12-at-12.31.33-PM.png" rel="attachment wp-att-274"><img class="size-medium wp-image-274" src="http://entzeroth.com/wp-content/uploads/2015/12/Screen-Shot-2015-12-12-at-12.31.33-PM-300x241.png" alt="Add both sites to Set Naked Domain as Preferred Domain" width="300" height="241" /></a> See that both versions of site are verified[/caption]<br/><br/>From there, things are straightforward and you shouldn't see any errors.<br/><br/>Just go into each sites site settings. Tap the site name, then Settings->Site Settings in the top right and choose to have the preferred site domain be naked domain.<br/><h2>More Information</h2><br/>For more information and tips about the whole process of setting your preferred site, there are many good detailed posts out there. For example, this <a href="http://www.shoutmeloud.com/set-your-preferred-domain-settings-using-google-webmaster-tool.html">one</a>. However, I couldn't find a clear answer to the problem I was running into while getting the "part of the process of setting a preferred domain is to verify that you own" error which led to this post.Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-60314329429067367752015-12-11T08:32:00.000-08:002019-12-09T09:16:42.160-08:00Untangled Christmas Lights: How to avoid detanglingIf you use mini-lights and mini-light icicles, use zip ties to make sure you have untangled Christmas lights when they come out of the box next year.<br/><br/>I love the "Little knot here" scene from Christmas Vacation where he just hands Russ a huge ball of tangled lights.<br/><br/><iframe src="https://www.youtube.com/embed/uUQeQ7E8hOU" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe><br/><h2>Storage Methods I've Tried</h2><br/>I am talking about strands of 200+ outdoor mini-lights. If you have the huge kind that line the roofline, I would use the method on the following post for storing with <a href="http://porch.com/advice/store-holiday-lights/">cardboard for large C7 or C9 bulb strings</a>. For shorter strands like most indoor ones, I like <a href="http://lifeyourway.net/quick-tip-packing-away-christmas-lights/">this method to pack short indoor mini lights.</a><br/><br/>I've tried using the cardboard from inside paper towel rolls, wrapping into a ball, coat hangers and for awhile I liked using the plastic bags from the grocery store was my favorite method until I discovered zip ties.<br/><h2>Use Zip Ties for Untangled Christmas Lights</h2><br/>Here's all you need to do. Wrap the lights around your elbow by making a hook around your thumb similar to how most people wrap up an extension cord. Once you've got the strand wrapped up, snap a zip tie around it. A second zip tie on the other side makes it nearly impossible to get a tangle. I normally just do a single zip tie and place things into the storage bin neatly.<br/><br/>So that's the easiest way to have untangled christmas lights when you go to put them up next year.<br/><br/>Here's what a strand that's ready to go in the storage bin looks like:<br/><br/><a href="http://entzeroth.com/wp-content/uploads/2015/12/ziptiedlights.jpg" rel="attachment wp-att-264"><img class="alignleft size-large wp-image-264" src="http://entzeroth.com/wp-content/uploads/2015/12/ziptiedlights-1024x759.jpg" alt="Untangled Christmas Lights using a zip tie" width="660" height="489" /></a><br/><br/> <br/><h2>Advice for Next Year</h2><br/>To keep from getting tangles, I take the zip tied strands out and set them next to where I plan to use them. Then I only snip the zip tie when I am going to use that strand of lights.<br/><br/>If you like my tip for having tangle free Christmas lights, check out these links to advice for making it easy to put them up next year:<br/><br/><a href="http://entzeroth.com/putting-up-christmas-lights-time-saving-tips/">Putting Up Christmas Lights: 3 Tips to Save Time</a><br/><br/><a href="http://entzeroth.com/hang-christmas-lights-in-tall-trees/">Hang Christmas Lights In Outdoor Trees</a>Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com2tag:blogger.com,1999:blog-2736026114961441747.post-62702021008835391862015-12-10T04:04:00.000-08:002019-12-09T09:16:41.788-08:00Hang Christmas Lights In Outdoor TreesOur neighborhood has professionals come in and install lights in the trees on the way in and out of the subdivision and they look fantastic. My wife wanted the same thing at our house but I didn't know how to hang Christmas lights that high in the trees. I also didn't want to pay the steep price for the pros. I've given other advice on how to make the whole job easier at <a href="http://boywonder.xyz/around-the-house/3-tips-for-pro-christmas-lights-in-the-yard/">Make Putting Christmas Lights Up Easy</a>. Since I've had others that live near me ask me quite a few times how I hang Christmas lights up in the trees, I thought it's worth sharing.<br/><br/>Here's what one of our big trees looks like this year:<br/><br/><a href="http://entzeroth.com/wp-content/uploads/2015/12/BigTree.png" rel="attachment wp-att-232"><img class="alignleft size-large wp-image-232" src="http://entzeroth.com/wp-content/uploads/2015/12/BigTree-955x1024.png" alt="Hang Christmas Lights in a Big Tree" width="660" height="708" /></a><br/><h2>Hang Christmas Lights in Your Trees</h2><br/>Here's how I did it. We got a ton of lights from Target in and after Christmas sale. These trees use up the lights really quickly. For the tree in that picture, I used 4 strands of 200 to make 800 lights. Only 200 are down on the base.<br/><br/>I made a basic tool from a <strong>$15 pole extension at Lowe's, the top of a wire closet hanger, and some duck tape</strong>. This thing doesn't require any instructions. I have an 8 foot step ladder, am 6 foot tall, and with this extension tool I can get the lights up about 30 feet into the tree.<br/><br/><a href="http://entzeroth.com/wp-content/uploads/2015/12/ChristmasLightsPole.png"><img class="alignleft wp-image-141" src="http://entzeroth.com/wp-content/uploads/2015/12/ChristmasLightsPole.png" alt="ChristmasLightsPole" width="480" height="480" /></a><br/><h2>The Story Behind the Tool</h2><br/>I grew up with my dad climbing the step ladder and using the neighbor's limb cutting extension to get the lights up. Repurposing the tree trimming tool was cumbersome and he even cut a strand of lights at one point. The tool also didn't extend far enough to get a professional look.<br/><br/>Since I couldn't recall what to do from childhood, I just went up to the local hardware store and started looking around for things that might work. The window washer's extension pole was a good price and looked like it would work so I grabbed it.<br/><br/><a href="http://entzeroth.com/wp-content/uploads/2015/12/BigTrees.png" rel="attachment wp-att-233"><img class="alignleft size-large wp-image-233" src="http://entzeroth.com/wp-content/uploads/2015/12/BigTrees-1024x592.png" alt="Hang Christmas Lights in Trees" width="660" height="382" /></a><br/><br/><script type="text/javascript">// <![CDATA[<br/>amzn_assoc_placement = "adunit0"; amzn_assoc_tracking_id = "boywon-20"; amzn_assoc_ad_mode = "manual"; amzn_assoc_ad_type = "smart"; amzn_assoc_marketplace = "amazon"; amzn_assoc_region = "US"; amzn_assoc_linkid = "3919c98642dd0d06cfde8979c8c80cd0"; amzn_assoc_asins = "B00004YUPO,B0181TF236,B000VB2AP6,B000C4IZN8";<br/>// ]]></script><br/><script src="//z-na.amazon-adsystem.com/widgets/onejs?MarketPlace=US"></script>Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com1tag:blogger.com,1999:blog-2736026114961441747.post-15259186851398694762015-12-09T16:13:00.000-08:002019-12-09T09:16:42.000-08:00cURL Example: Post a JSON File with Basic AuthThe web was missing a clear example that showed how to POST a JSON file with Basic Auth. I love using cURL for it's simplicity when trying out api's and other services that I might want to use and have spent a decent amount of time figuring this particular usage out more than once. If nothing else, I'll be helping myself next time.<br/><h2>cURL JSON + Basic Auth Samples</h2><br/>In this case, I have a file locally that's contents are the JSON which I want to be the payload of the POST. Note that I do not want to POST the file as with a multi-part form upload.<br/><blockquote><br/><pre class="lang-xml prettyprint prettyprinted"><code><span class="pln">curl -X POST -d @pathtofile https://user:pass@www.samplesite.com<br/></span></code><br/></pre><br/></blockquote><br/>Depending on the service you are calling, you might also need to set the Content-Type and encoding.<br/><blockquote><br/><pre class="lang-xml prettyprint prettyprinted"><code><span class="pln">curl --header "Content-Type: application/json;charset=UTF-8" -X POST -d @pathtofile https://user:pass@www.samplesite.com<br/></span></code></pre><br/></blockquote><br/>Finally, for troubleshooting, I've found it useful to either use the verbose -v for inspecting headers or --trace-ascii /dev/stdout for seeing the content of the request<br/><blockquote><br/><pre class="lang-xml prettyprint prettyprinted"><code><span class="pln">curl -X POST -d @pathtofile https://user:pass@www.samplesite.com -v</span></code></pre><br/><pre class="lang-xml prettyprint prettyprinted"><code><span class="pln">curl -X POST -d @pathtofile https://user:pass@www.samplesite.com </span></code><code><span class="pln">--trace-ascii /dev/stdout<br/></span></code></pre><br/></blockquote><br/><h2>Sample Output of --trace-ascii /dev/stdout command</h2><br/>== Info: Trying aa.xx.dd.bb...<br/>== Info: Connected to xyz.abcd.com (aa.xx.dd.bb) port 443 (#0)<br/>== Info: TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256<br/>== Info: Server certificate: xyz.abcd.com<br/>== Info: Server auth using Basic with user 'admin'<br/>=> Send header, 241 bytes (0xf1)<br/>0000: POST /demo HTTP/1.1<br/>0031: Host: xyz.abcd.com<br/>004f: Authorization: Basic Z3JlZW5oYXRhZG1pbjoxMjNBZG1pbiE=<br/>0086: User-Agent: curl/7.43.0<br/>009f: Accept: */*<br/>00ac: Content-Type: application/json;charset=UTF-8<br/>00da: Content-Length: 596<br/>00ef:<br/>=> Send data, 596 bytes (0x254)<br/>0000: { "Students": [{ "MIS_ID": 201073, "Forename": "Test", "Surname<br/>0040: ": "Tester", "Email": "xyz.abcd@gmail.com", "YearGroup": "6<br/>0080: ", "Gender": "M", "Password": "Ab@12" }, { "MIS_ID": 161201, "Fo<br/>00c0: rename": "Tester", "Surname": "Test", "Email": "xyz.abcd@gm<br/>0100: ail.com", "YearGroup": "6", "Gender": "F", "Password": "Ab@12<br/>0140: " }], "Staff": [{ "TeacherID": 220380, "Title": "Mrs", "Forename<br/>0180: ": "Test", "Surname": "Tester", "Email": "xyz.abcd@gmail.<br/>01c0: com" }], "Groups": [{ "GroupID": 63, "GroupName": "6A Science", "<br/>0200: GroupType": "Class", "GroupDescription": "6A Science", "PrimaryS<br/>0240: taffId": 220380 }] }<br/>== Info: upload completely sent off: 596 out of 596 bytes<br/><= Recv header, 17 bytes (0x11)<br/>0000: HTTP/1.1 200 OK<br/><= Recv header, 52 bytes (0x34)<br/>0000: Cache-Control: no-cache, no-store, must-revalidate<br/><= Recv header, 47 bytes (0x2f)<br/>0000: Content-Type: application/json; charset=utf-8<br/><= Recv header, 37 bytes (0x25)<br/>0000: Date: Wed, 09 Dec 2015 16:02:52 GMT<br/><= Recv header, 40 bytes (0x28)<br/>0000: Expires: Thu, 19 Jun 1980 19:19:19 GMT<br/><= Recv header, 18 bytes (0x12)<br/>0000: Pragma: no-cache<br/><= Recv header, 15 bytes (0xf)<br/>0000: Server: nginx<br/><= Recv header, 45 bytes (0x2d)<br/>0000: Strict-Transport-Security: max-age=31536000<br/><= Recv header, 23 bytes (0x17)<br/>0000: Vary: Accept-Encoding<br/><= Recv header, 20 bytes (0x14)<br/>0000: Content-Length: 25<br/><= Recv header, 24 bytes (0x18)<br/>0000: Connection: keep-alive<br/><= Recv header, 2 bytes (0x2)<br/>0000:<br/><= Recv data, 25 bytes (0x19)<br/>0000: {"i":"4T7hz8tz8KU7ms2rz"}<br/>== Info: Connection #0 to host xyz.abcd.com left intact<br/>{"i":"4T7hz8tz8KU7ms2rz"}%Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0tag:blogger.com,1999:blog-2736026114961441747.post-71678573394022414192015-12-09T16:12:00.000-08:002019-12-09T09:16:42.081-08:00Access ENOM DNS panel for Google Apps domainI was unable to access the ENOM DNS console for a domain I bought through google years ago when they were still giving away google apps for free.<br/><br/>I was beating myself up for not being able to figure this out and the advanced DNS settings that used to be in Google Apps admin console have since been removed.<br/><br/>A quick call to enom ( after a not so quick wait time) got me exactly what I wish I had been able to find on the interwebs. If you forgot your password or just cannot access enom DNS control panel from Google Apps dashboard, this should help.<br/><h2>How to Access ENOM DNS Console</h2><br/>If you're trying to get in to change your nameservers, it's easy.<br/><ol><br/> <li>Visit https://access.enom.com</li><br/> <li>Put your domain name and any password in along with the captcha.Get the password from your email.</li><br/> <li>Change those nameservers or A records. If you use google apps with the domain, only change the A records or the email and other functions of google apps will break. Hopefully your hosting provider makes it easy to find the correct ip address to point the A record towards.</li><br/></ol><br/><a href="http://entzeroth.com/wp-content/uploads/2015/12/Screen-Shot-2015-12-09-at-11.19.37-AM.png"><img class="alignleft wp-image-173" src="http://entzeroth.com/wp-content/uploads/2015/12/Screen-Shot-2015-12-09-at-11.19.37-AM.png" alt="access enom DNS panel for google apps domain" width="476" height="331" /></a><br/><br/> Keith Entzerothhttp://www.blogger.com/profile/12435711644232544073noreply@blogger.com0