5 Reasons to choose Python for your first programming language

5 Reasons to choose Python for your first programming language

Aspiring programmers often ask the question, “What language should I begin with.”

The first answer is: the first programming language you learn doesn’t matter much. Learn the principles. If you keep programming, you’ll learn more languages anyway.

But the question returns: “I still need to pick a language to begin learning the principles.”

This is where it gets messy. The recommendations come flooding in:

  • C
  • C++
  • C#
  • JavaScript
  • Java
  • Python

Each has its advantages.

Among these Python is a standout, for a few key reasons.

Why Python?

1. Python is fun.

Python is a relatively efficient language, requiring fewer lines of code to produce results.

2. Python is easy to set up.

Some languages, such as Java or C#, have much higher setup and maintenance overhead.

3. Python is not going away anytime soon.

In fact, Python has become the most frequently used teaching language at major universities.

4. Python is a tool of choice for doing some very big things.

For instance: YouTube, Google, Instagram, Pinterest, Quora, Reddit, Dropbox, Civilization IV, and more. It’s also widely used for penetration testingdata analysis, scientific computing, and more.

5. Python jobs pay well, and python programmers are in high demand.

Yi-Jirr Chen has gathered a number of relevant statistics in an excellent article comparing benefits of several languages here.

Ready to get Started?

For all of the above reasons, I’ve elected to add Python to my own repertoire, and it’s what I’ll be using to teach Intro to Computer Programming in our Information Systems program at Oklahoma Wesleyan University.

If you’d like to learn more and get started, here are some resources, below.

For Further Reading

Python is Now the Most Popular Introductory Teaching Language at Top U.S. Universities – ACM.org

If I had to choose between learning Java and Python, what should I choose to learn first? – Quora?

What Programming Language Should a Beginner Learn in 2016? – CodeMentor

Which Programming Language Should I Learn First? – Lifehacker

Courses

Complete Python Bootcamp – Udemy

Learning Python for Data Analysis – Udemy

Python for Programmers – Udemy

Python at Cybrary

Apps for Learning

Learn Python by Sololearn – iOS App

 

 

Why you should be more excited about your local school bond than about Trump vs. Clinton

Why you should be more excited about your local school bond than about Trump vs. Clinton

A great piece by a friend and fellow Bartian.

 

joshuamcnall.com

This week, my fellow citizens in small-town (Bartlesville) Oklahoma, go to vote.

Yet the choice is not about Republicans or Democrats.

It is a bond issue that will attempt to shield our local schools from crippling budget cuts.

asvcwp66

Turnout is expected to be very low.

And that’s a shame, because there are lots of reasons to be FAR more excited about a local school bond, than there are to excited about either Donald Trump or Hillary Clinton.

Here are five:

  1. BECAUSE TRUMP IS GOING LOSE, NO MATTER HOW MANY FACEBOOK POSTS YOU WRITE.

He just is—and for lots of reasons. But mostly because we haven’t seen this kind of mind-numbing self-sabotage since Ryan Lochte called his mom from Rio. Given this, it would make more sense to direct your political passion to other votes at the state and local levels.

  1. BECAUSE UNLIKE THE PRESIDENTIAL RACE, THE MAIN OPTIONS DON’T FEEL LIKE A REQUEST…

View original post 356 more words

Poor Man’s Single-Cup Coffee

Poor Man’s Single-Cup Coffee

I’ve spent some time sorting through options for a great single cup of coffee.

In a pinch, I’ll drink a cup of Keurig coffee — or any coffee for that matter.

But I have a preference for options that meet the following criteria:

  • Allows me to brew an especially strong cup if I want it.
  • Produces a smooth, rich flavor.
  • Avoids creating unnecessary waste.
  • Costs less than buying boxes of Keurig refills.
  • Doesn’t require lots of cleanup afterward.

My quest has led me to two options, each with its own advantages.

1. Pour Over

Pour over need not be difficult or costly. I’m a fan of good flavor, not a slave to what’s fashionable or expensive.

So here are my favorite pour-over implements:

1a. The Hario V60 02 Coffee Plastic Dripper does a great job, doesn’t break when dropped, and costs approximately $8.00.

image

1b. Hario 02 100 Count Coffee Paper Filters, Natural — They’re inexpensive and work great.

image

1c. Bonavita Gooseneck Electric Kettle — Simply fantastic, works without a stove-top nearby, and perfectly useful for coffee, tea, hot cocoa, etc.

With these implements at hand, you’re free to choose your favorite brand of coffee.

These basic pour-over instructions work perfectly well:

  1. Heat water to between 190 to 205 degrees fahrenheit (just below boiling, or turn it off at the boil point and allow it to cool for a minute).
  2. Use approx. 2 TBSP of coffee grounds (more for a richer coffee flavor). (Grounds go in the filter, filter in the dripper, and dripper atop your favorite coffee mug.)
  3. Pour just enough heated water over the grounds to saturate them. Allow the grounds to soak in the hot water (“bloom”) for approx. 1 min. (Adjust blooming time as desired.)
  4. After grounds have bloomed, pour hot water over them, swirling from the center toward the outside edges, until the water starts rising above the level of the grounds.
  5. Pause and allow the water to flow through into the cup.
  6. Repeat until your cup is as full as you desire.
    • Takes approx. 5 minutes. Use this time to clear your mind, practice deep-breathing, think thoughts of gratitude, pray.
    • It’s super-easy to produce a fantastic half-cup if that’s all you need!
  7. Toss the filter and grounds.
  8. Store the dripper atop a small bowl.
  9. Enjoy!

It’s that easy. No need to get hung-up with nit-picky details. Just do it. Adjust your method as desired.

For those who want nit-picky directions — here’s a detailed run-down of eight (yes EIGHT) pour over methods for the Hario dripper.

2. Aeropress

If you like bold, rich, smooth flavor, the freedom to let your coffee grounds steep, french-press style, freedom from french-press grit, and minimal cleanup, the Aerobie Aeropress is a truly awesome device (take a moment to read the Amazon reviews). Costs approx. $30.

Aeropress how-to instructions:

  1. Heat your water to your desired temp. (I recommend approx. 190 to 205 degrees fahrenheit — or just a little below boiling.)
  2. I favor the inverted method, so invert the Aeropress by standing it on the plunger with the plunger just far enough inside the tube to create a tight seal. (See the video below.)
  3. Pour in 2-4 TBSP of coffee grounds (start with 3 TBSP, and adjust to taste).
  4. Place an Aeropress filter in the filter cover, and wet it with water so that it sticks to the cover.
  5. When the water reaches your desired temperature, pour into the tube.
  6. Stir for 10 seconds or so with the stirrer.
  7. Let the grounds steep in the hot water for one to five minutes (adjust to your desired flavor).
  8. Screw on the filter cover and filter.
  9. While still inverted, press down on the tube until just before the plunger begins pressing coffee through the filter.
  10. Turn the Aeropress over so that you can press the coffee into your mug.
  11. Gently press down on the plunger for 20-30 seconds (or so) until you press the grounds into a nice firm puck. (Don’t press too hard, or you’ll make it unnecessarily hard on yourself. Give it time, and it’ll do it!)
  12. Remove the filter. (Rinse and re-use if desired!)
  13. Press the puck of grounds into the trash.
  14. Wipe the plunger with a napkin or paper towel.
  15. Store the Aeropress for its next use.
  16. Enjoy a rich, flavorful cup of near-espresso-style coffee!

The following video does a great job of walking you through it.

That’s it.

Which is Better? Pour Over or Aeropress?

Both have their advantages.

When I’m in the mood for espresso, I favor the Aeropress.

When I’m in the mood for a nice flavorful cup of coffee, I favor pour over.

Do you have tips and recommendations for improving the pour over or Aeropress experience, please post them below!

WordPress.com Admin now in JavaScript

The WordPress.com development team has now moved development of the WordPress.com CMS admin to JavaScript.
Two articles to read:

Given the pervasiveness of WordPress and the size of the development community, I believe this is a watershed moment. Arguably web developers are now officially living in a JavaScript-driven world. Might this be the beginning of the end for PHP?

This chart of benefits from the WP developer article says it all. (Click to expand.)
WordPress.com advantages of new workflow
See this table listing the benefits of the new JavaScript workflow at WordPress.com.

How to Make OS X Yosemite Stop Adding a Number after my Computer’s Name

NOTE: Others in the Apple support forum linked below have reported that these steps do the trick for them. It does not seem to be working for me, however. How about for you?

Daily my MacBook gets a number (2), (3), or (4) added after its computer name. After running searches and culling through forums, I found a tip which seems to be working.

Apparently this can be cleared up by repairing disk permissions. Here are the recommended steps:

  1. In System Preferences > Sharing, remove the (2) [or whatever is extra; mine was iMac (2), so I removed the (2)
  2. Exit Preferences
  3. Shutdown
  4. Restart machine in Recovery mode (machine off, press and hold Command + R, power on, when Apple logo appears release keys) — may take a few minutes to boot (depends on machine generation/speed, RAM and such)
  5. Open Disk Utility
  6. Select the OS disk (mine was Macintosh HD; selected the ‘indented’ item)
  7. Run Verify Disk Permissions
  8. When finished run Repair Disk Permissions
  9. Restart

Source: Apple Support Communities Discussion Here — in the Oct 29 reply by farquaad

Delete 14,700+ Unfiltered “Approved” Spam Comments in WordPress using SQL

For some reason this blog had all of its discussion settings reset, and plugins turned off, on June 2, 2015.

Within a couple of weeks, the blog had accumulated nearly 15 thousand spam comments. These comments were obviously spam, but with Akismet and WP Spam Shield down, and my discussion settings reset — they all went right through and were immediately published.

Deleting 14,700+ comments a screen at a time was not going to work well.

Thanks to this helpful post by the folks at Cats Who Code, I found a much more efficient fix using SQL in PHPMyAdmin.

The steps:

1. Backup your database. (To be safe.)

2. Login to PHPMyAdmin.

3. Navigate to the desired database. (The main database for the blog.)

4. Select SQL, which allows you to run SQL queries.

5. Run a first query to select all comments after the date that everything went bad:

SELECT * FROM wp_comments
WHERE comment_date > '2015-06-01 00:00:00'

6. If you’ve selected them right, you should see the results in a table. Sort the results by date, in both directions, and review them to ensure they’re what you want to delete.

7. If so, then delete them using this SQL command:

DELETE FROM wp_comments 
WHERE comment_date > '2015-06-01 00:00:00'

A Bigger Better Bootstrap Book: Bootstrap Site Blueprints

Last year I published a little Bootstrap book. I immediately wanted to write a next, bigger one. To help me pull it off, I teamed up with my colleague Ian Whitley. We’ve written it. And it’s live.

We wrote the book for those who want to make use of Bootstrap without being constrained by it. Properly understood, Bootstrap is a tool — a truly excellent tool among other tools — meant to be used with a craftsman’s touch, toward an end defined by the craftsman, not by the tool.

Let’s break that down. If you’re like us, you want to:

1. Bootstrap your way to truly original designs.

You don’t want Bootstrap to define your design. “Built with Bootstrap” need not mean “looks like Bootstrap.”

2. Work directly with the LESS files.

Bootstrap’s LESS files are beautiful to behold. Through the course of these chapters, you’ll develop a truly modular workflow. You’ll use Bootstrap’s LESS files intentionally and selectively. And you’ll augment them with your own custom LESS files.

Even if you’re new to LESS, we would argue there’s no better way to learn than this. We’ll help you get from zero to serious fast.

(Nothing against SASS, by the way. We wrote the book before Bootstrap had an official SASS port.)

3. Leverage, then enhance, Bootstrap’s JavaScript.

Bootstrap comes equipped with JavaScript plugins for some of the most important and frequently used interface elements. We’ll walk you through the process of exerting detailed control over several of them. Beyond that, you may want to do additional things, such as add swipe interaction to the carousel for touch devices, animate the scrolling behavior for a single-page site, or add the PictureFill responsive image solution. We walk you through these things!

4. Optimize for performance.

While it is convenient to grab Bootstrap’s CSS and JavaScript from the online CDN, you realize that there are huge performance gains to be had by selecting only the styles and plugins you need and optimizing them for performance.

We walk you through a very manageable process for cutting things down to size. No more 120KB CSS files or 68KB JavaScript files. We’ll cut those numbers in half, or better, and we’ll work to keep the number of HTTP requests low.

Your sites will load faster. You’ll get better page speed results. Your users will be pleased.

5. Do the hard work to do good things well.

Bottom line: This book is for those willing to roll up their sleeves and dig into the guts of Bootstrap — the markup, the LESS, and the JavaScript — exerting thoughtful and careful control over the details — while creating mobile-first, user-friendly designs.

6. Oh, and Bootstrap yourself a custom WordPress theme!

I almost forgot to mention — we walk you through creating a custom WordPress theme based on the fantastic Roots Theme.

If you’re on board with these desires, this book is for you.

In the coming weeks, we’ll be supporting the book with helpful tips, recommendations, and code goodies. So stay tuned!


Bootstrap Site Blueprints
Packt Publishing, February 2014
Packt eBook (ePub, Kindle, PDF) or Print + eBundle
Buy Amazon paperback or Kindle edition

HTML5 Site Starter Templates

I’ve rounded up some HTML5 site starter templates to help you get up and running with a project quickly.

Bare Bones HTML5 Markup

Just the very basic HTML5 markup structure to get you started with a simple HTML5 page.

Get the GitHub Gist here

The HTML5 Bones Template

Ian Devlin has provided a nice little template that’s a bit more well rounded, including:

  • a richly commented template with helpful notes about key HTML5 elements
  • Google analytics code included
  • Normalize.css for cross-browser compatibility
  • A very basic style sheet with only a few fundamental styles
  • the HTML5 Shiv for IE 8 support

Get the HTML5 Bones Template on Github

The HTML5 Boilerplate

Probably the most well respected starter template on the planet, and for good reason. Includes more touches, including:

  • The Modernizr script for the HTML5 shiv PLUS robust browser feature detection
  • jQuery
  • and more

Visit the HTML5 Boilerplate Homepage

Initializr

Initializr goes further to help you custom configure a set of starter files. You can choose to include or exclude:

  • a basic mobile-first responsive CSS template
  • CSS from Twitter Bootstrap
  • respond.js to enable support for media queries in IE 8
  • jQuery
  • Modernizr
  • Apple Touch Icons
  • etc.

Visit the Initializr Homepage

Resolving Breakpoint Conflicts in Bootstrap 3

Subtitled: the importance of the @screen-__-max variables

While testing a design for my upcoming Bootstrap 3 book (stay tuned, it’s coming soon!), I discovered the importance of the @screen-xs-max variable, and by extension the other @screen-__-max variables.

In my case, I had three columns set up using the class col-sm-4. This would lay them out side by side horizontally when the viewport width is above the @screen-sm breakpoint (by default 768px).

col-sm-4 cleared and padded

Then they would shift to a single-column layout below that breakpoint.

HOWEVER, because each column contained a floating button, the blocks of content were not clearing each other when arranged vertically. Buttons were flowing beside headings, and so on.

col-sm-4 not clearing

Thus, for the narrow single-column layout, I needed to set up a rule to force the columns to clear floating elements above them. I also wanted to add some vertical padding between them.

Easy fix not so easy

Seemed easy: Set up a media query with max-width: @screen-sm, and set up rules to clear floats and add padding only under that query.

On initial testing (i.e., resizing my desktop browser window), this seemed to work great.

col-sm-4 cleared and padded

The problem: This left a 1px zone where the columns remained narrow while clearing one another and thus still stretching down the screen vertically.

I didn’t find this until testing on the iPad mini, whose window width falls exactly in this 1 pixel zone! This was what it looked like:

iPad Screen Small Breakpoint Broken

After a bit of consternation-laden thought, I revisited Bootstrap’s breakpoint variables … and realized I’d stumbled on the reason for the @screen-__-max variables.

You’ll find these lines in Bootstrap’s variables.less file:

// So media queries don't overlap when required, provide a maximum
@screen-xs-max:              (@screen-sm - 1);
@screen-sm-max:              (@screen-md - 1);
@screen-md-max:              (@screen-lg - 1);

Note what these do: provide a breakpoint that is exactly 1px less than the next larger breakpoint — exactly what I needed to clear up this problem.

The problem and fix in LESS

Here are my LESS lines, with the original offending media query, now commented out and replaced with the new better one:

// @media (max-width: @screen-sm) { // BAD: conflicts 1px with col-sm in markup
@media (max-width: @screen-xs-max) { // GOOD: fits within col-sm in markup
  [class^="col"] { // set columns to clear floats and add padding
    clear: both;
    padding-bottom: 40px;
  }
}

That did it. Problem solved.

See it and test the difference in this Codepen.

Lessons Learned

  1. Even with Bootstrap 3’s powerful responsive grid, be sure to test breakpoints very carefully, and across devices, watching for 1px gaps.
  2. The @screen-__-max variables can be your friend!

See the relevant Bootstrap 3 docs here