7,242 Matching Annotations
  1. Mar 2021
    1. For pluggability, an endpoint is split into a Protocol and an Adapter part. This separates generic logic from environment-dependent code.
    2. Note how a handful of default steps lead into six standardized termini, allowing to plug protocols into different adapters. Imagine replacing your self-written API adapter with a canonical JSON-API adapter, for example.
    3. Most “legacy” operations don’t have this output, yet. However, the Model() macro now supports this terminus.
    1. Can we occupy technology with love?

      An interesting re-framing of the social media problem. Similar to the IndieWeb philosophy, but a bit more pointed.

    1. It's a pet peeve, but I wish that people would stop describing their HTTP RPC APIs using the term "REST".

      The only solution is probably to advocate for moving away from "REST" entirely—for all parties. Mend the discord by coining two new terms and clearly articulate the two meanings that should be attached to them.

      ("Indian" is another word like this, but that did not get fully deprecated. This is resulted in lots of confusion. "'Indian'? Like Native Americans?" "No, Indian as in 'from India'" "Oh, all right." A similar thing is happening with "open source".)

      This probably involves making the terms (or at least one of them—so long as it's the right one) somewhat cool. Maybe the non-REST term should be AROH (pronounced like "arrow") for "Application RPC Over HTTP".

    1. The challenge, honestly, is the tyranny of choice. It takes research and time. As Linux users will tell you, the hardest part of using Linux is deciding the exact distro to use, because there’s so much choice. It can be overwhelming.

      I love the elegance of the idea of "tyranny of choice."

    1. This is not a fork. This is a repository of scripts to automatically build Microsoft's vscode repository into freely-licensed binaries with a community-driven default configuration.

      almost without a doubt, inspired by: chromium vs. chrome

    1. It has long since been demonstrated that Parkinson's patients have a different microbiome in the intestines than healthy people

      Question:

      • In what way is the microbiota different in Parkinson’s disease patients compared to that of healthy people?
      • Do we know anything about the correlation between the particular species of microbiota and the disease?
      • Do we know anything about how the signals being sent from the gut to the brain are different from those in healthy individuals?
    2. But at the same time, we've been puzzled about why there was such a big difference between patient symptoms.

      Question:

      • What are the differences in the symptoms of these two kinds of Parkinson’s disease?
    1. I was pretty annoyed with myself for having fallen for the trap of not documenting my own systems, but not sure how I could have remembered all of the Hugo-isms

      I've explained such a system, and promised Andy Chu an example that I've yet to be able to complete, but it comes down to this:

      A website is fundamentally a document repository. One of the first documents that you should store in that repository is one which explains, in detail, the procedures for provisioning the host powering the site and how content gets published. (Even better if it's so detailed that the procedures exhibit a degree of rigor such that a machine can carry them out, rather than requiring manual labor by a human.)

    1. In those wretched countries where a man cannot call his tongue his own, he can scarce call anything his own. Whoever would overthrow the liberty of a nation must begin by subduing the freeness of speech ... Without freedom of thought there can be no such thing as wisdom, and no such thing as public liberty without freedom of speech, which is the right of every man ...

      It’s interesting to see this being debated today with the fight over freedom of speech in social media. You could argue that social media is today’s version of the earlier pamphlets.

    2. satire

      Satire was often times used as a method of critiquing the power structures of the day, as well as making comments on other aspects of society. Direct criticism was frowned upon, and often times punished, but you could get away with veiling your criticism as humor.

    3. Franklin thereby invented the first newspaper chain. It was more than a business venture, for like many publishers since he believed that the press had a public-service duty

      Long before the internet, and even national level newspapers, Franklin understood the power of the written word. His, and other like minded individual’s words were distributed in the form of pamphlets, that extolled their ideas on liberty and justice, and spread those words to all who were interested.

    4. A polymath, he was a leading writer, printer, political philosopher, politician, Freemason, postmaster, scientist, inventor, humorist, civic activist, statesman, and diplomat

      In stark contrast to today’s specialist that focus on being the best at one or maybe two areas of concentration. Like many of his contemporaries, Benjamin Franklin made contributions to a broad spectrum of pursuits.

    1. the community is both endlessly creative and genuinely interested in solving big issues in meaningful ways. Whether it's their commitment to careful (and caring) community stewardship or their particular strain of techno-ethics, I have been consistently (and pleasantly) surprised at what I've seen during the last twelve months. I don't always see eye-to-eye with their decisions and I don't think that the community is perfect, but it's consistently (and deliberately) striving to be better, and that's a fairly rare thing, online or off.
    1. The Obsidian vault that I've created for the students is secure (by invitation only in Dropbox) and THEY CAN CONTRIBUTE to it. I've put the questions for discussion in the content sections, and have asked students to answer the questions on the page. This hasn't resulted in the types of threaded discussions I was hoping for, but improvements to the interface and better questions will hopefully lead to that.

      This is similar to teachers in the last two decades creating class wikis which students can add to.

      I'm curious how the differences in user interface with Obsidian may actually make this process simpler and easier. With all of these experiments, some of the issue may be the learning curve of using the new tool, so having simpler UIs certainly goes a long way.

      The side benefit of some of these is that students (within a Domain of One's Own space), might see the power and value of these systems in their introduction and then take and use these tools in their learning and working lives thereafter.

    2. I hadn't really thought that much about the pedagogical aspects (they don't really teach PhD historians pedagogy where I went to school, or I missed it somehow, so I've been trying to educate myself since then).

      Don't feel bad, I don't think many (any?!) programs do this. It's a terrible disservice to academia.

      Examples of programs that do this would be fantastic to have. Or even an Open Education based course that covers some of this would be an awesome thing to see.

    1. Kevin McConway. ‘Media: Worst Ever Week for Test & Trace; They Only Reached 59.9% of Identified Contacts. But the % Reached Went up This Week for Contacts Managed by Local Health Protection Teams AND for Contacts Not Managed by Them (What Used to Be Called “complex” and “Non-Complex” Cases.) How?’ Tweet. @kjm2 (blog), 5 November 2020. https://twitter.com/kjm2/status/1324417367477264386.

    1. Alongside globalisation – the capitalist rationalisation of space and time – we are witnessing the epistemic and technical rationalisation of the neuronal foundations of the self, or what Walker Percy called the abstraction of the self from itself.

      We have reified a lot of implicit aspects of ourselves and it's hard to know what to do with this newfound knowledge. Right now this knowledge is subordinate to the machinery of capital but it doesn't have to be. This same understanding can be used for pro-social endeavors instead of making more and more money.

    2. Just as shift workers are sometimes given stimulants, so the point here was to adapt the innate neurobiological capacity of humans as a productive force to the technologies and rhythms of globalisation.

      More sinister vibes of the machinery of capital.

    1. Will it also help accomplish another goal — communicating to my students that a classroom of learners is, in my mind, a sort of family?

      I like the broader idea of a classroom itself being a community.

      I do worry that without the appropriate follow up after the fact that this sort of statement, if put on as simple boilerplate, will eventually turn into the corporate message that companies put out about the office and the company being a tight knit family. It's easy to see what a lie this is when the corporation hits hard times and it's first reaction is to fire family members without any care or compassion.

    2. <small><cite class='h-cite via'> <span class='p-author h-card'>Remi Kalir</span> in Annotate Your Syllabus 3.0 (<time class='dt-published'>03/13/2021 14:18:33</time>)</cite></small>

    1. By treating even small functions like a black box it promotes separation of concerns and allows said black box to evolve independently.
    2. Write modules for publication, even if you only use them privately. You will appreciate documentation in the future.
    3. Second, I don't agree that there are too many small modules. In fact, I wish every common function existed as its own module. Even the maintainers of utility libraries like Underscore and Lodash have realized the benefits of modularity and allowed you to install individual utilities from their library as separate modules. From where I sit that seems like a smart move. Why should I import the entirety of Underscore just to use one function? Instead I'd rather see more "function suites" where a bunch of utilities are all published separately but under a namespace or some kind of common name prefix to make them easier to find. The way Underscore and Lodash have approached this issue is perfect. It gives consumers of their packages options and flexibility while still letting people like Dave import the whole entire library if that's what they really want to do.
    1. I’m proposing that writing those tests from the perspective of specifying the behaviors that we want to create is a highly valuable way of writing tests because it drives us to think at the right level of abstraction for creating behavioral tests and that allow us the freedom to refactor our code without breaking it
    2. I am a big advocate of having a complete test base and even erring on the side of caution when it comes to quality engineering and software validation but that is not what we’re talking about here. What we’re talking about here are the tests that we write when we’re doing test-first development and I’m proposing that writing those tests from the perspective of specifying the behaviors that we want to create is a highly valuable way of writing tests because it drives us to think at the right level of abstraction for creating behavioral tests and that allow us the freedom to refactor our code without breaking it.
    1. Democrat Chicago to allow the economy to open up less than a week after Biden's inauguration...it's all planned to make Biden appear successful! Democrats allowed millions of people to suffer and lose businesses all for their own greed and power!
    1. Whenever majorities trample upon the rights of minorities—when men are denied even the privilege of having their causes of complaint examined into—when measures, which they deem for their relief, are rejected by the despotism of a silent majority at a second reading—when such become the rules of our legislation, the Congress of this Union will no longer justly represent a republican people.
    1. The elimination of what is arguably the biggest monoculture in the history of software development would mean that we, the community, could finally take charge of both languages and run-times, and start to iterate and grow these independently of browser/server platforms, vendors, and organizations, all pulling in different directions, struggling for control of standards, and (perhaps most importantly) freeing the entire community of developers from the group pressure of One Language To Rule Them All.
    2. JavaScript needs to fly from its comfy nest, and learn to survive on its own, on equal terms with other languages and run-times. It’s time to grow up, kid.
    3. If JavaScript were detached from the client and server platforms, the pressure of being a monoculture would be lifted — the next iteration of the JavaScript language or run-time would no longer have to please every developer in the world, but instead could focus on pleasing a much smaller audience of developers who love JavaScript and thrive with it, while enabling others to move to alternative languages or run-times.
    1. This creates what is essentially an evolution process for the program, causing it to depart from the original engineered design. As a consequence of this and a changing environment, assumptions made by the original designers may be invalidated, introducing bugs.
    2. When changes occur in the program's environment, particularly changes which the designer of the program did not anticipate, the software may no longer operate as originally intended.
    3. This is not a physical phenomenon: the software does not actually decay, but rather suffers from a lack of being responsive and updated with respect to the changing environment in which it resides.
  2. en.wikipedia.org en.wikipedia.org
    1. PyPy aims to provide a common translation and support framework for producing implementations of dynamic languages, emphasizing a clean separation between language specification and implementation aspects.
    1. D3 4.0 is modular. Instead of one library, D3 is now many small libraries that are designed to work together. You can pick and choose which parts to use as you see fit.
    2. To the consternation of some users, 3.x employed Unicode variable names such as λ, φ, τ and π for a concise representation of mathematical operations. A downside of this approach was that a SyntaxError would occur if you loaded the non-minified D3 using ISO-8859-1 instead of UTF-8. 3.x also used Unicode string literals, such as the SI-prefix µ for 1e-6. 4.0 uses only ASCII variable names and ASCII string literals (see rollup-plugin-ascii), avoiding encoding problems.
    3. D3 now passes events directly to listeners, replacing the d3.event global and bringing D3 inline with vanilla JavaScript and most other frameworks.
    1. Occasionally, like with search engines, #2 occurs because the incumbents gain massive economies of scale (classic Microeconomics), where by virtue of their being large, the cost to produce each incremental good or service at scale becomes much lower.
    2. Inevitably, most of these new entrants get wiped out over a decade or two and their market share goes down into the single digits (often zero). The end result is that the market often resembles one of two possible situations:
    1. I'd suggest there ought to be config to disable source maps specifically, and specifically for either CSS or JS (not alwasy both), without turning off debug mode. As you note, debug mode does all sorts of different things that you might want with or without source maps.
    2. Meh... as I said earlier, I think using Webpack is the recommended way now. Another issue is there is no way to generate source maps in production.
    3. I'm not sure about all consequences of my change and this is very complex.
    4. I agree about lack of maintenance. It's probably because people use more and more Webpack.
    1. As well as the discussion about what is really meant by a ‘domain of one’s own‘

      Societies have been inexorably been moving toward interdependence. More and more people specialize and sub-specialize into smaller fragments of the work that we do. As a result, we become more interdependent on the work of others to underpin our own. This makes the worry about renting a domain seem somewhat disingenuous, particularly when we can reasonably rely on the underlying structures to work to keep our domains in place.

      Perhaps re-framing this idea may be worthwhile. While it may seem that we own our bodies (at least in modern liberal democracies, for the moment), a large portion of our bodies are comprised of bacteria which are simultaneously both separate and a part of us and who we are. The symbiosis between people and their bacteria has been going on so long and generally so consistently we don't realize that the interdependence even exists anymore. No one walks around talking about how they're renting their bacteria.

      Eventually we'll get to a point where our interdependence on domain registrars and hosts becomes the same sort of symbiotic interdependence.

      Another useful analogy is to look at our interdependence on all the other pieces in our lives which we don't own or directly control, but which still allow us to live and exist.

      People only tend to notice the major breakdowns of these bits of our interdependence. Recently there has been a lot of political turmoil and strife in the United States because politicians have become more self-centered and focused on their own needs, wants, and desire for power that they aren't serving the majority of people. When our representatives don't do their best work at representing their constituencies, major breakdowns in our interdependence occur. We need to be able to rely on scientists to do their best work to inform politicians who we need to be able to trust to do their best work to improve our lives and the general welfare. When the breakdown happens it creates issues to the individual bodies that make up the society as well as the body of the society itself.

      Who's renting who in this scenario?

    1. But we're definitely sticking with the source map idea rather than the current (Rails 3/4) behavior of including all JS and CSS files separately while in development?
    1. One day last August 2018, I stumbled upon an online petition that sparked my curiosity - We Want Serverless Ruby. At that time, none of the major cloud providers had first-class support for Ruby in their serverless products. There were ~1400 devs signing that petition, and I wondered if there was something about Ruby that made it unsuitable for FaaS. I decided to roll the sleeves and start building what would be the first PoC of faastRuby.
    1. Before a bug can be fixed, it has to be understood and reproduced. For every issue, a maintainer gets, they have to decipher what was supposed to happen and then spend minutes or hours piecing together their reproduction. Usually, they can’t get it right, so they have to ask for clarification. This back-and-forth process takes lots of energy and wastes everyone’s time. Instead, it’s better to provide an example app from the beginning. At the end of the day, would you rather maintainers spend their time making example apps or fixing issues?
    1. I think that over time the distinction is lost. My math teacher, 35 years ago stated "formulas are used in chemistry, in math we have equations". To this day, the word 'formula' in math seems wrong, but I'd accept it's used commonly.
    2. An equation is meant to be solved, that is, there are some unknowns. A formula is meant to be evaluated, that is, you replace all variables in it with values and get the value of the formula.
    1. Fits the ideal behind HTML HTML stands for "HyperText Markup Language"; its purpose is to mark up, or label, your content. The more accurately you mark it up, the better. New elements are being introduced in HTML5 to more accurately label common web page parts, such as headers and footers.
    1. This sounds like a lot of fun and is a bit reminiscent to me to some of the material in the Domain of One’s Own (#DoOO) space. In particular I’m thinking of a Domains Camp from a few years back which may have some related materials: https://extend-bank.ecampusontario.ca/type/domain-camp/.

    1. Fibar bi jàngal na taawan bu góor ni ñuy dagge reeni aloom.

      Le guérisseur a appris à son fils aîné comment on coupe les racines du Diospyros.

      fibar -- (fibar bi? the healer? as in feebar / fièvre / fever? -- used as a general term for sickness).

      bi -- the (indicates nearness).

      jàngal v. -- to teach (something to someone), to learn (something from someone) -- compare with jàng (as in janga wolof) and jàngale.

      na -- pr. circ. way, defined, distant. How? 'Or' What. function indicator. As.

      taaw+an (taaw) bi -- first child, eldest. (taawan -- his eldest).

      bu -- the (indicates relativeness).

      góor gi -- man; male.

      ni -- pr. circ. way, defined, distant. How? 'Or' What. function indicator. As.

      ñuy -- they (?).

      dagg+e (dagg) v. -- cut; to cut.

      reen+i (reen) bi -- root, taproot, support.

      aloom gi -- Diospyros mespiliformis, EBENACEA (tree).

      https://www.youtube.com/watch?v=BryN2nVE3jY

    2. Fexeel ba kër gi bañ ñàkk alkol.

      Veille à ce qu'il ne manque pas d'alcool à la maison.

      fexe+el (fexe) v. -- search/seek by all means.

      ba -- the (?).

      kër gi -- house; family.

      gi -- the (indicates nearness).

      bañ v. -- refuse, resist, refuse to; to hate; verb marking the negation in subordinate clauses.

      ñàkk v. / ñàkk bi -- vaccinate / vaccine (not sure exactly how this fits in the sentence if it's even the right translation -- perhaps it has to do with surgical alcohol rather than drinking alcohol).

      alkol ji -- (French) surgical alcohol. (I'm certain this is also used for the type of alcohol you drink -- but sangara is probably the most used term).

      https://www.youtube.com/watch?v=SsUjvAItysA

    1. Open source code library for building innovative e-learning that is accessible, usable, interoperable, mobile-friendly and multilingual. Based on the Web Experience Toolkit (WET) and bootstrap. This collaborative open source project is led by the Canada School of Public Service, Government of Canada.
    1. Posting an issue on the discussion boards for a three year old game, yesterday, I wasn't holding my breath for a reply. Earlier, this morning, a dev. responded, stating they'd look at fixing it, and it was just a few hours before it were sorted!
    1. Run the complete unit with a certain input set, and test the side-effects. This differs to the Rails Way™ testing style, where smaller units of code, such as a specific validation or a callback, are tested in complete isolation. While that might look tempting and clean, it will create a test environment that is not identical to what happens in production.
    1. Using ::delegates works exactly like the Forwardable module in Ruby, with one bonus: It creates the accessors in a module, allowing you to override and call super in a user module or class.
    1. Having an understanding of higher level abstractions, such as tasks, activities and the historical code path taken, its debugging trace is much closer to how you, as an engineer, think about your code.
    2. Admittedly, both the signature and the return values of invoke feel a bit clumsy. That’s becaus we’re currently working with the low-level interfaces.
    3. Additionally, you may add debugging steps, error handler or rewire the conditions dynamically without touching the original snippet.
  3. Feb 2021
    1. Eh, that's just sales. Humans are dumb, panicky animals: just look at how J.C. Penny's "Fair and Square" initiative went.Short version: they went full-on no bullshit: no limited time sales, no fake prices discounted, things cost what they cost, no more FOMO, no waiting for deals.It tanked. Horribly.
    2. Why do companies insist on making deals a gamble? Is it basically just to capture FOMO sales?Both rhetorical questions.Edit: I'm talking about how you can pay one price for a deal and then a couple months later it's even cheaper.
    1. Devoted to Trump, and committed to his fictions about the election, Republicans are doing everything they can to keep voters from holding them and their leaders accountable. They will restrict the vote. They will continue to gerrymander themselves into near-permanent majorities. A Republican in Arizona has even proposed a legislative veto over the popular vote in presidential elections

      The author starts the paragraph by explaining the Republicans as people who are "devoted to Trump". This makes it seem as Trump were god and everyone has to follow his orders. It gives both a humorous appeal to the audience and illustrates to them the sly techniques that the Republicans are using to escape from punishment. Furthermore, when the author said that the Republicans were ready to propose a veto against the popular vote, it was very ironic. As senators, they are supposed to give constitutional rights to the citizens, but rather they are taking it away for their own purpose. This further emphasizes the extent at which Republicans do not want to lose power to the Democrats.

    2. naked attempt to change the rules of American politics to benefit one party”

      The previous paragraph emphasizes the benefits of the HR.1 and how it specifically helped restore the voting system. However, in this paragraph, McConell exclaims that it is a vague attempt to benefit one party even though the Act was created to benefit the public. This illustrates to the readers the misuse of power by republican senators, which is one of the author's main points.

    3. — and not to lose the next presidential election the way they lost the last one. To that end, they have introduced bills to restrict the vote, to make the race for the Electoral College — a

      The author uses multiple dashes in this paragraph to show the different ways that the republicans will go to stop the Democrats from gaining power. The dashes emphasizes the extent at which republicans are willing to restrict votes. Without the dashes, it would simply sound as an example of what Republicans are doing, but the dashes creates a pause and further emphasis. Also, from John Lewis, the claim shifted to the extreme techniques that Republicans are using to stop Democratic power from taking over.

    1. You’re free to test this activity in a separate unit test.
    2. Whatever data from the outside is needed in the activity has to be passed explicitely into the activity’s call method.
    3. In other words: the controllers usually contain only routing and rendering code and dispatch instantly to a particular operation/activity class.
    4. They help streamlining the control flow, and take away control code while providing you with an incredibly cool developer experience.
    5. You’re allowed to blame us for a terrible developer experience in Trailblazer 2.0. It’s been quite painful to find out which step caused an exception. However, don’t look back in anger! We’ve spent a lot of time on working out a beautiful way for both tracing and debugging Trailblazer activities in 2.1.
    1. identity theft

      Saw this while scrolling through quickly. Since I can't meta highlight another hypothesis annotation

      identity theft

      I hate this term. Banks use it to blame the victims for their failure to authenticate people properly. I wish we had another term. —via > mcr314 Aug 29, 2020 (Public) on "How to Destroy ‘Surveillance C…" (onezero.medium.com)

      This is a fantastic observation and something that isn't often noticed. Victim blaming while simultaneously passing the buck is particularly harmful. Corporations should be held to a much higher standard of care. If corporations are treated as people in the legal system, then they should be held to the same standards.

    1. Please note that this is a higher-level debugging tool that does not confront you with a 200-lines stack trace the way Ruby does it, but pinpoints the exceptional code and locates the problem on a task level. This is possible due to you structuring code into higher abstractions, tasks and activities.
    1. Nonviolent direct action seeks to create such a crisis and foster such a tension that a community which has constantly refused to negotiate is forced to confront the issue.

      How it works - what it seeks to accomplish.

    1. That’s it. If you have a previous “precompile” array, in your app config, it will continue to work. For continuity sake I recommend moving over those declarations to your manifest.js file so that it will be consistent.
    2. Instead of having this confusing maze of lambdas, regexes, and strings, we could, in theory, introduce a single entry point of configuration for Sprockets to use, and in that file declare all assets we wanted to compile. Well, that’s exactly what the manifest.js file is.
    3. For example, what if your site has a customer interface and an “admin” interface? If the two have totally different designs and features, then it might be considerable overhead to ship the entirety of the admin interface to every customer on the regular site.
    1. Did the district just not see the problem with taking away some schools busing?

    2. why don't the teachers look at this and see that the cause is racism?

    3. I find it crazy that the school lost 100 students weekly.

    1. Literally, everything in this example can go wrong. Here’s an incomplete list of all possible errors that might occur: Your network might be down, so request won’t happen at all The server might be down The server might be too busy and you will face a timeout The server might require an authentication API endpoint might not exist The user might not exist You might not have enough permissions to view it The server might fail with an internal error while processing your request The server might return an invalid or corrupted response The server might return invalid json, so the parsing will fail And the list goes on and on! There are so maybe potential problems with these three lines of code, that it is easier to say that it only accidentally works. And normally it fails with the exception.
    2. Now you can easily spot them! The rule is: if you see a Result it means that this function can throw an exception. And you even know its type in advance.
    3. Almost everything in python can fail with different types of exceptions: division, function calls, int, str, generators, iterables in for loops, attribute access, key access, even raise something() itself may fail. I am not even covering IO operations here. And checked exceptions won’t be supported in the nearest future.
    4. You still need to have a solid experience to spot these potential problems in a perfectly readable and typed code.
    1. Though rarer in computer science, one can use category theory directly, which defines a monad as a functor with two additional natural transformations. So to begin, a structure requires a higher-order function (or "functional") named map to qualify as a functor:

      rare in computer science using category theory directly in computer science What other areas of math can be used / are rare to use directly in computer science?

    2. Monads achieve this by providing their own data type (a particular type for each type of monad), which represents a specific form of computation
    3. Supporting languages may use monads to abstract away boilerplate code needed by the program logic.
    1. it is inconvenient to write specific implementations for each datatype contained, especially if the code for each datatype is virtually identical. For example, in C++, this duplication of code can be circumvented by defining a class template
    1. Any time a change is needed, rather than creating new ads and groups, business data can be updated seamlessly, trickling the change to ad copy without triggering an ad Quality Score review.

      Not creating new ad groups or campaigns is mentioned frequently, what is the average number of campaigns recommended to use per vertical?

    1. The activity gem is an extraction from Trailblazer 2.0, where we only had operations. Operations expose a linear flow which goes into one direction, only. While this was a massive improvement over messily nested code, we soon decided it’s cool being able to model non-linear flows. This is why activities are the major concept since Trailblazer 2.1.
    1. An endpoint links your routing with your business code. The idea is that your controllers are pure HTTP routers, calling the respective endpoint for each action. From there, the endpoint takes over, handles authentication, policies, executing the domain code, interpreting the result, and providing hooks to render a response.
    1. I am a delegation junkie. Whenever possible, I assign tasks and responsibilities originally assigned to me onto others.
    2. If you ask my former students, they will tell you that as a teacher, my goal is to do nothing. I dream of the day when I can sit at my desk, feet propped up, reading a book, while the classroom bursts with activity and learning around me.
    3. They fail to recognize the value of an initial investment of time in future productivity.
    1. I work with crazy geniuses who share many of my opinions (not all, and that’s good).
    2. Using a terminus to indicate a certain outcome - in turn - allows for much stronger interfaces across nested activities and less guessing! For example, in the new endpoint gem, the not_found terminus is then wired to a special “404 track” that handles the case of “model not found”. The beautiful thing here is: there is no guessing by inspecting ctx[:model] or the like - the not_found end has only one meaning!
    3. A major improvement here is the ability to maintain more than two explicit termini. In 2.0, you had the success and the failure termini (or “ends” as we used to call them). Now, additional ends such as not_found can be leveraged to communicate a non-binary outcome of your activity or operation.
    4. Yes, Trailblazer is adding new abstractions and concepts and they are different to the 90s-Ruby, but now, at the latest, it becomes obvious how this improves the developing process. We’re no longer talking in two-dimensional method stack traces or byebug hoops, the language and conception is changing to the actual higher level code flow, to activities sitting in activities structured into smaller step units.
    5. To make it short: we returned to the Rails Way™, lowering our heads in shame, and adhere to the Rails file and class naming structure for operations.
    6. It’s so simple that I sometimes wonder why it took years to develop it!
    7. There is nothing wrong with building your own “service layer”, and many companies have left the Traiblazer track in the past years due to problems they had and that we think we now fixed.
    8. We removed the trailblazer-loader gem just like Apple removed the headphone jack from the iPhone 6. This brings you faster startup and consistency with Rails autoloading.
    1. One of the main reasons to work with components is re-usability and portability, but also a delegation of responsibilities. Adding a component should be as easy as simply adding the component without having to know the inner workings (or markup) of this component. A consumer should only be aware of the properties, methods and events of a component. In order to style a child component one has to be aware of the markup as well, which violates this 'delegation of responsibility'-principle.
    1. a framework containing the basic assumptions, ways of thinking, and methodology that are commonly accepted by members of a scientific community. such a cognitive framework shared by members of any discipline or group:
    1. Trailblazer offers you a new, more intuitive file layout in applications.
    2. Instead of grouping by technology, classes and views are structured by concept, and then by technology. A concept can relate to a model, or can be a completely abstract concern such as invoicing.
    3. Concepts over Technology
    4. While Trailblazer offers you abstraction layers for all aspects of Ruby On Rails, it does not missionize you. Wherever you want, you may fall back to the "Rails Way" with fat models, monolithic controllers, global helpers, etc. This is not a bad thing, but allows you to step-wise introduce Trailblazer's encapsulation in your app without having to rewrite it.
    5. Trailblazer is no "complex web of objects and indirection". It solves many problems that have been around for years with a cleanly layered architecture.
    1. bird counts across the United States have fallen a staggering 29 percent in the last 50 years

      29% in 50 years? That means in the next 50 years half of the bird population could decrease!

    1. Fifth, is the idea of the ledger of things. We're already seeing applications of this new Internet of devices and things. Soon though, most transactions will happen between devices and not between people. Consider the smart home, homeowners are adding smart devices such as thermostats and solar panels. Soon potentially, trillions of devices will be connected to the Internet. Doing everything from driving us around to keeping our house lit to managing our affairs and managing our health information. These devices need to be resistant to hacking. They need to be able to communicate value such as money or assets like electricity, peer-to-peer. Consider electricity, if you imagine that your neighbor's home is generating energy from a solar panel and you've got a device that needs to buy that electricity, then those two devices need away to be able to contract, bargain, and execute a payment peer-to-peer. It's not going to happen through the Visa network. It can only happen on the blockchain.

      ledger of things

    1. Grouped inputs It can be convenient to apply the same options to a bunch of inputs. One common use case is making many inputs optional. Instead of setting default: nil on each one of them, you can use with_options to reduce duplication.

      This is just a general Ruby/Rails tip, nothing specific to active_interaction (except that it demonstrates that it may be useful sometimes, and gives a specific example of when you might use it).

      Still, in my opinion, this doesn't belong in the docs. Partly because I think repeating the default: nil for every item is an acceptable type of duplication, which would be better, clearer (because it's more explicit), simpler, keeps those details closer to the place where they are relevant (imagine if there were 50 fields within a with_options block).

      I also think think that it creates a very arbitrary logical "grouping" within your code, which may cause you to unintentionally override/trump / miss the chance to use a different, more logical/natural/important/useful logical grouping instead. For example, it might be more natural/important/useful to group the fields by the section/fieldset/model that they belong with, even if your only grouping is a comment:

      # User fields
      string :name
      integer :age
      date :birthday, default: nil
      
      # Food preferences
      array :pizza_toppings
      boolean :wants_cake, default: nil
      

      may be a more useful grouping/organization than:

      # Fields that are required
      string :name
      integer :age
      array :pizza_toppings
      
      # Fields that are optional
      with_options default: nil do
        date :birthday
        boolean :wants_cake
      end
      

      Or it might be better to list them strictly in the same order as they appear in your model that you are trying to match. Why? Because then you (or your code reviewer) can more easily compare the lists between the two places to make sure you haven't missed any fields from the model, and quickly be able to identify which ones are missing (hopefully intentionally missing).

      In other words, their "optionalness" seems to me like a pretty incidental property, not a key property worthy of allowing to dictate the organization/order/grouping of your code.

    2. In this simple example, the destroy interaction doesn't do much. It's not clear that you gain anything by putting it in an interaction.
    1. Amid awful suffering and deteriorating conditions, Texas Republicans decided to fight a culture war.

      The author has a criticizing tone, which can be implied by him emphasizing Texas's conditions using a negative diction. It is kind of humorous as he stated "cultural wars" instead of disputes. Usually wars leave a drastic impact on the land, but this time, the "war" is occurring on an already destroyed land, which reflects the author's point of view that leaving a conflict dissolved is worse than creating a new conflict.

    1. Establish structured daily check-ins: Many successful remote managers establish a daily call with their remote employees.

      make sure there is space during standup for chit-chat.