Skip to content

Instantly share code, notes, and snippets.

View mjm's full-sized avatar
😴
I'm probably napping

Matt Moriarity mjm

😴
I'm probably napping
View GitHub Profile
@mjm
mjm / LinkedText.swift
Created May 21, 2020 03:56
Tappable links in SwiftUI Text view
import SwiftUI
private let linkDetector = try! NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue)
struct LinkColoredText: View {
enum Component {
case text(String)
case link(String, URL)
}
@mjm
mjm / main.go
Created March 21, 2019 21:31
Instant clone a vSphere VM
package main
import (
"context"
"flag"
"fmt"
"net"
"net/url"
"os"
"path"
@mjm
mjm / ManagedObjectChangesPublisher.swift
Created November 3, 2019 20:41
Observe changes to a Core Data fetch request with Combine
import Combine
import CoreData
extension NSManagedObjectContext {
func changesPublisher<Object: NSManagedObject>(for fetchRequest: NSFetchRequest<Object>)
-> ManagedObjectChangesPublisher<Object>
{
ManagedObjectChangesPublisher(fetchRequest: fetchRequest, context: self)
}
}
@mjm
mjm / aoc2021.livemd
Last active December 18, 2021 15:42
Advent of Code 2021 solutions

Advent of Code 2021

Setup

The code below is not specific to any one Advent of Code problem, but instead is used by some or all of the problems.

defmodule AdventOfCode do
@mjm
mjm / Observables.swift
Created July 3, 2020 13:50
StateObject vs. ObservableObject
// If you run this in a playground in Xcode 12, you can see the difference in behavior in the live view.
import SwiftUI
import PlaygroundSupport
class Counter: ObservableObject {
@Published var count: Int
init(_ initialCount: Int) {
self.count = initialCount
@mjm
mjm / date.clj
Created January 20, 2009 20:43
;;; A date library that follows principle of least surprise
;;;
;;; A few usage examples:
;;;
;;; user> (now)
;;; {:second 24, :minute 10, :hour 0, :type
;;; :clojure.contrib.date/DateTime, :year 2009, :month 1, :day 23
;;; :zone "America/New_York"}
;;;
;;; user> (today)
@mjm
mjm / example-feed.json
Last active September 18, 2018 02:45
A sample JSON feed for experimenting
{
"version": "https://jsonfeed.org/version/1",
"title": "My Example Feed",
"home_page_url": "https://example.org/",
"feed_url": "https://example.org/feed.json",
"items": [
{
"id": "3",
"content_html": "<p>This is a test post with an image:</p><img src=\"https://i.imgur.com/VBnsOdM.jpg\">",
"url": "https://example.org/3"

Keybase proof

I hereby claim:

  • I am mjm on github.
  • I am mmoriarity (https://keybase.io/mmoriarity) on keybase.
  • I have a public key ASAUZ6JhJyj8M6SIMQyxH8ZN7Sdj8qGjGMIQbzAnaMZEQAo

To claim this, I am signing this object:

@mjm
mjm / router_test.js
Created September 22, 2015 00:26
Independent routers don't isolate their middleware
var express = require('express');
var app = express();
var router1 = express.Router();
router1.use(function (req, res, next) {
console.log('router1 middleware called.');
next();
});
router1.get('/1', function (req, res) {
@mjm
mjm / ordered_log.js
Last active December 29, 2015 01:49
function deansi(log) {
var ansi, text;
log = log.replace(/\r\r/g, '\r').replace(/\033\[K\r/g, '\r').replace(/\[2K/g, '').replace(/\033\(B/g, '').replace(/\033\[\d+G/g, '');
ansi = ansiparse(log);
text = '';
ansi.forEach(function(part) {
var classes = [];
part.foreground && classes.push(part.foreground);
part.background && classes.push('bg-' + part.background);
part.bold && classes.push('bold');