Skip to content

Instantly share code, notes, and snippets.

View lachlanjc's full-sized avatar
🏳️‍🌈
(they/them)

Lachlan Campbell lachlanjc

🏳️‍🌈
(they/them)
View GitHub Profile
@lachlanjc
lachlanjc / spatial-computing.md
Created March 6, 2024 07:53
v0 of spatial computing article

Why I’m long on spatial computing

Buckminster Fuller's ephemeralization as the central conceit. Humans are better adapted to spatial computing than screen computing. Spatial computers require pushing display, camera, battery, networking, storage, and silicon to infinity (areas where Apple has been investing for awhile!) with an array of biometrics & enchanted devices/accessories. The interfaces are better, the form factor will become more portable, it’s the ultimate modular computer. I think spatial computers will replace all our desktop/laptop/tablet computers to start, phones last, some other wearables ~never.

Why spatial?

Human brains are dramatically better-adapted to physical spaces & tools than virtual ones. I knew how to use Blender way better 5 years ago, but there's basically no muscle memory for software years later. Taking a break from knitting for 5 years, I forgot nothing about the physical motions. Our brains remember physical spaces & interactions better, and our brains are no longer ev

@lachlanjc
lachlanjc / apple_silicon.md
Created November 12, 2020 00:47
A quick explainer on the first wave of Apple Silicon

These first Apple Silicon Macs are to replace the lowest-end models of the Mac, but all the higher-end computers are coming in the next year or two. The 13” MacBook Pro has been two confusingly-similar computers for 4 years: the entry model is basically a thicker MacBook Air for people who want a Pro (in 2016, this was the MacBook Pro without a Touch Bar with two USB-C ports), they now have the Touch Bar but still 2 ports.

When you go to buy MacBook Air, all models have been replaced with M1—because the M1 models are faster & better in every way than the previous generation. Whereas when you buy the Mac mini & MacBook Pro, they’re still selling the higher-end models powered by Intel, including the 4-port models, because the first wave of Apple Silicon doesn’t replace those models. The inclusion of 2 USB-4 ports is because the M1 chip itself includes 2 USB-4 bridges built in, & by using the same chip across all the computers, since the MacBook Air only has the two ports, they had to standardize the design. (T

body {
font-family: 'Avenir Next', system-ui;
}
h1 {
color: #ec3750;
}
import React from 'react'
const makeTitle = (title, name) =>
title === name ? title : `${title} – ${name}`
const Meta = ({
name = 'Hack Club', // site name
title = 'Hack Club', // page title
description,
image,
@lachlanjc
lachlanjc / start.md
Created March 26, 2018 15:30
Favorite Song site

Favorite Song site

1. Open Glitch

Open Glitch, click on "hello-webpage", and click "Remix your own."

2. Start your HTML

HTML is the language we use to write webpages. Every website you've ever visited uses HTML, and yours is no different.

@lachlanjc
lachlanjc / home.html.erb
Created February 7, 2017 15:42
Make Schema metadata generation easy in Rails
<%= make_scheme org_schema %>
@lachlanjc
lachlanjc / rehide.coffee
Created November 4, 2016 16:55
For when you need an element to be hidden on page load, but respond to jQuery's .show() or .toggle() later, use Rehide.
$(document).ready ->
# Assuming .hidden sets display: none
$('[data-behavior~=rehide]').hide().removeClass('hidden')
@lachlanjc
lachlanjc / Header.js
Created August 21, 2016 00:41
Styling multiple elements with react-cxs
const Header = () => {
const cx = {
root: {
backgroundColor: colors.blue,
color: colors.white,
paddingBottom: space[4],
paddingTop: space[4]
},
container: {
margin: 'auto',
//---------------------------
// Grid object
//---------------------------
$__col-values: (4, 6, 8, 9, 12);
@media #{$breakpoint-sm} {
@each $size in $__col-values {
.col-#{$size}--sm {
width: ($size/12 * 100%);
//-----------------------------
// Units functions
//-----------------------------
// Strip units from passed value
@function stripUnit($n) {
@return $n / ($n*0+1);
}
//---------------------------