Through the use of Google Analytics you can see how visitors to your website are spending their time, what’s important to them and what’s being ignored. This seminar will demystify analytics and give you the insight you need to better manage your web property.
Topics include:
The history of web analytics
Installing Google Analytics
Terminology and jargon
Standard and Custom Reporting
Real-Time statistics
Measuring the success of SEO
Creating custom dashboards
Using GA with other systems (Eventbrite)
Looking to the future
You will have an opportunity to discuss your specific requirements and situation with a web professional who can make suggestions and recommendations.
This seminar will be useful for anyone responsible or interested in website management.
The content is of a moderate technical nature. No programming experience is required. A laptop is not required. Wireless internet access is available.
So I was working on an old, crusty veteran of a git repo and I noticed it had ~300 branches on remote. This rubbed me the wrong way so I spent some time cleaning up all of those branches. Here’s what I learned:
Finding Branches
git fetch will pull down all the remote refs
git remote prune your_remote will remove any remote refs you have locally that have been removed from your remote
git branch will show all of your local branches
git branch -a will show all of your local/remote branches
git branch -a --merged will show you all of the branches that have been merged into your current branch.
git branch -a --no-merged will show you all of the branches that haven’t been merged into your current branch.
Deleting Branches
git branch -d branch_name will delete the given branch locally
git push your_remote :branch_name will delete the given branch on your remote.
Putting it together
So, deleting those excess branches might look something like:
git checkout develop
git fetch
git remote prune your_remote # Don't show branches that have already been deleted
git branch -a --merged # This will show all branches that have been merged into develop
You can easily write a bash script (or ruby, or whatever) that goes through (maybe as a cron job) and deletes merged branches.
I elected not to do this for now because I have a strong aversion to the combination of ‘automatic’ and ‘hard-delete’ .
One thing to keep in mind here is that if you have a master branch and a develop branch (like in git flow) running the command git branch --merged will likely list develop from the master branch.
Keeping it clean
For the first ~290 branches I had sitting around, I copy and pasted all of the branch names into a new textmate window and used the bulk line update to prepend git push your_remote : to each line, then I ran that file as a shell script.
Moving forward, I just ensure that any time a feature branch is merged into develop I delete that branch locally and remotely. That way the repo is always nice and slim.
As designers and developers we all have a favourite browser. We will most likely test web sites and applications in that favourite browser until it is necessary to test in the variety of other browsers out there, to ensure compatibility.
As much as we’d like to think everyone was using the latest and greatest (remember latest and greatest in web browser world means “works well and attempts to be standards compliant”) these two images from Google Analytics last week show just how diverse the audiences can be.
The top 62% of visitors to the site are using some variety of Internet Explorer. IE7 still has a reasonable high percentage and IE6 also cracks the top 10.
These stats are from our blog (tech focused). Internet Explorer is nowhere in sight and Chrome which is used by the majority here at The Frontier Group reigns supreme amongst the tech community.
So as much as those of us in the web industry cringe every time IE is mentioned it’s important not to lose sight of the target audience you’re building for.
I love the RSpec let syntax. I especially love using let blocks to declare everything on the planet. However, I was noticing a lot of duplication in my code so I knocked up the below pattern to deal with the issue:
The pattern I’m referring to above is declaring and using the vehicle_attributes object to set attributes on an object. The benefits of this pattern is that I’m able to set specific attributes on an object on a per-context basis without having to re-write my call to the factory. The issue that caused me to start using this pattern was having a declaration at the top of the file that was getting overloaded with ‘common’ attributes. My vehicle declaration started to look like:
Which worked well enough until I had 4 common attributes on vehicle and 3 other objects that were being created with multiple common attributes as well. My spec file was starting to get ugly.
Even worse, I was declaring vehicle multiple times within describe blocks for other methods.
So, by using the above pattern you can avoid a fair bit of duplication in your specs and keep everything neat and tidy.
Plus, it’ll reduce the amount of code you have to type which gives you more time to browse r/aww