Skip to content

Instantly share code, notes, and snippets.

@tgk
tgk / swing.clj
Created October 8, 2012 17:09
A Swing example in Clojure
(ns swing
(:import [javax.swing JFrame JLabel JButton]
[java.awt.event WindowListener]))
(defn swing []
(let [frame (JFrame. "Fund manager")
label (JLabel. "Exit on close")]
(doto frame
(.add label)
(.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE)
@tgk
tgk / plotswap.md
Last active November 20, 2022 10:18
Plot swap

Plotswap November 2022

This is an attempt at sharing plotting files and try our hands on files from other eager plot enthusiasts out there!

The (suggested) format is pretty simple: below is the list of participants in order. Each participant picks a file from the next name after their own on the list and plots it. The participants are also free to do some of the other plots, but this format ensures that everyone both tries their hand on plotting work by someone else and has one of their own works plotted.

Once a plot is done please post it on Mastodon and tag the other participants. Use the hashtag #plotswap (thanks @tca@masto.pt!)

Each partiticipant can list (up to) three pieces we can pick from under their name. We will stick with SVGs for now as that seems to be the common format we all use.

@tgk
tgk / anti_patterns.clj
Last active August 16, 2021 11:39
Some Clojure anti-patterns
;; Anti patterns
;; Implicit data manipulation anti-pattern
;;
;; Having nested calls manipulating data, instead of explicitly stating
;; what changes are performed to the data
(def h
[z]
;; ...
;; virtual fields map to multimethods that implement helpers
(sql/load :rental_ads 42 :car :user :picture_url)
;; => "https://..."
;; multimethods can look at meta information for maps
(meta rental-ad)
;; => {:table :rental_ads}
@tgk
tgk / sql.clj
Created June 26, 2020 08:51
Alternative to load-object
;; alternative strategy for navigating maps
(def rental-ad {:id 42, :car_id 56, :name_and_model "Peugeot 208"})
(follow rental-ad :name_and_model)
;; => "Peugeot 208"
(follow rental-ad :car)
;; => {:user_id 3, :car_type_id 5}
@tgk
tgk / README.md
Last active April 19, 2019 18:31
Add and remove nodes

Click to add nodes! Nodes near the cursor will be linked to the new node. Clicking an existing node will remove it.

This is an extension of this example, adding the capability of removing nodes by clicking them. This means that dragging is no longer supported.

http://static.boredpanda.com/blog/wp-content/uploads/2015/01/magic-realism-paintings-rob-gonsalves-100.jpg
https://twistedsifter.files.wordpress.com/2012/04/adding-monsters-to-thrift-store-landscape-paintings-chris-mcmahon-2.jpg?w=800&h=644
http://static.boredpanda.com/blog/wp-content/uploads/2014/07/re-directed-paintings-david-irvine-gnarled-branch-9.jpg
https://static1.squarespace.com/static/52784cdde4b07cdbb003018f/537abe38e4b0ff62ffbb6786/56036d26e4b008bd0ad827f0/1443065129884/Cat-in-Window-Painting-HOME.jpg
http://gohighbrow.com/wp-content/uploads/2015/03/paintings1.jpg
http://static.boredpanda.com/blog/wp-content/uuuploads/colorful-paintings-leonid-afremov/colorful-paintings-leonid-afremov-17.jpg
http://www.thisiscolossal.com/wp-content/uploads/2016/03/finger-4.jpg
http://webneel.com/daily/sites/default/files/images/daily/01-2014/4-indian-gandhi-paintings.preview.jpg
https://afremov.com/image.php?type=P&id=17833
http://static.boredpanda.com/blog/wp-content/uploads/2015/11/pop-culture-characters-thrift-s
@tgk
tgk / aarhus_0001.clj
Created January 9, 2017 15:30
Notes from the first aarhus.clj meetup and dojo
;; Purpose of aarhus.clj and these meetups
;;; To get better
;;; To meet other Clojure peeps in Aarhus/East Jutland
;; Intro round
;;; Name, interests, experience with Clojure?
;; Agenda
;; Me talking (< 30m)
@tgk
tgk / pruttemaskine.ino
Created October 23, 2016 17:58
Fart machine for Rosalina - source
void fart(int pitch) {
int duration = random(300, 1000);
tone(8, pitch, duration);
delay(duration);
noTone(8);
}
int fartPitch() {
@tgk
tgk / spec_test.clj
Created September 12, 2016 12:33
A very small script for running spec tests. I have a lein alias for running the main function and that works quite well.
(ns spec-test
(:require [clojure.pprint]
[clojure.spec.test]
[clojure.tools.namespace.repl :refer (refresh)]))
(defn run-analysis
[]
(clojure.spec.test/instrument)
(let [results (clojure.spec.test/check)
failures (remove (comp true? :result :clojure.spec.test.check/ret) results)]