Skip to content

Instantly share code, notes, and snippets.

@alexjlockwood
alexjlockwood / HappyValentinesDayView.swift
Last active February 14, 2025 03:20
A cute lil happy valentines day animation in SwiftUI
import SwiftUI
/// Happy Valentines Day!
struct HappyValentinesDayView: View {
@State private var progress: CGFloat = 0
var body: some View {
AnimatedStrokePath(progress: progress)
.trim(from: 0, to: progress)
.stroke(.red, style: .init(lineWidth: 6, lineCap: .round, lineJoin: .round))
@alexjlockwood
alexjlockwood / RingOfCircles.swift
Last active December 1, 2024 15:37
Ring of Circles animation written in SwiftUI
import SwiftUI
private let kNumDots = 16
private let kTau: CGFloat = 2 * .pi
private let kDotPeriod: CGFloat = 10
private let kWavePeriod: CGFloat = 10 / (4 * kTau)
private let kRingRadiusFactor: CGFloat = 0.35
private let kWaveRadiusFactor: CGFloat = 0.10
struct RingOfCircles: View {
@alexjlockwood
alexjlockwood / SegmentedControl.kt
Last active September 23, 2024 02:10
A simple animated segmented control component written with Jetpack Compose
package com.example.segmentedcontrol
import androidx.compose.animation.ExperimentalSharedTransitionApi
import androidx.compose.animation.animateBounds
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.IntrinsicSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding
// This file is automatically generated. Do not edit.
package com.lyft.android.design.coreui.compose.attributes
import com.lyft.android.design.coreui.compose.components.Icon
import com.lyft.android.design.coreui.compose.components.IconButton
import com.lyft.android.design.coreui.iconography.R
/**
* Definitions for LPL iconography.
@alexjlockwood
alexjlockwood / detach-color-styles.ts
Last active September 12, 2023 12:49
This plugin recurses every layer in every page of the current figma file, and detaches color styles that are backed by a single bound color variable.
// This plugin recurses every layer in every page of the current figma file, and detaches
// color styles that are backed by a single bound color variable.
(function main() {
recurseLayerHierarchy(figma.root, false);
figma.closePlugin();
})();
function recurseLayerHierarchy(node: BaseNode, isChildOfInstanceNode: boolean) {
if (node.type === 'INSTANCE') {
using System;
using System.Collections.Generic;
using System.Linq;
using FG.Common;
using SRF;
using UnityEngine;
namespace Levels.CrownMaze
{
// Token: 0x020004C1 RID: 1217
using System;
using System.Collections.Generic;
using System.Linq;
using FG.Common;
using Levels.ProceduralGeneration;
using MPG.Utility;
using UnityEngine;
namespace Levels.CrownMaze
{
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- This module was also published with a richer model, Gradle metadata, -->
<!-- which should be used instead. Do not delete the following line which -->
<!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
<!-- that they should prefer consuming it instead. -->
<!-- do_not_remove: published-with-gradle-metadata -->
<modelVersion>4.0.0</modelVersion>
<groupId>androidx.compose.foundation</groupId>
<artifactId>foundation</artifactId>
{
"formatVersion": "1.1",
"component": {
"group": "androidx.compose.foundation",
"module": "foundation",
"version": "1.5.0-beta01",
"attributes": {
"org.gradle.status": "release"
}
},
@alexjlockwood
alexjlockwood / ClosedOpenOpenClosed.md
Last active August 16, 2022 20:45
How to Timeout Closed-Open + Open-Closed

Closed-Open + Open-Closed

Closed-Open + Open-Closed is considered the 4th hardest Roll Off variation to timeout. The first 8 laps are very easy, with 3 easy jumps to start on blue and 3 easy jumps to end on orange. However, the variation becomes very difficult to execute on laps 9-12 when the slime has reached it's maximum height.

Paths

There are 2 possible paths to take on laps 9-12 of the timeout:

Alex's Path