profile
viewpoint
Jason S. jeregrine RokkinCat Milwaukee, WI

getsentry/sentry-elixir 512

The official Elixir SDK for Sentry (sentry.io)

beam-community/jsonapi 415

JSON:API Serializer and Query Handler for Elixir

chadnickbok/librtcdcpp 153

A simple WebRTC DataChannels library

jeregrine/awesome-elixir 3

A curated list of amazingly awesome Elixir and Erlang libraries, resources and shiny things.

jeregrine/elixir-rethinkdb 1

A Elixir client driver for RethinkDB.

jeregrine/88nine 0

A node library for interacting with 88nine Radio Milwaukee.

jeregrine/aframe-boilerplate 0

A-Frame Starter Kit: Create your first "Hello World" WebVR scene

jeregrine/ashes 0

A code generation tool for the Phoenix web framework

push eventjeregrine/kino_canvas

Jason Stiebs

commit sha 74d68f2c364e99d6cd4d250027eb99481fb67989

Readme

view details

push time in 6 days

push eventjeregrine/kino_canvas

Jason S

commit sha 6f0b941288fce5ad34e597d7eb71350da2eeeef3

Update readme.livemd

view details

push time in 10 days

push eventjeregrine/kino_canvas

Jason Stiebs

commit sha f42c37805775b683704e27b622645703b23d3e82

make it so

view details

Jason Stiebs

commit sha 3e22e723d35e1d10ac33d3f228e54b1a879ee64c

remove a file

view details

Jason Stiebs

commit sha 5095d1ee6646ca41881cdce70d2673a090833768

format

view details

push time in 10 days

create barnchjeregrine/kino_canvas

branch : main

created branch time in 10 days

created repositoryjeregrine/kino_canvas

created time in 10 days

issue commentelixir-lang/elixir

mix format seems to require :plugins to be set to work

@whatyouhide did it happen to be an umbrella?

jeregrine

comment created time in 16 days

issue commentelixir-lang/elixir

mix format seems to require :plugins to be set to work

Gonna chalk this one up to /shrug

jeregrine

comment created time in 17 days

issue closedelixir-lang/elixir

mix format seems to require :plugins to be set to work

Environment

  • Elixir & Erlang/OTP versions (elixir --version):
Erlang/OTP 24 [erts-12.0.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1]
Elixir 1.13.1 (compiled with Erlang/OTP 24)
  • Operating system: macOS 12.2 Beta (21D5025f), arm64

Current behavior

When upgrading from elixir v1.12 to v1.13 it our formatter started reporting the following error:

❯ mix format
mix format failed for file: test/app_web/views/my_view_test.exs
** (KeyError) key :plugins not found in: [file: "/Users/me/projects/my_project/test/app_web/views/my_view_test.exs", import_deps: [:ecto, :phoenix, :plug, :phoenix_live_view], inputs: ["*.{ex,exs}", "{config,lib,test}/**/*.{ex,exs}"], locals_without_parens: [defguardp: 2, add: 2, add: 3, belongs_to: 2, create: 1, create_if_not_exists: 1, drop: 1, drop_if_exists: 1, field: 2, from: 2, has_many: 2, has_one: 2, modify: 2, modify: 3, remove: 1, rename: 3, defenum: 2, defenum: 3, attributes: 1, location: 1, on_mount: 1, live_dashboard: 1, live_dashboard: 2, oban_dashboard: 1, oban_dashboard: 2, from: 2, field: 1, field: 2, field: 3, timestamps: 1, belongs_to: 2, belongs_to: 3, has_one: 2, has_one: 3, has_many: 2, has_many: 3, many_to_many: 2, many_to_many: 3, embeds_one: 2, embeds_one: 3, embeds_one: 4, embeds_many: 2, embeds_many: 3, embeds_many: 4, intercept: 1, connect: 3, ...]]
    (elixir 1.13.1) lib/keyword.ex:559: Keyword.fetch!/2
    (mix 1.13.1) lib/mix/tasks/format.ex:541: Mix.Tasks.Format.elixir_format/2
    (mix 1.13.1) lib/mix/tasks/format.ex:561: Mix.Tasks.Format.format_file/2
    (elixir 1.13.1) lib/task/supervised.ex:89: Task.Supervised.invoke_mfa/2
    (elixir 1.13.1) lib/task/supervised.ex:34: Task.Supervised.reply/4
    (stdlib 3.15.2) proc_lib.erl:226: :proc_lib.init_p_do_apply/3

Here is my .formatter.exs

[
  import_deps: [:ecto, :phoenix, :plug, :phoenix_live_view],
  inputs: [
    "*.{ex,exs}",
    "{config,lib,test}/**/*.{ex,exs}"
  ],
  locals_without_parens: [
...
  ]
]

By applying the following diff it was resolved:

index 74c015c5f..b48012071 100644
--- a/my_project/.formatter.exs
+++ b/my_project/.formatter.exs
@@ -43,5 +43,6 @@
-  ]
+  ],
+  plugins: []
 ]

Expected behavior

I would expect it to either warn or skip checking for plugins if the key is missing, the line that blew up assumes the plugins key is set and returns. We could change to Keyword.fetch( and put an else condition on the with...

BUT I am not sure if I've set something up wrong or if we should change the docs to make plugins required or if we should alter this to warn instead of die.

closed time in 17 days

jeregrine

issue commentelixir-lang/elixir

mix format seems to require :plugins to be set to work

You are right HRM. I tried including the import_deps phoenix/plug/liveview and it still worked fine on livebook but not on my project.

jeregrine

comment created time in 17 days

issue openedelixir-lang/elixir

mix format seems to require :plugins to be set to work

Environment

  • Elixir & Erlang/OTP versions (elixir --version):
Erlang/OTP 24 [erts-12.0.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1]
Elixir 1.13.1 (compiled with Erlang/OTP 24)
  • Operating system: macOS 12.2 Beta (21D5025f), arm64

Current behavior

When upgrading from elixir v1.12 to v1.13 it our formatter started reporting the following error:

❯ mix format
mix format failed for file: test/app_web/views/my_view_test.exs
** (KeyError) key :plugins not found in: [file: "/Users/me/projects/my_project/test/app_web/views/my_view_test.exs", import_deps: [:ecto, :phoenix, :plug, :phoenix_live_view], inputs: ["*.{ex,exs}", "{config,lib,test}/**/*.{ex,exs}"], locals_without_parens: [defguardp: 2, add: 2, add: 3, belongs_to: 2, create: 1, create_if_not_exists: 1, drop: 1, drop_if_exists: 1, field: 2, from: 2, has_many: 2, has_one: 2, modify: 2, modify: 3, remove: 1, rename: 3, defenum: 2, defenum: 3, attributes: 1, location: 1, on_mount: 1, live_dashboard: 1, live_dashboard: 2, oban_dashboard: 1, oban_dashboard: 2, from: 2, field: 1, field: 2, field: 3, timestamps: 1, belongs_to: 2, belongs_to: 3, has_one: 2, has_one: 3, has_many: 2, has_many: 3, many_to_many: 2, many_to_many: 3, embeds_one: 2, embeds_one: 3, embeds_one: 4, embeds_many: 2, embeds_many: 3, embeds_many: 4, intercept: 1, connect: 3, ...]]
    (elixir 1.13.1) lib/keyword.ex:559: Keyword.fetch!/2
    (mix 1.13.1) lib/mix/tasks/format.ex:541: Mix.Tasks.Format.elixir_format/2
    (mix 1.13.1) lib/mix/tasks/format.ex:561: Mix.Tasks.Format.format_file/2
    (elixir 1.13.1) lib/task/supervised.ex:89: Task.Supervised.invoke_mfa/2
    (elixir 1.13.1) lib/task/supervised.ex:34: Task.Supervised.reply/4
    (stdlib 3.15.2) proc_lib.erl:226: :proc_lib.init_p_do_apply/3

Here is my .formatter.exs

[
  import_deps: [:ecto, :phoenix, :plug, :phoenix_live_view],
  inputs: [
    "*.{ex,exs}",
    "{config,lib,test}/**/*.{ex,exs}"
  ],
  locals_without_parens: [
...
  ]
]

By applying the following diff it was resolved:

index 74c015c5f..b48012071 100644
--- a/my_project/.formatter.exs
+++ b/my_project/.formatter.exs
@@ -43,5 +43,6 @@
-  ]
+  ],
+  plugins: []
 ]

Expected behavior

I would expect it to either warn or skip checking for plugins if the key is missing, the line that blew up assumes the plugins key is set and returns. We could change to Keyword.fetch( and put an else condition on the with...

BUT I am not sure if I've set something up wrong or if we should change the docs to make plugins required or if we should alter this to warn instead of die.

created time in 17 days

pull request commentlivebook-dev/kino

Add support for defining custom JavaScript widgets

This is amazing! Great work!

jonatanklosko

comment created time in a month

pull request commentscoutapp/scout_apm_elixir

Small Agent Manager Performance Tweaks

To clarify: this PR has things that speed up the elixir api reporter but we're not bottlenecked here. We're bottlenecked waiting for the Agent to respond. We can't open multiple connects to it or send data faster (at least that was the case when this PR opened).

So we could implement a periodic task that drops the queue with some heuristics and users lose data. Which I guess is better than the situation now when the agent crashes because it's overloaded.

Let me know how you'd like me to proceed but at the moment we're kinda stuck between rock and a hard place.

jeregrine

comment created time in a month

issue closedscoutapp/scout_apm_elixir

Default to TCP socket for core agent communications

Too many installs are having issues with file permissions for the core agent unix socket. The core agent has the ability to listen on a TCP socket. Change the agent code to default to using only the TCP socket, but make sure we can still use the unix socket option too.

  • Change the default core_agent_socket_path to tcp://127.0.0.1:6590.
  • Any socket path that begins with tcp:// connect via a TCP socket instead of the current Unix Domain Socket
  • Start the core agent with the --tcp <bind> flag to match.
  • Ensure the socket behaves the same as with unix socket - e.g. reconnecting after unexpected disconnect, etc.

The argument to start the core agent with a TCP socket:

--tcp <tcp-bind>               TCP Socket to bind to, in form of ip:port (0.0.0.0:8383 for instance). If unset, no TCP socket is created.

See-Also Matching Python Agent Issue

closed time in a month

cschneid

pull request commentscoutapp/scout_apm_elixir

Small Agent Manager Performance Tweaks

As far as I can see the bottleneck is the single-threaded agent that requires all requests to be serialized one by one...

Unless we are okay with suggesting users drop the data if the queue overfills we're going to just be out of luck here.

jeregrine

comment created time in a month

issue closedbeam-community/jsonapi

Migrating to BEAM Community org

Howdy everyone 👋 I wanted to throw something out there since we've been having some trouble keeping up with PRs here: @jeregrine would you be open to migrating this repo to https://github.com/beam-community? I'm happy to invite yourself and all the other contributors to the org.

The goal of BEAM community is to build an organization able to support important Elixir packages when maintainers may be too overwhelmed and unable to continue to support things moving forward. Slowly but surely we've been picking up packages and maintainers.

Open to other ideas but I know many folks use this library and I'd love to see it continue to be supported 🎉

cc @snewcomer @jherdman @mitchellhenke @lucacorti

closed time in a month

doomspork

issue commentbeam-community/jsonapi

Migrating to BEAM Community org

@doomspork Done.

doomspork

comment created time in a month

IssuesEvent

issue commentjeregrine/jsonapi

Migrating to BEAM Community org

@jherdman Done.

@doomspork please feel free to invite and or give me the place to transfer the repo to, and I'll get this done.

doomspork

comment created time in a month

issue commentlivebook-dev/livebook

Canvas Cell Support

100% agreed on Canvas/Kino stuff that makes a ton of sense.

The js is pretty rudimentary there might be a way to make it safer though.

Obviously XSS is an issue but I think its less of an issue in the context of a livebook since AFAIK they are already pretty limited in security and the recommendation is to not make them public? ? I might be missing something here though.

jeregrine

comment created time in a month

issue commentlivebook-dev/livebook

Canvas Cell Support

Could also theoretically do webgl and glsl shaders this way too. Though that may be overkill/out of scope.

jeregrine

comment created time in a month

PullRequestReviewEvent

issue commentjeregrine/jsonapi

Migrating to BEAM Community org

@doomspork thanks for reminding me of this :P

I totally forgot and let me be 100% clear, let me know what I have to do transfer it to the beam community and I'll do it.

doomspork

comment created time in a month

issue openedlivebook-dev/livebook

Canvas Cell Support

I played around with adding canvas support to livebook as a way to do rudimentary drawing, drafting and visualizing things.

The changes required to do this can be seen here https://github.com/livebook-dev/livebook/compare/main...jeregrine:js/canvas-support

Following Kino.VegaLite I setup a hook which builds a canvas and drawing context, and the livebook sends down a list of canvas operations to apply on the context. I will be adding dynamic support following VegaLite as well, just haven't gotten around to it.

I also put together a canvas module that builds off the MDN/web-sys IDL/JSON specs for the canvas rendering context 2d so we can have a nicer api like below:

Canvas.new()
|> Canvas.set_line_width(10)
|> Canvas.stroke_rect(100, 100, 100, 100)
|> Canvas.set_font("bold 20px monospace")
|> Canvas.fill_text("Hello World", 70, 70)
|> Canvas.set("lineWidth", 100)
|> Canvas.call("fillRect", [0, 0, 100, 100])
|> Canvas.render()

You can see that livebook setup in this gist https://gist.github.com/jeregrine/63f66d288221e89e6f90a8a6d5c868bb as a demo

One thing I wanted to point out is that if LivebookWeb.Output was a Protocol we could allow libraries to define their own cell output types/hooks more easily. We would also need to bring the Kino.Bridge group leader stuff over to LiveBook proper though and make it a more public API, unless we want all cell types to depend on Kino or copy Kino's Bridging Code verbatim.

created time in a month

create barnchjeregrine/livebook

branch : js/canvas-support

created branch time in a month

fork jeregrine/livebook

Interactive and collaborative code notebooks for Elixir - made with Phoenix LiveView

https://livebook.dev

fork in a month

issue openedSelfControlApp/selfcontrol

macos Shortcuts integration

Is your feature request related to a problem? Please describe. Nope, a happy user of selfcontrol going on a decade now?

Describe the solution you'd like macos has shortcuts now, it would be nice if I could say set a blocklist and time and start a selfcontrol session using shortcuts. Even something as simple as an x-callback-url style thing selfcontrol://start_timer?blocklist=twitter.com,reddit.com&time=600 which would open the app and start the timer for said sites.

Describe alternatives you've considered At the moment I have self control open at the end of the shortcut and click start manually.

Additional context Big fan, happy with no changes just a suggestion.

created time in 2 months

startedwojtekmach/mix_install_examples

started time in 2 months

more