My Experience with the Zend Certified PHP Engineer Certification Exam

Yesterday I took the Zend Certified PHP Engineer Certification exam. It was my first time taking a certification exam, and I didn’t really know what to expect. Even though I’ve been writing PHP for a few years and feel pretty comfortable with a lot of the language features and syntax, the study guide review questions were a bit tricky, and even after weeks of review I wasn’t feeling super confident.

I took the exam at one of the approved Pearson Vue exam centers. It is a timed exam – you just sit at a computer and answer a bunch of questions. When I submitted the exam, the results were displayed right away. I passed. No additional details. They just let you know if you pass or fail. But yep, I’m now listed in the Zend Certified Engineer directory!

I am super excited to be considered a Zend Certified PHP Engineer. I love PHP and really enjoy learning more and more about the language every day. However, I do think the exam itself was a bit contrived in that a lot of the questions seemed like they were designed to be purposefully tricky or clever in bizarre ways that you would never really find in day-to-day code.

While reviewing for the exam, I put together a repo of syntax I had never seen before, odd behavior, interesting functions and some basics that don’t hurt to revisit every once in a while. Feel free to check it out on Github.

Spacing Utility in Bootstrap 4

Today I started playing around with the Bootstrap 4 Alpha 2. I stopped everything I was doing to write this post as soon as I saw the spacing utilities that were added. I’ve been manually adding something similar into my projects since I saw something sort of like this in Ionic a while back. It’s so helpful and I’m excited to see that it was added.

The utility basically lets you modify the margin or padding on an element. For example, a lot of my sites in the past didn’t need the bottom margin on the Bootstrap navbar, so I’d create a class of m-b-0 that sets the margin bottom to 0 and then add the class to the navbar. This utility is even cooler though. You can modify the top, right, bottom, left, all, or left and right as needed. For example, the class m-a-2 sets an element’s margin on all sides to 2 times the $spacer sass variable. The class m-x-3 would set the left and right margins to 3 times the $spacer variable. Nice!

Chrome Extension: Quoter

I like to read on my iPhone / Kindle at night before bed. I usually stick to technical books and science related stuff, so I often find myself highlighting important ideas so that I can review them again and again. This is something that iBooks and Kindle have built-in.

Recently I read a really great article by  on Object Oriented UX Design. It was full of so many great insights that I wanted to save them for later review like I do with reading apps. I checked out the Chrome store but didn’t find anything immediately. I’ve used Evernote in the past, but wanted something super simple and thought it’d be fun to look into the Chrome Extension APIs.

I put together Quoter pretty quickly. The Chrome APIs are cool and pretty intuitive. There is a storage API that syncs the data between user’s devices. If I save a quote on my laptop, it is automatically available on my desktop. Programmatically it’s basically just like using local storage except that the data is returned asynchronously in a callback.

The extension is super simple; it lets you save quotes from web pages for later review. It keeps track of the site the quote is from so you can revisit it again. I’d like to add a few more features and build it out more if I can make the time to do so.

Check out Quoter on the Chrome Web Store

Cross Platform Desktop Apps with Electron by GitHub

OK, my new fascination is officially Electron by GitHub. I’ve hacked on it for maybe 30 minutes and am already excited to find a little project to build on it. Basically, it seems like a really nice way to build cross platform desktop apps with HTML, CSS, and JavaScript. In just a few minutes I pulled in a few node modules and had a little hello world app running on Windows 10 with native dialog messages and toolbars. Really beautiful. Can’t wait to dig deeper into this. Hopefully I’ll have something more useful to post about it soon!

Implement Interface Sublime Text Plugin

While working in Visual Studio a while back, I noticed a cool little feature that allows you to import method stubs for an interface you are implementing. Since I’m madly in love with Sublime Text, I decided to try and write a plugin that does the same thing.

This was my first stab at a Sublime Text plugin (and my first real look into Python actually), but I think it went pretty well. I don’t spend an ungodly amount of time implementing interfaces, but it was fun putting this together and I think it’s pretty cool. Technically the plugin doesn’t care if the target is an interface. It will work on any class, but it’s meant for interfaces and even abstract classes (if you want to override a method).

Check out the GitHub gist if you want to give the plugin a try. To set it up, save the python files from the gist to your Packages folder. I have mine at C:\Users\USERNAME\AppData\Roaming\Sublime Text 3\Packages\Implementer. Then create a key binding to trigger the plugin. My key binding is below.

Now to trigger the plugin, click on the name of the interface you want to implement and press your key binding (mine is f1). The plugin will give you a list of methods to choose from, or you can implement all of the methods.

I am just using a regular expression to parse the target class. It works pretty well, and it pulls in any parameters and type declarations too. I even tested a few PHP 7 features. Here’s a regex101 test with some examples.

sublime text 3 implement interface plugin

Unity in Action

Over the past few weeks, I’ve been working my way through Unity in Action by Joe Hocking. The book does an amazing job of getting you up and running in Unity very quickly. I was excited to see that he even covers a bit about basic 3D modeling and UV mapping in Blender. I made a concrete bench. Woo! Really though, it’s so fun.

What’s mind blowing is how quickly the book gets you implementing components like first and third person cameras, HUDs, animations, physics, and even HTTP requests. And Unity makes this stuff dead simple. It really is unbelievable. Anyway, I highly recommend the book if you are looking to learn a bit about Unity and game development. Oh! And purchasing the physical book comes with free electronic versions including pdf and Kindle. Nice!

So C# is Pretty Awesome

I’ve been curious about building basic Windows apps for some reason recently, and so I’ve been learning C# in my spare time. The Visual C# Step by Step book by John Sharp is really great. I have an older version, but it has a lot of really great content. It covers everything from variable declaration to inheritance to threading and creating web services. It gets into memory as well and explains the stack and heap in a way I understood.

Overall I’m actually really liking the language, and it seems really solid for getting something up and running quickly. The event and delegate system that the .NET framework provides is pretty amazing, and I really like some simple things like the SortedList collection class. It’s basically just a collection object that automatically sorts its contents. For example, if you create a sorted list like the following:

It is automatically sorted alphabetically by key. Iterating through the list and printing the results would look like:

Simple, but I think it’s pretty cool. Anyway, I’ve never really worked in a heavy IDE, but Visual Studio has some really nice tools. I love being able to step into methods with the debugger, the refactoring tools (like right clicking on code and extract it to a method automatically), IntelliSense, etc.

Oh yeah and I’ve been using GitLab lately for most of my projects. I love the private repos, milestones, wiki, and overall design. Really bad ass.