223 Matching Annotations
  1. Feb 2024
    1. One of my inquiries was for anecdotes regarding mistakes made between the twins by their near relatives. The replies are numerous, but not very varied in character. When the twins are children, they are usually distinguished by ribbons tied round the wrist or neck; nevertheless the one is sometimes fed, physicked, and whipped by mistake for the other, and the description of these little domestic catastrophes was usually given by the mother, in a phraseology that is some- [p. 158] what touching by reason of its seriousness.

  2. Jan 2024
    1. Instance methods Instances of Models are documents. Documents have many of their own built-in instance methods. We may also define our own custom document instance methods. // define a schema const animalSchema = new Schema({ name: String, type: String }, { // Assign a function to the "methods" object of our animalSchema through schema options. // By following this approach, there is no need to create a separate TS type to define the type of the instance functions. methods: { findSimilarTypes(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); } } }); // Or, assign a function to the "methods" object of our animalSchema animalSchema.methods.findSimilarTypes = function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); }; Now all of our animal instances have a findSimilarTypes method available to them. const Animal = mongoose.model('Animal', animalSchema); const dog = new Animal({ type: 'dog' }); dog.findSimilarTypes((err, dogs) => { console.log(dogs); // woof }); Overwriting a default mongoose document method may lead to unpredictable results. See this for more details. The example above uses the Schema.methods object directly to save an instance method. You can also use the Schema.method() helper as described here. Do not declare methods using ES6 arrow functions (=>). Arrow functions explicitly prevent binding this, so your method will not have access to the document and the above examples will not work.

      Certainly! Let's break down the provided code snippets:

      1. What is it and why is it used?

      In Mongoose, a schema is a blueprint for defining the structure of documents within a collection. When you define a schema, you can also attach methods to it. These methods become instance methods, meaning they are available on the individual documents (instances) created from that schema.

      Instance methods are useful for encapsulating functionality related to a specific document or model instance. They allow you to define custom behavior that can be executed on a specific document. In the given example, the findSimilarTypes method is added to instances of the Animal model, making it easy to find other animals of the same type.

      2. Syntax:

      Using methods object directly in the schema options:

      javascript const animalSchema = new Schema( { name: String, type: String }, { methods: { findSimilarTypes(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); } } } );

      Using methods object directly in the schema:

      javascript animalSchema.methods.findSimilarTypes = function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); };

      Using Schema.method() helper:

      javascript animalSchema.method('findSimilarTypes', function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); });

      3. Explanation in Simple Words with Examples:

      Why it's Used:

      Imagine you have a collection of animals in your database, and you want to find other animals of the same type. Instead of writing the same logic repeatedly, you can define a method that can be called on each animal instance to find similar types. This helps in keeping your code DRY (Don't Repeat Yourself) and makes it easier to maintain.

      Example:

      ```javascript const mongoose = require('mongoose'); const { Schema } = mongoose;

      // Define a schema with a custom instance method const animalSchema = new Schema({ name: String, type: String });

      // Add a custom instance method to find similar types animalSchema.methods.findSimilarTypes = function(cb) { return mongoose.model('Animal').find({ type: this.type }, cb); };

      // Create the Animal model using the schema const Animal = mongoose.model('Animal', animalSchema);

      // Create an instance of Animal const dog = new Animal({ type: 'dog', name: 'Buddy' });

      // Use the custom method to find similar types dog.findSimilarTypes((err, similarAnimals) => { console.log(similarAnimals); }); ```

      In this example, findSimilarTypes is a custom instance method added to the Animal schema. When you create an instance of the Animal model (e.g., a dog), you can then call findSimilarTypes on that instance to find other animals with the same type. The method uses the this.type property, which refers to the type of the current animal instance. This allows you to easily reuse the logic for finding similar types across different instances of the Animal model.

      Certainly! Let's go through each part and explain it in simple terms: ### 1. `this` in Mongoose: - **What is `this`?** In JavaScript, `this` refers to the current context or object. In Mongoose, particularly within methods and middleware functions, `this` represents the instance (document) the function is currently operating on. - **Why is it used?** `this` is used to access and modify the properties of the current document. For example, in a Mongoose method, `this` allows you to refer to the fields of the specific document the method is called on. ### 2. Example: Let's use the `userSchema.pre("save", ...)`, which is a Mongoose middleware, as an example: ```javascript userSchema.pre("save", async function (next) { if (!this.isModified("password")) { next(); } else { this.password = await bcrypt.hash(this.password, 10); next(); } }); ``` - **Explanation in Simple Words:** - Imagine you have a system where users can sign up and set their password. - Before saving a new user to the database, you want to ensure that the password is securely encrypted (hashed) using a library like `bcrypt`. - The `userSchema.pre("save", ...)` is a special function that runs automatically before saving a user to the database. - In this function: - `this.isModified("password")`: Checks if the password field of the current user has been changed. - If the password is not modified, it means the user is not updating their password, so it just moves on to the next operation (saving the user). - If the password is modified, it means a new password is set or the existing one is changed. In this case, it uses `bcrypt.hash` to encrypt (hash) the password before saving it to the database. - The use of `this` here is crucial because it allows you to refer to the specific user document that's being saved. It ensures that the correct password is hashed for the current user being processed. In summary, `this` in Mongoose is a way to refer to the current document or instance, and it's commonly used to access and modify the properties of that document, especially in middleware functions like the one demonstrated here for password encryption before saving to the database.

    Tags

    Annotators

    URL

  3. Dec 2023
    1. Not sure how "communities" are going to shut down oil refineries as big as large cities in some cases.
      • for: question - can communities have real impact?

      • question: can communities have real impact?

        • In this discussion, Ross is acting as the devil's advocate questioning whether communities can have real impact. He is consistent and his comments are based on evidence and experience. He challenges everyone else to prove him wrong and makes everyone go deeper to validate their positions.
        • Ross makes valid points that so far, have not been effectively addressed, mainly because nobody has thought further of how to systematically organize communities to the scale required. It's not trivial!
    1. honesty can actually threaten
      • for: meme - honestly can threaten hope

      • meme: honesty can threaten hope

        • a reassuring lie is often preferred to na challenging truth
        • denialism is just human nature
          • it's difficult to face the truth when the truth is so unpleasant and triggers intense fear or despair
          • mortality salience could underlay much of this
    1. “come back next year and try again”. My response is that it will be the same old thing – they’ve had 26 chances already. The planet can’t afford any more. I think the time for the Cop process is over. We just can’t keep kicking the can down the road.
      • for: quote - COP - Rupert Read, quote - COP - come back next year and try again, quote - alternative COP

      • quote

        • come back next year and try again
      • author: Rupert Read
      • date: Dec. 4, 2021

      • quote

        • We just can't keep kicking the can down the road
      • author: Rupert Read
      • date: Dec 4, 2021

      • comment

        • Well, COP28 is over and just as Rupert Read predicted above, we will
          • kick the can down the road again
          • come back next year and try again
        • It's a perpetual groundhog day, until it isn't
  4. Nov 2023
    1. Ein neuer Bericht der europäischen Kommission sagt aus, dass die EU dreimal so schnell dekarbonisieren muss wie bisher, um das Ziel zu erreichen, die Emissionen bis 2030 um 55% zu reduzieren. Den Zahlen der European Environment Agency zufolge reicht der gegenwärtige Kurs nur für eine Reduzierung um 43%. Ein Haupthindernis sind die enorm hohen fossilen Subventionen. Die Selbstverpflichtungen von EU-Staaten vor der COP28 treffen z.T. verspätet ein, und die vorliegenden sind einem Bericht des Climate Action Network zufolge sehr unzureichend. https://www.theguardian.com/environment/2023/oct/24/eu-must-cut-emissions-three-times-more-quickly-report-says

      State of the Energy Union: https://energy.ec.europa.eu/system/files/2023-10/COM_2023_650_1_EN_ACT_part1_v10.pdf CAN-Bericht: https://caneurope.org/content/uploads/2023/10/NECPs_Assessment-Report_October2023.pdf

  5. Oct 2023
    1. Carbon capture is a phishing scheme introduced by the Koch brothers at MIT in 2004, the same year that Charles and David Koch provided the funds for Americans for Prosperity.
      • for: Carbon capture - MIT hoax, climate delay, kick the can down the road
    1. The main usage difference is that dependency can be used in a second sense as a "concrete" noun to mean a person or thing which depends on something/someone else. But note that in the programming context it's not uncommon to see it used to mean a software resource upon which some piece of software depends (i.e. - reversing the need/provide relationship).

      Is that really true? Can dependency refer to a person or thing which depends on something/someone else?? I'm only used to it the other way.

    2. And as others have pointed out, there is potential for ambiguity: if A is dependent on B, then a dependence or dependency (relationship) exists; but referring to either A or B as the dependency demands context.

      "demands context" :)

  6. Jul 2023
    1. one of the things I think Civil Society has to be aware of is that there's been 00:09:33 a deliberate misuse of the prospects of technology
      • for: net zero, kick the can down the road, green growth, degrowth, NET, negative emissions technology
  7. Jun 2023
    1. The same day, Menashe licensed 56 pictures through iStockphoto– for about $1 each.

      This is interesting because I feel like the istockphoto company has gotten so many more contributors over the years that the rates have gone down drastically. I attached a website stating how much a person gets paid per photo on average which is a lot less than what the article is saying.

  8. Apr 2023
    1. Although CAN-SPAM hasn't resulted in less spam, the law gives authorities a new tool in the fight against spam, Lochart said. "It's a good thing we have a law, so when we find some of these roaches, we can prosecute them," he said.
    2. Spammers, apparently in response to CAN-SPAM, changed tactics this year, said Andrew Lochart, director of product marketing at Postini. More spammers are using so-called zombie networks -- computers hijacked with Trojan horse programs -- to send spam, and spammers are using increasingly sophisticated directory harvest attacks to spam corporate mail servers, he sai
    3. CAN-SPAM also prohibits private citizens from suing spammers, instead allowing only state attorneys general or Internet service providers to file civil suits
    1. Commtouch found that 80 percent of spam e-mail didn't include valid return e-mail addresses and more than 40 percent contained subject lines that weren't related to the text of the e-mail.
    2. "There's been no reduction in the volume of spam," says Scott Chasin, MX Logic's chief technology officer. "In fact, the exact opposite--our spam rates are actually going up."
    3. Less than 1 percent of spam e-mail sent to U.S. inboxes this month complies with a national antispam law that went into effect January 1, according to two spam filtering vendors.
    1. Extending the life of electronic products and re-using electrical components brings an even larger economic benefit, as working devices are certainly worth more than the materials they contain. A circular electronics system - one in which resources are not extracted, used and wasted, but re-used in countless ways - creates decent, sustainable jobs and retains more value in the industry.

      This paragraph caught my attention for several reasons. The first is that it was one of the first paragraphs that I actually understood what it was saying. Additionally, it made me feel like I could do something about it. When it said that reusing electrical components are better, it helped me see a clear way that I can direct effect this. Finally, I thought this paragraph was interesting because it talked about creating jobs. This is important to note because more and more people are going to school for something involving technology. This creates jobs for that specific group of people.

  9. Mar 2023
    1. ```js import React, { Component } from 'react'; import './style.css'; import ndjsonStream from 'can-ndjson-stream';

      class App extends Component { constructor(props) { super(props);

      this.state = {
        todos: []
      };
      

      }

      componentDidMount(){ fetch('http://localhost:5000/api/10', { method: 'get' }).then(data => { return ndjsonStream(data.body); }).then((todoStream) => { const streamReader = todoStream.getReader(); const read = result => { if (result.done) return;

          this.setState({ 
            todos: this.state.todos.concat([result.value.user])
          });
      
          streamReader.read().then(read);
        };
      
        streamReader.read().then(read); 
      }).catch(err => {
        console.error(err)
      });
      

      }

      render() { return ( <div className="App">

      React + NDJSON Stream Demo

        {this.state.todos.map((todo, i) =>
      • {todo}
      • )}
      </div> ); } }

      export default App; ```

  10. Jan 2023
    1. we have individual capitalists who try 00:48:45 to make the most profit and this is linked to their capital and productivity so to achieve more in less time and 00:48:57 productivity is linked to energy [Music] the only source of energy to increase profit is carbon oil and gas and this has resulted in a change in our 00:49:15 atmosphere we have to put an entities if we wish to live in our planet can our capitalism do this based on the current data we won't be able to do so 00:49:28 therefore perhaps we should do the following reflection if capitalism is unable to do so either Humanity will die with it or 00:49:42 Humanity will overcome capitalism so that we can live in our planet

      !- Urrego : Key Point - Can capitalism rapidly detour away from fossil fuels? The current data indicates no. So either Humanity does our it drops capitalism

    1. 个人学习可能取决于他人行为的主张突出了将学习环境视为一个涉及多个互动参与者的系统的重要性
    1. Much of what they do can be done without eliciting the ire of nation-states. Bike shares, pedestrian zones, insulated buildings, renovated port facilities, congestion fees, car emission limits, furnace specifications, fuel upgrades (from oil to gas to alternative energy) and white paint roofs, for example, are only some of the innovations city officials can promote to effect significant reductions in emissions and pollutants.

      !- cities actions : can be done without eliciting ire of nation state - bike shares - pedestrian zones - insulated buildings - renovated ports - congestion fees - car emission limits - furnace specifications - fuel upgrades - white paint roofs - cities are the right level for focusing on effective global climate action

    2. here states have grown dysfunctional and sovereignty has become an obstacle to global democratic action—as when the United States (or China, France, or Canada) refuses to compromise its sovereignty by permitting the international monitoring of carbon emissions on its soil—cities have increasingly proven themselves capable of deliberative democratic action on behalf of sustainability, as they have actually done in intercity associations like the C-40 or ICLEI. If presidents and prime ministers cannot summon the will to work for a sustainable planet, mayors can. If citizens of the province and nation think ideologically and divisively, neighbors and citizens of the towns and cities think publicly and cooperatively.

      !- claim : cities can mitigate corrupted democracy and foster global cooperation - ie. C40 or ICLEI (also Covenant of Mayors) - cities are not plagued by the problems of state actors who cannot reach any meaningful agreement at COP conferences

  11. Nov 2022
    1. Post.in_order_of(:type, %w[Draft Published Archived]).order(:created_at).pluck(:name) which generates SELECT posts.name FROM posts ORDER BY CASE posts.type WHEN 'Draft' THEN 1 WHEN 'Published' THEN 2 WHEN 'Archived' THEN 3 ELSE 4 END ASC, posts.created_at ASC
  12. Sep 2022
    1. Writing Code for Humans — A Language-Agnostic Guide…because code which people can’t read and understand is easy to break and hard to maintain.
    1. Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
    2. To see if you are writing good code, you can question yourself. how long it will take to fully transfer this project to another person? If the answer is uff, I don’t know… a few months… your code is like a magic scroll. most people can run it, but no body understand how it works. Strangely, I’ve seen several places where the IT department consist in dark wizards that craft scrolls to magically do things. The less people that understand your scroll, the more powerfully it is. Just like if life were a video game.
    3. This is so clear that you don’t even need comments to explain it.
    4. Another type of comments are the ones trying to explain a spell.
    5. people usually forgets about one of the greatest advantages of Open Source. YOU can fix the issue. You can download the source code and dig deep into the code allow you to keep moving. Also, you can merge this changes back to the original repository so others doesn’t have to fix it again. win-win relationship.
    6. The rule of thumbs is, never use code that you do not understand.
    1. Filter gives me the impression of inclusion... so if I filter by fruits, I expect to see apples, oranges, and bananas. Instead, this is more like filter out fruits... remove all the fruits, and you're left with the rest. Filter in/out are both viable. One means to include everything that matches a condition, and the other is to exclude everything that does not match a condition. And I don't think we can have just one.
    1. Earlier this week, during a seminar at Schumacher College that included an exploration into what a Citizens Action Network might entail, a student wondered if we’d ever heard of South Africa’s CANs movement. No, we answered, we had not…

      !- definition : citizen action network (CAN) !- question : rapid whole system change at community scale - Can CAN's scale globally for rapid whole system change? If so, how?

    1. If anyone can completely refactor the JSON Schema description for OpenAPI v3.0 to accurately describe the schema in all its glory, without using this new keyword, then please do so, but I would kindly ask you to test the theory first.
    2. This is a distillation of the results of 230+ comments on #515, not to mention the 300+ comments spread across several other older issues that fed into that one. I know it's long. Please don't complain unless you can offer a shorter write-up. :-)
    1. Booleans and nil can be compared by identity and therefore the `be` matcher is preferable as it is a more strict test.

      a rare case of "because you can, you should"?

    1. Just because you can create a plugin for any tool and manage its versions with asdf, does not mean that is the best course of action for that specific tool.
  13. Aug 2022
    1. Can nhựa 25 lít làm từ HDPE nguyên sinh bằng quy trình đúc thổi làm cho chúng an toàn và đáng tin cậy cho việc đóng gói và vận chuyển các chất lỏng.

      Can nhựa 25 lít làm từ HDPE nguyên sinh bằng quy trình đúc thổi làm cho chúng an toàn và đáng tin cậy cho việc đóng gói và vận chuyển các chất lỏng.

  14. Jul 2022
    1. Can nhựa 20 lít hay còn gọi là can 20 lít là một thùng nhựa kín nắp nhỏ chống tràn làm từ nhựa HDPE được sử dụng đựng nước hoặc đựng hóa chất xăng dầu.

      Can nhựa 20 lít hay còn gọi là can 20 lít là một thùng nhựa kín nắp nhỏ chống tràn làm từ nhựa HDPE được sử dụng đựng nước hoặc đựng hóa chất xăng dầu.

    1. Can nhựa 10 lít còn được gọi là can 10 lít là một vật lưu trữ chứa đựng chất lỏng được tạo ra từ những hạt nhựa HDPE nguyên sinh không rỉ ăn mòn.

      Can nhựa 10 lít còn được gọi là can 10 lít là một vật lưu trữ chứa đựng chất lỏng được tạo ra từ những hạt nhựa HDPE nguyên sinh không rỉ ăn mòn.

    1. Can nhựa 15 lít còn được gọi là can 15 lít làm từ HDPE không phản ứng với hóa chất sử dụng đựng hóa chất và đựng nước đựng rượu an toàn chống tràn.

      Can nhựa 15 lít còn được gọi là can 15 lít làm từ HDPE không phản ứng với hóa chất sử dụng đựng hóa chất và đựng nước đựng rượu an toàn chống tràn.

    1. Can nhựa 30 lít là một vật chứa kín có nắp nhỏ làm từ nhựa HDPE có khả năng chống chất ăn mòn được sử dụng chất lỏng như đựng nước hoặc đựng hóa chất.

      Can nhựa 30 lít là một vật chứa kín có nắp nhỏ làm từ nhựa HDPE có khả năng chống chất ăn mòn được sử dụng chất lỏng như đựng nước hoặc đựng hóa chất.

    1. Can nhựa còn được gọi là bình nhựa là một thùng chứa nhẹ kín có nắp nhỏ vặn được làm bằng vật liệu polyme tổng hợp, thuận tiện cho việc đựng chất lỏng.

      Can nhựa còn được gọi là bình nhựa là một thùng chứa nhẹ kín có nắp nhỏ vặn được làm bằng vật liệu polyme tổng hợp, thuận tiện cho việc đựng chất lỏng.

    1. Can nhựa 5 lít còn được gọi là bình nhựa 5l là một thùng chứa kín nắp vặn nhỏ chống tràn làm từ nhựa HDPE có khả năng chống ăn mòn có thể đựng hóa chất.

      Can nhựa 5 lít còn được gọi là bình nhựa 5l là một thùng chứa kín nắp vặn nhỏ chống tràn làm từ nhựa HDPE có khả năng chống ăn mòn có thể đựng hóa chất.

    1. 08:58 - Migrant gene DRD4-7R* Allele and correlation with the pursuit of novelty

      DRD4-7R is the specific gene that Peter implicates in migrants who are adventurous enough to come to America. This is associated with the "can do" perspective that has propelled America into a world leader but also drives America reflexively into the future...on autopilot.

  15. Apr 2022
  16. Feb 2022
  17. Nov 2021
  18. Oct 2021
    1. DIRECTORY (in progress): This post is my directory. This post will be tagged with all tags I ever use (in chronological order). It allows people to see all my tags, not just the top 50. Additionally, this allows me to keep track. I plan on sorting tags in categories in reply to this comment.

      External links:

      Tags categories will be posted in comments of this post.

  19. Sep 2021
    1. Why can you remove it? The loader will first try to resolve @import as a relative path. If it cannot be resolved, then the loader will try to resolve @import inside node_modules.
  20. Aug 2021
  21. Jun 2021
    1. "Many North American music education programs exclude in vast numbers students who do not embody Euroamerican ideals. One way to begin making music education programs more socially just is to make them more inclusive. For that to happen, we need to develop programs that actively take the standpoint of the least advantaged, and work toward a common good that seeks to undermine hierarchies of advantage and disadvantage. And that, inturn, requires the ability to discuss race directly and meaningfully. Such discussions afford valuable opportunities to confront and evaluate the practical consequences of our actions as music educators. It is only through such conversations, Connell argues, that we come to understand “the real relationships and processes that generate advantage and disadvantage”(p. 125). Unfortunately, these are also conversations many white educators find uncomfortable and prefer to avoid."

  22. May 2021
  23. Apr 2021
    1. “Who cares? Let’s just go with the style-guide” — to which my response is that caring about the details is in the heart of much of our doings. Yes, this is not a major issue; def self.method is not even a code smell. Actually, that whole debate is on the verge of being incidental. Yet the learning process and the gained knowledge involved in understanding each choice is alone worth the discussion. Furthermore, I believe that the class << self notation echoes a better, more stable understanding of Ruby and Object Orientation in Ruby. Lastly, remember that style-guides may change or be altered (carefully, though!).
    1. I actually think this is Not Constructive, since there's no absolute rule about which pairings can be joined into a single word or hyhenated, and it's pointless having "votes" here about each specific case. Follow a style guide if you have one, or search Google Books and copy whatever the majority do. Or just make your own decision.
  24. Mar 2021
    1. Or if you need to change the way the string is assembled, you can provide a proc, for example: if defined?(BetterErrors) BetterErrors.editor = proc { |file, line| "vscode://file/%{file}:%{line}" % { file: URI.encode_www_form_component(file), line: line } } end
    1. If you want to compile youself you can pass the --with-features=huge to the configure script. Note, however, this does not enable the different language bindings because those are mostly optional and also the various GUIs need to enabled specifically, because you can have only one gui.

      This explains why the standard vim package on ubuntu doesn't have GUI support (I was going to say because it wouldn't know which GUI you needed, but I think it would based on the Ubuntu variant: GNOME, KDE, etc.) (maybe because it wouldn't know whether you wanted GUI support at all)

      I was going to say because it wouldn't know which GUI you needed, but I think it would based on the Ubuntu variant: GNOME, KDE, etc.

      found answer to that: https://hyp.is/NyJRxIgqEeuNmWuaScborw/askubuntu.com/questions/345593/how-to-build-vim-with-gui-option-from-sources

      so you have to install a different package with GUI support, like vim-gtk or vim-athena

    1. Clearly JS and NPM have done a lot RIGHT, judging by success and programmer satisfaction. How do we keep that right and fix the wrong?
    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.
    1. Another important MicroJS attribute is independence. Ember, Backbone—even Bootstrap to a degree–have hard dependencies on other libraries. For example, all three rely on jQuery. A good MicroJS library stands by itself with no dependencies. There are exceptions to the rule, but in general, any dependency is another small MicrojJS library.
  25. Feb 2021
    1. In combination with [Track()], the :magnetic_to option allows for a neat way to spawn custom tracks outside of the conventional Railway or FastTrack schema.

      Instead of magnetic_to:, I propose wrapping the steps that are on a separate track in something like...

        DefTrack do :paypal do
          step :charge_paypal
        end
      

      or

        paypal_track = RailwayTrack do :paypal do
          step :charge_paypal
        end
      

      so we can reference it from outputs, like we can with tracks created with Path helper.

    1. Operations don't know about HTTP or the environment. You could use an operation in Rails, Hanami, or Roda, it wouldn't know.
    1. account.first_name = first_name if first_name.present? account.last_name = last_name if last_name.present?

      I guess this is needed so we don't reset to nil (erasing value in database) when they haven't even provided a new value as input.

      But surely there's a cleaner way...