{"componentChunkName":"component---node-modules-gatsby-theme-community-src-templates-event-tsx","path":"/events/erlang-tracing-and-ash-spark-dsls","result":{"data":{"siteYaml":{"siteUrl":"https://elixir.sydney","defaultImage":"https://camunda.com/img/events/meetup-example.jpg","sponsorsTitle":"Sponsors","organisersTitle":"Organisers"},"eventMdx":{"id":"76aa5a5a-13d7-558a-a641-8934c3679bc2","body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"path\": \"/events/erlang-tracing-and-ash-spark-dsls\",\n  \"date\": \"2024-02-21T00:00:00.000Z\",\n  \"time\": \"6:00 - 8:00 PM\",\n  \"title\": \"Elixir Sydney February\",\n  \"location\": \"microsoft-location\",\n  \"organisers\": [\"josh-price\", \"mike-buhot\"],\n  \"sponsors\": [\"alembic\"],\n  \"talks\": [{\n    \"speaker\": \"lars-wikman\",\n    \"title\": \"Do you use Erlang tracing? You should!\",\n    \"description\": \"Welcome to my little tracing talk. An informal romp through Erlang's fundamental tracing facilities. Then onwards to the common libraries that you should probably use. Beyond that we go to an experimental Elixir library I'm building out to make it so simple that I will actually use it. And maybe some UI...\"\n  }, {\n    \"speaker\": \"josh-price\",\n    \"title\": \"Give Your Domain Experts Superpowers with Spark DSLs\",\n    \"description\": \"Want to build a DSL but don't want to write and maintain macros? In this session we will examine how useful Domain Specific Languages can be, and how Spark can help you build powerful DSLs in Elixir fast. Spark DSLs are self-documenting, extensible and come with auto-complete and language tooling out of the box. Best of all you don't need to write macros to do it! You will learn how DSLs can give your domain experts superpowers, and how you can use them in your applications. You'll be able to know when DSLs are useful and when they are not. Most importantly you'll be able to build powerful DSLs quickly without having to use macros.\"\n  }],\n  \"description\": null\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Welcome to the first Elixir Sydney meetup for 2024! We're in-person and online, so come and join us from wherever you are.\"), mdx(\"p\", null, \"Josh and Mike\"));\n}\n;\nMDXContent.isMDXComponent = true;","path":"/events/erlang-tracing-and-ash-spark-dsls","date":"21-02-2024","title":"Elixir Sydney February","description":null,"location":{"name":"Microsoft Reactor Sydney","mapUrl":"https://www.google.com/maps/embed/v1/place?q=L10%2011%20-%2013%20York%20St%2C%20Sydney%20NSW%202000&key=AIzaSyAdtV_vxQryh-ZqIHLzZs5MkzAKrm_C6OI","address":"Level 10, 11 York St, Sydney NSW 2000","instructions":"Head in through the entrance on York Street and find the lifts on level 10 look for Microsoft Reactor and there will be signs telling you which room we're in.","streetAddress":"Level 10, 11 York Street","city":"Sydney","latitude":"-33.86539","longitude":"151.2054"},"mainImage":null,"images":null,"organisers":[{"name":"Josh Price","avatarUrl":"https://secure.meetupstatic.com/photos/member/4/5/c/e/highres_12197870.jpeg"},{"name":"Mike Buhot","avatarUrl":"https://secure.meetupstatic.com/photos/member/9/3/4/d/highres_311617709.jpeg"}],"sponsors":[{"name":"Alembic","logoUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA0OTcuMyAxMzAuMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDk3LjMgMTMwLjE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRUYzRTI0O30KCS5zdDF7ZmlsbDojOTJDNEU5O30KPC9zdHlsZT4KPGc+Cgk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNODguOSw2NS4xYzAtMTcuOS0xNC41LTMyLjQtMzIuNC0zMi40Yy0xNy45LDAtMzIuNCwxNC42LTMyLjQsMzIuNGMwLDE3LjksMTQuNSwzMi40LDMyLjQsMzIuNGgwbDE5LjgtMC4yCgkJbDAuMS0zMy41bC0wLjEsMGMtMC41LTEwLjItOS0xOC40LTE5LjQtMTguNGMtMTAuNywwLTE5LjQsOC42LTE5LjQsMTkuM2MtMC4xLDEwLjMsOCwxOC44LDE4LjEsMTkuNWMwLjQsMCw5LjcsMCw5LjcsMAoJCWMwLTIuMSwwLjEtNC42LTIuNC01LjhjLTEuNS0wLjctNC41LTAuNC03LjctMC42Yy02LjYtMC42LTExLjYtNi42LTExLjMtMTMuNWMwLjMtNi44LDUuOC0xMi4zLDEyLjYtMTIuNgoJCWM3LjUtMC4zLDEzLjYsNS43LDEzLjYsMTMuMWgwTDcwLjEsOTFsLTEzLjYsMC4xYy0xNC40LDAtMjYuMS0xMS44LTI2LjEtMjYuMmMwLTE0LjMsMTEuNy0yNiwyNi4xLTI2YzE0LjQsMCwyNi4yLDExLjcsMjYuMiwyNi4xCgkJTDgyLjcsOTFjLTAuMiw0LjksMC45LDYuNSw2LjMsNi4zaDBMODguOSw2NS4xeiIvPgoJPGc+CgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTEzNy40LDM1LjNjLTAuNC0xLjItMS43LTItMy4xLTJjLTEuMywwLTIuNiwwLjgtMy4xLDJsLTIxLjksNTguNGMtMC4zLDAuOC0wLjMsMS43LDAuMSwyLjUKCQkJYzAuMywwLjgsMSwxLjQsMS43LDEuN2wwLjIsMC4xaDAuMmMwLjEsMCwwLjIsMCwwLjMsMGMwLjIsMCwwLjQsMCwwLjUsMGMxLjMsMCwyLjUtMC44LDMtMi4xbDUuMy0xNC4ySDE0OGw1LjMsMTQuMgoJCQljMC41LDEuMiwxLjcsMi4xLDMsMi4xYzAuMiwwLDAuNCwwLDAuNS0wLjFjMC4xLDAsMC4yLDAsMC4zLDBoMC4ybDAuMi0wLjFjMS42LTAuNywyLjQtMi42LDEuNy00LjJMMTM3LjQsMzUuM3ogTTE0NS42LDc1LjNIMTIzCgkJCWwxMS4zLTMwTDE0NS42LDc1LjN6Ii8+CgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTIwNi45LDkxLjZoLTI5LjFWMzYuMmMwLTEuNy0xLjUtMy4yLTMuMi0zLjJjLTEuNywwLTMuMiwxLjQtMy4yLDMuMnY1OC43YzAsMS43LDEuNCwzLjIsMy4yLDMuMmgzMi40CgkJCWMxLjgsMCwzLjItMS40LDMuMi0zLjJDMjEwLjEsOTMsMjA4LjcsOTEuNiwyMDYuOSw5MS42eiIvPgoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0yNTcuNiwzOS40YzEuOCwwLDMuMi0xLjQsMy4yLTMuMmMwLTEuOC0xLjQtMy4yLTMuMi0zLjJoLTMyLjRjLTEuNywwLTMuMiwxLjQtMy4yLDMuMnY1OC43CgkJCWMwLDEuNywxLjIsMywzLDMuMmgzMi42YzEuOCwwLDMuMi0xLjQsMy4yLTMuMmMwLTEuOS0xLjQtMy4yLTMuMi0zLjJoLTI5LjFWNjguOGgyNS40YzEuNywwLDMuMi0xLjQsMy4yLTMuMgoJCQljMC0xLjgtMS40LTMuMi0zLjItMy4yaC0yNS40VjM5LjRIMjU3LjZ6Ii8+CgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTMyOS44LDM0LjhjLTAuMi0wLjQtMC41LTAuNi0wLjgtMC45bC0wLjItMC4xYy0xLjUtMS0zLjUtMC42LTQuNCwwLjhsLTIxLjUsMjkuOWwtMjEuNi0yOS45CgkJCWMtMS0xLjQtMi45LTEuNy00LjQtMC44bC0wLjEsMC4xYy0wLjEsMC4xLTAuMiwwLjItMC4zLDAuM2MtMC43LDAuNi0xLjEsMS40LTEuMSwyLjR2NTguM2MwLDEuNywxLjUsMy4yLDMuMiwzLjIKCQkJYzEuNywwLDMuMi0xLjQsMy4yLTMuMlY0Ni4ybDE4LjMsMjUuM2MwLjYsMSwxLjUsMS41LDIuNywxLjVoMC4yYzEuMSwwLDIuMS0wLjUsMi42LTEuNEwzMjQsNDYuMXY0OC43YzAsMS44LDEuNCwzLjIsMy4yLDMuMgoJCQljMS43LDAsMy4yLTEuNCwzLjItMy4yVjM2LjVjMC0wLjUtMC4yLTEtMC41LTEuNkwzMjkuOCwzNC44eiIvPgoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zNzQuNCw2MS43YzMuMy0zLjIsNS4xLTcuNCw1LjEtMTEuOWMwLTkuMi03LjUtMTYuNy0xNi43LTE2LjdoLTE0Yy0xLjcsMC0zLjIsMS40LTMuMiwzLjJ2NTguNwoJCQljMCwxLjcsMS40LDMuMiwzLjIsMy4yaDE4YzEwLjUsMCwxOS04LjUsMTktMTlDMzg1LjgsNzEuNSwzODEuMyw2NC43LDM3NC40LDYxLjd6IE0zNTIuMSw1OS45VjM5LjRoMTAuOAoJCQljNS43LDAsMTAuMiw0LjYsMTAuMiwxMC4zYzAsNS42LTQuNiwxMC4yLTEwLjIsMTAuMkgzNTIuMXogTTM3OS40LDc5Yy0wLjEsNy4xLTUuNiwxMi42LTEyLjYsMTIuNmgtMTQuN1Y2Ni40aDE0LjcKCQkJQzM3My43LDY2LjQsMzc5LjMsNzIuMSwzNzkuNCw3OXoiLz4KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDAyLDMzYy0xLjcsMC0zLjIsMS40LTMuMiwzLjJ2NTguN2MwLDEuNywxLjQsMy4yLDMuMiwzLjJjMS44LDAsMy4yLTEuNCwzLjItMy4yVjM2LjIKCQkJQzQwNS4zLDM0LjQsNDAzLjgsMzMsNDAyLDMzeiIvPgoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik00NzAuNSw4NS4xYy0wLjktMC4yLTEuOSwwLTIuNywwLjVsLTAuMSwwLjFjLTQuNSwzLjgtMTAuNSw1LjktMTYuOCw1LjljLTE1LjEsMC0yNy4zLTExLjgtMjcuMy0yNi40CgkJCWMwLTE0LjcsMTIuMy0yNi43LDI3LjMtMjYuN2M2LjIsMCwxMi4xLDIsMTcsNS45YzAuNywwLjUsMS42LDAuOCwyLjQsMC42YzAuOC0wLjEsMS41LTAuNiwyLTEuMmMwLjUtMC42LDAuOC0xLjMsMC43LTIuMQoJCQljMC0xLTAuNS0xLjgtMS4zLTIuNWMtNi00LjYtMTMuNC03LjEtMjEtNy4xaDBjLTE4LjksMC4xLTMzLjgsMTQuNi0zMy44LDMzLjFjMCwxOC4xLDE1LjEsMzIuOCwzMy44LDMyLjhjNy42LDAsMTUuMS0yLjUsMjAuOS03CgkJCWMwLjctMC41LDEuMi0xLjQsMS4zLTIuNGMwLTAuOC0wLjItMS42LTAuOC0yLjJDNDcxLjksODUuOCw0NzEuMyw4NS4zLDQ3MC41LDg1LjF6Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==","websiteUrl":"https://alembic.com.au/"}],"talks":[{"speaker":{"name":"Lars Wikman","avatarUrl":"https://secure-content.meetupstatic.com/images/classic-events/518789686/200x200.webp"},"title":"Do you use Erlang tracing? You should!","description":"Welcome to my little tracing talk. An informal romp through Erlang's fundamental tracing facilities. Then onwards to the common libraries that you should probably use. Beyond that we go to an experimental Elixir library I'm building out to make it so simple that I will actually use it. And maybe some UI...","photos":null,"slides":null,"video":null},{"speaker":{"name":"Josh Price","avatarUrl":"https://secure.meetupstatic.com/photos/member/4/5/c/e/highres_12197870.jpeg"},"title":"Give Your Domain Experts Superpowers with Spark DSLs","description":"Want to build a DSL but don't want to write and maintain macros? In this session we will examine how useful Domain Specific Languages can be, and how Spark can help you build powerful DSLs in Elixir fast. Spark DSLs are self-documenting, extensible and come with auto-complete and language tooling out of the box. Best of all you don't need to write macros to do it! You will learn how DSLs can give your domain experts superpowers, and how you can use them in your applications. You'll be able to know when DSLs are useful and when they are not. Most importantly you'll be able to build powerful DSLs quickly without having to use macros.","photos":null,"slides":null,"video":null}]}},"pageContext":{"id":"76aa5a5a-13d7-558a-a641-8934c3679bc2","previous":"/events/whats-in-a-name-and-easy-peg-parsers","next":"/events/live-with-jose-2023"}},"staticQueryHashes":["1060091228","1389804553","1706638457","2863593881","2905754725","3812220486","675908267","684993974"]}