Skip to content

Instantly share code, notes, and snippets.


Luke Pighetti lukepighetti

View GitHub Profile
lukepighetti / main.dart
Last active June 2, 2023 12:23
Need UUIDs that are shorter and URL safe? UUID -> hex bytes -> Base64Url
View main.dart
import 'dart:convert';
import 'package:uuid/uuid.dart';
void main(List<String> arguments) {
final uuid = "57290fdf-790f-4894-859e-3db0ae087f0e";
final codec = ShortUuidCodec();
final encodedUuid = codec.encode(uuid);
final decodedUuid = codec.decode(encodedUuid);
lukepighetti / fragment.glsl
Last active May 20, 2023 23:05
WebGL mesh gradient shaders from, all credit to Burak Aslan
View fragment.glsl
#define MAX_POINTS 16
precision mediump float;
uniform sampler2D texture;
uniform vec2 points[MAX_POINTS];
uniform float s2[MAX_POINTS];
uniform vec2 w[MAX_POINTS];
uniform int npoints;
uniform int warp;
lukepighetti / rounded_rectangle.dart
Created May 4, 2023 20:07
Boring RoundedRectangle with platform aware superellipse corners
View rounded_rectangle.dart
import 'dart:io';
import 'package:figma_squircle/figma_squircle.dart';
import 'package:flutter/widgets.dart';
class RoundedRectangle extends StatelessWidget {
const RoundedRectangle({
this.radius = 10,
View auto_fill_text.dart
import 'package:app/extensions.dart';
import 'package:flutter/material.dart';
class AutoFillText extends StatelessWidget {
const AutoFillText(
this.text, {
this.minFontSize = 18,
lukepighetti / app_store.dart
Last active April 18, 2023 18:23
A crusty but nice way to deal with ChangeNotifier stores in dart
View app_store.dart
import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '/app/store_architecture.dart';
import '/feedback/feedback_store.dart';
import '/par/par_store.dart';
import '/settings/settings_binding_observer.dart';
import '/settings/settings_store.dart';
View stupid_simple_testing.dart
extension on WidgetTester {
Future<void> launchApp() async {
await app.main();
await pumpAndSettle();
Future<void> clearState() async {
await SharedPreferences.getInstance().then((it) => it.clear());
lukepighetti /
Created March 21, 2023 15:55
A very basic mock python server
# flask --app server run
from dataclasses import dataclass, asdict
from typing import Generic, List, TypeVar
from flask import Flask
app = Flask(__name__)
T = TypeVar("T")
lukepighetti / .zshrc
Created March 3, 2023 15:41
marksman environment for note taking
View .zshrc
# launch daily notes with `notes`
# launch specific notes with `notes woodworking`
# this is a cloud synced file, so it's live on all my devices
function notes(){
if [ -z "$SUBJECT" ]
(cd ~/Documents/notes && hx
(cd ~/Documents/notes && hx "${SUBJECT:u}.md"

I was trying to do some performance profiling of our production app and I noticed a certain function was taking a lot more time than I expected (350ms vs 1ms), so I started to dig deeper. In doing so, it looked like if I changed that function from a Future<String> to a String with no other code changes (it could have been written as a FutureOr), the execution time of that code branch reduced to expected levels.

I posted about this on Twitter and created a reproduction.

This code runs in a fresh Flutter app on iOS Simulator.

It almost looks like a flurry of concurrent Futures are queueing up and delaying other futures.