Becoming Jesse — The McCree Cosplay Guide


Often perceived as impractical and somewhat a frivolous use of resources cosplay has become an art form. Like any other art, the art of compiling an accurate and convincing recreation of a digital character can be time-consuming and difficult, this is my personal journey of becoming Jesse McCree; aka McCree.

NOTE: This is not a “click to buy from Amazon post” — real work and research will need to be done to create the best cosplay reproduction of your McCree.

This article is a work in progress, please subscribe below for update notifications.

Loading


Researching McCree

Blizzard’s Cosplay Reference guide is THE place to start when reviewing the needs for faithfully recreating any overwatch character. To find the reference guide for your cosplay “audit” jump on over to the Blizzard media site and click on the “Misc” tab.

Jesse McCree Referenc guide displays McCree in hi default pose, featuring most of the major elements of the cosplay cosutme.
McCree Reference Guide Cover Image

McCree Reference Guide  — Mirror 1

Additionally knowing McCree’s background and history can really enlighten the choices for your cosplay construction decisions.

Researching Other Cosplayers

Almost every artist uses techniques and ideas adopted by other artists who inspire them. This can be an incredible springboard into refining and improving the process and final presentation of your cosplay.

Searching the internet there are dozens of different cosplays for McCree, from the budget, sexy, extravagant, and the just amazing recreations of this digital character.

“geekswoodshop”

This cosplayer was an early example, back in 2016 “geekswooshop” recreated this cosplay with surprisingly great results given the limited amount of information about McCree in 2016.

More information, including additional build photos, can be found on this build thread 

“Squiby”

“Shimyrk”

Featured on Deviant art — I love how this cosplayer had the opportunity to include photoshopped compositions that really make the cosplay come to life.

“Zephon”

ZephonCos is a “professional” cosplayer and has participated dozen of cosplay competitions. This is a great example of a really well-implemented cosplay, featuring details that many others miss, specifically tattered hat and holes in the serape.

View more of ZephonCos on his facebook page.

Breaking Down the Components

McCree has a few items that I have broken down into different phases or steps to consider when acquiring the items need to complete the full cosplay effect.

The Clothing

Probably the easiest portion of the cosplay is acquiring each of the needed pieces of the actual clothing portion, this includes…

  1. the hat
  2. the pants
  3. the ‘leather’ chaps
  4. the undershirt
  5. the button-up shirt
  6. the serape
  7. belts
  8. boots

The Armor

  1. chest plate armor
  2. back armor
  3. shoulder straps
  4. mechanical (robot) hand
  5. knee pad

The Accessories

  1. the “PeaceKeeper” pistol
  2. “BAMF” belt buckle
  3. stun grenades
  4. hat emblem
  5. hat bullets
  6. belt bullets/holder
  7. gun holster
  8. cigar
  9. right-hand glove
  10. spurs
  11. hair and facial hair

Details, Details, Details

The believability and recognition of your costume entirely depend on the details. Below I will review each of the components listed above, and how you can get similar, or BETTER results, by using the data and information in compiled below.

One of the most convincing things you can do for an authentic feeling McCree is to make sure your items are worn, and dusty in appearance. Many of the overwatch characters are very clean, modern robot characters that demand clean lines, McCree — is the polar opposite. Spend time studying the areas that are worn, have tears or holes, and you will create a much more authentic cosplay.

The Hat

Any cowboy is nothing without a hat. It identifies a unique sense of style and tells a story about the character, just like shoes, you can tell a lot about a person by their hat! McCree’s hat is no different and it has some important features you will not want to miss.

McCree’s cowboy hat is well worn and contains several notches, and is scuffed up, especially on the crown of the hat.

Notice the rim notches and “wear”, along with the bullets and emblem. The strap is a solid thick leather strip.
Front view of McCree’s cowboy hat and emblem.

Consider the following items when looking to find a cowboy hat that suits your McCree cosplay.

  1. eBay / Facebook Marketplace can be a great place to purchase hats, if you’re going all out on re-creating all the features, you will placing notches in the brim of the hat as well as replacing the band or attaching items to the existing band. Additionally scuffing the top of the hat will give it character and help match the ‘worn’ feel of McCree’s character.
  2. A used hat can be stretched fairly easily about 1cm, or a half hat size, with hat stretching tools. You can purchase a hat stretcher (aka; hat -jack) or construct your own for a few bucks.
  3. If you have no other choice, you can purchase an inexpensive hat an Amazon or eBay. Look for a crushable stetson style hat.

Hubspot Embedded Form onFormReady & onFormSubmit

Hubspot is a fantastic tool for enabling custom forms on your website and saving that data into the Hubspot CRM for later actions. When using forms embedded on non-Hubspot websites I often find myself needing to stretch outside the scope of the default for the embed.

The Code

The code below you will see a few handy additions to the Hubspot form embed; onFormReady and onFormSubmit.

hbspt.forms.create({
     portalId: "xxxxxxx",
     formId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
     css: "",
     onFormReady: function($form){
        // Stuff to do on after form is loaded             
     },
     onFormSubmit: function($form) {
        // Stuff do do before form is submitted 
     }
   }
});

On an embedded form, Hubspot dynamically loads some javascript and pulls in additional field data asynchronously after the page is loaded. If you need to add any manipulation to the load form or fields, you should do this in the onFormReady function.

Although documented in Hubspot’s documentation, if you are manipulating field .val() using jQuery there is a gotch that requires the addition of the .change() function.

jQuery('textarea[name="additional_order_comments"]').val('').change();

Without the above .change() function, Hubspot would submit the previous value of the field if was previously set and your CRM is set to pre-fill the fields.

The Issue

I had the need to create a form that used progressive fields, but also allowed me to present a comment form field that did not pre-fill the text area. As of this blog post, Hubspot does not include any option to turn off previous form values when using progressive fields.

The website needed to provide a field for additional comments and did not want to write an blank value for the field if it contained an existing value. So with some simple jQuery magic, the form now stores the form fields value, removes the field value on the form field, then re-applies the old value unless a new text value is entered.

hbspt.forms.create({
     portalId: "xxxxxxx",
     formId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
     css: "",
     onFormReady: function($form){
        textareaDefault =  jQuery('textarea[name="additional_order_comments"]').val();
jQuery('textarea[name="additional_order_comments"]').val('').change();                   
     },
     onFormSubmit: function($form) {
if(jQuery('textarea[name="additional_order_comments"]').val().length < 1){            jQuery('textarea[name="additional_order_comments"]').val(textareaDefault).change()
      }
   }
});

As mentioned previously, you will see the requirement for the .change() function in the jQuery selector above.

If this article helped you out, please leave a comment below, I always enjoying knowing I have helped others along their coding endeavors!

ANET Upgrades for ANET A8

What is the ANET A8

So this post is starting to get a bunch of traction, and I wanted to expand more on what has worked well for me personally and give some insights on the upgrades. First and foremost, I have used several different 3d printers and for the money, the ANET A8 has performed beyond my expectations.

Updated: 12.6.2019

Nozzles:

http://amzn.to/2BCp8VO – Ivelink 0.4mm MK8 Extruder M6 Stainless Steel Nozzle for 1.75mm Makerbot Ultimaker UM2 E3D (Pack of 5pcs)

https://amzn.to/2PiAVjG – MK8 Brass Wear Resistant Nozzles

Belts:

http://amzn.to/2qp3Mry

GT2 fiberglass reinforced belt. Proper tensioning and strength is super important for accurate high-quality prints.  Some of the inexpensive Chinese Prusa knockoffs have rubber belts that stretch.

This is HUGE, currently one of the better upgrades for your machine.

Sensor:

BL Touch Sesnorhttp://amzn.to/2u5mIgY 

Wow, Wow, Wow. This is the second best (possibly THE best) upgrade I have done to my printer. While there are several different auto bed leveling sensors, I can safely say the BL-touch is fantastic.  It works with any type of bed, so those who have upgraded to a glass bed, it will still function.

While there is a common misconception that the auto-bed level will prevent any more bed leveling it does account for any warpage or small imperfections in the levelness of your bed and will increase your print quality noticeably.

Frame:

This is my favorite upgrade, it noticeably increases stability and adds uncompromised strength and modification options. The popular AM8 Metal extrusion upgrade utilizes 2040 extruded aluminum.

The total cost for this upgrade ran right around $60 USD. The build guide and Build of Materials are available through the link. You will also need an M5 Tap to complete this upgrade. Altogether, totally worth the additional cost.

Printable A8 Upgrades

I have compiled a list of printable parts for the A8 to help with print quality.

  1. x tensioner http://www.thingiverse.com/thing:1976767
  2. y tensioner http://www.thingiverse.com/thing:2124800
  3. x belt holder http://www.thingiverse.com/thing:1666094
  4. y belt holder http://www.thingiverse.com/thing:1648888
  5. z-endstop adjuster http://www.thingiverse.com/thing:1776429
  6. air nozzle / part cooler (old favorite, still in use) http://www.thingiverse.com/thing:2088006
    (my new favorite) http://www.thingiverse.com/thing:2110755 )

Additional Items

  1. not printable, but highly recommended: a glass plate or mirror tile from the hardware store. no need for expensive borosilicate.
  2. filament wiper/oiler. http://www.thingiverse.com/thing:1692395 (the improvement of the finish was too noticeable, not to add it to this list. use 1-2 drops of olive oil – NO mineral or silicone oil!)
  3. once you see your frame bend under the force of tight GF belts and consider a “frame brace”, this is a much more sensible solution http://www.thingiverse.com/thing:2045010
    (or use 8*365mm aluminum tube, wedged between two felt pads

    Video Walkthrough Skynet upgrade with e3d v6

Ohio Ant Nuptial Flight Calendar

I spent months locating, studying and compiling information to identify Ohio Nuptial Flight Periods. After much research, and digging around I have compiled a list of nuptial ant flight periods in Ohio. While this is probably not an exhaustive list, it should make the process a bit easier when attempting to find new queen ants.

Founding Prenolepis imparis Queen with eggs

A Prenolepis imparis founding queen with eggs inside a test tube setup.

Look for nuptial flights right after it rains and a day or two after a rainfall on warm days. Ants tend to fly after rainfall because of the increased humidity and possibly that the soil is easier to dig.

Without further aduex, here is the flight calendar. I can not guarantee any validity of species other than what I found on the web, please feel free to comment and I will keep this chart updated as frequently as possible.

The numbers represent the number of sightings found in the antweb database. The larger the number the more likely that ant will be during a nuptial flight period.

Species Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
                         
Aphaenogaster         4 6 5 14 6 1    
Aphaenogaster fulva               2 1 1    
Aphaenogaster lamellidens         1 1            
Aphaenogaster picea         1     2        
Aphaenogaster rudis             1 3        
Aphaenogaster tennesseensis           2   2 1      
Aphaenogaster sp.         2 1 3 3 1      
                         
                         
Brachymyrmex     2 3 8 5 7 16 11 4    
Brachymyrmex depilis     1 1     2 10 5 3    
                         
                         
Camponotus     30 76 150 113 48 13 9 2    
Camponotus americanus     5 5 4 1   2   1    
Camponotus caryae       1 1              
Camponotus castaneus     4 4 29 29 2          
Camponotus chromaiodes     4 17 9 1 1          
Camponotus nearcticus       4 3 2            
Camponotus novaeboracensis       1 12 10 5 3 1      
Camponotus pennsylvanicus     3 16 25 30 12 4 4      
Camponotus planatus         1 1            
Camponotus subbarbatus       4 5 1   1        
                         
Crematogaster     2 4 1 9 10 13 11 2 1  
Crematogaster cerasi       1   1 1 5 4      
Crematogaster lineolata                   1    
                         
Dolichoderus         1              
Dolichoderus plagiatus         1              
                         
Dorymyrmex 1 10 17 8 7 8 9 3 5 2 2 1
Dorymyrmex insanus 1 9 12 3 1   3 1 4 1 1 1
Dorymyrmex sp.             1          
                         
Forelius         2 1 2 3        
Forelius pruinosus         2 1 1 2        
                         
Formica       12 9 26 37 28 1 3 1  
Formica aserva           1 5          
Formica biophilica           3 1   1      
Formica exsectoides             1          
Formica fusca           2 1 3        
Formica glacialis             3 2        
Formica incerta             4 2        
Formica integra         1              
Formica neogagates               1        
Formica obscuripes       5   1            
Formica obscuriventris           1   1        
Formica pallidefulva         2 9 7 1        
Formica podzolica           1 2 7        
Formica rubicunda             1          
Formica subaenescens               1        
Formica subsericea       1 1 1 7 6        
                         
Hypoponera           2 4 3 1 1 1  
Hypoponera opacior             1     1 1  
                         
Lasius     5 6 15 50 60 78 94 26 8 7
Lasius alienus           6 22   1 1    
Lasius claviger               1 16 12 5 6
Lasius flavus           1 1 4 3      
Lasius interjectus       5 11 26 6 2 6 1    
Lasius latipes           2 8 8 6      
Lasius nearcticus             1 1 2      
Lasius neoniger             2 29 42 2 2 1
Lasius niger           1   1        
                         
Leptogenys           1   1        
Leptogenys elongata           1   1        
                         
Leptothorax           2 4 2 2      
Leptothorax muscorum           1 1 1 1      
                         
Monomorium     1   2 4 2 1        
Monomorium minimum     1   2 2 2 1        
                         
Myrmecina               2 2 1    
Myrmecina americana               2 2 1    
                         
Myrmica       1 2 2 5 12 13 4 1  
Myrmica pinetorum         1   1          
Myrmica punctiventris                 1 1 1  
                         
Nylanderia   1 2 2 11 9 5 2 2 1 1  
Nylanderia faisonensis       1 2              
Nylanderia parvula         2 1            
Nylanderia terricola   1     1 1            
Nylanderia vividula     1 1   6 4 2 2 1 1  
                         
                         
Pheidole     2 6 23 22 21 15 11     1
Pheidole bicarinata           3 4 1        
Pheidole dentata       1 3 2            
Pheidole pilifera           1 6 1        
Pheidole tysoni               1        
                         
Polyergus         2   2 4 3      
Polyergus lucidus             1 2 1      
                         
Ponera     1 4 1   2 5 6 3    
Ponera pennsylvanica     1 4 1   2 4 6 3    
                         
Prenolepis 2 13 44 56 5 1           1
Prenolepis imparis 2 13 44 56 5 1           1
                         
Proceratium 1             2 1      
Proceratium chickasaw               1        
Proceratium silaceum 1             1 1      
                         
Solenopsis 2 3 8 15 40 46 38 22 6 3    
Solenopsis molesta       4 11 16 15 11 3 1    
Solenopsis texana             2          
                         
Stigmatomma               2 1      
Stigmatomma pallipes               2 1      
                         
Strumigenys                 1      
Strumigenys sp.                 1      
                         
Tapinoma       1 7 7 3          
Tapinoma sessile       1 7 7 3          
                         
Temnothorax       2 1 13 9 3        
Temnothorax curvispinosus         1 3 2 1        
                         
Trachymyrmex         1 1 1 1        
Trachymyrmex septentrionalis         1 1 1 1        

TeamworkPM Content Workflow

Content is a large portion of a website initial deployment and continuous updates are critical to great SEO, ensuring a solid workflow that our team can follow – helps us expedite the process and keeps everyone involved more efficient.  

TeamworkPM is a fantastic tool for teams, staying organized and tracking the time it takes to do work for clients is critical in pricing services to ensure you are making money and not losing it. The list below identifies a few of the hurdles this workflow has helped us overcome.

  1. We know exactly what stage every piece of content is in based off of the status, and due dates.
  2. We are able to accurately log all time spent on a single piece of content.
  3. It works for all content types such as an eBook or Infographic, that may require multiple skill sets to create.
  4. It maintains a single thread of the status comments and total time spent.
  5. We do not have update more static documents like, attachments, or notebooks which are easy to get out of version or neglected.

Continue reading

Perfect WebDev Environment for OSX

This is a straight-up copy of the orginal article found at https://mallinson.ca/osx-web-development/

I have pased it to my blog because it is extremely valuable to my workflow and I never want to lose it :). Be sure Chris Mallinson and thank him for the write-up.

The Perfect Web Development Environment for Your New Mac

I’ve been using this particular configuration, or one quite like it, for several years, but when I picked up a new laptop recently, I decided to start from scratch. There were a ton of settings, scripts, and programs installed on my old machine that I no longer used, and I wanted them gone.Feel free to use this guide on any Mac, but you may find that there are differences on your machine if it’s not a fresh install of OS X. These are the exact steps I used to get things running on my machine, and it’s been tested on many machines.

Why Not Just Use MAMP?

MAMP is a package that will install MySQL, PHP, and Apache on your Mac all with one download, and a quick install. It’s a great option and MAMP Pro, the paid version, will provide most of the features you need to run multiple web sites on your machine. I don’t use it because most of what it offers is already a part of OS X, and I prefer to customize my environment beyond what MAMP provides out of the box. If I’m already going to be playing around with the config files, I may as well go the distance. The main benefit of MAMP is that it leaves all your default system settings alone, sandboxing your development environment. I don’t get any benefit out of that. It also allows you to easily turn on and off services. I don’t ever turn them off, so that’s not any help to me either.

Housekeeping

Mac OS X  is a great operating system for developers, but many of the features important to us are turned off to make the OS more easy to use for everyday tasks, and more secure. Many of the configuration files we need to edit are hidden away in directories that do not show up in the Finder by default. I’m not going to tell you how to edit files here. Some people prefer command-line tools like Vim or Pico. For most of my code editing needs, I use Sublime Text. It’s not free, but I find the features well worth the price. If you’re going to be using a text editor every day, you’re going to want to pay for a good one. Sublime Text can open files like any other GUI text editor, and can also be invoked from the command line. Make sure you’re familiar with editing config files in the text editor of your choice before continuing.

Everything we’ll be installing here is free, and you can certainly go a long way without having to pay a cent for any of your software. However, don’t be afraid to pay actual money for great apps. If you’ve bought a Mac, you already understand that spending money on a well designed product usually saves you time in the long run. Software works the same way. Below are some of the programs I use regularly.

CodeKit (Front End Toolbox)
Coda / Sublime Text / Atom  (Great IDEs / Text Editors)
Navicat (MySQL GUI)
Transmit (The best FTP program ever made)
Tower (Git Manager)

Xcode

First, you need to have Xcode (Apple’s development bundle) installed for a few of these tools to work. You can get by without it if you try really hard, but if you’re a developer, you’re probably going to need to have it at some point. It’s massive, so start downloading it now. Grab it from the App Store, and then grab a coffee or play with your kid or dog.

For OS X 10.9 (Mavericks) and up, the developer command line tools can be installed by running the following command within terminal.

xcode-select --install

This will trigger a software update dialog box. Click install and wait for it to complete. If this does not work, download the installation package from Apple. You will need an Apple developer account to do this.

Once Xcode is installed, start it up. The tools we need will not work unless the app has run once, and you’ve accepted the licence agreement. You don’t need to do anything with the app. Just start it up (It can take a while to run the first time, even on a fast machine) click agree, and shut it down.

Homebrew

Homebrew is a popular and amazing package manager for OS X. Package managers keep all the big and small tools that we need to install on our machines tidy and up-to-date. It could not be easier to install. Switch over to your terminal, and type in this one command:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

It can take a while for the install, but that one command is all you need for Homebrew. Really.

MySQL

This is optional. You may prefer another kind of database, or no database at all. Feel free to skip this if you don’t need it, but really, you probably do. MySQL no longer comes pre-installed as of Mountain Lion (10.8) as it did with previous versions or OS X. Download it here. You can try the latest version of MySQL for the latest version of OS X. The latest version is currently for 10.11. Choose the 64bit “DMG Archive” one.

dnsmasq

This is a great little tool to that allows us to use wildcard subdomain names.

With the default apache settings, you can add as many sites as you like in subfolders of the web root. You can have sites like this:

http://home.dev/client1
http://home.dev/client2
http://home.dev/client3

However, that creates a problem. When you have each site in a folder, it’s more difficult to manage the settings for each site. Each one must then have a different absolute root. The solution is to create a subdomain for each site, and use URLs like these:

http://client1.dev
http://client2.dev
http://client3.dev

We can accomplish this by placing all three sites in our /private/etc/hosts file, but then we need to keep adding entries every time we add a new site. dnsmasq allows us to do this by interrupting each request that ends with .dev and forwarding it to a designated IP address (127.0.0.1 in our case).

To install dnsmasq, we use the previously installed Homebrew. The following commands will install dnsmasq, configure it to point all requests to the .dev top-level domain to our local machine, and make sure it starts up and runs all of the time.

brew install dnsmasq cd $(brew --prefix); mkdir etc; echo 'address=/.dev/127.0.0.1' > etc/dnsmasq.conf sudo cp -v $(brew --prefix dnsmasq)/homebrew.mxcl.dnsmasq.plist /Library/LaunchDaemons sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist sudo mkdir /etc/resolver sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/dev'

We’re now done with dnsmasq, and if all goes well, you’ll never need to think about it again. Now, to get Apache going.

Your Local Web Root

Apache has a default location for storing website files, but I prefer to create my own web root that is independent of Apache. You can place your files anywhere you wish, but I prejust put them in a directory called /www on my main hard drive. Put yours wherever you wish. In that folder, I have a few subfolders. /www/home is a main website that I use to list all my local sites (I’ll show you how to make that site dynamic later on).  /www/sites is the folder in which I place each of my other sites. Each of those site folders has a webroot (/www/sites/client1/wwwroot), and an assets folder (/www/sites/client1/assets), where I keep source files or other documents related to the site.

Apache

Step one is easy. It’s actually almost done. Mountain Lion (10.8) was the first version of OS X without Apache in the “sharing” section of the preferences pane. No big deal though, since you just need to start it up once using the terminal. Open up the Terminal app, and enter the following command. You’ll be asked for your administrator password.

sudo apachectl start

That’s it. Test it out by visiting http://localhost in your browser. You should see a simple page that says “It Works”. Apache is up and running, and is ready to serve your sites. It will stay on until you turn it off (I never turn it off), and will start up automatically each time you start your computer. Don’t worry about taxing your computer’s resources by running Apache. It won’t be a problem.

You should also try http://home.dev, which should work since dnsmasq is pointing all *.dev domains to the local IP. You can try http://ANYTHING.dev as well.

Apache will serve up sites as is, but there are a few quick changes we need to make to the configuration files before we are ready to go. Using your favorite text editor, open up /private/etc/apache2/httpd.conf

If you’re going to be using PHP, you need to tell Apache to use the PHP module to handle .php files. On line 169 (line 117 before 10.10 (Yosemite) but could be different on your system), you need to uncomment this line (remove the “#”)

168  #LoadModule perl_module libexec/apache2/mod_perl.so
169  #LoadModule php5_module libexec/apache2/libphp5.so
170  LoadModule hfs_apple_module libexec/apache2/mod_hfs_apple.so

becomes

168  #LoadModule perl_module libexec/apache2/mod_perl.so
169  LoadModule php5_module libexec/apache2/libphp5.so
170  LoadModule hfs_apple_module libexec/apache2/mod_hfs_apple.so

Yosemite, El Capitan, & Sierra Only

Starting with OS X 10.10 (Yosemite), Apple moved from Apache 2.2 to Apache 2.4, and that means there are a few additional changes we need to make. First, there is a directive that helps secure your machine by denying access to the entire file system by default. I’ll show you how to remove this directive, since I find that easier on a machine meant for development. The section of code runs from line 220 through 223. You can comment out (place ‘#’ in front of each line) or just remove this section.

220 <Directory />
221     AllowOverride none
222     Require all denied
223 </Directory>

Then, the mod_vhost_alias module needs to be activated. We must uncomment line 160, so:

159  #LoadModule dav_lock_module libexec/apache2/mod_dav_lock.so
160  #LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
161  LoadModule negotiation_module libexec/apache2/mod_negotiation.so

becomes

159  #LoadModule dav_lock_module libexec/apache2/mod_dav_lock.so
160  LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
161  LoadModule negotiation_module libexec/apache2/mod_negotiation.so

and on line 509 (line 500 in Yosemite and El Capitan, and line 477 before Yosemite), in order to allow us to add multiple websites to Apache:

508  # Virtual hosts
509  #Include /private/etc/apache2/extra/httpd-vhosts.conf
510

becomes

508  # Virtual hosts
509  Include /private/etc/apache2/extra/httpd-vhosts.conf
510

This tells apache to load the information in the httpd-vhosts.conf file in the /private/etc/apache2/extra/ directory. We need to edit that file. You can delete or comment out everything in that file, and replace it with the following:

<Directory "/www">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

<Virtualhost *:80>
  VirtualDocumentRoot "/www/home/wwwroot"
  ServerName home.dev
  UseCanonicalName Off
</Virtualhost>

<Virtualhost *:80>
  VirtualDocumentRoot "/www/sites/%1/wwwroot"
  ServerName sites.dev
  ServerAlias *.dev
  UseCanonicalName Off
</Virtualhost>

<Virtualhost *:80>
  VirtualDocumentRoot "/www/sites/%-7+/wwwroot"
  ServerName xip
  ServerAlias *.xip.io
  UseCanonicalName Off
</Virtualhost>

Then run the following to force Apache to load your new config files:

sudo apachectl restart

This configuration allows you to use the URL http://client1.dev on your local machine with your site files stored in /www/sites/client1/wwwroot. It also allows you to use the service xip.io to use the URL http://client1.[LOCAL IP].xip.io to access your sites from another machine (or device) on your local network. So, if your machine’s local IP address (not your public IP address), is 192.168.1.10, the URL for a site might be http://client1.192.168.1.10.xip.io. You can find your local IP address in your network preferences.

Xip.io is offered for free by Basecamp and provides one of the simplest services on the internet. They run a simple DNS server that redirects all traffic to *.xip.io back to the IP address indicated by the subdomain.

Now you don’t need to update config files every time you add a new site. Simply add the necessary folders to your “sites” directory, and the site will work locally with its own subdomain.

A Custom Home Page

Now that you have a bunch of local sites running on your machine, you can bookmark them all, or you could do something fancy, and create your own custom home page that lists all the sites currently available on your machine.

If you’ve got the development chops to build this yourself, go right ahead. All you need is some kind of script that can analyze your sites directory, and a way to output it. I have a PHP script that I’ve used for years to do this. Disclaimer: I do not use PHP very much, and my code is rough. If you’re better at PHP than me, which is likely, and have suggestions for improvement, by all means let me know, or submit a pull request.

Early YT-1300 by Walter Vail

This is an interesting take and mod on an iconic ship.  It’s another great piece of work by Walter Vail of http://www.imagereplicas.com/. I really like how he chose the base color to appear lighter as if a newer fresher paint job from the traditional feeling the well space traveled Millennium Falcon.

Corellian Engineering Corp. early YT-1300 freighter. The earlier freighters had cylindrical engines before the “wide bar” engines were developed. However, some freighter pilots preferred the older engines. This one still has the offset cockpit but the dorsal laser cannon has been upgraded to a heavy turbo laser during refit.

1453417_10207047031308928_7562246432523719036_n Continue reading