Skip to content

Instantly share code, notes, and snippets.

@bhauman
bhauman / reagent_errors.cljs
Created October 17, 2015 21:53
Fixing reagent errors
(ns devdemos.reagent-errors
(:require
[reagent.interop :refer-macros [.' .!]]
[reagent.core :as reagent]
[reagent.impl.component :as comp]
[sablono.core :as sab :include-macros true])
(:require-macros
[cljs-react-reload.core :refer [defonce-react-class]]
[devcards.core :as dc :refer [defcard deftest]]))
:profiles { :dev { :dependencies [[com.cemerick/piggieback "0.2.1"]
#_[org.clojure/tools.nrepl "0.2.10"]]
:plugins [[refactor-nrepl "1.1.0"]
[cider/cider-nrepl "0.9.1"]]}}
:figwheel {
:http-server-root "public" ;; default and assumes "resources"
:server-port 3449 ;; default
:css-dirs ["resources/public/css"]
@bhauman
bhauman / cljs-react-reload.cljs
Last active August 29, 2015 14:24
cljs React Hot loader - keeping local state stable across React class changes
(ns cljs-react-reload.core
(:require
[cljs.env :as env]))
(defmacro def-react-class [vname body]
`(def ~vname (js/React.createClass ~body)))
(defmacro defonce-react-class
"Patches stable base react class on reload."
[vname body]
@bhauman
bhauman / composable_build.md
Last active August 29, 2015 14:23
Composable cljs build scripts

Independent composable build scripts for cljs

There is a need more complex build scripts for ClojureScript. It would be nice to have a minmal interface and method for composing these scripts. Somehting like:

(-> (watch-cljs ["src"])
    (watch-sass [""])
    (compile-sass)
    (watch-css [""])
 (mark-macro-affected-source build-options)
@bhauman
bhauman / sonic_pi_music.rb
Created June 13, 2015 02:46
My first sonic pi creation.
define :bass do |notes|
in_thread do
with_synth :pretty_bell do
n = if one_in(4) then choose(notes) else notes.first end
2.times do
with_synth :pretty_bell do
play (n - 8), amp: 0.1, release: 0.5
end
with_synth :sine do
@bhauman
bhauman / gist:146e067c8cc4d5aa3fd2
Last active January 7, 2017 14:39
Comments: Straightforward (Live) Functional JavaScript: Building the Yome Widget
@bhauman
bhauman / project.clj
Last active August 29, 2015 14:19
figwheel test runner with red/green favicon
:cljsbuild {
:builds [{:id "dev"
:source-paths ["src" "dev_src"]
:compiler {:output-to "resources/public/js/compiled/slides.js"
:output-dir "resources/public/js/compiled/out"
:optimizations :none
:main slides.dev
:asset-path "js/compiled/out"
:source-map true
:source-map-timestamp true
@bhauman
bhauman / nginx.conf
Last active August 29, 2015 14:18
nginx proxy
# sudo apt-get install nginx jed
# sudo crontab -e ;; 0 24 * * * service nginx restart >/dev/null 2>&1
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
@bhauman
bhauman / core.cljs
Last active August 16, 2022 12:08
Helpful patterns when developing with ClojureScript Figwheel and Express js
(ns todo-server.core
(:require
[cljs.nodejs :as nodejs]
[figwheel.client :as fw]))
(nodejs/enable-util-print!)
(defonce express (nodejs/require "express"))
(defonce serve-static (nodejs/require "serve-static"))
(defonce http (nodejs/require "http"))
{:optimizations :none
:output-dir "samples/hello/out"
:output-to "samples/hello/out/hello.js"
:source-map true}
Currently print-mapped-stacktrace takes a path from the root of the project.
(print-mapped-stacktrace
[{:file "samples/hello/out/hello/core.js" <-- path from project root
:function "first"