Tech Consultant. Backend Developer. Frontend Developer. Designer. Adventure Time Super Fan.

Shopify collection ordering

There is no way to order collections in Shopify without using a manually defined LinkList, which can’t be exported via API or saved in themes. It’s always admin configured.

An alternative is a method to hard code collection handles, then iterate through all collections, only pulling matching collections handles.

It may "feel" inefficient, but Shopify pages are massively cached, and a few for loops are the least of our problems. Unless we have impossibly more collections.

{% assign collection_handles = 'sport,casual,dress,bespoke' | split: "," %}

{% for collection_handle in collection_handles %}
{% for collection in collections %}
{% if collection.handle == collection_handle %}
{{ collection.title }}

Serve Django HTTPS over localhost

The easiest way to do this is to use an app called django-sslserver.

It adds a new management command that serves content over SSL, and generates its own certificates.

I had tried things like stunnel… and ultimately this was the easiest solution.

I need it purely to test a Shopify app which must be served over HTTPS.

Django 400 Bad Request, even with Allowed Hosts

I just had to break down django itself to understand why I could not get rid of my error.

It turns out underscores in domain names is invalid according to the RFCs.

Make sure your domains do not have underscores. If they do, you’ll have to patch django’s host validation function:

host_validation_re = re.compile(r"^([a-z0-9.-]+|\[[a-f0-9]*:[a-f0-9:]+\])(:\d+)?$")

Apple Bluetooth Keyboard – When All Else Doesn’t Work

NO bluetooth devices were working on my computer, suddenly (yosemite).

- Hold down the power button continuously. Check.
– Remove batteries, turn off bluetooth, add batteries, power up, turn on bluetooth. Check.
– Fresh batteries. Check.
– Distance / remove all other BT devices. Check.

A good old restart fixed my problem instantly. Instant pairing request / detection of my devices.

It looked to have installed an update on startup, so it was a much needed restart.

Watch a child property / array with AngularJS

Turns out you cant. You’ll find a lot of people jumping to $scope.$watchCollection, which triggers on inserts/removes/sorts, but not updates.

You can watch all changes on an array simply by passing it $scope.$watch(‘myarray’), but that triggers on any change and doesn’t target a particular array item.

The answer is really to generate a child controller with a child scope.

<div ng-repeat="item in items" ng-controller="ChildController"></div>

app.controller('ChildController', function($scope) {
$scope.watch('itemProperty', function() {console.log("Child property changed")

Chrome opacity transition bug shows a flickering box

I found a bug with Chrome transitions on opacity fades which is caused by using a custom cubic bezier function for easing.

Try removing your custom cubic beziers in your CSS3 transitions and use "ease" or "linear".

Solution to sudden inertial scroll loss issues, and scrollTop() == 0 on mobile

The sudden loss of inertial scroll on one of my websites has had my head scratching for literally a year.

When I ran into it again, alongside issues with scrollTop() always returning 0, and being unable to move the viewport on mobile, I stumbled across the fix: html/body must NOT have a height set to 100%.

Sadly, the sticky footer solution I use requires 100% height (and no min-height will not work). Ultimately I have ended up repeatedly using both media queries, and JS based platform detection to target styles most effectively.

There it is though: if you have issues with inertial scroll loss or scrollTop not functioning, check if you have html/body set to 100% height.

Photoshop: Define save for web settings for all slices at once

Use the slice selector tool in the save for web dialog, drag a box around all slices, then set the slice settings.

IMO whatever output settings you select should default to all slices.

Tar a directory without including its parents

To tar a directory without its parent, simply use the -C or –directory flag to specify the directory to "cd" into, then provide "." as the directory to tar.


To tar everything in /foobar/ without including /foobar/ in the path names, run

tar -zcvf foobar.tar.gz -C foobar/ .

That simple.

Google maps V3 API Wrong Marker Position

Don’t use zoom values that are not integers (2.7) caused huge problems for me.

It may have to do with the supporting marker customization libraries, as this problem was only apparent when customizing the marker heavily.


Get every new post delivered to your Inbox.

Join 100 other followers