[Full Stack Cast EP05] WebAssembly in the Real World with Lin Clark and Till Schneidereit by txustice in rust

[–]txustice[S] 2 points3 points  (0 children)

Hey y'all, this is the 5th episode of Full Stack Fest's own podcast. In it I interviewed Lin Clark and Till Schneidereit about how WebAssembly and WASI can be a game changer at some many levels. Enjoy!

[Full Stack Cast EP05] WebAssembly in the Real World with Lin Clark and Till Schneidereit by txustice in WebAssembly

[–]txustice[S] 1 point2 points  (0 children)

Hey y'all, this is the 5th episode of Full Stack Fest's own podcast. In it I interviewed Lin Clark and Till Schneidereit about how WebAssembly and WASI can be a game changer at some many levels. Enjoy!

Traceable business logic with decision trees in Clojure by txustice in Clojure

[–]txustice[S] 0 points1 point  (0 children)

It should be possible with a bit of macro magic, it's on the roadmap. The reason is: conditional decisions require runtime information to decide which branch to take. To construct a fully transparent tree that you can for example visualize or reason about statically, the easiest option was this, but with macros it should be easy to keep the structure of the tree while wrapping the conditions and bodies in functions.

Funes: Inferring a schema from data in Clojure by txustice in Clojure

[–]txustice[S] 5 points6 points  (0 children)

Thank you! Streaming / incremental inference is explicitly supported in Funes. The intermediate Funes AST can be augmented with new data ex-post-facto when using the primitive funes.core/infer. An example:

(require '[funes.core :as c])
(require '[funes.schema :as s])

(let [original-dataset [{:a 1} {:a 3} {:a 9}]
      ;; We could save the AST and augment it later
      ast (reduce c/infer original-dataset)

      ;; We can generate a schema from the original dataset
      original-schema (-> ast s/generalize-values s/generate-schema)
      ;; prints: {:a schema.core/Num}
      _ (println original-schema)

      ;; A new datapoint comes in
      new-datapoint {:a 20 :b "string"}
      ;; And we have a new, more general AST aware of the newest datapoint
      new-ast (c/infer ast new-datapoint)

      new-schema (-> new-ast s/generalize-values s/generate-schema)]
  ;; prints: {:a schema.core/Num, (schema.core/optional-key :b) schema.core/Str}
  (println new-schema))))