Hour of code

Wow, it’s been a while! Yesterday I got the opportunity to participate in Hour of Code, a global program that tries to get kids learning what code is and how it’s used every day.

I talked yesterday with Mrs. Hansens’ 2nd-grade class at Lincoln Elementry, Bemidji for about 20 minutes, giving examples of what code is and how it’s all around us. Afterward, I helped students work through logic problems in their computer lab using Scratch. I was amazed at how quick the students just “got it” when working through the problems.

Hour of Code a great program and hopefully they’ll ask me to participate next time.

Get them early with Source Control!

This semester I’m an adjunct at Bemidji State University! I’m teaching BUAD 3283 E-Commerce Web Development (3 credits) to a mix of business and computer science majors.

We’ve had many interns from BSU in the web development department at PBC, and two things that we emphasize with them is source control management (SCM) and test-driven development (TDD). So for my curriculum, I wanted to add at least SCM.

I briefly touched on SCM in one of the first classes, going over how to use Git get code pushed to GitHub for assignments. My students were struggling with getting their code pushed to their repositories so today I let my students have the class to ask questions.

Originally I’d demoed using Atom for writing code then using SourceTree for pushing to their repositories like we do at work. One of my students was using GitHub Desktop (kind of by accident). I’d forgotten about that tool and it seemed to make more sense to use since Atom, GitHub, and GitHub Desktop dovetail nicely together.

 

I have used GitHub Desktop for a few projects before but I tend to use SourceTree or just command line:

$ git add --all; git commit -m "add all the things"; git push;

 

Getting back into it.

I am trying to get back into the habit of doing a bit drawing every night. Here’s a few of newer ones. I’d like to get one a day done again, collecting a bunch to make a coloring book like I made a few years ago.

.env environment variables when working with Apache

I’m getting in the habit of using a .env file for loading environment variables. Laravel already uses them for setting up configuration. It’s a nice way to setup variables that can be used in bash or through a php library like vlucas/phpdotenv.

For a site I’m working on I wanted the environment variable APP_ENV set to “local” in development and set to “production” on the live site (each environment has it’s own .env file). My configuration keep on getting overridden somewhere and returning “dev”.

What happened was the APP_ENV environment variable was already set in the Apache virtual host configuration and phpdotenv will not override variable set in Apache virtual host configuration.

If you are running into this same issue a pretty easy fix. Unset the variable in you .htaccess file and then the correct value will load from your .env file. At the top of my .htaccess file in the public root I have this then:

<IfModule mod_env.c>
    # unset the APP_ENV variable since it might have been set in Apache's vhost file and needs to be used from .env
     UnsetEnv APP_ENV
</IfModule>

Hope that helps!

No Miles, We’re not moving to Canada.

Well, tonight I kinda freaked out our 8 year old son Miles. We has just sat down for his ritual of one episode of The Big Bang Theory before bed. Katie was looking though news feeds and mentioned that Trump had taken the Florida primary and that Marco Rubio was likely to suspend his campaign (then he did shortly there after).

“Well, I guess we’re moving to Canada” I said. Miles turns around with tears in his eyes. “Are we really moving? I won’t get to see my best friend [omitted] anymore?!”.

After a little while he was calmed down and went back to watching Sheldon swimming in a ball pool with  Leonard chasing him. Bazinga!

Bazinga. That’s all I can say about the current political theater. I don’t think we’re going to leave the country over it though.

Installing WordPress Plugins with Composer

I found out a cool usage for composer that I didn’t know about; use it for installing WordPress plugins. I use Phing to do all my deployments (slowly moving towards continuous integration with Jenkins). I wanted a way to get the plugin files and include them with my deployment automagicly. Composer can download and extracting the plugin archive file rather than using the gui in the wordpress admin. This task can be done when all your other required libraries are installed.

I wanted to install Contact Form 7. In order for this to work you need to download the plugin from a custom repository, so I setup my composer.json file something like this:

{
  "repositories": [
    {
      "type": "package",
      "package": {
        "name": "takayukister/contact-form-7",
        "type": "wordpress-plugin",
        "version": "4.3.1",
        "dist": {
          "type": "zip",
          "url": "https://downloads.wordpress.org/plugin/contact-form-7.4.3.1.zip"
        },
        "require": {
          "composer/installers": "v1.0.7"
        }
      }
    }
  ],
  "require": {
    "takayukister/contact-form-7": "4.3.1"
  },
  "extra": {
    "installer-paths": {
      "public_html/wp-content/plugins/{$name}/": [
        "type:wordpress-plugin"
      ],
      "public_html/wp-content/themes/{$name}/": [
        "type:wordpress-theme"
      ]
    }
  }
}

I set the name of the repo to the “takayukister/contact-form-7″ and then used that as it’s require name with the current version (right now 4.3.1). The paths in the “extra” section tell composer where to put the plugin once it’s installed.

In my Phing build.xml I could then run this before any packaging tasks:

<exec command="php composer.phar install" level="verbose" passthru="true" />

If there’s a better way to do this I’d like to hear it.