Advocate – the brother of mentoring.

Why do this?

Often when mentoring you are “advocating” to use a certain method than another but being an advocate for a certain technology or product is a much larger subject and I would even advocate … Sorry… That it’s the brother of mentoring.

I want to preface this entire topic that when you advocate something you shouldn’t be doing it to dog something else or to prove your point. There is already to many selfish and complaint filed developers that we don’t need another one that’s also influencing others. A much more thought through and eloquent post by a much more established developer can be found here.

Being an advocate takes a lot of energy and a passion for teaching and a heart for helping other succeed around you. Not often will you be recognized for the effort you put in, you might even be instructed by bosses to spend less time talking and more time coding (be mindful of this but also have an open conversation of what your role is).

I’ve found even putting in a small amount of time to really get someone to understand a “computer sciency” topic can be a game changer in their growth. It could be the first established root into the much deeper and stronger soil of career development.

How does this work?

  1. I’m glad you asked. If you think you know enough about a framework, library or learned something unique will writing some code, please share it. It doesn’t have to be perfect, it still could help another developer who has been struggling for hours, complete their task and go home and see their kids that night or the spark that gets an entire new pattern to come about. So simply, its start by putting things you learned onto the web.
  2. You are already mentoring right? Good.

  3. Start doing lunch trainings, google hangouts, consistently tweet something useful and provide some kind of meet up with a physical location.

  4. Keep doing it!

What else?

  1. Keep learning, find yourself some advocates, mentors and resources that keep you extending, strengthening and clarifying your skills.
  2. You might be wrong. Its ok, you will learn.
  3. You will be tested by others on why, given crazy situations that might not be solvable with your current method. Keep in mind that those scenarios are just another learning experience or a teachable moment.

Summary

Being an advocate can take some amount of time but really is fulfilling and can change someone’s life.


(Image used from this post: http://lifehacker.com/this-chart-shows-how-computer-literate-most-people-are-1789761598)

Continue reading Advocate – the brother of mentoring.

Format USB Drive to exFat on Mac OS

OS X has been slowly hiding things, limiting things and making things for professional harder to do. The Disk utility used to be significantly easier to use as an multi-platform disk preparation tool. I had all gave up on it recently when attempting to setup an ubuntu image (.iso) on a thumb drive to setup a new developer server. How-to.

Well it happened again when trying to transfer large files between Mac and Windows. I recently learned about exFat, the new FAT32 that supports massive files. With video, images and images getting large than the 3.7 GB limit of FAT32, its necessary to start preparing my new devices at purchase to have them capable of the large formats before its to late to change.

The option for the exFat format is there in the disk utility and I did format a drive with that. It worked just fine between to Macs (It did seem slow reading the file system but no test to prove that). I needed to get a large video file off of a windows machine so I plugged in my exFat drive in and it said it wasn’t formatted. After a few different attempts and was about to give up, I tried one more google search and came upon this very helpful tip. Using a simple command, it gives you a new option for the type of boot partition – Master Boot Record. Now you can format as exFat and windows will now love the drive and your mac still won’t care. With this solved, I will be formatting all my USB drives as exFat from now on.

The Disk Utility advanced options of El Capitan are hidden and you needed, first:
Quit Disk Utility.
Open the Terminal utility.
Run the following Command:
defaults write com.apple.DiskUtility advanced-image-options 1
Relaunch Disk Utility
And now, just format your USB with MBR Partition (Master boot record) and exFAT file System.
The USB now can mount in OSX & Windows.
Reference

Continue reading Format USB Drive to exFat on Mac OS

Microservices for an non traditional global problem

Microservices require a major infrastructure. They are not a drop in replacement for a monolithic application. Many people will argue against them, and for good reason. Techniques and shortcuts that can be masked and hidden in a single application will shine through and could even be the death of your application infrastructure when it comes to microservices.

All examples I’ve seen come from a singular idea that all data comes in from an apache/nginx connection from a client and needs data returned as quickly as possible. The topic of microservices often oozes out from a single request and response path. I want to broaden this basic idea and talk about how they can be used to make a highly available, more robust and scalable application across the world (not just inside a single network).

An experience I would like to share is when a microservice setup is the only reasonable solution when dealing with a network and data stream structure that is unstable and extremely load heavy.

The problem:

Data coming in from cron import scripts, a tcp data stream and a direct writing mysql replication tool from a 3rd party services.

Solution:

Many small end points that can be restarted, scaled and updated at different times.

These services could be deployed across the globe, each can submit it to a queue (at the time it was gearman), and then a data worker could process and transform the data and store it into the database / cache system.

Once that data was in the system, a task would be triggered on a schedule to calculate and sum down the data to reliable parts, using another type of data processor. That processed data would be submitted into a redis cache and a pub/sub message would be sent off to the queue for the web server to pull that data and push it out through a websocket (which an angular app renders). All of this would not be possible on any other system than a distributed compute system using microserivces with a queueing system.

Summary

There are many ways to skin a cat. The hope here to to give a quick overview of what a microservice can be used for. They are great for taking task like billing processing, sending off welcome emails and doing some extra setup when some event occurs. If done right they give great performance enhancements to your web application. But they can be more than just a helper taking care of some annoying task, they can become the man application source.

References

Microservices by Martin Fowler

Design Patterns PHP

Continue reading Microservices for an non traditional global problem

Mentoring

I’ve worked many different developers from Senior to Junior and they all have one thing in common, they are looking for a mentor but also want to teach. Some may call it sharing ideas or showing off something cool but they want to describe the details of the code, their thought process on how they got there and why the end result is great but could get better.  I look at this and see teaching moments. 
I feel so many developers want to have a community that is open and sharing but many don’t feel ready or have the time. I’m hoping to challenge you all to start wanting to share. If you feel like you could write a post, feel free to message me and I’ll add it here. If it’s something small, tweet it and hashtag it #osrmentor and I’ll try and add them to a future post.
I’m also challenging myself here to take more time to share ideas, finish thoughts and open up channels to help teach, guide and come along side other developers to make projects go better, careers to advance and make life just a little easier on this journey we call development.

Continue reading Mentoring

Current Setup(s)

Browsers

Chrome (up to date)

  • Postman
  • Web Developer
  • Edit This Cookie
  • Gitlab Notifier
  • The Great Suspender

Safari (up to date)

Firefox (up to date)

For older versions of Firefox, I use a simple app called MultiFirefox.

You need to create a default profile for the up-to-date version and then a profile named after the version it is the profile it is for.

Firefox Release

Download each release you want, open the image one at a time, drag the Firefox.app file to your desktop, then rename it to the version it is Firefox_14.0.1.app. Take the file and now put it in your applications folder.

Open the MultiFirefox app and pick the version and profile you want and click start. You now can run as many version as you want and not break profiles.

Homebrew

This is a great application to install anything you need linux related.

Bash / iTerm2

Git

Git Flow

MySQL Workbench

Other options

Atom

Plugins

  • Atom Beautify
  • Bracket Matcher
  • Highlight Line
  • Highlight Selected
  • Merge Conflicts
  • Project Manager
  • Todo-Show

MacDown

OpenOffice

Mail

Evernote

SourceTree

Slack

Continue reading Current Setup(s)

Git Submodules

https://git-scm.com/book/en/v2/Git-Tools-Submodules

Git Submodules: Adding, Using, Removing, Updating

I took on a simple wordpress website. Well yes the site is very simple, almost no custom development but, it is wordpress and I am trying to do things with best practices. So it hasn’t been easy.

  1. Getting a virtual environment working has been a headache.

I settled on Scotchbox because it had a lot of tools but didn’t require to many strange dependencies like ruby plugins when my site is only php behind nginx or apache.

  1. I wanted to have a git repo for the environment to do code on multiple computers or to be able to hand off the project to someone else if I ever needed too.
  2. I wanted to have a git repo for the theme to be able to have releases and features.

This is the most difficult part.

Create the theme as its own git repository.
It can be a single file to start, this only to get the module setup going.

Create the top level of your project (ie the contents of a wordpress install). Use the GIST to ignore basically everything but the vagrant file, your gitmodule file and the path to the theme you are developing.

Structure:

/website-server
VagrantFile
.gitignore (see gist file below)
.gitmodules
.git
/public_html
    /wp-content
        /themes
            /website-theme-01
                .gitignore
                .git

wordpress-vagrant-gitignore

Follow these direction using the path to your theme in the themes folder.
git-submodules-adding-using-removing-and-updating

Once that is setup, you will be able to commit any vagrant file changes to your wordpress-site-vagrant repo and any changes to your theme can be committed to your website-theme-01 repo.

Now developing themes is a harmony and is easy to replicate across projects and is easy to share a project to multiple developers.

Continue reading Git Submodules

Git – getting started

Git is a great tool. Its changed the way I develop. Combine it with git flow and you can accomplish 95% of daily development.

Git Cheat Sheet

19 Tips For Everyday Git Use

https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

http://nvie.com/posts/a-successful-git-branching-model/

http://danielkummer.github.io/git-flow-cheatsheet/

https://github.com/nvie/gitflow

brew install git-flow

Continue reading Git – getting started