Skip to content

Instantly share code, notes, and snippets.

@taeram
Last active July 6, 2016 20:13
Show Gist options
  • Save taeram/4676813 to your computer and use it in GitHub Desktop.
Save taeram/4676813 to your computer and use it in GitHub Desktop.
Web Development brain dump

These suggestions are geared towards the Linux/MySQL/Apache/PHP portion of the code-o-sphere.

Source Control

There are many flavours of source control, like CVS, Perforce, SVN, git and Mercurial. I've used CVS, SVN and git, and my overall favourite is git.

Free hosting of public git repositories, and a great social coding environment can be found on GitHub. I'd highly recommend contributing to some open source projects on GitHub, or creating your own projects, as it's an excellent place to point potential employers to, as they can actually see code you've written.

If you want to host private git repositories, Bitbucket allows you to host an infinite number of private repos for teams of up to 5 users.

Development Environment

One of the most important things can be your IDE. I'd recommend one of: Sublime Text or Atom. My current favourite is Atom, as it offers lots of keyboard shortcuts and has great community support.

In terms of my OS, I'm using Ubuntu on a typical business desktop machine, with a good keyboard and mouse, and two monitors (which I would say are essential).

For connecting to MySQL servers, I love SQLyog. It's a windows based program, but it works great in Linux using Wine.

A few handy Atom plugins:

  • atom-autocomplete-php
  • docblockr
  • editorconfig
  • linter-php
  • php-getters-setters
  • I don't like the defaults provided, so instead I use this configuration
  • php-twig
  • project-manager
  • sort-lines
  • tabs-to-spaces

Browser

My web dev browser of choice is Chrome. Here's a list of Chrome extensions I use for development.

Testing in Internet Explorer can be difficult, but I've found it's easiest to use VirtualBox and IE Virtual Machines from Microsoft.

Team Processes

I use GitHub to host my code, which allows me to do code reviews on every feature branch before it's merged into master. The process is pretty much GitHub Flow.

Team communication is done over HipChat, Telegram or email.

I often do pair programming when working on big problems (two heads are better than one), or for knowledge transfer. I think that everyone on the team should be at least familiar with everything in our code base, so we don't end up with just one person having to work on a particular area because nobody else knows enough about it (siloing).

For bug tracking and sprint planning, I'm using Kanboard, as it's easy to install (MySQL/PHP) and has the features I need. For larger or more complex teams I've used JIRA, which is also awesome.

Continuous Integration

I'd say that Continuous Integration (CI) and unit tests are absolutely necessary for larger projects. If run your unit tests before you push your code to production (or even testing) servers, you'll immediately know if there's something amiss.

I like Jenkins for private projects, and for my personal projects Travis is great as it's free for public GitHub repos.

Forums / News

  • Stack Overflow is one of the first places I go if I have to ask a question.
  • Hacker News has a great set of developer centric news articles.

Frameworks (PHP)

PHP:

  • Composer - The PHP dependency manager
  • Doctrine - ORM and database migration framework. Very, very awesome.
  • Symfony - One of the most popular and robust PHP frameworks.
  • Silex - An excellent wrapper around the more complex parts of Symfony.

Unit Testing:

  • PHP Unit - PHPUnit is the standard for PHP unit testing. There are other frameworks, but I think PHP Unit is the best right now.
  • If you do unit testing, definitely familiarize yourself with Mock Objects, the Factory design pattern and Dependency Injection, all of which can make your code easier to test, and easier to use.

Python:

  • Flask - My current favourite python micro-framework. Great for both small and large projects.

Misc:

  • Ant - We use this to roll out our software on our production server (move files around, minify our CSS and JS)
  • Grunt - A nice replacement for Ant if you have node.js installed.

JavaScript:

  • jQuery - standard tool
  • React - React is my current favourite, as it's really performant and relatively simple.
  • PHPJS - comes in very handy
  • Moment.js - date handling in JavaScript sucks, but this makes it easier
  • UglifyJS - minifies your JS

CSS:

Hosting

For smaller client sites I recommend Digital Ocean because you can't beat a $5/mo server. For larger sites, I recommend AWS EC2. However, be aware that there is a decent learning curve associated with deploying things to AWS.

For playing around with various development stacks, I recommend Heroku. Heroku has one-click installs for a lot of different services and technology. They're a bit expensive to host on at $7/mo per site.

My personal favourite for my own hosting needs is NFO Servers, as you can get a shared webhosting account for $3/mo with generous usage limits. You can also get a VPS for $8/mo, which is what I'm currently using. In my opinion, their $8/mo VPSes outperform the $10/mo Digital Ocean droplets.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment