profile
viewpoint
Adam Conrad acconrad @indigo-ag Boston, MA https://adamconrad.dev Director of Engineering @indigo-ag 🚜 Advisor for Fisherman 🥡 Speaker / Host for Software Engineering Radio 🎙️ Writer for Software Daily ✏️

acconrad/jquery-expander 3

Expander is a jQuery plugin that makes it easy to support expanding tables with "Show N More" functionality.

acconrad/css3-iphone-textmsg 2

A Pure CSS3 iPhone Text Message Demo

acconrad/bostonrb 1

Website for bostonrb.org

acconrad/laptop 1

Laptop is a set of scripts to get your laptop set up as a development machine.

acconrad/activeadmin 0

The administration framework for Ruby on Rails applications.

acconrad/autotrainer 0

Automated workouts with built-in progression algorithms

acconrad/bootstrap 0

The most popular HTML, CSS, and JavaScript framework for developing responsive, mobile first projects on the web.

acconrad/co2 0

Lispy language for creating NES / Famicom software

acconrad/coding-challenge 0

Klaviyo front-end coding challenge

issue closedBlakeWilliams/Elixir-Slack

Web API: Proposed breaking change before 1.0 - comments wanted

The web API, though quite fully featured in its support, is currently somewhat limited in its semantics in that are function calls assume the happy path and return only correct data/raise a number of different possible exceptions. This may be fine in some situations for simple apps, but for production apps that need to handle and report on different sorts of error combinations it would be very valuable to have more of both consistency and control here.

I'm not sure I really see an easy way around this without breaking the current API, so this is a suggestion to break it while this library is still pre-1.0. Let's have a discussion here with anybody that cares and figure out how it might work best.

Proposal 1 - Tagged tuples

For < 400 status, decode response body from JSON and return {:ok, decode_response}

For other cases, define a series of exception structs in the format Slack.Web.*Error and return in the format {:error, exception}. These could wrap HTTPoison exceptions like timeouts, as well as more slack specific exceptions like 429 rate limit (this is one I care about a lot).

This approach would allow all error cases to be mapped into a consistent format that could report on, and have conditional retry logic in place for certain cases.

Proposal 2 - Move Slack.Web to different repo as dependency.

If breaking this API is problematic for enough people, a reasonable approach could be to move everything in Slack.Web into a different open source project (which could potentially start with the tagged tuple approach immediately after code migration). The project could provide the same interface to web API calls as it current does by unwrapping the tagged responses are raising error errors passed back.

It could be useful if doing this to consider incorporating any overlap from the other slack API client which is currently a stale/dead project and is the one listed in the slack API community page

@BlakeWilliams @JEG2 @christhekeele @davydog187 @timabdulla and others, would be great to get your feedback.

closed time in 3 days

mmartinson

issue commentBlakeWilliams/Elixir-Slack

Web API: Proposed breaking change before 1.0 - comments wanted

Closing as this is over 3 years old and no one has responded to move forward in over 3 months

mmartinson

comment created time in 3 days

issue closedBlakeWilliams/Elixir-Slack

API docs repo is dead

Currently, the web API client is missing many features because https://github.com/slackhq/slack-api-docs isn't being updated. According to https://github.com/slackhq/slack-api-docs/issues/74 we should expect it to remain dead.

Should we move off generating the web API function from JSON? We could define DSL to make defining calls to those remote procedures easier.

I have a specific need for https://api.slack.com/methods/chat.getPermalink which is not currently provided by Slack.Web. Would you merge a PR that added that feature via code (rather than JSON files)?

closed time in 3 days

pezra

issue commentBlakeWilliams/Elixir-Slack

API docs repo is dead

Closing since I've been adding methods manually - if you need a method just let me know

pezra

comment created time in 3 days

issue closedBlakeWilliams/Elixir-Slack

Bot crashes when user joins a channel

It looks like the bot module still expects to have knowledge of channels and users. When a channel join event is received it attempts to update the bot's internal state. But this data was removed in #177 and causes the bot to crash.

As an aside, I'm not sure how this is a reasonable solution. It's not possible to update the bots slack state in the init callback. The only return value is the users state. If the expectation is really to do these calls, inline, for every request, that means the bot will only be able to receive 4 text messages a minute before a user hits their rate limit. Obviously, it's possible to make more targeted requests and to cache the results. I'm using both of these strategies in fawkes. But that leaves me wondering if the bot is supposed to be doing this sort of book keeping still. It seems to me like most of the slack state code can be removed but maybe I'm missing something.

closed time in 3 days

keathley

issue commentBlakeWilliams/Elixir-Slack

Bot crashes when user joins a channel

Great I'm going to close this issue since that's a pretty hefty test to ensure the bot isn't crashing

keathley

comment created time in 3 days

issue commentBlakeWilliams/Elixir-Slack

Bot crashes when user joins a channel

@entertainyou @dylanmei just pushed another fix so if you pull 0.23.4 that may resolve this Issue here and we can close this?

keathley

comment created time in 3 days

pull request commentBlakeWilliams/Elixir-Slack

Fix crash of put_in/update_in

thanks again @entertainyou ! bumped to 0.23.4 on hex now 😄

entertainyou

comment created time in 3 days

created tagBlakeWilliams/Elixir-Slack

tagv0.23.4

Slack real time messaging and web API client in Elixir

created time in 3 days

release BlakeWilliams/Elixir-Slack

v0.23.4

released time in 3 days

push eventBlakeWilliams/Elixir-Slack

Wei Huang

commit sha e2eddc8ee92829ea364f75c0b344e972a92d6091

Move {channel, group}_join to marco generation

view details

Wei Huang

commit sha 8bc12cfea4e2ac48c8c68554d7796729b3a9166f

Make group channel handling safe

view details

Wei Huang

commit sha 4b0e359448343b7aa85e3537df4869a0831e0f0a

Move {channel, group}_topic handle to macro

view details

Wei Huang

commit sha 0d67523ec0bbcb0dbcd6b7c8cb325e2ab5e79298

Bump version

view details

Adam Conrad

commit sha a288ef616c110af7804f0b6654ae38e732edb019

Merge pull request #224 from entertainyou/master Fix crash of put_in/update_in

view details

push time in 3 days

issue commentBlakeWilliams/Elixir-Slack

Bot crashes when user joins a channel

@dylanmei I'm pretty active on approving PRs so if you have a proposal on how to fix it please go ahead and submit and we'll get it up on Hex ASAP!

keathley

comment created time in 3 days

pull request commentBlakeWilliams/Elixir-Slack

Set default for bots,channels,groups,users,ims state

Thanks @entertainyou ! You can now pull 0.23.3 from your deps :)

entertainyou

comment created time in 3 days

created tagBlakeWilliams/Elixir-Slack

tagv0.23.3

Slack real time messaging and web API client in Elixir

created time in 3 days

release BlakeWilliams/Elixir-Slack

v0.23.3

released time in 3 days

push eventBlakeWilliams/Elixir-Slack

Wei Huang

commit sha 51971fc3ae067e10f4cfcc70027afa66c27a10a4

Set default for bots,channels,groups,users,ims state It was crashing for me when handle user_change event and the users in Slack.State is nil.

view details

Wei Huang

commit sha f75139d187d5956e832512e3e03476cca29d799f

Bump version

view details

Adam Conrad

commit sha a43c7b77f023b40a950ee5a5cfe7e2ddb7ea841a

Merge pull request #223 from entertainyou/master Set default for bots,channels,groups,users,ims state

view details

push time in 3 days

PR merged BlakeWilliams/Elixir-Slack

Set default for bots,channels,groups,users,ims state

It was crashing for me when handle user_change event and the users in Slack.State is nil.

+7 -7

2 comments

3 changed files

entertainyou

pr closed time in 3 days

pull request commentBlakeWilliams/Elixir-Slack

Set default for bots,channels,groups,users,ims state

Approved @entertainyou - like this PR can you bump the README.md and mix.exs files by 1 patch version? I will then merge this, tag it, and publish to Hex and you'll be able to capture your changes right away.

Thanks again!

entertainyou

comment created time in 3 days

startedLisaDziuba/Marketing-for-Engineers

started time in 6 days

issue commentdenoland/deno

Add Node.js native module polyfills to std/node

@Soremwar cool! url is massive and feels a bit over my head for the first one. dns seems pretty reasonable as does crypto (though would I also need to build out all of the helper classes like Hash, Sign, and Cipher?) if so I could just start with dns and see how that goes.

kevinkassimo

comment created time in 16 days

issue commentdenoland/deno

Add Node.js native module polyfills to std/node

@kevinkassimo i'm diving back into Deno after not working on it for a while (and I've only really contributed to the TypeScript portion). Which of these would be a good first issues?

kevinkassimo

comment created time in 16 days

issue commentBlakeWilliams/Elixir-Slack

Bot crashes when user joins a channel

Aha okay makes more sense @keathley I believe I had addressed this in the breaking changes update but essentially you'll need to make individual calls to grab the latest data. So if the original one grabbed all of the users and all of the channels, you'll need to make individual calls now to Channels.list and Users.list

keathley

comment created time in a month

issue commentBlakeWilliams/Elixir-Slack

Bot crashes when user joins a channel

Hi @keathley part of the upgrade was due to how the Slack API operates. Needing to switch functions was a requirement coming from Slack rather than how we wanted to connect to the app. It is necessary to reduce the amount of bookkeeping in favor of making specific calls to things like Users and Channels.

Further, rate limits have been more strictly enforced over the last few months with the need for pagination for collections is now a standard for most standard models in Slack.

Do you have a recommendation for how you would like this fixed? Could you add in a PR to resolve this?

keathley

comment created time in a month

created tagBlakeWilliams/Elixir-Slack

tagv0.23.2

Slack real time messaging and web API client in Elixir

created time in 2 months

release BlakeWilliams/Elixir-Slack

v0.23.2

released time in 2 months

delete branch BlakeWilliams/Elixir-Slack

delete branch : acc-add-conversations-invite

delete time in 2 months

push eventBlakeWilliams/Elixir-Slack

Adam Conrad

commit sha 60c4bb2b253878097fea8038e02bda448cbc43b6

Add conversations.invite web API method

view details

Adam Conrad

commit sha 0f4e96919678536b3d83861e5b53412f30775a75

Merge pull request #222 from BlakeWilliams/acc-add-conversations-invite Add conversations.invite web API method

view details

push time in 2 months

create barnchBlakeWilliams/Elixir-Slack

branch : acc-add-conversations-invite

created branch time in 2 months

created tagBlakeWilliams/Elixir-Slack

tagv0.23.1

Slack real time messaging and web API client in Elixir

created time in 2 months

release BlakeWilliams/Elixir-Slack

v0.23.1

released time in 2 months

delete branch BlakeWilliams/Elixir-Slack

delete branch : acc-add-conversations-create

delete time in 2 months

push eventBlakeWilliams/Elixir-Slack

Adam Conrad

commit sha 0dc49b3cba34bacc7339f15828c9b856447aaa6d

Add conversations.create web API method

view details

Adam Conrad

commit sha 6f9c0ec8ed824239691fa959dbd854d607074ea8

Merge pull request #221 from BlakeWilliams/acc-add-conversations-create Add conversations.create web API method

view details

push time in 2 months

PR merged BlakeWilliams/Elixir-Slack

Reviewers
Add conversations.create web API method

channels.create is now deprecated and will be removed in November. Instead, we need to use conversations.create

+109 -2

0 comment

3 changed files

acconrad

pr closed time in 2 months

PR opened BlakeWilliams/Elixir-Slack

Reviewers
Add conversations.create web API method

channels.create is now deprecated and will be removed in November. Instead, we need to use conversations.create

+109 -2

0 comment

3 changed files

pr created time in 2 months

create barnchBlakeWilliams/Elixir-Slack

branch : acc-add-conversations-create

created branch time in 2 months

issue commentueberauth/ueberauth_slack

Support for V2 Oauth API

can we merge that branch in?

emilsoman

comment created time in 2 months

issue commentueberauth/ueberauth_slack

Support for V2 Oauth API

@doomspork yes that would be helpful!

emilsoman

comment created time in 2 months

issue commentueberauth/ueberauth_slack

Support for V2 Oauth API

@doomspork we need to get this in because new apps are requiring OAuth v2 access and I can't log in anymore because I'm getting a oauth_authorization_url_mismatch error which, according to the documentation, says:

The OAuth flow was initiated on an incorrect version of the authorization url. The flow must be initiated via /oauth/v2/authorize

And if we just change this code we can change the defaults to reflect the new URL

emilsoman

comment created time in 2 months

created tagBlakeWilliams/Elixir-Slack

tagv0.23.0

Slack real time messaging and web API client in Elixir

created time in 2 months

pull request commentBlakeWilliams/Elixir-Slack

[IMPORTANT] Swap Jason for Poison

@BlakeWilliams ready when you are!

acconrad

comment created time in 2 months

release BlakeWilliams/Elixir-Slack

v0.23.0

released time in 2 months

delete branch BlakeWilliams/Elixir-Slack

delete branch : acc-upgrade-jason

delete time in 2 months

push eventBlakeWilliams/Elixir-Slack

Adam Conrad

commit sha c127a39ec1010953eb7ee94214d1c2a3a1cce466

Upgrade Jason & Remove Poison

view details

Adam Conrad

commit sha bca99f7975d18ac6181d7f19d0c0baef88fa4b00

Merge pull request #219 from BlakeWilliams/acc-upgrade-jason [IMPORTANT] Swap Jason for Poison

view details

push time in 2 months

PR merged BlakeWilliams/Elixir-Slack

Reviewers
[IMPORTANT] Swap Jason for Poison

Jason is the Elixir gold standard for JSON parsing that is actively in development, while Poison has not been updated in over 2 years. It's also faster. We need to do this because Phoenix now uses Jason and Poison does not work with postgrex. This is a necessary upgrade for all folks who use this app in conjunction with Phoenix 1.4+.

+31 -28

1 comment

11 changed files

acconrad

pr closed time in 2 months

pull request commentBlakeWilliams/Elixir-Slack

Upgrade Jason & Remove Poison

@BlakeWilliams when this goes out please do a hex.publish because this is a vital upgrade to ensure we can support this plugin for Phoenix users

acconrad

comment created time in 2 months

Pull request review commentBlakeWilliams/Elixir-Slack

Upgrade Jason & Remove Poison

 defmodule Slack.SendsTest do    test "send_message sends message formatted to client" do     result = Sends.send_message("hello", "channel", %{process: nil, client: FakeWebsocketClient})-    assert result == {nil, ~s/{"type":"message","text":"hello","channel":"channel"}/}+    assert result == {nil, ~s/{"channel":"channel","text":"hello","type":"message"}/}

all the tests do is reflect that the result is now parsed in alphabetical order

acconrad

comment created time in 2 months

PR opened BlakeWilliams/Elixir-Slack

Upgrade Jason & Remove Poison

Poison has not been updated in over 2 years and now it is considered that Jason is now the main parser. It's also faster. We need to do this because Phoenix now uses Jason and Poison does not work with postgrex. This is a necessary upgrade for all folks who use this app in conjunction with Phoenix 1.4+.

+31 -28

0 comment

11 changed files

pr created time in 2 months

create barnchBlakeWilliams/Elixir-Slack

branch : acc-upgrade-jason

created branch time in 2 months

issue closedBlakeWilliams/Elixir-Slack

Exposing the sender in handle_info

Because handle_info receives any messages sent to the server that are not handled elsewhere, it would be convenient channel to get information (e.g. about the slack connection) from the server. However, because the process that sent the message is not exposed in handle_info, there is no way to send a message back to the server.

If possible, it would be nice to include the sender in the parameters to handle_info so information could be returned.

closed time in 2 months

easco

issue commentBlakeWilliams/Elixir-Slack

Exposing the sender in handle_info

closing as over 3 years old

easco

comment created time in 2 months

issue closedBlakeWilliams/Elixir-Slack

Operability behind a proxy

Right now, elixir-slack based bots do not work behind a proxy. The networking modules that Elixir-Slack is based on, are not passing proxy and proxy_auth options that are required to enable the app behind the prxy. This significantly limits the potential usage of Elixir-Slack bots.

closed time in 2 months

dapdizzy

issue closedBlakeWilliams/Elixir-Slack

Using content parameter of Slack.Web.Files.upload/3

If I want to use the content option instead of using the first parameter of the method (which uses multi-part form), what do I pass in as a first parameter of the method since it is mandatory?

closed time in 3 months

Arsenalist

issue commentBlakeWilliams/Elixir-Slack

Using content parameter of Slack.Web.Files.upload/3

you can always pass in things from the options object

Arsenalist

comment created time in 3 months

delete branch indigo-ag/hooli-checker

delete branch : DO-1074-automated-tagging

delete time in 3 months

push eventindigo-ag/hooli-checker

Kyle Posluns

commit sha 6c3648d1d340ba2bdf412047cbf74e8ab0eec1d9

Automatically generated - please review. (#2)

view details

push time in 3 months

PR merged indigo-ag/hooli-checker

feat(DO-1074-automated-tagging): Adding a tag mapping. 03/02/2020

Hello!

The DevOps team is working on a project called Scrat to lower the number of untagged resources in our AWS accounts and automate the process of tagging them.

This PR contains a file we call a TagMapping, which describes the tags and tag values that resources associated with this repo should have. Please look over the contents of the TagMapping file and ***fill out the missing required fields and fix our answers where needed!*** You can refer to a chart of tags and acceptable tag values below. In general, please try using lowercase letters and '-'.

Tag Tag-Value Required?
team ONE OF: <br>data,<br>devops,<br>dse,<br>datascience,<br>agfinance,<br>geoinno,<br>marketplace,<br>transport,<br>research,<br>settlement,<br>or,<br>global,<br>mobile YES
repo-name Name of the repository YES
project Use your best judgement! YES
product ONE OF:<br>agfinance,<br>atlas,<br>data,<br>dca,<br>infrastructure,<br>insights,<br>marketplace,<br>research,<br>settlement,<br>transport YES
version 0.5.0 YES
email <something>@indigoag.com NO
slack <slack-channel> NO
nightly-shutdown ONE OF: <br>true,<br>false NO

The version tag specifies the version of the schema the tag mapping is compliant with, and has nothing to do with the versioning of the repo or its contents.

Other Resources To Refer To:

  • Specifications for Tag Mapping (https://symbiota.atlassian.net/wiki/spaces/TEC/pages/979599944/Specifications+for+Tag+Mapping)
  • AWS Tagging Requirements https://symbiota.atlassian.net/wiki/spaces/TEC/pages/979468429/AWS+Tagging+Requirements to view tagging standards.

Once approved feel free to merge!

We will also be sending out a list of resources that are missing the repo-name tag, which is necessary in our resource tagging remediation flow to locate this TagMapping file. Please direct any questions to the Slack channel #devops-questions!

Thank you, DevOps Co-ops

+11 -0

0 comment

1 changed file

kyleposluns

pr closed time in 3 months

more