4,885 Matching Annotations
  1. Mar 2021
    1. Noo mën a def dinga fey alamaan bi.

      Quoi que tu fasses, tu paieras l'amende.

      noo -- you (?)

      mën v. -- power ; be stronger than 💪🏽; can, will.

      a -- (?).

      def v. -- do, commit, execute; to put.

      dinga -- you will.

      fey v. -- turn off, switch off 📴, appease; pay 💵.

      alamaan bi -- (French: l'amende) fine.

      bi -- the.

      https://www.youtube.com/watch?v=4y6PTqs1uCc

    2. Sér bi aju na ci caru garab gi.

      Le pagne s'est accroché à la branche.

      sér bi -- loincloth. 🩲

      bi -- the.

      aju v. -- hang on.

      na -- (?).

      ci -- close; at @, in, on, inside, to.

      car+u (car) bi -- twig, branch. 🎋

      garab gi -- tree 🌲, plant 🪴; medicine 💊, remedy.

      gi -- the.

      https://www.youtube.com/watch?v=3WS1Q1LT1ks&t=36s

    3. Faatu aj na laytanam.

      Faatu a placé sa calebasse en haut.

      faatu -- a feminine name of Arabic origin. 👩🏽

      aj v. -- place on top 🔝, perch.

      na -- her (?).

      laytan+am (laytan) gi -- small calabash (to have).

    4. Sama nijaay aj na ñaari yoon.

      Mon oncle a effectué deux fois le pèlerinage à La Mecque.

      sama -- my.

      nijaay ji n. -- maternal uncle; term of reference and address to designate the husband, in conservative circles.

      aj (Arabic) v. -- make the pilgrimage to Mecca. 🕋; deceased ☠️ (for a religious personality).

      na -- he (?).

      ñaar+i (ñaar) -- twice; two. 2️⃣

      yoon wi n. -- lane, path, track 🛤; law, regulation, legislation; times.

    5. Xabaar bi agsi na démb.

      La nouvelle est arrivée hier.

      xabaar (Arabic) v. -- report (a new one).

      bi -- the.

      agsi v. -- to arrive, to arise.

      na -- as (?).

      démb ji -- the past; yesterday 📆, long ago.

    1. In production, you will never trigger one specific callback or a particular validation, only. Your application will run all code required to create a Song object, for instance. In Trailblazer, this means running the Song::Create operation, and testing that very operation with all its side-effects.
    2. There’s no need to test controllers, models, service objects, etc. in isolation
    3. 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. This is the story of how a bill to save the vote and preserve a semblance of democracy for millions of Americans died at the hands of an intransigent, reactionary minority in the Senate, which used the filibuster to do its dirty work

      The author starts off by personifying "the bill" as something that was supposed to save millions of Americans, but rather was killed by Senators. He immediately provides a brief overview of the claim of his essay before developing his narrative. This way, the audience gets a glimpse of the issue that the author will tackle. Also, by using words such as "intransigent and reactionary", the audience already understands that the author is going to be criticizing the senators for their action.

    1. 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.
    2. Instead of one big code pile, activities will gently enforce a clean, standardized way for organizing code.
    3. the Activity component is the heart of TRB
    4. So why the over-complication? What we got now is replicating a chain of && in the former version. This time, however, you will know which condition failed and what went in by using tracing. Look at the trace above - it’s impossible to not understand what was going on.
    5. Hey, that’s is an imaginary complication of our example - please don’t do this with every condition you have in your app.
  2. Feb 2021
    1. For branching out a separate path in an activity, use the Path() macro. It’s a convenient, simple way to declare alternative routes

      Seems like this would be a very common need: once you switch to a custom failure track, you want it to stay on that track until the end!!!

      The problem is that in a Railway, everything automatically has 2 outputs. But we really only need one (which is exactly what Path gives us). And you end up fighting the defaults when there are the automatic 2 outputs, because you have to remember to explicitly/verbosely redirect all of those outputs or they may end up going somewhere you don't want them to go.

      The default behavior of everything going to the next defined step is not helpful for doing that, and in fact is quite frustrating because you don't want unrelated steps to accidentally end up on one of the tasks in your custom failure track.

      And you can't use fail for custom-track steps becase that breaks magnetic_to for some reason.

      I was finding myself very in need of something like this, and was about to write my own DSL, but then I discovered this. I still think it needs a better DSL than this, but at least they provided a way to do this. Much needed.

      For this example, I might write something like this:

      step :decide_type, Output(Activity::Left, :credit_card) => Track(:with_credit_card)
      
      # Create the track, which would automatically create an implicit End with the same id.
      Track(:with_credit_card) do
          step :authorize
          step :charge
      end
      

      I guess that's not much different than theirs. Main improvement is it avoids ugly need to specify end_id/end_task.

      But that wouldn't actually be enough either in this example, because you would actually want to have a failure track there and a path doesn't have one ... so it sounds like Subprocess and a new self-contained ProcessCreditCard Railway would be the best solution for this particular example... Subprocess is the ultimate in flexibility and gives us all the flexibility we need)


      But what if you had a path that you needed to direct to from 2 different tasks' outputs?

      Example: I came up with this, but it takes a lot of effort to keep my custom path/track hidden/"isolated" and prevent other tasks from automatically/implicitly going into those steps:

      class Example::ValidationErrorTrack < Trailblazer::Activity::Railway
        step :validate_model, Output(:failure) => Track(:validation_error)
        step :save,           Output(:failure) => Track(:validation_error)
      
        # Can't use fail here or the magnetic_to won't work and  Track(:validation_error) won't work
        step :log_validation_error, magnetic_to: :validation_error,
          Output(:success) => End(:validation_error), 
          Output(:failure) => End(:validation_error) 
      end
      
      puts Trailblazer::Developer.render o
      Reloading...
      
      #<Start/:default>
       {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model>
      #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model>
       {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error>
       {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=save>
      #<Trailblazer::Activity::TaskBuilder::Task user_proc=save>
       {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error>
       {Trailblazer::Activity::Right} => #<End/:success>
      #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error>
       {Trailblazer::Activity::Left} => #<End/:validation_error>
       {Trailblazer::Activity::Right} => #<End/:validation_error>
      #<End/:success>
      
      #<End/:validation_error>
      
      #<End/:failure>
      

      Now attempt to do it with Path... Does the Path() have an ID we can reference? Or maybe we just keep a reference to the object and use it directly in 2 different places?

      class Example::ValidationErrorTrack::VPathHelper1 < Trailblazer::Activity::Railway
         validation_error_path = Path(end_id: "End.validation_error", end_task: End(:validation_error)) do
          step :log_validation_error
        end
        step :validate_model, Output(:failure) => validation_error_path
        step :save,           Output(:failure) => validation_error_path
      end
      
      o=Example::ValidationErrorTrack::VPathHelper1; puts Trailblazer::Developer.render o
      Reloading...
      
      #<Start/:default>
       {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model>
      #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model>
       {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error>
       {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=save>
      #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error>
       {Trailblazer::Activity::Right} => #<End/:validation_error>
      #<Trailblazer::Activity::TaskBuilder::Task user_proc=save>
       {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error>
       {Trailblazer::Activity::Right} => #<End/:success>
      #<End/:success>
      
      #<End/:validation_error>
      
      #<End/:failure>
      

      It's just too bad that:

      • there's not a Railway helper in case you want multiple outputs, though we could probably create one pretty easily using Path as our template
      • we can't "inline" a separate Railway acitivity (Subprocess "nests" it rather than "inlines")
    2. step :direct_debit

      I don't think we would/should really want to make this the "success" (Right) path and :credit_card be the "failure" (Left) track.

      Maybe it's okay to repurpose Left and Right for something other than failure/success ... but only if we can actually change the default semantic of those signals/outputs. Is that possible? Maybe there's a way to override or delete the default outputs?

    1. Personally, I'm starting to think that the feature where it automatically adds xray.js to the document is more trouble than it's worth. I propose that we remove that automatic feature and just make it part of the install instructions that you need to add this line to your template/layout: <%= javascript_include_tag 'xray', nonce: true if Rails.env.development? %>
    1. now that I realize how easy it is to just manually include this in my app: <%= javascript_include_tag 'xray', nonce: true if Rails.env.development? %> I regret even wasting my time getting it to automatically look for and add a nonce to the auto-injected xray.js script
    2. This is failing CI because CI is testing against Rails < 6. I think the appropriate next steps are: Open a separate PR to add Rails 6 to the CI matrix Update this PR to only run CSP-related test code for Rails >= 6.0.0 Can you help with either or both of those?
    1. At work, we often mention "throwing something over the fence" and "wrong rock" so there is (to us) a proverbial fence and a proverbial wrong rock.
    1. Keeping bootstrap-sass in sync with upstream changes from Bootstrap used to be an error prone and time consuming manual process. With Bootstrap 3 we have introduced a converter that automates this.
    1. 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.
    2. Before we get into what the manifest.js does, let’s look at what it is replacing.
    3. Have you ever felt like a framework was getting in the way instead of helping you go faster? Maybe you’re stuck on some simple task that would be easy to do manually, but your framework is making you jump through configuration hoops. I end up getting lost in a sea of documentation (or no documentation), and the search for that one magical config key takes just a tad bit too long. It’s a productivity sink, and worse than the time delay it adds to my frustration throughout the day.
    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.

    4. I think it is ridiculous that they came up with the idea to segregate the schools, while also leaving black students with the worst school supplies.

    5. I thought that these numbers where really interesting, especially when the Hispanic enrollments increased

    6. Its cool that different nationality and race are on the city council board

    1. found that using only the Pascal-provided control structures, the correct solution was given by only 20% of the subjects, while no subject wrote incorrect code for this problem if allowed to write a return from the middle of a loop.
    1. Let’s start with the same number dividing example, which returns 0 when the error happens. Maybe instead we can indicate that the result was not successful without any explicit numerical value?
    2. You can use container values, that wraps actual success or error value into a thin wrapper with utility methods to work with this value. That’s exactly why we have created @dry-python/returns project. So you can make your functions return something meaningful, typed, and safe.
    3. Not all cases can be covered and easily restored. And sometimes when we will reuse this function for different use-cases we will find out that it requires different restore logic.
    4. You still need to have a solid experience to spot these potential problems in a perfectly readable and typed code.
    5. So, the sad conclusion is: all problems must be resolved individually depending on a specific usage context. There’s no silver bullet to resolve all ZeroDivisionErrors once and for all. And again, I am not even covering complex IO flows with retry policies and expotential timeouts.
    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. Endpoint is the missing link between your routing (Rails, Hanami, …) and the “operation” to be called. It provides standard behavior for all cases 404, 401, 403, etc and lets you hook in your own logic like Devise or Tyrant authentication, again, using TRB activity mechanics.
    2. What this means is: I better refrain from writing a new book and we rather focus on more and better docs.

      I'm glad. I didn't like that the book (which is essentially a form of documentation/tutorial) was proprietary.

      I think it's better to make documentation and tutorials be community-driven free content

    3. 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!
    4. 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.
    5. The new 2.1 version comes with a few necessary but reasonable changes in method signatures. As painful as that might sound to your Rails-spoiled ears, we preferred to fix design mistakes now before dragging them on forever.
    6. 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.
    7. It’s so simple that I sometimes wonder why it took years to develop it!
    8. 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.
    1. In Trailblazer, models are completely empty. They solely contain associations and finders. No business logic is allowed in models.
    2. 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.
    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. Also, this code will fail if $$ is not the process group leader, such as when the script is run under strace. Since a call to setsid(2) is probably tricky from a shell script, one approach might be to ps and obtain the process group ID from that.
    2. you really need #!/bin/sh -m for correct behavior of nested subshells. fg, bg, and wait wont work correctly otherwise
    1. The Quest for Truth

      The quest for Truth is everywhere and not limited to the economic topics linked here. This is just a topic that started a thought process where I had access to a convenient tool (Hypothesis) to bookmark my thoughts and research.

      Primary thought is: The Quest for Truth. Subcategories would provide a structured topic for the thought. In this case the subcategory would be: US Economy, Inflation

      The TRUTH is a concept comprised of inconsistencies and targets that frequently move.

      Targets (data, methods, people, time, semantics, agenda, demographic, motive, means, media, money, status) hold a position in time long enough to fulfill a purpose or agenda. Sometimes they don't consciously change, but history over time shines light and opens cracks in original narrative that leads to new truth's, real or imagined.

      Verifying and validating certain Truth is very difficult. Why is That?
    1. A popular strategy for bootstrapping networks is what I like to call “come for the tool, stay for the network.” The idea is to initially attract users with a single-player tool and then, over time, get them to participate in a network. The tool helps get to initial critical mass. The network creates the long term value for users, and defensibility for the company.

      This is an interesting and useful strategy. I've heard the idea several times before.

      I'm curious if this is the oldest version of it? I have to imagine that there are earlier versions of it dating back to 2011 or 2012 if not earlier.

    1. No one has requested it before so it's certainly not something we're planning to add.
    2. To give a little more context, structures like this often come up in my work when dealing with NoSQL datastores, especially ones that rely heavily on JSON, like Firebase, where a records unique ID isn't part of the record itself, just a key that points to it. I think most Ruby/Rails projects tend towards use cases where these sort of datastores aren't appropriate/necessary, so it makes sense that this wouldn't come up as quickly as other structures.
    1. Learn more about how we made the decision to put our guidance in the public domain
    2. In order to support easy reuse, revision, remixing, and redistribution, the entire Hypothesis Help knowledge base by Hypothesis is dedicated to the public domain via CC CC0 1.0. While we appreciate attribution and links back to Hypothesis from anywhere these works are published, they are not required.
    1. But ActiveModel doesn't support out of the box argument parsing, e.g. having a datetime attribute be a datetime attribute and a boolean attribute be a boolean attribute.

      Doesn't it now, with the (newer) ActiveModel::Attributes API?

    1. Examples of different ways of defining forms

      Wow, that's a lot of different ways.

      The inline_form way in particular seems interesting to me, though it's worth noting that that method is just an example, not actually part of this project's code, so it's not really a first-class option like the other options.

    1. The press release also quoted a UA assistant provost for institutional research who explained that while the swipes of student ID cards were not used in the current student retention analytics, about 800 other data points were

      The research in questions was not currently being used by the institution to improve rention, but other student data was already being used for that purpose

    2. The researcher noted that the data she had used had been anonymized before she was given access to it—however, she added that if/when her research might inform the ongoing efforts to improve student retention, the student’s personal details would be “shared” with the students' academic advisers.

      The data was anonymized before she was given access, but she admitted that there might be interest in sharing students' personal details with academic advisors

    3. She then used that data to create large networks mapping which students interacted with one another and how often.

      The researcher sought to track the personal interactions of students with one another

    4. On the university’s website, a press release

      The university share the finding of the research after the fact

    5. At the University of Arizona, for example, a researcher analyzed the swipes of student ID cards at locations across campus, “to see what they reveal about students' routines and relationships, and what that means for their likelihood of returning to campus after their freshman year.”

      Fact. Student ID Cards Collect Data Fact. A researcher was given access to this data for her own purposes.

    1. If you don't understand both sides of an issue, you cannot make an intelligent choice; in fact, if you don't understand all the ramifications of your actions, you're not designing at all. You're stumbling in the dark.
    2. Stating that some language feature or common programming idiom (like accessors) has problems is not the same thing as saying you should never use them under any circumstances.
    3. By the same token, marketing or political incentives often push design idioms
    1. with ActiveForm-Rails, validations is the responsability of the form and not of the models. There is no need to synchronize errors from the form to the models and vice versa.

      But if you intend to save to a model after the form validates, then you can't escape the models' validations:

      either you check that the models pass their own validations ahead of time (like I want to do, and I think @mattheworiordan was wanting to do), or you have to accept that one of the following outcomes is possible/inevitable if the models' own validations fail:

      1. if you use object.save then it may silently fail to save
      2. if you use object.save then it will fail to save and raise an error

      Are either of those outcomes acceptable to you? To me, they seem not to be. Hence we must also check for / handle the models' validations. Hence we need a way to aggregate errors from both the form object (context-specific validations) and from the models (unconditional/invariant validations that should always be checked by the model), and present them to the user.

      What do you guys find to be the best way to accomplish that?

      I am interested to know what best practices you use / still use today after all these years. I keep finding myself running into this same problem/need, which is how I ended up looking for what the current options are for form objects today...

    2. DSLs can be problematic for the user since the user has to manage state (e.g. am I supposed to call valid? first or update_attributes?). This is exactly why the #validate is the only method to change state in Reform.
    3. The reason Reform does updating attributes and validation in the same step is because I wanna reduce public methods. This is to save users from having to remember state.

      I see what he means, but what would you call this (tag)? "have to remember state"? maybe "have to remember" is close enough

      Or maybe order is important / do things in the right order is all we need to describe the problem/need.

    1. These two mistakes, especially the second one, plant worries in your customers mind before they’ve even had time to think of them.
    2. Stop warning people – no contract, no obligations, cancel anytime – companies can’t resist saying this on every pricing page but by using negative words they’re just putting ideas into people’s heads.
    1. Let's face it, these days, if you want to socialize, you don't go out to the mall or the library, and it's a 50/50 shot if you even have anything resembling a town square. You go on the internet.

      And this is the problematic part of the internet as a town square: we have no defined governance or pale beyond which to cast people who go far beyond societal norms.

    1. The Timeless Way of Building is the first in a series of books which describe an entirely new attitude to architec- ture and planning. The books are intended to provide a complete working alternative to our present ideas about ar- chitecture, building, and planning—~an alternative which will, we hope, gradually replace current ideas and practices,

      [[the timeless way of building]]

    1. Historical LowSteam on 2020-05-100% off$0.00

      If you zoom in on the timeline, it looks like they accidentally set price to $0.00 (probably meant to set discount to 0 instead?) and then corrected it.

      17:16: 0% off of $0.00 17:23: 0% off of $19.99

      Having this mistake/outlier shown as the historical low is misleading and confusing and incorrect, and should be corrected.

    1. Yes, you do face difficult choices (moral) but you don't care about it. All you care are the reputation bars. So... Let's kill this guy, who cares if he is innocent, but this faction needs it or I'm dead. Sounds great on paper but to be honest... you just sit there and do whatever for these reputation bars. If you won't, then you lose
    2. The press will tell you that "the concept" is great but the execution is bad. What should I tell you? The experience is shallow. The game is mediocre. But listen carefully, when a game is mediocre and can't even make you feel something then it's the worst kind of gaming. I will give it a 4 out of 10. You know, if this was a test in a school then this game should be marked D (someone answered a few questions, but overall missed the point). I understand that many people care about the "concept" of this game, but why if the experience is just... not here. I'm talking about the experience becaus We. The Revolution tried to be an actual experience. And it fails so badly.
    3. the gameplay is meaningless and the devs just missed the point.
    1. Now if you think about it, PJAX sounds a lot like Turbolinks. They both use JS to fetch server-rendered HTML and put it into the DOM. They both do caching and manage the forward and back buttons. It's almost as if the Rails team took a technique developed elsewhere and just rebranded it.
    2. Our app is mostly about displaying pages of static information. We crunch a lot of data to generate a single error report page.
    3. Honeybadger isn't a single page app, and it probably won't ever be. SPAs just don't make sense for our technical requirements.
    1. It’s always about the money… Fish got’a swim, birds got’a fly, and development has to have money. If you think otherwise you’re a fool!
    1. Flexbox's strength is in its content-driven model. It doesn't need to know the content up-front. You can distribute items based on their content, allow boxes to wrap which is really handy for responsive design, you can even control the distribution of negative space separately to positive space.
    1. Although one thing you want to avoid is using frames in such a manner that the content of the site is in the frame and a menu is outside of the frame. Although this may seem convienient, all of your pages become unbookmarkable.
    1. There is one situation where iframes are (almost) required: when the contents of the iframe is in a different domain, and you have to perform authentication or check cookies that are bound to that domain. It actually prevents security problems instead of creating them. For example, if you're writing a kind of plugin that can be used on any website, but the plugin has to authenticate on another domain, you could create a seamless iframe that runs and authenticates on the external domain.
    2. Iframes can have similar issues as frames and inconsiderate use of XMLHttpRequest: They break the one-document-per-URL paradigm, which is essential for the proper functioning of the web (think bookmarks, deep-links, search engines, ...).
    3. The most striking such issue is probably that of deep linking: It's true that iframes suffer from this to a lesser extent than frames, but if you allow your users to navigate between different pages in the iframe, it will be a problem.
    4. never care and try to understand design standards
    1. I normally try to figure out if that's a good solution for the problem before resorting to iframes. Sometimes, however, an iframe just does the job better. It maintains its own browser history, helps you segregate CSS styles if that's an issue with the content you're loading in.
    1. cultural capital

      Introduced by Pierre Bourdieu in the 1970s, the concept has been utilized across a wide spectrum of contemporary sociological research. Cultural capital refers to ‘knowledge’ or ‘skills’ in the broadest sense. Thus, on the production side, cultural capital consists of knowledge about comportment (e.g., what are considered to be the right kinds of professional dress and attitude) and knowledge associated with educational achievement (e.g., rhetorical ability). On the consumption side, cultural capital consists of capacities for discernment or ‘taste’, e.g., the ability to appreciate fine art or fine wine—here, in other words, cultural capital refers to ‘social status acquired through the ability to make cultural distinctions,’ to the ability to recognize and discriminate between the often-subtle categories and signifiers of a highly articulated cultural code. I'm quoting here from (and also heavily paraphrasing) Scott Lash, ‘Pierre Bourdieu: Cultural Economy and Social Change’, in this reader.

    1. So what's the worst part? Well, if you're like most entrepreneurs, marketers, and salespeople... it's finding your potential clients' email addresses to reach them out. (Yawn... I almost fall asleep just writing about it.) You see, it's boring and time-consuming, you wish you could skip this part and go straight to the sales process.
    2. What's the best part about running a business? You know, it's closing the deals and counting the money.
  3. Jan 2021
    1. Ubuntu also supports ‘snap’ packages which are more suited for third-party applications and tools which evolve at their own speed, independently of Ubuntu. If you want to install a high-profile app like Skype or a toolchain like the latest version of Golang, you probably want the snap because it will give you fresher versions and more control of the specific major versions you want to track.
    1. The Gmail Android app that comes pre-installed with most new Android phones contains a feature to access non-Google accounts using POP and IMAP. Unfortunately, emails accessed through this setup lack the embedded style (<style>) support as well as the support for background images.
    1. Avec la construction de complexes tels que le Mirage (ouvert en 1989) et le Mandalay Bay (1999), l’architecture des casinos de Las Vegas s’est complètement écartée des formes des années 1950 et 1960, devenant encore plus spectaculaire.

      The Mirage au nord du Las Vegas Strip et le Mandalay Bay au sud.

    1. George was seen as sharing the hardships of the common people and his popularity soared.
    1. overflow-wrap: break-word; makes sure the long string will wrap and not bust out of the container. You might as well use word-wrap as well because as the spec says, they are literally just alternate names for each other. Some browsers support one and not the other.
    1. definite good news, as it will hopefully have a ripple effect on crappy chipset makers, getting them to design and test their hardware with Linux properly, for fear of losing all potential business from Lenovo.
    2. I suppose it means 2 things, first, you get official support and warranty, and second, the distros will be Secure Boot approved in the UEFI, instead of distro makers having to figuratively ask Microsoft for pretty please permission.
    1. No, this is not a duplicate of that linked question. I don't need to know "why it's a snap". I want to know how to use it without snap.
    1. this paper identifies / lists 5 reasons to follow the money in health care. These reasons are applicable to social services or other areas of philanthropy as well.

    1. At least one Zoom leaker has already been unmasked: a member of the New York State Assembly who apparently filmed his “self-view” while recording a dispute within the Democratic assembly conference over the renomination of the speaker. That may sound careless, but a feature developed by Zoom will allow future leakers to be exposed even without that sort of misstep.
    1. A big app will have lots of components compared to regular html elements and these need to be wrapped before being fed to a slot, every single time on the call site
    2. This syntax easily provides all the features of components, like let: bind: and on:. <svelte:fragment /> is just a component with a special name.
    3. Ahh ok, it's a regular let. It's too bad it has to be so intrusive on the call sites.
  4. trumpwhitehouse.archives.gov trumpwhitehouse.archives.gov
    1. There was not yet, formally speaking, an American people. There were, instead, living in the thirteen British colonies in North America some two-and-a-half million subjects of a distant king. Those subjects became a people by declaring themselves such and then by winning the independence they had asserted as their right.

      • There were many American peoples. None of them were White.
      • "those subjects became a people by declaring themselves such and then by winning the independence they had asserted as their right" - OK no. Quite a lot of people did not have the autonomy to "declare themselves" part of a people, and indeed were not recognized as such. There were also loyalists. And this idea of "a people" is...really complicated.
      • While it's true that the first citizens of the United States were former British subjects, it is worth noting that a lot of other people lived in the current United States at the time who were tribal citizens, French colonists, Spanish colonists, and enslaved people who weren't considered citizens of anywhere.
    1. Why the ^=? This means "starts with", because we can also have variation placements like top-start.
    1. Why is CORS important? Currently, client-side scripts (e.g., JavaScript) are prevented from accessing much of the Web of Linked Data due to "same origin" restrictions implemented in all major Web browsers. While enabling such access is important for all data, it is especially important for Linked Open Data and related services; without this, our data simply is not open to all clients. If you have public data which doesn't use require cookie or session based authentication to see, then please consider opening it up for universal JavaScript/browser access. For CORS access to anything other than simple, non auth protected resources
    1. The same-origin policy fights one of the most common cyber attacks out there: cross-site request forgery. In this maneuver, a malicious website attempts to take advantage of the browser’s cookie storage system.
    1. “JSONP is JSON with extra code” would be too easy for the real world. No, you gotta have little discrepancies. What’s the fun in programming if everything just works? Turns out JSON is not a subset of JavaScript. If all you do is take a JSON object and wrap it in a function call, one day you will be bitten by strange syntax errors, like I was today.
    1. Why? I wrote MagpieRSS out of a frustration with the limitations of existing solutions. In particular many of the existing PHP solutions seemed to: use a parser based on regular expressions, making for an inherently fragile solution only support early versions of RSS discard all the interesting information besides item title, description, and link. not build proper separation between parsing the RSS and displaying it.
    1. While you may have some objections due to your specific setup, please consider you’re not the usual use case. Most people install Ubuntu on a single drive, not separate /home, and not multiple disks. Most are quite happy with automatic updates - in line with how their phone is likely setup - both for debs (with unattended-upgrades) and snaps (via automatic refresh in snapd). Experts such as yourself are capable of managing your own system and are interested in twiddling knobs and adjusting settings everywhere. There are millions of Ubuntu users who are not like that. We should cater for the widest possible use case by default, and have the option to fiddle switches for experts, which is what we have.
    2. Frankly, if the Ubuntu Desktop team “switch” from making a deb of Chromium to making a snap, I doubt they’d switch back. It’s a tremendous amount of work for developer(s) to maintain numerous debs across all supported releases. Maintaining a single snap is just practically and financially more sensible.
    3. Progress is made of compromises, this implies that we have to consider not only disadvantages, but also the advantages. Advantages do very clearly outweigh disadvantages. This doesn’t mean it perfect, or that work shouldn’t continue to minimize and reduce the disadvantages, but just considering disadvantages is not the correct way.