Skip to content

Instantly share code, notes, and snippets.

@timwis
timwis / foreign_keys.sql
Last active November 15, 2023 20:05
Get foreign keys
SELECT
con.oid as "constraint_oid",
conname as "constraint_name",
pg_catalog.pg_get_constraintdef(con.oid, true) as "constraint_definition",
conrelid as "constrained_table_oid",
col.attname as "constrained_column_name",
confrelid as "referenced_table_oid",
ref.attname as "referenced_column_name"
FROM pg_catalog.pg_constraint as con
CROSS JOIN UNNEST(conkey) WITH ORDINALITY as constrained_cols(col_num, col_index)
@timwis
timwis / App.vue
Created February 19, 2019 12:51
Using mapbox-gj-leaflet with Vue2Leaflet
<template>
<LMap id="map" :center="center" :zoom="zoom">
<LTileLayer
:options="layerOptions"
:tile-layer-class="tileLayerClass" />
</LMap>
</template>
<script>
import { LMap, LTileLayer } from 'vue2-leaflet'
@timwis
timwis / LocationInput.vue
Last active December 19, 2021 15:08
Nested components with v-model
<template>
<b-autocomplete
v-bind="$attrs"
:data="features"
:loading="isLoading"
field="properties.name"
keep-first
@typing="search"
@select="option => selected = option"
>
@timwis
timwis / property-assessments.v2.json
Last active October 11, 2019 16:56
Property assessments VizWit configuration
{
"version": "2",
"header": {
"title": "OPA Property Records",
"description": "Records of buildings and parcel data from the Office of Property Assessment. All maps and charts are interactive: click on an area to filter the visualization by that dimension, and scroll down to view the filtered results as a table.",
"navigation": [
{
"label": "Download",
"url": "https://data.phila.gov/api/views/3h6i-2hfj/rows.csv?accessType=DOWNLOAD&bom=true"
}
@timwis
timwis / orcsv
Created September 20, 2019 15:33
Import and export CSV files with orc
#!/usr/bin/env bash
import () {
csvjson "${3:-/dev/stdin}" \
| jq --raw-output '.[] | @sh "echo orc add-entry '"$1"' user \(.'"$2"') \(tostring)"' \
| xargs -0 bash -c
}
export_ () {
orc ls "$1" user | cut -f 4 | in2csv -f ndjson
@timwis
timwis / default.html
Created January 27, 2016 12:30
How to use rows and columns in a Jekyll page
<!DOCTYPE html>
<html>
<body>
<div class="container">
{% assign rows = content | split:"@row" %}
{% for row in rows %}
<div class="row" id="row-{{ forloop.index }}">
{% assign columns = row | split:"@column" %}
@timwis
timwis / dataface.md
Last active February 8, 2019 12:12
Dataface

problem statement

  • enterprises will inevitably have more data being collected and maintained than their IT departments can keep up with, so business users resort to using spreadsheets or proprietary/incompatible tools.
  • hard to share or integrate this data with other systems
  • eventually the IT departments have to come in and build on top of or fix these tools (crazy formatting, having to reverse engineer the export)
  • there isn't really a great alternative
    • access: desktop software, outdated, not multi-user.
    • airtable: prioprietary, saas-only and could disappear/pivot.
    • salesforce: expensive, proprietary, easy to cross the line where it's very difficult to port (e.g. workflows, notifications).

goals

import { mapActions, mapState } from 'vuex'
export default {
computed: mapState({
services: (state) => state.services
}),
methods: mapActions([
'getServices'
]),
async created () {
@timwis
timwis / keybase.md
Created December 31, 2017 03:08
Keybase proof

Keybase proof

I hereby claim:

  • I am timwis on github.
  • I am timwis (https://keybase.io/timwis) on keybase.
  • I have a public key ASDZvrXjQGJWWeDkYoCfyTS1tZaempyiVUgGSj0wMRJkhwo

To claim this, I am signing this object:

@timwis
timwis / Map.vue
Created November 9, 2017 18:08
city basemap example
<template lang="pug">
div.crosshairs
</template>
<script>
import L from 'leaflet'
import esri from 'esri-leaflet'
import 'leaflet-easybutton'
export default {