Skip to content

Instantly share code, notes, and snippets.

@hafichuk
Forked from taeram/web-dev-brain-dump.md
Created January 21, 2014 15:30
Show Gist options
  • Save hafichuk/8542215 to your computer and use it in GitHub Desktop.
Save hafichuk/8542215 to your computer and use it in GitHub Desktop.

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 definitely 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: Eclipse, NetBeans or Sublime Text. My current favourite is Sublime Text, as it has lots of shortcut keys and a really slick interface, but it's missing some of the more advanced features that I've relied upon in the past, like code completion (Ctrl + Space when typing code to see a list of callable functions w/ their input parameters). For that reason, I'd say definitely check out Sublime Text, but NetBeans is probably your best choice if you're just starting out.

In terms of my OS, I'm using Ubuntu 13.10 on a typical business desktop machine, with a good keyboard and mouse, and two 24" 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.

Browser

My web dev browser of choice has been Chrome for over a year now. I used to use Firefox, but it can get really slow with all the development addons installed, and Chrome does almost everything I used to do in Firefox. The only times I go back to Firefox is if I have to do JavaScript profiling (Eg. why is this so slow, do a trace to find out).

Here's a list of Chrome extensions we use at Blackline. The Blackline/JIRA one won't be installable, as it's a "private" extension, but the rest of them are available to all.

Since I develop on Linux, it makes it more difficult to test in Internet Explorer, so we use Browser Stack to test remotely in IE, which works really nicely. If you can't afford a paid service, a VirtualBox VM with Windows installed on it is your next best bet. The ievms project provides a really simple way to setup IE VM's for testing.

In terms of IE version support, I would strongly suggest to only support IE8 and up (unless your client absolutely must have IE7).

Processes

We use GitHub to host our code, and to allow us to do code reviews on every feature branch before it's merged into master. Our process is pretty close to GitHub Flow. This means we're pushing new code to our production server at least once every couple days, up to several times per day.

We try to keep as much as possible low tech, as low tech is simple, so a lot of our team communication is either via HipChat, or via a common whiteboard.

We try to do a good amount of pair programming, which works really well when we have a really big problem we're trying to solve (two heads are better than one), or if one developer knows way more about an area than another developer (knowledge transfer). We try to keep everyone on the team knowledgeable about 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.

For bug tracking, we're using JIRA. However, for smaller companies, Mantis is pretty good.

If you want something you don't have to install, FogBugz is free for small / student teams, and is pretty good.

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.

We use Jenkins at work, but for my personal projects, I've been using Travis, which is 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:

  • Zend Framework - we're using Zend 1.X, but I'd recommend using Zend 2, as it's much nicer
  • Doctrine - our ORM / database migration framework. Very, very awesome.
  • Composer - useful for managing PHP dependencies

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)

JavaScript:

  • jQuery - standard tool
  • Backbone.js - really excellent, I'd recommend at least familiarizing yourself with what it can do. It allowed us to simplify a lot of our JS.
  • React - React is my current favourite, as it's really performant and relatively simple.
  • PHPJS - comes in very handy
  • Sound Manager - works, but not very well. However, it's just about the only framework out there that does what it does.
  • Moment.js - date handling in JavaScript sucks, but this makes it easier
  • UglifyJS - minifies your JS

CSS:

  • Twitter Bootstrap - My absolute favourite CSS framework. A developers best friend.
  • Font Awesome - a great addon to Twitter Bootstrap
  • Less CSS - Twitter Bootstrap is written using less, and you can also use the lessc command line utility to minify your LESS / CSS

Hosting

It's often difficult to find good, inexpensive hosting. I host a number of my clients on AWS EC2, but for project sites / small clients, I would recommend Heroku, as I've used it for several personal projects, and I think it's completely awesome.

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