Controlling Laravel Homestead VM From Any Folder in Terminal

Having a single Vagrant VM for all of my projects is nice, but I was used to controlling Vagrant from within a project's folder in Terminal and not having to go back to the central Homestead folder to run things like vagrant up or vagrant reload.

Adding these to my Oh-My-Zsh config (.zshrc) seems to do the trick:

alias devup="cd '/Users/gtaylor/Sites/Work/Homestead' && vagrant up && cd - 1> /dev/null"
alias devreload="cd '/Users/gtaylor/Sites/Work/Homestead' && vagrant reload && cd - 1> /dev/null"
alias devdown="cd '/Users/gtaylor/Sites/Work/Homestead' && vagrant halt && cd - 1> /dev/null"

I'm using these in conjunction with `alias dev='ssh [email protected] -p 2222'` from the Homestead documentation.

"Extending" Laravel's Homestead

I put off moving my existing vagrant dev VMs over to [Laravel's Homestead](http://laravel.com/docs/homestead) for a couple of reasons:

  1. It doesn't completely match my production environments (Ubuntu 14.04 instead 12.04, PHP 5.5 instead of 5.4, Nginx instead of Apache).
  2. I knew I'd need to customize the VM anyway and I already had that worked out with my existing VMs (note the plural).

Thoughts on Laracon Day 1

I'm at Laracon 2014 in NYC, and as I predicted, it's a little overwhelming - in Lower Manhattan, seeing in-person all of these people I've been following and learning from the last year or so, and listening to really smart people talk about stuff which, in some cases, is a little over my head. But it's all good, in spite of a few kinks with the venue.

 

I think I fully grasped/comprehended about 50% of the talks, which is fine. That's probably a better percentage than some design patterns books I've read the first time thru. Taylor Otwell's keynote was an exception in that I fully understand the headaches with dev environments and deployment, so Homestead and Forge providing the "artisan"-like bookends to developing with Laravel makes perfect sense. I hope that Forge can (eventually) work with existing VPS environments to some degree, as I don't deploy new environments often, but would love to use it for some existing VMs that don't use the hosting providers currently supported.

 

Photo Credit: https://twitter.com/brianwebb01/status/467072660023676928

Goodbye Wordpress, Hello "Brewski"

Since most of my work is "in-house" and won't ever reside on Github, and because needed to project that I would start using right away, and because Wordpress can be a PITA to work with at times, I decided to build my own [Laravel](http://laravel.com)-based blogging system. It's still very rough, un-stable, and written by a hack (me), but it's now powering this site. Having a personal project that I'm using right away, and with the code exposed on Github, is a nice motivator to keep working on it - so after many false starts, I think I've finally found a personal project that will keep me interested for a while.

 

Current Features:

  • Laravel-based
  • Themeable
  • Basic Disqus integration
  • Basic Social Media integration (in-progress)
  • Responsive Admin (bootstrap)
  • Markdown-based editor
  • Page caching
  • Basic Search
  • Categories & Tags

TODO:

  • Pages
  • Unit Tests
  • Lots of code cleanup/refactoring Github: https://github.com/rufhausen/brewski

My “toolbox” re-visited

Every developer’s toolbox changes and evolves over time, even the old Reluctant Developer’s. In fact, I go through periods where I spend way too much time trying to find the next app that’s going to get me over the hump from hack to rock star. I haven’t found it yet because it doesn’t exist, but it’s still interesting exchanging some of the tools in the toolbox now and then, and sometimes finding that app that really makes a difference in one’s workflow.

So here’s a list of what I’m using now, along with a brief (sometimes very brief) explanation of “why”:

Operating System: OS X

This hasn’t changed in six years and will not be changing anytime soon. Aside from the aesthetics and being an Apple fanboy, OS X is just easier to work with when developing in languages like PHP that are being deployed to *nix servers and depending on things like Git, MySQL, etc. It’s a pretty seamless transition between working in the OS X terminal and an Ubuntu box terminal.

Code Editor: Sublime Text 3

Once you install Package Control and master the keyboard shortcuts, there’s no looking back. Extremely fast (start-up and searches), lightweight, packages for everything. Multiple selections = awesome. Got rid of Dreamweaver years ago (flaky). The Eclipse-based editors just seem really bloated to me. I used to use Coda, but after waiting for Coda 2, it became apparent that it was trying to do too much and was attracting it’s own bloat.

PHP Framework: Laravel

It’s just getting bigger, stronger, faster. I’ve deployed 2 apps now using Laravel 4, and though I still have a lot to learn, I’ve had no regrets in moving to PHP and to this still “new” framework.

CSS Framework: Bootstrap

 I’m not a designer and never will be. With bootstrap, I can put something out there that isn’t ugly, is consistent, and is responsive with very little effort.

MySQL Administration: Sequel Pro

Used to be a little buggy, but has come along nicely. Handles imports/exports every easily. Nice custom query editor.

Version Control: Git

Not an expert by any means, but Git is very powerful, yet pretty simple to use once you get the basics down. Though I do use SourceTree occasionally when I forget how to do certain things in Terminal, most of my interaction with Git is via the CLI:

git status
git add . 
git commit -am 'message' 
git push test

That’s pretty much it on a daily basis. Projects git pushed up to Bitbucket for safe-keeping and sharing with other team members. I use git hooks to do things like resetting file permissions after a push to test/prod, empty caches, run Laravel migrations, etc. I also use git tags to maintain and display the application versions in the footer of apps.

Development Environments: Vagrant]/Virtualbox 

I recently gave up on MAMP after running into several issues with not having identical environments between dev/test/prod. I decided to commit to a [simple Vagrant setup](https://github.com/rufhausen/super-simple-vagrant-laravel) using a single shell script to set up each environment.

FTP client: Transmit

 It works. Has a nice sync view between local and remote. Syncs favorites via Dropbox or iCloud.

That’s it. I don’t use anything else enough to warrant a mention.