69 Matching Annotations
  1. Feb 2021
    1. Output() in combination with Path() allow very simple modelling for alternive routes.
    1. A Monad wraps a value or a computation with a particular context. A monad must define both a means of wrapping normal values in the context, and a way of combining computations within the context.
    1. Writing the uniqueness validations yourself is easy so I felt it was better to leave this up to the developer
    2. I've been over the use case for form objects in this post on moving away from fat models but wanted to go into more detail on how and why I use them here. I really believe in the utility of these objects; their ability to abstract and isolate logic in a simple and effective manner is unmatched, IMO.
    1. All those names of things - topology, complex analysis, and differential geometry - might not sound like much to you now, but you'll soon learn that they're really just describing the shapes of things in our Universe, and the way those shapes change in time and space are explained by things like calculus and chaos theory.
  2. Jan 2021
  3. Dec 2020
    1. page is a { host, path, params, query } object where host is the URL's host, path is its pathname, params is derived from path and the route filename, and query is an object of values in the query string.

      I like that we don't have to manually parse params/query out of the full request URI. It provides the data that you are most likely to need, in an readily/easily-usable form.

  4. Nov 2020
    1. For example, your application should work offline, but it doesn’t mean that you must set-up a background queue or store your data in a persistent storage – a offline message (e.g. “You’re offline, check your network status.”) is enough.
    1. So let's say we pull down evil/foo which is FROM ubuntu followed by RUN apt-get update except with a small surprise included in the image. Subsequent builds using those same commands will be compromised.
    1. However, this coalescing was very complicated, both in the specification and implementations, due to the dynamism of computed property names for accessors. Coalescing was a big source of overhead (e.g., in terms of code size) in polyfill implementations of "Stage 2" decorators.
    1. This is Sass based, and therefore doesn't require Svelte components

      Just because we could make Svelte wrapper components for each Material typography [thing], doesn't mean we should.

      Compare:

      • material-ui [react] did make wrapper components for typography.

        • But why did they? Is there a technical reason why they couldn't just do what svelte-material-ui did (as in, something technical that Svelte empowers/allows?), or did they just not consider it?
      • svelte-material-ui did not.

        • And they were probably wise to not do so. Just reuse the existing work from the Material team so that there's less work for you to keep in sync and less chance of divergence.
  5. Oct 2020
    1. for (var member in myObject) delete myObject[member]; ...would seem to be pretty effective in cleaning the object in one line of code

      But checking hasOwnProperty is probably better/safer idea:

      for (var prop in obj) { if (obj.hasOwnProperty(prop)) { delete obj[prop]; } }
      
    1. I don't want Svelte to go out of its way to try to catch all these edge cases. It would require lots of fragile heuristics in the compiler. I want a solid compiler I can trust, not something magic but often out of service. I want it the simplest possible.
    1. Not all application state belongs inside your application's component hierarchy. Sometimes, you'll have values that need to be accessed by multiple unrelated components, or by a regular JavaScript module.
    2. A store is simply an object with a subscribe method that allows interested parties to be notified whenever the store value changes. In App.svelte, count is a store, and we're setting count_value in the count.subscribe callback.
    1. Just like elements can have children... <div> <p>I'm a child of the div</p> </div>...so can components. Before a component can accept children, though, it needs to know where to put them. We do this with the <slot> element.
    1. Snarkdown exports a single function, which parses a string of Markdown and returns a String of HTML. Couldn't be simpler.
    1. We get a boilerplate-free API where shared state has the same simple get/set interface as React local state (yet can be encapsulated with reducers etc. if needed).
    1. However, if you want to create a backend API that is meant to be consumed only by your frontend, then you don't need REST nor GraphQL — RPC, such as Wildcard, is enough.
  6. Sep 2020
  7. Jul 2020
    1. "AOO is not, and isn't designed to be, the 'super coolest open source office suite with all the latest bells and whistles,'" Jagielski continued. "Our research shows that a 'basic,' functional office suite, which is streamlined with a 'simple' and uncluttered, uncomplicated UI, serves an incredible under-represented community.
    1. A simplified pricing and packaging (PnP) strategy serves customers in the optimal way per the industry best practice. More SKUs lead to a more complex PnP model as a company scales, which eventually causes huge confusion to customers.
    1. And you see the problem, concerns are so simple that they do not deserve a full guide. Concerns are mixins, if you are a Ruby programmer, you already know what a mixin is and their use case to modularize APIs.
  8. May 2020
  9. www.kickstarter.com www.kickstarter.com
    1. whose personal data you collect and process as “controller” (that is the word that GDPR uses for whoever determines the purposes and means of the processing of personal data).
  10. Apr 2020
    1. The extra “space” from vertical navigation might encourage some designers to go overboard and clutter the navigation menu; as with top, horizontal navigation, stick to only the top four or five links within the site.
    1. I don't think this is a common enough use case to warrant this change (which would need documentation and tests if it were to be accepted). Overall, the goal has been to simplify the validators, and prune out edge cases. This use case can be easily accomplished by just using a method instead.
    1. Markdown provides shorthand for the most common features of HTML. One of its best features is that you can always fallback to the full syntax for HTML. This includes doing things that aren't included in markdown. Personally, I like that markdown is concise and includes very little fluff. It makes it easier to learn the whole set of shorthand. This is particularly important if you expect someone else to read your code later.

      One of its best features is that you can always [fall back[ to the full syntax for HTML.

      See rebuttal below.

    1. Invert the exit code of a process. Make 0 into 1 and everything else into a 0. An alternative to ! some-command syntax present in some shells.
    1. minitest doesn't reinvent anything that ruby already provides, like: classes, modules, inheritance, methods. This means you only have to learn ruby to use minitest and all of your regular OO practices like extract-method refactorings still apply.
    1. Don't use it! Writing simple assertions (and Minitest way of transforming them to expectations) is almost always a better idea anyway. Work with your favourite library authors to start with assertions and add matchers for convenience and not the other way around. Keep it simple.
  11. Mar 2020
    1. First-party cookies are the lifeblood of every website, enabling businesses to remember key pieces of information about users and to collect analytics data. Third-party cookies are the bread and butter of AdTech, allowing publishers to monetize their websites, and brands to run advertising and marketing campaigns.
    1. I discuss the flaws of this in regards to spreadsheets in Spreadsheets Are Sabotaging Your Business. In brief, when people inevitably started using the more complex formulas available, they unknowingly broke the fundamental design concept of paper spreadsheets: that humans can understand what’s happening between the cells.
  12. Dec 2019
    1. You're not going to find many checkboxes, drop-downs, reminders, or date pickers here.

      Thankfully, some clients like https://github.com/QTodoTxt/QTodoTxt2 do have nice features like autocomplete, and date pickers.

  13. Jul 2019
  14. Feb 2019
  15. Dec 2018
  16. Oct 2018
  17. Apr 2017
  18. Jan 2016
    1. quickly realized something counterintuitive: Often, it’s the simplest uses of technology that get students to talk, write and create

      This is really interesting. I think this is an important finding because as teachers begin to blend and personalize instruction, keeping it simple will allow for more teachers to engage because it doesn't appear to be daunting and super-sophisticated (and scary).