Confessions of an Ember Addon Author

Video in TIB AV-Portal: Confessions of an Ember Addon Author

Formal Metadata

Confessions of an Ember Addon Author
Title of Series
CC Attribution - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this license.
Release Date

Content Metadata

Subject Area
Addons are one of the best things about the Ember eco-system. With one command, you can opt into using a well tested addon that does some of the heavy-lifting for you when building complex applications. The next best thing is that sharing your solution for solving problems is very simple; it's not a big leap going from Ember developer to addon author! A healthy addon eco-system is one of the key strengths of Ember, and in this talk we'll discover some best practices, tips and tricks and other exciting confessions from a self-confessed addon addict!
Shared memory Code Video game Sound effect Videoconferencing Cartesian coordinate system Writing Power (physics)
Existence Presentation of a group Euclidean vector Confidence interval Image resolution Gradient 1 (number) Variable (mathematics) Cartesian coordinate system Limit (category theory) Theory Mach's principle Delay differential equation Word Radius Different (Kate Ryan album) Website Selectivity (electronic) Liquid Software testing Resultant
Web crawler Open source Code Multiplication sign Mereology Formal language Goodness of fit Different (Kate Ryan album) Set (mathematics) Videoconferencing Software testing Social class Area Software developer Gradient Feedback Projective plane Lattice (order) System call Open set Mathematics Arithmetic mean Word Personal digital assistant Blog Video game Website Quicksort Writing Library (computing) Row (database)
Context awareness Presentation of a group Group action Randomization Confidence interval Equals sign Execution unit Source code Price index Information technology consulting Preprocessor Different (Kate Ryan album) Single-precision floating-point format Error message Multiplication Social class Beta function Building Shared memory Bit Windows Registry Category of being Arithmetic mean Process (computing) Chain Order (biology) Reading (process) Writing Connectivity (graph theory) Online help Mass Rule of inference Product (business) Element (mathematics) Latent heat Subject indexing Energy level Data structure Default (computer science) Standard deviation Demo (music) Independence (probability theory) Directory service Cartesian coordinate system Word Error message Integrated development environment Personal digital assistant Function (mathematics) Network topology Video game Musical ensemble Family Library (computing) Greatest element Multiplication sign 1 (number) Insertion loss Parameter (computer programming) Replication (computing) Mereology Word Mathematics CAN bus Oval Matrix (mathematics) Software framework Pairwise comparison Position operator Thumbnail Electric generator Variable (mathematics) Regulärer Ausdruck <Textverarbeitung> Exergie Type theory Preprocessor Vector space Website Configuration space Software testing Right angle Procedural programming Fundamental theorem of algebra Implementation Service (economics) Real number Virtual machine Augmented reality Menu (computing) Content (media) Attribute grammar Revision control Network topology Software testing Utility software Plug-in (computing) Module (mathematics) Validity (statistics) Axiom Template (C++) Subject indexing Point cloud Object (grammar)
Computer virus Email Context awareness Group action Metric system Source code Price index Fraction (mathematics) Medical imaging Computer configuration Different (Kate Ryan album) Object (grammar) Error message Exception handling Social class Arm Mapping Software developer Instance (computer science) Lattice (order) Control flow Category of being Arithmetic mean Message passing Process (computing) Telecommunication Hacker (term) Point (geometry) Web page Computer file Open source Maxima and minima Event horizon Product (business) Element (mathematics) Frequency Goodness of fit Term (mathematics) Hacker (term) Factory (trading post) Energy level Configuration space Lie group Metropolitan area network Default (computer science) Stapeldatei Interface (computing) Uniqueness quantification Content (media) Volume (thermodynamics) Cartesian coordinate system Web browser Planar graph Word Integrated development environment Personal digital assistant Network topology Video game Library (computing) Code Interior (topology) Multiplication sign View (database) Set (mathematics) Function (mathematics) Mereology Bit rate Matrix (mathematics) Software framework Extension (kinesiology) Determinant Area Service (economics) Real number Token ring Petri net Open source Open set Degree (graph theory) Computer configuration Configuration space MiniDisc Normal (geometry) Website Right angle Energy level Metric system Functional (mathematics) Implementation Mobile app Game controller Service (economics) Divisor Real number Adaptive behavior Web browser Distance Power (physics) Revision control Internetworking Integrated development environment Message passing Plug-in (computing) Condition number Addition Dialect Validity (statistics) Cellular automaton Interactive television Analytic set Planning Software maintenance Subject indexing Grand Unified Theory Factory (trading post) Object (grammar)
and I have a wonderful coming at them and spilled the beans on things like the writing of the popular grants and share thoughts on the 4 things that I think may the here so for 3 million of
long island only as should apparent and life goes include the badges ordering novelty for my colleagues and treating all of it and the Mousterian because of this highly valued skills I work effects on applications that power the world's largest city answer comes from later to similar to this so that I chances
are you trying to raise your hand this 1 online and I say good on all often a and so that I of 3 more in 3 and a half thousand pounds of in existence I take the and
stuff on web site and in the beginning when an answer 1st introduced by was actually really tough to write and as a lot of features didn't exist in both Mandarin Ambrosio I and you know it had in the past we had to resort to like facts some I to do the things by the you can all agree that have gone on to grade of its time but out of 3 have houses and enhance harmony under this is the question that I have made me think about you know this this this whole thing and I have a very simple theory that there are 4 major things that go into a hundred to 1 and and so the that if the solvent interest income it doesn't have to be an extremely difficult or challenging problem something simple done well could still qualify as a solving a useful problem but have this summer so low that some else would someone would rather use your and your and then to build themselves 2nd we need to be straightforward to set up and use and I usually means the documentation examples and other they to get excited and on the is where most of sounds fall short 3rd API exceeded limit it doesn't have to be perfect but you do need to put some thought into and it can be an ad hoc again and this is really tricky to get my 1st try but thank you that's why semantic reasoning exists to if I have to be lined up or in other words it also needs an evil Tessie and this is especially true for the animals that aren't presentation on all you people want user and solve problems and not cause more problems for the application and test the is a good way to give people confidence about around so it is that uh there are many abuses of the more popular ones we just listen to and that the supplementary it see I I have talked about a lot of my co-workers are coming border me talking during entry was probably my hair and on so far has a really great documentation the API is reasonable as it it's all it's all really difficult Apollo endoparasite results that it's all those 4 point in and you would think that a simple select top down you know the simple but consists simple select theory of art can be met and that it's not that simple but very costly makes utterance experience a liquid fire courses so introduction about the brain and declared itself for you to of declare annotations that were previously not possible idols of radius and variable document and I am as the unemployed and the young deployment so different costs like different things companies but this enterprise flexible enough to handle all or if not we saw most if not all of it is also very sensible and into just some of the more popular and now I'm concerned that many approaches but personally I like practice DDE documentation driven ball when I make a new documentation
if documented and of the of the
I and the mean even in that it helps me think ahead of time what the developer experience should be you know what kind of API this is on the surface and from there you start to write tests in the New Testament development against any because true if you don't document something Howley all that exists or how we know exactly uses feature without spending hours digging through your sort of some languages even write Nietzsche documentation as a 1st class citizen so this is like the and the examples in the comments in grade they can actually run as tests and enforcing this isn't a language feature and out which is reset but documentation is so important that some an answer even have their own dedicated documentation sites while it was moving on to provide by no means is that require all you can certainly have producing documentation with a among dominates Sweeney alone and this is typically the Fisher side anyway would would documentation and you know it was it making a fancy pants dockside in the future the if you are in the habit of commenting your code with desktop or you don't style comments then you can also find an answer either just by me so happy generate documentation and even if you don't know they're still really good way of new teaching inch contributors like how to commit to go so this is done all that now it's also really interesting problem all its well-documented as a good API and it's well tested now while in most cases that's not sufficient by itself and the thing is and this applies not only to open source of but generally speaking projects of part 2 things to be successful 1st the have some of and if you done those 4 things and you know you've already got that in the back but more importantly building it isn't enough by itself and you also act have to convince other people to use your out on your library and this is not only true for open source but many things in life this is a great topic area I can't buy channel on language and what he describes as the metalanguage is the stuff that goes beyond the call so these are things like that of my blog posts videos conference documentation and whatever else I thought leadership will be gone these things are really important but they're not codified into the library or the language and of course anyone can build on and on the the project is an integrated and and published in fact it's only just started likely 1st ways for the word I can write about it and recorded top the part of the meeting recorder video you talk at conference site might be the audience and people do 1 listened to learn about it because no matter how many or technical boring I think it it is also we wanna 7 getting feedback so you can improve on this library but if you're like me despite being up on stage of when I create a and I tend to write about the rest of the so writing has the best ratio of effort to reward all you writing helps me begin my ideas there but I think your mileage your mileage may vary I as an aside surrounding this and recommendations of you do want write about something that you should red of amino and I can help you publish so this talk I will share my experiences and lessons learned writing hands and hope I can also spiders writing an answer here differences take a quick look into what exactly goes into an noun and how to think about and
and structure so when you generation and the 1st time you notice that the folder structure the space and learn to and replication but 1 of the main differences is that it has an add-on for the but otherwise mostly looks the same the and there are a few things to note so on a high level the ad on application and test for the live in embryo and and in this in these folders right we're working in the framework itself and diversity I helps glued all together on the other hand there from those which are in node land or another it's my brother and these are the clouds are used by embassy life when the on is installed into the consuming application now and and for the itself we can think of it like a source for the Fourier and most logical and here and these thousand won't to get merged into the consuming applications of tree and here also export these files and out of the the as a rule of thumb mind it's for things that are part of the framework Why components helper services and so on or are the present advocate of that on people might want to override so here in this example that we need to explore the stop words and use it to use it in the template but if the user has an can help already and application and that 1 to take precedence over the other topics in that way can override implementation if they need to and this is really important to think about because you want to deliberate about what gets merged into the jimmy obligation and you don't have to export every single thing and on hold and is often argument and you can think of it like exporting is making something publicly available so that you don't really wanna make everything covered in the Oval non scenarios where the object of your as it is possible to specify which and so here I have a chain that validations which is a plugin for another and call and machines that it indeed leads to an ensemble define a change that over but I want the emergence and validation over 2 when socially can actually very explicit and say that this out on should be installed after positions and therefore it's helper will take precedence 1 thing to note is that even if you don't or something and the other the other doesn't make it right and consuming applications can still excessive if they don't have to the an Israeli physiology of the member the ideas about not gonna tell you what commanding independent consultancy units that are tell you where you want to know about the mindfulness there's no real concept of private modules here in this into that on an apple the and can also introduce blueprints and blueprints are interesting if definitely values on for these also would like to ask about you'll notice the ERB like contact and that it would be like context where you and the use of I don't even know what he called the error % equals and and these will be used by embassy to dynamically inject different things that are to be found when the generated from this blueprint I can overlook the these up on them aside dots of the sampled variables are provided to you but all of a can of define only neurons which is very useful if your and extensible in some way 1 thing also known about no
land that you get access to the and extended index of your on and he's like you work with even bounds build directory and you can do a lot of things here like include custom members CI I commands you can include true fast include to exclude you can processes and so on so this causes some of us some examples of actions that make use of these of and see how we use them to do the features that the include and the test this is a really great on by the folks at some plants are the same people behind inverse or and what is that and others they define indeed test selector attribute on your age you know elements and this test like there can be used in your tests of to select elements but the cool thing about is on is that what the strip these data Test selectors away in an environment that you tell it to do so you don't have to pollute your production ation with unnecessary attributes yeah and to do this and test like procedures tuning embassy so present it has a preprocessor to walk the tree and then find the meanings of those data tests selectors from your template the says sectors are a useful again you know instead of selecting something might classes ID or whatever other actually which can be very brittle if you for example change the stuff the class because of the style and then it's really good because the test selectors decoupled from the presentation and tesseract also has makes use of the tree for and I hope in order to remove itself from the build if the test selectors are being shipped out after all the and becomes unnecessary production right because if you if a shipping additional why you need test selectors so it what we remove itself from the application and when bloat the final production assets and then indecomposable helper is that I co-authored with Martin allows a document it's a relatively large I mean that includes a lot of errors and doesn't really make sense to include all and if you're only using 1 or 2 in your application so we use the same thing the book as well to include or exclude specific property from your application Indiana this the tree for and I hope we will call it a filter helpers method which then uses regular expression to test what founding needs to include or exclude and then based on configuration and consuming application we can be and say alright I only need help x y z and in this remove everything else because when using and I am a standard for is around that I that we use a lot and that are in you can make use of custom commands to give you really interface of in which you can the fourier applications from the command line and the nice thing about this is what it actually have to make your voice fundamentals we can have for example you know of CI don't deploy an application after it has been ones or whatever else and custom commands are resampled add announce I embassy unemployed defines them separate folder which also as of next week to separating it all and not having this massive index years following around so I wouldn't have laughter and unexplained 1 thing what you feel axioms that I wanna share but the the new facts and so far I found out about the experience you know it's really important to think about how others will use around as you build it 1st in documentation is it's super useful to describe why and this and why does and what it does like that's a something exactly missing from a lot of an what is this and even do why why users exist tell people to important and you don't need to write an essay worthy of thought leadership and it's just as described it simply the this just a little bit of decoration goes a long way in helping people understand the goals around on how it helps and solve a problem and how can even contributions and bigger and the maximize the obvious but you should explain in detail also on my user on so again this is indeed need to be a fancy website and impending kind and your writing this may make sense for like library kind of utility answer I want to but we detail how to use a public API for and on the way that I anticipate the used solely on the sky like a simple example of how you use this feature to do some vector the 80 % use cases and I take inspiration from documentation up from my action random for example but this is a really work for all and once in really depends on the kind of handling all I know if you are not introduces a new way of thinking like amber currently for example this kind of documentation is enough and we need to explain your ideas more and if you don't the temperature can be very effective to create my examples of how to use right this shows up at directory and gives people more confidence that the reviews on the soul of the so here's a really nice the real example on the American currency website basic American transient and it's even more appropriate when not honest presentation also for example and the burger menu demo site and documentation type literary documents and on right there is also and the cosmic again also there's a really great job here we can actually tried out and the DOS itself but if you add on and presentation of our it's really easy like me any on but the whole like at the site you can use a maternal which is really great but I think I'm not sure when but in which will now at on support so connected and so on and on and which will loss it's the original reading a uh and personalized is a lot because it becomes alive the ground you can show people cannot reach high ion and begin with a little bit and see that it works for the use cases and that would have liked try-before-you-buy error and I think it seems obvious that Iran on its many professors the good news is that the major like filets of leaving out things to all that Austin ever articles but for example by default you're an animal run tests against different versions of a medicinal landfall you don't do anything on him but in some cases if you an explicitly needs to support you know like a really old version and there are very specific region of American weird education test that excessively and you never tried and the other and yeah this is the useful energy also use travesty which is free for the sports I read him using the bill matrix which that you specify different variants of the bill the test in parallel which is really nice and you can even also specify which all of these bills are allowed to fail so you know if you see the bottom not a V. see it but I indicating a scenario is allowed to fail the
and this should give you in your users more confident that your out on works as expected in different regions of Member of addition is also possible to test it out on any application against a real browser and there are various ways to do this but for example future in mind actually use headless problems of normal from and there are a lot of of exactly do this we can check out their Travis content for example now 1 thing that's crucial for a lot of an answer is the ability to configure them in some way and this is 1 area right it's not supertree foreign and there are a lot of ways to do so but I don't think document burial so the 1st method is 1 that I saw was adopted by liquid power so in fire there is this file called a transition that which looks very similar to a rotten and you place this file in the act for the of your app and somehow magically in knows how to pick this conditions of file up without you doing any other word and it is really nice because it makes configuration and so is a this transitional closer so was it just looks like a really simple export functions and somehow this functions context in the this keyword you know it it knows how to define transitions in all sort of define all these other really nice of deal cells a recent and rather and what we could find makes use of the emperor over to locate this file and then invoke the function with the new contexts applied to and this is slightly into maybe a year ago I kept the small of vacancy that with these 3 basic files actually answers over androgynous and you actually can locate them at the factory with clearer magic incantations and factory for is a new feature thing it's already in number but across supporting an older version of everything the refectory 4 point so you don't have to use the internet API that I just showed you now there is nothing special about there's nothing special about the condition that for example that it exports like any other justify found and that means in your scenario you're making an on you could say you could tell users to explore a planar object you can export wherein they want and whatever you want and then you around on look for that file and pick it up and to the configuration there so it doesn't have to be a function like in the good fire that as the we find is do it so that they could have a nice itself Mexico also have you define a configuration and the configure environment out so this is giant older practice but I think it's still remains useful where you want your users to build configure your and on Our differently in various environments so for example and animatics is an hour I wrote that it gives you a nice API on top of various Alex services I grew well in its next panel and so forth so you can be tracked events with or page views with 1 in the eyes of having to call like 5 different services in your application and in this case it's actually useful for us to build to do things differently based on the environment that application is being built and so you know you you might not actually want your development environment you just clicking around 1 jot down 100 times to trigger production analytics cos you're working team we're while regularly use the executives you and conjecture configuration environment that while degree gracious this on an ember metrics installs an initializer into the application that imports disk and the clout of certain the configuration and registers it are in the container has configured colon metrics and that object instance injected into the metric service so that the service can access those configurations not service you can as excessive like any other property just like this get options and you got your options also I know that this is all behind every metric itself so that the consuming happening to do anything else so this is really convenient and the popular option is to make use of the embassy on the power and this is a good way our configuration happens at build time so again evident was well-versed comes with what happens as the mean to just but you don't mind being everything so me let you configure it here rate and say I only want that implement helper only 1 document but except high yeah know so as you look at it and I'm listening gravel had and yet this is all handle in an index file so that included which you modify 1 goes below my hand like this and like this and then but if you have those functions returning roughly trees then you can you can exclude or he could default and depending on the kind of man on and might also make sense for us to allow users to extend that based on their names so again September metrics examples it ships with some of bundled adapters for different services like make found when it but isn't defined like an adapted for every single thing and the idea is that some with extensibility we allow users to define their own adapters so you can write an adaptor for your application against your your your bespoke analytic service or something else that we didn't build and this is also a knife because it also strips away the adapters that you don't you and these are not are just plain and the objects and words on except that the service the metric service expects and implement some specific interface are 1 thing to note about this approach tho is that the z plane and the objects are not managed by members contain all and when the means is that you have to manage the lifecycle yourself that's the of the week and destroyed what initialize and 1 on here you know like in in the mountains and the metrics example we have abated after that all adapters inherit from this and we do anything that so errors if you don't find the requirement that and the genetic evidence to implement those methods and you can start using any application but the interesting part in the service itself where a meaning meaning that even if you create an adapter the metric services and all that you're out exists in application so we need a way forward services firm and are essentially what every matrix does is it uses the name you specified in the configuration and then it tries to look it up on the 1st in your application and then and on so again so you can override other Google and early adopter for example if you don't like the base implementation and once in the reference that adaptive factories then you again that the service cannot instantiate these objects that well known and lead them and so far of India his opinions and OK and then there's
approach where you operate outside a member of the dangers part so I know that I don't recommend this approach finds on talk about it also in imaging denominations of which is a validated by re of validators and validation maps are playing functions an object in October objects so what it means that we don't get access to the container and so 2 of our users to override validation messages like the defaults and had to rely on a little chat and kept this font size small again on recommends approach but on in in certain cases you know like hacks are useful right so yeah those and yet and that again might in certain cases hacks are useful for those who have a lot a lot a member of a lot of anger and I thought as acts but in a way that allow the library offers to determine like what the optimal EDI should be and I get about laughing from Baton factor but at your own risk the and I'm going to try my sensibility is the approach that Amber service reprimands so emissaries service worker the based on this and we do anything except take care of some basic infrastructure and then I don't try to get some service worker functional interapplication utensil lichens all and you know this kinds of the different things also higher resources it looks at the Member service worker plugin keyword Indiana so that you can look at the elements of plugin an answer so package Jason file and determine and this is a point in that it needs to bend initialize and install a service for and then and add on suppose process that it will find those plug-ins it discovers and and registers them in your browser and this is actually a nice approach for an answer are extensible it's a nice way where the people can extend you out without any effort on your part and so on it all this work so as you can see the more know about the internal workings of American Embassy the more features you can take advantage of in to using around and anomalies today about pursuing my fear is the work in this application of funds called batch so offline documentation of various search feature I have open 100 % time I'm working on it's really was look stuff up and it's not in the specific and again in many ways to get acquainted with intro inductive but I like this approach because you start from the public API you're familiar with an engine start digging deeper and see how the thing were actually implement something so as a simple example I was digging through the source for ever so low that you I discovered this of unknown properties and so on probably which is Bresler to reviews method missing and they're actually on that make use of this site hidden features feature as a way to intercept sets on objects but so there the the 1 Americans into learning how the framework is implemented but there are always people slack what are very eager to help you understand the inner workings of amber and you never know you might discover something interesting that you can make an error on around so those are just some of the interesting pieces of member I discovered in making arms and studying other people's homes and it's a lot more to discover so I hope what motivated you enough to start digging deeper and volume interaction and all of your for your routine a stepping back the tactical stuff for women and ultimately about open source and when you write your 1st open-source use really scary you know your point be like lies for everyone seen criticize dominant you know your out on your 1st i wasn't been amusing initially scalar tried and it's really really simple the if you do not let to get a few words on personally mind and the was my 1st suggestion to offering a meeting open to us I read a thing neighbors on was and risky like class and I remember when I 1st open source that really really embarrassed by and does even more than become more confident and level of clickers in open source teaches you ought not just on the technical side of things but also in terms of your communication skills so as engineers we might tend to focus too much on the nitty-gritty details and we forget that ultimately we work with people in real life people so sometimes communication skills can tend to suffer and finally an he do open source laughs you could be this person when writing on the job to XI at some point around the open source period you know even I get to the stage where you can no longer interval all your time give 3 times a single open-source I read and in those nouns is actually important to be able to relinquish control and and trust other people to step up and maintain neurons i in your place and maintaining if you ever have this scenario you might know you know heritage very popular open-source library or if you if you're library becomes very popular then you find exactly very exhausting to maintain iron people eye-opening issues are yelling at you call you names as rate common to feel frustrated and sometimes an even broader hate working on the virus because people can be quite toxic and Anderson has really important to know when the distance people say mean things about you for sure they will make the same thing colonial Seville unique personal attacks against you now this is by no means normal and no it's not something we should be tolerated but it does happen and again we start working source this technical part of it is we probably have the challenge and finally if you do decide to cytoskeletal of open source reason not Simba I think we need to also make it all user i turn so you'll be good open-source citizen right we talked about a lot today we 1st we look at what the major differences are between an on that you learned that the is the guts and the apple there is what's merged into the consuming application and holds are really powerful so you check them out then we talk about different approaches to managing the developer experience good documentation is really important as well as meaningful texts and in my own take some time to think about how you around can configure how can be extended by other people and finally remember open source is not just about the code hello my talk 1 really got get another and entrance very world of open source yeah reach out to me and here we can look at all the chromium and break it if any questions and you are homeless in European great if the if and how